首页 > 解决方案 > 如何从haskell中的不同数据类型列表中检索数据

问题描述

我们如何从两个不同数据类型的列表中检索特定数据?该程序仅将这些巧克力和糖果识别为 1 个参数,而不是两个参数。还有其他更好的方法来检索它吗?

data Store = Store Cookie Sweets [(Chocolate, Candy)]

-- get Candy Chocolate 
getChocolate :: Store -> [(Chocolate, Candy)]
getChocolate (Store _ _ ch) = ch 

-- get Candy Chocolate 
getCandy :: Store -> [(Chocolate, Candy)]
getCandy (Store _ _ ca) = ca 

标签: haskell

解决方案


我猜你所追求的是函数名称所指示的语义,因为我认为你的签名不是你想要的。您必须记住完成数据的解构:

data Store = Cookie Sweets [(Chocolate, Candy)]

-- get Candy Chocolate 
getChocolate :: Store -> [Chocolate]
getChocolate (Cookie _ xs) = map fst xs

-- get Candy Chocolate 
getCandy :: Store -> [Candy]
getCandy (Cookie _ xs) = map snd xs

推荐阅读