Topic: higher-order functions and combinators

topics > computer science > programming > Group: function

curried functions
functional programming
reduction languages


Higher-order functions, combinators, functionals, and function modifiers take function calls as their arguments. They can rearrange the function and its arguments in any desired fashion. In this way it acts as a very powerful syntactic device. Backus's reduction language includes function modifiers. (cbb 5/80)
Subtopic: higer-order function and modularity up

Quote: use higher-order functions to glue together simple functions; e.g., vector sum as 'reduce add 0' and list concate as 'reduce cons b a' [»hughJ_1984]

Subtopic: combinators up

Quote: use combinators to find the value of a financial contract; compositional, abstract valuation semantics [»joneSP9_2000]
Quote: function-producing functions; e.g., thrice(f)(x) = f(f(f(x)))) [»landPJ1_1964]

Subtopic: meta operators change semantics up

Quote: a meta operator can rearrange an operator/operands and perform the altered operation [»backJ_1972]
Quote: meta operators provide almost any semantic ability without changing the simple syntax of Red languages [»backJ_1972]
Quote: after metacomposition, the operator of a sequence has the original sequence and operands as its operand; can rearrange and reapply at will [»backJ8_1978a]
Quote: in FQL, have a database of functions and a set of functionals that can operate on functions; e.g., extension and restriction [»buneP1_1981]

Subtopic: examples up

Quote: the apply_twice function modifier is polymorphic because it is independent of the operands type [»morrJH_1974]
QuoteRef: backJ_1972 ;;6 <(f g h)> application is <f<g>> this is regular composition
QuoteRef: backJ_1972 ;;7 meta operators indicated by * composition is <(*f g h)> -> i.e. f now has as its operand the application
QuoteRef: backJ_1972 ;;8 say -> (x x) and -> ( z) and ((w y) z) then fst= *(apply regrp) in <(fst dbl) (x y)> results in ((x x) y) i.e. modifies operator
QuoteRef: backJ_1972 ;;9 <(repeat op) (n x)> -> <(op op op...op) x>
QuoteRef: backJ_1972 ;;10 "The modifier fst is such that simply 'pairing it with op yields the desired operator, (fst op) ..."
QuoteRef: backJ_1972 ;;52 <(adjoin x) y> = (x y) where adjoin= *(car rot) and = x and = ((y z) x)
QuoteRef: wileDS11_1973 ;;27 x id:: x x rid v:: v identity and nullify operators
QuoteRef: wileDS11_1973 ;;35 x alternate y:: gen*; == <gen; gen; ...>==
QuoteRef: wileDS11_1973 ;;36 eg u rat v:: u conc (v gen*) == ==<u/gen; gen> == eg "3.7" rat "23" is "3.7232323..." sequence could terminate on precision requirements of
Quote: (functor (F X)) = (functor F) (functor X) [»fostJM6_1977]
Quote: APL has two function modifiers (reduction and cross product), but they can only combine with primitives

Related Topics up

Topic: curried functions (14 items)
Topic: functional programming (45 items)
Topic: reduction languages
(17 items)

Updated barberCB 6/04
Copyright © 2002-2008 by C. Bradford Barber. All rights reserved.
Thesa is a trademark of C. Bradford Barber.