Skip to content

Instantly share code, notes, and snippets.

@michaeljklein
Last active October 31, 2017 21:30
Show Gist options
  • Save michaeljklein/706aceed88bc16efbdf12420b5263af9 to your computer and use it in GitHub Desktop.
Save michaeljklein/706aceed88bc16efbdf12420b5263af9 to your computer and use it in GitHub Desktop.

Bijection, from very explicit to very implicit:

Bijection := '(f := _) -> '(a := _) -> '(b := _) -> '(n := _ : Nat) -> '(m := _ : Nat) -> '(f : (a :# n) -> (b :# m)) -> '(n = m)
Bijection := '(f) -> '(a) -> '(b) -> '(n : Nat) -> '(m : Nat) -> '(f : (a :# n) -> (b :# m)) -> '(n = m)
Bijection := '(f) -> '(a) -> '(b) -> '(n) -> '(m) -> '(f : (a :# n) -> (b :# m)) -> '(n = m)
Bijection := '(f : (a :# n) -> (b :# m)) -> '(n = m)
Bijection := '(_ : (a :# n) -> (b :# m)) -> '(n = m)
Bijection := '(_ : (_ :# n) -> (_ :# m)) -> '(n = m)
Bijection := '(_ : (_ :# n) -> (_ :# n)) -> '(n = n)
Bijection := '((_ :# n) -> (_ :# n)) -> '(n = n)
Bijection := '((_ :# n) -> (_ :# n))
Bijection := (_ :# n) -> (_ :# n)
Bijection := _ :# n -> _ :# n

Note, this expression of bijection uses quoting, but since flock is symmetric across quoting, unquoting, we can just as easily resugar along unquoting:

Bijection := _ :# n -> _ :# n
Bijection := (_ :# n) -> (_ :# n)
Bijection := `((_ :# n) -> (_ :# n))
Bijection := `((_ :# n) -> (_ :# n)) -> `(n = n)
Bijection := `(_ : (_ :# n) -> (_ :# n)) -> `(n = n)
Bijection := `(_ : (_ :# n) -> (_ :# m)) -> `(n = m)
Bijection := `(_ : (a :# n) -> (b :# m)) -> `(n = m)
Bijection := `(f : (a :# n) -> (b :# m)) -> `(n = m)
Bijection := `(f) -> `(a) -> `(b) -> `(n) -> `(m) -> `(f : (a :# n) -> (b :# m)) -> `(n = m)
Bijection := `(f) -> `(a) -> `(b) -> `(n : Nat) -> `(m : Nat) -> `(f : (a :# n) -> (b :# m)) -> `(n = m)
Bijection := `(f := _) -> `(a := _) -> `(b := _) -> `(n := _ : Nat) -> `(m := _ : Nat) -> `(f : (a :# n) -> (b :# m)) -> `(n = m)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment