on c19392f help sign in
elk/src/Data/OneOrMore.hs
46 lines 558 B history raw
1{-# OPTIONS_GHC -Wall #-}
2module Data.OneOrMore
3 ( OneOrMore(..)
4 , one
5 , more
6 , toList
7 )
8 where
12-- ONE OR MORE
15data OneOrMore a
16 = One a
17 | More (OneOrMore a) (OneOrMore a)
20one :: a -> OneOrMore a
21one =
22 One
25more :: OneOrMore a -> OneOrMore a -> OneOrMore a
26more =
27 More
31-- TO LIST
34toList :: OneOrMore a -> [a]
35toList oneOrMore =
36 toListHelp oneOrMore []
39toListHelp :: OneOrMore a -> [a] -> [a]
40toListHelp oneOrMore list =
41 case oneOrMore of
42 One x ->
43 x : list
45 More a b ->
46 toListHelp a (toListHelp b list)