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)
私は、取得するには、次のエラー:私は私の場合aで、P1、P2は、リストの第一及び第二の要素だろうと思った
Error: unresolved flex record
(can't tell what fields there are besides #age)
名前と年齢のレコード(age = 11、name = "Marco")、そして#age(p1)で簡単に値にアクセスし、p1を完全なレコードp1をより深く再帰に送ることができたが、そうではない。どうして?
どのようなヒントも高く評価されます。
PS:どのように私は私が右のレコードを取得する場合、これが動作しないだけで名の文字列を印刷することができます。
maxAge [x] = SOME #name(x)
他にも少なくとも1つのオプションがあります:あなたの 'maxAge'関数に明示的な型を与えることができます –