Как использовать AND в языке программирования Oz

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])   }}

Я пытаюсь сделать бета-редуктор для лямбда-исчисления, но я не знаю, как добавить аргументы для Oz, которые я только начал использовать.

Что я хочу сделать, так это: IsAtom Y и если (X == Y), то Z

Я пробовал "и, &&, &, а затем", но ничего не работает. Документация страны Оз вызывает у меня головную боль.


person user1869558    schedule 23.09.2015    source источник


Ответы (2)


В стране Оз And — это функция, а не оператор. Итак, чтобы выполнить операцию and, вы должны сделать что-то вроде

{And true false}

Будет false

Вот хорошее справочное руководство.

person Shaunak    schedule 23.09.2015

Помните, что «тогда» — это разделитель в синтаксисе операторов, «и затем» и «или иначе» — логические операторы (короткое замыкание).

ЗАЯВЛЕНИЕ ДЕЛА:

случай ЗНАЧЕНИЕ ШАБЛОНА затем ЗАЯВЛЕНИЕ

ЕСЛИЗАЯВЛЕНИЕ:

если BOOLEXP то ЗАЯВЛЕНИЕ

BOOLEXP: BOOLEXP, а затем BOOLEXP или иначе BOOLEXP

person larsr    schedule 23.09.2015