shithub: MicroHs

Download patch

ref: bfccbb688d13859c453c5977d314b8fbe0d1cba3
parent: a84c5e2ecba3931de5e7f6e034197c998bb5dd57
author: Lennart Augustsson <lennart@augustsson.net>
date: Tue Sep 5 09:10:28 EDT 2023

Add some enumerators.

--- a/lib/Data/List.hs
+++ b/lib/Data/List.hs
@@ -194,8 +194,19 @@
 enumFrom :: Int -> [Int]
 enumFrom n = n : enumFrom (n+1)
 
+enumFromThen :: Int -> Int -> [Int]
+enumFromThen n m = n : enumFrom (n+d)
+  where d = m - n
+
 enumFromTo :: Int -> Int -> [Int]
 enumFromTo l h = takeWhile (<= h) (enumFrom l)
+
+enumFromThenTo :: Int -> Int -> Int -> [Int]
+enumFromThenTo l m h =
+  if m - l > 0 then
+    takeWhile (<= h) (enumFromThen l m)
+  else
+    takeWhile (>= h) (enumFromThen l m)
 
 find :: forall a . (a -> Bool) -> [a] -> Maybe a
 find p [] = Nothing
--