Curry: An Integrated Functional Logic Language
Curry: An Integrated Functional Logic Language
Curry: An Integrated Functional Logic Language
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
unwords :: [String] -> String<br />
unwords ws = if ws==[] then []<br />
else foldr1 (\w s -> w ++ ’ ’:s) ws<br />
-- Reverse the order of all elements in a list<br />
reverse :: [a] -> [a]<br />
reverse = foldl (flip (:)) []<br />
-- Compute the conjunction of a Boolean list<br />
and :: [Bool] -> Bool<br />
and = foldr (&&) True<br />
-- Compute the disjunction of a Boolean list<br />
or :: [Bool] -> Bool<br />
or = foldr (||) False<br />
-- Is there an element in a list satisfying a given predicate?<br />
any :: (a -> Bool) -> [a] -> Bool<br />
any p = or . map p<br />
-- Is a given predicate satisfied by all elements in a list?<br />
all :: (a -> Bool) -> [a] -> Bool<br />
all p = and . map p<br />
-- Element of a list?<br />
elem :: a -> [a] -> Bool<br />
elem x = any (x==)<br />
-- Not element of a list?<br />
notElem :: a -> [a] -> Bool<br />
notElem x = all (x/=)<br />
--- Looks up a key in an association list.<br />
lookup :: a -> [(a,b)] -> Maybe b<br />
lookup _ [] = Nothing<br />
lookup k ((x,y):xys)<br />
| k==x = Just y<br />
| otherwise = lookup k xys<br />
-- Generating arithmetic sequences:<br />
enumFrom :: Int -> [Int] -- [n..]<br />
enumFrom n = n : enumFrom (n+1)<br />
enumFromThen :: Int -> Int -> [Int] -- [n1,n2..]<br />
53