list-extras-0.2.2: Common not-so-common functions for listsSource codeContentsIndex
Prelude.Listless
Portabilityportable
Stabilitystable
Maintainerwren@community.haskell.org
Description

This module provides the Prelude but removing all the list functions. This is helpful for modules that overload those function names to work for other types.

Be sure to disable the implicit importing of the prelude when you import this one (by passing -fno-implicit-prelude for GHC, or by explicitly importing the prelude with an empty import list for most implementations).

Synopsis
($!) :: (a -> b) -> a -> b
($) :: (a -> b) -> a -> b
(&&) :: Bool -> Bool -> Bool
(.) :: (b -> c) -> (a -> b) -> a -> c
(=<<) :: Monad m => (a -> m b) -> m a -> m b
data Bool
= False
| True
class Bounded a where
minBound :: a
maxBound :: a
data Char
data Double
data Either a b
= Left a
| Right b
class Enum a where
succ :: a -> a
pred :: a -> a
toEnum :: Int -> a
fromEnum :: a -> Int
enumFrom :: a -> [a]
enumFromThen :: a -> a -> [a]
enumFromTo :: a -> a -> [a]
enumFromThenTo :: a -> a -> a -> [a]
class Eq a where
(==) :: a -> a -> Bool
(/=) :: a -> a -> Bool
type FilePath = String
data Float
class Fractional a => Floating a where
pi :: a
exp :: a -> a
sqrt :: a -> a
log :: a -> a
(**) :: a -> a -> a
logBase :: a -> a -> a
sin :: a -> a
tan :: a -> a
cos :: a -> a
asin :: a -> a
atan :: a -> a
acos :: a -> a
sinh :: a -> a
tanh :: a -> a
cosh :: a -> a
asinh :: a -> a
atanh :: a -> a
acosh :: a -> a
class Num a => Fractional a where
(/) :: a -> a -> a
recip :: a -> a
fromRational :: Rational -> a
class Functor f where
fmap :: (a -> b) -> f a -> f b
data IO a
type IOError = IOException
data Int
data Integer
class (Real a, Enum a) => Integral a where
quot :: a -> a -> a
rem :: a -> a -> a
div :: a -> a -> a
mod :: a -> a -> a
quotRem :: a -> a -> (a, a)
divMod :: a -> a -> (a, a)
toInteger :: a -> Integer
data Maybe a
= Nothing
| Just a
class Monad m where
(>>=) :: m a -> (a -> m b) -> m b
(>>) :: m a -> m b -> m b
return :: a -> m a
fail :: String -> m a
class (Eq a, Show a) => Num a where
(+) :: a -> a -> a
(*) :: a -> a -> a
(-) :: a -> a -> a
negate :: a -> a
abs :: a -> a
signum :: a -> a
fromInteger :: Integer -> a
class Eq a => Ord a where
compare :: a -> a -> Ordering
(<) :: a -> a -> Bool
(>=) :: a -> a -> Bool
(>) :: a -> a -> Bool
(<=) :: a -> a -> Bool
max :: a -> a -> a
min :: a -> a -> a
data Ordering
= LT
| EQ
| GT
type Rational = Ratio Integer
class Read a where
readsPrec :: Int -> ReadS a
readList :: ReadS [a]
type ReadS a = String -> [(a, String)]
class (Num a, Ord a) => Real a where
toRational :: a -> Rational
class (RealFrac a, Floating a) => RealFloat a where
floatRadix :: a -> Integer
floatDigits :: a -> Int
floatRange :: a -> (Int, Int)
decodeFloat :: a -> (Integer, Int)
encodeFloat :: Integer -> Int -> a
exponent :: a -> Int
significand :: a -> a
scaleFloat :: Int -> a -> a
isNaN :: a -> Bool
isInfinite :: a -> Bool
isDenormalized :: a -> Bool
isNegativeZero :: a -> Bool
isIEEE :: a -> Bool
atan2 :: a -> a -> a
class (Real a, Fractional a) => RealFrac a where
properFraction :: Integral b => a -> (b, a)
truncate :: Integral b => a -> b
round :: Integral b => a -> b
ceiling :: Integral b => a -> b
floor :: Integral b => a -> b
class Show a where
showsPrec :: Int -> a -> ShowS
show :: a -> String
showList :: [a] -> ShowS
type ShowS = String -> String
type String = [Char]
(^) :: (Num a, Integral b) => a -> b -> a
(^^) :: (Fractional a, Integral b) => a -> b -> a
appendFile :: FilePath -> String -> IO ()
asTypeOf :: a -> a -> a
catch :: IO a -> (IOError -> IO a) -> IO a
const :: a -> b -> a
curry :: ((a, b) -> c) -> a -> b -> c
either :: (a -> c) -> (b -> c) -> Either a b -> c
error :: [Char] -> a
even :: Integral a => a -> Bool
flip :: (a -> b -> c) -> b -> a -> c
fromIntegral :: (Integral a, Num b) => a -> b
fst :: (a, b) -> a
gcd :: Integral a => a -> a -> a
getChar :: IO Char
getContents :: IO String
getLine :: IO String
id :: a -> a
interact :: (String -> String) -> IO ()
ioError :: IOError -> IO a
lcm :: Integral a => a -> a -> a
lex :: ReadS String
maybe :: b -> (a -> b) -> Maybe a -> b
not :: Bool -> Bool
odd :: Integral a => a -> Bool
otherwise :: Bool
print :: Show a => a -> IO ()
putChar :: Char -> IO ()
putStr :: String -> IO ()
putStrLn :: String -> IO ()
read :: Read a => String -> a
readFile :: FilePath -> IO String
readIO :: Read a => String -> IO a
readLn :: Read a => IO a
readParen :: Bool -> ReadS a -> ReadS a
reads :: Read a => ReadS a
realToFrac :: (Real a, Fractional b) => a -> b
seq :: a -> b -> b
showChar :: Char -> ShowS
showParen :: Bool -> ShowS -> ShowS
showString :: String -> ShowS
shows :: Show a => a -> ShowS
snd :: (a, b) -> b
subtract :: Num a => a -> a -> a
uncurry :: (a -> b -> c) -> (a, b) -> c
undefined :: a
until :: (a -> Bool) -> (a -> a) -> a -> a
userError :: String -> IOError
writeFile :: FilePath -> String -> IO ()
(||) :: Bool -> Bool -> Bool
Documentation
($!) :: (a -> b) -> a -> bSource
Strict (call-by-value) application, defined in terms of seq.
($) :: (a -> b) -> a -> bSource

Application operator. This operator is redundant, since ordinary application (f x) means the same as (f $ x). However, $ has low, right-associative binding precedence, so it sometimes allows parentheses to be omitted; for example:

f $ g $ h x = f (g (h x))

It is also useful in higher-order situations, such as map ($ 0) xs, or Data.List.zipWith ($) fs xs.

(&&) :: Bool -> Bool -> BoolSource
Boolean "and"
(.) :: (b -> c) -> (a -> b) -> a -> cSource
Function composition.
(=<<) :: Monad m => (a -> m b) -> m a -> m bSource
Same as >>=, but with the arguments interchanged.
data Bool Source
Constructors
False
True
show/hide Instances
class Bounded a whereSource

The Bounded class is used to name the upper and lower limits of a type. Ord is not a superclass of Bounded since types that are not totally ordered may also have upper and lower bounds.

The Bounded class may be derived for any enumeration type; minBound is the first constructor listed in the data declaration and maxBound is the last. Bounded may also be derived for single-constructor datatypes whose constituent types are in Bounded.

Methods
minBound :: aSource
maxBound :: aSource
show/hide Instances
Bounded Bool
Bounded Char
Bounded Int
Bounded Ordering
Bounded ()
(Bounded a, Bounded b) => Bounded (a, b)
(Bounded a, Bounded b, Bounded c) => Bounded (a, b, c)
(Bounded a, Bounded b, Bounded c, Bounded d) => Bounded (a, b, c, d)
(Bounded a, Bounded b, Bounded c, Bounded d, Bounded e) => Bounded (a, b, c, d, e)
(Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f) => Bounded (a, b, c, d, e, f)
(Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g) => Bounded (a, b, c, d, e, f, g)
(Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h) => Bounded (a, b, c, d, e, f, g, h)
(Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i) => Bounded (a, b, c, d, e, f, g, h, i)
(Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j) => Bounded (a, b, c, d, e, f, g, h, i, j)
(Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j, Bounded k) => Bounded (a, b, c, d, e, f, g, h, i, j, k)
(Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j, Bounded k, Bounded l) => Bounded (a, b, c, d, e, f, g, h, i, j, k, l)
(Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j, Bounded k, Bounded l, Bounded m) => Bounded (a, b, c, d, e, f, g, h, i, j, k, l, m)
(Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j, Bounded k, Bounded l, Bounded m, Bounded n) => Bounded (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
(Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j, Bounded k, Bounded l, Bounded m, Bounded n, Bounded o) => Bounded (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
data Char Source
show/hide Instances
data Double Source
Double-precision floating point numbers. It is desirable that this type be at least equal in range and precision to the IEEE double-precision type.
show/hide Instances
data Either a b Source

The Either type represents values with two possibilities: a value of type Either a b is either Left a or Right b.

The Either type is sometimes used to represent a value which is either correct or an error; by convention, the Left constructor is used to hold an error value and the Right constructor is used to hold a correct value (mnemonic: "right" also means "correct").

Constructors
Left a
Right b
show/hide Instances
Typeable2 Either
(Eq a, Eq b) => Eq (Either a b)
(Ord a, Ord b) => Ord (Either a b)
(Read a, Read b) => Read (Either a b)
(Show a, Show b) => Show (Either a b)
class Enum a whereSource

Class Enum defines operations on sequentially ordered types.

The enumFrom... methods are used in Haskell's translation of arithmetic sequences.

Instances of Enum may be derived for any enumeration type (types whose constructors have no fields). The nullary constructors are assumed to be numbered left-to-right by fromEnum from 0 through n-1. See Chapter 10 of the Haskell Report for more details.

For any type that is an instance of class Bounded as well as Enum, the following should hold:

enumFrom x = enumFromTo x maxBound enumFromThen x y = enumFromThenTo x y bound where bound | fromEnum y >= fromEnum x = maxBound | otherwise = minBound
Methods
succ :: a -> aSource
the successor of a value. For numeric types, succ adds 1.
pred :: a -> aSource
the predecessor of a value. For numeric types, pred subtracts 1.
toEnum :: Int -> aSource
Convert from an Int.
fromEnum :: a -> IntSource
Convert to an Int. It is implementation-dependent what fromEnum returns when applied to a value that is too large to fit in an Int.
enumFrom :: a -> [a]Source
Used in Haskell's translation of [n..].
enumFromThen :: a -> a -> [a]Source
Used in Haskell's translation of [n,n'..].
enumFromTo :: a -> a -> [a]Source
Used in Haskell's translation of [n..m].
enumFromThenTo :: a -> a -> a -> [a]Source
Used in Haskell's translation of [n,n'..m].
show/hide Instances
class Eq a whereSource

The Eq class defines equality (==) and inequality (/=). All the basic datatypes exported by the Prelude are instances of Eq, and Eq may be derived for any datatype whose constituents are also instances of Eq.

Minimal complete definition: either == or /=.

Methods
(==) :: a -> a -> BoolSource
(/=) :: a -> a -> BoolSource
show/hide Instances
Eq Bool
Eq Char
Eq Double
Eq Float
Eq Int
Eq Integer
Eq Ordering
Eq ()
Eq AsyncException
Eq ArrayException
Eq ExitCode
Eq IOErrorType
Eq IOException
Eq a => Eq [a]
Integral a => Eq (Ratio a)
Eq a => Eq (Maybe a)
(Eq a, Eq b) => Eq (Either a b)
(Eq a, Eq b) => Eq (a, b)
(Eq a, Eq b, Eq c) => Eq (a, b, c)
(Eq a, Eq b, Eq c, Eq d) => Eq (a, b, c, d)
(Eq a, Eq b, Eq c, Eq d, Eq e) => Eq (a, b, c, d, e)
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => Eq (a, b, c, d, e, f)
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g) => Eq (a, b, c, d, e, f, g)
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h) => Eq (a, b, c, d, e, f, g, h)
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i) => Eq (a, b, c, d, e, f, g, h, i)
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j) => Eq (a, b, c, d, e, f, g, h, i, j)
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k) => Eq (a, b, c, d, e, f, g, h, i, j, k)
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l) => Eq (a, b, c, d, e, f, g, h, i, j, k, l)
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m)
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
type FilePath = StringSource
File and directory names are values of type String, whose precise meaning is operating system dependent. Files can be opened, yielding a handle which can then be used to operate on the contents of that file.
data Float Source
Single-precision floating point numbers. It is desirable that this type be at least equal in range and precision to the IEEE single-precision type.
show/hide Instances
class Fractional a => Floating a whereSource

Trigonometric and hyperbolic functions and related functions.

Minimal complete definition: pi, exp, log, sin, cos, sinh, cosh, asin, acos, atan, asinh, acosh and atanh

Methods
pi :: aSource
exp :: a -> aSource
sqrt :: a -> aSource
log :: a -> aSource
(**) :: a -> a -> aSource
logBase :: a -> a -> aSource
sin :: a -> aSource
tan :: a -> aSource
cos :: a -> aSource
asin :: a -> aSource
atan :: a -> aSource
acos :: a -> aSource
sinh :: a -> aSource
tanh :: a -> aSource
cosh :: a -> aSource
asinh :: a -> aSource
atanh :: a -> aSource
acosh :: a -> aSource
show/hide Instances
class Num a => Fractional a whereSource

Fractional numbers, supporting real division.

Minimal complete definition: fromRational and (recip or (/))

Methods
(/) :: a -> a -> aSource
fractional division
recip :: a -> aSource
reciprocal fraction
fromRational :: Rational -> aSource
Conversion from a Rational (that is Ratio Integer). A floating literal stands for an application of fromRational to a value of type Rational, so such literals have type (Fractional a) => a.
show/hide Instances
class Functor f whereSource

The Functor class is used for types that can be mapped over. Instances of Functor should satisfy the following laws:

fmap id == id fmap (f . g) == fmap f . fmap g

The instances of Functor for lists, Data.Maybe.Maybe and System.IO.IO defined in the Prelude satisfy these laws.

Methods
fmap :: (a -> b) -> f a -> f bSource
show/hide Instances
data IO a Source

A value of type IO a is a computation which, when performed, does some I/O before returning a value of type a.

There is really only one way to "perform" an I/O action: bind it to Main.main in your program. When your program is run, the I/O will be performed. It isn't possible to perform I/O from an arbitrary function, unless that function is itself in the IO monad and called at some point, directly or indirectly, from Main.main.

IO is a monad, so IO actions can be combined using either the do-notation or the >> and >>= operations from the Monad class.

show/hide Instances
type IOError = IOExceptionSource

The Haskell 98 type for exceptions in the IO monad. Any I/O operation may raise an IOError instead of returning a result. For a more general type of exception, including also those that arise in pure code, see Control.Exception.Exception.

In Haskell 98, this is an opaque type.

data Int Source
A fixed-precision integer type with at least the range [-2^29 .. 2^29-1]. The exact range for a given implementation can be determined by using Prelude.minBound and Prelude.maxBound from the Prelude.Bounded class.
show/hide Instances
data Integer Source
Arbitrary-precision integers.
show/hide Instances
class (Real a, Enum a) => Integral a whereSource

Integral numbers, supporting integer division.

Minimal complete definition: quotRem and toInteger

Methods
quot :: a -> a -> aSource
integer division truncated toward zero
rem :: a -> a -> aSource

integer remainder, satisfying

(x `quot` y)*y + (x `rem` y) == x
div :: a -> a -> aSource
integer division truncated toward negative infinity
mod :: a -> a -> aSource

integer modulus, satisfying

(x `div` y)*y + (x `mod` y) == x
quotRem :: a -> a -> (a, a)Source
simultaneous quot and rem
divMod :: a -> a -> (a, a)Source
simultaneous div and mod
toInteger :: a -> IntegerSource
conversion to Integer
show/hide Instances
data Maybe a Source

The Maybe type encapsulates an optional value. A value of type Maybe a either contains a value of type a (represented as Just a), or it is empty (represented as Nothing). Using Maybe is a good way to deal with errors or exceptional cases without resorting to drastic measures such as error.

The Maybe type is also a monad. It is a simple kind of error monad, where all errors are represented by Nothing. A richer error monad can be built using the Data.Either.Either type.

Constructors
Nothing
Just a
show/hide Instances
class Monad m whereSource

The Monad class defines the basic operations over a monad, a concept from a branch of mathematics known as category theory. From the perspective of a Haskell programmer, however, it is best to think of a monad as an abstract datatype of actions. Haskell's do expressions provide a convenient syntax for writing monadic expressions.

Minimal complete definition: >>= and return.

Instances of Monad should satisfy the following laws:

return a >>= k == k a m >>= return == m m >>= (\x -> k x >>= h) == (m >>= k) >>= h

Instances of both Monad and Functor should additionally satisfy the law:

fmap f xs == xs >>= return . f

The instances of Monad for lists, Data.Maybe.Maybe and System.IO.IO defined in the Prelude satisfy these laws.

Methods
(>>=) :: m a -> (a -> m b) -> m bSource
Sequentially compose two actions, passing any value produced by the first as an argument to the second.
(>>) :: m a -> m b -> m bSource
Sequentially compose two actions, discarding any value produced by the first, like sequencing operators (such as the semicolon) in imperative languages.
return :: a -> m aSource
Inject a value into the monadic type.
fail :: String -> m aSource
Fail with a message. This operation is not part of the mathematical definition of a monad, but is invoked on pattern-match failure in a do expression.
show/hide Instances
class (Eq a, Show a) => Num a whereSource

Basic numeric class.

Minimal complete definition: all except negate or (-)

Methods
(+) :: a -> a -> aSource
(*) :: a -> a -> aSource
(-) :: a -> a -> aSource
negate :: a -> aSource
Unary negation.
abs :: a -> aSource
Absolute value.
signum :: a -> aSource

Sign of a number. The functions abs and signum should satisfy the law:

abs x * signum x == x

For real numbers, the signum is either -1 (negative), 0 (zero) or 1 (positive).

fromInteger :: Integer -> aSource
Conversion from an Integer. An integer literal represents the application of the function fromInteger to the appropriate value of type Integer, so such literals have type (Num a) => a.
show/hide Instances
class Eq a => Ord a whereSource

The Ord class is used for totally ordered datatypes.

Instances of Ord can be derived for any user-defined datatype whose constituent types are in Ord. The declared order of the constructors in the data declaration determines the ordering in derived Ord instances. The Ordering datatype allows a single comparison to determine the precise ordering of two objects.

Minimal complete definition: either compare or <=. Using compare can be more efficient for complex types.

Methods
compare :: a -> a -> OrderingSource
(<) :: a -> a -> BoolSource
(>=) :: a -> a -> BoolSource
(>) :: a -> a -> BoolSource
(<=) :: a -> a -> BoolSource
max :: a -> a -> aSource
min :: a -> a -> aSource
show/hide Instances
Ord Bool
Ord Char
Ord Double
Ord Float
Ord Int
Ord Integer
Ord Ordering
Ord ()
Ord AsyncException
Ord ArrayException
Ord ExitCode
Ord a => Ord [a]
Integral a => Ord (Ratio a)
Ord a => Ord (Maybe a)
(Ord a, Ord b) => Ord (Either a b)
(Ord a, Ord b) => Ord (a, b)
(Ord a, Ord b, Ord c) => Ord (a, b, c)
(Ord a, Ord b, Ord c, Ord d) => Ord (a, b, c, d)
(Ord a, Ord b, Ord c, Ord d, Ord e) => Ord (a, b, c, d, e)
(Ord a, Ord b, Ord c, Ord d, Ord e, Ord f) => Ord (a, b, c, d, e, f)
(Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g) => Ord (a, b, c, d, e, f, g)
(Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h) => Ord (a, b, c, d, e, f, g, h)
(Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i) => Ord (a, b, c, d, e, f, g, h, i)
(Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j) => Ord (a, b, c, d, e, f, g, h, i, j)
(Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k) => Ord (a, b, c, d, e, f, g, h, i, j, k)
(Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l) => Ord (a, b, c, d, e, f, g, h, i, j, k, l)
(Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m)
(Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
(Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n, Ord o) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
data Ordering Source
Constructors
LT
EQ
GT
show/hide Instances
type Rational = Ratio IntegerSource
Arbitrary-precision rational numbers, represented as a ratio of two Integer values. A rational number may be constructed using the % operator.
class Read a whereSource

Parsing of Strings, producing values.

Minimal complete definition: readsPrec (or, for GHC only, readPrec)

Derived instances of Read make the following assumptions, which derived instances of Text.Show.Show obey:

  • If the constructor is defined to be an infix operator, then the derived Read instance will parse only infix applications of the constructor (not the prefix form).
  • Associativity is not used to reduce the occurrence of parentheses, although precedence may be.
  • If the constructor is defined using record syntax, the derived Read will parse only the record-syntax form, and furthermore, the fields must be given in the same order as the original declaration.
  • The derived Read instance allows arbitrary Haskell whitespace between tokens of the input string. Extra parentheses are also allowed.

For example, given the declarations

infixr 5 :^: data Tree a = Leaf a | Tree a :^: Tree a

the derived instance of Read in Haskell 98 is equivalent to

instance (Read a) => Read (Tree a) where readsPrec d r = readParen (d > app_prec) (\r -> [(Leaf m,t) | ("Leaf",s) <- lex r, (m,t) <- readsPrec (app_prec+1) s]) r ++ readParen (d > up_prec) (\r -> [(u:^:v,w) | (u,s) <- readsPrec (up_prec+1) r, (":^:",t) <- lex s, (v,w) <- readsPrec (up_prec+1) t]) r where app_prec = 10 up_prec = 5

Note that right-associativity of :^: is unused.

The derived instance in GHC is equivalent to

instance (Read a) => Read (Tree a) where readPrec = parens $ (prec app_prec $ do Ident "Leaf" <- lexP m <- step readPrec return (Leaf m)) +++ (prec up_prec $ do u <- step readPrec Symbol ":^:" <- lexP v <- step readPrec return (u :^: v)) where app_prec = 10 up_prec = 5 readListPrec = readListPrecDefault
Methods
readsPrecSource
:: Intthe operator precedence of the enclosing context (a number from 0 to 11). Function application has precedence 10.
-> ReadS a

attempts to parse a value from the front of the string, returning a list of (parsed value, remaining string) pairs. If there is no successful parse, the returned list is empty.

Derived instances of Read and Text.Show.Show satisfy the following:

  • (x,"") is an element of (readsPrec d (Text.Show.showsPrec d x "")).

That is, readsPrec parses the string produced by Text.Show.showsPrec, and delivers the value that Text.Show.showsPrec started with.

readList :: ReadS [a]Source
The method readList is provided to allow the programmer to give a specialised way of parsing lists of values. For example, this is used by the predefined Read instance of the Char type, where values of type String should be are expected to use double quotes, rather than square brackets.
show/hide Instances
Read Bool
Read Char
Read Double
Read Float
Read Int
Read Integer
Read Ordering
Read ()
Read ExitCode
Read Lexeme
Read a => Read [a]
(Integral a, Read a) => Read (Ratio a)
Read a => Read (Maybe a)
(Read a, Read b) => Read (Either a b)
(Read a, Read b) => Read (a, b)
(Ix a, Read a, Read b) => Read (Array a b)
(Read a, Read b, Read c) => Read (a, b, c)
(Read a, Read b, Read c, Read d) => Read (a, b, c, d)
(Read a, Read b, Read c, Read d, Read e) => Read (a, b, c, d, e)
(Read a, Read b, Read c, Read d, Read e, Read f) => Read (a, b, c, d, e, f)
(Read a, Read b, Read c, Read d, Read e, Read f, Read g) => Read (a, b, c, d, e, f, g)
(Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h) => Read (a, b, c, d, e, f, g, h)
(Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i) => Read (a, b, c, d, e, f, g, h, i)
(Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j) => Read (a, b, c, d, e, f, g, h, i, j)
(Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k) => Read (a, b, c, d, e, f, g, h, i, j, k)
(Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l) => Read (a, b, c, d, e, f, g, h, i, j, k, l)
(Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m)
(Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m, Read n) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
(Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m, Read n, Read o) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
type ReadS a = String -> [(a, String)]Source

A parser for a type a, represented as a function that takes a String and returns a list of possible parses as (a,String) pairs.

Note that this kind of backtracking parser is very inefficient; reading a large structure may be quite slow (cf ReadP).

class (Num a, Ord a) => Real a whereSource
Methods
toRational :: a -> RationalSource
the rational equivalent of its real argument with full precision
show/hide Instances
class (RealFrac a, Floating a) => RealFloat a whereSource

Efficient, machine-independent access to the components of a floating-point number.

Minimal complete definition: all except exponent, significand, scaleFloat and atan2

Methods
floatRadix :: a -> IntegerSource
a constant function, returning the radix of the representation (often 2)
floatDigits :: a -> IntSource
a constant function, returning the number of digits of floatRadix in the significand
floatRange :: a -> (Int, Int)Source
a constant function, returning the lowest and highest values the exponent may assume
decodeFloat :: a -> (Integer, Int)Source
The function decodeFloat applied to a real floating-point number returns the significand expressed as an Integer and an appropriately scaled exponent (an Int). If decodeFloat x yields (m,n), then x is equal in value to m*b^^n, where b is the floating-point radix, and furthermore, either m and n are both zero or else b^(d-1) <= m < b^d, where d is the value of floatDigits x. In particular, decodeFloat 0 = (0,0).
encodeFloat :: Integer -> Int -> aSource
encodeFloat performs the inverse of decodeFloat
exponent :: a -> IntSource
the second component of decodeFloat.
significand :: a -> aSource
the first component of decodeFloat, scaled to lie in the open interval (-1,1)
scaleFloat :: Int -> a -> aSource
multiplies a floating-point number by an integer power of the radix
isNaN :: a -> BoolSource
True if the argument is an IEEE "not-a-number" (NaN) value
isInfinite :: a -> BoolSource
True if the argument is an IEEE infinity or negative infinity
isDenormalized :: a -> BoolSource
True if the argument is too small to be represented in normalized format
isNegativeZero :: a -> BoolSource
True if the argument is an IEEE negative zero
isIEEE :: a -> BoolSource
True if the argument is an IEEE floating point number
atan2 :: a -> a -> aSource
a version of arctangent taking two real floating-point arguments. For real floating x and y, atan2 y x computes the angle (from the positive x-axis) of the vector from the origin to the point (x,y). atan2 y x returns a value in the range [-pi, pi]. It follows the Common Lisp semantics for the origin when signed zeroes are supported. atan2 y 1, with y in a type that is RealFloat, should return the same value as atan y. A default definition of atan2 is provided, but implementors can provide a more accurate implementation.
show/hide Instances
class (Real a, Fractional a) => RealFrac a whereSource

Extracting components of fractions.

Minimal complete definition: properFraction

Methods
properFraction :: Integral b => a -> (b, a)Source

The function properFraction takes a real fractional number x and returns a pair (n,f) such that x = n+f, and:

  • n is an integral number with the same sign as x; and
  • f is a fraction with the same type and sign as x, and with absolute value less than 1.

The default definitions of the ceiling, floor, truncate and round functions are in terms of properFraction.

truncate :: Integral b => a -> bSource
truncate x returns the integer nearest x between zero and x
round :: Integral b => a -> bSource
round x returns the nearest integer to x; the even integer if x is equidistant between two integers
ceiling :: Integral b => a -> bSource
ceiling x returns the least integer not less than x
floor :: Integral b => a -> bSource
floor x returns the greatest integer not greater than x
show/hide Instances
class Show a whereSource

Conversion of values to readable Strings.

Minimal complete definition: showsPrec or show.

Derived instances of Show have the following properties, which are compatible with derived instances of Text.Read.Read:

  • The result of show is a syntactically correct Haskell expression containing only constants, given the fixity declarations in force at the point where the type is declared. It contains only the constructor names defined in the data type, parentheses, and spaces. When labelled constructor fields are used, braces, commas, field names, and equal signs are also used.
  • If the constructor is defined to be an infix operator, then showsPrec will produce infix applications of the constructor.
  • the representation will be enclosed in parentheses if the precedence of the top-level constructor in x is less than d (associativity is ignored). Thus, if d is 0 then the result is never surrounded in parentheses; if d is 11 it is always surrounded in parentheses, unless it is an atomic expression.
  • If the constructor is defined using record syntax, then show will produce the record-syntax form, with the fields given in the same order as the original declaration.

For example, given the declarations

infixr 5 :^: data Tree a = Leaf a | Tree a :^: Tree a

the derived instance of Show is equivalent to

instance (Show a) => Show (Tree a) where showsPrec d (Leaf m) = showParen (d > app_prec) $ showString "Leaf " . showsPrec (app_prec+1) m where app_prec = 10 showsPrec d (u :^: v) = showParen (d > up_prec) $ showsPrec (up_prec+1) u . showString " :^: " . showsPrec (up_prec+1) v where up_prec = 5

Note that right-associativity of :^: is ignored. For example,

  • show (Leaf 1 :^: Leaf 2 :^: Leaf 3) produces the string "Leaf 1 :^: (Leaf 2 :^: Leaf 3)".
Methods
showsPrecSource
:: Intthe operator precedence of the enclosing context (a number from 0 to 11). Function application has precedence 10.
-> athe value to be converted to a String
-> ShowS

Convert a value to a readable String.

showsPrec should satisfy the law

showsPrec d x r ++ s == showsPrec d x (r ++ s)

Derived instances of Text.Read.Read and Show satisfy the following:

  • (x,"") is an element of (Text.Read.readsPrec d (showsPrec d x "")).

That is, Text.Read.readsPrec parses the string produced by showsPrec, and delivers the value that showsPrec started with.

show :: a -> StringSource
A specialised variant of showsPrec, using precedence context zero, and returning an ordinary String.
showList :: [a] -> ShowSSource
The method showList is provided to allow the programmer to give a specialised way of showing lists of values. For example, this is used by the predefined Show instance of the Char type, where values of type String should be shown in double quotes, rather than between square brackets.
show/hide Instances
Show Bool
Show Char
Show Double
Show Float
Show Int
Show Integer
Show Ordering
Show ()
Show BlockedIndefinitelyOnMVar
Show BlockedIndefinitelyOnSTM
Show Deadlock
Show AssertionFailed
Show AsyncException
Show ArrayException
Show ExitCode
Show IOErrorType
Show IOException
Show a => Show [a]
Integral a => Show (Ratio a)
Show a => Show (Maybe a)
(Show a, Show b) => Show (Either a b)
(Show a, Show b) => Show (a, b)
(Show a, Show b, Show c) => Show (a, b, c)
(Show a, Show b, Show c, Show d) => Show (a, b, c, d)
(Show a, Show b, Show c, Show d, Show e) => Show (a, b, c, d, e)
(Show a, Show b, Show c, Show d, Show e, Show f) => Show (a, b, c, d, e, f)
(Show a, Show b, Show c, Show d, Show e, Show f, Show g) => Show (a, b, c, d, e, f, g)
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h) => Show (a, b, c, d, e, f, g, h)
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i) => Show (a, b, c, d, e, f, g, h, i)
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j) => Show (a, b, c, d, e, f, g, h, i, j)
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k) => Show (a, b, c, d, e, f, g, h, i, j, k)
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l) => Show (a, b, c, d, e, f, g, h, i, j, k, l)
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m)
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
type ShowS = String -> StringSource
The shows functions return a function that prepends the output String to an existing String. This allows constant-time concatenation of results using function composition.
type String = [Char]Source
A String is a list of characters. String constants in Haskell are values of type String.
(^) :: (Num a, Integral b) => a -> b -> aSource
raise a number to a non-negative integral power
(^^) :: (Fractional a, Integral b) => a -> b -> aSource
raise a number to an integral power
appendFile :: FilePath -> String -> IO ()Source

The computation appendFile file str function appends the string str, to the file file.

Note that writeFile and appendFile write a literal string to a file. To write a value of any printable type, as with print, use the show function to convert the value to a string first.

main = appendFile "squares" (show [(x,x*x) | x <- [0,0.1..2]])
asTypeOf :: a -> a -> aSource
asTypeOf is a type-restricted version of const. It is usually used as an infix operator, and its typing forces its first argument (which is usually overloaded) to have the same type as the second.
catch :: IO a -> (IOError -> IO a) -> IO aSource

The catch function establishes a handler that receives any IOError raised in the action protected by catch. An IOError is caught by the most recent handler established by catch. These handlers are not selective: all IOErrors are caught. Exception propagation must be explicitly provided in a handler by re-raising any unwanted exceptions. For example, in

f = catch g (\e -> if IO.isEOFError e then return [] else ioError e)

the function f returns [] when an end-of-file exception (cf. isEOFError) occurs in g; otherwise, the exception is propagated to the next outer handler.

When an exception propagates outside the main program, the Haskell system prints the associated IOError value and exits the program.

Non-I/O exceptions are not caught by this variant; to catch all exceptions, use Control.Exception.catch from Control.Exception.

const :: a -> b -> aSource
Constant function.
curry :: ((a, b) -> c) -> a -> b -> cSource
curry converts an uncurried function to a curried function.
either :: (a -> c) -> (b -> c) -> Either a b -> cSource
Case analysis for the Either type. If the value is Left a, apply the first function to a; if it is Right b, apply the second function to b.
error :: [Char] -> aSource
error stops execution and displays an error message.
even :: Integral a => a -> BoolSource
flip :: (a -> b -> c) -> b -> a -> cSource
flip f takes its (first) two arguments in the reverse order of f.
fromIntegral :: (Integral a, Num b) => a -> bSource
general coercion from integral types
fst :: (a, b) -> aSource
Extract the first component of a pair.
gcd :: Integral a => a -> a -> aSource
gcd x y is the greatest (positive) integer that divides both x and y; for example gcd (-3) 6 = 3, gcd (-3) (-6) = 3, gcd 0 4 = 4. gcd 0 0 raises a runtime error.
getChar :: IO CharSource
Read a character from the standard input device (same as hGetChar stdin).
getContents :: IO StringSource
The getContents operation returns all user input as a single string, which is read lazily as it is needed (same as hGetContents stdin).
getLine :: IO StringSource
Read a line from the standard input device (same as hGetLine stdin).
id :: a -> aSource
Identity function.
interact :: (String -> String) -> IO ()Source
The interact function takes a function of type String->String as its argument. The entire input from the standard input device is passed to this function as its argument, and the resulting string is output on the standard output device.
ioError :: IOError -> IO aSource
Raise an IOError in the IO monad.
lcm :: Integral a => a -> a -> aSource
lcm x y is the smallest positive integer that both x and y divide.
lex :: ReadS StringSource

The lex function reads a single lexeme from the input, discarding initial white space, and returning the characters that constitute the lexeme. If the input string contains only white space, lex returns a single successful `lexeme' consisting of the empty string. (Thus lex "" = [("","")].) If there is no legal lexeme at the beginning of the input string, lex fails (i.e. returns []).

This lexer is not completely faithful to the Haskell lexical syntax in the following respects:

  • Qualified names are not handled properly
  • Octal and hexadecimal numerics are not recognized as a single token
  • Comments are not treated properly
maybe :: b -> (a -> b) -> Maybe a -> bSource
The maybe function takes a default value, a function, and a Maybe value. If the Maybe value is Nothing, the function returns the default value. Otherwise, it applies the function to the value inside the Just and returns the result.
not :: Bool -> BoolSource
Boolean "not"
odd :: Integral a => a -> BoolSource
otherwise :: BoolSource

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

f x | x < 0 = ... | otherwise = ...
print :: Show a => a -> IO ()Source

The print function outputs a value of any printable type to the standard output device. Printable types are those that are instances of class Show; print converts values to strings for output using the show operation and adds a newline.

For example, a program to print the first 20 integers and their powers of 2 could be written as:

main = print ([(n, 2^n) | n <- [0..19]])
putChar :: Char -> IO ()Source
Write a character to the standard output device (same as hPutChar stdout).
putStr :: String -> IO ()Source
Write a string to the standard output device (same as hPutStr stdout).
putStrLn :: String -> IO ()Source
The same as putStr, but adds a newline character.
read :: Read a => String -> aSource
The read function reads input from a string, which must be completely consumed by the input process.
readFile :: FilePath -> IO StringSource
The readFile function reads a file and returns the contents of the file as a string. The file is read lazily, on demand, as with getContents.
readIO :: Read a => String -> IO aSource
The readIO function is similar to read except that it signals parse failure to the IO monad instead of terminating the program.
readLn :: Read a => IO aSource
The readLn function combines getLine and readIO.
readParen :: Bool -> ReadS a -> ReadS aSource

readParen True p parses what p parses, but surrounded with parentheses.

readParen False p parses what p parses, but optionally surrounded with parentheses.

reads :: Read a => ReadS aSource
equivalent to readsPrec with a precedence of 0.
realToFrac :: (Real a, Fractional b) => a -> bSource
general coercion to fractional types
seq :: a -> b -> bSource
Evaluates its first argument to head normal form, and then returns its second argument as the result.
showChar :: Char -> ShowSSource
utility function converting a Char to a show function that simply prepends the character unchanged.
showParen :: Bool -> ShowS -> ShowSSource
utility function that surrounds the inner show function with parentheses when the Bool parameter is True.
showString :: String -> ShowSSource
utility function converting a String to a show function that simply prepends the string unchanged.
shows :: Show a => a -> ShowSSource
equivalent to showsPrec with a precedence of 0.
snd :: (a, b) -> bSource
Extract the second component of a pair.
subtract :: Num a => a -> a -> aSource

the same as flip (-).

Because - is treated specially in the Haskell grammar, (- e) is not a section, but an application of prefix negation. However, (subtract exp) is equivalent to the disallowed section.

uncurry :: (a -> b -> c) -> (a, b) -> cSource
uncurry converts a curried function to a function on pairs.
undefined :: aSource
A special case of error. It is expected that compilers will recognize this and insert error messages which are more appropriate to the context in which undefined appears.
until :: (a -> Bool) -> (a -> a) -> a -> aSource
until p f yields the result of applying f until p holds.
userError :: String -> IOErrorSource

Construct an IOError value with a string describing the error. The fail method of the IO instance of the Monad class raises a userError, thus:

instance Monad IO where ... fail s = ioError (userError s)
writeFile :: FilePath -> String -> IO ()Source
The computation writeFile file str function writes the string str, to the file file.
(||) :: Bool -> Bool -> BoolSource
Boolean "or"
Produced by Haddock version 2.7.2