def _parse_boolean(token_supply): """Parse a boolean literal.""" boolean_token = token_supply.next() assert isinstance(boolean_token, tokens.BooleanLiteral) text = boolean_token.text.lower() if text == '#t': return datatypes.lisp_bool(True) elif text == '#f': return datatypes.lisp_bool(False) else: raise ValueError('Unexpected boolean literal `%s`.' % text)
def _le(left, right): return datatypes.lisp_bool(left <= right)
def _is_vector(candidate): return datatypes.lisp_bool(isinstance(candidate, datatypes.Vector))
def _ge(left, right): return datatypes.lisp_bool(left >= right)
def _lt(left, right): return datatypes.lisp_bool(left < right)
def _gt(left, right): return datatypes.lisp_bool(left > right)
def _is_truthy(value): """Return False iff value is #f.""" # Scheme defines nearly everything to be truthy. Only #f is falsey! # TODO(jasonpr): Consider violating the Scheme spec, and doing # something more Pythonic. return value != datatypes.lisp_bool(False)