Old Interpreter Tests.

(quote 1) -> (quote 1) => 1
(quote quote) -> (quote quote) => quote
(quote "str") -> (quote "str") => "str"
(quote (cons a b)) -> (quote (cons a b)) => (cons a b)
(+ 1 2) -> (+ 1 2) => 3
(- 1 2) -> (- 1 2) => -1
(let (x 1) x) -> (let (x 1) x) => 1
(let (x (+ 1 10)) (+ x 100)) -> (let (x (+ 1 10)) (+ x 100)) => 111
(let (x 1) (+ x 1)) -> (let (x 1) (+ x 1)) => 2
(let (x 1)(- x x)) -> (let (x 1) (- x x)) => 0
(let (x 1) (let (y 2)y)) -> (let (x 1) (let (y 2) y)) => 2
(let (x 1) (let (y 2)   (+ x y)  ) ) -> (let (x 1) (let (y 2) (+ x y))) => 3

Latest Interpreter Tests.

Array
(
    [fun] => e
    [args] => (quote 1)
    [expected] => 1
    [actual] => 1
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (quote quote)
    [expected] => quote
    [actual] => quote
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (quote "str")
    [expected] => str
    [actual] => "str"
    [status] => FAILED
)
Array
(
    [fun] => e
    [args] => (quote (cons a b))
    [expected] => Array
        (
            [0] => cons
            [1] => a
            [2] => b
        )

    [actual] => Array
        (
            [0] => cons
            [1] => a
            [2] => b
        )

    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (+ 1 2)
    [expected] => 3
    [actual] => 3
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (- 1 2)
    [expected] => -1
    [actual] => -1
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (let (x 1) x)
    [expected] => 1
    [actual] => 1
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (let (x (+ 1 10)) (+ x 100))
    [expected] => 111
    [actual] => 111
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (let (x 1) (+ x 1))
    [expected] => 2
    [actual] => 2
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (let (x 1)(- x x))
    [expected] => 0
    [actual] => 0
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (let (x 1) (let (y 2)y))
    [expected] => 2
    [actual] => 2
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (let (x 1) (let (y 2)   (+ x y)  ) )
    [expected] => 3
    [actual] => 3
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (cons 0 0)
    [expected] => Array
        (
            [0] => 0
            [1] => 0
        )

    [actual] => Array
        (
            [0] => 0
            [1] => 0
        )

    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (cons 1 2)
    [expected] => Array
        (
            [0] => 1
            [1] => 2
        )

    [actual] => Array
        (
            [0] => 1
            [1] => 2
        )

    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (let (a 1)(cons a a))
    [expected] => Array
        (
            [0] => 1
            [1] => 1
        )

    [actual] => Array
        (
            [0] => 1
            [1] => 1
        )

    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (let (a 1)(+ a a))
    [expected] => 2
    [actual] => 2
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (cons (+ 1 0) (+ 1 1))
    [expected] => Array
        (
            [0] => 1
            [1] => 2
        )

    [actual] => Array
        (
            [0] => 1
            [1] => 2
        )

    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (cons (+ 1 0) (+ 1 1))
    [expected] => Array
        (
            [0] => 1
            [1] => 2
        )

    [actual] => Array
        (
            [0] => 1
            [1] => 2
        )

    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (cons 1 (cons 2 3))
    [expected] => Array
        (
            [0] => 1
            [1] => Array
                (
                    [0] => 2
                    [1] => 3
                )

        )

    [actual] => Array
        (
            [0] => 1
            [1] => Array
                (
                    [0] => 2
                    [1] => 3
                )

        )

    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (car (cons 1 2))
    [expected] => 1
    [actual] => 1
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (cdr (cons 1 2))
    [expected] => Array
        (
            [0] => 2
        )

    [actual] => Array
        (
            [0] => 2
        )

    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (lets ((a 1) (b 2)) (cons a b))
    [expected] => Array
        (
            [0] => 1
            [1] => 2
        )

    [actual] => Array
        (
            [0] => 1
            [1] => 2
        )

    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (lets ((a 1) (b 2)) (+ a b))
    [expected] => 3
    [actual] => 3
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (lets ((a 1) (b 2)) (lets ((total (+ a b))) (+ total total)))
    [expected] => 6
    [actual] => 6
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (lets ((a (+ 1 9)) (b (+ 10 80))) (lets ((total (+ a b))) (+ total total)))
    [expected] => 200
    [actual] => 200
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (let (y 1) (lambda (x) (+ x y)))
    [expected] => Array
        (
            [0] => closure
            [1] => Array
                (
                    [y] => 1
                )

            [2] => Array
                (
                    [0] => lambda
                    [1] => Array
                        (
                            [0] => x
                        )

                    [2] => Array
                        (
                            [0] => +
                            [1] => x
                            [2] => y
                        )

                )

        )

    [actual] => Array
        (
            [0] => closure
            [1] => Array
                (
                    [y] => 1
                )

            [2] => Array
                (
                    [0] => lambda
                    [1] => Array
                        (
                            [0] => x
                        )

                    [2] => Array
                        (
                            [0] => +
                            [1] => x
                            [2] => y
                        )

                )

        )

    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (@ (let (y 10) (lambda (x) (+ x y))) 1)
    [expected] => 11
    [actual] => 11
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (@ (lets ((y 10)) (lambda (x) (+ x y))) 1)
    [expected] => 11
    [actual] => 11
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (@ (lambda (x) (+ x 1)) 1)
    [expected] => 2
    [actual] => 2
    [status] => PASSED
)
Array
(
    [fun] => e
    [args] => (@ (lambda () (+ 1 1)))
    [expected] => 2
    [actual] => 2
    [status] => PASSED
)
[fail][typecheck]:0 formals vs 1 args differs but must be equal.