Copyright | (C) 2012-16 Edward Kmett |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | Edward Kmett <ekmett@gmail.com> |
Stability | experimental |
Portability | LiberalTypeSynonyms |
Safe Haskell | None |
Language | Haskell2010 |
Synopsis
- (.|.~) :: Bits a => ASetter s t a a -> a -> s -> t
- (.&.~) :: Bits a => ASetter s t a a -> a -> s -> t
- (<.|.~) :: Bits a => LensLike ((,) a) s t a a -> a -> s -> (a, t)
- (<.&.~) :: Bits a => LensLike ((,) a) s t a a -> a -> s -> (a, t)
- (<<.|.~) :: Bits a => Optical' (->) q ((,) a) s a -> a -> q s (a, s)
- (<<.&.~) :: Bits a => Optical' (->) q ((,) a) s a -> a -> q s (a, s)
- (.|.=) :: (MonadState s m, Bits a) => ASetter' s a -> a -> m ()
- (.&.=) :: (MonadState s m, Bits a) => ASetter' s a -> a -> m ()
- (<.|.=) :: (MonadState s m, Bits a) => LensLike' ((,) a) s a -> a -> m a
- (<.&.=) :: (MonadState s m, Bits a) => LensLike' ((,) a) s a -> a -> m a
- (<<.|.=) :: (MonadState s m, Bits a) => LensLike' ((,) a) s a -> a -> m a
- (<<.&.=) :: (MonadState s m, Bits a) => LensLike' ((,) a) s a -> a -> m a
- bitAt :: Bits b => Int -> IndexedLens' Int b Bool
- bits :: (Num b, Bits b) => IndexedTraversal' Int b Bool
- byteAt :: (Integral b, Bits b) => Int -> IndexedLens' Int b Word8
- bytewise :: (Integral b, Bits b) => IndexedTraversal' Int b Word8
Documentation
(<.|.~) :: Bits a => LensLike ((,) a) s t a a -> a -> s -> (a, t) infixr 4 #
Bitwise .|.
the target(s) of a Lens
(or Traversal
), returning the result
(or a monoidal summary of all of the results).
>>>
_2 <.|.~ 6 $ ("hello",3)
(7,("hello",7))
(<.|.~
) ::Bits
a =>Iso
s t a a -> a -> s -> (a, t) (<.|.~
) ::Bits
a =>Lens
s t a a -> a -> s -> (a, t) (<.|.~
) :: (Bits
a,Monoid
a) =>Traversal
s t a a -> a -> s -> (a, t)
(<.&.~) :: Bits a => LensLike ((,) a) s t a a -> a -> s -> (a, t) infixr 4 #
Bitwise .&.
the target(s) of a Lens
or Traversal
, returning the result
(or a monoidal summary of all of the results).
>>>
_2 <.&.~ 7 $ ("hello",254)
(6,("hello",6))
(<.&.~
) ::Bits
a =>Iso
s t a a -> a -> s -> (a, t) (<.&.~
) ::Bits
a =>Lens
s t a a -> a -> s -> (a, t) (<.&.~
) :: (Bits
a,Monoid
a) =>Traversal
s t a a -> a -> s -> (a, t)
(<<.|.~) :: Bits a => Optical' (->) q ((,) a) s a -> a -> q s (a, s) infixr 4 #
Bitwise .|.
the target(s) of a Lens
or Traversal
, and return the
original value, or a monoidal summary of the original values.
When you do not need the old value, (.|.~
) is more flexible.
>>>
_2 <<.|.~ 6 $ ("hello", 3)
(3,("hello",7))
(<<.|.~
) ::Bits
a =>Iso
s t a a -> a -> s -> (a, t) (<<.|.~
) ::Bits
a =>Lens
s t a a -> a -> s -> (a, t) (<<.|.~
) :: (Bits
a,Monoid
a) =>Traversal
s t a a -> a -> s -> (a, t)
(<<.&.~) :: Bits a => Optical' (->) q ((,) a) s a -> a -> q s (a, s) infixr 4 #
Bitwise .&.
the target(s) of a Lens
or Traversal
, and return the
original value, or a monoidal summary of the original values.
When you do not need the old value, (.&.~
) is more flexible.
>>>
_2 <<.&.~ 7 $ ("hello", 254)
(254,("hello",6))
(<<.&.~
) ::Bits
a =>Iso
s t a a -> a -> s -> (a, t) (<<.&.~
) ::Bits
a =>Lens
s t a a -> a -> s -> (a, t) (<<.&.~
) :: (Bits
a,Monoid
a) =>Traversal
s t a a -> a -> s -> (a, t)
(.|.=) :: (MonadState s m, Bits a) => ASetter' s a -> a -> m () infix 4 #
Modify the target(s) of a Lens'
, Setter
or Traversal
by computing its bitwise .|.
with another value.
>>>
execState (do _1 .|.= 15; _2 .|.= 3) (7,7)
(15,7)
(.|.=
) :: (MonadState
s m,Bits
a) =>Setter'
s a -> a -> m () (.|.=
) :: (MonadState
s m,Bits
a) =>Iso'
s a -> a -> m () (.|.=
) :: (MonadState
s m,Bits
a) =>Lens'
s a -> a -> m () (.|.=
) :: (MonadState
s m,Bits
a) =>Traversal'
s a -> a -> m ()
(.&.=) :: (MonadState s m, Bits a) => ASetter' s a -> a -> m () infix 4 #
Modify the target(s) of a Lens'
, Setter'
or Traversal'
by computing its bitwise .&.
with another value.
>>>
execState (do _1 .&.= 15; _2 .&.= 3) (7,7)
(7,3)
(.&.=
) :: (MonadState
s m,Bits
a) =>Setter'
s a -> a -> m () (.&.=
) :: (MonadState
s m,Bits
a) =>Iso'
s a -> a -> m () (.&.=
) :: (MonadState
s m,Bits
a) =>Lens'
s a -> a -> m () (.&.=
) :: (MonadState
s m,Bits
a) =>Traversal'
s a -> a -> m ()
(<.|.=) :: (MonadState s m, Bits a) => LensLike' ((,) a) s a -> a -> m a infix 4 #
Modify the target(s) of a Lens'
, (or Traversal
) by computing its bitwise .|.
with another value,
returning the result (or a monoidal summary of all of the results traversed).
>>>
runState (_1 <.|.= 7) (28,0)
(31,(31,0))
(<.|.=
) :: (MonadState
s m,Bits
a) =>Lens'
s a -> a -> m a (<.|.=
) :: (MonadState
s m,Bits
a,Monoid
a) =>Traversal'
s a -> a -> m a
(<.&.=) :: (MonadState s m, Bits a) => LensLike' ((,) a) s a -> a -> m a infix 4 #
Modify the target(s) of a Lens'
(or Traversal'
) by computing its bitwise .&.
with another value,
returning the result (or a monoidal summary of all of the results traversed).
>>>
runState (_1 <.&.= 15) (31,0)
(15,(15,0))
(<.&.=
) :: (MonadState
s m,Bits
a) =>Lens'
s a -> a -> m a (<.&.=
) :: (MonadState
s m,Bits
a,Monoid
a) =>Traversal'
s a -> a -> m a
(<<.|.=) :: (MonadState s m, Bits a) => LensLike' ((,) a) s a -> a -> m a infix 4 #
Modify the target(s) of a Lens'
, (or Traversal'
) by computing its
bitwise .|.
with another value, returning the original value (or a
monoidal summary of all the original values).
When you do not need the old value, (.|.=
) is more flexible.
>>>
runState (_1 <<.|.= 7) (28,0)
(28,(31,0))
(<<.|.=
) :: (MonadState
s m,Bits
a) =>Lens'
s a -> a -> m a (<<.|.=
) :: (MonadState
s m,Bits
a,Monoid
a) =>Traversal'
s a -> a -> m a
(<<.&.=) :: (MonadState s m, Bits a) => LensLike' ((,) a) s a -> a -> m a infix 4 #
Modify the target(s) of a Lens'
, (or Traversal'
) by computing its
bitwise .&.
with another value, returning the original value (or a
monoidal summary of all the original values).
When you do not need the old value, (.&.=
) is more flexible.
>>>
runState (_1 <<.&.= 15) (31,0)
(31,(15,0))
(<<.&.=
) :: (MonadState
s m,Bits
a) =>Lens'
s a -> a -> m a (<<.&.=
) :: (MonadState
s m,Bits
a,Monoid
a) =>Traversal'
s a -> a -> m a
bytewise :: (Integral b, Bits b) => IndexedTraversal' Int b Word8 #
Traverse over all the bytes in an integral type, from the low end.
The byte position is available as the index.
>>>
toListOf bytewise (1312301580 :: Word32)
[12,34,56,78]
If you supply this an Integer
, the result will be an infinite Traversal
,
which can be productively consumed, but not reassembled.
Why isn't this function called bytes
to match bits
? Alas, there
is already a function by that name in Data.ByteString.Lens.