是否可以定义我自己的++
Haskell 中自定义数据类型的运算符?
I have:
data MyType = MyType [String]
我想将我自己的串联运算符定义为:
instance ? MyType where
(MyType x) ++ (MyType y) = MyType (x ++ y)
我似乎无法在任何地方找到实例类的名称。
如果您不坚持致电接线员(++)
,
import Data.Monoid
instance Monoid MyType where
(MyType x) `mappend` (MyType y) = MyType (x ++ y)
mempty = MyType []
然后你可以使用
(<>) :: Monoid m => m -> m -> m
这是一个别名mappend
(我认为它已经是类型类成员,但它不是:/)。列表有一个Monoid
实例,其中mappend
is (++)
,这样就可以实现您想要的效果。这Monoid
实例还给你
mconcat :: Monoid m => [m] -> m
您可以使用它来连接列表MyType
s.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)