Deriving via first-class functions