gpt4 book ai didi

haskell - getZipList 是如何定义的?

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

我很好奇 getZipList 在 ghc 中的定义位置。
Control.Applicative 对 ZipList 有这个定义。

newtype ZipList a = ZipList { getZipList :: [a] }

使用 ZipLists 的一种方法是(来自 LYAH):
ghci> getZipList $ (+) <$> ZipList [1,2,3] <*> ZipList [100,100,100]

[101,102,103]

我很好奇 getZipList 如何知道要返回什么。
也许我错过了关于 newtype 关键字的一些东西。
谢谢!

最佳答案

不仅仅是newtype ,它与 data 的作用相同.您似乎不知道的是命名字段语法,

newtype ZipList a = ZipList { getZipList :: [a] }

几乎一样
newtype ZipList a = ZipList [a]

getZipList :: ZipList a -> [a]
getZipList (ZipList xs) = xs

但是命名字段语法允许更方便的更新和模式匹配 - 特别是对于 data 中的命名字段更方便具有多个字段的类型。

命名字段(隐式)定义了从包装值中提取包含数据的访问器函数。

关于haskell - getZipList 是如何定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14407475/

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