【问题标题】:Where can I find a list of Prolog commands?在哪里可以找到 Prolog 命令的列表?
【发布时间】:2011-10-27 22:08:08
【问题描述】:

我是 Prolog 的新手,正在尝试做一个程序来检查某些值是否可以是日期,但我不知道我能用这种语言做什么。我不知道命令。

例如,我想得到一个字符串的长度,但我不知道这是否可行。

有人可以给我看 Prolog 命令的列表吗?我正在为 Java 使用 tuProlog。

顺便说一句,我要做的程序是这样的:接收两个或三个参数并检查是否是某种类型的日期(例如:10/2000、2011/09、11/03/1191 等) .

【问题讨论】:

    标签: date prolog command tuprolog


    【解决方案1】:

    您可以查看 tuProlog at this location 的用户指南 第 4.4 节介绍了内置谓词。

    此链接也可能会有所帮助。 Working with strings in Prolog

    对于解析,鉴于 tuProlog 中的库之一是用于 DCG 的: Prolog DCG presentation

    您还可以在 Stackoverflow 中搜索 Prolog 和 dcg 以查看其他人的问题和答案。

    【讨论】:

      【解决方案2】:

      SICStus Prologdocumentation 描述了它的标准库。我不完全确定它的哪些部分是或不是 Prolog 实现的标准,但它可能会对您有所帮助。

      【讨论】:

        【解决方案3】:

        tuProlog 的用户指南很容易找到:Documentation。第 5 章包含可供您使用的 Prolog 命令。

        根据您的问题,我推断您收到的是字符串形式的日期,但您不确定日期字符串以哪种格式到达。

        我会查看text_term/2 以将字符串转换为一个术语(我不是 100% 确定,我使用的 Prolog 系统有一个不同命名的谓词)。然后,您可以通过将 Term 与所需结构的 Term 统一来测试它是否包含一个或两个斜杠(或者是另一种格式或根本不是日期):

        Term = D/M/Y
        

        并测试这是否是一个有效的日期:

        text_term(Text,Term),
        ( Term = D/M/Y, valid_date(D,M,Y) ->
          true
        ; Term = M/D/Y, valid_date(D,M,Y) ->
          true
        ; ...
        

        -> 是“if-then”,; 是“else”。 您需要编写一个谓词来测试有效日期,我在上面称之为valid_date/3

        【讨论】:

          猜你喜欢
          • 2013-06-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-25
          • 1970-01-01
          • 2010-09-07
          • 1970-01-01
          相关资源
          最近更新 更多