Mar. 24th, 2017

Erlang wat

Mar. 24th, 2017 12:02 pm
jamhed: (Default)
Посмотрел вот видео горячего аргентинского парня который пытался искромётно шутить про Erlang в стиле известного wat (и прямыми отсылками). Шутил он как и обещал плохо, и большая часть из его wat мне лично видятся вполне логичными (с опр. точки зрения), однако пару полезных моментов (из получасового выступления) подсмотреть удалось:

1. При объявлении gen_server в документации видим:

start_link() -> gen_server:start_link({local, ch3}, ch3, [] = _Args, []).
init([] = _Args) -> {ok, channels()}.

Весьма часто можно видеть (сам так делал) Args = [arg1, arg2], т.е. списком. Однакось суровая правда Erlang в том что _Args из gen_server:start_link/4 передается в init/1 как есть, то есть не обязано быть списком. Можно сделать так:

init(wat) -> ...
init({Arg1, Arg2}) -> ...
и т.д.

2. В том же gen_server в любой момент можно вызывать throw/1 или exit/1 с аргументом типа {reply,Reply,NewState} (см. объявление Result), и это приведет к нормальному завершению обработчика handle_call/handle_cast, т.е. без останова сервера. Вообще throw/1 это не throw, а non-local return.

September 2017

S M T W T F S
     1 2
3 4 56 78 9
10111213 14 1516
171819 20212223
24252627282930

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 21st, 2017 06:53 am
Powered by Dreamwidth Studios