Skip to content

Instantly share code, notes, and snippets.

@b0oh
Last active June 14, 2018 19:45
Show Gist options
  • Select an option

  • Save b0oh/6612bb95da2f1f4beb491baebd1c68a2 to your computer and use it in GitHub Desktop.

Select an option

Save b0oh/6612bb95da2f1f4beb491baebd1c68a2 to your computer and use it in GitHub Desktop.
Lamb of God
let
id = same =>
same
const = always _ =>
always
true = true false =>
true
false = true false =>
false
and = pred1 pred2 =>
pred1 pred2 pred1
if = pred true false =>
pred true false
inc = num succ zero =>
succ (num succ zero)
plus = num1 num2 succ zero =>
num1 succ (num2 succ zero)
mult = num1 num2 succ zero =>
num1 (num2 succ) zero
exp = num1 num2 =>
num2 num1
dec = num succ pred =>
num (g h => h (g succ))
(const zero)
id
minus = num1 num2 =>
(num2 dec) num1
zero? = num =>
num (const false) true
leq? = num1 num2 =>
zero? (minus num1 num2)
eq? = num1 num2 =>
and (leq? num1 num2) (leq? num2 num1)
0 = succ zero =>
zero
1 =
inc 0
2 =
plus 1 1
4 =
mult 2 2
256 =
exp 4 4
fac = num =>
if (eq? num 1)
1
(* num (fac (dec num)))
in
fac 256
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment