Car*_*aro -1 haskell list algebraic-data-types
如果我已经定义了一个数据类型,比如5个属性.我如何能够创建其中一个属性的列表.
例如:
data Person = Person name fname sexe age height
Marie, John, Jessie :: Person
Marie = Person "Marie" _ _ _
John = Person "John" _ _ _
Jessie = Person "Jessie" _ _ _
Run Code Online (Sandbox Code Playgroud)
我怎样才能返回一个包含所有名字的列表:( ,Marie,)JohnJessie
您的代码无效Haskell.你可以有
data Person = Person FName LName Sexe Age Height
type FName = String
type LName = String
data Sexe = Male | Female
type Age = Int
type Height = Float
marie, john, jessie :: Person
marie = Person "Marie" "Lastname1" Female 25 165
john = Person "John" "Lastname2" Male 26 180
jessie = Person "Jessie" "Lastname3" Female 27 170
Run Code Online (Sandbox Code Playgroud)
然后,你可以创建一个包含三个值的列表marie,john以及jessie与
db :: [Person]
db = [marie, john, jessie]
Run Code Online (Sandbox Code Playgroud)
现在你可以使用许多内置的功能,如在此列表中操作map和filter:
getAge :: Person -> Age
getAge (Person _ _ _ age _) = age
ages :: [Person] -> [Age]
ages people = map getAge people
Run Code Online (Sandbox Code Playgroud)
现在,如果你将它加载到GHCi中,你可以测试它
> ages db
[25, 26, 27]
Run Code Online (Sandbox Code Playgroud)
有些事情需要注意:
data TypeName = ConstructorName <FieldTypes>type AliasName = ExistingType| 归档时间: |
|
| 查看次数: |
629 次 |
| 最近记录: |