Пролог - Переменная как оператор - PullRequest
4 голосов
/ 01 октября 2011

У меня есть оператор, хранящийся в переменной Op, и два целых числа хранятся в X и Y. Теперь я хочу сделать что-то вроде (Z - X Op Y), но этот синтаксис, кажется, не является правильным.

Кто-нибудь знает, есть ли способ сделать это в Прологе?

Спасибо за ваши ответы

Ответы [ 2 ]

10 голосов
/ 01 октября 2011

вы можете сделать это, построив предикат с помощью оператора = ...

попробуйте это так:

compute(X,Y,Op,Z) :-
   Eq=..[Op, X, Y],
   Z is Eq.

Оператор действительно такой же, как любой другой функтор.

0 голосов
/ 01 октября 2011

Вы можете имитировать эффект:

operator(Z,X,plus,Y):-Z is X + Y.  
operator(Z,X,times,Y):-Z is X * Y.

Я пробовал это на ideone.com для SWI-Prolog с:

OP=times, operator(Z,3,OP,8).

И я получил:

OP = times,
Z = 24.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...