Переменная не печатает все значение Пролог
Если я назначу что-то вродеprocess([[baby],[boy],[[is]dancing],[with],[[the][family]]],A)
, то это дает вывод как
A = [[baby],[boy],[[is]dancing],[with],[[..][..]]].
Я хочу, чтобы он показал все значения на терминале. Что-то вродеA = [[baby],[boy],[[is]dancing],[with],[[the][family]]].
2 ответа
Проблема в том, что верхний уровень усекает список, когда они отображаются. Вы можете настроить глубину максимальной вложенности с помощью флага пролога. toplevel_print_option
с опцией max_depth(0)
со значением 0, чтобы показать все.
Вспомогательная процедура изменит флаг пролога, чтобы изменить только max_depth на 0, оставив остальные параметры без изменений:
set_toplevel_flags:-
current_prolog_flag(toplevel_print_options, Opts),
(select(max_depth(_), Opts, TOpts) -> NOpts=TOpts ; NOpts=Opts),
set_prolog_flag(toplevel_print_options, [max_depth(0)|NOpts]).
Использовать current_prolog_flag/2
предикат с toplevel_print_options
флаг. Что-то вроде этого:
?- current_prolog_flag(toplevel_print_options, X). X = [quoted(true), portray(true), max_depth(10), spacing(next_argument)].
Вы можете изменить max_depth
значение параметра, или же вы можете набрать w после получения сокращенного ответа, и пролог распечатает ответ полностью. Нажатие p восстановит исходный формат. Чтобы Prolog ждал ввода после печати ответа, вы можете добавить к запросу некоторую неопределенность, добавив ; true.
к этому. Для получения дополнительной информации см. Здесь.