gpt4 book ai didi

performance - 你需要多长时间才能适应 Haskell?

转载 作者:行者123 更新时间:2023-12-03 08:59:30 24 4
gpt4 key购买 nike

我是一个不错的 C/C++ 程序员。我发现 Haskell 非常有趣。但在我看来,尽管编写干净的 Haskell 代码相对容易,因为它很好地模仿了数学(我对此非常满意),但在 Haskell 中编写运行速度快的干净代码却非常困难。

更快的 Haskell 快速排序版本非常长且可怕,它与幼稚但短(两行)、干净且直观的实现没有相似之处。长而可怕的 Haskell 版本实际上仍然比更短更简单的 C 对应部分慢得多。

是因为当前的 Haskell 编译器太笨了,还是普通人(当然 SJP 除外)无法编写快速的 Haskell 代码?

最佳答案

你问两个不同的问题:学习和表现。

  • 我花了大约一个月的时间来熟悉使用递归、模式匹配、map 进行函数式编程。 , filter , 和 fold .我用 ML 完成了所有这些工作,但它很容易翻译成 Haskell。
  • 我花了两三年的时间才把注意力集中在单子(monad)上,但那是因为我读错了东西。我认为现在有更好的教程。但是,如果您刚开始,请暂时避免使用 monad。
  • 我花了几个月的时间才擅长创建新的类型类,但使用现有的类很容易。
  • 我仍然不确定我是否掌握了 的窍门懒惰评测 .但我喜欢 Haskell 的 纯度 并且倾向于将惰性评估视为只有少数人(如约翰休斯)知道如何利用的不幸事故。

  • 您观察到性能问题只是因为您采用了一种加载了变异的算法,Tony Hoare 为命令式语言设计了该算法,并试图将其翻译成 Haskell。在 Haskell 中和在任何其他函数式语言中一样 昂贵的操作是分配 .试着写一个 归并排序 你会发现它是 简单而且性能很好。

    以后如何避免犯类似的错误?看看 Chris Okasaki 的书 Purely Functional Data Structures .很棒的书,它将帮助您在不放弃性能的情况下学习“功能性的做事方式”。

    关于performance - 你需要多长时间才能适应 Haskell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/377082/

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