В Прологе, если я беру список, такой как [hello,this,is,a,sentence], в качестве параметра для предиката, как мне получить возвращаемое значение Y, чтобы он вернул этот список в виде строки с пробелами? например [привет,это,предложение] вернет привет, это предложение.
makesentence([H|T],Y):- % some code here
Я смог рекурсивно просмотреть список, и Y вернул тот же ввод списка с помощью этого:
makesentence([],[]). % base case returns an empty list
makesentence([X],[X]). % one list element returns that element in a list
makesentence([H|T],Y):- % a list of more than one element
makesentence(T,Result), % recursively call function on the tail
append([H],Result,Y). % append the head to the rest of the list
Но когда я пытаюсь сделать вывод без списка и с пробелами, я ошибаюсь. Я пробовал это:
makesentence([],'').
makesentence([X],X).
makesentence([H|T],Y):-
makesentence(T,Result),
append(H,Result,Y).
Я думаю, это связано с тем фактом, что предикат append
в Прологе имеет дело только с добавлением списка, но я не уверен. Как бы я поступил? Заранее спасибо.
atom_concat/3
может быть вашим билетом. - person Daniel Lyons   schedule 08.12.2015