我在跑:
我看了看:
虽然上面的要点看起来很有希望,但我还没有找到任何看起来像权威的方式来运行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会话。
这有可能是因为我有自定义提示吗?使用lambda而不是Prelude>?
这不是一个完整的答案:特别是,它甚至没有提到Stack。但是我(对Haskell的完全无知)想知道如何让OP的测试程序在babel中运行。这是我发现的:
haskell-mode
。我使用emacs包管理器从MELPA安装了它。那也安装了inf-haskell.el
inf-haskell
想要运行hugs
,所以我定制了haskell-program-name
并将其设置为“ghci”。M-x load-library RET ob-haskell RET
显然,ob-haskell.el
需要一些工作 - 那就是在我们进入Stack之前,我知道的比我知道的Haskell还要少,所以我会把它留作感兴趣的读者的练习:-)
编辑:回复。版本信息(在评论中要求):我保持接近最前沿。在这个时间点(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
安装stack
和ghci
(有堆栈本身)后我做了什么,是在emacs中安装intero
然后将它们添加到init.el
:
(setq haskell-process-type 'stack-ghci)
((org-babel-do-load-languages
'org-babel-load-languages
'((haskell . t)))
之后,我可以在haskell代码块中使用C-c C-c,并在代码块下得到结果。
这可能是因为自定义提示:我有同样的问题,当我删除“:set + t”和“:set prompt”GHCI>“来自〜/ .ghci时,它起作用了。我摆弄了一些,并且它似乎会工作,只要你的自定义提示没有任何空格,除了结束(我改为我的“GHCI>”,它的工作原理)。似乎是它解析信息的正则表达式假设提示中没有空格。