У меня довольно общий вопрос о системе типа Haskell. Я пытаюсь ознакомиться с ним, и у меня есть следующая функция:
getN :: Num a => a
getN = 5.0 :: Double
Когда я пытаюсь скомпилировать это, я получаю следующую ошибку:
Couldn't match expected type `a' against inferred type `Double'
`a' is a rigid type variable bound by
the type signature for `getN' at Perlin.hs:15:12
In the expression: 5.0 :: Double
In the definition of `getN': getN = 5.0 :: Double
Как я понимаю, функция настроена на "возврат" типа в классе Num. Двойной в этом классе (http://www.zvon.org/other/haskell/Outputprelude/Num_c.html), поэтому я ожидал, что было бы нормально "вернуть" Double в этом случае.
Может кто-нибудь объяснить это, пожалуйста?