1
我想從SML中的記錄列表中獲取最老的人。我已經開始爲我會用一個簡單的列表:從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)
至少有一個選項:你可以給你的'maxAge'函數顯式類型 –