| Article: |
An Introduction to Erlang | |
| Subject: | Recursion? Goto? | |
| Date: | 2007-12-21 03:46:33 | |
| From: | GregoryBrown | |
|
Response to: Recursion? Goto?
|
||
|
Hi. The call to loop() is a simply a recursive call. Functional languages are optimized to handle recursion efficiently, and Erlang is no exception.
|
||
Showing messages 1 through 2 of 2.
-
Recursion? Goto?
2007-12-21 18:20:52 rickhg12hs [View]
-
Recursion? Goto?
2008-01-09 21:19:11 MattKangas [View]
Erlang supports efficient tail recursion. Since the chat server's functions recurse as the last statement in the function, they are tail-recursive, so they can recurse infinitely without penalty.
To quote the book ("Programming In Erlang", pp.149)
"A tail-recursive function can be compiled so that the last function call in a sequence of statements can be replaced by a single jump to the start of the function being called. This means that a tail-recursive function can loop forever without consuming stack space."
This is standard behavior for functional languages like Erlang, Scheme, Lisp, et al.



I'll have to learn more about Erlang and how it does recursion. Seems like after some enormous number of messages, the chat system would run out of memory by the ever increasing stack ... so I guess that's not how Erlang handles it. Very interesting.