instance Arrow (->) where arr f = f first f = f *** id second f = id *** f (***) f g ~(x,y) = (f x, g y)