diff --git a/thun/gnu-prolog/Makefile b/thun/gnu-prolog/Makefile index f2d6ba1..a3dd65f 100644 --- a/thun/gnu-prolog/Makefile +++ b/thun/gnu-prolog/Makefile @@ -3,6 +3,10 @@ GPLC_OPTIONS="--min-size" thun: thun.pl parser.pl defs.pl main.pl gplc $(GPLC_OPTIONS) -o thun thun.pl parser.pl defs.pl main.pl -defs.pl: meta-defs.pl parser.pl defs.txt - gprolog --consult-file meta-defs.pl --consult-file parser.pl --query-goal do +defs.pl: meta-defs.pl parser.pl defs.txt thun.pl + gprolog \ + --consult-file meta-defs.pl \ + --consult-file parser.pl \ + --consult-file thun.pl \ + --query-goal do diff --git a/thun/gnu-prolog/meta-defs.pl b/thun/gnu-prolog/meta-defs.pl index da96665..d763561 100644 --- a/thun/gnu-prolog/meta-defs.pl +++ b/thun/gnu-prolog/meta-defs.pl @@ -14,11 +14,12 @@ assert_defs(DefsFile) :- phrase(joy_defs, Codes). assert_def(def(Def, Body)) :- + \+ func(Def, _, _), + \+ combo(Def, _, _, _, _), retractall(def(Def, _)), assertz(def(Def, Body)). - read_file_to_codes(File, Codes, _) :- open(File, read, Stream), stream_to_codes(Stream, Codes), @@ -32,6 +33,7 @@ stream_to_codes(Stream, Codes) :- stream_to_codes(-1, _, []) :- !. stream_to_codes(Ch, Stream, [Ch|Codes]) :- stream_to_codes(Stream, Codes). + print_defs :- findall(def(Name, Body), def(Name, Body), List), open(`defs.pl`, write, Stream),