2016-10-27 3 views
0

Я новичок в Prolog, и я хочу выполнить операцию типа append/3 над двумя списками, которые сохраняются в моей программе. Мне не нужно открывать swi-пролог и введите append([a,b,c],[h,j,k],X)., чтобы получить X=[a,b,c,h,j,k]. Мне нужно что-то вроде получения двух списков из программы и выполнения добавления над ними. Я даже не знаю, возможно ли то, что я хочу получить, в Prolog.Операции над списками в Prolog

Это моя ситуация: Я получил этот файл «esempio.pl», где у меня есть следующее правило, и эти два факта:

personal_union(F,C,Xs) :- 
    personal_list(F,Fs),personal_list(C,Cs),append(Fs,Cs,Xs). 
personal_list(family,[alessandro,cinzia,fabio]). 
personal_list(colors,[blu,giallo,lilla,verde,rosso]). 

я хотел бы, чтобы вопрос «esempio.pl» от SWI- пролог и спросить его:

personal_union(family,colors,X). 

и получить единые списки:

X=[alessandro,cinzia,fabio,blu,giallo,lilla,verde,rosso]` 

Является ли мой код возможное решение? Я не мог попробовать это сам, потому что он продолжает давать мне эту ошибку: Ошибка синтаксиса: незаконный старт термина, заявляющий, что ошибка находится в начале тела моего правила.

ответ

0

Ваш код действителен, так как я тестировал его на Swish и выдает запрошенный результат.

Ошибка, которую вы получаете, обычно выводится из ошибочного синтаксиса, такого как дополнительные запятые или скобки. Проверьте остальную часть кода. Кроме того, вы можете найти http://swish.swi-prolog.org/ удобными для такой отладки.

+0

только для информации, я допросил программу, несмотря на уведомление об ошибке, и получил то, что искал. Спасибо! –

+1

@AlessandroSassi: вы должны принять этот ответ ... – CapelliC

+0

@AlessandroSassi По-прежнему непонятно, какую ошибку вы получите и почему. –

Смежные вопросы