Лисп со вкусом Erlang на Windows - PullRequest
2 голосов
/ 15 января 2011

Работает ли Lisp Flavored Erlang (LFE) в Windows? Я использую LFE 0.6 / Erlang 5.8.2 / Windows 7 32-bit. Я скопировал скрипт оболочки lfe как командный файл (заменив $ @ на% 1% 2% 3% 4), и он дает мне следующее:

D:\projects\checkout\lfe>lfe
{"init terminating in do_boot",{undef,[{lfe_boot,start,[]},{init,start_it,1},{init,start_em,1}]}}

Crash dump was written to: erl_crash.dump
init terminating in do_boot ()

Ответы [ 2 ]

3 голосов
/ 16 января 2011

Проблема здесь в том, что Эрланг не может найти каталог LFE ebin. Два способа решить эту проблему:

  • Используйте явный аргумент -pa <lfe ebin dir> при запуске LFE, либо в скрипте lfe.bat, либо при его вызове. Простой, но зашитый.

  • Используйте переменную окружения ERL_LIBS. Это описано в документации к модулю code, http://erlang.org/doc/man/code.html. Если вы создаете дополнительный каталог библиотеки Erlang, скажем, c:\projects\erlang, отбрасываете приложения Erlang, которые следуют структуре каталогов приложений Erlang, как LFE, и укажите ERL_LIBS при этом сервер кода автоматически добавит каталоги ebin, которые он там найдет, в путь к коду.

Это также описано в Как установить LFE на Ubuntu Karmic? , но в контексте UNIX.

Функция ERL_LIBS должна определенно лучше рекламироваться.

РЕДАКТИРОВАТЬ: Ответ на комментарий @Shantanu Kumar.

У меня нет доступа к машине с Windows, поэтому я не могу проверить ее должным образом. Кажется, проблема в том, что при использовании lfe_boot пытается запустить программу порта ttysl, которая, похоже, не работает в Windows, по крайней мере, при запуске erl.exe. Некоторые решения, которые стоит попробовать:

  • Используйте взамен werl.exe. Это может сработать, но я бы все равно это сделал.

  • Попробуйте запустить Erlang обычным способом с помощью werl.exe -pa ebin (чтобы получить правильный путь загрузки) и вручную запустить оболочку LFE с помощью lfe_shell:server().

  • Попробуйте запустить Erlang с werl.exe -pa ebin -noshell -s lfe_shell start. Это будет запускать lfe_shell как shell , но ^G будет недоступен.

Также, хотя это удобно, вам не нужно использовать оболочку LFE для запуска LFE, вы можете использовать обычную оболочку Erlang и просто вызывать функции LFE «обычным» способом. Вы можете стать немного шизофреником с двумя форматами IO, но нет никаких проблем. : -)

Надеюсь, это поможет.

0 голосов
/ 02 мая 2016

мои извинения;Я знаю, что этот пост в основном мертв, но я не нахожу других постов по этой теме, поэтому отвечать здесь представляется уместным.

Мне кажется, я нашел методологию, которая работает.На самом деле все очень просто: просто используйте MSYS2 и Mingw-w64 для сборки LFE, затем запустите его из каталога сборки через ./bin/lfe.

Кажется, нужен один твик: последняя строка bin / lfe кажетсятребовать твика для вызова «werl» вместо «erl».Честно говоря, я не знаю, почему это так;Я слишком зелен за ушами с Эрлангом, чтобы сказать почему.

Я также задокументировал это, добавив немного больше подробностей в свой личный блог: http://www.vultaire.net/blog/2016/05/02/installing-lisp-flavored-erlang-on-windows/

Надеюсь, это кому-нибудь поможет!

...