Completed applicatve.hs (mostly moved back from Apply.hs)