代码之家  ›  专栏  ›  技术社区  ›  devoured elysium

在Prolog中定义运算符时出现问题

  •  7
  • devoured elysium  · 技术社区  · 14 年前

    divisible(X, Y) :-
        X mod Y =:= 0.
    
    divisibleBy(X, Y) :-
        divisible(X, Y).
    
    op(35,xfx,divisibleBy).
    

    '$record\u子句'/2:无权修改静态\u过程'op/3'

    我做错什么了?我想定义一个divisibleBy运算符,它允许我编写如下代码:

    4 divisibleBy 2
    

    2 回复  |  直到 14 年前
        1
  •  14
  •   Fred Foo    14 年前

    使用

    :- op(35,xfx,divisibleBy).
    

    :- 告诉Prolog解释器 评价 op/3 ).

        2
  •  2
  •   Community CDub    8 年前

    这个 answer given by @larsmans 对你原来的问题很在行。

    但是,你应该重新考虑 您应该定义一个新运算符。

    • 它可能很容易引入新的问题的地方,你通常不会期待小车。