[SWIPL] Variables for predicate names
Fri, 01 Oct 2010 10:57:26 +0200
>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
| 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.