The same as C way. You can import Data.Bits and can use the functions.

Prelude> import Data.Bits
Prelude Data.Bits> Data.Bits.
Data.Bits..&.   Data.Bits.bitDefault       Data.Bits.complementBit
Data.Bits.rotate           Data.Bits.shift
Data.Bits.testBitDefault
Data.Bits..|.    Data.Bits.bitSize          Data.Bits.isSigned
Data.Bits.rotateL          Data.Bits.shiftL           Data.Bits.unsafeShiftL
Data.Bits.Bits    Data.Bits.clearBit         Data.Bits.popCount
Data.Bits.rotateR          Data.Bits.shiftR           Data.Bits.unsafeShiftR
Data.Bits.bit              Data.Bits.complement
Data.Bits.popCountDefault  Data.Bits.setBit
Data.Bits.testBit          Data.Bits.xor
Prelude Data.Bits> (.&.) 1 2
0
Prelude Data.Bits> (.&.) 2 2
2


I wrote a minimum spanning tree code and rather than maintaining the list
of visited nodes, I took a Integer  because of arbitrary precision and set
the bits  accordingly.

visited :: Int -> Integer -> ( Bool , Integer )
visited x vis = ( t == 0 , vis' ) where
            t = ( B..&. ) ( B.shiftL ( 1 :: Integer ) x ) vis
            vis' = ( B..|. ) ( B.shiftL ( 1 :: Integer ) x ) vis


Mukesh



On Tue, Feb 19, 2013 at 8:41 PM, Branimir Maksimovic <bm...@hotmail.com>wrote:

>  In C usual way is to set some bit in integer variable by shifting or
> oring,
> and than check flag integer variable by anding with particular flag value.
> What is Haskell way?
>
> Thanks.
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to