14.11.2012 Views

Curry: An Integrated Functional Logic Language

Curry: An Integrated Functional Logic Language

Curry: An Integrated Functional Logic Language

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!