Быстрый ответ: вы не хотите этого делать.
Более длинный ответ: предикат father/2
имеет определенное значение, а именно, что father(X,Y)
X
является отцом Y
. Предикат father/3
- это совсем другое дело. Чего вы хотите добиться с помощью этого третьего аргумента? Обычно вы используете дополнительные правила, которые выводят вещи из предиката father/2
или даже разрешают его в аргумент father/3
.
Остается главный вопрос: какова цель третьего аргумента? Если вы хотите, чтобы ваше разрешение работало для определенных конкретных 3-х аргументов, основанных, например, на существовании соответствующего father/2
предиката, вы можете сделать father(X, Y, 'something') :- father(X,Y)
, что будет успешным, если у вас есть соответствующий father/2
факт.
PS: Выучите свою терминологию. В Prolog мы не говорим о процедурах и не пишем функции. Вместо этого у нас есть предикаты, факты, правила, ...
PPS: Я не уверен, какую реализацию Prolog вы используете, но вы можете использовать 'something'
вместо "something"
. Последний обычно создает список кодов символов, а не строку:
?- X = 'some'.
X = some.
?- X = "some".
X = [115, 111, 109, 101].
person
Frank
schedule
24.03.2010