--
infix 4 `inlist`

tag1 x = (1,x)

x `inlist`  [] = False
x `inlist` (y:ys) = if x==y then True else x `inlist` ys

mymap :: (a -> b) -> [a] -> [b]
mymap f [] = []
mymap f (x:xs) = (f x) : (mymap f xs)

mysum [] = 0
mysum (x:xs) = (+) x (mysum xs)

myprod [] = 1
myprod (x:xs) = (*) x (myprod xs)


myand [] = True
myand (x:xs) = (&&) x (myand xs)


myfoldr op e [] = e
myfoldr op e (x:xs) = op x (myfoldr op e xs)

k x = \ y -> x

plusn n = (\ x -> x + n)

x = [1,2,3,4]
y = ["a","b","c","d"]

next n a = (a + (n/a) )/ 2.0

within eps (a : b : rest) =
  if abs( (a/b) -1.0 ) <= eps
     then b
     else within eps (b : rest)

split 0 x = ([],x)
split n [] = ([],[])
split n (x:xs) = (x:ys,zs) 
                  where (ys,zs) = split (n-1) xs
--