Допустим, я хочу создать граф зависимостей правил для программы на Прологе на Прологе. Например, следующая программа
foo(X) :- bar(X, 0).
bar(A, B) :- quux(A), coox(B).
baz.
приведет к тому, что следующее будет истинным (с использованием assert
):
depends(foo, [bar]).
depends(bar, [quux, coox]).
depends(baz, []).
Или что-то вроде приведенного выше, которое я мог бы легко использовать для построения графика. Подход, о котором я думал, заключается в чтении строк входного файла в виде строк и выполнении над ними простого поиска и замены, но это выглядит уродливым, не-Prolog-подобным взломом. Есть ли другие варианты, которые используют металогические возможности Пролога?