我对我的Haskell有点生疏了,我期待坡道备份。有一两件事我从F#享受的是F#交互外壳与Visual Studio集成:我可以评估几乎任何东西(包括函数和类定义),并使用F#作为一个外壳。有没有在Haskell等效?当我使用ghci,我无法评价函数定义。你怎么解决呢?

我的当前优选的设置是使用Emacs哈斯克尔模式和打开一个交互式GHI解释器。然而,有一个方法来评估文件只是区域?

有帮助吗?

解决方案

可以使用“让我们定义一个函数:

$ ghci
Prelude> let double n = n + n
Prelude> double 42
84

另外,我不太建议这一点,因为(A)我写的,和(B)这是非常落后的,但的 HALP 可以在Emacs很方便 - 它像Haskell代码电子表格中的点点集成到您的权利源代码缓冲。你可以有一组你有兴趣,并与一个按键查看自己所有值的变化如何根据您的修改自上次重新评估表达式。

其他提示

Haskell的模式为Emacs用于与intepreter工作提供功能。因此,如果要运行从模块您编辑一些功能,可以使用C-C C-l至负载电流模块ghci中(或另一Haskell的交互)和开关用交互式缓冲和执行某些命令有

正如您所观察到的,GHCI是相当的它可以做什么限制---短函数或表达式是所有的,很容易在命令行。对于剩下的,我发现自己加载模块。困难之一是, Haskell没有定义使用前所以它往往是很难拉一个有意义的片段出文件。我通常发现自己定义的小模块和加载和重新加载它们。互动体验绝对不是像你一样一个可能会喜欢的。

ghci中提供了做这样的事情,一些特殊的语法。使用let对于函数定义。然而,它在 GHC FAQ 的,它可能会非常棘手复杂的功能和一般从文件加载是优选的。如果你使用类似的Emacs允许你的源文件和ghci的进程之间易于集成,它成为因为您可以定义加载到一个按键解释一个非问题。

使用O'Caml和F#,定义从文件向下的顶部进行。然而,在Haskell,在一个文件中前面所定义的类型或功能之后可以在该文件中引用的类型或功能。所以在Haskell,一个模块需要一次全部编译。交互式环是与编译不相容所有一次刻录。

Flymake结合使用Emacs哈斯克尔模式2.8的作品非常好,你得到的类型检查的立即响应。在我眼里,这是更具互动性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top