пролог Ошибка существования: процедура не существует

Existence error in user:nth1/3
! procedure user:nth1/3 does not exist

Я включил модуль для списков:: - use_module (library (lists)). но по-прежнему получаю эту ошибку ..

Кто-нибудь может помочь?


person Android_enthusiast    schedule 17.11.2010    source источник
comment
Какую систему пролога вы используете? Пробую в swi-prolog 5.8.3 и nth1 / 3 доступен по умолчанию (автозагрузка библиотеки списков).   -  person src    schedule 17.11.2010
comment
SICStus 3.12.1 .. разве он не встроен в sicstus?   -  person Android_enthusiast    schedule 17.11.2010
comment
Я не знаком с SICStus, но, заглянув на их веб-сайт, я обнаружил, что nth1 / 3 присутствует в SICStus 4, но не в SICStus 3. Можете ли вы использовать вместо этого nth0? Единственная разница в том, что он начинает отсчет с 0 вместо 1.   -  person src    schedule 18.11.2010


Ответы (1)


В SICStus 3 попробуйте использовать nth/3 вместо nth1/3 - последнего в lists библиотеке нет.

Если ваш код действительно вызывает user:nth1( , , ), тогда nth1/3 (или что-то еще, что вы указали с префиксом user:) необходимо определить в модуле user для пользовательского кода, что, похоже, не так в вашей среде, учитывая ошибку, которую вы описано. В этом случае попробуйте еще раз без префикса модуля user:. Если предикат является системным и определенно загружен, система PROLOG должна найти его автоматически. Если это невозможно, PROLOG предположит, что это то, что вы должны были определить в модуле user, поэтому он может искать там.

person Community    schedule 18.11.2010