我想重载任何 operator 。我想做一个简单的函数,例如考虑重载 == 运算符 .Overload == 使得 x==y
返回 x 。或者 x==y 返回 x+y。没关系。你能告诉我任何简单的运算符重载示例吗?不幸的是,我在网上找不到任何示例。
例如;当我调用 Tree a == Tree a 返回 5(它总是返回 5。我选择它时,它与任何事物无关)或当我调用 3==4 时返回:7
我尝试了以下代码(我从 haskell.org 找到它)但它无法编译。
class Eq a where
(==) ::a -> a -> Int
instance Eq Integer where
x == y = 5
instance Eq Float where
x == y = 5
以下代码均无效:
数据树 a = 节点 a | 空的
类 Tree a where (==) :: Tree a -> Tree a -> Int
实例树整数,其中 x == y = 1
我接受错误:
Ambiguous occurrence `Eq'
It could refer to either `Main.Eq', defined at Operations.hs:4:7
or `Prelude.Eq',
imported from `Prelude' at Operations.hs:1:1
(and originally defined in `GHC.Classes')