布尔运算符,一流函数

时间:2018-03-20 20:24:40

标签: dafny

看起来内置的布尔运算符不是Dafny中的第一类函数,因为下面的代码不能编译。我错过了什么吗?作为解决方法,我假设我们可以在自己的函数中包含内置函数。

datatype binOp = X 

function evalOp(o: binOp): bool -> bool
{
    match o
    {
        case X => &&
    }
}

顺便说一句,错误消息是“无效的UnaryExpression”。

1 个答案:

答案 0 :(得分:1)

不,Dafny不会将&&之类的运算符视为函数值。

正如您所猜测的,您可以包装运算符以创建函数。在您的示例中,这样的事情可能会起作用。

case X => (x, y) => x && y

如果您计划大量使用该功能,您可能更愿意为其命名。