<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.6000.16809" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face="Courier New" size=2>unmark `Show sharing in values' in the 
`language/choose language'&nbsp;menu. You may have to open the `show details' 
first.</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Jos</FONT></DIV>
<BLOCKQUOTE 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=chadestioco@gmail.com href="mailto:chadestioco@gmail.com">Andrei 
  Estioco</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A title=plt-scheme@list.cs.brown.edu 
  href="mailto:plt-scheme@list.cs.brown.edu">plt-scheme@list.cs.brown.edu</A> 
  </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Tuesday, February 17, 2009 1:30 
  AM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> [plt-scheme] It gets 
  shared!</DIV>
  <DIV><BR></DIV>
  <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'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>
  <P>
  <HR>

  <P></P>_________________________________________________<BR>&nbsp; For 
  list-related administrative tasks:<BR>&nbsp; 
  http://list.cs.brown.edu/mailman/listinfo/plt-scheme<BR></BLOCKQUOTE></BODY></HTML>