Вы используете строчные термины, где, похоже, вы хотите переменные.
Атом message
в предикате writeAndFail
есть и всегда будет буквальным атомом message
.Он не объединится ни с чем, кроме буквального атома message
.
. Вызов writeAndFail(hello)
немедленно завершится неудачей, потому что нет предиката, который соответствует.То же самое верно для arg1
, arg2
в pred
.
Если вы вызываете pred
с буквальными аргументами, arg1
и arg2
и если throw действительно выбрасывает литерал 'message'
, то эти значения должны объединиться, и вы должны увидеть ожидаемые результаты.
В противном случае ваши переменные начинаются с заглавной буквы.