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
[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
[9928x5]
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]
Parenthesis are good for readability, but you should know, that they're 
not necessary in many cases.
repeat index (length? cases) [
can be written:
repeat index length? cases [

Again it's a tiny issue, but it's good to know, if you wanna become 
a shark in REBOL coding.
It's good work, you've pulled! And a fine idea with an enum! type 
implemented as an object. A good way to get a feeling about context 
and functions in REBOL.
You talked about locals. If you have a function with locals and no 
parameters, you can also use HAS:
f: has [v] [v: 1 + 2]
Henrik
1-Apr-2008
[9933]
sometimes you don't even need to check for none, as find returns 
none, if nothing is found:

if find ...
Gregg
1-Apr-2008
[9934x2]
On parens, the reverse is true as well. Sometimes you need them in 
REBOL, where you wouldn't in other langs, because ops take precedence 
over funcs and math is strictly L->R.
As one who has been pushing for better PitL tools for REBOL, I hear 
you Fork. When I found REBOL, a lot of the initial things I did were 
to replace stuff from lanugages I was used to, that were "missing" 
in REBOL. There are still holes, and each of us will have different 
ones, but I eventually found that REBOL's way is not bad or wrong, 
just different. It takes a very different mindset to work effectively 
in REBOL. And use can use its power and flexibility to create a mess 
as easily (or more) as to create a beautiful and elegant solution.