def problem_A9(grades): tests1 = [ ( "(begin (define (f x y) (+ x y)) f)", LambdaProcedure(pairify(["x", "y"]), pairify(["+", "x", "y"]), create_global_frame()), ), ( "(begin (define (f) (+ 2 2)) f)", LambdaProcedure(nil, pairify(["+", 2, 2]), create_global_frame()), ), ( "(begin (define (f x) (* x x)) f)", LambdaProcedure(pairify(["x"]), pairify(["*", "x", "x"]), create_global_frame()), ), ( "(begin (define (f x) 1 2) f)", LambdaProcedure(pairify(["x"]), pairify(["begin", 1, 2]), create_global_frame()), ), ("(define (0 x) (* x x))", "SchemeError"), ] if check_func(scheme_eval, tests1, comp=scheme_equal): return True
def problem_8(grades): tests1 = [('(lambda (x y) (+ x y))', LambdaProcedure(pairify(['x', 'y']), pairify(['+', 'x', 'y']), create_global_frame()))] tests2 = [ ('(lambda (x) (+ x) (+ x x))', LambdaProcedure(pairify(['x']), pairify(['begin', ['+', 'x'], ['+', 'x', 'x']]), create_global_frame())), ('(begin (define x (lambda () 2)) x)', LambdaProcedure(nil, 2, create_global_frame())), ] if check_func(scheme_eval, tests1, comp=scheme_equal): return True if check_func(scheme_eval, tests2, comp=scheme_equal): return True
def problem_A9(grades): tests1 = [ ('(begin (define (f x y) (+ x y)) f)', LambdaProcedure(pairify(['x', 'y']), pairify(['+', 'x', 'y']), create_global_frame())), ('(begin (define (f) (+ 2 2)) f)', LambdaProcedure(nil, pairify(['+', 2, 2]), create_global_frame())), ('(begin (define (f x) (* x x)) f)', LambdaProcedure(pairify(['x']), pairify(['*', 'x', 'x']), create_global_frame())), ('(begin (define (f x) 1 2) f)', LambdaProcedure(pairify(['x']), pairify(['begin', 1, 2]), create_global_frame())), ('(define (0 x) (* x x))', 'SchemeError'), ] if check_func(scheme_eval, tests1, comp=scheme_equal): return True
def problem_8(grades): tests1 = [( "(lambda (x y) (+ x y))", LambdaProcedure(pairify(["x", "y"]), pairify(["+", "x", "y"]), create_global_frame()), )] tests2 = [ ( "(lambda (x) (+ x) (+ x x))", LambdaProcedure( pairify(["x"]), pairify(["begin", ["+", "x"], ["+", "x", "x"]]), create_global_frame(), ), ), ( "(begin (define x (lambda () 2)) x)", LambdaProcedure(nil, 2, create_global_frame()), ), ] if check_func(scheme_eval, tests1, comp=scheme_equal): return True if check_func(scheme_eval, tests2, comp=scheme_equal): return True
def problem_B11(grades): # Note: Doesn't check well-formed but unrequired list matching. # E.g., (lambda (a . b) 2) and (lambda x 2) tests1 = [ ('(lambda (x y z) x)', LambdaProcedure(pairify(['x', 'y', 'z']), 'x', create_global_frame())), ('(lambda (0 y z) x)', 'SchemeError'), ('(lambda (x y nil) x)', 'SchemeError'), ('(lambda (x y (and z)) x)', 'SchemeError'), ('(lambda (x #t z) x)', 'SchemeError'), ] tests2 = [ ("(lambda (h e l l o) 'world)", 'SchemeError'), ("(lambda (c s 6 1 a) 'yay)", 'SchemeError'), ] if check_func(scheme_eval, tests1, comp=scheme_equal): return True if check_func(scheme_eval, tests2, comp=scheme_equal): return True