          Lecture 4 - Page 2 : 34
 Functional Programming in SchemeHigher-order Functions * Introduction to higher-order functions Higher-order functions Some simple and general higher-order functions Linear search in lists Generation of list selectors * Mapping and filtering Classical higher-order functions: Overview Mapping The mapping function Examples of mapping Filtering The filtering function Examples of filtering * Reduction and zipping Reduction The reduction functions Accumulation Zipping The zipping function * Currying The idea of currying Currying in Scheme Examples of currying Ad hoc currying in Scheme (1) Ad hoc currying in Scheme (2) * Web related higher-order functions HTML mirror generation HTML mirror usage examples Making tables with the real mirror Tables with higher-order functions HTML element modifications The function simple-html-table The XHTML mirror in LAML Generation of a leq predicate from enumeration
 Higher-order functions The idea of higher-order functions is of central importance for the functional programming paradigm. As we shall see on this and the following pages, this stems from the fact that higher-order functions can be further generalized by accepting functions as parameters. In addition, higher-order functions may act as function generators, because they allow functions to be returned as the result from other functions.
 A higher-order function accepts functions as arguments and is able to return a function as its result A higher-order language supports higher-order functions and allows functions to be constituents of data structures

 The order of dataOrder 0: Non function dataOrder 1: Functions with domain and range of order 0Order 2: Functions with domain and range of order 1Order k: Functions with domain and range of order k-1 Order 0 data have nothing to do with functions. Numbers, lists, and characters are example of such data.Data of order 1 are functions which work on 'ordinary' order 0 data. Thus order 1 data are the functions we have been concerned with until now.Data of order 2 - and higher - are example of the functions that have our interest in this lecture.

 Functions of order i, i >= 2, are called higher-order functions
 Foldoc: higher order function