r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[Core] Discuss core issues

Fork
1-Apr-2008
[9880]
do context[do :block] ... that would give it a new context and run 
it there.  What kind of thing would that break?
Anton
1-Apr-2008
[9881]
So if I write
	test-block "section" [ print reps ]


then REPS means what *I* (the user of the test-block function) thinks 
it means, not what test-block thinks in its little context.
Fork
1-Apr-2008
[9882]
Hmmm.  Ok, so if I want to have local variables in a test-block the 
context declaration would need to live there?  That is different?
Anton
1-Apr-2008
[9883]
(First DO does nothing extra, just returns the object)
Again, 
	context [do :block]
is no more (except 'self) than:
	do :block
Fork
1-Apr-2008
[9884]
I did try that but it didn't seem to evaluate the block
Anton
1-Apr-2008
[9885]
You could do something like this:
	use [var1 var2] block
or
	context join [var1: 100 var2: 200] block
Fork
1-Apr-2008
[9886]
Now it's evaluating, hm.  Wonder what I did before.
Anton
1-Apr-2008
[9887]
There're lots of confusions here when starting out :) beware !
Fork
1-Apr-2008
[9888]
Yes!
Anton
1-Apr-2008
[9889]
But I'm wondering why you want to subvert the meaning of the words 
in the block to your local meanings.
Fork
1-Apr-2008
[9890]
Well, I have one test block after another in a line
Anton
1-Apr-2008
[9891]
Surely you want the block to retain all its meanings ?
Fork
1-Apr-2008
[9892x2]
I'm used to C++, so I like scopes.  They make me happy :)
So I was wondering if I could let the concept of each test-block 
being a scope come from test-block itself
Anton
1-Apr-2008
[9894]
Rebol's contexts are better ! (But scope is good for compiling.)
Fork
1-Apr-2008
[9895x4]
Because if one test block goes:
var: 15
I don't want the next test-block to be entered with var set to 15
I want it set to none initially
Anton
1-Apr-2008
[9899]
Oh ok, so letting set-words be locals automatically.
	context block
Fork
1-Apr-2008
[9900x2]
Does context affect anything besides set-words ?
e.g. will everything else bind the same as you would have otherwise 
expected?
Anton
1-Apr-2008
[9902x2]
No, and the set-words are searched only in the block specified (not 
"sub-blocks").
This is getting into lfunc territory, I think.
Fork
1-Apr-2008
[9904x2]
Yes, I was thinking I should study that
It appears that REBOL is just more free about this by default.  You 
make a context for a whole bunch of code, the words bind freely, 
and then you blow it all away on the context level.
Anton
1-Apr-2008
[9906x2]
The question is, how deep do you go looking for set-words ?
Yes, much more free. And I love it that way.
Fork
1-Apr-2008
[9908]
Well, again, I'll say... depends on what you're trying to write. 
 :)
Anton
1-Apr-2008
[9909]
True, large projects need rigorous standards.
Fork
1-Apr-2008
[9910]
I'm an EE, so my biases are going to be a certain way.  In fact, 
I try to bring that need for structure and formalism to things that 
are typically thought of as unimportant for having them, e.g. GUI 
code.
Anton
1-Apr-2008
[9911]
I'm all for formalism. Rebol allows many gradations from extremely 
free, to quite strict (if you're prepared to write some support functions 
like Ladislav).
Fork
1-Apr-2008
[9912]
I worry, for instance, about the semantics of if your app starts 
drawing on MOUSE_DOWN and then keeps processing MOUSE_MOVE as if 
you are drawing until you get a MOUSE_UP... but then your app loses 
focus while the mouse is down (for instance, due to a window popping 
up or maybe the user hit alt-tab).  So the app gets lost, or information 
gets lost, or whatever
Anton
1-Apr-2008
[9913]
Which is great for high-speed prototyping.
Fork
1-Apr-2008
[9914]
Yes, high-speed prototyping does seem to be REBOL's area.  I've tried 
Awk and PHP and Perl and such and thought they were all terrible.
Anton
1-Apr-2008
[9915]
Yes, that's very interesting, and I'm going to have to spend some 
more time thinking about it.
Fork
1-Apr-2008
[9916x2]
If you mean the mouse thing, I have a blog article / screencast about 
it
http://hostilefork.com/2007/11/25/lost-focus-placeholder/
Anton
1-Apr-2008
[9918x3]
Although I had noticed apps misbehaving on refocusing, I hadn't really 
thought much about it.
I guess my attitude was to just get the thing working first, and 
worry about these sorts of edge cases later.
That placeholder concept is cool. I wonder if it shouldn't be integrated 
into the OS ?
Fork
1-Apr-2008
[9921x2]
I like this quote: "Some facets of usability (
such as cancellation, 
undo, progress bars, and others) 
require software architecture support 
 .
Because they reach so deeply into the architecture of a system,
these 
facets must be built into the system from its inception 
rather than 
added after an initial system design
and user interface has been 
achieved."
Glad you like it... I just think it would be nice to see more things 
like that.  I don't know that I think this particular issue is super 
high priority, it just represents a more rigorous way of thinking 
about such problems.  My article on undo/redo tied to single user 
events is actually probably something I care more about, but it's 
another thing that people don't take as seriously as I... http://hostilefork.com/2007/11/25/undo-single-user-event/
Anton
1-Apr-2008
[9923]
No, it's excellent work. Advance the standard of modern applications.
Fork
1-Apr-2008
[9924]
Thanks again.  Well, I decided the best thing I could do was to show 
the ideas as I haven't really been writing software for a few years
Anton
1-Apr-2008
[9925]
It's all part of "The Great Plan" to clarify each concept in computing 
:)
Fork
1-Apr-2008
[9926x2]
Well, back to REBOL/Core :) I do feel that it's nice to find ways 
in which it can be applied more formally.  Maybe you can't validate 
the *process* by which a REBOL program achieves a result, but you 
can validate the *product* of its processes and check them for validity. 
 I think I would consider it that way, in that I would write tools 
to do all kinds of massive things in REBOL but then very carefully 
write an output-checker in another language.
Ok, gnite, and thank you for all your help.  I've updated the code 
and still appreciate suggestions: http://pastebin.com/m1f01d32a
Geomol
1-Apr-2008
[9928x2]
Fork, it's tiny issues, but you might wanna do this:
In the set-value and switch functions, you have
... none = find ...
In the case of checking for none, you might wanna do:
if none? find ...
One of the really great things with REBOL, is that you can write 
stuff really short. Your get-value function is defined as:
get-value: function [] [] [v]
I would write:
get-value: does [v]