2010-05-22 3 views
5

Я пытаюсь сделать следующее:Haskell - как лить типы?

10 ** length xs * x 

, но я получаю:

Нет экземпляра для (Floating Int), возникающий от использования `**»

+3

О, и просто чтобы быть предельно ясным: в общем, вы не «бросаете» типы в Haskell. Существуют различные способы конвертации между типами, но нет «типов» в обычном смысле. –

ответ

8

You может использовать ^ для повышения до целой мощности. Здесь нет необходимости конвертировать в float.

+0

Спасибо, кажется, работает :) – MMM

6

Кроме @sepp2k's answer, если вам как-то действительно нужно преобразовать из целого числа в некоторые другие типы Num, используйте fromIntegral.

-- # fromIntegral :: (Integral a, Num b) => a -> b 

10 ** fromIntegral (length xs) * x 
Смежные вопросы