Одиночные переменные - это предупреждение , не ошибка.
Это должно напомнить вам, что у вас есть именованная переменная, встречающаяся в правиле только один раз.
Если вы хотите отключить предупреждение для этой конкретной переменной, переименуйте его в имя, начинающееся с подчеркивания (например, _Y
), например ::
happy(X) :- parent(X, _Y).
или переименуйте его в _
( анонимная переменная ), например ::
happy(X) :- parent(X, _).
Этот тип предупреждения очень полезен для обнаружения опечаток, например, имя переменной с ошибкой:
happy(Child) :- parent(Chidl, Parent), happy(Parent).
Предупреждение: синглтонные переменные: [Child, Chidl]
или другие опечатки, например, точка, введенная вместо запятой:
happy(Child) :- parent(Child, Parent). happy(Parent).
Предупреждение: одиночные переменные: [Parent]
Предупреждение: одиночные переменные: [Parent]
или другие логические ошибки.
Без предупреждения об одноэлементной переменной эти ошибки останутся незамеченными и их будет сложнее отследить.
То есть, когда вы видите это предупреждение, оно обычно звонит в колокольчик и ищет другие типы ошибок. Если других ошибок нет, просто исправьте переменную singleton, сделав ее анонимной.
Если вы знаете, что делаете, вы можете глобально отключить предупреждение с помощью:
:- style_check(-singleton).