Add some append functions for List+
This commit is contained in:
parent
97f86146a5
commit
6507dfe932
|
@ -24,6 +24,25 @@ foldl : {A B : Type} → (B → A → B) → B → List⁺ A → B
|
||||||
foldl _+_ acc [ x ]⁺ = acc + x
|
foldl _+_ acc [ x ]⁺ = acc + x
|
||||||
foldl _+_ acc (x ∷⁺ xs) = foldl _+_ (acc + x) xs
|
foldl _+_ acc (x ∷⁺ xs) = foldl _+_ (acc + x) xs
|
||||||
|
|
||||||
|
cons⁺ : {A : Type} → A → List A → List⁺ A
|
||||||
|
cons⁺ a [] = [ a ]⁺
|
||||||
|
cons⁺ a (x ∷ xs) = a ∷⁺ cons⁺ x xs
|
||||||
|
|
||||||
|
_⁺++⁺_ : {A : Type} → List⁺ A → List⁺ A → List⁺ A
|
||||||
|
[ x ]⁺ ⁺++⁺ l₁ = x ∷⁺ l₁
|
||||||
|
(x ∷⁺ l₀) ⁺++⁺ l₁ = x ∷⁺ (l₀ ⁺++⁺ l₁)
|
||||||
|
|
||||||
|
_++⁺_ : {A : Type} → List A → List⁺ A → List⁺ A
|
||||||
|
[] ++⁺ l₁ = l₁
|
||||||
|
(x ∷ l₀) ++⁺ l₁ = x ∷⁺ (l₀ ++⁺ l₁)
|
||||||
|
|
||||||
|
_⁺++_ : {A : Type} → List⁺ A → List A → List⁺ A
|
||||||
|
[ x ]⁺ ⁺++ [] = [ x ]⁺
|
||||||
|
[ x ]⁺ ⁺++ (y ∷ l₁) = (x ∷⁺ [ y ]⁺ ) ⁺++ l₁
|
||||||
|
(x ∷⁺ l₀) ⁺++ l₁ = x ∷⁺ (l₀ ⁺++ l₁)
|
||||||
|
|
||||||
|
infixr 20 _⁺++⁺_ _++⁺_ _⁺++_
|
||||||
|
|
||||||
list⁺-to-list : {A : Type} → List⁺ A → List A
|
list⁺-to-list : {A : Type} → List⁺ A → List A
|
||||||
list⁺-to-list [ x ]⁺ = x ∷ []
|
list⁺-to-list [ x ]⁺ = x ∷ []
|
||||||
list⁺-to-list (x ∷⁺ xs) = x ∷ list⁺-to-list xs
|
list⁺-to-list (x ∷⁺ xs) = x ∷ list⁺-to-list xs
|
||||||
|
@ -39,10 +58,7 @@ vec-to-list⁺ (x V.∷ xs@(_ V.∷ _)) = x ∷⁺ vec-to-list⁺ xs
|
||||||
list-to-list⁺? : {A : Type} → List A → Maybe (List⁺ A)
|
list-to-list⁺? : {A : Type} → List A → Maybe (List⁺ A)
|
||||||
list-to-list⁺? [] = cake
|
list-to-list⁺? [] = cake
|
||||||
list-to-list⁺? (x ∷ xs) = real (cons⁺ x xs)
|
list-to-list⁺? (x ∷ xs) = real (cons⁺ x xs)
|
||||||
where
|
|
||||||
cons⁺ : {A : Type} → A → List A → List⁺ A
|
|
||||||
cons⁺ a [] = [ a ]⁺
|
|
||||||
cons⁺ a (x ∷ xs) = a ∷⁺ cons⁺ x xs
|
|
||||||
|
|
||||||
instance
|
instance
|
||||||
ShowList⁺ : {A : Type} → ⦃ Show A ⦄ → Show (List⁺ A)
|
ShowList⁺ : {A : Type} → ⦃ Show A ⦄ → Show (List⁺ A)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user