[BUG?] ScriptingSystem arithmetics

richard at simula.no richard at simula.no
Tue Oct 15 10:55:02 UTC 2002


Have you (all) already tried parentheses?  You don't need to show the
parentheses if the parsing order is understood, but during dragging (of
a new operator) the implicit paretheses could be made explicit so that
the operator could be dropped in the intended place.

Bert's example can then be built as he first attempted:
value
(value) max: ()
(value) max: (-20)
((value) max: (-20)) min: ()
((value) max: (-20)) min: (20)
The difference for Bert is that here the parentheses are made explicit
so he has the choice to drop #min inside or outside the parentheses with
-20.  Dropping inside makes -20 part of the #min: expression.  Dropping
outside makes the entire #max: expression a subexpression to the #min:
expression.

Equivalently, you can avoid parentheses by using a visual representation
of a tree.  Even children must learn how to climb a tree.

Rich

To: squeak-dev at lists.squeakfoundation.org
> From: Alan Kay <Alan.Kay at squeakland.org>
> Subject: Re: [BUG?] ScriptingSystem arithmetics
> Reply-To: squeak-dev at lists.squeakfoundation.org
> 
> Bert --
> 
> It's an "unfinished feature" in search of an idea. It's unfinished 
> because we didn't come up with a really nice and simple way to deal 
> with subexpressions in etoys. The idea was to solve this problem at 
> the next scripting level -- for Omniusers -- but this didn't get 
> finished either, so no solution was moved to etoys. I expect that all 
> of this will be much better and nicer in a few months. However, we 
> still don't have a great "kids way" to think about and make 
> subexpressions. Got any good ideas?
> 
> Cheers,
> 
> Alan
> 
> -----
> 
> At 12:14 PM +0200 10/14/02, Bert Freudenberg wrote:
> >I think this is a bug, or confusing at least:
> >
> >When constructing arithmetic expressions with tiles, they bind from right
> >to left. However, the graphic representation suggests a left-to-right
> >order, which also would be the "smalltalky" way of binding. It only gets
> >obvious when one looks at the textual representation.
> >
> >My particular case was limiting the range of a variable using min: and
> >max:. Of course, I constructed it as "[value][max:][-20][min:][20]". 
> >But the actual code generated is "value max: (-20 min: 20)".
> >
> >A workaround is to use "[-20][max:][20][min:][value]" which results in
> >"-20 max: (20 min: value)" but this is surprising, at best.
> >
> >I don't see a simple solution. Any ideas?
> >
> >-- Bert
>



More information about the Squeak-dev mailing list