Note that there are some explanatory texts on larger screens.

plurals
  1. POexpression tree evaluation
    primarykey
    data
    text
    <p>I'm trying to evaluate an expression tree. Here is my code:</p> <pre><code>(define (eval-tree expr-tree) (eval-treeaux eval-tree expr-tree)) (define (eval-treeaux f expr-tree) (if (null? expr-tree) 0 (cond ((equal? '+ (operator expr-tree)) (+ (left-op expr-tree) (right-op expr-tree))) ((equal? '- (operator expr-tree)) (- (left-op expr-tree) (right-op expr-tree))) ((equal? '* (operator expr-tree)) (* (left-op expr-tree) (right-op expr-tree))) ((equal? '/ (operator expr-tree)) (/ (left-op expr-tree) (right-op expr-tree))) (else (f eval-treeaux expr-tree))))) </code></pre> <p>When I run this <code>(eval-tree '((6 * 3) + (4 - 2)))</code>, it gives me this error:</p> <pre><code>+: expects type &lt;number&gt; as 1st argument, given: (6 * 3); other arguments were: (4 - 2) </code></pre> <p>Can anyone tell me what the problem is and how I can fix it?</p> <hr> <p>Here is my new code:</p> <pre><code>(define (eval-tree expr-tree) (if (null? expr-tree) 0 ((eval-treeaux eval-tree (car expr-tree)) (eval-tree (cdr expr-tree))))) (define (eval-treeaux f expr-tree) (cond ((null? expr-tree) '()) ((not (isExpression expr-tree)) (list expr-tree)) (else (cond ((equal? '+ (operator expr-tree)) (+ (left-op expr-tree) (right-op expr-tree))) ((equal? '- (operator expr-tree)) (- (left-op expr-tree) (right-op expr-tree))) ((equal? '* (operator expr-tree)) (* (left-op expr-tree) (right-op expr-tree))) ((equal? '/ (operator expr-tree)) (/ (left-op expr-tree) (right-op expr-tree))) (else (f eval-treeaux expr-tree)))))) </code></pre> <p>But, when I run this <code>(eval-tree '((6 * 3) + (4 - 2)))</code>, I get this error:</p> <pre><code>procedure application: expected procedure, given: 2; arguments were: 0 </code></pre> <p>I'm really confused. Can anyone help me please? Thanks</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload