↓
 ↑
Регистрация
Имя/email

Пароль

 
Войти при помощи
Styx
23 ноября 2017
Aa Aa
#кодерское #внезапно #elixir

Один из основных проектов переводят на Elixir — приятный такой ЯП на базе Erlang'а. Ну и, как одному из топ-девов, мне поставлена задача изучить, освоить и т.д.

Ничего сложного, в принципе, хотя и сложновато перестроиться с "let's resque those errors" на "let it crash" (а это — его основная парадигма).

Но вот что меня удивило, так это:
iex> if 0, do: "TRUE", else: "FALSE"
"TRUE"

Пожалуй, это — первый из известных мне языков программирования, в котором 0 — не FALSE :)
23 ноября 2017
6 комментариев
> языков программирования, в котором 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 нельзя ни к чему приводить :)
Styx
> скажите, что undefined нельзя ни к чему приводить

Что-то у меня wat от подобных мыслей
ПОИСК
ФАНФИКОВ







Закрыть
Закрыть
Закрыть