aboutsummaryrefslogtreecommitdiff
path: root/IterableClass.icl
diff options
context:
space:
mode:
authorCamil Staps2015-09-02 20:16:20 +0200
committerCamil Staps2015-09-02 20:31:10 +0200
commit3c96313867236ba84ab2c7e1911cf99a2361590e (patch)
tree5ad93144f73274f0eb4a60748e260e9b8c037a16 /IterableClass.icl
Initial commit
Diffstat (limited to 'IterableClass.icl')
-rw-r--r--IterableClass.icl18
1 files changed, 18 insertions, 0 deletions
diff --git a/IterableClass.icl b/IterableClass.icl
new file mode 100644
index 0000000..97340ba
--- /dev/null
+++ b/IterableClass.icl
@@ -0,0 +1,18 @@
+implementation module IterableClass
+
+import StdEnv
+
+stepn :: Int a -> a | step a
+stepn 0 a = a
+stepn n a = stepn (n-1) (step a)
+
+rewindn :: Int a -> a | rewind a
+rewindn 0 a = a
+rewindn n a = rewindn (n-1) (rewind a)
+
+stepOrRewindn :: Int a -> a | step, rewind a
+stepOrRewindn 0 a = a
+stepOrRewindn n a
+| n < 0 = rewindn (0-n) a
+| n > 0 = stepn n a
+