Skip to content

Instantly share code, notes, and snippets.

@pasberth
Created October 10, 2013 08:14
Show Gist options
  • Save pasberth/6914822 to your computer and use it in GitHub Desktop.
Save pasberth/6914822 to your computer and use it in GitHub Desktop.
(< let %N (using qualified data.church.number)
`. let %B (using qualified data.church.boolean)
`in
#(< let %3 (N #succ (N #succ (N #succ (N #$0))))
`. let %5 (N #succ (N #succ (N #succ (N #succ (N #succ (N #$0))))))
`. let %church-nat->js-int (%n #(n ($+ "1") "0"))
`. let %IF (%cond (%then (%else #(cond then else))))
`. let %EQ (%n (%m #(B #and (N #zero? (N #sub n m)) (N #zero? (N #sub m n)))))
`in #(< let %15 (N #mul $3 $5)
`in #(< letrec %MOD (%n (%m #(IF (EQ n m)
(N #$0)
(IF (N #(zero? (sub n m)))
n
(MOD (N #sub n m) m)))))
`in #(< let %fizzbuzz* (%n #(IF (N #zero? (MOD n $15))
(s "FizzBuzz")
(IF (N #zero? (MOD n $3))
(s "Fizz")
(IF (N #zero? (MOD n $5))
(s "Buzz")
(church-nat->js-int n)))))
`in #(< letrec %fizzbuzz (%n #( IF (N #(zero? (pred n)))
(console #log (fizzbuzz* n))
(> fizzbuzz (N #pred n)
`; console #log (N #fizzbuzz* n))))
`in #(fizzbuzz $15)))))))
console.log(1 + 0);
console.log(1 + (1 + 0));
console.log("Fizz");
console.log(1 + (1 + (1 + (1 + 0))));
console.log("Buzz");
console.log("Fizz");
console.log(1 + (1 + (1 + (1 + (1 + (1 + (1 + 0)))))));
console.log(1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + 0))))))));
console.log("Fizz");
console.log("Buzz");
console.log(1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + 0)))))))))));
console.log("Fizz");
console.log(1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + 0)))))))))))));
console.log(1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + (1 + 0))))))))))))));
console.log("FizzBuzz");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment