horsh
horsh

Reputation: 2779

less-like pager for (swi) prolog

The typical workflow in unix is to use a pipeline of filters ending up with a pager such as less. E.g. (omitting arguments)

grep | sed | awk | less

Now, one of the typical workflows in the swi-prolog's command line is asking it to give the set of solutions for a given conjunction like

foo(X),bar(X, Y),qux(buz, Y).

It readily gives me the set of soutions. Which can be much longer than the terminal window. Or a single query

give_me_long_list(X).

can give a very long list again not fitting on the screen. So I constantly find myself in situations where I want to slap |less at the end of the line.

What I am looking for is a facility to open in a pager a set of solutions or just a single large term. Something similar to:

give_me_long_list(X), pager(X).

or

pager([X,Y], (foo(X),bar(X, Y),qux(buz, Y))).

Upvotes: 3

Views: 206

Answers (1)

Felix Dombek
Felix Dombek

Reputation: 14372

This is not a complete solution, but wouldn't it be rather easy to write your own pager predicate? Steps:

  1. Create temp file

  2. dump X into temp file with the help of these or those predicates

    (I haven't done any I/O with Prolog yet, but it doesn't seem too messy)

  3. make a system call to less <tempfile>

Upvotes: 1

Related Questions