Итак, я пытаюсь избавиться от предложения-оболочки, используя предикат библиотеки сортировки непосредственно внутри разделения. Что делает split, так это просто генерирует список чисел из списка, который выглядит так: [1:2,3:2,4:6] ---split--> [1,2,3,2,4,6 ]. Но сгенерированный список содержит дубликаты, и я этого не хочу, поэтому я использую оболочку для объединения разделения и сортировки, которая затем генерирует желаемый результат: [1,2,3,4,6].
Мне бы очень хотелось избавиться от оболочки и просто использовать сортировку внутри разделения, однако я продолжаю получать сообщение «ОШИБКА: сортировка / 2: аргументы недостаточно созданы». Любые идеи? Спасибо :)
split([],[]).
split([H1:H2|T],[H1,H2|NT]) :-
split(T,NT).
wrapper(L,Processed) :-
split(L,L2),
sort(L2,Processed).
[1:2,3:2,4:6]
мне кажется странным, для чего он нужен? а что этоins(T,NT)
? - person false   schedule 15.11.2012split/2
. Это невозможно! - person false   schedule 15.11.2012wrapper/2
, вы никогда не получите это сообщение об ошибке, потому что после успешного выполненияsplit(L,L2)
переменнаяL2
будет правильно сформированным списком. Ваша программа, кажется, сейчас в порядке. - person false   schedule 15.11.2012sort(split(L),Processed)
? В Прологе это невозможно: нет функций — есть только отношения. - person false   schedule 15.11.2012