Prolog是一门很好的语言。我偶尔偶尔使用它。
但是随后每次接近它都会让我在语法上感觉越来越不舒服。
现代编程语言正在转向
DCG是向正确方向迈出的一步,允许人们写
sentence --> noun_phrase, verb_phrase.
而不是
sentence(A,Z) :- noun_phrase(A,B), verb_phrase(B,Z).
但它与差异列表的纠缠使其不那么有用。
所以我正在寻找的是Prolog的项目 一个更紧凑的句法表示,同时保留其语义表达能力。
答案 0 :(得分:4)
基于call/N
的高阶编程仍然是一个非常未开发的地形。像SICStus Prolog这样的主要实现在2006年就增加了call/N
。所以还有很多东西需要探索。使用here声明,考虑library(lambda)
,library(reif)
(meta-predicate}和其他定义。
答案 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'等: