summaryrefslogtreecommitdiff
path: root/Examples.agda
diff options
context:
space:
mode:
authorHelmut Grohne <grohne@cs.uni-bonn.de>2014-02-24 16:44:17 +0100
committerHelmut Grohne <grohne@cs.uni-bonn.de>2014-02-24 16:44:17 +0100
commit8d0659f5dcfec4fc75096aa188c99af35c23bad5 (patch)
tree4acca360b8c9332bb845f9f0169641fc37f34647 /Examples.agda
parent54c29d2ce4d4e8a33d77bc787b2c5132f2089835 (diff)
downloadbidiragda-8d0659f5dcfec4fc75096aa188c99af35c23bad5.tar.gz
add intersperse as another example
Diffstat (limited to 'Examples.agda')
-rw-r--r--Examples.agda15
1 files changed, 15 insertions, 0 deletions
diff --git a/Examples.agda b/Examples.agda
index 764ac0f..c82bcf4 100644
--- a/Examples.agda
+++ b/Examples.agda
@@ -56,3 +56,18 @@ sieve' = assume-get id↪ (≡-to-Π _) f
f [] = []
f (x ∷ []) = x ∷ []
f (x ∷ _ ∷ xs) = x ∷ f xs
+
+intersperse-len : ℕ → ℕ
+intersperse-len zero = zero
+intersperse-len (suc zero) = suc zero
+intersperse-len (suc (suc n)) = suc (suc (intersperse-len (suc n)))
+
+intersperse : {A : Set} {n : ℕ} → A → Vec A n → Vec A (intersperse-len n)
+intersperse s [] = []
+intersperse s (x ∷ []) = x ∷ []
+intersperse s (x ∷ y ∷ v) = x ∷ s ∷ intersperse s (y ∷ v)
+
+intersperse' : Get
+intersperse' = assume-get suc-injection (≡-to-Π intersperse-len) f
+ where f : {A : Set} {n : ℕ} → Vec A (suc n) → Vec A (intersperse-len n)
+ f (s ∷ v) = intersperse s v