World: r3wp
[!REBOL3]
older newer | first last |
BrianH 27-Feb-2011 [7544] | Async call, and async in general, is a lot easier in R3. I would be quite interested in an async call port in R3, particularly when we start to get port plumbing. |
Andreas 27-Feb-2011 [7545x3] | From a quick glance at Cheyene's call.r, enabling /wait should be rather simple: don't enter the final UNTIL loop unless WAIT (or OUTPUT, or ERROR) is set. |
I think you could also get rid of the until loop completely, by using WaitForSingleObject to wait for process termination. Which is exactly how the current win32 hostkit does it, btw. | |
but then, you probably couldn't in cheyenne, as it will block everything else. | |
Dockimbel 27-Feb-2011 [7548] | In fact, this blocking mezz-level CALL is used in worker process where it's allowed to wait. Right, WaitForSingleObject is the correct way, this CALL was just a quick adaptation of my async version for Cheyenne (I needed to pass environments variables to a child process for CGI support), but I think I'll drop it in next Cheyenne revisions and use a different approach. |
Robking 28-Feb-2011 [7549] | I had a question regarding event handling in REBOL 2. Please let me know the appropriate forum for that sort of question. :) |
BrianH 28-Feb-2011 [7550] | Try Core or View. |
Andreas 28-Feb-2011 [7551] | Or "Rebol School" :) |
Robking 28-Feb-2011 [7552] | Thanks, sorry. Works for me. :) |
Andreas 28-Feb-2011 [7553x4] | Me: "What makes CASE/all different from a long sequence of IFs?" Brian: "Maintainability of code." That's probably an effect of CASE/all enforcing a strict sequence of IFs, i.e. without other (unconditional) code blocks in between those IFs. |
But this is probably only a matter of discipline, as one can easily smuggle uncoditional code into CASE/all too (by using #[true] as condition). | |
At which point, all that's left with CASE/all is one additional level of indentation. | |
And maybe a more efficient evaluation in case of R3. | |
BrianH 28-Feb-2011 [7557x3] | Yes to both of those. With the old LOAD, noone other than me could add features because the old control flow was too complex. With the new LOAD and LOAD-HEADER, features were easy to add. |
The most efficient way to add non-conditional code is to put the code in the conditional clause and have none for the associated code block. There are several lines like that in LOAD-HEADER. | |
And it is definitely more efficient evaluation in R3, and R2 as well. | |
Ladislav 1-Mar-2011 [7560] | What makes CASE/all different from a long sequence of IFs? - as far as I am concerned, I simply don't use, and never used CASE/ALL |
Rebolek 1-Mar-2011 [7561] | You should try it, it's not bad. |
Ladislav 1-Mar-2011 [7562x2] | Do not have any code where it would be of any advantage |
As far as the maintainability of the code goes, it shall be noted, that CASE/ALL is one of the worst constructs to test. | |
Henrik 1-Mar-2011 [7564] | I have two CASE/ALLs in NLPP (Ladislav knows what NLPP is). :-) |
Ladislav 1-Mar-2011 [7565] | http://www.saphirion.com/downloads/files/saphirion_nlpp.pdf |
Henrik 1-Mar-2011 [7566] | Nevertheless, the code could be replaced, if needed, but it looks to be working ok with CASE/ALL. |
BrianH 1-Mar-2011 [7567x3] | I've never had a problem with CASE itself, /all or not. If it is tough to test I've never seen it. |
There are a few functions in R3 that take the form of a CASE/all followed by a CASE. SAVE is one such function, though it has a series of IF statements at its beginning leftover from before that could be made more efficient by adding to the beginning of the CASE/all. | |
CASE/all is no more difficult to test than the series of IF statements it replaces. Easier to analyze, because it's more structured. | |
Ladislav 1-Mar-2011 [7570x3] | CASE/all is no more difficult to test than the series of IF statements it replaces. - yes, sure that is true |
As to why CASE/ALL is hard to test: for example, if you have 10 cases in a CASE statement, and use 10 different tests for testing such a code, then, to be as thorough when CASE/ALL using 10 cases you would need 1024 tests. | |
sorry for the formulation, but I hope the idea is clear | |
Sunanda 2-Mar-2011 [7573] | Is this a problem, or a change in execution model? b: reduce ['now] do first b (nothing on console) do do first b == 2-Mar-2011/13:10:13 R2 will respond with the date with only one DO |
Ladislav 2-Mar-2011 [7574] | A change in execution model |
Andreas 2-Mar-2011 [7575] | Anyone knows if error printing is currently hookable in R3? I.e. is there a function somewhere which is called by the interpreter when an error! escapes to the top-level? |
BrianH 3-Mar-2011 [7576] | Not currently. |
Rebolek 3-Mar-2011 [7577] | Bug? >> a: context [f: does [print b] b: none] == make object! [ f: make function! [[][print b]] b: none ] >> c: context [b: make map! [m 4]] == make object! [ b: make map! [ m 4 ] ] >> a1: make a c == make object! [ f: make function! [[][print b]] b: make map! [ m 4 ] ] >> a1/f none |
BrianH 3-Mar-2011 [7578x2] | Appears to be a bug. I'm writing the ticket now. |
See here for details: http://issue.cc/r3/1863 | |
GrahamC 4-Mar-2011 [7580x2] | Does tab for path completion not work anymore ? |
Or, did it never work? | |
Rebolek 4-Mar-2011 [7582] | never worked in R3 |
GrahamC 4-Mar-2011 [7583x2] | ok. |
How bad would it be to have a strict version of rebol vs a relaxed version. I'm thinking of things like skip which require an integer and choke on none ... | |
BrianH 4-Mar-2011 [7585x2] | It would be bad to have a non-strict version, as someone might use it. |
That's only bad if their scripts were published or used by others. | |
Rebolek 4-Mar-2011 [7587x2] | Can I create object from block of words and values? |
*blocks of... like - words: [a b] values [1 2] | |
Sunanda 4-Mar-2011 [7589] | This is one (fairly manual) way: words: [a b] values: [1 2] obj: make object! [] for n 1 length? words 1 [ append obj words/:n set in obj words/:n values/:n ] |
BrianH 4-Mar-2011 [7590] | set bind/new/copy words obj values |
Rebolek 4-Mar-2011 [7591x2] | yes..I though that there may be some fast native function for it ;) |
ah, thanks! | |
BrianH 4-Mar-2011 [7593] | The /copy is only necessary if you will be reusing the words block. |
older newer | first last |