gpt4 book ai didi

list - 在Haskell中构建数据类型列表

转载 作者:行者123 更新时间:2023-12-04 18:14:46 25 4
gpt4 key购买 nike

我真的对您应该如何从Haskell的类型类中获取数据感到困惑。我的工作背景是C,因此很难发现您不能仅访问数据。我所拥有的是这样的:

data MyType = MyType String deriving (Show)


display :: [MyType] -> IO ()
display ((MyType name):xs) = do
display xs
putStr name

基本上,我想在这里访问“名称”,但是似乎不起作用。我是否可以仅通过引用代码中的对象来访问类型类实例中的数据,还是必须将其内容映射到变量?如果是的话,怎么办?

链接到优秀教程的内容将不胜感激,我已经阅读了“学习Haskell,以获取极大的好处”,但是当我尝试偏离给出的示例时,似乎总是需要很多知识才能完成它。
-一种

最佳答案

我认为您可能只是缺少一些将它们联系在一起的小片段。

首先,您有一个非常好的数据类型MyType,它包含字符串:

data MyType = MyType String deriving (Show)

现在,您要编写一个遍历这种类型的列表的函数,并逐个打印每个元素。我们通过递归列表数据类型来做到这一点。

由于列表有两种情况,空列表 []和不利情况 (:),我们有两个分支:
display :: [MyType] -> IO ()
display [] = return ()
display ((MyType name):xs) = do
putStrLn name
display xs

现在,我认为您可能会陷入困境的地方是构建这种类型的数据。您已经知道如何将其与模式匹配分开,并使用几乎相同的语法来构建数据。这是 MyType的列表:
table = 
[ MyType "john"
, MyType "don"
, MyType "eric"
, MyType "trevor"
]

最后,您可以从 main运行程序
main = display table

注意,这里没有类型类,只有代数数据类型(由 data引入)。

关于list - 在Haskell中构建数据类型列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5888904/

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