Я думаю, что Python является хорошей альтернативой; это - очень мощный язык, также можно легко сделать много вещей (не скучный вообще).
maxNonInfiniteFloat :: RealFloat a => a -> a
maxNonInfiniteFloat a = encodeFloat m n where
b = floatRadix a
e = floatDigits a
(_, e') = floatRange a
m = b ^ e - 1
n = e' - e
minPositiveFloat :: RealFloat a => a -> a
minPositiveFloat a = encodeFloat 1 $ fst (floatRange a) - floatDigits a
GHC.Float имеет функцию [floatRange] [2]
:
floatRange :: a -> (Int, Int) Source
постоянная функция, возвращающая наименьшее и наибольшее значения, которые может принять экспонента
, что должно быть тем, что вы хотите.