代码之家  ›  专栏  ›  技术社区  ›  Flux

在序言中:-和?-有什么区别?

  •  5
  • Flux  · 技术社区  · 7 年前

    这个Prolog程序打印 Hello :

    main :-
        write('Hello'), nl.
    
    :- main.
    

    (:-)/1 (?-)/1

    main :-
        write('Hello'), nl.
    
    ?- main.
    

    这会产生完全相同的结果。这也会打印 .

    (:-)/1 (?-)/1 ?

    3 回复  |  直到 7 年前
        1
  •  4
  •   mat    7 年前

    带主函子的项论元 (:-)/1 被称为 指令

    此外,5.5.5规定:

    处理器可以支持一个或多个附加指令 指标(7.4.2)作为具体实施特征。

    所以,在一些Prolog系统中, (?-)/1

        2
  •  4
  •   false    7 年前

    在ISO Prolog中, :- ?-

    这些操作符源于1978年的DEC系统10 Prolog,在那里它们分别被称为command和question。而 :- p(X). p(X) 咨询期间, ?- p(X). 显示实际答案并提示进一步回答。因此,在加载文件时得到了一些交互,这在随后的系统中被放弃,使得两个操作符的行为方式相同。

    自12月10日以来,许多系统都在打印 ?- | 在它前面。

        3
  •  2
  •   Paulo Moura    7 年前

    :- ?- 在ISO Prolog核心标准中指定为前缀运算符:

    Priority   Specifier   Operator(s)
    ...
    1200       fx          :- ?-
    

    这个 ?- :-

    推荐文章