другие вопросы и проблемы, хотя они похожи, не совсем такие. в этой конкретной ошибке компилятора, Haskell GHC не будет компилировать следующий код по следующей причине. Я совсем не понимаю - код довольно прямолинейный.Нет экземпляра для (Ord int), возникающего из-за использования `> ', Haskell
--factorial
fact :: int -> int
fact 0 = 1
fact n | n > 0 = n * fact(n - 1)
main = print (fact 10)
(ошибка :)
No instance for (Ord int) arising from a use of `>'
Possible fix:
add (Ord int) to the context of
the type signature for fact :: int -> int
In the expression: n > 0
In a stmt of a pattern guard for
an equation for `fact':
n > 0
In an equation for `fact': fact n | n > 0 = n * fact (n - 1)
Можете ли вы объяснить эту проблему для меня?
Почему не 'Num int => int -> int'? :) – Yuras
@Yuras Ммм, это лучше - я бы предпочел «Интеграл», но хороший намек! –
* лицоpalm * спасибо. Это моя первая программа (которая содержит функцию), которую я когда-либо писал и компилировал с помощью Haskell. – bimmo