Я пытаюсь создать список случайной длины, используя библиотеки lists
и clpfd
. Я пробовал следующее:
?- use_module(library(clpfd)).
?- use_module(library(lists)).
gen_mem_burst(X) :-
Len in 1..2,
length(X, Len).
Я вижу, что Prolog сначала находит решение только с одним элементом списка, а затем решение с двумя элементами, как я и ожидал. После этого он выдает сообщение «вне глобального стека». Я проследил его и заметил, что он постоянно пытается установить Len
в 3, 4, 5, ... и так далее. Как я могу остановить его?
Я новичок в Prolog, и я даже не уверен, что это действительная модель использования. В других языках, основанных на ограничениях, которые я использовал (например, SystemVerilog), это легко возможно.