gpt4 book ai didi

haskell - Haskell 程序中比其他语言更可能/更容易出现的错误种类?

转载 作者:行者123 更新时间:2023-12-04 03:38:07 24 4
gpt4 key购买 nike

一个高度吹捧的特性是,如果一个程序编译,它很可能大部分是正确的,比用一种不太复杂或严格类型系统的语言编写的程序更正确。

也就是说,Haskell 是将运行时错误转换为编译器错误的系统 :-)

我想知道,Haskell 中的编程是否会导致程序员可能会引入一个运行时错误,该错误在弱类型语言中没有明显的模拟(在外观和频率上)?

一些基本的例子突然出现在我的脑海中:(不是很好,我正在寻找关于应该注意什么的建议)

  • 由于懒惰导致的渐近性能错误
  • 由于结构错误的递归导致的无限循环
  • Fundeps/type-family 将逻辑推向类型级别,代码更“神秘”且更难发现错误?

  • 其他/更好的陷阱示例?

    最佳答案

    它不一定是渐近的,但由于惰性导致的空间泄漏是 Haskell 实际应用中的一个问题。我知道使用 Haskell 的公司完全切换到严格的数据类型(同时仍然使用函数参数的惰性)。

    有关该 View 的来源,请参阅:

  • E. 黑塞林克。 Silk:使语义网络功能化。函数式编程交流 2012,伦敦,2012 年 3 月。
  • C.J.桑普森。经验报告:“现实世界”中的 Haskell:用惰性函数语言编写商业应用程序。在 ICFP '09,第 185-190 页,2009 年。
  • S.威尔。 Kommerzielle Softwareentwicklung mit Haskell。 Hal6,莱比锡,2011 年 10 月。Slides (在德国)。
  • 关于haskell - Haskell 程序中比其他语言更可能/更容易出现的错误种类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21097051/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com