因此在我的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)
这样的事情行得通吗?如果没有,您的建议是什么。谢谢。
答案 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
,因此您可以将它们放入要求内容可排序的数据结构中。