我的阶乘函数似乎适用于 1 到 6 之间的数字,但不适用于比 6 大得多的数字,例如以 21 开头!结果是否定的。
我不明白为什么。这是我的功能:
factorial :: Int -> Int
factorial 0 = 1
factorial 1 = 1
factorial num = num * factorial( num - 1)
Run Code Online (Sandbox Code Playgroud)
这是我的二项式系数函数,它调用我的阶乘函数(也许问题来自这个?):
binomialCoef :: Int -> Int -> Int
binomialCoef n 1 = n
binomialCoef n k = factorial n `div`
((factorial k) * factorial (n - k))
Run Code Online (Sandbox Code Playgroud) 我试图在打开文件时做一些错误处理,以确保文件存在/可读。这是我的尝试:
init struct = do
str <- try $ readFile (filePath struct)
case str of
Left exception -> print exception
Right content -> execute content struct
Run Code Online (Sandbox Code Playgroud)
(Struct 是一种数据结构,我在其中保留文件路径和其他变量)。我收到此错误:
使用 'try' 引起的不明确的类型变量 'a0' 阻止了约束 '(Exception a0)' 的解决。可能的解决方法:使用类型注释来指定 'a0' 应该是什么。
但我只是不明白如何解决它。
haskell ×2