Haskell开发人员常见的编程错误要避免吗?

Ima*_*ist 13 haskell

本着问题中其他常见错误的精神,Haskell程序员最常犯的错误是什么?我一直在教自己Haskell一段时间,我开始对语言感到很自在,开始在现实世界中应用它.

Nor*_*sey 15

我所知道的最常见的错误是通过惰性评估引入空间泄漏.有很多方法可以实现这个错误,但是特别指出程序员具有其他功能编程经验的方法是将结果放在一个累积参数中,认为累积参数将占用恒定的空间.在许多情况下,累积参数需要线性空间,因为不评估参数.

另一个常见错误是忘记let总是递归的.一个无心的

let x = ... x ...
Run Code Online (Sandbox Code Playgroud)

会导致令人困惑的结果.

大多数其他常见的错误体验不是表现为错误,而是表示程序通过类型检查程序,或者难以理解monadic I/O模型.列表理解和do符号的困难偶尔会发生.

总的来说,开始使用Haskell程序员所面临的困难包括:

  • 具有许多黑暗角落的大型语言,特别是在类型系统中
  • 无法编译程序,尤其是在进行I/O操作时
  • IOmonad中做所有事情
  • 很难预测懒惰功能程序的时间和空间行为


Mar*_*off 8

开始使用 Haskell程序员的一个常见错误是忘记构造函数和类型命名空间之间的区别.这是一个初学者的错误,我很尴尬地把我的名字附在其上,但我非常有信心,当他们遇到类似的问题时,其他人会偶然发现这个答案,所以不妨把它放在那里.