@@ -3,7 +3,6 @@ module Data.OneOrMore
3 ( OneOrMore(..)
3 ( OneOrMore(..)
@@ -33,25 +32,6 @@ more =
39−toList :: OneOrMore a -> [a]
41− toListHelp oneOrMore []
44−toListHelp :: OneOrMore a -> [a] -> [a]
45−toListHelp oneOrMore list =
51− toListHelp a (toListHelp b list)
@@ -71,14 +51,24 @@ map func oneOrMore =
72destruct :: (a -> [a] -> b) -> OneOrMore a -> b
52destruct :: (a -> [a] -> b) -> OneOrMore a -> b
73destruct func oneOrMore =
53destruct func oneOrMore =
74− destructHelp func oneOrMore []
54+ destructLeft func oneOrMore []
77−destructHelp :: (a -> [a] -> b) -> OneOrMore a -> [a] -> b
57+destructLeft :: (a -> [a] -> b) -> OneOrMore a -> [a] -> b
78−destructHelp func oneOrMore xs =
58+destructLeft func oneOrMore xs =
79 case oneOrMore of
59 case oneOrMore of
83 More a b ->
63 More a b ->
84− destructHelp func a (toListHelp b xs)
64+ destructLeft func a (destructRight b xs)
67+destructRight :: OneOrMore a -> [a] -> [a]
68+destructRight oneOrMore xs =
74+ destructRight a (destructRight b xs)