gpt4 book ai didi

haskell - Haskell 和 F# 之间的主要区别是什么?

转载 作者:行者123 更新时间:2023-12-01 23:04:29 25 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。




8年前关闭。










锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或交互。








我在互联网上搜索了 F# 之间的比较和 Haskell但还没有找到任何真正确定的东西。主要区别是什么?为什么我要选择其中一个?

最佳答案

Haskell 是一种“纯”函数式语言,而 F# 同时具有命令式/OO 和函数式语言的方面。 Haskell 也有惰性求值,这在函数式语言中相当少见。

这些东西是什么意思?纯函数式语言,意味着没有副作用(或在调用函数时共享状态发生变化),这意味着您可以保证,如果您调用 f(x),除了从函数返回一个值之外,不会发生其他任何事情,例如控制台输出、数据库输出、对全局或静态变量的更改……虽然 Haskell 可以有非纯函数(通过 monad),但它必须通过声明“显式”隐含。

纯函数式语言和“无副作用”编程最近受到欢迎,因为它非常适合多核并发,因为在没有共享状态而不是无数锁和信号量的情况下更难出错。

延迟评估是在绝对必要之前不对函数进行评估的地方。这意味着在不需要时可以避免许多操作。在一个基本的 C# if 子句中考虑这一点,例如:

if(IsSomethingTrue() && AnotherThingTrue())
{
do something;
}

如果 IsSomethingTrue()为假,则 AnotherThingTrue()方法永远不会被评估。

虽然 Haskell 是一种了不起的语言,但 F# 的主要优点(暂时)是它位于 CLR 之上。这使它适合多语言编程。有一天,您可能会在 ASP.net MVC 中编写 Web UI,在 C# 中编写业务逻辑,在 F# 中编写核心算法以及在 Ironruby 中编写单元测试......所有这些都在 .Net 框架中。

收听 Simon Peyton Jones 的软件工程广播,了解有关 Haskell 的更多信息: Episode 108: Simon Peyton Jones on Functional Programming and Haskell

关于haskell - Haskell 和 F# 之间的主要区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44961/

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