Я не понимаю, почему мой первый скрипт Elixir не работает - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь выучить эликсир.

Я нашел этот демонстрационный синтаксис:

#---
# http://media.pragprog.com/titles/elixir16/code/spawn/pmap1.exs
# Excerpted from "Programming Elixir
# published by The Pragmatic Bookshelf.
# Copyrights apply to this code. It may not be used to create training material,
# courses, books, articles, and the like. Contact us if you are in doubt.
# We make no guarantees that this code is fit for any purpose.
# Visit http://www.pragmaticprogrammer.com/titles/elixir16 for more book information.
#---
defmodule Parallel do
  def pmap(collection, func) do
    collection
    |> Enum.map(&(Task.async(fn -> func.(&1) end)))
    |> Enum.map(&Task.await/1)
  end
end

result = Parallel.pmap 1..1000, &(&1 ​*​ &1)

Я поместил вышеуказанный синтаксис в файл: pmap1.exs

ДалееЯ попытался запустить его с помощью простой команды оболочки:

dan@h78:~/elxr/public/notes $ elixir pmap1.exs
** (SyntaxError) pmap1.exs:18: unexpected token: "​" (column 38, codepoint U+200B)
    (elixir) lib/code.ex:767: Code.require_file/2
dan@h78:~/elxr/public/notes $ 

Я запускаю его неправильно?

Есть ли где-нибудь синтаксическая ошибка?

1 Ответ

0 голосов
/ 19 февраля 2019

По какой-то причине в вашем примере кода есть два «пробела нулевой ширины» (кодовая точка Unicode 200B), по одному на каждой стороне символа *.После удаления двух пробелов нулевой ширины ваш код работает нормально для меня.

(Вы присваиваете значение result, но не печатаете его или делаете что-то еще с ним, поэтому оно говорит warning: variable "result" is unused,но это следующий шаг. IO.inspect(result) - это быстрый способ сделать это.)

...