2
我知道,在莫德您可以通过以下方式之一定义的操作:Maude-system可以有一个操作有两个以上的操作数吗?
op operation_: Nat -> Bool . // for 1 operands
op _operation_: Nat Nat -> Bool . // for 2 operands
但是,有没有办法来定义operataion这样将会有更多的操作数?
我知道,在莫德您可以通过以下方式之一定义的操作:Maude-system可以有一个操作有两个以上的操作数吗?
op operation_: Nat -> Bool . // for 1 operands
op _operation_: Nat Nat -> Bool . // for 2 operands
但是,有没有办法来定义operataion这样将会有更多的操作数?
我想三元条件运算符(来自Basic Maude)应该是一个很好的例子:“函数名中下划线的存在意味着我们使用的是mixfix,其思想是函数的每个参数都将替换。下划线。例如,考虑
op if_then_else_fi : Bool Nat Nat -> Nat .
然后我们可以应用此操作是这样的:
if B then X else Y fi
其中B是一个布尔值,和X和Y是纳茨”
运营商元数没有限制在manual(读pp.33-35拥抱运营商申报的全功率)提到,所以
op _ _operation_ _ _: Nat Nat Nat Nat Nat -> Bool . // for 5 operands
应该没问题了。我想在某些时候你应该达到特定的实现,平台或内存限制。
如果您这样做,会出现以下错误:“下划线(2)的数量与运算符_operation_的参数个数(5)不匹配。” –
显然“如果下划线应该与arity相匹配”。再加几个下划线,或者完全删除 – Serge
工作正常,欢呼队友。 –