Проверить Существенно количественно определенные типы .
Один из способов решить эту проблему - определить новый тип данных
data NumBox = forall n. Num n => NumBox n
Вам понадобится -XExistentialQuantification
, чтобы заставить это работать.
Теперь вы можете написать что-то вроде
getN :: NumBox
getN = NumBox (5.0 :: Double)
Вы также можете определить NumBox
-лист как
let n3 = [NumBox (4.0 :: Double), NumBox (1 :: Integer), NumBox (1 :: Int) ]