David Menendez <[email protected]> writes:
> That depends on what "outside the Enum range" means. You'll get an
> exception if you somehow get an Int key in the map which doesn't
> correspond to any value in the enum, but you don't get an exception if
> you try to pass in, say, a large Integer.
> Prelude> fromEnum (2^32)
> 0
Yes, but:
Prelude Data.Int> fromEnum (2^32 :: Int64)
*** Exception: Enum.fromEnum{Int64}: value (4294967296) is outside of Int's
bounds (-2147483648,2147483647)
so apparently, different Enum instances deal with this differently.
>From GHC.Num:
instance Enum Integer where
[...]
fromEnum n = I# (toInt# n)
>From GHC.Int:
instance Enum Int64 where
[...]
fromEnum x@(I64# x#)
| x >= fromIntegral (minBound::Int) && x <= fromIntegral
(maxBound::Int)
= I# (int64ToInt# x#)
| otherwise = fromEnumError "Int64" x
-k
--
If I haven't seen further, it is by standing in the footprints of giants
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe