Требуется экземпляр дробного int, простая функция

Я хочу простое целочисленное деление, и я получаю это в объятиях

Hugs> :load prog.hs
ERROR file:prog.hs:30 - Instance of Fractional Int required for definition of lastf

Моя простая программа выглядит так

lastf::Int->Int
lastf 1 = 0 
lastf n = if even n then (2*n+1) else (n/2)

Что я делаю неправильно? Как я могу просто сделать деление?

1 ответ

Решение

Если вы хотите сделать целочисленное деление, просто используйте div:

lastf n = if even n then 2 * n + 1 else n `div` 2

Причина в том, что Int не реализует / оператор, он зарезервирован для Fractional типы, как Float а также Double, Очевидно, что если вы делаете 3 / 2 и вы хотите 1.5 назад, вы не можете представить это как Int, вам придется использовать Float или же Double (или любой тип, который реализует Fractional класс типов).

Другие вопросы по тегам