簡體   English   中英

類型聲明中的 Agda 模式匹配

[英]Agda pattern matching inside type declarations

我正在從 Agda 形式開始學習 HoTT。 我按照https://www.cs.bham.ac.uk/~mhe/HoTT-UF-in-Agda-Lecture-Notes/ 中的說明進行操作

當我開始像說明的注釋那樣輸入依賴和類型歸納的聲明時,

record Σ {𝓤 𝓥} {X : 𝓤 ̇ } (Y : X → 𝓥 ̇ ) : 𝓤 ⊔ 𝓥 ̇  where
  constructor _,_
  field
    x : X
    y : Y x

pr₁ : {X : 𝓤 ̇ } {Y : X → 𝓥 ̇ } → Σ Y → X
pr₁ (x , y) = x

pr₂ : {X : 𝓤 ̇ } {Y : X → 𝓥 ̇ } → (z : Σ Y) → Y (pr₁ z)
pr₂ (x , y) = y


Σ-induction : {X : 𝓤 ̇ } {Y : X → 𝓥 ̇ } {A : Σ Y → 𝓦 ̇ }
            → ((x : X) (y : Y x) → A (x , y))
            → ((x , y) : Σ Y) → A (x , y)

Σ-induction g (x , y) = g x y

我的 agda 說代碼有錯誤→ ((x , y) : Σ Y)

expected sequence of possibly hidden bound identifiers

當我改變我的類型聲明時:

Σ-induction : {X : 𝓤 ̇ } {Y : X → 𝓥 ̇ } {A : Σ Y → 𝓦 ̇ }
            → ((x : X) (y : Y x) → A (x , y))
            → (z : Σ Y) → A (pr₁ z , pr₂ z)

Σ-induction g (x , y) = g x y

這個版本不錯。

所以我想知道問題是否是 agda 不支持類型聲明內的模式匹配。

ps 我使用的是 Agda 2.6.0.1

在(很快)即將推出的 Agda 2.6.1 版本中將提供對望遠鏡記錄進行模式匹配的功能。

參見開發分支的文檔: https : //agda.readthedocs.io/en/latest/language/telescopes.html#irrefutable-patterns-in-binding-positions

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM