Глядя на документацию Prolog, предикатные подписи иногда записываются следующим образом:
foo(:Bar, +Baz, -Qux, ?Mop)
Что такое :
, +
, -
и ?
для и как их интерпретировать? Кроме того, являются ли они единственными, которые существуют или их больше?