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