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 ∷⁺ 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 [ x ]⁺ = x ∷ []
|
||||
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⁺? [] = cake
|
||||
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
|
||||
ShowList⁺ : {A : Type} → ⦃ Show A ⦄ → Show (List⁺ A)
|
||||
|
|
Loading…
Reference in New Issue
Block a user