type PartialIntInt = Int -> (Maybe Int)

comp f g x = (f x >>= g)

union f g n | (f n == Nothing) = g n
            | otherwise        = f n


Ovviamente stiamo considerando il concetto matematico di
funzione parziale (non definita cioe' sull'intero dominio)
e non stiamo tenendo conto che in haskell una funzione e' un algoritmo
e quindi qualsiasi funzione haskell e' parziale (puo' cioe' divergere
su alcuni input)
