<div>Hello,</div>
<div>&nbsp;</div>
<div>I created a program which will display (in a list) a <a href="http://en.wikipedia.org/wiki/Farey_sequence">farey sequence</a> of level n. My code is as follows:</div>
<div>&nbsp;</div>
<div>(define-struct farey (num denom))</div>
<div>&nbsp;</div>
<div>(define (farey-level n)<br>&nbsp; (farey-acc (- n 1) (list (make-farey 0 1)<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; (make-farey 1 1))))</div>
<div>&nbsp;</div>
<div>(define (farey-acc n flist)<br>&nbsp; (cond<br>&nbsp;&nbsp;&nbsp; [(= n 0) flist]<br>&nbsp;&nbsp;&nbsp; [else (farey-acc (- n 1) (insert-new-farey flist))]))</div>
<div>&nbsp;</div>
<div>(define (insert-new-farey flist)<br>&nbsp; (append (get-first-two flist)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (get-middle flist)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (get-last-two flist)))</div>
<div>&nbsp;</div>
<div>(define (get-first-two flist)<br>&nbsp; (list (first flist)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (get-between flist)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (second flist)))</div>
<div>&nbsp;</div>
<div>(define (get-middle flist)<br>&nbsp; (local<br>&nbsp;&nbsp;&nbsp; ((define (get-mid flist acc)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cond<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [(empty? flist) empty]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [(= (length flist) 2) (reverse acc)]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [else (get-mid (rest flist) (cons (first flist) acc))])))<br>
&nbsp;&nbsp;&nbsp; (get-mid (rest (rest flist))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; empty)))</div>
<div>&nbsp;</div>
<div>(define (get-last-two flist)<br>&nbsp; (cond<br>&nbsp;&nbsp;&nbsp; [(empty? (rest (rest flist))) (list (first flist)<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (get-between flist)<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (second flist))]<br>
&nbsp;&nbsp;&nbsp; [else (get-last-two (rest flist))]))</div>
<div>&nbsp;</div>
<div>(define (get-between flist)<br>&nbsp; (make-farey (+ (farey-num (first flist))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (farey-num (second flist)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (+ (farey-denom (first flist))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (farey-denom (second flist)))))</div>

<div>&nbsp;</div>
<div>I test the code in Advanced Student. I call the function (farey-level 4) and get this result:</div>
<div>&nbsp;</div>
<div>&gt; (shared ((-1- (make-farey 0 1)) (-9- (make-farey 1 1)))<br>&nbsp; (list -1- (make-farey 1 4) (make-farey 1 3) (make-farey 1 2) -9- -1- (make-farey 1 2) (make-farey 2 3) (make-farey 3 4) -9-))</div>
<div>&nbsp;</div>
<div>This is not the result&nbsp;I&nbsp;was expecting&nbsp;so I run the code again, this time in Intermediate Student, with the same function call, (farey-level 4). This is the result I get:</div>
<div>&nbsp;</div>
<div>&gt;(list<br>&nbsp;(make-farey 0 1)<br>&nbsp;(make-farey 1 4)<br>&nbsp;(make-farey 1 3)<br>&nbsp;(make-farey 1 2)<br>&nbsp;(make-farey 1 1)<br>&nbsp;(make-farey 0 1)<br>&nbsp;(make-farey 1 2)<br>&nbsp;(make-farey 2 3)<br>&nbsp;(make-farey 3 4)<br>&nbsp;(make-farey 1 1))</div>

<div>&nbsp;</div>
<div>Now that is the result I was expecting. My question is, why did it get (shared) in Advanced Student? I didn&#39;t even use (set!). The only instance I ever encountered (shared) was when I defined a doubly-linked list and, of course, I was expecting it then. Did I make a mistake in my code?<br clear="all">
<br>-- <br>Chad Estioco<br>BS Computer Science<br>University of the Philippines-Diliman<br>==============================<br><a href="http://www.geocities.com/lokisky_walker">http://www.geocities.com/lokisky_walker</a><br>
</div>