[pe.cust.sources] Little Smalltalk Source, *New* Part 7 of 20

earlw@pesnta.UUCP (Earl Wallace) (06/13/85)

#! /bin/sh 
#
# This is an another posting of the Little Smalltalk source, the last posting
# of this source went out in 5 parts and they were too big (>200k) for most
# sites so I redid the whole mess to keep the files around the 50k range.
#
# The complete set is now 20 parts.
#
# P.S. - If you don't receive all 20 parts within 5 days, drop me a line.
#	 Also, I have the Rand sources of May 1984, if someone has a more
#	 updated copy, I'll be happy to post them (or YOU can post them :-))
# 
# -earlw@pesnta
#
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	prelude/boolean.p
#	prelude/boolean.st
#	prelude/bytearray.p
#	prelude/bytearray.st
#	prelude/char.p
#	prelude/char.st
#	prelude/class.p
#	prelude/class.st
#	prelude/collection.p
#	prelude/collection.st
#	prelude/dictionary.p
#	prelude/dictionary.st
#	prelude/false.p
#	prelude/false.st
#	prelude/file.p
#	prelude/file.st
#	prelude/float.p
#	prelude/float.st
#	prelude/init
#	prelude/integer.p
#	prelude/integer.st
#	prelude/interval.p
#	prelude/interval.st
#	prelude/kcollection.p
#	prelude/kcollection.st
#	prelude/larray.p
#	prelude/larray.st
#	prelude/list.p
#	prelude/list.st
#	prelude/magnitude.p
#	prelude/magnitude.st
#	prelude/nil.p
#	prelude/nil.st
#	prelude/number.p
# This archive created: Thu Jun 13 11:32:04 1985
# By:	Earl Wallace (Perkin-Elmer Data Systems Group / Customer Service)
export PATH; PATH=/bin:$PATH
if test -f 'prelude/boolean.p'
then
	echo shar: will not over-write existing file "'prelude/boolean.p'"
else
cat << \SHAR_EOF > 'prelude/boolean.p'
temp <- <primitive 110 6 >
<primitive 112 temp 1		" xor: " \
	#( #[ 32 33 182 243 245] \
	#(  ) ) >

<primitive 112 temp 2		" eqv: " \
	#( #[ 32 33 181 243 245] \
	#(  ) ) >

<primitive 112 temp 3		" or: " \
	#( #[ 32 251 2 33 165 243 245] \
	#(  ) ) >

<primitive 112 temp 4		" and: " \
	#( #[ 32 252 2 33 165 243 245] \
	#(  ) ) >

<primitive 112 temp 5		" | " \
	#( #[ 32 251 1 33 243 245] \
	#(  ) ) >

<primitive 112 temp 6		" & " \
	#( #[ 32 252 1 33 243 245] \
	#(  ) ) >

<primitive 98 #Boolean \
	<primitive 97 #Boolean #Object #/u/smalltalk/prelude/boolean.st \
	#(  ) \
	#( #xor: #eqv: #or: #and: #| #&  ) \
	temp 2 3 > >

SHAR_EOF
if test 634 -ne "`wc -c < 'prelude/boolean.p'`"
then
	echo shar: error transmitting "'prelude/boolean.p'" '(should have been 634 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/boolean.st'
then
	echo shar: will not over-write existing file "'prelude/boolean.st'"
else
cat << \SHAR_EOF > 'prelude/boolean.st'
Class Boolean
[
        &    aBoolean   
		^ self and: [aBoolean]

|       |    aBoolean  
		^ self or: [aBoolean]

|       and: aBlock   
		^ self and: [aBlock value]

|       or:  aBlock  
		^ self or: [aBlock value]

|	eqv: aBoolean
		^ self == aBoolean

|	xor: aBoolean
		^ self ~~ aBoolean
]
SHAR_EOF
if test 297 -ne "`wc -c < 'prelude/boolean.st'`"
then
	echo shar: error transmitting "'prelude/boolean.st'" '(should have been 297 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/bytearray.p'
then
	echo shar: will not over-write existing file "'prelude/bytearray.p'"
else
cat << \SHAR_EOF > 'prelude/bytearray.p'
temp <- <primitive 110 5 >
<primitive 112 temp 1		" size " \
	#( #[ 32 250 1 117 243 245] \
	#(  ) ) >

<primitive 112 temp 2		" printString " \
	#( #[ 48 113 81 32 163 178 225 2 13 33 32 34 177 169 11 \
 17 49 11 17 241 113 243 179 242 33 50 11 17 243 245 \
] \
	#( '#[ ' ' ' ']'  ) ) >

<primitive 112 temp 3		" at:put: " \
	#( #[ 32 33 34 250 3 119 242 245] \
	#(  ) ) >

<primitive 112 temp 4		" at: " \
	#( #[ 32 33 250 2 118 243 245] \
	#(  ) ) >

<primitive 112 temp 5		" new: " \
	#( #[ 33 250 1 116 243 245] \
	#(  ) ) >

<primitive 98 #ByteArray \
	<primitive 97 #ByteArray #ArrayedCollection #/u/smalltalk/prelude/bytearray.st \
	#(  ) \
	#( #size #printString #at:put: #at: #new:  ) \
	temp 3 6 > >

SHAR_EOF
if test 712 -ne "`wc -c < 'prelude/bytearray.p'`"
then
	echo shar: error transmitting "'prelude/bytearray.p'" '(should have been 712 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/bytearray.st'
then
	echo shar: will not over-write existing file "'prelude/bytearray.st'"
else
cat << \SHAR_EOF > 'prelude/bytearray.st'
Class ByteArray :ArrayedCollection
[
	new: size
		^ <primitive 116 size>
|
	at: index
		^ <primitive 118 self index>
|
	at: index put: value
		<primitive 119 self index value>
|
	printString	| str |
		str <- '#[ '.
		(1 to: self size)
			do: [:i | str <- str , (self at: i) printString , ' '].
		^ str , ']'
|
	size
		^ <primitive 117 self>
]

SHAR_EOF
if test 344 -ne "`wc -c < 'prelude/bytearray.st'`"
then
	echo shar: error transmitting "'prelude/bytearray.st'" '(should have been 344 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/char.p'
then
	echo shar: will not over-write existing file "'prelude/char.p'"
else
cat << \SHAR_EOF > 'prelude/char.p'
temp <- <primitive 110 18 >
<primitive 112 temp 1		" printString " \
	#( #[ 48 32 250 1 58 11 17 243 245] \
	#( '$'  ) ) >

<primitive 112 temp 2		" isVowel " \
	#( #[ 32 250 1 51 243 245] \
	#(  ) ) >

<primitive 112 temp 3		" isUppercase " \
	#( #[ 32 48 49 218 243 245] \
	#( $A $Z  ) ) >

<primitive 112 temp 4		" isSeparator " \
	#( #[ 32 250 1 55 243 245] \
	#(  ) ) >

<primitive 112 temp 5		" isLowercase " \
	#( #[ 32 48 49 218 243 245] \
	#( $a $z  ) ) >

<primitive 112 temp 6		" isLetter " \
	#( #[ 32 10 28 251 3 32 10 29 243 245] \
	#(  ) ) >

<primitive 112 temp 7		" isDigit " \
	#( #[ 32 48 49 218 243 245] \
	#( $0 $9  ) ) >

<primitive 112 temp 8		" isAlphaNumeric " \
	#( #[ 32 250 1 56 243 245] \
	#(  ) ) >

<primitive 112 temp 9		" digitValue " \
	#( #[ 32 250 1 50 241 113 161 247 3 32 48 188 242 33 243 \
 245] \
	#( 'digitValue on nondigit char'  ) ) >

<primitive 112 temp 10		" compareError " \
	#( #[ 32 48 188 243 245] \
	#( 'char cannot be compared to non char'  ) ) >

<primitive 112 temp 11		" asString " \
	#( #[ 32 250 1 58 243 245] \
	#(  ) ) >

<primitive 112 temp 12		" asUppercase " \
	#( #[ 32 250 1 53 247 6 32 250 1 57 248 2 242 32 243 \
 245] \
	#(  ) ) >

<primitive 112 temp 13		" asLowercase " \
	#( #[ 32 250 1 54 247 6 32 250 1 57 248 2 242 32 243 \
 245] \
	#(  ) ) >

<primitive 112 temp 14		" asciiValue " \
	#( #[ 32 250 1 59 243 245] \
	#(  ) ) >

<primitive 112 temp 15		" > " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 43 248 4 242 \
 32 10 19 243 245] \
	#(  ) ) >

<primitive 112 temp 16		" = " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 46 248 4 242 \
 32 10 19 243 245] \
	#(  ) ) >

<primitive 112 temp 17		" < " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 42 248 4 242 \
 32 10 19 243 245] \
	#(  ) ) >

<primitive 112 temp 18		" == " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 46 248 2 242 \
 92 243 245] \
	#(  ) ) >

<primitive 98 #Char \
	<primitive 97 #Char #Magnitude #/u/smalltalk/prelude/char.st \
	#(  ) \
	#( #printString #isVowel #isUppercase #isSeparator #isLowercase #isLetter #isDigit #isAlphaNumeric #digitValue #compareError #asString #asUppercase #asLowercase #asciiValue #> #= #< #==  ) \
	temp 2 4 > >

SHAR_EOF
if test 2174 -ne "`wc -c < 'prelude/char.p'`"
then
	echo shar: error transmitting "'prelude/char.p'" '(should have been 2174 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/char.st'
then
	echo shar: will not over-write existing file "'prelude/char.st'"
else
cat << \SHAR_EOF > 'prelude/char.st'
Class Char :Magnitude
[
	== aChar
		^ <primitive 6 self aChar>
			ifTrue:  [<primitive 46 self aChar>]
			ifFalse: [false]
|	< aChar
		^ <primitive 6 self aChar>
			ifTrue:  [<primitive 42 self aChar>]
			ifFalse: [self compareError]
|
	= aChar
		^ <primitive 6 self aChar>
			ifTrue:  [<primitive 46 self aChar>]
			ifFalse: [self compareError]
|	> aChar
		^ <primitive 6 self aChar>
			ifTrue:  [<primitive 43 self aChar>]
			ifFalse: [self compareError]
|
	asciiValue
		^ <primitive 59 self>
|
	asLowercase
		^ <primitive 54 self>
			ifTrue:  [<primitive 57 self>]
			ifFalse: [self]
|
	asUppercase
		^ <primitive 53 self>
			ifTrue:  [<primitive 57 self>]
			ifFalse: [self]
|
	asString
		^ <primitive 58 self>
|
	compareError
		^ self error: 'char cannot be compared to non char'
|
	digitValue		| i |
		((i <- <primitive 50 self>) isNil)
			ifTrue: [self error: 'digitValue on nondigit char'].
		^ i
|
	isAlphaNumeric
		^ <primitive 56 self>
|
	isDigit
		^ self between: $0 and: $9
|
	isLetter
		^ self isLowercase or: [self isUppercase]
|
	isLowercase
		^ self between: $a and: $z 
|
	isSeparator
		^ <primitive 55 self>
|
	isUppercase
		^ (self between: $A and: $Z)
|
	isVowel
		^ <primitive 51 self>
|
	printString
		^ '$' , <primitive 58 self>
]
SHAR_EOF
if test 1255 -ne "`wc -c < 'prelude/char.st'`"
then
	echo shar: error transmitting "'prelude/char.st'" '(should have been 1255 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/class.p'
then
	echo shar: will not over-write existing file "'prelude/class.p'"
else
cat << \SHAR_EOF > 'prelude/class.p'
temp <- <primitive 110 10 >
<primitive 112 temp 1		" view " \
	#( #[ 32 250 1 156 242 245] \
	#(  ) ) >

<primitive 112 temp 2		" variables " \
	#( #[ 32 250 1 158 243 245] \
	#(  ) ) >

<primitive 112 temp 3		" superClass " \
	#( #[ 32 250 1 151 243 245] \
	#(  ) ) >

<primitive 112 temp 4		" respondsTo: " \
	#( #[ 32 114 34 162 247 18 34 33 250 2 155 247 2 91 243 \
 242 34 10 46 241 114 242 249 22 242 92 243 245] \
	#(  ) ) >

<primitive 112 temp 5		" respondsTo " \
	#( #[ 32 250 1 154 242 245] \
	#(  ) ) >

<primitive 112 temp 6		" printString " \
	#( #[ 32 250 1 152 243 245] \
	#(  ) ) >

<primitive 112 temp 7		" new: " \
	#( #[ 32 250 1 151 114 34 250 1 3 247 4 34 160 241 115 \
 242 32 35 250 2 153 115 32 48 250 2 155 247 5 35 \
 33 176 241 115 242 35 243 245] \
	#( #new:  ) ) >

<primitive 112 temp 8		" new " \
	#( #[ 32 250 1 151 113 33 250 1 3 247 4 33 160 241 114 \
 242 32 34 250 2 153 114 32 48 250 2 155 247 4 34 \
 160 241 114 242 34 243 245] \
	#( #new  ) ) >

<primitive 112 temp 9		" list " \
	#( #[ 32 250 1 157 242 245] \
	#(  ) ) >

<primitive 112 temp 10		" edit " \
	#( #[ 32 250 1 150 242 245] \
	#(  ) ) >

<primitive 98 #Class \
	<primitive 97 #Class #Object #/u/smalltalk/prelude/class.st \
	#(  ) \
	#( #view #variables #superClass #respondsTo: #respondsTo #printString #new: #new #list #edit  ) \
	temp 4 4 > >

SHAR_EOF
if test 1351 -ne "`wc -c < 'prelude/class.p'`"
then
	echo shar: error transmitting "'prelude/class.p'" '(should have been 1351 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/class.st'
then
	echo shar: will not over-write existing file "'prelude/class.st'"
else
cat << \SHAR_EOF > 'prelude/class.st'
Class Class
[
	edit
		<primitive 150 self>
|
	list
		<primitive 157 self>
|
 	new		| superclass newinstance |
		superclass <- <primitive 151 self>.
		<primitive 3 superclass >
			ifTrue: [newinstance <- superclass new ]. 
		newinstance <- <primitive 153 self newinstance >.
		<primitive 155 self #new > 
			ifTrue: [newinstance <- newinstance new].
		^ newinstance
|
 	new: aValue 		| superclass newinstance |
		superclass <- <primitive 151 self>.
		<primitive 3 superclass >
			ifTrue: [newinstance <- superclass new ]. 
		newinstance <- <primitive 153 self newinstance >.
		<primitive 155 self #new: > 
			ifTrue: [newinstance <- newinstance new: aValue ].
		^ newinstance
|
 	printString
		^ <primitive 152 self >
|
	respondsTo
		<primitive 154 self>
|
	respondsTo: aSymbol		| aClass |
		aClass <- self.
		[aClass notNil] whileTrue:
			[ <primitive 155 aClass aSymbol> ifTrue: [ ^ true ].
			 aClass <- aClass superClass ].
		^ false
|
	superClass
		^ <primitive 151 self>

|
	variables
		^ <primitive 158 self>
|
	view
		<primitive 156 self>
]
SHAR_EOF
if test 1048 -ne "`wc -c < 'prelude/class.st'`"
then
	echo shar: error transmitting "'prelude/class.st'" '(should have been 1048 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/collection.p'
then
	echo shar: will not over-write existing file "'prelude/collection.p'"
else
cat << \SHAR_EOF > 'prelude/collection.p'
temp <- <primitive 110 23 >
<primitive 112 temp 1		" size " \
	#( #[ 80 113 32 225 2 6 33 81 192 241 113 243 179 242 33 \
 243 245] \
	#(  ) ) >

<primitive 112 temp 2		" shallowCopy " \
	#( #[ 5 48 160 113 32 225 2 5 33 34 11 22 243 179 242 \
 32 33 191 243 245] \
	#(  ) ) >

<primitive 112 temp 3		" select: " \
	#( #[ 32 32 164 160 226 2 11 33 35 180 247 3 34 35 189 \
 242 34 243 215 243 245] \
	#(  ) ) >

<primitive 112 temp 4		" remove:ifAbsent: " \
	#( #[ 32 33 11 30 247 6 32 33 11 39 248 3 242 34 165 \
 243 245] \
	#(  ) ) >

<primitive 112 temp 5		" remove: " \
	#( #[ 32 33 224 4 32 48 188 244 216 242 33 243 245] \
	#( 'attempt to remove object not found in collection'  ) ) >

<primitive 112 temp 6		" reject: " \
	#( #[ 32 225 2 5 33 34 180 172 243 11 44 243 245] \
	#(  ) ) >

<primitive 112 temp 7		" printString " \
	#( #[ 32 32 164 169 48 11 17 226 1 9 33 49 11 17 34 \
 169 11 17 243 215 50 11 17 243 245] \
	#( ' (' ' ' ' )'  ) ) >

<primitive 112 temp 8		" occurrencesOf: " \
	#( #[ 32 80 226 2 13 35 33 201 247 5 34 81 192 248 2 \
 242 34 243 215 243 245] \
	#(  ) ) >

<primitive 112 temp 9		" isEmpty " \
	#( #[ 32 163 80 201 243 245] \
	#(  ) ) >

<primitive 112 temp 10		" inject:into: " \
	#( #[ 33 115 32 225 4 7 34 35 36 211 241 115 243 179 242 \
 35 243 245] \
	#(  ) ) >

<primitive 112 temp 11		" includes: " \
	#( #[ 32 225 2 8 34 33 201 247 2 91 244 243 179 242 92 \
 243 245] \
	#(  ) ) >

<primitive 112 temp 12		" first " \
	#( #[ 32 48 188 243 245] \
	#( 'subclass should implement first'  ) ) >

<primitive 112 temp 13		" detect:ifAbsent: " \
	#( #[ 32 225 3 8 33 35 180 247 2 35 244 243 179 242 34 \
 165 243 245] \
	#(  ) ) >

<primitive 112 temp 14		" detect: " \
	#( #[ 32 33 224 4 32 48 188 243 223 243 245] \
	#( 'no object found matching detect'  ) ) >

<primitive 112 temp 15		" deepCopy " \
	#( #[ 5 48 160 113 32 225 2 7 33 34 10 20 11 22 243 \
 179 242 32 33 191 243 245] \
	#(  ) ) >

<primitive 112 temp 16		" collect: " \
	#( #[ 32 32 164 160 226 2 8 34 33 35 180 189 242 34 243 \
 215 243 245] \
	#(  ) ) >

<primitive 112 temp 17		" coerce: " \
	#( #[ 32 160 114 33 225 3 4 34 35 189 243 179 242 34 243 \
 245] \
	#(  ) ) >

<primitive 112 temp 18		" asString " \
	#( #[ 5 58 32 163 176 241 81 32 163 32 131 0 242 243 245 \
] \
	#( #replaceFrom:to:with:  ) ) >

<primitive 112 temp 19		" asList " \
	#( #[ 5 48 160 32 11 20 243 245] \
	#(  ) ) >

<primitive 112 temp 20		" asSet " \
	#( #[ 5 57 160 32 11 19 243 245] \
	#(  ) ) >

<primitive 112 temp 21		" asBag " \
	#( #[ 5 32 160 32 11 19 243 245] \
	#(  ) ) >

<primitive 112 temp 22		" asArray " \
	#( #[ 5 30 32 163 176 241 81 32 163 32 131 0 242 243 245 \
] \
	#( #replaceFrom:to:with:  ) ) >

<primitive 112 temp 23		" addAll: " \
	#( #[ 33 225 2 4 32 34 189 243 179 242 245] \
	#(  ) ) >

<primitive 98 #Collection \
	<primitive 97 #Collection #Object #/u/smalltalk/prelude/collection.st \
	#(  ) \
	#( #size #shallowCopy #select: #remove:ifAbsent: #remove: #reject: #printString #occurrencesOf: #isEmpty #inject:into: #includes: #first #detect:ifAbsent: #detect: #deepCopy #collect: #coerce: #asString #asList #asSet #asBag #asArray #addAll:  ) \
	temp 5 7 > >

SHAR_EOF
if test 3180 -ne "`wc -c < 'prelude/collection.p'`"
then
	echo shar: error transmitting "'prelude/collection.p'" '(should have been 3180 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/collection.st'
then
	echo shar: will not over-write existing file "'prelude/collection.st'"
else
cat << \SHAR_EOF > 'prelude/collection.st'
Class Collection
[
        addAll: aCollection
                aCollection do: [:x | self add: x ]

|
	asArray
		^ Array new: self size ;
			replaceFrom: 1 to: self size with: self
|
	asBag
                ^ Bag new addAll: self
|
	asSet
                ^ Set new addAll: self
|
	asList
                ^ List new addAllLast: self
|
	asString
		^ String new: self size ; 
			replaceFrom: 1 to: self size with: self
|
	coerce: aCollection	| newobj |
		newobj <- self new.
		aCollection do: [:x | newobj add: x].
		^ newobj
|
	collect: aBlock
		^ self inject: self class new
		       into: [:x :y | x add: (aBlock value: y). x ]
|
	deepCopy		| newobj |
		newobj <- List new .
		self do: [:x | newobj addLast: x copy ].
		^ self coerce: newobj
|
	detect: aBlock
		^ self detect: aBlock
		ifAbsent: [self error: 'no object found matching detect']

|
        detect: aBlock ifAbsent: exceptionBlock   
                self do: [:x | 
                          (aBlock value: x) ifTrue: [^ x]].
                ^ exceptionBlock value
|
 	first
		^ self error: 'subclass should implement first'
|
        includes: anObject
		self do: [:x | (x = anObject) ifTrue: [^ true]].
		^ false
|
        inject: thisValue into: binaryBlock     | last |
                last <- thisValue.
                self do: [:x | last <- binaryBlock value: last value: x].
                ^ last
|
        isEmpty
                ^ (self size = 0)
|
	occurrencesOf: anObject
		^ self inject: 0
                       into: [:x :y | (y = anObject) 
                                         ifTrue: [x + 1]
                                         ifFalse: [x] ]
|
	printString
		^ ( self inject: self class printString , ' ('
			 into: [:x :y | x , ' ' , y printString]), ' )'
|
	reject: aBlock          
		^ self select: [:x | (aBlock value: x) not ]
|
        remove: oldObject
                self remove: oldObject ifAbsent:
                  [^ self error: 
			'attempt to remove object not found in collection' ].
                ^ oldObject
|
	remove: oldObject ifAbsent: exceptionBlock
		^ (self includes: oldObject)
			ifTrue: [self remove: oldObject]
			ifFalse: exceptionBlock
|
	select: aBlock          
		^ self inject: self class new
		       into: [:x :y | (aBlock value: y) 
                                        ifTrue: [x add: y]. x]
|
	shallowCopy		| newobj |
		newobj <- List new .
		self do: [:x | newobj addLast: x].
		^ self coerce: newobj
|
	size		| i |
		i <- 0.
		self do: [:x | i <- i + 1 ].
		^ i
]
SHAR_EOF
if test 2501 -ne "`wc -c < 'prelude/collection.st'`"
then
	echo shar: error transmitting "'prelude/collection.st'" '(should have been 2501 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/dictionary.p'
then
	echo shar: will not over-write existing file "'prelude/dictionary.p'"
else
cat << \SHAR_EOF > 'prelude/dictionary.p'
temp <- <primitive 110 12 >
<primitive 112 temp 1		" checkBucket: " \
	#( #[ 16 33 241 97 177 241 98 161 247 2 93 243 242 18 166 \
 243 245] \
	#(  ) ) >

<primitive 112 temp 2		" currentKey " \
	#( #[ 18 162 247 11 18 10 21 113 33 162 247 3 33 10 49 \
 243 245] \
	#(  ) ) >

<primitive 112 temp 3		" printString " \
	#( #[ 32 32 164 169 48 11 17 226 1 17 33 32 171 169 11 \
 17 49 11 17 34 169 11 17 50 11 17 243 215 51 11 \
 17 243 245] \
	#( ' ( ' ' @ ' ' ' ')'  ) ) >

<primitive 112 temp 4		" next " \
	#( #[ 18 167 241 113 162 247 4 33 10 50 243 242 17 5 17 \
 199 247 20 17 81 192 97 32 17 11 24 241 113 162 247 \
 4 33 10 50 243 242 249 26 242 93 243 245] \
	#(  ) ) >

<primitive 112 temp 5		" first " \
	#( #[ 81 5 17 178 225 2 14 32 34 11 24 241 113 162 247 \
 4 33 10 50 244 243 179 242 93 243 245] \
	#(  ) ) >

<primitive 112 temp 6		" findAssociation:inList: " \
	#( #[ 34 225 3 10 35 10 49 33 201 247 2 35 244 243 179 \
 242 93 243 245] \
	#(  ) ) >

<primitive 112 temp 7		" removeKey:ifAbsent: " \
	#( #[ 32 33 11 28 115 32 33 35 222 116 36 161 247 3 34 \
 165 243 242 35 36 224 3 34 165 244 216 10 50 243 245 \
] \
	#(  ) ) >

<primitive 112 temp 8		" at:ifAbsent: " \
	#( #[ 32 33 11 28 115 32 33 35 222 116 36 161 247 3 34 \
 165 243 242 36 10 50 243 245] \
	#(  ) ) >

<primitive 112 temp 9		" at:put: " \
	#( #[ 32 33 11 28 115 32 33 35 222 116 36 161 247 15 5 \
 53 160 33 11 50 34 11 51 116 35 36 189 248 5 242 \
 36 34 11 51 242 34 243 245] \
	#(  ) ) >

<primitive 112 temp 10		" getList: " \
	#( #[ 32 33 11 29 115 16 35 177 114 34 161 247 8 5 48 \
 160 114 16 35 34 208 242 34 243 245] \
	#(  ) ) >

<primitive 112 temp 11		" hashNumber: " \
	#( #[ 33 250 1 5 16 163 195 81 192 243 245] \
	#(  ) ) >

<primitive 112 temp 12		" new " \
	#( #[ 5 30 5 17 176 96 245] \
	#(  ) ) >

<primitive 98 #Dictionary \
	<primitive 97 #Dictionary #KeyedCollection #/u/smalltalk/prelude/dictionary.st \
	#(  #hashTable #currentBucket #currentList ) \
	#( #checkBucket: #currentKey #printString #next #first #findAssociation:inList: #removeKey:ifAbsent: #at:ifAbsent: #at:put: #getList: #hashNumber: #new  ) \
	temp 5 6 > >

SHAR_EOF
if test 2139 -ne "`wc -c < 'prelude/dictionary.p'`"
then
	echo shar: error transmitting "'prelude/dictionary.p'" '(should have been 2139 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/dictionary.st'
then
	echo shar: will not over-write existing file "'prelude/dictionary.st'"
else
cat << \SHAR_EOF > 'prelude/dictionary.st'
"
	Dictionarys are implemented using Points in order to reduce
	the number of classes in the standard prelude

	this also has the advantage of making the output appear in
		key @ value
	form
"
Class Dictionary :KeyedCollection
| hashTable currentBucket currentList |
[
	new
		hashTable <- Array new: 17
|
	hashNumber: aKey
		^ ( <primitive 5 aKey> \\ hashTable size) + 1
|
	getList: aKey			| list bucketNumber |
		bucketNumber <- self hashNumber: aKey.
		list <- hashTable at: bucketNumber.
		(list isNil)
			ifTrue: [list <- List new.
				 hashTable at: bucketNumber put: list].
		^ list

|
	at: aKey put: anObject			| list anAssoc |

		list <- self getList: aKey.
		anAssoc <- self findAssociation: aKey inList: list.
		(anAssoc isNil)
			ifTrue:  [anAssoc <- (Point new x: aKey) y: anObject.
				  list add: anAssoc]
			ifFalse: [anAssoc y: anObject].
		^ anObject
|
	at: aKey ifAbsent: exceptionBlock	| list anAssoc | 

		list <- self getList: aKey.
		anAssoc <- self findAssociation: aKey inList: list.
		(anAssoc isNil)
			ifTrue: [^ exceptionBlock value].
		^ anAssoc y
|
	removeKey: aKey ifAbsent: exceptionBlock 	| list anAssoc|
		
		list <- self getList: aKey.
		anAssoc <- self findAssociation: aKey inList: list.
		(anAssoc isNil)
			ifTrue: [^ exceptionBlock value].
		^ ( list remove: anAssoc 
			 ifAbsent: [ ^ exceptionBlock value ] ) y
|
	findAssociation: aKey inList: linkedList

		linkedList do: 
			[:item | (item x = aKey) ifTrue: [^ item]].
		^ nil
|
	first				| item |

		(1 to: 17) do: 
			[:i | ((item <- self checkBucket: i) notNil)
						ifTrue: [ ^ item y] ] .
		^ nil
|
	next				| item |

		((item <- currentList next) notNil)
			ifTrue: [ ^ item y ].
		[currentBucket < 17] whileTrue:
			[currentBucket <- currentBucket + 1.
			 ((item <- self checkBucket: currentBucket) notNil)
				ifTrue: [ ^ item y ] ].
		^ nil
|
	printString
		^ (self inject: (self class printString) , ' ( '
			into: [ :aString :aValue |
				aString , self currentKey printString ,
					' @ ' , aValue printString , ' ' ]
			) , ')'
|
	currentKey	| clist|
		^ (currentList notNil) 
			ifTrue: [clist <- currentList current.
				 (clist notNil) ifTrue: [clist x]
			        ]
|
	checkBucket: bucketNumber

		((currentList <- hashTable at: 
				(currentBucket <- bucketNumber)) isNil)
			ifTrue: [ ^ nil ].
		^ currentList first
]
SHAR_EOF
if test 2333 -ne "`wc -c < 'prelude/dictionary.st'`"
then
	echo shar: error transmitting "'prelude/dictionary.st'" '(should have been 2333 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/false.p'
then
	echo shar: will not over-write existing file "'prelude/false.p'"
else
cat << \SHAR_EOF > 'prelude/false.p'
temp <- <primitive 110 5 >
<primitive 112 temp 1		" not " \
	#( #[ 91 243 245] \
	#(  ) ) >

<primitive 112 temp 2		" ifFalse: " \
	#( #[ 33 165 243 245] \
	#(  ) ) >

<primitive 112 temp 3		" ifTrue: " \
	#( #[ 93 243 245] \
	#(  ) ) >

<primitive 112 temp 4		" ifFalse:ifTrue: " \
	#( #[ 33 165 243 245] \
	#(  ) ) >

<primitive 112 temp 5		" ifTrue:ifFalse: " \
	#( #[ 34 165 243 245] \
	#(  ) ) >

<primitive 98 #False \
	<primitive 97 #False #Boolean #/u/smalltalk/prelude/false.st \
	#(  ) \
	#( #not #ifFalse: #ifTrue: #ifFalse:ifTrue: #ifTrue:ifFalse:  ) \
	temp 3 2 > >

SHAR_EOF
if test 580 -ne "`wc -c < 'prelude/false.p'`"
then
	echo shar: error transmitting "'prelude/false.p'" '(should have been 580 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/false.st'
then
	echo shar: will not over-write existing file "'prelude/false.st'"
else
cat << \SHAR_EOF > 'prelude/false.st'
Class False :Boolean
[
        ifTrue: trueAlternativeBlock ifFalse: falseAlternativeBlock
                ^ falseAlternativeBlock value

!       ifFalse: falseAlternativeBlock ifTrue: trueAlternativeBlock
                ^ falseAlternativeBlock value

!       ifTrue: trueAlternativeBlock
                ^ nil

!       ifFalse: falseAlternativeBlock
                ^ falseAlternativeBlock value

!       not
                ^ true
]
SHAR_EOF
if test 436 -ne "`wc -c < 'prelude/false.st'`"
then
	echo shar: error transmitting "'prelude/false.st'" '(should have been 436 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/file.p'
then
	echo shar: will not over-write existing file "'prelude/file.p'"
else
cat << \SHAR_EOF > 'prelude/file.p'
temp <- <primitive 110 13 >
<primitive 112 temp 1		" write: " \
	#( #[ 32 33 250 2 132 243 245] \
	#(  ) ) >

<primitive 112 temp 2		" size " \
	#( #[ 32 250 1 134 243 245] \
	#(  ) ) >

<primitive 112 temp 3		" read " \
	#( #[ 32 250 1 131 243 245] \
	#(  ) ) >

<primitive 112 temp 4		" open:for: " \
	#( #[ 32 33 34 250 3 130 242 245] \
	#(  ) ) >

<primitive 112 temp 5		" open: " \
	#( #[ 32 33 48 250 3 130 242 245] \
	#( 'r'  ) ) >

<primitive 112 temp 6		" next " \
	#( #[ 32 10 36 243 245] \
	#(  ) ) >

<primitive 112 temp 7		" first " \
	#( #[ 32 80 177 243 245] \
	#(  ) ) >

<primitive 112 temp 8		" currentKey " \
	#( #[ 32 250 1 136 243 245] \
	#(  ) ) >

<primitive 112 temp 9		" at:put: " \
	#( #[ 32 33 250 2 135 242 32 34 11 49 243 245] \
	#(  ) ) >

<primitive 112 temp 10		" at: " \
	#( #[ 32 33 250 2 135 242 32 10 36 243 245] \
	#(  ) ) >

<primitive 112 temp 11		" modeString " \
	#( #[ 32 81 250 2 133 242 245] \
	#(  ) ) >

<primitive 112 temp 12		" modeInteger " \
	#( #[ 32 82 250 2 133 242 245] \
	#(  ) ) >

<primitive 112 temp 13		" modeCharacter " \
	#( #[ 32 80 250 2 133 242 245] \
	#(  ) ) >

<primitive 98 #File \
	<primitive 97 #File #SequenceableCollection #/u/smalltalk/prelude/file.st \
	#(  ) \
	#( #write: #size #read #open:for: #open: #next #first #currentKey #at:put: #at: #modeString #modeInteger #modeCharacter  ) \
	temp 3 4 > >

SHAR_EOF
if test 1377 -ne "`wc -c < 'prelude/file.p'`"
then
	echo shar: error transmitting "'prelude/file.p'" '(should have been 1377 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/file.st'
then
	echo shar: will not over-write existing file "'prelude/file.st'"
else
cat << \SHAR_EOF > 'prelude/file.st'
Class File :SequenceableCollection
[
	modeCharacter
		<primitive 133 self 0>
|
	modeInteger
		<primitive 133 self 2>
|
	modeString
		<primitive 133 self 1>
|
	at: aPosition
		<primitive 135 self aPosition>.
		^ self read
|
	at: aPosition put: anObject
		<primitive 135 self aPosition>.
		^ self write: anObject
|
	currentKey
		^ <primitive 136 self>
|
	first
		^ self at: 0
|
	next
		^ self read
|
	open: aName
		<primitive 130 self aName 'r' >
|
	open: aName for: opType
		<primitive 130 self aName opType >
|
	read
		^ <primitive 131 self>
|
	size
		^ <primitive 134 self>
|
	write: anObject
		^ <primitive 132 self anObject>
]
SHAR_EOF
if test 630 -ne "`wc -c < 'prelude/file.st'`"
then
	echo shar: error transmitting "'prelude/file.st'" '(should have been 630 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/float.p'
then
	echo shar: will not over-write existing file "'prelude/float.p'"
else
cat << \SHAR_EOF > 'prelude/float.p'
temp <- <primitive 110 25 >
<primitive 112 temp 1		" truncated " \
	#( #[ 32 48 199 247 6 32 250 1 73 248 5 242 32 250 1 \
 72 243 245] \
	#( 0.0  ) ) >

<primitive 112 temp 2		" sqrt " \
	#( #[ 32 250 1 71 243 245] \
	#(  ) ) >

<primitive 112 temp 3		" rounded " \
	#( #[ 32 48 192 250 1 72 243 245] \
	#( 0.5  ) ) >

<primitive 112 temp 4		" radix: " \
	#( #[ 32 33 250 2 89 243 245] \
	#(  ) ) >

<primitive 112 temp 5		" ln " \
	#( #[ 32 250 1 70 243 245] \
	#(  ) ) >

<primitive 112 temp 6		" integerPart " \
	#( #[ 32 250 1 75 243 245] \
	#(  ) ) >

<primitive 112 temp 7		" gamma " \
	#( #[ 32 250 1 77 243 245] \
	#(  ) ) >

<primitive 112 temp 8		" fractionPart " \
	#( #[ 32 250 1 76 243 245] \
	#(  ) ) >

<primitive 112 temp 9		" floor " \
	#( #[ 32 250 1 72 243 245] \
	#(  ) ) >

<primitive 112 temp 10		" exp " \
	#( #[ 32 250 1 79 243 245] \
	#(  ) ) >

<primitive 112 temp 11		" coerce: " \
	#( #[ 33 175 243 245] \
	#(  ) ) >

<primitive 112 temp 12		" ceiling " \
	#( #[ 32 250 1 73 243 245] \
	#(  ) ) >

<primitive 112 temp 13		" asString " \
	#( #[ 32 250 1 78 243 245] \
	#(  ) ) >

<primitive 112 temp 14		" asFloat " \
	#( #[ 32 243 245] \
	#(  ) ) >

<primitive 112 temp 15		" arcTan " \
	#( #[ 5 54 32 250 1 86 176 243 245] \
	#(  ) ) >

<primitive 112 temp 16		" arcSin " \
	#( #[ 5 54 32 250 1 84 176 243 245] \
	#(  ) ) >

<primitive 112 temp 17		" arcCos " \
	#( #[ 5 54 32 250 1 85 176 243 245] \
	#(  ) ) >

<primitive 112 temp 18		" ^ " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 88 248 5 242 \
 32 33 145 0 243 245] \
	#( #raisedTo:  ) ) >

<primitive 112 temp 19		" / " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 69 248 5 242 \
 32 33 145 0 243 245] \
	#( #/  ) ) >

<primitive 112 temp 20		" * " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 68 248 5 242 \
 32 33 145 0 243 245] \
	#( #*  ) ) >

<primitive 112 temp 21		" - " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 61 248 5 242 \
 32 33 145 0 243 245] \
	#( #-  ) ) >

<primitive 112 temp 22		" + " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 60 248 5 242 \
 32 33 145 0 243 245] \
	#( #+  ) ) >

<primitive 112 temp 23		" > " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 63 248 5 242 \
 32 33 145 0 243 245] \
	#( #>  ) ) >

<primitive 112 temp 24		" < " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 62 248 5 242 \
 32 33 145 0 243 245] \
	#( #<  ) ) >

<primitive 112 temp 25		" = " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 66 248 5 242 \
 32 33 145 0 243 245] \
	#( #=  ) ) >

<primitive 98 #Float \
	<primitive 97 #Float #Number #/u/smalltalk/prelude/float.st \
	#(  ) \
	#( #truncated #sqrt #rounded #radix: #ln #integerPart #gamma #fractionPart #floor #exp #coerce: #ceiling #asString #asFloat #arcTan #arcSin #arcCos #^ #/ #* #- #+ #> #< #=  ) \
	temp 2 4 > >

SHAR_EOF
if test 2739 -ne "`wc -c < 'prelude/float.p'`"
then
	echo shar: error transmitting "'prelude/float.p'" '(should have been 2739 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/float.st'
then
	echo shar: will not over-write existing file "'prelude/float.st'"
else
cat << \SHAR_EOF > 'prelude/float.st'
Class Float :Number
[
	= aNumber
		^ <primitive 6 self aNumber>
			ifTrue:  [<primitive 66 self aNumber>]
			ifFalse: [super = aNumber]
|
	< aNumber
		^ <primitive 6 self aNumber>
			ifTrue:  [<primitive 62 self aNumber>]
			ifFalse: [super < aNumber]
|
	> aNumber
		^ <primitive 6 self aNumber>
			ifTrue:  [<primitive 63 self aNumber>]
			ifFalse: [ super > aNumber]
|
	+ aNumber
		^ <primitive 6 self aNumber>
			ifTrue:  [<primitive 60 self aNumber>]
			ifFalse: [super + aNumber]
|
	- aNumber
		^ <primitive 6 self aNumber>
			ifTrue:  [<primitive 61 self aNumber>]
			ifFalse: [super - aNumber]
|
	* aNumber
		^ <primitive 6 self aNumber>
			ifTrue:  [<primitive 68 self aNumber>]
			ifFalse: [super * aNumber]
|
	/ aNumber
		^ <primitive 6 self aNumber>
			ifTrue:  [<primitive 69 self aNumber>]
			ifFalse: [super / aNumber]
|
	^ aNumber
		^ <primitive 6 self aNumber>
			ifTrue:  [<primitive 88 self aNumber>]
			ifFalse: [super raisedTo: aNumber]
|
	arcCos
		^ Radian new: <primitive 85 self>
|
	arcSin
		^ Radian new: <primitive 84 self>
|
	arcTan
		^ Radian new: <primitive 86 self>
|
	asFloat
		^ self
|
	asString
		^ <primitive 78 self>
|
	ceiling
		^ <primitive 73 self>
|
	coerce: aNumber
		^ aNumber asFloat
|
	exp
		^ <primitive 79 self>
|
	floor
		^ <primitive 72 self>
|
	fractionPart
		^ <primitive 76 self>
|
	gamma
		^ <primitive 77 self>
|
	integerPart
		^ <primitive 75 self>
|
	ln
		^ <primitive 70 self>
|
	radix: aNumber
		^ <primitive 89 self aNumber>
|
	rounded
		^ <primitive 72 (self + 0.5)>
|
	sqrt
		^ <primitive 71 self>
|
	truncated
		^ (self < 0.0)  ifTrue:  [<primitive 73 self>]
				ifFalse: [<primitive 72 self>]
]
SHAR_EOF
if test 1655 -ne "`wc -c < 'prelude/float.st'`"
then
	echo shar: error transmitting "'prelude/float.st'" '(should have been 1655 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/init'
then
	echo shar: will not over-write existing file "'prelude/init'"
else
cat << \SHAR_EOF > 'prelude/init'
smalltalk new
SHAR_EOF
if test 14 -ne "`wc -c < 'prelude/init'`"
then
	echo shar: error transmitting "'prelude/init'" '(should have been 14 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/integer.p'
then
	echo shar: will not over-write existing file "'prelude/integer.p'"
else
cat << \SHAR_EOF > 'prelude/integer.p'
temp <- <primitive 110 31 >
<primitive 112 temp 1		" timesRepeat: " \
	#( #[ 80 114 34 32 199 247 11 33 165 242 34 81 192 241 114 \
 242 249 16 242 245] \
	#(  ) ) >

<primitive 112 temp 2		" rem: " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 29 248 4 242 \
 32 10 35 243 245] \
	#(  ) ) >

<primitive 112 temp 3		" radix: " \
	#( #[ 32 33 250 2 26 243 245] \
	#(  ) ) >

<primitive 112 temp 4		" quo: " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 28 248 4 242 \
 32 10 35 243 245] \
	#(  ) ) >

<primitive 112 temp 5		" odd " \
	#( #[ 32 82 205 80 202 243 245] \
	#(  ) ) >

<primitive 112 temp 6		" noMask: " \
	#( #[ 80 32 33 197 201 243 245] \
	#(  ) ) >

<primitive 112 temp 7		" lcm: " \
	#( #[ 32 33 250 2 6 247 10 32 33 194 32 33 11 27 206 \
 248 4 242 32 10 35 243 245] \
	#(  ) ) >

<primitive 112 temp 8		" highBit " \
	#( #[ 32 250 1 34 243 245] \
	#(  ) ) >

<primitive 112 temp 9		" gcd: " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 20 248 4 242 \
 32 10 35 243 245] \
	#(  ) ) >

<primitive 112 temp 10		" factorial " \
	#( #[ 32 250 1 38 243 245] \
	#(  ) ) >

<primitive 112 temp 11		" even " \
	#( #[ 32 82 205 80 201 243 245] \
	#(  ) ) >

<primitive 112 temp 12		" bitXor: " \
	#( #[ 32 33 250 2 24 243 245] \
	#(  ) ) >

<primitive 112 temp 13		" bitShift: " \
	#( #[ 32 33 250 2 25 243 245] \
	#(  ) ) >

<primitive 112 temp 14		" bitOr: " \
	#( #[ 32 33 250 2 22 243 245] \
	#(  ) ) >

<primitive 112 temp 15		" bitInvert " \
	#( #[ 32 250 1 33 243 245] \
	#(  ) ) >

<primitive 112 temp 16		" bitAt: " \
	#( #[ 32 33 250 2 21 243 245] \
	#(  ) ) >

<primitive 112 temp 17		" bitAnd: " \
	#( #[ 32 33 250 2 23 243 245] \
	#(  ) ) >

<primitive 112 temp 18		" asString " \
	#( #[ 32 250 1 37 243 245] \
	#(  ) ) >

<primitive 112 temp 19		" asFloat " \
	#( #[ 32 250 1 39 243 245] \
	#(  ) ) >

<primitive 112 temp 20		" asCharacter " \
	#( #[ 32 250 1 36 243 245] \
	#(  ) ) >

<primitive 112 temp 21		" anyMask: " \
	#( #[ 80 32 33 250 2 23 202 243 245] \
	#(  ) ) >

<primitive 112 temp 22		" allMask: " \
	#( #[ 33 32 33 250 2 23 201 243 245] \
	#(  ) ) >

<primitive 112 temp 23		" \\ " \
	#( #[ 32 33 250 2 6 247 18 32 32 80 199 247 3 90 248 \
 2 242 81 194 114 34 33 205 248 4 242 32 10 35 243 \
 245] \
	#(  ) ) >

<primitive 112 temp 24		" // " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 19 248 4 242 \
 32 10 35 243 245] \
	#(  ) ) >

<primitive 112 temp 25		" / " \
	#( #[ 32 175 33 190 243 245] \
	#(  ) ) >

<primitive 112 temp 26		" * " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 18 248 5 242 \
 32 33 145 0 243 245] \
	#( #*  ) ) >

<primitive 112 temp 27		" - " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 11 248 5 242 \
 32 33 145 0 243 245] \
	#( #-  ) ) >

<primitive 112 temp 28		" + " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 10 248 5 242 \
 32 33 145 0 243 245] \
	#( #+  ) ) >

<primitive 112 temp 29		" < " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 12 248 5 242 \
 32 33 145 0 243 245] \
	#( #<  ) ) >

<primitive 112 temp 30		" > " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 13 248 5 242 \
 32 33 145 0 243 245] \
	#( #>  ) ) >

<primitive 112 temp 31		" = " \
	#( #[ 32 33 250 2 6 247 7 32 33 250 2 16 248 5 242 \
 32 33 145 0 243 245] \
	#( #=  ) ) >

<primitive 98 #Integer \
	<primitive 97 #Integer #Number #/u/smalltalk/prelude/integer.st \
	#(  ) \
	#( #timesRepeat: #rem: #radix: #quo: #odd #noMask: #lcm: #highBit #gcd: #factorial #even #bitXor: #bitShift: #bitOr: #bitInvert #bitAt: #bitAnd: #asString #asFloat #asCharacter #anyMask: #allMask: #\\ #// #/ #* #- #+ #< #> #=  ) \
	temp 3 5 > >

SHAR_EOF
if test 3531 -ne "`wc -c < 'prelude/integer.p'`"
then
	echo shar: error transmitting "'prelude/integer.p'" '(should have been 3531 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/integer.st'
then
	echo shar: will not over-write existing file "'prelude/integer.st'"
else
cat << \SHAR_EOF > 'prelude/integer.st'
Class Integer :Number
[
	= aNumber
		^ <primitive 6 self aNumber>
			ifTrue:  [ <primitive 16 self aNumber> ]
			ifFalse: [ super = aNumber ]
|
	> aNumber
		^ <primitive 6 self aNumber>
			ifTrue:  [ <primitive 13 self aNumber> ]
			ifFalse: [ super > aNumber ]
|
	< aNumber
		^ <primitive 6 self aNumber>
			ifTrue:  [ <primitive 12 self aNumber> ]
			ifFalse: [ super < aNumber ]
|
	+ aNumber
		^ <primitive 6 self aNumber>
			ifTrue:  [ <primitive 10 self aNumber> ]
			ifFalse: [ super + aNumber ]
|
	- aNumber
		^ <primitive 6 self aNumber>
			ifTrue:  [<primitive 11 self aNumber>]
			ifFalse: [ super - aNumber ]
|
	* aNumber
		^ <primitive 6 self aNumber>
			ifTrue:  [<primitive 18 self aNumber>]
			ifFalse: [ super * aNumber ]
|
	/ aNumber
		^ self asFloat / aNumber
|
	// aNumber
		^ <primitive 6 self aNumber>
			ifTrue:  [<primitive 19 self aNumber>]
			ifFalse: [self opError]
|
	\\ aNumber			| i |
		^ <primitive 6 self aNumber>
			ifTrue:  [i <- self * ( (self < 0)
						ifTrue:  [ -1 ] 
						ifFalse: [ 1 ] ).
				  i rem: aNumber]
			ifFalse:  [self opError]
|
	allMask: anInteger
		^ anInteger = <primitive 23 self anInteger>
|
	anyMask: anInteger
		^ 0 ~= <primitive 23 self anInteger>
|
	asCharacter
		^ <primitive 36 self>
|
	asFloat
		^ <primitive 39 self >
|
	asString
		^ <primitive 37 self>
|
	bitAnd: anInteger
		^ <primitive 23 self anInteger>
|
	bitAt: anInteger
		^ <primitive 21 self anInteger>
|
	bitInvert
		^ <primitive 33 self>
|
	bitOr: anInteger
		^ <primitive 22 self anInteger>
|
	bitShift: anInteger
		^ <primitive 25 self anInteger>
|
	bitXor: anInteger
		^ <primitive 24 self anInteger>
|
	even
		^ (self rem: 2) = 0
|
	factorial
		^ <primitive 38 self>
|
	gcd: anInteger
		^ <primitive 6 self anInteger>
			ifTrue:  [<primitive 20 self anInteger>]
			ifFalse: [self opError]
|
	highBit
		^ <primitive 34 self>
|
	lcm: anInteger
		^ <primitive 6 self anInteger>
			ifTrue:  [self * anInteger quo: 
					(self gcd: anInteger)]
			ifFalse: [self opError]
|
	noMask: anInteger
		^ 0 = (self bitAnd: anInteger)
|
	odd
		^ (self rem: 2) ~= 0
|
	quo: anInteger
		^ <primitive 6 self anInteger>
			ifTrue:  [<primitive 28 self anInteger>]
			ifFalse: [self opError]
|
	radix: aNumber
		^ <primitive 26 self aNumber>
|
	rem: anInteger
		^ <primitive 6 self anInteger>
			ifTrue:  [<primitive 29 self anInteger>]
			ifFalse: [self opError]
|
	timesRepeat: aBlock		| i |
		i <- 0.
		[i < self] whileTrue:
			[aBlock value. i <- i + 1]
]
SHAR_EOF
if test 2472 -ne "`wc -c < 'prelude/integer.st'`"
then
	echo shar: error transmitting "'prelude/integer.st'" '(should have been 2472 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/interval.p'
then
	echo shar: will not over-write existing file "'prelude/interval.p'"
else
cat << \SHAR_EOF > 'prelude/interval.p'
temp <- <primitive 110 13 >
<primitive 112 temp 1		" shallowCopy " \
	#( #[ 16 17 18 212 243 245] \
	#(  ) ) >

<primitive 112 temp 2		" deepCopy " \
	#( #[ 16 17 18 212 243 245] \
	#(  ) ) >

<primitive 112 temp 3		" removeKey:ifAbsent: " \
	#( #[ 32 48 188 242 34 165 243 245] \
	#( 'cannot remove from Interval'  ) ) >

<primitive 112 temp 4		" add: " \
	#( #[ 32 48 188 243 245] \
	#( 'cannot store into Interval'  ) ) >

<primitive 112 temp 5		" at:put: " \
	#( #[ 32 48 188 243 245] \
	#( 'cannot store into Interval'  ) ) >

<primitive 112 temp 6		" coerce: " \
	#( #[ 33 174 243 245] \
	#(  ) ) >

<primitive 112 temp 7		" printString " \
	#( #[ 48 16 169 11 17 49 11 17 17 169 11 17 50 11 17 \
 18 169 11 17 243 245] \
	#( 'Interval ' ' to ' ' by '  ) ) >

<primitive 112 temp 8		" at:ifAbsent: " \
	#( #[ 16 18 33 81 193 194 192 115 32 35 11 31 247 3 35 \
 248 3 242 34 165 243 245] \
	#(  ) ) >

<primitive 112 temp 9		" next " \
	#( #[ 19 18 192 99 32 19 11 31 247 1 19 243 245] \
	#(  ) ) >

<primitive 112 temp 10		" first " \
	#( #[ 16 99 32 19 11 31 247 1 19 243 245] \
	#(  ) ) >

<primitive 112 temp 11		" inRange: " \
	#( #[ 18 170 247 10 33 16 203 252 3 33 17 200 248 9 242 \
 33 17 203 252 3 33 16 200 243 245] \
	#(  ) ) >

<primitive 112 temp 12		" size " \
	#( #[ 18 170 247 5 17 16 199 248 4 242 16 17 199 247 3 \
 80 248 9 242 17 16 193 18 11 18 81 192 243 245] \
	#(  ) ) >

<primitive 112 temp 13		" from:to:by: " \
	#( #[ 33 241 96 99 34 97 35 98 245] \
	#(  ) ) >

<primitive 98 #Interval \
	<primitive 97 #Interval #SequenceableCollection #/u/smalltalk/prelude/interval.st \
	#(  #lower #upper #step #current ) \
	#( #shallowCopy #deepCopy #removeKey:ifAbsent: #add: #at:put: #coerce: #printString #at:ifAbsent: #next #first #inRange: #size #from:to:by:  ) \
	temp 4 5 > >

SHAR_EOF
if test 1805 -ne "`wc -c < 'prelude/interval.p'`"
then
	echo shar: error transmitting "'prelude/interval.p'" '(should have been 1805 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/interval.st'
then
	echo shar: will not over-write existing file "'prelude/interval.st'"
else
cat << \SHAR_EOF > 'prelude/interval.st'
Class Interval :SequenceableCollection
| lower upper step current |
[
	from: lowerBound to: upperBound by: stepSize
		current <- lower <- lowerBound.
		upper <- upperBound.
		step  <- stepSize

|	size	
		^ ((step strictlyPositive)
			ifTrue: [upper < lower]
			ifFalse: [lower < upper] )
		   ifTrue: [ 0 ]
		   ifFalse: [upper - lower // step + 1]

|	inRange: value
		^ (step strictlyPositive)
			ifTrue: [(value >= lower) and: [value <= upper]]
			ifFalse: [(value >= upper) and: [value <= lower]]

|       first
                current <- lower.
		^ (self inRange: current) ifTrue: [current]

|       next
                current <- current + step.
		^ (self inRange: current) ifTrue: [current]

|	at: index ifAbsent: exceptionBlock	| val |
		val <- lower + (step * (index - 1)).
		^ (self inRange: val)
		   ifTrue: [ val ]
		   ifFalse: [exceptionBlock value]

|	printString
		^ 'Interval ', lower printString , ' to ',
                     upper printString , ' by ' , step printString 

|	coerce: newcollection
		^ newcollection asArray

|	at: index put: val
		^ self error: 'cannot store into Interval'

|	add: val
		^ self error: 'cannot store into Interval'

|	removeKey: key ifAbsent: exceptionBlock
		self error: 'cannot remove from Interval'.
		^ exceptionBlock value
|
	deepCopy
		^ lower to: upper by: step
|	
	shallowCopy
		^ lower to: upper by: step
]
SHAR_EOF
if test 1369 -ne "`wc -c < 'prelude/interval.st'`"
then
	echo shar: error transmitting "'prelude/interval.st'" '(should have been 1369 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/kcollection.p'
then
	echo shar: will not over-write existing file "'prelude/kcollection.p'"
else
cat << \SHAR_EOF > 'prelude/kcollection.p'
temp <- <primitive 110 18 >
<primitive 112 temp 1		" values " \
	#( #[ 5 32 160 113 32 225 2 4 33 34 189 243 179 242 33 \
 243 245] \
	#(  ) ) >

<primitive 112 temp 2		" select: " \
	#( #[ 32 32 5 40 160 226 2 13 33 35 180 247 5 34 32 \
 171 35 208 242 34 243 215 191 243 245] \
	#(  ) ) >

<primitive 112 temp 3		" removeKey:ifAbsent: " \
	#( #[ 32 48 188 243 245] \
	#( 'subclass should implement RemoveKey:ifAbsent:'  ) ) >

<primitive 112 temp 4		" removeKey: " \
	#( #[ 32 33 224 6 32 48 188 242 33 244 217 243 245] \
	#( 'no element associated with key'  ) ) >

<primitive 112 temp 5		" remove: " \
	#( #[ 32 48 188 243 245] \
	#( 'object must be removed with explicit key'  ) ) >

<primitive 112 temp 6		" keysSelect: " \
	#( #[ 32 32 5 40 160 226 2 14 33 35 171 180 247 5 34 \
 32 171 35 208 242 34 243 215 191 243 245] \
	#(  ) ) >

<primitive 112 temp 7		" keysDo: " \
	#( #[ 32 225 2 5 33 32 171 180 243 179 243 245] \
	#(  ) ) >

<primitive 112 temp 8		" keys " \
	#( #[ 5 57 160 113 32 225 2 4 33 34 189 243 11 32 242 \
 33 243 245] \
	#(  ) ) >

<primitive 112 temp 9		" indexOf:ifAbsent: " \
	#( #[ 32 225 3 9 35 33 201 247 3 32 171 244 243 179 242 \
 34 165 243 245] \
	#(  ) ) >

<primitive 112 temp 10		" indexOf: " \
	#( #[ 32 33 224 4 32 48 188 243 214 243 245] \
	#( 'indexOf element not found'  ) ) >

<primitive 112 temp 11		" includesKey: " \
	#( #[ 32 33 224 2 92 244 213 242 91 243 245] \
	#(  ) ) >

<primitive 112 temp 12		" collect: " \
	#( #[ 32 32 5 40 160 226 2 10 34 32 171 33 35 180 208 \
 242 34 243 215 191 243 245] \
	#(  ) ) >

<primitive 112 temp 13		" binaryDo: " \
	#( #[ 32 225 3 6 33 32 171 35 211 243 179 242 93 243 245 \
] \
	#(  ) ) >

<primitive 112 temp 14		" atAll:put: " \
	#( #[ 33 225 3 5 32 35 34 208 243 179 242 245] \
	#(  ) ) >

<primitive 112 temp 15		" at: " \
	#( #[ 32 33 224 10 32 33 169 48 11 17 188 242 33 244 213 \
 243 245] \
	#( ': association not found'  ) ) >

<primitive 112 temp 16		" asDictionary " \
	#( #[ 5 40 160 113 32 226 2 5 33 34 35 208 243 11 23 \
 242 33 243 245] \
	#(  ) ) >

<primitive 112 temp 17		" addAll: " \
	#( #[ 33 226 2 5 32 34 35 208 243 11 23 242 33 243 245 \
] \
	#(  ) ) >

<primitive 112 temp 18		" add: " \
	#( #[ 32 48 188 243 245] \
	#( 'Must add with explicit key'  ) ) >

<primitive 98 #KeyedCollection \
	<primitive 97 #KeyedCollection #Collection #/u/smalltalk/prelude/kcollection.st \
	#(  ) \
	#( #values #select: #removeKey:ifAbsent: #removeKey: #remove: #keysSelect: #keysDo: #keys #indexOf:ifAbsent: #indexOf: #includesKey: #collect: #binaryDo: #atAll:put: #at: #asDictionary #addAll: #add:  ) \
	temp 4 9 > >

SHAR_EOF
if test 2622 -ne "`wc -c < 'prelude/kcollection.p'`"
then
	echo shar: error transmitting "'prelude/kcollection.p'" '(should have been 2622 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/kcollection.st'
then
	echo shar: will not over-write existing file "'prelude/kcollection.st'"
else
cat << \SHAR_EOF > 'prelude/kcollection.st'
Class KeyedCollection :Collection
[
	add: anElement
		^ self error: 'Must add with explicit key'
|
	addAll: aCollection
                aCollection binaryDo: [:x :y | self at: x put: y].
                ^ aCollection
|
	asDictionary			| newCollection |
		newCollection <- Dictionary new.
		self binaryDo: 
			[:key :val | newCollection at: key put: val].
		^ newCollection
|
	at: key
                ^ self at: key ifAbsent:
                   [self error:
                         (key printString , ': association not found').
                    ^ key]
|
	atAll: aCollection put: anObject
		aCollection do: [:x | self at: x put: anObject]
|
	binaryDo: aBlock                | item |
		self do: [:x | aBlock value: self currentKey
					value: x ].
                ^ nil
|
	collect: aBlock 
		^ self coerce:
		     (self inject: Dictionary new
                           into: [:x :y | x at: self currentKey
					    put: (aBlock value: y) . x ] )
|
	includesKey: key
                self at: key ifAbsent: [^ false].
                ^ true
|
	indexOf: anElement
		^ self indexOf: anElement
		ifAbsent: [self error: 'indexOf element not found']
|
	indexOf: anElement ifAbsent: exceptionBlock
                self do: [:x | (x = anElement) 
  				  ifTrue: [ ^ self currentKey ]].
                 ^ exceptionBlock value
|
	keys                             | newset |
                newset <- Set new.
                self keysDo: [:x | newset add: x].
                ^ newset
|
	keysDo: aBlock
                ^ self do: [ :x | aBlock value: self currentKey ]
|
	keysSelect: aBlock          
		^ self coerce:
		     (self inject: Dictionary new
                           into: [:x :y | (aBlock value: y currentKey)
                                           ifTrue: [x at: self currentKey
                                                      put: y]. x ] )
|
	remove: anElement
		^ self error: 'object must be removed with explicit key'
|
	removeKey: key
                ^ self removeKey: key ifAbsent:
                   [self error: 'no element associated with key'. ^ key]
|
	removeKey: key ifAbsent: exceptionBlock
		^ self error: 'subclass should implement RemoveKey:ifAbsent:'
|
	select: aBlock          
		^ self coerce:
		     (self inject: Dictionary new
                           into: [:x :y | (aBlock value: y)
                                           ifTrue: [x at: self currentKey
                                                      put: y]. x ] )
|
	values                           | newbag |
                newbag <- Bag new.
                self do: [:x | newbag add: x].
                ^ newbag
]
SHAR_EOF
if test 2628 -ne "`wc -c < 'prelude/kcollection.st'`"
then
	echo shar: error transmitting "'prelude/kcollection.st'" '(should have been 2628 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/larray.p'
then
	echo shar: will not over-write existing file "'prelude/larray.p'"
else
cat << \SHAR_EOF > 'prelude/larray.p'
temp <- <primitive 110 1 >
<primitive 112 temp 1		" nothing " \
	#( #[ 81 242 245] \
	#(  ) ) >

<primitive 98 #ArrayedCollection \
	<primitive 97 #ArrayedCollection #Object #/u/smalltalk/prelude/larray.st \
	#(  ) \
	#( #nothing  ) \
	temp 1 2 > >

SHAR_EOF
if test 250 -ne "`wc -c < 'prelude/larray.p'`"
then
	echo shar: error transmitting "'prelude/larray.p'" '(should have been 250 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/larray.st'
then
	echo shar: will not over-write existing file "'prelude/larray.st'"
else
cat << \SHAR_EOF > 'prelude/larray.st'
Class ArrayedCollection
" This is just a null version of ArrayedCollection to serve as a place
holder until the real version is read in during the prelude "
[
	nothing
		1
]

SHAR_EOF
if test 175 -ne "`wc -c < 'prelude/larray.st'`"
then
	echo shar: error transmitting "'prelude/larray.st'" '(should have been 175 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/list.p'
then
	echo shar: will not over-write existing file "'prelude/list.p'"
else
cat << \SHAR_EOF > 'prelude/list.p'
temp <- <primitive 110 17 >
<primitive 112 temp 1		" isEmpty " \
	#( #[ 16 93 181 243 245] \
	#(  ) ) >

<primitive 112 temp 2		" last " \
	#( #[ 16 161 247 2 93 243 242 32 10 24 10 49 243 245] \
	#(  ) ) >

<primitive 112 temp 3		" current " \
	#( #[ 17 10 49 243 245] \
	#(  ) ) >

<primitive 112 temp 4		" next " \
	#( #[ 17 10 50 241 97 162 247 3 17 10 49 243 245] \
	#(  ) ) >

<primitive 112 temp 5		" first " \
	#( #[ 16 241 97 162 247 3 17 10 49 243 245] \
	#(  ) ) >

<primitive 112 temp 6		" removeLast " \
	#( #[ 16 161 247 4 32 10 37 243 242 32 32 10 30 224 4 \
 32 10 37 243 216 243 245] \
	#(  ) ) >

<primitive 112 temp 7		" removeFirst " \
	#( #[ 16 161 247 4 32 10 37 243 242 16 113 16 10 50 96 \
 33 10 49 243 245] \
	#(  ) ) >

<primitive 112 temp 8		" removeError " \
	#( #[ 32 48 188 243 245] \
	#( 'cannot remove from an empty list'  ) ) >

<primitive 112 temp 9		" remove:ifAbsent: " \
	#( #[ 16 161 247 3 34 165 243 242 32 93 226 3 31 17 10 \
 49 33 181 247 21 35 161 247 7 17 10 50 241 96 248 \
 7 242 35 17 10 50 11 51 242 33 244 242 17 243 215 \
 242 34 165 243 245] \
	#(  ) ) >

<primitive 112 temp 10		" remove: " \
	#( #[ 32 33 224 4 32 48 188 243 216 243 245] \
	#( 'cant find item'  ) ) >

<primitive 112 temp 11		" findLast " \
	#( #[ 16 241 113 161 247 2 93 243 242 33 10 50 162 247 8 \
 33 10 50 241 113 242 249 14 242 33 243 245] \
	#(  ) ) >

<primitive 112 temp 12		" coerce: " \
	#( #[ 5 48 160 114 33 225 3 5 34 35 11 22 243 179 242 \
 34 243 245] \
	#(  ) ) >

<primitive 112 temp 13		" addAllLast: " \
	#( #[ 33 225 2 5 32 34 11 22 243 179 242 245] \
	#(  ) ) >

<primitive 112 temp 14		" addAllFirst: " \
	#( #[ 33 225 2 5 32 34 11 21 243 179 242 245] \
	#(  ) ) >

<primitive 112 temp 15		" addLast: " \
	#( #[ 16 161 247 5 32 33 11 21 243 242 32 10 24 5 53 \
 160 33 11 50 93 11 51 11 51 242 33 243 245] \
	#(  ) ) >

<primitive 112 temp 16		" addFirst: " \
	#( #[ 5 53 160 33 11 50 16 11 51 96 33 243 245] \
	#(  ) ) >

<primitive 112 temp 17		" add: " \
	#( #[ 5 53 160 33 11 50 16 11 51 96 33 243 245] \
	#(  ) ) >

<primitive 98 #List \
	<primitive 97 #List #SequenceableCollection #/u/smalltalk/prelude/list.st \
	#(  #first #current ) \
	#( #isEmpty #last #current #next #first #removeLast #removeFirst #removeError #remove:ifAbsent: #remove: #findLast #coerce: #addAllLast: #addAllFirst: #addLast: #addFirst: #add:  ) \
	temp 5 8 > >

SHAR_EOF
if test 2388 -ne "`wc -c < 'prelude/list.p'`"
then
	echo shar: error transmitting "'prelude/list.p'" '(should have been 2388 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/list.st'
then
	echo shar: will not over-write existing file "'prelude/list.st'"
else
cat << \SHAR_EOF > 'prelude/list.st'
"
	Lists are implemented using Points in order to
	reduce the number of classes in the standard prelude
"
Class List :SequenceableCollection
| first current |
[
	add: anItem
		first <- (Point new x: anItem ) y: first .
		^ anItem
|
	addFirst: anItem
		first <- (Point new x: anItem ) y: first .
		^ anItem
|
	addLast: anItem
		(first isNil) 
			ifTrue: [^ self addFirst: anItem].
		(self findLast) y: ((Point new x: anItem) y: nil).
		^ anItem
|
	addAllFirst: aCollection
		aCollection do: [:x | self addFirst: x]
|	
	addAllLast: aCollection
		aCollection do: [:x | self addLast: x]
|
	coerce: aCollection		| newList |
		newList <- List new.
		aCollection do: [:x | newList addLast: x].
		^ newList
|
	findLast		| item |
		((item <- first) isNil)
			ifTrue: [^ nil].
		[(item y) notNil]
			whileTrue: [item <- item y].
		^ item
|
	remove: anItem
		^ self remove: anItem 
			ifAbsent: [self error: 'cant find item']
|
	remove: anItem ifAbsent: exceptionBlock
		(first isNil) 
			ifTrue: [^ exceptionBlock value].
		self inject: nil into: [:prev :current |
			(current x == anItem)
				ifTrue: [(prev isNil)
						ifTrue: [first <- current y]
						ifFalse: [prev y: (current y)].
					 ^ anItem].
			current ] .
		^ exceptionBlock value
|
	removeError
		^ self error: 'cannot remove from an empty list'
|
	removeFirst	| item |
		(first isNil)
			ifTrue: [^ self removeError].
		item <- first.
		first <- first y.
		^ item x
|
	removeLast
		(first isNil)
			ifTrue: [^ self removeError].
		^ self remove: self last 
			ifAbsent: [self removeError]
|
	first
		^ ((current <- first) notNil) 
			ifTrue: [ current x ]
|
	next
		^ ((current <- current y) notNil)
			ifTrue: [ current x ]
|
	current
		^ current x
|
	last
		(first isNil) 
			ifTrue: [^ nil].
		^ self findLast x
|
	isEmpty
		^ first == nil
]
SHAR_EOF
if test 1802 -ne "`wc -c < 'prelude/list.st'`"
then
	echo shar: error transmitting "'prelude/list.st'" '(should have been 1802 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/magnitude.p'
then
	echo shar: will not over-write existing file "'prelude/magnitude.p'"
else
cat << \SHAR_EOF > 'prelude/magnitude.p'
temp <- <primitive 110 9 >
<primitive 112 temp 1		" max: " \
	#( #[ 32 33 204 247 3 32 248 2 242 33 243 245] \
	#(  ) ) >

<primitive 112 temp 2		" min: " \
	#( #[ 32 33 199 247 3 32 248 2 242 33 243 245] \
	#(  ) ) >

<primitive 112 temp 3		" between:and: " \
	#( #[ 32 33 203 252 3 32 34 200 243 245] \
	#(  ) ) >

<primitive 112 temp 4		" > " \
	#( #[ 33 32 199 243 245] \
	#(  ) ) >

<primitive 112 temp 5		" >= " \
	#( #[ 32 33 204 251 3 32 33 201 243 245] \
	#(  ) ) >

<primitive 112 temp 6		" ~= " \
	#( #[ 32 33 201 172 243 245] \
	#(  ) ) >

<primitive 112 temp 7		" = " \
	#( #[ 32 33 204 251 3 32 33 199 172 243 245] \
	#(  ) ) >

<primitive 112 temp 8		" < " \
	#( #[ 33 32 204 243 245] \
	#(  ) ) >

<primitive 112 temp 9		" <= " \
	#( #[ 32 33 199 251 3 32 33 201 243 245] \
	#(  ) ) >

<primitive 98 #Magnitude \
	<primitive 97 #Magnitude #Object #/u/smalltalk/prelude/magnitude.st \
	#(  ) \
	#( #max: #min: #between:and: #> #>= #~= #= #< #<=  ) \
	temp 3 4 > >

SHAR_EOF
if test 980 -ne "`wc -c < 'prelude/magnitude.p'`"
then
	echo shar: error transmitting "'prelude/magnitude.p'" '(should have been 980 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/magnitude.st'
then
	echo shar: will not over-write existing file "'prelude/magnitude.st'"
else
cat << \SHAR_EOF > 'prelude/magnitude.st'
Class Magnitude
[
	<= arg
		^ (self < arg) or: [self = arg]

|	< arg
		^ (arg > self)

|	= arg
		^ (self > arg or: [self < arg]) not

|	~= arg
		^ (self = arg) not

|	>= arg
		^ (self > arg) or: [self = arg]

|	> arg
		^ arg < self

|	between: low and: high
		^ (self >= low) and: [self <= high]

|	min: arg
		^ (self < arg) ifTrue: [self] ifFalse: [arg]

|	max: arg
		^ (self > arg) ifTrue: [self] ifFalse: [arg]
]
SHAR_EOF
if test 416 -ne "`wc -c < 'prelude/magnitude.st'`"
then
	echo shar: error transmitting "'prelude/magnitude.st'" '(should have been 416 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/nil.p'
then
	echo shar: will not over-write existing file "'prelude/nil.p'"
else
cat << \SHAR_EOF > 'prelude/nil.p'
temp <- <primitive 110 3 >
<primitive 112 temp 1		" printString " \
	#( #[ 48 243 245] \
	#( 'nil'  ) ) >

<primitive 112 temp 2		" notNil " \
	#( #[ 92 243 245] \
	#(  ) ) >

<primitive 112 temp 3		" isNil " \
	#( #[ 91 243 245] \
	#(  ) ) >

<primitive 98 #UndefinedObject \
	<primitive 97 #UndefinedObject #Object #/u/smalltalk/prelude/nil.st \
	#(  ) \
	#( #printString #notNil #isNil  ) \
	temp 1 2 > >

SHAR_EOF
if test 409 -ne "`wc -c < 'prelude/nil.p'`"
then
	echo shar: error transmitting "'prelude/nil.p'" '(should have been 409 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/nil.st'
then
	echo shar: will not over-write existing file "'prelude/nil.st'"
else
cat << \SHAR_EOF > 'prelude/nil.st'
Class UndefinedObject
[
        isNil
                ^ true
|
        notNil
                ^ false
|
        printString
                ^ 'nil'
]
SHAR_EOF
if test 150 -ne "`wc -c < 'prelude/nil.st'`"
then
	echo shar: error transmitting "'prelude/nil.st'" '(should have been 150 characters)'
fi
fi # end of overwriting check
if test -f 'prelude/number.p'
then
	echo shar: will not over-write existing file "'prelude/number.p'"
else
cat << \SHAR_EOF > 'prelude/number.p'
temp <- <primitive 110 30 >
<primitive 112 temp 1		" truncateTo: " \
	#( #[ 32 33 190 10 47 33 194 243 245] \
	#(  ) ) >

<primitive 112 temp 2		" to:by: " \
	#( #[ 5 46 160 241 32 33 34 131 0 242 243 245] \
	#( #from:to:by:  ) ) >

<primitive 112 temp 3		" to: " \
	#( #[ 5 46 160 241 32 33 81 131 0 242 243 245] \
	#( #from:to:by:  ) ) >

<primitive 112 temp 4		" strictlyPositive " \
	#( #[ 32 80 204 243 245] \
	#(  ) ) >

<primitive 112 temp 5		" squared " \
	#( #[ 32 32 194 243 245] \
	#(  ) ) >

<primitive 112 temp 6		" sqrt " \
	#( #[ 32 175 10 43 243 245] \
	#(  ) ) >

<primitive 112 temp 7		" sign " \
	#( #[ 32 80 199 247 3 90 248 11 242 32 80 204 247 3 81 \
 248 2 242 80 243 245] \
	#(  ) ) >

<primitive 112 temp 8		" roundTo: " \
	#( #[ 32 33 190 10 41 33 194 243 245] \
	#(  ) ) >

<primitive 112 temp 9		" reciprocal " \
	#( #[ 48 32 190 243 245] \
	#( 1.00  ) ) >

<primitive 112 temp 10		" raisedTo: " \
	#( #[ 32 175 33 175 11 16 243 245] \
	#(  ) ) >

<primitive 112 temp 11		" radians " \
	#( #[ 5 54 32 175 176 243 245] \
	#(  ) ) >

<primitive 112 temp 12		" positive " \
	#( #[ 32 80 203 243 245] \
	#(  ) ) >

<primitive 112 temp 13		" pi " \
	#( #[ 32 48 194 243 245] \
	#( 3.1415926  ) ) >

<primitive 112 temp 14		" negative " \
	#( #[ 32 80 199 243 245] \
	#(  ) ) >

<primitive 112 temp 15		" negated " \
	#( #[ 80 32 193 243 245] \
	#(  ) ) >

<primitive 112 temp 16		" log: " \
	#( #[ 32 10 32 33 10 32 190 243 245] \
	#(  ) ) >

<primitive 112 temp 17		" ln " \
	#( #[ 32 175 10 32 243 245] \
	#(  ) ) >

<primitive 112 temp 18		" gamma " \
	#( #[ 32 175 10 26 243 245] \
	#(  ) ) >

<primitive 112 temp 19		" exp " \
	#( #[ 32 175 10 23 243 245] \
	#(  ) ) >

<primitive 112 temp 20		" abs " \
	#( #[ 32 80 199 247 5 80 32 193 248 2 242 32 243 245] \
	#(  ) ) >

<primitive 112 temp 21		" @ " \
	#( #[ 5 53 160 32 11 50 33 11 51 243 245] \
	#(  ) ) >

<primitive 112 temp 22		" ^ " \
	#( #[ 32 175 33 175 11 16 243 245] \
	#(  ) ) >

<primitive 112 temp 23		" / " \
	#( #[ 32 33 11 34 33 32 11 34 190 243 245] \
	#(  ) ) >

<primitive 112 temp 24		" * " \
	#( #[ 32 33 11 34 33 32 11 34 194 243 245] \
	#(  ) ) >

<primitive 112 temp 25		" - " \
	#( #[ 32 33 11 34 33 32 11 34 193 243 245] \
	#(  ) ) >

<primitive 112 temp 26		" + " \
	#( #[ 32 33 11 34 33 32 11 34 192 243 245] \
	#(  ) ) >

<primitive 112 temp 27		" > " \
	#( #[ 32 33 11 34 33 32 11 34 204 243 245] \
	#(  ) ) >

<primitive 112 temp 28		" < " \
	#( #[ 32 33 11 34 33 32 11 34 199 243 245] \
	#(  ) ) >

<primitive 112 temp 29		" = " \
	#( #[ 32 33 11 34 33 32 11 34 201 243 245] \
	#(  ) ) >

<primitive 112 temp 30		" maxtype: " \
	#( #[ 32 33 250 2 9 247 3 32 248 4 242 33 32 191 243 \
 245] \
	#(  ) ) >

<primitive 98 #Number \
	<primitive 97 #Number #Magnitude #/u/smalltalk/prelude/number.st \
	#(  ) \
	#( #truncateTo: #to:by: #to: #strictlyPositive #squared #sqrt #sign #roundTo: #reciprocal #raisedTo: #radians #positive #pi #negative #negated #log: #ln #gamma #exp #abs #@ #^ #/ #* #- #+ #> #< #= #maxtype:  ) \
	temp 3 6 > >

SHAR_EOF
if test 3046 -ne "`wc -c < 'prelude/number.p'`"
then
	echo shar: error transmitting "'prelude/number.p'" '(should have been 3046 characters)'
fi
fi # end of overwriting check
#	End of shell archive
exit 0