| Where a Python programmer would type: | an Erlang programmer would type: |
def foo(i):
for x in range(i, 11):
do_something(x)
|
foo(10) ->
do_something(0).
foo(I) when I < 10 ->
do_something(I),
foo(I + 1).
|
| Where a Python programmer would type: | an Erlang programmer would type: | or: |
def foo(i):
if i == 10:
do_something(i)
elif i < 10:
do_something(i)
foo(i + 1)
|
foo(10) ->
do_something(0).
foo(I) when I < 10 ->
do_something(I),
foo(I + 1).
|
foo(I) ->
if
I == 10 ->
do_something(I);
I < 10 ->
do_something(I),
foo(I + 1)
end.
|
foo(10) and when I < 10. These are the two primary ways of implementing branching in Erlang.| Where a Python programmer would type: | an Erlang programmer would type: |
sock.sendall(pickle.dumps(('hello', 19, x)))
f = sock.makefile('r')
word, number, x = pickle.load(f)
f.close()
if word == 'welcome':
process(word, number, x)
else:
error(word, number x)
|
Proc_id ! {hello, 19, X}.
receive
{welcome, Number, Y} ->
process(welcome, Number, Y);
{Word, Number, Y} ->
error(Word, Number, Y)
end.
|
| Where a Python programmer would type: | an Erlang programmer would type: |
try:
something()
except ByTheGodsNooo:
recover()
|
process_flag(trap_exit, true),
Risky = spawn(thismodule, something, []),
link(Risky),
receive
{'EXIT', Risky, byTheGodsNoo} ->
recover();
{'EXIT', Risky, Reason} ->
exit(Reason)
end.
|
{A, {B, 10}} = something() would bind A and B to the values in the equivalent positions in the return value of something(), so long as the 10 matched the value in the equivalent position.