在haskell

问题描述 投票:0回答:2

为什么不是代码

import Data.Bits

a = (.&.) 6 9

9
有人可以向我解释为什么这不起作用。欢呼!

haskell bit-manipulation bit
2个回答
36
投票
值6

AND

9=0

0110 = 6 & 1001 = 9 ----- 0000 = 0
    

0
投票
位运算符(

(.&.))运算符要求两个操作数要明确传递。在您的代码中:

import Data.Bits

a = (.&.) 6 9
您以不正确的方式将

(.&.) 6 9
视为功能应用程序。让我们分解一下:
理解


(.&.)infix

函数。
    当您写
  • a = (.&.) 6 9
    时,Haskell将
    (.&.) 6解释为部分应用函数,它会期望另一个参数,但会出现错误。
  • 编写它的纠正方式
    
    
    1。使用infix符号(推荐)
    
    
  • 9

正确地应用了位,并且在import Data.Bits a = 6 .&. 9 -- Correct way

6

之间。 2。使用括号的前缀表示法

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

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.