【问题标题】:Looking for a more compact syntax for Prolog为 Prolog 寻找更紧凑的语法
【发布时间】:2017-11-20 22:01:22
【问题描述】:

Prolog 是一门不错的语言。我偶尔使用它,不时使用它。

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

现代编程语言正在允许

  1. 程序员少重复自己
  2. 如果可以推断出不必要的部分,则省略它们,或者它们的名称只是占位符。

DCG 是朝着正确方向迈出的一步,允许人们写作

 sentence --> noun_phrase, verb_phrase.

而不是

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

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

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

【问题讨论】:

  • 这不是 Stack Overflow 的合适问题。我强烈建议您将此查询发送到邮件列表。
  • @Daniel Lyons 什么邮件列表?
  • 不过你可能会喜欢Picat
  • 看看Brachylog,这是一种基于 Prolog 的语言,用于打代码(可能对你来说太紧凑了)。它具有隐式变量、许多内置谓词、取决于类型的谓词重载以及用于算术的强制 CLP(FD)。
  • @Fatalize:哇!!

标签: syntax prolog


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    另一件事是准引用库,它允许您在“常规”Prolog 代码中插入您自己的语言(使用 DCG 定义)的代码片段:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 2017-07-03
      相关资源
      最近更新 更多