Ich frage mich, ob es in Agda irgendetwas gibt, das Haskells deriving Eq
-Klausel ähnelt --- dann habe ich eine zugehörige Frage unten, ebenso.Haskell Ableitungsmechanismus für Agda
Beispiel: Angenommen, ich habe Typen für eine Spielzeug-Sprache,
data Type : Set where
Nat : Type
Prp : Type
Dann kann ich entscheidbar Gleichheit durch Mustervergleich und C-c C-a
,
_≟ₜ_ : Decidable {A = Type} _≡_
Nat ≟ₜ Nat = yes refl
Nat ≟ₜ Prp = no (λ())
Prp ≟ₜ Nat = no (λ())
Prp ≟ₜ Prp = yes refl
implementieren Ich bin gespannt, ob dies kann ähnlich der Art und Weise, wie es in Haskell gemacht wird, mechanisiert oder automatisiert zu sein:
data Type = Nat | Prp deriving Eq
Vielen Dank!
Während wir auf das Thema Arten sind, würde ich gerne meine formalen Typen als Agda-Typen realisieren: Nat ist nur natürliche Zahlen, während Prp kleine Vorschläge ist.
⟦_⟧Type : Type → Set ?
⟦ Nat ⟧Type = ℕ
⟦ Prp ⟧Type = Set
Leider funktioniert das nicht. Ich habe versucht, dies mit dem Heben zu beheben, aber es ist fehlgeschlagen, da ich keine Ahnung habe, wie man mit dem Heben von Höhen arbeitet. Jede Hilfe wird geschätzt!
Ein Beispiel für die Verwendung der obigen Funktion wäre,
record InterpretedFunctionSymbol : Set where
field
arity : ℕ
src tgt : Type
reify : Vec ⟦ src ⟧Type arity → ⟦ tgt ⟧Type
Dankes- mich für humouring!
Vielen Dank; Ich freue mich auf das Lesen der zitierten These und zitiert Blog^_^ –