gpt4 book ai didi

haskell - Haskell中==和=之间的区别

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

我仍然难以理解 == 之间的区别。和 =在 haskell 。我知道前者与重载类型有关​​,而后者“给出”函数的结果,但我似乎无法理解它!任何帮助将非常感激。

最佳答案

=是 Haskell 中的一个特殊保留符号,意思是“定义为”。它用于引入定义。也就是说,您可以使用它来创建新的值和函数,这些值和函数可能会在其他值和函数的定义中被引用。
==不是保留符号,而只是 Eq a => a -> a -> Bool 类型的普通函数.它恰好在 type class 中声明( Eq ),但它并没有什么特别之处。您可以隐藏 == 的内置声明并将其重新定义为您想要的任何内容。但通常它表示“等于”,并且因为它是类型类的一部分,您可以定义(重载)它以表示您希望“相等”对您的特定类型表示的任何含义。

例如:

data Foo = Foo Int

instance Eq Foo where
(Foo x) == (Foo y) = x == y

请注意,我使用了 =定义 ==对于 Foo !

考虑差异的一种简洁方法是 =在编译时断言相等,而 ==在运行时检查相等性。

关于haskell - Haskell中==和=之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5987731/

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