blob: f389c3143624427cacd0179b146af10a3249d349 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
module EnumFromTo where
import Data.Array ((:), reverse)
import Data.Enum (class Enum, succ)
import Data.Maybe (Maybe(..))
import Prelude
enumFromTo :: forall a. Enum a => a -> a -> Array a
enumFromTo start end = reverse $ enumFromTo' [] (Just start)
where enumFromTo' :: Array a -> Maybe a -> Array a
enumFromTo' acc (Just start')
| start' > end = acc
| start' == end = start' : acc
| otherwise = enumFromTo' (start' : acc) (succ start')
enumFromTo' acc Nothing = acc
|