Я начинаю изучать Haskell, и я не понимаю, что происходит: у меня есть очень простой код:печати очень большие цифры
import System.IO
import Control.Monad
fact n = product [1..n]
main :: IO()
main = do
input_line <- getLine
let m = read input_line :: Int
print (fact m)
return()
В GHCI, когда я пытаюсь
*Main> :load "fact.hs"
[1 of 1] Compiling Main (fact.hs, interpreted)
Ok, modules loaded: Main.
*Main> main
4500
0
но
*Main> fact 4500
2274299510944531831673.....
Что мне не хватает? Спасибо за любые объяснения.
'Int' - это ограниченный размер. Ghci не выполняет функции Unger 'Interger'. –
Некоторые советы по стилю: ** 1. ** 'return()' обычно не требуется ** 2. ** большинство Haskellers имеют небольшое предпочтение 'print $ fact m' over' print (fact m) '** 3. ** вы всегда должны писать сигнатуры типов для определения верхнего уровня. – leftaroundabout
Хорошо, спасибо за эти советы – joel76