ghc-7.0.1: The GHC API

Util

Contents

Description

Highly random utility functions

Synopsis

Flags dependent on the compiler build

General list processing

zipEqual :: String -> [a] -> [b] -> [(a, b)]

zipWithEqual :: String -> (a -> b -> c) -> [a] -> [b] -> [c]

zipWith3Equal :: String -> (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]

zipWith4Equal :: String -> (a -> b -> c -> d -> e) -> [a] -> [b] -> [c] -> [d] -> [e]

zipLazy :: [a] -> [b] -> [(a, b)]

zipLazy is a kind of zip that is lazy in the second list (observe the ~)

stretchZipWith :: (a -> Bool) -> b -> (a -> b -> c) -> [a] -> [b] -> [c]

stretchZipWith p z f xs ys stretches ys by inserting z in the places where p returns True

unzipWith :: (a -> b -> c) -> [(a, b)] -> [c]

mapFst :: (a -> c) -> [(a, b)] -> [(c, b)]

mapSnd :: (b -> c) -> [(a, b)] -> [(a, c)]

mapAndUnzip :: (a -> (b, c)) -> [a] -> ([b], [c])

mapAndUnzip3 :: (a -> (b, c, d)) -> [a] -> ([b], [c], [d])

nOfThem :: Int -> a -> [a]

filterOut :: (a -> Bool) -> [a] -> [a]

Like filter, only it reverses the sense of the test

partitionWith :: (a -> Either b c) -> [a] -> ([b], [c])

Uses a function to determine which of two output lists an input element should join

splitEithers :: [Either a b] -> ([a], [b])

Teases a list of Eithers apart into two lists

foldl1' :: (a -> a -> a) -> [a] -> aSource

A strict version of foldl1

foldl2 :: (acc -> a -> b -> acc) -> acc -> [a] -> [b] -> acc

count :: (a -> Bool) -> [a] -> Int

all2 :: (a -> b -> Bool) -> [a] -> [b] -> Bool

lengthExceeds :: [a] -> Int -> Bool

 (lengthExceeds xs n) = (length xs > n)

lengthIs :: [a] -> Int -> Bool

lengthAtLeast :: [a] -> Int -> Bool

atLength :: ([a] -> b) -> (Int -> b) -> [a] -> Int -> b

atLength atLen atEnd ls n unravels list ls to position n. Precisely:

  atLength atLenPred atEndPred ls n
   | n < 0         = atLenPred n
   | length ls < n = atEndPred (n - length ls)
   | otherwise     = atLenPred (drop n ls)

equalLength :: [a] -> [b] -> Bool

compareLength :: [a] -> [b] -> Ordering

isSingleton :: [a] -> Bool

only :: [a] -> a

singleton :: a -> [a]

notNull :: [a] -> Bool

snocView :: [a] -> Maybe ([a], a)

isIn :: Eq a => String -> a -> [a] -> Bool

isn'tIn :: Eq a => String -> a -> [a] -> Bool

Tuples

fstOf3 :: (a, b, c) -> a

sndOf3 :: (a, b, c) -> b

thirdOf3 :: (a, b, c) -> c

List operations controlled by another list

takeList :: [b] -> [a] -> [a]

dropList :: [b] -> [a] -> [a]

splitAtList :: [b] -> [a] -> ([a], [a])

split :: Char -> String -> [String]

dropTail :: Int -> [a] -> [a]

For loop

nTimes :: Int -> (a -> a) -> a -> a

Compose a function with itself n times. (nth rather than twice)

Sorting

sortLe :: (a -> a -> Bool) -> [a] -> [a]

sortWith :: Ord b => (a -> b) -> [a] -> [a]

on :: (a -> a -> c) -> (b -> a) -> b -> b -> c

Comparisons

eqListBy :: (a -> a -> Bool) -> [a] -> [a] -> Bool

cmpList :: (a -> a -> Ordering) -> [a] -> [a] -> Ordering

Edit distance

fuzzyMatch :: String -> [String] -> [String]

Search for possible matches to the users input in the given list, returning a small number of ranked results

Transitive closures

transitiveClosure :: (a -> [a]) -> (a -> a -> Bool) -> [a] -> [a]

Strictness

seqList :: [a] -> b -> b

Module names

Argument processing

Floating point

IO-ish utilities

global :: a -> IORef a

consIORef :: IORef [a] -> a -> IO ()

globalMVar :: a -> MVar a

Filenames and paths

type Suffix = String

parseSearchPath :: String -> [FilePath]

The function splits the given string to substrings using the searchPathSeparator.

data Direction

Constructors

Forwards 
Backwards 

Utils for defining Data instances

mkNoRepType :: String -> DataTypeSource

Constructs a non-representation for a non-presentable type