有什么方法可以强制Haskell代码排序像F#一样工作?

时间:2019-02-25 17:47:51

标签: haskell f#

我目前是learning me a Haskell,太好了。

在F#方面我很流利,我想尝试纯函数式编程。

我一直喜欢F#的功能之一是代码的顺序很重要。您无法调用尚未定义的函数。这很有用,因为它可以保证较早的代码文件包含低级功能,而较新的代码则包含较大的图片。它迫使我现在认为是好事的结构。

Haskell似乎并不太在乎代码顺序。虽然我可以选择以这种方式构造我的代码,但我没有被迫这样做。因此,在学习Haskell的早期阶段,我想知道是否有某些编译器选项可以强制这样做?

1 个答案:

答案 0 :(得分:9)

据我所知,Haskell强制执行模块内声明顺序的唯一情况是有模板Haskell拼接时。在这种情况下,给定接头上方的声明可能不会引用下方的声明。我认为这是模板haskell的不幸限制,本身不是功能。

因此,我认为从技术上讲,您可以通过打开Template Haskell并向您的代码添加空接头来让GHC强制执行该命令。 $(return [])。这是合格的“不”,可以做到,但是我从未见过有人这样做,而且读写可能很烦人。