See FunctionalProgrammingLanguage.