【发布时间】:2014-09-17 23:35:58
【问题描述】:
说要计算函数:
f (x,y) = ((x `mod` 3)+(y `mod` 3)) `mod` 2
然后,如果手动扩展f (-1,0),则会得到:
((-1 `mod` 3)+(0 `mod` 3)) `mod` 2
1
如果使用内联函数,结果是:
let f (x,y) = ((x `mod` 3)+(y `mod` 3)) `mod` 2 in f (-1,0)
0
当存储的函数没有产生预期的结果时会发生什么?
我认为这是因为f 使用Integral 而不是Int?
【问题讨论】:
-
顺便说一句(实际上与问题密切相关):您不需要所有这些括号;
mod自动绑定得更紧密(infixl 7 mod与infixl 6 +)。((-1)`mod`3 + 0`mod`3) `mod` 2你会没事的。 -
@leftaroundabout: 是的,添加括号是为了追查问题:(.