2017-02-07 18 views
14

Я бегу:Как настроить орг-столпотворение для Haskell с Stack

  • GNU Emacs 24.4.1
  • Stack Version 1.3.3
  • орг-режим
  • Haskell-режим

Я просмотрел:

Хотя суть выше выглядит многообещающим, я ничего, что выглядело быть авторитетным способом получить орг-Haskell работает не найден (например, ничего из melpa), и, конечно же, ничего, что было бы нацелено конкретно на то, что запуталось в стековой среде, а не на использование моего глобального ghc, повлечет за собой.

Когда я пытаюсь:

#+BEGIN_SRC haskell 
let x = "test" 
putStrLn x 
#+END_SRC 

я

выполнение Haskell кода-блок

... висящий навсегда. Когда я Cg, я вижу:

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, я вижу это по-настоящему оценили то, что я послал, он просто имеет эту ошибку орг-Бабель-Haskell-Eoe и никогда не возвращает управление моим org сеанс.

Есть ли шанс, что у меня есть пользовательское приглашение? Использование лямбды вместо Prelude>?

+0

Возможно, этот вопрос полезен: http://stackoverflow.com/ вопросы/42081379/how-to-set-up-org-babel-for-haskell-with-stack – brittAnderson

+0

Вам нужно загрузить 'ob-haskell.el' (или добавить haskell в' org-babel-load-languages' и перезапуск emacs), прежде чем вы сможете попробовать оценить блоки кода хекеллов. Это должно избавиться от сообщения «Нет org-babel-execute function for haskell». – Nick

+1

@brittUWaterloo, я полагаю, вы связались с этим самым вопросом. – Mittenchops

ответ

5

Это не полный ответ: в частности, он даже не упоминает Стек. Но я (полный невежда на Haskell) хотел узнать, что потребуется, чтобы запустить тестовую программу OP в Babel. Вот что я нашел:

  • Вам нужен переводчик Haskell ;-) Я на Fedora 24, так что я установил пакет GHC-компилятор, и я получил GHCi.

  • Необходимо haskell-mode. Я установил это из MELPA, используя диспетчер пакетов emacs. Это также установлено inf-haskell.el

  • По умолчанию inf-haskell хочет запустить hugs, так что я настроен haskell-program-name и установить его на «GHCi».

  • M-x load-library RET ob-haskell RET

  • С-С-С-С на блоке кода: первый раз, когда он терпит неудачу и сообщения буфера показывает «Буфер 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

0

Возможно, из-за пользовательского приглашения: у меня была такая же проблема, и когда я удалил «: set + t» и «: задайте подсказку «GHCI>» от ~/.ghci, она сработала. Я немного с ней поиграл, и похоже, что она будет работать до тех пор, пока в вашей пользовательской подсказке не будет никаких пробелов, кроме конца (я меняю свою на " GHCI> ", и это работает). Похоже, что регулярное выражение, в котором он анализирует информацию, предполагает, что приглашение не будет содержать пробелов.