Lassen Sie uns sagen, dass wir eine unendliche Liste haben:Inf Wert automatisch gezwungen wird, nach dem Muster
data InfList : Type -> Type where
(::) : (value : elem) -> Inf (InfList elem) -> InfList elem
Und wir wollen endlich viele ihrer Elemente haben:
getPrefix : (count : Nat) -> InfList a -> List a
getPrefix Z _ = []
getPrefix (S k) (value :: xs) = value :: getPrefix k (?rest)
Also, was bleibt:
a : Type
k : Nat
value : a
xs : InfList a
--------------------------------------
rest : InfList a
Es stellte sich heraus, dass nach Musterabgleich xs
werden InfList a
instea d von Inf (InfList a)
.
Gibt es eine Möglichkeit, xs
verzögert zu haben?
'getPrefix' ist total,' [] 'ist keine Instanz von' InfList', einen genaueren Blick auf, wie es definieren ist - es ist nicht leer –
Oh sein kann, sorry, mein schlecht, denn ich hatte hat es sofort zur Definition hinzugefügt. – Markus