寻找Prolog更紧凑的语法

时间:2017-11-20 22:01:23

标签: syntax prolog

Prolog是一门很好的语言。我偶尔偶尔使用它。

但是随后每次接近它都会让我在语法上感觉越来越不舒服。

现代编程语言正在转向

  1. 程序员少重复自己
  2. 如果可以推断,
  3. 省略不必要的部分,或者他们的名字只是占位符。
  4. DCG是向正确方向迈出的一步,允许人们写

     sentence --> noun_phrase, verb_phrase.
    

    而不是

     sentence(A,Z) :- noun_phrase(A,B), verb_phrase(B,Z).
    

    但它与差异列表的纠缠使其不那么有用。

    所以我正在寻找的是Prolog的项目 一个更紧凑的句法表示,同时保留其语义表达能力。

2 个答案:

答案 0 :(得分:4)

基于call/N的高阶编程仍然是一个非常未开发的地形。像SICStus Prolog这样的主要实现在2006年就增加了call/N。所以还有很多东西需要探索。使用here声明,考虑library(lambda)library(reif)}和其他定义。

答案 1 :(得分:0)

对于Swi-Prolog,您可能想要研究的一件事是Swi-Prolog 7特别引入的实际语言扩展:

http://www.swi-prolog.org/pldoc/man?section=extensions

另一件事是Quasi-Quotation库,它允许您在自己的语言中插入代码片段(使用DCG定义)" regular" Prolog代码:

http://www.swi-prolog.org/pldoc/man?section=quasiquotations

我可以推荐的最后一件事是其他Swi-Prolog软件包列表,其中一些是专门为扩展语言而设计的,例如: ' func',' lambda'等:

http://www.swi-prolog.org/pack/list