将一个记录中的值存储到另一记录中

时间:2019-03-15 23:57:02

标签: haskell

因此在我的Java程序中,我有这两个类声明。我想在Haskell中给出等效的数据类型定义(或尽我所能)

class Person {
String name;
Date   dob;
int    ssn;
}

class Date {
int    month; 
int    day;
int    year;
}

我可以做这样的事情吗?只需使用两条记录,但是一条记录可以保存另一条记录的值?这是我认为可以在下面执行的操作:

data Person { name :: String, 
              date_of_birth :: Date,
              ssn :: Int
            } deriving (Show)

data Date { month :: Int,
             day :: Int,
             year :: Int
           } deriving (Show)

这样的事情行得通吗?如果没有,您的建议是什么。谢谢。

1 个答案:

答案 0 :(得分:4)

是的,它可以完美运行,但是您必须这样写

data Person = Person { name :: String, 
                       date_of_birth :: Date,
                       ssn :: Int
                     } deriving (Show, Eq, Ord)

data Date = Date { month :: Int,
                   day :: Int,
                   year :: Int
                 } deriving (Show, Eq, Ord)

您的代码中存在语法错误,我已修复。我还添加了Eq,因此您可以测试两个人是否相等。我添加了Ord,因此您可以将它们放入要求内容可排序的数据结构中。