0

我在閱讀Brutal Meta-introduction to AgdaAgda的目標類型中的`|是什麼意思?

在一節的「使用with和統一重寫」他們提了一個情況下的一種類型的目標從雲:

(filter p (a ∷ as) | p a) ≡ (filterN p (a ∷ as) | p a) 

(filter p (a ∷ rs) | r) ≡ (filterN p (a ∷ rs) | r) 

添加with子句之後。

我在編寫Agda代碼時看到類似的符號出現在目標和錯誤消息中。

我想知道,是否在|右邊有一個變量,在這個表示法中?這是記錄在任何地方?

回答

1

如果你看一下定義過濾你看到的條款喜歡

... | true = a ∷ (filter p as) 

這對於

filter p (a ∷ as) | true = a ∷ (filter p as) 

的速記|目標中的符號指的是這些條款,這意味着例如

filter p (a ∷ as) | e 

當「e」等於「真」時等於「a∷(過濾器p)」。

在你的情況下,你有一個變量'r',所以如果你的模式匹配,事情會計算更多。

+0

這解釋了'|'在函數定義中的含義(使用'with',但不是當它出現在目標內時意味着什麼。 – jmite

+2

我試圖說在一個目標內部它意味着相同:它的符號表達式的值由函數定義中的子句定義,如果沒有子句適用,則不進一步計算。 – Saizan

相關問題