【发布时间】:2016-10-21 16:49:21
【问题描述】:
我正在尝试从 SML 的记录列表中获取最年长的人。我从一个简单的列表开始:
type person = {age:int, name: string} list
val p:person = [{age=11, name="Marco"},{age=12, name="Polo"}]
fun maxAge [] = NONE
| maxAge [x] = SOME x
| maxAge (p1 :: p2 :: xs) = if #age(p1) > #age(p2) then
maxAge (p1 :: xs)
else
maxAge (p2 :: xs)
我收到以下错误:
Error: unresolved flex record
(can't tell what fields there are besides #age)
我认为 p1 和 p2 将是列表的第一个和第二个元素,在我的例子中是姓名和年龄的记录 {age=11, name="Marco"},我可以通过 #age( p1) 然后将完整的记录 p1 发送到递归的更深处,但事实并非如此。为什么?
任何提示将不胜感激。
PS:当我得到正确的记录时,如何只打印名称字符串,这不起作用:
maxAge [x] = SOME #name(x)
【问题讨论】: