gpt4 book ai didi

haskell - Haskell 中的自定义 concat (++) 运算符

转载 作者:行者123 更新时间:2023-12-02 15:46:18 26 4
gpt4 key购买 nike

是否可以在 Haskell 中为自定义数据类型定义我自己的 ++ 运算符?

我有:

data MyType = MyType [String]

我想将我自己的串联运算符定义为:

instance ? MyType where
(MyType x) ++ (MyType y) = MyType (x ++ y)

我似乎无法在任何地方找到实例类的名称。

最佳答案

如果你不坚持调用运算符(operator)(++)

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(++),这样就可以完成您想要的操作。 Monoid 实例还为您提供了

mconcat :: Monoid m => [m] -> m

您可以使用它来连接 MyType 列表。

关于haskell - Haskell 中的自定义 concat (++) 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13595020/

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