about summary refs log tree commit diff stats
path: root/js/games/nluqo.github.io/~bh/61a-pages/Scheme/explorin-vs-simply.txt
blob: cf8432b457708131fbf38fbbc8b209b9776ca2ca (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
								Aug 25, 2006
								March 1, 2010
README-explorin-vs-simply.txt


For CS61A/SICP, use stk-simply in the instructions below.


*stk-explorin and stk-simply*:
---------------------------

  UCB Scheme includes several load modules that define the functions that
  make up the Berkeley extensions for UCB CS classes.

  The UCB Scheme package now installs these options for starting scheme:
  
    "stk-simply"	loads UCB procedures for CS3 and CS61A
    "stk-explorin"	loads UCB procedures for CS3S
    "stk-grfx"		loads UCB procedures for CS9D and CS47B (not on InstCD)
    "stk"		loads no UCB procedures
  
  (Prior to 2004, there were stk-cs3, stk-cs3s, stk-cs61a, stk-cs61a-2, 
  stk-cs9, etc.  Those versions are now obsolete.)
  
  "stk-simply" loads the procedures as defined in these texts:
  
    "Simply Scheme - Introducing Computer Science" (Harvey and Wright)
    "Structure and Interpretation of Computer Programs" (Abelson and Sussman)

  "stk-explorin" load the procedures as defined in this text:
  
    "Exploring Computer Science with Scheme" (Grillmeyer) 
  
  Each program loads ALL of the UCB-defined procedures but, in the case of
  conflicting definitions, favors the definition from the text book after
  which it is named: "simply" or "explorin".  ("explorin" omits the "g" for 
  historical reasons: MS-DOS required 8-character file names!)
  
  In these texts, there are 7 procedures that conflict because they use the 
  same names and arguments but behave differently.  The conflicting 
  definitions are:
  
    count	
    first
    every
    accumulate
    reduce
    remove!
    atom?	(an STk primitive that is refined in Exploring)

  The 7 procedures are defined one way in simply.scm and another way in 
  explorin.scm.  To load all the UCB procedures and resolve the conflicts:
  
    stk-simply loads everything else, then simply.scm 
    stk-explorin loads everything else, then explorin.scm 
  
  This causes the desired definitions to replace the undesired ones.

  Here is how stk-simply and stk-explorin load on Windows (for example):
  
    The file "stk-simply" contains
  	stk -load "C:/Program Files/STk/site-scheme/load-simply"

    The file "load-simply" contains
	;; simply.scm  must be loaded after explorin.scm
	;; modeler.stk must be loaded after simply.scm 
		(load "C:/Program Files/STk/site-scheme/berkeley.scm")
		(load "C:/Program Files/STk/site-scheme/explorin.scm")
		(load "C:/Program Files/STk/site-scheme/simply.scm")
		(load "C:/Program Files/STk/site-scheme/modeler.stk")
		(load "C:/Program Files/STk/site-scheme/obj.scm")
		(load "C:/Program Files/STk/site-scheme/turtle-grfx.scm")
		(load "C:/Program Files/STk/site-scheme/which-modeler.scm")

    The file "stk-explorin" contains
  	stk -load "C:/Program Files/STk/site-scheme/load-explorin"

    The file "load-explorin" contains
	;; explorin.scm  must be loaded after simply.scm
	;; modeler.stk must be loaded after simply.scm 
		(load "C:/Program Files/STk/site-scheme/berkeley.scm")
		(load "C:/Program Files/STk/site-scheme/simply.scm")
		(load "C:/Program Files/STk/site-scheme/explorin.scm")
		(load "C:/Program Files/STk/site-scheme/modeler.stk")
		(load "C:/Program Files/STk/site-scheme/obj.scm")
		(load "C:/Program Files/STk/site-scheme/turtle-grfx.scm")
		(load "C:/Program Files/STk/site-scheme/which-modeler.scm")

  The (atom? '()) function is an STk primitive that is defined in the STk
  sources as returning #t.   It is redefined in explorin.scm to return #f.
  To compensate for that, the original definition is copied to berkeley.scm
  to ensure that it is set properly for those users.

  
*"(explorinOrSimply)" procedure*
------------------------------

  If you are running stk-explorin, invoking the function (explorinOrSimply) 
  will return the string "explorin", but if you are running stk-simply,
  invoking (explorinOrSimply) will return the string "simply".  This can
  be used within user scheme code to determine which version has been 
  loaded.


*Replacement Modeler*
-------------------

  The Replacement Modeler is a separate window that is invoked in stk by a 
  command such as	 (model (map odd? '(1 2 3 4))) 

  The Modeler procedures are defined in the file "modeler.stk".   The file
  "which-modeler.stk" defines flags that are used to distinguish behaviors
  for CS3 vs CS3S students.  The flags are:

    (using-berkeley-scm?)	(false for "explorin" users, true for others)
    *harvey+wright* 		(false for "explorin" users, true for others)
    *grillmeyer* 		(true  for "explorin" users, false for others)
    *they-know-lambda*  	(false for everyone)

  which-modeler.stk replaces the older cs3-modeler.stk and cs3s-modeler.stk.


*stk-grfx*
--------

  'stk-grfx' loads the Berkeley extensions in obj.scm and turtle-grfx.scm.
  It is a new variant that was added to for cs9d and cs47b in Spring 2005.
  It can be run as 

	~scheme/bin/stk-grfx
	~cs9d/bin/stk-grfx
	~cs47b/bin/stk-grfx

  It is only available on the computers in the EECS Instructional labs.  It is
  not available on the pre-packaged versions of Berkeley Scheme for Windows,
  MacOSX or Linux.

  To test that turtle graphics is installed:

    STk> (cs)             ;; TurtleGraphics X window pops up
    STk> (ht)             ;; the turtle pointer disappears
    STk> (st)             ;; the turtle pointer reappears


*STKDB Debugger*
--------------
  The STKDB Debugger was developed by Prof Hilfinger in 2003.   It is 
  documented in https://people.cs.berkeley.edu/~bh/Scheme/stkdb.pdf.

  The debugger module is loaded into the scheme interpreter after you
  start it.  The debugger files are included in the UCB Scheme 
  distribution.  The required files are:

	stk VERSION 4.0.1-ucb1.16 or newer
	$DIR/stkdb/*.scm
	$DIR/stk/slib
	$DIR/emacs/lisp/stkdb.el

  $DIR is usually '/usr/local/lib' on your home computer, which is the
  same as C:\cygwin\usr\local\lib on a Windows computer that is using
  Cygwin with the latest version (Feb 2006) of UCB Scheme on Windows.