所以我有這個簡單的Haskell功能:簡單哈斯克爾階乘函數不編譯
fact :: (Num a) => a -> a
fact 0 = 1
fact n = n * fact (n - 1)
,當我嘗試用GHCI編譯它,我得到一個錯誤:
test.hs:2:6: error:
• Could not deduce (Eq a) arising from the literal ‘0’
from the context: Num a
bound by the type signature for:
fact :: Num a => a -> a
at test.hs:1:1-25
Possible fix:
add (Eq a) to the context of
the type signature for:
fact :: Num a => a -> a
• In the pattern: 0
In an equation for ‘fact’: fact 0 = 1
Failed, modules loaded: none.
你看,我知道寫這個函數的更好的方法存在,但我不在乎。我只想讓這個函數編譯。但我不能那樣做。我的印象是,如果某個東西是一個數字,它必定是方程式a的一個實例,因此編譯器提出的可能的修正方案是錯誤的。
我該如何獲得此代碼進行編譯?
使用編譯器的修復建議。 –