(swi)prolog不那么像寻呼机

时间:2010-11-19 22:02:07

标签: prolog swi-prolog pager less

unix中的典型工作流程是使用一个过滤器管道,最后是一个寻呼机,例如less。例如。 (省略参数)

grep | sed | awk | less

现在,swi-prolog命令行中的一个典型工作流程是要求它为给定的连接提供一组解决方案,如

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

它很容易给我一套灵魂。这可能比终端窗口长得多。或单个查询

give_me_long_list(X).

可以再次给出很长的列表,不适合屏幕。因此,我经常发现自己处于需要在行尾打了|less的情况。

我正在寻找的是在寻呼机中打开一套解决方案或仅仅是一个大型术语的工具。类似于:

give_me_long_list(X), pager(X).

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

1 个答案:

答案 0 :(得分:0)

这不是一个完整的解决方案,但编写自己的pager谓词不是很容易吗?步骤:

  1. Create temp file

  2. 借助thesethose谓词
  3. X转储到临时文件中

    (我还没有和Prolog做任何I / O,但它看起来并不太杂乱)

  4. make a system call to less <tempfile>