В данный момент об ошибке сразу станет известно на этапе компиляции. В случае «умного парсера» — в лучшем случае на этапе тестов. В худшем — в продакшне когда function_clause вывалится в лог.
С другой стороны, позитивный момент в том что все больше интереса к erlang vm и его принципам. Да, эти все языки-надстройки скорее лишний барьер на пути к ерлангу, но про позитивные индикаторы не стоит забывать.
мне кажется вообще, что эта проблема совсем не уникальная для erlang. switch/case statement не утомляет в C? или в сложных or/and конструкциях в условиях в любом языке нас же не удивляет что последний or или and оператор надо тоже удалить?
1. records? (они, конечно, не идеал, но задачу именованных полей решают весьма сносно).
2. И как следствие, я нахожу pattern matching по records весьма удобным. Можно примеры кода который напрягает?
3. Вас напрягает зависимость от знаков препинания в натуральном языке? В erlang, как по мне, весьма логичная схема. Если думать о ф-циях как о предложениях, все становится на свои места. Мы же не ставим точку посреди предложения? Коньюктивы отображаем как запятые? Ну а точка с запятой — это «или» — что то вроде «Мы можем поступить так; или можно пойти другим путем». С этой аналогией мне в свое время стало легко вкуриться в синтаксис.
по крайней мере в штатах не надо — для чистых препейдовых аккаунтов, сам брал такие телефоны… в Канаде какие-то аналогичные продукты вроде тоже есть (solo mobile?), но я не знаю точно, сижу на контрактах…
case Frame#video_frame.codec of
h264 -> handle_h264(Frame)
; aac -> handle_aac(Frame)
; pcma -> handle_pcma(Frame)
end
handle_frame(..) ->
...;
handke_frame(..) ->
...
В данный момент об ошибке сразу станет известно на этапе компиляции. В случае «умного парсера» — в лучшем случае на этапе тестов. В худшем — в продакшне когда function_clause вывалится в лог.
handle_frame(Frame),
..
handle_frame(#video_frame{ codec = h264 } = Frame) ->
...
ну и так далее по тексту
По поводу последнего, представим такой код:
if ( (flag & TCP_NOKIDDING) ||
zlag < Z_LAG_THR ) {
...
}
предположим, последнее условее более не надо
if (flag & TCP_NOKIDDING) {
..
}
сколько строчек поменяется в гите? правильно, тоже две.
case Frame#video_frame.codec of
h264 -> handle_h264(Frame)
; aac -> handle_aac(Frame)
; pcma -> handle_pcma(Frame)
end
2. И как следствие, я нахожу pattern matching по records весьма удобным. Можно примеры кода который напрягает?
3. Вас напрягает зависимость от знаков препинания в натуральном языке? В erlang, как по мне, весьма логичная схема. Если думать о ф-циях как о предложениях, все становится на свои места. Мы же не ставим точку посреди предложения? Коньюктивы отображаем как запятые? Ну а точка с запятой — это «или» — что то вроде «Мы можем поступить так; или можно пойти другим путем». С этой аналогией мне в свое время стало легко вкуриться в синтаксис.
learnyousomeerlang.com видели?
seriously?