我创建了一个新的数据类型:
data Human = Human [Names] Age
deriving(Eq,Show)
type Names = String
type Age = Int
现在我想访问Human类型对象的[Names]元素:
human1 = Human ["FirstName","LastName"] 22
是否有一种简单的方法可以为我的示例执行此操作,例如Names human1
?
答案 0 :(得分:5)
在这种情况下,最简单的方法是定义一个函数,该模式匹配Human
数据类型:
getNames (Human names _) = names
否则,您可以使用“记录语法”来定义记录的字段:
data Human = Human { names :: [Names], age :: Age }
使用此语法,您可以获得names
和age
个函数,这些函数允许您访问字段:
human1 = Human ["FirstName","LastName"] 22
names human1
答案 1 :(得分:4)
您可以创建自己的访问者
names :: Human -> [Names]
names (Human n _) = n
或使用镜头,这样可以提供更多功能。
http://hackage.haskell.org/package/lens-tutorial-1.0.3/docs/Control-Lens-Tutorial.html