World: r3wp
[Core] Discuss core issues
older newer | first last |
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 [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] | |
older newer | first last |