Ho iniziato a giocare con il sistema di abbinamento di modelli Racket di recente e mi sono imbattuto in un problema che non riesco a capire.Corrispondenza con la stella di Kleene sul tipo di struttura nella racchetta
se faccio:
(match (list 1 2 3 4 5 6 7 8 9 10 11 12)
[(list _ x y z ...) (list y ': x)])
in REPL ottengo
'(3 : 2)
come il mio risultato desiderato.
se faccio:
(match (current-date)
[(date* _ x y z ...) (list y ': x)])
o
(match (date* 5 18 13 18 11 2011 5 321 #f 3600 0 "W. Europe Standard Time")
[(date* _ x y z ...) (list y ': x)])
ottengo questo errore:
match: wrong number for fields for structure date*: expected 12 but got 5 in: (_ x y z ...)
Ho il sospetto che la stella di Kleene ...
non funziona con il tipo di struct per un po ' ragionare. Perché è così?
+1 La tua risposta è in realtà molto più utile del mio. :-) – ruakh
@ruakh la tua risposta descrive * perché * non funziona. Questa risposta descrive * come * per farlo funzionare. Entrambi sono abbastanza utili. –
Sì, entrambi sono utili. Grazie. – mentus