Да, это дискость
В Elixir точка (.) это бинарный инфиксный оператор. Поэтому можно ставить пробелы слева и справа. Но правый операнд не может быть числом, потому что тогда 1.2 будет значит число с плавающей точкой
iex(23)> quote(do: x . y)
{{:., [], [{:x, [if_undefined: :apply], Elixir}, :y]}, [no_parens: true], []}
iex(24)> quote(do: 1 . y)
{{:., [], [1, :y]}, [no_parens: true], []}
iex(25)> quote(do: x . 2)
** (SyntaxError) iex:25:15: syntax error before: "2"
|
25 | quote(do: x . 2)
| ^
А вот две точки (..) это оператор, у которого слева и справа могут быть любые токены и литералы
Но вот три точки (...) это почему-то валидный токен для имени. То есть, я могу создать функцию или переменную
iex> ... = 1
iex> ... == 1
true
Причём, если три точки это функция, её ещё не нужно отделять пробелом или скобками от аргументов!
iex> quote do: ...1
{:..., [], [1]}
В Elixir точка (.) это бинарный инфиксный оператор. Поэтому можно ставить пробелы слева и справа. Но правый операнд не может быть числом, потому что тогда 1.2 будет значит число с плавающей точкой
iex(23)> quote(do: x . y)
{{:., [], [{:x, [if_undefined: :apply], Elixir}, :y]}, [no_parens: true], []}
iex(24)> quote(do: 1 . y)
{{:., [], [1, :y]}, [no_parens: true], []}
iex(25)> quote(do: x . 2)
** (SyntaxError) iex:25:15: syntax error before: "2"
|
25 | quote(do: x . 2)
| ^
А вот две точки (..) это оператор, у которого слева и справа могут быть любые токены и литералы
Но вот три точки (...) это почему-то валидный токен для имени. То есть, я могу создать функцию или переменную
iex> ... = 1
iex> ... == 1
true
Причём, если три точки это функция, её ещё не нужно отделять пробелом или скобками от аргументов!
iex> quote do: ...1
{:..., [], [1]}