diff --git a/examples/demo.pl b/examples/demo.pl index ce07040..405ed33 100644 --- a/examples/demo.pl +++ b/examples/demo.pl @@ -52,11 +52,11 @@ choice(_) :- write('DEMO: Invalid choice, please try again: '), read(Choice), ch run_login_example :- say('Loading login example...'), - consult('examples/basics/repeat.pl'), - consult('examples/basics/password.pl'), + consult_once('examples/basics/repeat', true, true), + consult_once('examples/basics/password', true, true), say('Showing login/0'), say('You might try logging in with tibo/noaccess and john/john1.'), - login, login_example_loop, !, + login, !, login_example_loop, say('Login example finished.'). login_example_loop :- @@ -64,10 +64,10 @@ login_example_loop :- run_summer_example :- say('Loading summer example...'), - consult('examples/basics/summer.pl'), + consult_once('examples/basics/summer', clear, summer_main), say('Showing my_sum/1'), say('You might try summing 1 to 9.'), - my_sum, summer_example_loop, !, + my_sum, !, summer_example_loop, say('Summer example finished.'). summer_example_loop :- @@ -75,7 +75,7 @@ summer_example_loop :- run_mib_voorbeelden_example :- say('Loading mib_voorbeelden example...'), - consult('examples/meta/mib_voorbeelden.pl'), clear, + consult_once('examples/meta/mib_voorbeelden', clear, true), say('Showing example1/0'), example1, next(( say('Showing example2/0'), example2, next(( say('Showing example3/0'), example3)))), @@ -83,21 +83,21 @@ run_mib_voorbeelden_example :- run_ceremony_example :- say('Loading ceremony example...'), - consult('examples/meta/ceremony.pl'), clear, + consult_once('examples/meta/ceremony.pl', clear, true), say('Showing ceremony_main/0'), ceremony_main, say('Ceremony example finished.'). run_continuations_example :- say('Loading continuations example...'), - consult('examples/meta/continuations.pl'), clear, + consult_once('examples/meta/continuations.pl', clear, true), say('Showing continuations_main/0'), continuations_main, say('Continuations example finished.'). run_my_list_example :- say('Loading my_list example...'), - consult('examples/meta/my_list.pl'), + consult_once('examples/meta/my_list.pl', true, true), say('Showing my_member/2'), showcase(my_member(X, a(b(c))), 'X', X), continue, @@ -107,8 +107,8 @@ run_my_list_example :- run_interpreter :- say('Loading interpreter...'), - consult('examples/meta/ground.pl'), - consult('examples/meta/interpreter.pl'), + consult_once('examples/meta/ground.pl', true, true), + consult_once('examples/meta/interpreter.pl', true, true), say('Showing interpreter/0'), say('Have fun!'), interpreter, @@ -119,9 +119,9 @@ run_interpreter :- % % % % % % % % % % % yes_or_no(Question, IfYes, IfNo) :- - write(Question), write(' (y/n): '), + write(Question), write(' (y/n) '), read(Answer), - ( ( was_yes(Answer), !, call(IfYes)) ; ( was_no(Answer), !, call(IfNo))). + ( ( was_yes(Answer), !, (call(IfYes) ; true)) ; ( was_no(Answer), !, (call(IfNo) ; true))). was_yes(y). was_yes('Y'). @@ -162,3 +162,10 @@ clear(N) :- nl, M is N - 1, clear(M). + +consult_once(File, _, Subsequent) :- + consulted(File), !. +consult_once(File, First, _) :- + consult(File), + call(First), + assert(consulted(File)).