Vorwort dies mit: Lernen ATS von der ATS-Website.ATS Fehler beheben
Wenn ich versuche, einen Datensatz aus einer Liste zu ziehen, sobald ich versuche, auf die Datensatzvariable zu verweisen, erhalte ich einen Typfehler auf x4.a unten.
Also warum scheitert das - würde x4 nicht wissen, dass es eine Aufzeichnung hat?
typedef
abc1_rec = '{a=int, b=int, c=char}
typedef
abc2_rec = '{a=int, b=char, c=string}
val x1 = '{a=1,b=3,c='A'} : abc1_rec // boxed record
val x2 = '{a=1,b='B',c="CAT"} : abc2_rec // boxed record
val a1 = x2.a // =1
val x3 = (x2 :: x1 :: list_nil()) // concat list x2 + x1 + nil
val x4 = x3.head() // record x2
val x5 = x4.a // error - [a] cannot be found
/tmp/patsopt_tcats_lu0auT: 1440 (Leitung 77 =, offs = 12) - 1442 (line = 77, offs = 14): Fehler (3): [a] kann nicht gefunden werden: Der Typ [S2EVar (779)] wird erwartet, ein Tyrec (Datensatz) zu sein. patsopt (TRANS3): Es gibt insgesamt [1] Fehler . Ausfahrt (ATS): abgefangene Ausnahme: _2home_2hwxi_2Research_2ATS_2dPostiats_2src_2pats_error_2esats__FatalErrorExn (1025)
Dafür können Sie einfach schreiben 'val x3 = $ list {abs1_rec} (x2, x1)' –
Oder Sie können 'val x3 = list_cons (x2, list_cons (x1, list_nil {abs1_rec}())' schreiben –
Vielen Dank, dass hilft.Wenn ich alle die gleiche Art "abc1_rec" verwenden würde val x3 = (x2 :: x1 :: list_nil()) geben Sie mir list (abc1_rec, 2)? Wo :: list_cons neu definiert. – Pezhead9000