2017-02-07 23 views
14

我运行:如何设置组织,巴别塔的哈斯克尔与堆栈

  • GNU Emacs的24.4.1
  • Stack版本1.3.3
  • 组织模式
  • 哈斯克尔模式

我看遍了:

虽然上述要点看起来很有希望,我还没有发现任何疑似是一个权威的方式来获得ORG-哈斯克尔运行(例如,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的缓冲器,我看到它真正评价我送的东西,它只是有这个组织,巴贝尔,哈斯克尔-EOE错误,并不会返回控制到我的org会话。

这是因为我有自定义提示吗?使用lambda代替Prelude>?

+0

您可能会觉得这个问题很有用:http://stackoverflow.com/问题/ 42081379/how-to-set-up-org-babel-for-haskell-stack – brittAnderson

+0

你需要加载'ob-haskell.el'(或将haskell加入'org-babel-load-languages'和重新开始 emacs),然后才能尝试评估haskell代码块。至少应该删除“没有org-babel-haskell执行函数”消息。 – Nick

+1

@brittUWaterloo,我相信你与我的这个问题有关。 – Mittenchops

回答

5

这是不是一个完整的答案:特别是它甚至没有提到堆栈。但是我(对Haskell的一个完全的无知)想知道如何让OP的测试程序在babel中运行。这里是我的发现:

  • 你需要一个Haskell解释;-)我在Fedora 24,所以我安装了GHC编译软件包,我得到了ghci的。您需要haskell-mode。我使用emacs软件包管理器从MELPA安装了该软件。这也安装inf-haskell.el

  • 默认情况下,inf-haskell想要运行hugs,所以我定制haskell-program-name并将其设置为“ghci的”。

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

  • C-C的代码块上的C-C:失败的第一时间和消息缓冲器示出了“缓冲haskell.org不存在或没有处理”。

  • 但是,如果您再次在代码块上执行C-c C-c,它会成功!

显然,ob-haskell.el需要一些工作 - 而这之前,我们甚至得到栈,我知道甚至不到我知道哈斯克尔的,所以我会离开,作为一个练习,有兴趣的读者: - )

编辑:再。版本信息(请在评论中提供):我保持接近流血的边缘。在这个时间点(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>“,它起作用),它似乎是它解析信息的正则表达式,假设提示符将没有空格。