And*_*ndy 5 syntax haskell list data-structures
我真的很困惑你应该如何从haskell中的类型类中获取数据.我正在寻找C背景,所以发现你不能只访问数据真的很困难.我所拥有的是这样的:
data MyType = MyType String deriving (Show)
display :: [MyType] -> IO ()
display ((MyType name):xs) = do
display xs
putStr name
Run Code Online (Sandbox Code Playgroud)
基本上我在这里想要访问'name',但它似乎不起作用.我可以通过在代码中引用对象来访问类型类实例中的数据,还是必须将其内容映射到变量?如果是这样怎么样?
关于这方面的好教程的链接将不胜感激,我已经读过'了解你的Haskell非常好'但是当我试图偏离给出的例子时,我总是需要知道要完成它.-一个
我想你可能只是缺少一些将它们联系在一起的小块.
首先,你有一个完美的数据类型MyType
,它包含字符串:
data MyType = MyType String deriving (Show)
Run Code Online (Sandbox Code Playgroud)
现在,您想要编写一个函数来遍历此类型的列表,并在每个元素前进时打印它们.我们通过列表数据类型的递归来完成此操作.
由于列表有两种情况,空列表[]
和缺点情况(:)
,我们有两个分支:
display :: [MyType] -> IO ()
display [] = return ()
display ((MyType name):xs) = do
putStrLn name
display xs
Run Code Online (Sandbox Code Playgroud)
现在,我认为你可能会陷入困境的是建立一些这种类型的数据.您已经知道如何通过模式匹配将其拆分,并使用几乎相同的语法构建数据.这是一个列表MyType
:
table =
[ MyType "john"
, MyType "don"
, MyType "eric"
, MyType "trevor"
]
Run Code Online (Sandbox Code Playgroud)
最后,您可以运行您的程序 main
main = display table
Run Code Online (Sandbox Code Playgroud)
注意,这里没有类型类,只是代数数据类型(随附data
).