Всем привет... уже довольно давно начал интересоваться функциональными и почти функциональными языками программирования... можно сказать освоил азы lisp и erlang, решил подробнее остонавиться на haskell, пока только "напосмотреть"...
мой первый опыт так сказать:
$ cat qwe.hs module Main where
factorial n = fac n 1
fac 0 acc = acc
fac n acc = fac (n - 1) (n * acc)
main = factorial 100000
при попытке скомпилировать это, получаю следущее:
$ ghc qwe.hs -o qwe
qwe.hs:9:17: No instance for (Num (IO a)) arising from the literal `100000' at qwe.hs:9:17-22 Possible fix: add an instance declaration for (Num (IO a)) In the first argument of `factorial', namely `100000' In the expression: factorial 100000 In the definition of `main': main = factorial 100000
мой естественный вопрос - что я делаю не так? :)
понятно, я невежественнен, и не дочитал основы haskell, не въехал до конца в систему типов и т.д... но обещаю, я исправлюсь :) вы только мне конкретно с этим примером объясните, как оно должно выглядеть?
если написать
main = print (factorial 100000)
то оно работает, но я именно не хочу выводить результат, как это сделать?
Зарание всем спасибо!