Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Emacs的Haskell缩进模式有哪些相同点和不同点?_Haskell_Emacs_Haskell Mode - Fatal编程技术网

Emacs的Haskell缩进模式有哪些相同点和不同点?

Emacs的Haskell缩进模式有哪些相同点和不同点?,haskell,emacs,haskell-mode,Haskell,Emacs,Haskell Mode,通过仔细研究,我了解到Emacshaskell模式提供了三种不同的、相互排斥的自动缩进方法。它们被称为haskell缩进,haskell缩进,和haskell简单缩进。有人能解释一下这些方法的相似之处和不同之处吗?我不仅对单个功能感兴趣,而且还对其中一个功能是否为事实上的标准或一个或两个功能是否不再保持感兴趣。我相信您提到的3种模式对应于中描述的3种haskell模式,即: haskell缩进==制表符循环 haskell缩进==矩形区域 haskell简单缩进==对齐代码 然而,由于我不是

通过仔细研究,我了解到Emacs
haskell模式
提供了三种不同的、相互排斥的自动缩进方法。它们被称为
haskell缩进
haskell缩进
,和
haskell简单缩进
。有人能解释一下这些方法的相似之处和不同之处吗?我不仅对单个功能感兴趣,而且还对其中一个功能是否为事实上的标准或一个或两个功能是否不再保持感兴趣。

我相信您提到的3种模式对应于中描述的3种haskell模式,即:

  • haskell缩进
    ==制表符循环
  • haskell缩进
    ==矩形区域
  • haskell简单缩进
    ==对齐代码

然而,由于我不是100%确定,我回家后会做更多的调查。

真的,据我所知,从询问人们的情况来看,没有事实上的标准,人们对他们喜欢哪一个有强烈的意见,但除了“在大多数情况下对我有效”之外,没有什么具体的证据

haskell缩进
包和
haskell缩进
包是最流行的:

  • 两者都有一个制表周期
  • 两者都是复杂的代码库
  • 两者都有大量的边缘案例
在不同的情况下,每一个都会做正确的事情,但同样,没有单元测试,没有真正的解析器,等等。只是作者碰巧想到的一堆特殊情况,所以关于它们在严格意义上的行为的文档和理解很少
haskell缩进
haskell缩进
更能理解haskell,但很多人会告诉你,包括我在内,你花了很多时间在缩进中循环以找到正确的缩进

haskell simple indent
包不知道haskell,它只知道列对齐,没有制表符循环,它有缩进和取消缩进。这是我使用的版本,因为在前面的模式中,前面提到的边缘情况有时会让人分心

我认为,在这一点上,除了轶事之外,很难描述这些图书馆之间的差异。我希望进行一些严格的比较(尽管花时间编写更好的模式可能更好)


简单缩进
由我维护。我不知道其他人的作者是否对维护非常感兴趣。

haskell缩进
haskell缩进
具有误导性的相似性,它们都通过重复键入TAB来循环提交建议书,这是它们的主要功能

然而,
haskell indent
绝对是我的最爱,主要是因为它将提出一些非常有用的补全:

  • 在编写类型签名后为您重复函数名
  • 重复模式匹配的函数名
  • 箱式支管用管道

我最近刚刚切换了环境,不得不重新设置emacs,并且错误地使用了
haskell缩进
,我真的错过了这些。OTOH,你可能会觉得有些补全很烦人;更重要的是,它们在某些情况下不起作用:如果您的函数以下划线开头,或者(更糟的)如果您正在跟踪鸟

这不是官方Emacs发行版的一部分。如果您在这里没有得到答案,您可能会更幸运地直接联系软件包的作者。这三个选项的文档可能需要一些扩展。如果它是一个活动项目,你可能会提交一个bug,haskell缩进和haskell缩进都使用制表符循环。