Легко выразить and
, or
и not
в терминах if
(с помощью местной переплета для or
). Я хотел бы знать, верно ли обратное. Моя наивная первая попытка:В Схеме может быть выражено как комбинация булевых операторов?
(if test conseq altern) => (or (and test conseq) altern)
Однако, если test
является не- #f
и conseq
является #f
, перевод вычисляется в altern
, что неверно.
Есть ли перевод, который оценивает правильное значение при сохранении характера короткого замыкания if
?
Возможно (или (и (или conseq #t)) альтернативный вариант)? – knivil
Ах, но тогда '(if #t #f #t)' будет оценивать '# t'. Тем не менее, это те трюки, которые я ищу, чтобы решить эту проблему. – acfoltzer