Skip to content

Commit 2589ee7

Browse files
committed
Updates for 0.7
1 parent 43b15c0 commit 2589ee7

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/Data/Enum.purs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@ module Data.Enum
1717
, enumFromThenTo
1818
) where
1919

20+
import Prelude
21+
2022
import Data.Maybe
2123
import Data.Either
2224
import Data.Tuple
2325
import Data.Char
2426
import Data.Maybe.Unsafe
2527
import Data.Unfoldable
26-
import Data.Int (Int(), fromNumber)
28+
import Data.Int (fromNumber)
2729

2830
newtype Cardinality a = Cardinality Int
2931

@@ -81,26 +83,26 @@ defaultFromEnum pred' e = maybe zero (\prd -> defaultFromEnum pred' prd + one) (
8183
-- | Property: ```fromEnum a = a', fromEnum b = b' => forall e', a' <= e' <= b': Exists e: toEnum e' = Just e```
8284
-- |
8385
-- | Following from the propery of `intFromTo`, we are sure all elements in `intFromTo (fromEnum a) (fromEnum b)` are `Just`s.
84-
enumFromTo :: forall a. (Enum a) => a -> a -> [a]
86+
enumFromTo :: forall a. (Enum a) => a -> a -> Array a
8587
enumFromTo a b = (toEnum >>> fromJust) <$> intFromTo a' b'
8688
where a' = fromEnum a
8789
b' = fromEnum b
8890

8991
-- | `[a,b..c]`
9092
-- |
9193
-- | Correctness for using `fromJust` is the same as for `enumFromTo`.
92-
enumFromThenTo :: forall a. (Enum a) => a -> a -> a -> [a]
94+
enumFromThenTo :: forall a. (Enum a) => a -> a -> a -> Array a
9395
enumFromThenTo a b c = (toEnum >>> fromJust) <$> intStepFromTo (b' - a') a' c'
9496
where a' = fromEnum a
9597
b' = fromEnum b
9698
c' = fromEnum c
9799

98100
-- | Property: ```forall e in intFromTo a b: a <= e <= b```
99-
intFromTo :: Int -> Int -> [Int]
101+
intFromTo :: Int -> Int -> Array Int
100102
intFromTo = intStepFromTo one
101103

102104
-- | Property: ```forall e in intStepFromTo step a b: a <= e <= b```
103-
intStepFromTo :: Int -> Int -> Int -> [Int]
105+
intStepFromTo :: Int -> Int -> Int -> Array Int
104106
intStepFromTo step from to =
105107
unfoldr (\e ->
106108
if e <= to
@@ -111,15 +113,15 @@ intStepFromTo step from to =
111113
-- | ## Instances
112114

113115
instance enumChar :: Enum Char where
114-
cardinality = Cardinality (fromNumber (65535 + 1))
116+
cardinality = Cardinality 65536
115117
succ = defaultSucc charToEnum charFromEnum
116118
pred = defaultPred charToEnum charFromEnum
117119
toEnum = charToEnum
118120
fromEnum = charFromEnum
119121

120122
-- | To avoid a compiler bug - can't pass self-class functions, workaround: need to make a concrete function.
121123
charToEnum :: Int -> Maybe Char
122-
charToEnum n | n >= zero && n <= (fromNumber 65535) = Just $ fromCharCode n
124+
charToEnum n | n >= 0 && n <= 65535 = Just $ fromCharCode n
123125
charToEnum _ = Nothing
124126

125127
charFromEnum :: Char -> Int
@@ -146,7 +148,7 @@ maybeCardinality :: forall a. (Enum a) => Cardinality a -> Cardinality (Maybe a)
146148
maybeCardinality c = Cardinality $ one + (runCardinality c)
147149

148150
instance enumBoolean :: Enum Boolean where
149-
cardinality = Cardinality (fromNumber 2)
151+
cardinality = Cardinality 2
150152
succ = booleanSucc
151153
pred = booleanPred
152154
toEnum = defaultToEnum booleanSucc bottom

0 commit comments

Comments
 (0)