【问题标题】:Boolean operators, first-class functions布尔运算符,一等函数
【发布时间】:2018-08-29 19:34:33
【问题描述】:

似乎内置布尔运算符不是 Dafny 中的一流函数,因为以下代码无法编译。我错过了什么吗?作为一种变通方法,我假设我们可以将内置函数包装在我们自己的函数中。

datatype binOp = X 

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

顺便说一句,错误消息是“Invalid UnaryExpression”。

【问题讨论】:

    标签: dafny


    【解决方案1】:

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

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

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

    如果您打算经常使用该函数,您可能更愿意为其命名。

    【讨论】:

      猜你喜欢
      • 2015-10-22
      • 2012-04-07
      • 2017-01-09
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 2011-09-27
      • 2011-03-27
      相关资源
      最近更新 更多