haskell - 在 Haskell 中避免部分函数比其他语言更容易吗?

标签 haskell

我们被敦促到 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.htmlhttps://wiki.haskell.org/Debugging .并且这两个选项都出现在相对较新的 GHC 版本中(并且正在改进它们)。

关于haskell - 在 Haskell 中避免部分函数比其他语言更容易吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45093146/

相关文章:

.net - 将 Haskell 与 .Net 集成?

sorting - 如何按列表的总和和内部元素对列表列表进行排序?

Haskell:QuickCheck 属性无法使用含义进行测试

haskell - 如何以向后兼容的方式为模块启用 Safe Haskell

haskell - 如何以类似于其他语言中的 mixins/方法修饰符/特征的方式促进代码重用?

haskell - 用 2 个函数理解 `~`

haskell - 缺点在 Haskell : 中如何工作

haskell - 进一步滥用代数数据类型的代数 - 为什么这有效?

haskell - Haskell 2010 在 ghc 中隐含了哪些语言扩展?

haskell - 如果多个 monad 为 "mixed",是否可以利用 Monadic 结构?