我從終端運行ghci。Haskell不尋常的問題
在我的源文件中,我定義
factorial :: Int -> Int
factorial n = product [1 .. n]
當我運行它,我得到的結果
factorial 13 = 1932053504
product [1 .. 13] = 6227020800
對於任何數量小於13,結果是正確的。但是,對於任何大於或等於12的數字,這兩個結果不一致。
另外,如果我定義這個函數的遞歸:
factorial' :: Int -> Int
factorial' 0 = 1
factorial' (n + 1) = (n + 1) * factorial' n
我仍然得到
factorial' 13 = 1932053504
如果你瞭解這裏發生,那將是非常有益的。謝謝
順便說一句,注意,當哈斯克爾需要一個具體類型的表達式這可能是多態的,它使用一個默認系統,除其他外,它將爲任何整數類型選擇「Integer」。所以'product [1..13]'具有不同的類型。 –
不要忘記接受通過單擊旁邊複選標記來幫助您的答案。 – rampion