我已经定义了一种数据类型:
data Citizen = J11 String String | J12 String String
Run Code Online (Sandbox Code Playgroud)
我想写一个函数:getName:
getName :: Citizen -> String
getName (J11 firstName lastName ) = firstName
getName (J12 firstName lastName ) = firstName
Run Code Online (Sandbox Code Playgroud)
是否可以避免重复代码,具体取决于它是J11还是J12?没有改变类型签名?
getName (XXX firstName lastName ) = firstName
Run Code Online (Sandbox Code Playgroud)
..像这样的东西......
或者,你总是可以提高一级
data Citizen a = Citizen a String String
firstName :: Citizen a -> String
firstName (Citizen _ f _) = f
> let j1 = Citizen J11 "John" "Doe"
> firstName j1
"John"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |