我们被敦促到 avoid partial functions Haskell 似乎比其他语言更强调。
这是因为部分函数在 Haskell 中比其他语言更常见(c.f. this question ),还是在其他语言中避免它们是不切实际的?
最佳答案
与其他语言相比,Haskell 中的部分函数明显更差的一个原因是默认情况下缺少堆栈跟踪。当你打电话时,例如head
在空列表中,您只会得到 Prelude.head: empty list
.祝你好运找出 head
的哪个电话是问题还是空列表来自哪里!当然,它甚至可能不在您的代码中,而是在您正在使用的某些库中。
要获得堆栈跟踪,您需要在启用分析的情况下进行编译或使其显式可用:参见 https://hackage.haskell.org/package/base-4.9.1.0/docs/GHC-Stack.html和 https://wiki.haskell.org/Debugging .并且这两个选项都出现在相对较新的 GHC 版本中(并且正在改进它们)。
关于haskell - 在 Haskell 中避免部分函数比其他语言更容易吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45093146/