我正在运行:
- GNU Emacs 24.4.1
- Stack Version 1.3.3
- org-mode
- haskell-mode
我查看了以下资料:
- Emacs Org-Mode & Literate Haskell
- https://gist.github.com/reetinder/4022989
- https://wiki.haskell.org/Emacs/Literate_programming
- https://wiki.haskell.org/Literate_programming
- https://github.com/haskell/haskell-mode/issues/1429
尽管上面的 gist 看起来很有希望,但我还没有找到任何官方方法来使 org-haskell 运行(例如,melpa 上没有),而且肯定没有专门针对运行 stack 环境而不是使用全局 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 session。
有可能是因为我使用了自定义提示符吗?使用lambda而不是Prelude>?
ob-haskell.el
(或将Haskell添加到org-babel-load-languages
并重新启动emacs)。这样应该至少可以消除“没有用于Haskell的org-babel-execute函数”的消息。 - NickD