在Haskell中打印时将Float格式化为Int

Ric*_*yes 6 printing format int haskell

这个Haskell程序打印"1.0"如何让它打印"1"?

fact 0 = 1
fact x = x * fact (x-1)

place m n = (fact m) / (fact n) * (fact (m-n))

main = do   
   print (place 0 0)
Run Code Online (Sandbox Code Playgroud)

red*_*neb 10

通过使用该/操作,您要求haskell使用小数数据类型.在这种情况下,您可能不希望这样.优选使用诸如Int或的整体类型Integer.所以我建议执行以下操作:1.为fact函数添加类型声明,例如fact :: Integer -> Integer 2.使用quot而不是/.

所以你的代码应该是这样的:

fact :: Integer -> Integer
fact 0 = 1
fact x = x * fact (x-1)

place :: Integer -> Integer -> Integer
place m n = (fact m) `quot` (fact n) * (fact (m-n))

main = do   
   print (place 0 0)
Run Code Online (Sandbox Code Playgroud)

另外,正如@leftaroundabout指出的那样,您可能希望使用更好的算法来计算这些二项式数.