Функция, которая возвращает #t, если expr является допустимым логическим выражением в racket - PullRequest
0 голосов
/ 04 октября 2019

expr = переменная |бул-буквальный |не-expr |и-expr |or-expr.

    variable = a symbol v for which (is-vble? v) returns #t .

    bool-literal = "t" | "f" .

    not-expr = "(" "not" expr ")" .

    and-expr = "(" expr "and" expr ")" .

    or-expr = "(" expr "or" expr ")" .

    implication-expr = "(" expr "-->" expr ")" .

Реализуйте функцию (is-bool-expr? expr), которая возвращает #t, если expr является допустимым логическим выражением (как определено выше), и #f в противном случае. Например:

(is-bool-expr? 'T)

t

(is-bool-expr?' (T или (не f)))

t

(is-bool-expr? '((P и (p -> f)) -> q))

t

(is-bool-expr? '((P и (p -> f)) -> q))

t

(is-bool-expr? '(сырная обувь))

f

...