Tôi tự hỏi nếu có bất kỳ điều gì trong Agda giống với mệnh đề deriving Eq
của Haskell --- thì tôi cũng có một câu hỏi liên quan bên dưới.Cơ chế phát sinh Haskell cho Agda
Ví dụ, giả sử tôi có các loại cho một món đồ chơi ngôn ngữ,
data Type : Set where
Nat : Type
Prp : Type
Sau đó, tôi có thể thực hiện bình đẳng decidable bởi mô hình kết hợp và C-c C-a
,
_≟ₜ_ : Decidable {A = Type} _≡_
Nat ≟ₜ Nat = yes refl
Nat ≟ₜ Prp = no (λ())
Prp ≟ₜ Nat = no (λ())
Prp ≟ₜ Prp = yes refl
tôi tò mò nếu điều này có thể được cơ giới hóa hoặc tự động bằng cách nào đó tương tự như cách thức được thực hiện trong Haskell:
data Type = Nat | Prp deriving Eq
Cảm ơn bạn!
Trong khi chúng ta đang ở trên chủ đề của các loại, tôi muốn nhận ra các loại chính thức của tôi như các loại Agda: Nat chỉ là số tự nhiên trong khi Prp là các mệnh đề nhỏ.
⟦_⟧Type : Type → Set ?
⟦ Nat ⟧Type = ℕ
⟦ Prp ⟧Type = Set
Đáng buồn là điều này không có tác dụng. Tôi đã cố gắng sửa lỗi này bằng cách nâng nhưng không thành công vì tôi không biết cách sử dụng mức nâng. Bất kỳ trợ giúp được đánh giá cao!
Một cách sử dụng ví dụ của hàm trên sẽ là,
record InterpretedFunctionSymbol : Set where
field
arity : ℕ
src tgt : Type
reify : Vec ⟦ src ⟧Type arity → ⟦ tgt ⟧Type
Thank-you cho humouring tôi!
Cảm ơn bạn rất nhiều; Tôi nhìn về phía trước để đọc luận án được trích dẫn và trích dẫn blog^_^ –