3

I want a specific rule for reading user input data in SWI-Prolog, something like:

process( ... ) :-
    % do_stuff
    read_values( ... ),
    % do_more_stuff with X and Y here.

read_values( ... ) :-
    write('Please enter X: '),        
    read(X),
    write('Please enter Y: '),        
    read(Y).

Is that possible?

false
  • 10,264
  • 13
  • 101
  • 209
vmassuchetto
  • 1,529
  • 1
  • 20
  • 44

1 Answers1

3

Well you kinda already had the solution:

process :-
    % do_stuff
    read_values(A, B),
    % do_more_stuff with X and Y here
    atom_concat(A, B, C),
    writeln(C).

read_values(X, Y) :-
    write('Please enter X: '),        
    read(X),
    write('Please enter Y: '),        
    read(Y).

Example run:

?- process.
Please enter X: a.
Please enter Y: b.
ab
true.
m09
  • 7,490
  • 3
  • 31
  • 58