Beispiel #1
0
 def execute_proc(arguments, fail0):
     body_env = extend_environment(names, arguments,
                                   procedure_environment(procedure))
     if TRACE_APPLICATIONS:
         display(cons(procedure_name(procedure), arguments))
         display(body_env)
         print()
     return continue_with(
         body_exec,
         body_env,
         succeed,
         fail0,
     )
Beispiel #2
0
INITIAL_ENV_BINDINGS = {
    symbol("foo"): lambda: 42,
    symbol("null?"): is_null,
    symbol("pair?"): is_pair,
    symbol("cons"): cons,
    symbol("car"): car,
    symbol("cdr"): cdr,
    symbol("length"): length,
    symbol("+"): lambda *args: sum(args),
    symbol("-"): lambda a, b: a - b,
    symbol("*"): lambda a, b: a * b,
    symbol("/"): lambda a, b: a / b,
    symbol("%"): lambda a, b: a % b,
    symbol("="): lambda a, b: a == b,
    symbol("<"): lambda a, b: a < b,
    symbol(">"): lambda a, b: a > b,
    symbol("<="): lambda a, b: a <= b,
    symbol(">="): lambda a, b: a >= b,
    symbol("#t"): True,
    symbol("#f"): False,
    symbol("eq?"): lambda a, b: a is b,
    symbol("not"): lambda b: not b,
    symbol("error"): error,
    symbol("global-hash-set!"): global_hash_set,
    symbol("global-hash-get"): global_hash_get,
    symbol("display"): lambda *args: display(*args),
    symbol("newline"): lambda: print(),
    symbol("list"): lambda *args: args,
    symbol("the-unspecified-value"): type("_", (), {}),
}
Beispiel #3
0
    match_args(is_lazy, is_executor, is_environment),
    lambda parameter, operand_exec, environment: postpone(
        operand_exec, environment),
)
define_generic_procedure_handler(
    x.handle_operand,
    match_args(is_lazy_memo, is_executor, is_environment),
    lambda parameter, operand_exec, environment: postpone_memo(
        operand_exec, environment),
)

define_generic_procedure_handler(
    x.advance,
    match_args(is_postponed),
    lambda object: x.advance(object.expression(object.environment)),
)
define_generic_procedure_handler(
    x.advance,
    match_args(is_postponed_memo),
    lambda object: object.set_value(
        x.advance(object.expression(object.environment))),
)
define_generic_procedure_handler(x.advance, match_args(is_advanced_memo),
                                 advanced_value)

if __name__ == "__main__":
    while True:
        print("> ", end="")
        display(eval_str(None))
        print()
Beispiel #4
0
def repl():
    check_repl_initialized()
    while True:
        print("> ", end="")
        display(eval_str(None))
        print()
Beispiel #5
0
 def success_k(value, fail):
     print(f";;; {time() - timer} seconds elapsed")
     display(value)
     print()
     return continue_with(internal_loop, success_k, fail)
Beispiel #6
0
 def execute_proc(args, fail0):
     if TRACE_APPLICATIONS:
         display(cons(symbol("<primitive>"), args))
         print()
     return continue_with(succeed,
                          apply_primitive_procedure(procedure, args), fail0)
Beispiel #7
0
 def execute_proc(args, fail0):
     if TRACE_APPLICATIONS:
         display(cons(symbol("<continuation>"), args))
         print()
     return continue_with(continuation.succeed, *args, continuation.fail)