有人可以解释这个错误吗?

时间:2011-08-29 22:01:42

标签: haskell syntax

我是Haskell的新手,并且正在努力解决语法的一些微妙之处。为什么这样很好:

reduceBy a f n
    | n < 2 = (a,f)
    | (a `mod` n) == 0 = 
        reduceBy( floor $ fromIntegral a / fromIntegral n) (f++[n]) n
    | otherwise = (a, f)

虽然这有错误:(无法匹配预期类型`(a,[a])'与推断类型`[a] - &gt; a - &gt;(a,[a])')

reduceBy a f n
    | n < 2 = (a,f)    
    | (a `mod` n) == 0 = 
        reduceBy( floor(fromIntegral a / fromIntegral n) (f++[n]) n )    
    | otherwise = (a, f)

1 个答案:

答案 0 :(得分:8)

你的新右括号来得太晚了。它应该是

... reduceBy (floor(fromIntegral a / fromIntegral n)) ...

$相当弱,但是括号胜过一切。