Grob gesagt, ich habeBekannte Mustererkennung in agda
check : UExpr -> Maybe Expr
und ich habe einen Test Begriff
testTerm : UExpr
die ich check
erfolgreich hoffen, nach dem ich die resultierenden Expr
extrahieren möchte und manipulieren es weiter. Grundsätzlich
realTerm : Expr
just realTerm = check testTerm
Derart, dass diese Definition auf typecheck würde scheitern, wenn check testTerm
stellte sich heraus, nothing
zu sein. Ist das möglich?
Sie könnten [Eliminating a Maybe auf der Typenebene] (http://stackoverflow.com/questions/31105947/eliminating-a-aybe-at-the-type-level) nützlich finden. – user3237465
Im Gegensatz zu den technischen Antworten unten möchte ich darauf hinweisen, dass Sie nicht funktional denken. Es ist wie jemand, der die "IO" -Monade loswerden will und überall in Haskell Imperativcode schreibt: Im Allgemeinen gibt es keine Möglichkeit, den zugrunde liegenden Typ aus einem Begriff vom Typ "Maybe" zu extrahieren; Es ist der Kern starker funktionaler Programmiersprachen wie Agda, also musst du die Monade so lange herumreichen, bis du einen guten Weg gefunden hast, sie in einen Wert eines anderen Typs zu codieren. –