Skip to content

Instantly share code, notes, and snippets.

@kgadek
Created May 9, 2013 23:57
Show Gist options
  • Save kgadek/5551512 to your computer and use it in GitHub Desktop.
Save kgadek/5551512 to your computer and use it in GitHub Desktop.
Generator-thingy in Erlang
-module (generators).
-define (YIELD (F), fun() -> F end).
-export ([fib/0]).
fib() ->
{0, ?YIELD(fib(1,1))}.
fib(A,B) ->
{A, ?YIELD(fib(B, A+B))}.
% Eshell V5.10.1 (abort with ^G)
% 1> {_, F0} = generators:fib().
% {0,#Fun<generators.0.118931187>}
% 2> {_, F1} = F0().
% {1,#Fun<generators.1.118931187>}
% 3> {_, F2} = F1().
% {1,#Fun<generators.1.118931187>}
% 4> {_, F3} = F2().
% {2,#Fun<generators.1.118931187>}
% 5> {_, F4} = F3().
% {3,#Fun<generators.1.118931187>}
% 6> {_, F5} = F4().
% {5,#Fun<generators.1.118931187>}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment