gpt4 book ai didi

haskell - Data.FixedList源代码中的 `Cons`是什么?

转载 作者:行者123 更新时间:2023-12-02 17:07:59 25 4
gpt4 key购买 nike

Data.FixedList 的源代码中,我找到了以下定义:

data FixedList f =>
Cons f a = (:.) {
head :: a,
tail :: (f a)
} deriving (Eq, Ord)

作为 Haskell 的新手,很难弄清楚这里发生了什么。我理解诸如 data TypeName = TypeName { a::Int, b::Int} deriving (Show)data TypeName = TypeA | 之类的语法TypeB,但上面的代码超出了我的理解范围。任何文档/或演练将不胜感激!

最佳答案

首先,在使用构造函数时,FixedList f => 强制执行 fFixedList 的约束。我不确定为什么在这里使用它。一般是advised against .

在 Haskell 中,您可以使用以 : 开头的符号创建中缀数据构造函数。在库中,构造函数放在括号 (:.) 中,因此可以与记录语法一起使用。如果没有记录语法,它看起来像这样:

data Cons f a = a :. f a

模式匹配与列表非常相似。这是一个使用它的简单函数:

mapHead :: FixedList f => (a -> a) -> Cons f a -> Cons f a
mapHead f (a :. as) = f a :. as

这是一个不使用中缀构造函数的定义。

data Cons f a = Cons
{ head :: a
, tail :: f a
}

关于haskell - Data.FixedList源代码中的 `Cons`是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38426885/

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