2
declare
fun {Beta E}
    case E
    of lambda(X [Y Z]) andthen {IsAtom Y}  then Z
    else nil 
     end
    end

{Browse {Beta lambda(y [y a])   }}

我正在尝试为 lambda 演算制作 beta reducer,但我不知道如何为我刚开始使用的 Oz 添加参数。

我想做的是: IsAtom Y and if(X==Y) then Z

我试过“and, &&, &, andthen”,但没有任何效果。Oz 文档只是让我头疼。

4

2 回答 2

1

在 Oz 中,And是函数而不是运算符。所以要做一个和操作你会做类似的事情

{And true false}

将产生false

是一个很好的参考手册。

于 2015-09-23T04:03:17.190 回答
1

请记住,“then”是语句语法中的分隔符,“andthen”和“orelse”是布尔(短路)运算符

案例陈述:

PATTERN 的 case VALUE 然后 STATEMENT

IF声明:

if BOOLEXP then 语句

BOOLEXP: BOOLEXP 然后 BOOLEXP orelse BOOLEXP

于 2015-09-23T04:04:57.660 回答