About {} and its limits

stéphane ducasse ducasse at iam.unibe.ch
Tue Feb 8 09:02:13 UTC 2005


Hi

I want to share my experience with you about {} in squeak.

I have a collection as follow which contains points! This is a spec for 
a shape.

{{ 0 at 0 . 0 at 0 . 0 at 0 . 26 at 6 . } "line" .
{ 26 at 6 . 26 at 6 . 26 at 6 . 22 at 13 . } "line" .
{ 22 at 13 . 77 at 41 . 79 at 41 . 134 at 64 . } "curve" .
{ 134 at 64 . 123 at 70 . 121 at 70 . 101 at 71 . } "curve" .
{ 101 at 71 . 116 at 78 . 115 at 78 . 125 at 81 . } "curve" .
{ 125 at 81 . 137 at 76 . 148 at 74 . 161 at 73 . } "curve" .
{ 161 at 73 . 174 at 72 . 189 at 73 . 211 at 73 . } "curve" .
{ 211 at 73 . 221 at 73 . 238 at 74 . 253 at 77 . } "curve" .
{ 253 at 77 . 269 at 79 . 283 at 82 . 290 at 85 . } "curve" .
{ 290 at 85 . 302 at 90 . 318 at 96 . 319 at 113 . } "curve" .
{ 319 at 113 . 319 at 126 . 306 at 134 . 295 at 140 . } "curve" .
{ 295 at 140 . 284 at 146 . 273 at 149 . 260 at 151 . } "curve" .
{ 260 at 151 . 247 at 152 . 231 at 152 . 213 at 152 . } "curve" .
{ 213 at 152 . 194 at 151 . 164 at 151 . 141 at 144 . } "curve" .
{ 141 at 144 . 119 at 138 . 111 at 134 . 97 at 121 . } "curve" .
{ 97 at 121 . 82 at 107 . 86 at 90 . 100 at 86 . } "curve" .
{ 100 at 86 . 76 at 73 . 67 at 66 . 41 at 46 . } "curve" .
{ 41 at 46 . 71 at 56 . 74 at 59 . 100 at 64 . } "curve" .
{ 100 at 64 . 100 at 64 . 100 at 64 . 20 at 15 . } "line" .
{ 20 at 15 . 20 at 15 . 20 at 15 . 14 at 21 . } "line" .
{ 14 at 21 . 14 at 21 . 14 at 21 . 0 at 0 . } "line" .
}

and I wanted to apply a reduction factor of 0.7
now my problem is how can I get back collection of point in an array 
form without losing the fact that
they are points.

So naively I did:

{{ 0 at 0 . 0 at 0 . 0 at 0 . 26 at 6 . } "line" .
{ 26 at 6 . 26 at 6 . 26 at 6 . 22 at 13 . } "line" .
{ 22 at 13 . 77 at 41 . 79 at 41 . 134 at 64 . } "curve" .
{ 134 at 64 . 123 at 70 . 121 at 70 . 101 at 71 . } "curve" .
{ 101 at 71 . 116 at 78 . 115 at 78 . 125 at 81 . } "curve" .
{ 125 at 81 . 137 at 76 . 148 at 74 . 161 at 73 . } "curve" .
{ 161 at 73 . 174 at 72 . 189 at 73 . 211 at 73 . } "curve" .
{ 211 at 73 . 221 at 73 . 238 at 74 . 253 at 77 . } "curve" .
{ 253 at 77 . 269 at 79 . 283 at 82 . 290 at 85 . } "curve" .
{ 290 at 85 . 302 at 90 . 318 at 96 . 319 at 113 . } "curve" .
{ 319 at 113 . 319 at 126 . 306 at 134 . 295 at 140 . } "curve" .
{ 295 at 140 . 284 at 146 . 273 at 149 . 260 at 151 . } "curve" .
{ 260 at 151 . 247 at 152 . 231 at 152 . 213 at 152 . } "curve" .
{ 213 at 152 . 194 at 151 . 164 at 151 . 141 at 144 . } "curve" .
{ 141 at 144 . 119 at 138 . 111 at 134 . 97 at 121 . } "curve" .
{ 97 at 121 . 82 at 107 . 86 at 90 . 100 at 86 . } "curve" .
{ 100 at 86 . 76 at 73 . 67 at 66 . 41 at 46 . } "curve" .
{ 41 at 46 . 71 at 56 . 74 at 59 . 100 at 64 . } "curve" .
{ 100 at 64 . 100 at 64 . 100 at 64 . 20 at 15 . } "line" .
{ 20 at 15 . 20 at 15 . 20 at 15 . 14 at 21 . } "line" .
{ 14 at 21 . 14 at 21 . 14 at 21 . 0 at 0 . } "line" .
} collect: [ :each | each collect: [:pt | pt * 0.7]]

as I need to have a textual representation of the collection I cannot 
print it
else I would end up with

  #(#(0.0 at 0.0 0.0 at 0.0 0.0 at 0.0 18.2 at 4.2) #(18.2 at 4.2 18.2 at 4.2 18.2 at 4.2 
15.4 at 9.1) #(15.4 at 9.1 53.9 at 28.7 55.3 at 28.7 93.8 at 44.8) #(93.8 at 44.8 
86.1 at 49.0 84.7 at 49.0 70.7 at 49.7) #(70.7 at 49.7 81.2 at 54.6 80.5 at 54.6 
87.5 at 56.7) #(87.5 at 56.7 95.9 at 53.2 103.6 at 51.8 112.7 at 51.1) #(112.7 at 51.1 
121.8 at 50.4 132.3 at 51.1 147.7 at 51.1) #(147.7 at 51.1 154.7 at 51.1 166.6 at 51.8 
177.1 at 53.9) #(177.1 at 53.9 188.3 at 55.3 198.1 at 57.4 203.0 at 59.5) #(203.0 at 59.5 
211.4 at 63.0 222.6 at 67.2 223.3 at 79.1) #(223.3 at 79.1 223.3 at 88.2 214.2 at 93.8 
206.5 at 98.0) #(206.5 at 98.0 198.8 at 102.2 191.1 at 104.3 182.0 at 105.7) 
#(182.0 at 105.7 172.9 at 106.4 161.7 at 106.4 149.1 at 106.4) #(149.1 at 106.4 
135.8 at 105.7 114.8 at 105.7 98.7 at 100.8) #(98.7 at 100.8 83.3 at 96.6 77.7 at 93.8 
67.9 at 84.7) #(67.9 at 84.7 57.4 at 74.9 60.2 at 63.0 70.0 at 60.2) #(70.0 at 60.2 
53.2 at 51.1 46.9 at 46.2 28.7 at 32.2) #(28.7 at 32.2 49.7 at 39.2 51.8 at 41.3 
70.0 at 44.8) #(70.0 at 44.8 70.0 at 44.8 70.0 at 44.8 14.0 at 10.5) #(14.0 at 10.5 
14.0 at 10.5 14.0 at 10.5 9.8 at 14.7) #(9.8 at 14.7 9.8 at 14.7 9.8 at 14.7 0.0 at 0.0))

and I do not get points in array but numbers....too bad.
So now I'm stuck with recreating a textual representation of the spec.

What is missing is a printAsDynamicallyCreatedArray....

Stef






More information about the Squeak-dev mailing list