Я работаю с Эликсиром программирования Дэйва Томаса и пробую несколько примеров из главы списка.
Когда я изучаю язык, я предпочитаю оставаться как можно более базовым, запустив <language executable> <script file>
. В этом случае я бегу elixir reduce.exs
содержимое reduce.exs:
require IEx;
defmodule MyList do
def reduce([], memo, _), do: memo
def reduce([head | tail], memo, func) do
IEx.pry
reduce(tail, func.(head, memo), func)
end
end
ExUnit.start()
defmodule MyListTest do
use ExUnit.Case
def test do
assert 10 == MyList.reduce([1,2,3,4], 0, &(&1 + &2))
end
end
IO.puts(MyListTest.test())
При запуске консоль выводит:
Cannot pry #PID<0.70.0> at reduce.exs:9. Is an IEx shell running?
Я предполагаю, что полностью не понимаю некоторые основные концепции, но я не совсем уверен, что они из себя представляют.
Я ожидаю, что программа просто перейдет в iex
сеанс, когда выполнит IEx.pry
. Учитывая, что iex находится в основных библиотеках elixir, я подумал, что require IEx
будет достаточно для использования pry.
Мне нужно использовать IEx.pry/3
? Нужно ли мне запускать отдельный экземпляр iex и каким-то образом соединять два узла вместе?
Простая оценка кода путем запуска iex reduce.exs
запускает файл, но не показывает результат теста.
Не стесняйтесь исправлять любые мои глупые предположения.