У меня есть список X, содержащий три элемента; ID, имя и класс. Все взято с пользовательского вводаРаспечатка элементов списка в прологе
read_student_info([A, B, C]),
nl, nl, menu([[A, B, C] | X]).
read_student_info([A, B, C]) :-
write('\tStudent ID: '),
read(A),
write('\tStudent Name: '),
read(B),
write('\tStudent Grade: '),
read(C).
Теперь я хочу отобразить элементы из списка. Поэтому, если у меня есть ученик, чей ID = 3, Name = Tom, Grade = 78. Вот что я хотел бы распечатать. Текущая функция Я дурачиться с это:
show_records(X) :-
X = [A | B],
A = [C | D],
id = write(C),
name = format("~s", [B]),
grade = write(D),
show_records(B).
Однако я буду первым, чтобы признать, что я почти не понятия, что я делаю. Любая помощь будет очень оценена!
Я предлагаю вам использовать только один раз явное унификацию '=/2': если вместо' X = [A | B] 'вы пишете' X = [[C, E, G | _] | B] 'и избавиться от других явных унификаций, ваша программа станет более читаемой. И, кстати, если ваш 'H' is' [] ', то это подсписка имеет только 3 элемента, тогда вы должны написать' X = [[C, E, G] | B] '. – migfilg