# [SWIPL] Variables for predicate names

**Ulrich Neumerkel
**
ulrich@complang.tuwien.ac.at

*Fri, 01 Oct 2010 10:57:26 +0200*

Richard O'Keefe:
>*Recall how the call/N predicates first proposed in the Mycroft/O'Keefe
*>*type checking paper in AI Journal...
*
Please remark that in aforementioned paper you write on p.305:
|* ... a family of predicates with types given by
*|*
*|* pred apply(pred(alpha), alpha), apply(pred(alpha,beta), alpha,beta), ...
*|*
*|* The only way to introduce objects of type pred is by a special piece of syntax
*|* given by
*|* Term ::= lambda Var* . Atom . % actually a middle-dot
*
later:
|* map(F, cons(A,L), cons(B,M)) :- apply(F,A,B), map(L,M)
*|* map(F, nil, nil) :- % ^^^^^^ sic
*|*
*|* neglist(X, Y) :- map(lambda(A,B).negate(A,B), X,Y)
*|*
*
There is no mentioning that neglist could be more compactly:
neglist(X, Y) :- map(negate, X,Y)
Which is quintessential to call/N. So call/N isn't there yet, but a
precursor restricted to some lambdas.
My estimate is that call/N must have first appeared in 1985..1987.