Hi, i'm using MzScheme, with my code:<br><br>(define (partition n)<br>&nbsp;&nbsp;&nbsp; (define results (make-vector (+ n 1)))<br>&nbsp;&nbsp;&nbsp; (define (update cur max val)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (vector-set! (vector-ref results cur) max val)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; val)
<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; (let loop ((i 0))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (cond ((&gt; i n) 0)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; (else (vector-set! results i (make-vector (+ n 1) 0))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (loop (+ i 1)))))<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; (define (part cur max)<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (cond ((= cur 0) 1)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; ((not (= (vector-ref (vector-ref results cur) max) 0))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (vector-ref (vector-ref results cur) max))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; (else (update cur max (let loop ((i 1))
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; (cond ((or (&gt; i max) (&gt; i cur)) 0)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (else (+ (part (- cur i) i)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;(loop (+ i 1)))))))))))<br><br>I receive the error &quot;define: not allowed in an expression context in: (define (part cur max) (cond ((= cur 0) 1) ((not (= (vector-ref (vector-ref results cur) max) 0))...&quot;, why can't I put a define in a define after a let statement?
<br>