Re: list argument problem



On 2008-04-18, Keenlearner <yingun@xxxxxxxxx> wrote:
Hello, if I have the predicate which is unknown at first for its
nameand number of arguments. This predicate is bounded to a variable,
so Iwould like to call this predicate and get the result of the call,
theresult variable always appear at the last argument of the
predicate.for instance,

X = plus(1,2). %
X =.. [Function|Args].
/*
Function = plus
Args = [1, 2]
*/

call(Function,Args, Result).

call(Function, Args, Result) :-
append(Args, [Result], AllArgs),
Goal =.. [Function|AllArgs],
Goal.

?- call(plus, [1,2], X).
X = 3.

But if you need this, it is very likely you did something not very
clever at a bit higher level of the design.

Cheers --- Jan

Thecall/2..6 would append the args of 2,3...and so on to the Function.
Butthe problem is the Args in call predicate is a list and is
unexpectedby call predicate. How can I solve this ? Thanks.
.


Quantcast