Skip to content

Instantly share code, notes, and snippets.

@oubiwann
Last active July 22, 2019 21:59
Show Gist options
  • Select an option

  • Save oubiwann/8202823 to your computer and use it in GitHub Desktop.

Select an option

Save oubiwann/8202823 to your computer and use it in GitHub Desktop.
Joe Armstrong's Favorite Erlang Program... in LFE
(defmodule joes-fav
(export all))
(defun universal-server ()
(receive
((tuple 'become server-function)
(funcall server-function))))
(defun factorial
((0) 1)
((number) (* number (factorial (- number 1)))))
(defun factorial-server ()
(receive
((tuple sender number)
(! sender (factorial number))
(factorial-server))))
(defun run-it ()
(let ((pid (spawn #'universal-server/0)))
(! pid (tuple 'become #'factorial-server/0))
(! pid (tuple (self) 50)))
(receive
(data data)))
> (run-it)
30414093201713378043612608166064768844377641568960512000000000000
> (slurp '"examples/joes-fav.lfe")
#(ok joes-fav)
> (factorial 10)
3628800
> (factorial 20)
2432902008176640000
> (factorial 50)
30414093201713378043612608166064768844377641568960512000000000000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment