Women in Technology

Hear us Roar



Article:
  An Introduction to Erlang
Subject:   Recursion? Goto?
Date:   2007-12-20 19:37:17
From:   rickhg12hs
A complete newbie question ...


Regarding:

loop(MyName) ->
receive
{ accept, SenderName, Message } ->
io:format("~n~s receives from ~s: ~s ~n", [MyName, SenderName, Message]),
loop(MyName);


{ say, Message } ->
io:format("~n~s says ~s ~n",[MyName, Message]),
room ! { self(), broadcast, MyName, Message },
loop(MyName)


end.


Is "loop(MyName)" a recursive call? ... a goto? What happens under the hood? E.g., is a completely new call stack generated for each "loop(MyName)"?


Thanks for the intro article. It's got me interested in Erlang.

Main Topics Oldest First

Showing messages 1 through 1 of 1.

  • Gregory Brown photo Recursion? Goto?
    2007-12-21 03:46:33  Gregory Brown | O'Reilly AuthorO'Reilly Blogger [View]

    Hi. The call to loop() is a simply a recursive call. Functional languages are optimized to handle recursion efficiently, and Erlang is no exception.

    I'm mostly an Erlang newbie, so I won't venture into guessing what the optimizations are, but I will say that virtually all Erlang code you write will include recursion in some form or another.

    I'm glad you enjoyed the article. I need to dig up and dust off some code that I wrote that does simplified neural networking in Erlang. If I ever do that, you'll find it under an Erlang tag at http://metametta.blogspot.com

    -greg