Ошибка синтаксиса Elixir: ошибка недопустимого токена при создании карты - PullRequest
0 голосов
/ 28 мая 2020

Когда я пытаюсь создать карту с использованием синтаксиса %{}, Elixir сообщает об ошибке синтаксиса и терпит неудачу. map = %{foo: "bar", hello: "world"} не работает. map = %{:a => 1, 2 => :b} (взято непосредственно из учебника) не работает.

Эта проблема возникает в интерактивной среде:

Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:2:2] [async-threads:10] [hipe] [kernel-poll:false]

Interactive Elixir (0.12.5) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> %{2 => :b, :a => 1}
** (SyntaxError) iex:1: invalid token: %{2 => :b, :a => 1}
iex(1)> map = %{foo: "bar", hello: "world"}
** (SyntaxError) iex:1: invalid token: %{foo: "bar", hello: "world"}
iex(1)>

А также при запуске скрипта:

$ cat simple.exs
map = %{:a => 1, 2 => :b}

$ elixir simple.exs
** (SyntaxError) simple.exs:1: invalid token: %{:a => 1, 2 => :b}
    (elixir) lib/code.ex:301: Code.require_file/2

На заметке (вероятно, не связанной), команда i тоже не работает:

iex(1)> i {1,2}
** (RuntimeError) undefined function: i/1

Неправильно ли моя установка Elixir? Это на CentOS, установленном с использованием yum install elixir.

1 Ответ

0 голосов
/ 04 июня 2020

Проблема в моем случае заключалась в том, что я использовал очень старую версию Elixir / Erlang. Пакеты CentOS yum для Elixir НЕ обновляются.

Я удалил эту версию Elixir и вместо этого установил самые последние версии Erlang и Elixir, используя asdf.

https://thinkingelixir.com/install-elixir-using-asdf/

https://gist.github.com/rubencaro/6a28138a40e629b06470

...