为什么不是代码
import Data.Bits
a = (.&.) 6 9
我
9
有人可以向我解释为什么这不起作用。欢呼!
AND
9=0
0110 = 6
&
1001 = 9
-----
0000 = 0
(.&.)
)运算符要求两个操作数要明确传递。在您的代码中:
import Data.Bits
a = (.&.) 6 9
您以不正确的方式将(.&.) 6 9
视为功能应用程序。让我们分解一下:理解
(.&.)
是infixa = (.&.) 6 9
时,Haskell将
(.&.) 6
解释为部分应用函数,它会期望另一个参数,但会出现错误。
9
import Data.Bits
a = 6 .&. 9 -- Correct way
和6
9
here,
import Data.Bits
a = (.&.) 6 9 -- Incorrect
a = (.&.) 6 9 -- Correct
明确将其视为一个功能,并且可以按预期工作。输出
( .&. )
main = print a -- This will print 0
而不是
0
?9
,正确的输出是
6 = 110 (binary)
9 = 1001 (binary)
------------
6 .&. 9 = 0000 (binary) = 0 (decimal)
0
。