[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
|