0
votes

I'm creating a tail recursive function that evaluates a polynomial by passing a list of coefficients and an x value.

example: evaluate x^3 + 2x^2 + 5, so the user would pass the list '(5 0 2 1) and an x like 1 in a functional call (poly '(5 0 2 1) 1).

I can't figure out why i'm getting the following error:

if: bad syntax in: (if (null? (cdr lst)) (+ total (car lst)) eval-poly-tail-helper ((cdr lst) x (+ (* (expt x n) (car lst)) total) (+ 1 n)))

(define (poly lst x)
  (poly-assistant lst x 0 0))


(define (poly-assistant lst x total n)
   (if (null? (cdr lst))
      (+ total (car lst))
      poly-assistant((cdr lst) x (+ (* (expt x n) (car lst)) total) (+ 1 n))))
1
Please try to do your homework by yourself! Your fix-my-code question is off-topic.Basile Starynkevitch

1 Answers

1
votes

You need a left paren before poly-assistant in the last line.

In Scheme, function applications start with a left paren. And if takes 2 or 3  operands.

Use a better editor (e.g. emacs) able to match parenthesis.

The two left parenthesis before cdr looks suspicious. You might need only one.

Learn to use your Scheme debugger, or at least add debugging prints.