В настоящее время я создаю упорядоченный векторный тип данных и пытаюсь создать операции из этого типа данных, но получаю сообщение об ошибке:
(Set (.Agda.Primitive.lsuc ℓ)) != Set
when checking that the expression A has type Set ℓ
Это тип данных
module ordered-vector (A : Set) (_<A_ : A → A → ????) where
data ordered-???? : {A : Set}→ A → ℕ → Set where
[] : {a : A} → ordered-???? a 0
_::_ : (head : A) {min : A} → {n : ℕ} → (tail : ordered-???? min n) → true (min <A head) → ordered-???? head (suc n)
А это операция:
[_]o???? : ∀ {ℓ} {A : Set ℓ} → A → ordered-???? A 1
[ x ]o???? = x :: []
Я считаю, что следующий код более подходит для этого типа данных. Как мне сохранить правильность минусовой части определения?
data ordered-???? {ℓ} (A : Set ℓ) : ℕ → Set ℓ where
[] : ordered-???? A 0
_::_ : (head : A) {min : A} → {n : ℕ} → ordered-???? min n → true (min <A head) → ordered-???? head (suc n)
Это модуль nat