Safe Haskell | Safe |
---|---|

Language | Haskell98 |

Common core functions.

## Synopsis

- type Fn1 a b = a -> b
- type Fn2 a b c = a -> b -> c
- type Fn3 a b c d = a -> b -> c -> d
- type Fn4 a b c d e = a -> b -> c -> d -> e
- reads_exact :: Read a => String -> Maybe a
- data Case_Rule
- is_ci :: Case_Rule -> Bool
- is_cs :: Case_Rule -> Bool
- string_eq :: Case_Rule -> String -> String -> Bool
- rlookup_str :: Case_Rule -> String -> [(a, String)] -> Maybe a
- parse_enum :: (Show t, Enum t, Bounded t) => Case_Rule -> String -> Maybe t
- compose_l :: [t -> t] -> t -> t
- compose_r :: [t -> t] -> t -> t
- d_dx :: Num a => [a] -> [a]
- d_dx' :: Num n => [n] -> [n]
- dx_d :: Num n => [n] -> [n]
- dx_d' :: Num n => [n] -> [n]
- lookup_by :: (a -> a -> Bool) -> a -> [(a, b)] -> Maybe b
- rlookup_by :: (b -> b -> Bool) -> b -> [(a, b)] -> Maybe a
- pcn_triples :: [a] -> [(Maybe a, a, Maybe a)]
- sep_first :: [t] -> Maybe (t, [t])
- sep_last :: [t] -> Maybe ([t], t)
- equal_length_p :: [[a]] -> Bool
- histogram :: Ord a => [a] -> [(a, Int)]
- p4_zip :: (a, b, c, d) -> (e, f, g, h) -> ((a, e), (b, f), (c, g), (d, h))
- type T2 a = (a, a)
- type T3 a = (a, a, a)
- type T4 a = (a, a, a, a)
- dup2 :: t -> T2 t
- dup3 :: t -> T3 t
- dup4 :: t -> T4 t
- mk_duples :: (a -> c) -> (b -> c) -> [(a, b)] -> [c]
- mk_duples_l :: (Int -> c) -> (a -> c) -> (b -> c) -> [(a, [b])] -> [c]
- mk_triples :: (a -> d) -> (b -> d) -> (c -> d) -> [(a, b, c)] -> [d]
- t2_from_list :: [t] -> T2 t

# Function

# Read

# STRING / CASE

CI = Case insensitive, CS = case sensitive.

string_eq :: Case_Rule -> String -> String -> Bool Source #

String equality with `Case_Rule`

.

string_eq CI "lower" "LOWER" == True

rlookup_str :: Case_Rule -> String -> [(a, String)] -> Maybe a Source #

`rlookup_by`

of `string_eq`

.

# LIST

compose_l :: [t -> t] -> t -> t Source #

Left to right composition of a list of functions.

compose_l [(* 2),(+ 1)] 3 == 7

compose_r :: [t -> t] -> t -> t Source #

Right to left composition of a list of functions.

compose_r [(* 2),(+ 1)] 3 == 8

d_dx :: Num a => [a] -> [a] Source #

SequenceableCollection.differentiate

> [3,4,1,1].differentiate == [3,1,-3,0]

d_dx [3,4,1,1] == [3,1,-3,0] d_dx [0,1,3,6] == [0,1,2,3]

dx_d :: Num n => [n] -> [n] Source #

SequenceableCollection.integrate

> [3,4,1,1].integrate == [3,7,8,9]

dx_d [3,4,1,1] == [3,7,8,9] dx_d (d_dx [0,1,3,6]) == [0,1,3,6] dx_d [0.5,0.5] == [0.5,1]

dx_d' :: Num n => [n] -> [n] Source #

Variant pre-prending zero to output.

dx_d' [3,4,1,1] == [0,3,7,8,9] dx_d' (d_dx' [0,1,3,6]) == [0,1,3,6] dx_d' [0.5,0.5] == [0,0.5,1]

rlookup_by :: (b -> b -> Bool) -> b -> [(a, b)] -> Maybe a Source #

Reverse `lookup`

with equality function.

pcn_triples :: [a] -> [(Maybe a, a, Maybe a)] Source #

(prev,cur,next) triples.

pcn_triples [1..3] == [(Nothing,1,Just 2),(Just 1,2,Just 3),(Just 2,3,Nothing)]

sep_first :: [t] -> Maybe (t, [t]) Source #

Separate first list element.

sep_first "astring" == Just ('a',"string")

sep_last :: [t] -> Maybe ([t], t) Source #

Separate last list element.

sep_last "stringb" == Just ("string",'b')

equal_length_p :: [[a]] -> Bool Source #

Are lists of equal length?

equal_length_p ["t1","t2"] == True equal_length_p ["t","t1","t2"] == False

# TUPLES

p4_zip :: (a, b, c, d) -> (e, f, g, h) -> ((a, e), (b, f), (c, g), (d, h)) Source #

Zip two 4-tuples.

mk_duples_l :: (Int -> c) -> (a -> c) -> (b -> c) -> [(a, [b])] -> [c] Source #

Length prefixed list variant of `mk_duples`

.

mk_triples :: (a -> d) -> (b -> d) -> (c -> d) -> [(a, b, c)] -> [d] Source #

`concatMap`

of *f* at *x* and *g* at *y* and *h* at *z*.

t2_from_list :: [t] -> T2 t Source #

- x,y
- -> (x,y)