Data.Bool

base-4.9.0.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 :: TYPE Lifted
  - = False
  - | True
- (&&) :: Bool -> Bool -> Bool
- (||) :: Bool -> Bool -> Bool
- not :: Bool -> Bool
- otherwise :: Bool
- bool :: a -> a -> Bool -> a

# Booleans

data Bool :: TYPE Lifted Source

Constructors

False |
True |

Instances

Bounded Bool |
Methods minBound :: Bool Source maxBound :: Bool Source
Enum Bool |
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 |
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 (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c Bool) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) 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 |
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 |
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 |
Methods finiteBitSize :: Bool -> Int Source countLeadingZeros :: Bool -> Int Source countTrailingZeros :: Bool -> Int Source
Bits Bool |
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 |
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 = D1 (MetaData "Bool" "GHC.Types" "ghc-prim" False) ((:+:) (C1 (MetaCons "False" PrefixI False) U1) (C1 (MetaCons "True" PrefixI False) U1)) |
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