-- Last element of a list:
--last [x] = x
--last (_:xs@(_:_)) = last xs
--last xs | ys ++ [e] == xs = e
-- where ys,e free
last xs | _ ++ [e] == xs = e
where e free
-- Is a given element memeber of a given list?
member e xs | _ ++ (e : _) == xs = True
-- Is a given list part of another given list?
sublist xs ys | _ ++ xs ++ _ == ys = True
someElem xs | member x xs = x where x free
-- Prototype of a non-deterministic operation
--(?) :: a -> a -> a
--x ? y = x
--x ? y = y
coin :: Int
coin = 0 ? 1
--coin = 0
--coin = 1