> module Stdlib Collection of Standard functions > ( mapcat,map2,mappair,seQuence, > middle,mkset,between,pair,--UNUSED: pairUp,curry, > {-const,-}const3,splitAt_YORK,numval,toNum,all_YORK) > where mapcat - map a function over a list and concatenates the results > mapcat :: (a->[b]) -> [a] -> [b] > mapcat f x = foldr (++) [] (map f x) map2 - maps a binary function over two lists to produce a result > map2 :: (a->b->c) -> [a] -> [b] -> [c] > map2 _ [] l = [] > map2 _ l [] = [] > map2 f (x:xs) (y:ys) = (f x y):(map2 f xs ys) mkset - returns a list with duplicates of elements removed. > mkset [] = [] > mkset (a:l) = a:mkset ((filter ((/=) a)) l) -- "remove" no longer in prelude mappair - map a function over both elements of a pair > mappair :: (a->b) -> (a,a) -> (b,b) > mappair f (a,b) = (f a,f b) middle - determine the halfway point two integers > middle :: Int-> Int-> Int > middle x y = div (x+y) 2 between - predicate testing value for location between base and base + offset > between :: (Ord a,Num a) => a -> a -> a -> Bool > between base offset value = (base <= value) && (value <= (base+offset)) pair - pairing function > pair :: a -> b -> (a,b) > pair x y = (x,y) const - returns the first of the two arguments > {- > const :: a -> b -> a > const x y = x > -} const - returns the first of the four arguments > const3 :: a -> b -> c -> d -> a > const3 w x y z = w splitAt_YORK - splits a list of values at a value given into a pair of values - those strictly before and those strictly after > splitAt_YORK ::(Eq a) => a -> [a] -> ([a],[a]) > splitAt_YORK ch [] = ([],[]) > splitAt_YORK ch (a:l) | a==ch = ([], l) > splitAt_YORK ch (a:l) | otherwise = (a:x,y) > where (x,y) = splitAt_YORK ch l numval - converts a decimal string to an integer (Int) > numval :: String -> Int > numval x = numval' (length x-1) x > where numval' _ [] = 0 > numval' x (a:l) = (toNum a)*(10^x) + (numval' (x-1) l) toNum - converts a numeric character to the corresponding int. > toNum :: Char -> Int > toNum x = (fromEnum x - fromEnum '0') seQuence: Concatenates a list of strings. > seQuence :: [String] -> String > seQuence = concat all_YORK : rename the badly named prelude function and. > all_YORK :: [Bool] -> Bool > all_YORK = and