пролог: уменьшить, а затем записать значение предиката - PullRequest
3 голосов
/ 18 мая 2010

Это часть кода, который я пишу

assert(bar(foo)),
assert(foo(bar-5)),

Я не уверен, что это работает, хотя. Я пытаюсь заставить его уменьшить foo на 5. Мне нужен способ записать значение foo, но я тоже не нашел способ. write('foo is' + foo) было бы логичным путем для меня, но, похоже, не работает.

1 Ответ

1 голос
/ 18 мая 2010

Чтобы иметь возможность использовать значение факта, вы должны сначала унифицировать его. Объединение выполняется передачей несвязанной переменной в качестве аргумента предикату, - bar(Moo) в нашем случае:

facts
    bar(integer)
    foo(integer)

goal
    assert(bar(42)),
    bar(Moo),
    Baz = Moo - 5,
    assert(foo(Baz)),
    write(Baz).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...