Коллекции загружаются
#кодерское #внезапно #elixir
Один из основных проектов переводят на Elixir — приятный такой ЯП на базе Erlang'а. Ну и, как одному из топ-девов, мне поставлена задача изучить, освоить и т.д. Ничего сложного, в принципе, хотя и сложновато перестроиться с "let's resque those errors" на "let it crash" (а это — его основная парадигма). Но вот что меня удивило, так это: iex> if 0, do: "TRUE", else: "FALSE" "TRUE" Пожалуй, это — первый из известных мне языков программирования, в котором 0 — не FALSE :) 23 ноября 2017
|
> языков программирования, в котором 0 — не FALSE
Непрозрачное приведение типов — зло. |
k338914, я с этим не спорю. Однако везде и всегда 0 приводится к FALSE :) Но не в Elixir :)
all values except false and nil will evaluate to true |
Styx
> везде и всегда 0 приводится к FALSE В хэскелле и камле в общем случае не приводится — кидает ошибку типа (Numeric вместо Boolean). Только явной командой приведения. > except false and nil > nil А вот это уже откровенное наркоманство. nil по определению отсутствие значения, его by design нельзя приводить ни к чему. |
k338914
кидает ошибку типа (Numeric вместо Boolean) Замечательное поведение, как по мне. Но, если всё таки приводить — то как же можно-то приводить 0 к TRUE? А вот это уже откровенное наркоманство. Это я вырвал из контекста, там имелись в виду только булевы операции сравнения и условий. |
nil по определению отсутствие значения, его by design нельзя приводить ни к чему. Вы ещё скажите, что undefined нельзя ни к чему приводить :) |
1 |