Нужна помощь в написании простой сортировки вставкой в ​​Prolog - продолжайте получать ошибки

У меня есть простое задание - написать сортировку вставками на Прологе. Вот инструкции:

(10 баллов) insertSort (List, Sorted) Напишите программу сортировки вставками в прологе. Вы можете считать, что все элементы списка являются числами.

По сути, я должен дать ему список, и он вернет список отсортированных значений. После полной неудачи при написании этого самого (хотя мой кажется похожим на все остальное - см. Мой код, опубликованный ниже), я решил обратиться за помощью в Интернете. Я буквально пробовал каждый пример сортировки вставки, который я нашел в Интернете для пролога ... и ни один из них не работал. Ни одного.

Не понимаю почему. Может быть, это потому, что я должен использовать пролог SWI.

Я получаю две следующие ошибки:

ERROR: toplevel: Undefined procedure: insertionSort/2 (DWIM could not correct goal)

ERROR: toplevel: Undefined procedure: insertionSort/3 (DWIM could not correct goal)

Мне так надоела эта глупая ошибка. Это никоим образом не помогает. Почему, когда я делаю то же самое, что и для вызова другой простой процедуры (процедура суммирования), компилируя файл, а затем вызывая то, что я хочу, это работает, но с этой функцией InsertSort - нет? Я уверен, что не называю это неправильно.

Вот мой код. Ничего подобного.

insertionSort([],[]) :-
   !.
insertionSort([H|T], X) :-
   insertionSort(T, Y),
   insert(H, Y, X).

insert(A, [], [A]) :-
   !.
insert(A, [H|T], [A|L]) :-
   A =< H,
   insert(H, T, L).
insert(A, [H|T], [H|L]) :-
   A > H,
   insert(A, T, L).

Как я уже сказал, я уже пробовал, вероятно, 2 дюжины + примеров в Интернете, и все они выдают сообщения об ошибках, поэтому, если ваш ответ - связать меня с чем-то, я могу гарантировать, что я уже исчерпал его (например, это: Сортировка вставки Prolog - разве не похоже, что это сработает? Ну, это не так.)

Пожалуйста, я так расстроен. Любая помощь приветствуется.


person lovechicken    schedule 03.05.2015    source источник
comment
Если вы уверены, что запрашиваете правильно. Вы могли загрузить не тот файл. В сообщении об ошибке, которое вы там повторили, говорится, что вы пытаетесь вызвать процедуру, которой нет. Получаете ли вы какие-либо предупреждения / ошибки после просмотра программы?   -  person Patrick J. S.    schedule 04.05.2015
comment
Если вам не нужны файлы и установка SWI, вы можете использовать его онлайн-интерпретатор ( Конечно, он несколько ограничен, но должен соответствовать вашим потребностям.   -  person Eugene Sh.    schedule 04.05.2015
comment
Теперь, каждый раз, когда я выполняю команду, она говорит «ложь». Включая другие мои методы, которые работали раньше. x_x   -  person lovechicken    schedule 04.05.2015
comment
Опишите вашу среду, шаги и покажите код и запросы.   -  person Eugene Sh.    schedule 04.05.2015
comment
Если вы считаете, что предикаты загружены / определены в SWI-Prolog, выполните запрос ?- listing. This отобразит все предикаты, определенные в текущем модуле (вероятно, это модуль по умолчанию user, если вы не используете функцию модулей активно).   -  person hardmath    schedule 04.05.2015
comment
Угадай, что? Я схожу с ума. Сегодня я пошел к своему профессору, чтобы узнать, в чем заключалась сделка. Он зашел в нашу лабораторию Linux, где я работал, вызвал процедуру ... и она сработала отлично. Понятия не имею, почему раньше это не сработало. Я думаю, программа была шаткой или что-то в этом роде. В любом случае, мой код идеален, и я думаю, что, возможно, я не называл его с большой буквы. Спасибо за все ваши ответы!   -  person lovechicken    schedule 04.05.2015


Ответы (1)


Это была странная машина. Мой код был идеальным. Это сработало просто отлично. Я не знаю, откуда взялись эти ошибки

также я не знаю, как отметить этот вопрос как ответ

person lovechicken    schedule 04.05.2015