:- module(pio, [ run/0 ]). :- op(950,fy, [$]). $(X) :- copy_term_nat(X,Y),numbervars(Y,0,_),portray_clause(call:Y), X, copy_term_nat(X,Z),numbervars(Z,0,_),portray_clause(exit:Z). :- load_foreign_files([plstream], [], initIO). run :- setup_call_cleanup( $swi_open(a,read,Stream), ( rider_to_lazy_list(Stream,Xs), $true,Xs = "a" ), $swi_close(Stream)). rider_to_lazy_list(Stream, Xs) :- swi_stream_property(Stream, position(Pos)), freeze(Xs,step(Stream, Pos)). step(Stream, Pos) :- $swi_set_stream_position(Stream, Pos).