Я пытаюсь сделать следующее:Haskell - как лить типы?
10 ** length xs * x
, но я получаю:
Нет экземпляра для (Floating Int), возникающий от использования `**»
Я пытаюсь сделать следующее:Haskell - как лить типы?
10 ** length xs * x
, но я получаю:
Нет экземпляра для (Floating Int), возникающий от использования `**»
You может использовать ^
для повышения до целой мощности. Здесь нет необходимости конвертировать в float.
Спасибо, кажется, работает :) – MMM
Кроме @sepp2k's answer, если вам как-то действительно нужно преобразовать из целого числа в некоторые другие типы Num, используйте fromIntegral
.
-- # fromIntegral :: (Integral a, Num b) => a -> b
10 ** fromIntegral (length xs) * x
О, и просто чтобы быть предельно ясным: в общем, вы не «бросаете» типы в Haskell. Существуют различные способы конвертации между типами, но нет «типов» в обычном смысле. –