假设我有一个函数(它确实像名字所说的那样):
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
;但这失败了,因为n
当我在IsTrue
.
谢谢你的时间!
IsTrue
是这样的:
data IsTrue : Bool → Set where
check : IsTrue true