Skip to content

Commit 52e61de

Browse files
authored
Merge pull request #20 from jacereda/master
Fix toEnum for (Maybe a)
2 parents c3cd333 + 6c8fb73 commit 52e61de

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

src/Data/Enum.purs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -193,12 +193,8 @@ instance boundedEnumOrdering :: BoundedEnum Ordering where
193193

194194
instance boundedEnumMaybe :: BoundedEnum a => BoundedEnum (Maybe a) where
195195
cardinality = Cardinality $ unwrap (cardinality :: Cardinality a) + 1
196-
toEnum = to cardinality
197-
where
198-
to :: Cardinality a -> Int -> Maybe (Maybe a)
199-
to _ 0 = Nothing
200-
to (Cardinality ca) n | n <= ca = Just $ toEnum (n - 1)
201-
to _ _ = Nothing
196+
toEnum 0 = pure Nothing
197+
toEnum n = Just <$> toEnum (n - 1)
202198
fromEnum Nothing = 0
203199
fromEnum (Just e) = fromEnum e + 1
204200

test/Test/Data/Enum.purs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import Control.Monad.Eff.Console (CONSOLE, log)
77

88
import Data.Enum (class Enum, class BoundedEnum, defaultToEnum, defaultFromEnum,
99
defaultCardinality, enumFromTo, enumFromThenTo, upFrom,
10-
downFrom)
10+
downFrom, toEnum)
1111
import Data.Maybe (Maybe(..))
1212

1313
import Test.Assert (ASSERT, assert)
@@ -63,3 +63,10 @@ testEnum = do
6363
assert $ downFrom D == [C, B, A]
6464
assert $ downFrom B == [ A]
6565
assert $ downFrom A == [ ]
66+
67+
log "BoundedEnum (Maybe Boolean)"
68+
assert $ toEnum (-1) == Nothing :: Maybe (Maybe Boolean)
69+
assert $ toEnum 0 == Just Nothing :: Maybe (Maybe Boolean)
70+
assert $ toEnum 1 == Just (Just false) :: Maybe (Maybe Boolean)
71+
assert $ toEnum 2 == Just (Just true) :: Maybe (Maybe Boolean)
72+
assert $ toEnum 3 == Nothing :: Maybe (Maybe Boolean)

0 commit comments

Comments
 (0)