Как настроить org-babel для Haskell со Stack
Я запускаю:
- GNU Emacs 24.4.1
- Версия стека 1.3.3
- орг-режим
- Haskell-режим
Я просмотрел:
В то время как суть выше выглядит многообещающе, я не нашел ничего, что выглядело бы как авторитетный способ запустить org-haskell (например, ничего из melpa), и, конечно же, ничто не предназначалось конкретно для любой сложности, выполняющей стековую среду, чем использование моего глобального ghc повлечет за собой.
Когда я пытаюсь:
#+BEGIN_SRC haskell
let x = "test"
putStrLn x
#+END_SRC
Я получаю
выполнение кода кода Haskell
... который висит навсегда. Когда я C-g, я вижу:
GHCi, version 7.6.3: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Some flags have not been recognized: prompt2, ghci |
ghci λ> let x = "TESTING!"
putStrLn x
"org-babel-haskell-eoe"
Prelude|
<interactive>:4:1: parse error on input `putStrLn'
ghci λ> "org-babel-haskell-eoe"
Когда я перехожу к буферу haskell, я вижу, что он действительно оценил, что я отправил, он просто имеет эту ошибку org-babel-haskell-eoe и никогда не возвращает управление моей сессии org.
Есть ли шанс, что у меня есть пользовательское приглашение? Использование лямбды вместо Prelude > ?
Ответы
Ответ 1
Это не полный ответ: в частности, он даже не упоминает Stack. Но я (полный невежда на Haskell) хотел узнать, что потребуется, чтобы запустить программу тестирования OP в Babel. Вот что я нашел:
-
Вам нужен интерпретатор haskell;-) Я на Fedora 24, поэтому я установил пакет ghc-compiler и получил ghci.
-
Вам нужно haskell-mode
. Я установил это из MELPA, используя диспетчер пакетов emacs. Это также установило inf-haskell.el
-
По умолчанию inf-haskell
хочет запустить hugs
, поэтому я настроил haskell-program-name
и установил его в "ghci".
-
M-x load-library RET ob-haskell RET
-
C-c C-c на кодовом блоке: при первом сбое и в буфере сообщений отображается "Buffer haskell.org не существует или не имеет процесса".
-
Но если вы снова нажмете C-c C-c на блок кода, он будет успешным!
Очевидно, что ob-haskell.el
нуждается в некоторой работе - и до того, как мы даже доберемся до Stack, о котором я знаю даже меньше, чем знаю Haskell, поэтому я оставлю это как упражнение для заинтересованного читателя:-)
EDIT: Re. Информация о версии (запрошена в комментарии): Я держусь близко к краю кровотечения. В этот момент времени (2017-05-01) я запускаю Org mode version 9.0.5 (release_9.0.5-444-g998576 @ /home/nick/elisp/org-mode/lisp/)
и GNU Emacs 26.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.20.10) of 2017-04-14
Ответ 2
Вероятно, из-за пользовательской подсказки: у меня была такая же проблема, и когда я удалил ": set + t" и ": set prompt" GHCI > "из ~/.ghci, это сработало. некоторые, и, похоже, он будет работать до тех пор, пока в вашем пользовательском приглашении не будет никаких пробелов, кроме конца (я меняю на" GHCI"), и он работает). Похоже, что регулярное выражение, которое оно анализирует, информация из предполагает, что в приглашении не будет пробелов.