Skip to content

Commit c8d1b65

Browse files
committed
Use enumFromTo for genBoundedEnum
1 parent 30e4170 commit c8d1b65

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

src/Data/Enum/Gen.purs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@ module Data.Enum.Gen where
22

33
import Prelude
44

5-
import Control.Monad.Gen (class MonadGen, chooseInt)
6-
import Data.Enum (class BoundedEnum, fromEnum, toEnum)
7-
import Partial.Unsafe (unsafePartial)
8-
import Data.Maybe (fromJust)
5+
import Control.Monad.Gen (class MonadGen, elements)
6+
import Data.Enum (class BoundedEnum, enumFromTo)
7+
import Data.NonEmpty ((:|))
98

10-
-- | Create a random generator for a finite enumeration. `toEnum i` must be
11-
-- | well-behaved: it must return a `Just` value for all `Int`s between
12-
-- | `fromEnum bottom` and `fromEnum top`.
9+
-- | Create a random generator for a finite enumeration.
1310
genBoundedEnum :: forall m a. MonadGen m => BoundedEnum a => m a
1411
genBoundedEnum =
15-
unsafePartial fromJust <<< toEnum
16-
<$> chooseInt (fromEnum (bottom :: a)) (fromEnum (top :: a))
12+
let possibilities = enumFromTo (bottom :: a) (top :: a) :: Array a
13+
in elements (bottom :| possibilities)

0 commit comments

Comments
 (0)