Data.Bool

base-4.10.1.0: Basic libraries

Copyright | (c) The University of Glasgow 2001
License | BSD-style (see the file libraries/base/LICENSE)
Maintainer | libraries@haskell.org
Stability | experimental
Portability | portable
Safe Haskell | Trustworthy
Language | Haskell2010

Data.Bool

Contents

- Booleans
  - Operations

Description

The `Bool` type and related functions.

Synopsis

- data Bool :: *
  - = False
  - | True
- (&&) :: Bool -> Bool -> Bool
- (||) :: Bool -> Bool -> Bool
- not :: Bool -> Bool
- otherwise :: Bool
- bool :: a -> a -> Bool -> a

# Booleans

data Bool :: * Source #

Constructors

False |
True |

Instances

Bounded Bool # | Since: 2.1
Methods minBound :: Bool Source # maxBound :: Bool Source #
Enum Bool # | Since: 2.1
Methods succ :: Bool -> Bool Source # pred :: Bool -> Bool Source # toEnum :: Int -> Bool Source # fromEnum :: Bool -> Int Source # enumFrom :: Bool -> [Bool] Source # enumFromThen :: Bool -> Bool -> [Bool] Source # enumFromTo :: Bool -> Bool -> [Bool] Source # enumFromThenTo :: Bool -> Bool -> Bool -> [Bool] Source #
Eq Bool |
Methods (==) :: Bool -> Bool -> Bool Source # (/=) :: Bool -> Bool -> Bool Source #
Data Bool # | Since: 4.0.0.0
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Bool -> c Bool Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Bool Source # toConstr :: Bool -> Constr Source # dataTypeOf :: Bool -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Bool) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Bool) Source # gmapT :: (forall b. Data b => b -> b) -> Bool -> Bool Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Bool -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Bool -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Bool -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Bool -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Bool -> m Bool Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Bool -> m Bool Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Bool -> m Bool Source #
Ord Bool |
Methods compare :: Bool -> Bool -> Ordering Source # (<) :: Bool -> Bool -> Bool Source # (<=) :: Bool -> Bool -> Bool Source # (>) :: Bool -> Bool -> Bool Source # (>=) :: Bool -> Bool -> Bool Source # max :: Bool -> Bool -> Bool Source # min :: Bool -> Bool -> Bool Source #
Read Bool # | Since: 2.1
Methods readsPrec :: Int -> ReadS Bool Source # readList :: ReadS [Bool] Source # readPrec :: ReadPrec Bool Source # readListPrec :: ReadPrec [Bool] Source #
Show Bool # |
Methods showsPrec :: Int -> Bool -> ShowS Source # show :: Bool -> String Source # showList :: [Bool] -> ShowS Source #
Ix Bool # | Since: 2.1
Methods range :: (Bool, Bool) -> [Bool] Source # index :: (Bool, Bool) -> Bool -> Int Source # unsafeIndex :: (Bool, Bool) -> Bool -> Int inRange :: (Bool, Bool) -> Bool -> Bool Source # rangeSize :: (Bool, Bool) -> Int Source # unsafeRangeSize :: (Bool, Bool) -> Int
Generic Bool # |
Associated Types type Rep Bool :: * -> * Source # Methods from :: Bool -> Rep Bool x Source # to :: Rep Bool x -> Bool Source #
FiniteBits Bool # | Since: 4.7.0.0
Methods finiteBitSize :: Bool -> Int Source # countLeadingZeros :: Bool -> Int Source # countTrailingZeros :: Bool -> Int Source #
Bits Bool # | Interpret `Bool` as 1-bit bit-field Since: 4.7.0.0
Methods (.&.) :: Bool -> Bool -> Bool Source # (.|.) :: Bool -> Bool -> Bool Source # xor :: Bool -> Bool -> Bool Source # complement :: Bool -> Bool Source # shift :: Bool -> Int -> Bool Source # rotate :: Bool -> Int -> Bool Source # zeroBits :: Bool Source # bit :: Int -> Bool Source # setBit :: Bool -> Int -> Bool Source # clearBit :: Bool -> Int -> Bool Source # complementBit :: Bool -> Int -> Bool Source # testBit :: Bool -> Int -> Bool Source # bitSizeMaybe :: Bool -> Maybe Int Source # bitSize :: Bool -> Int Source # isSigned :: Bool -> Bool Source # shiftL :: Bool -> Int -> Bool Source # unsafeShiftL :: Bool -> Int -> Bool Source # shiftR :: Bool -> Int -> Bool Source # unsafeShiftR :: Bool -> Int -> Bool Source # rotateL :: Bool -> Int -> Bool Source # rotateR :: Bool -> Int -> Bool Source # popCount :: Bool -> Int Source #
Storable Bool # | Since: 2.1
Methods sizeOf :: Bool -> Int Source # alignment :: Bool -> Int Source # peekElemOff :: Ptr Bool -> Int -> IO Bool Source # pokeElemOff :: Ptr Bool -> Int -> Bool -> IO () Source # peekByteOff :: Ptr b -> Int -> IO Bool Source # pokeByteOff :: Ptr b -> Int -> Bool -> IO () Source # peek :: Ptr Bool -> IO Bool Source # poke :: Ptr Bool -> Bool -> IO () Source #
type Rep Bool # |
type Rep Bool = D1 * (MetaData "Bool" "GHC.Types" "ghc-prim" False) ((:+:) * (C1 * (MetaCons "False" PrefixI False) (U1 *)) (C1 * (MetaCons "True" PrefixI False) (U1 *)))
type (==) Bool a b # |
type (==) Bool a b

## Operations

(&&) :: Bool -> Bool -> Bool infixr 3 Source #

Boolean "and"

(||) :: Bool -> Bool -> Bool infixr 2 Source #

Boolean "or"

not :: Bool -> Bool Source #

Boolean "not"

otherwise :: Bool Source #

`otherwise` is defined as the value `True`. It helps to make guards more readable. eg.

     f x | x < 0     = ...
         | otherwise = ...

bool :: a -> a -> Bool -> a Source #

Case analysis for the `Bool` type. ``bool` x y p` evaluates to `x` when `p` is `False`, and evaluates to `y` when `p` is `True`.

This is equivalent to `if p then y else x`; that is, one can think of it as an if-then-else construct with its arguments reordered.

#### Examples

Basic usage:

    >>> bool "foo" "bar" True
    "bar"
    >>> bool "foo" "bar" False
    "foo"

Confirm that ``bool` x y p` and `if p then y else x` are equivalent:

    >>> let p = True; x = "bar"; y = "foo"
    >>> bool x y p == if p then y else x
    True
    >>> let p = False
    >>> bool x y p == if p then y else x
    True

Since: 4.7.0.0