假設有一個函數(它確實什麼名字說):我如何使用依賴於對
filter : ∀ {A n} → (A → Bool) → Vec A n → ∃ (λ m → Vec A m)
現在,我想以某種方式與依賴對我恢復工作。我寫了簡單的head
功能:
head :: ∀ {A} → ∃ (λ n → Vec A n) → Maybe A
head (zero , _) = nothing
head (succ _ , (x :: _)) = just x
這當然完美的作品。但它讓我想知道:有什麼方法可以確保,該函數只能用n ≥ 1
調用?
理想情況下,我想提出功能head : ∀ {A} → ∃ (λ n → Vec A n) → IsTrue (n ≥ succ zero) → A
;但是失敗了,因爲當我在IsTrue
中使用它時,n
超出了範圍。
謝謝你的時間!
IsTrue
是一樣的東西:
data IsTrue : Bool → Set where
check : IsTrue true
很好,雖然我認爲你的意思是IsTrue(proj 1 p≥succ zero)'。 – Vitus 2012-03-14 15:59:43
謝謝,編輯! – danr 2012-03-14 16:01:43