2

我一直在玩弄这个缩进有一段时间了,但它看起来对我来说是正确的。谁能看到我哪里出错了?

deposit :: NodeType -> NodeType -> Amount -> Node
deposit (Income income) (Account bal grow) amount =
  Account (bal + transfer) grow where transfer = case amount of
    AbsoluteAmount amount  -> min income amount -- This is line 34
    RelativeAmount percent -> (min 1.0 percent) * income

我收到的错误消息是:

Prelude> :load BudgetFlow.hs 
[1 of 1] Compiling Main             ( BudgetFlow.hs, interpreted )

BudgetFlow.hs:34:5: parse error (possibly incorrect indentation)
Failed, modules loaded: none.

第 34 行(出现解析错误的行)是开始的行AbsoluteAmount(我在上面用注释标记了它)。我尝试将case语句放在单独的行上,并将这两种情况完全缩进到of关键字的右侧,但我仍然收到相同的错误消息。非常感谢您的帮助!

4

1 回答 1

4

where子句放在自己的行上。

deposit :: NodeType -> NodeType -> Amount -> Node
deposit (Income income) (Account bal grow) amount = Account (bal + transfer) grow
    where
        transfer = case amount of
            AbsoluteAmount amount  -> min income amount -- This is line 34
            RelativeAmount percent -> (min 1.0 percent) * income
于 2012-06-21T15:18:21.973 回答