Как настроить 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"), и он работает). Похоже, что регулярное выражение, которое оно анализирует, информация из предполагает, что в приглашении не будет пробелов.