added instance to Result
eased up Monad P
added Applicative Result
simplefied 'Applicative P' and 'Monad P'