Боюсь, что у Prolog нет назначений переменных, как вы привыкли, просто привязка переменных. Так что "заявление"
N = 1.
append([N], [2,3,4], Z).
на самом деле представляют собой два совершенно несвязанные запросов. К счастью, эффект вы хотите может быть достигнуто путем объединения ваших запросов:
N = 1, append([N], [2,3,4], Z).
Если вы действительно нуждаетесь в глобальную переменную, вы всегда можете использовать факт или asserta/1
определить один динамически.
Также обратите внимание: в будущем вы, вероятно, захотите убедиться, что используете is
вместо =
при работе с цифрами.
Дьявол в деталях. "" vs "," все изменилось. – CyberShot
@ daniel-lyons: использование 'is' медленнее, чем' = ', поскольку оценивается правая часть, даже если это простое число. Очевидно, что это может зависеть от конкретной системы Пролога, а эффект минимален, но для сырой скорости используйте унификацию. – twinterer
@twinterer Мое замечание о 'is' связано с тем фактом, что новички, которые набирают' N = 1 + Y', обычно нуждаются в дополнении. :) –