Skip to content

Instantly share code, notes, and snippets.

@lagenorhynque
Created December 5, 2017 08:24
Show Gist options
  • Select an option

  • Save lagenorhynque/71adba2eece784e5f553797e251b3cba to your computer and use it in GitHub Desktop.

Select an option

Save lagenorhynque/71adba2eece784e5f553797e251b3cba to your computer and use it in GitHub Desktop.
user=> (def fact
#_=> ((fn [f]
#_=> ((fn [x] (x x))
#_=> (fn [y] (f (fn [& args] (apply (y y) args))))))
#_=> (fn [f]
#_=> (fn [n] (if (< n 2) 1 (* n (f (dec n))))))))
#'user/fact
user=> (for [n (range 10)] (fact n))
(1 1 2 6 24 120 720 5040 40320 362880)
>>> fact = (lambda f: (lambda x: x(x))(lambda y: f(lambda *args: y(y)(*args))))(lambda f: lambda n: (1 if n<2 else n*f(n-1)))
>>> [fact(n) for n in range(10)]
[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]
@lagenorhynque

Copy link
Copy Markdown
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment