Implemented Applicative

Note: The types align, but I have not proven them to be correct. Type
lego at it's finest.