我是haskell的新手。 我有新的类型:
type RealName = String
type UserName = String
type GroupName = String
type Message = String
和
data User = User UserName RealName [UserName] [Post]
在新功能中我想访问用户的真实姓名;
accreal :: User -> RealName
accreal us = ??
我怎么能这样做,我尝试了很多方法,但没有工作。
答案 0 :(得分:5)
只需使用模式匹配:
accreal:: User -> RealName
accreal (User un rn uns ps) = rn
您可能还希望使用_
为未使用的变量添加前缀以禁止显示警告。
accreal:: User -> RealName
accreal (User _un rn _uns _ps) = rn
您也可以使用_
来放弃某个值,例如accreal (User _ rn _ _) = rn
。
或者,将您的data
类型更改为记录:
data User = User
{ user :: UserName
, real :: RealName
, others :: [UserName]
, posts :: [Post] }
这会自动为您定义投影real :: User -> RealName
。