World: r3wp
[Core] Discuss core issues
older newer | first last |
Anton 3-Feb-2006 [3344] | See how it performs for a little while, first... :-) |
MichaelB 3-Feb-2006 [3345x2] | this might be something dangerous: write %test.r "hello" path: what-dir remove back tail path write %test.r "hello" ; this fails problem is: what-dir returns directly system/script/path what seams to be used in order to resolve relative file values I just recognized it using the request-dir from didec which was in the rebgui distro -038 (he's doing this in the request-dir function in the line with if all [not empty? path slash = last path][remove back tail path] so question is whether this is a bug and belongs to rambo, is ok (I don't think so) or what else ? might also be that didec changed this in a later version (script was dated 2003 and maybe at this time 'what-dir had a different behavior), but this doesn't matter regarding what 'what-dir returns |
dangerous in the sense hard to get why suddenly some 'write doesn't work anymore | |
Volker 3-Feb-2006 [3347x2] | its another form of change-dir IMHO |
So there is no problem. except of the usual "easy to forget copy" in Dides case. Hmm, maybe this effect is really hidden, with what-dir beeing a function. Easy to expect it copies. | |
MichaelB 3-Feb-2006 [3349] | yes that's what I mean, nothing wrong with rebol, but who guesses that this returns a really vulnerable path |
Volker 3-Feb-2006 [3350] | Everyone who knows Carls ways of ssaving space. Although, i agree :) |
MichaelB 3-Feb-2006 [3351x2] | :-) |
but then Carl should write something about stylerules to add to every function documentation which states whether it's copying things or not - sometimes it's mentioned but like in 'what-dir 's case not - so either better styleguide or these things should be implemented the safe way | |
Volker 3-Feb-2006 [3353] | its easier to write when its copied.. |
MichaelB 3-Feb-2006 [3354] | what do you mean ? (you don't need to copy yourself - thus saving a word?) |
Volker 3-Feb-2006 [3355x2] | No, if there isnt mentioned "it returns a copy" better expect it does not.. |
WHich is rarely, so it is easier to add the few "it copies" then the lot "it does not" | |
MichaelB 3-Feb-2006 [3357x2] | ok, only problem I have is that in real world situations one can't think about everything and starting to copy everything everywhere just to be safe is no solution |
I'm thinking more in terms of some normal person (if there is something like that) and to me it seams quite a burden to think even about such tiny details | |
Volker 3-Feb-2006 [3359] | Dont take me serious, i am sarcastic! Although i don't know a good general solution for this copy-thing. |
MichaelB 3-Feb-2006 [3360x2] | and in my case it was even worse as I didn't know what happend until I stared to examine a outside script pretty closely and step by step following what it does |
yes I understand - I just don't know a good solution either | |
Volker 3-Feb-2006 [3362x2] | maybe it should really be a docu-rule. Forth has some flag-letters, like M: multitasking-impact etc. We could have C: copies/not, calls wait, what else? |
( i am away, cu) | |
MichaelB 3-Feb-2006 [3364] | bye |
JaimeVargas 3-Feb-2006 [3365] | This is what I called gotchas. |
Henrik 5-Feb-2006 [3366] | how do you test for a function that returns nothing? I want to DO a script, and check if there was an error, but the script might sometimes not return anything |
Volker 5-Feb-2006 [3367x3] | !>>error? [()] == false |
!>>unset? () == true | |
!>>attempt[() true] == true !>>attempt[1 / 0 true] == none | |
Anton 6-Feb-2006 [3370] | if error? set/any 'err try [do %script.r][print mold disarm err] |
DideC 6-Feb-2006 [3371x3] | MichaelB: about the path problem in request-dir, it's a bug in the code. The simple solution is to patch this line (in request-dir func at the end of the script : if not all [keep path] [path: any [where what-dir]] like this : if not all [keep path] [path: copy any [where what-dir]] |
the 'path word is local to ctx-req-dir context and the Rebol path must not be changed by it. It's up to the "user code" to change it if he wants to. | |
But I agree that Rebol should check if path is "complete" (trailing "/") before using it in read/save/load/... functions | |
Pekr 9-Feb-2006 [3374x4] | I have got question from Bobik, to which I don't know answer ... I tracked the problem, but dunno why it is as it is :-) |
blk: [1 false] if blk/2 [print 123] | |
he was wondering, why it is true .... I found out after checking the type? blk/2, which is - word! .... my question is why it is word! and not logic! ? | |
blk/1 is integer!, why false here is not logic! ? anyone? thanks :-) | |
Sunanda 9-Feb-2006 [3378x2] | blk: reduce [1 false] ;; to correctly evaluate the block contents |
I guess it's analogous to: blk: [1 make object! [a: 1]] print blk/2 make | |
Ashley 9-Feb-2006 [3380] | blk: [1 #[false]] |
Pekr 9-Feb-2006 [3381x2] | ok, thanks ... I think now I understand ... yesterday I read about Haskell and functional languages ... |
Bobik used str: "[1 false]" val: load str ... so basically, he "executed" (evaluated) string, he got block, but he forgot to do the same for block content - so here reduce comes in the play ... | |
Sunanda 9-Feb-2006 [3383] | It can be annoying because reduce does not have a /deep refinement -- so if you load nested blocks, you may need to do a lot of reduces to make it work: xx: reduce load " [ false [ true]]" == [false [true]] type? xx/1 == logic! type? xx/2/1 == word! |
Pekr 9-Feb-2006 [3384] | I wonder if not being strongly typed (as Haskell claims they are), does not lead to almost untrackable bugs ... yesterday, working with debugger with our Ubicom CPU, I started to wodner, how we can live without the debugger in REBOL :-( |
MikeL 9-Feb-2006 [3385] | I''ve been caught-22 on that many times since I like to set my ini file definitions to be readable blocks and don't follow why other data types are correctly recognized e.g. blk: [1 12-feb-2006 $30.00] but not true or false or Yes or No without a reduce. If you use blocks for the ini file settings you get caught by the reduce e.g. if want this ini: [ clean-up-target-directory? Yes start-at 10:30:01 first-day-to-run 12-dec-2006 last-day-to-run 31-dec-2006] reduce requires me to flag the words as 'words. |
Sunanda 9-Feb-2006 [3386x2] | I tend to use nested objects as records stored in files. They suffer the same problem. My solution is a single read function hat runs through reducing things. |
Petr: having only 'trace or inserted 'print for debugging is like going back to the dark ages. Better debugging would be a great step forward. | |
Henrik 9-Feb-2006 [3388x2] | debugger? does a tool like this exist for REBOL? http://www.hmkdesign.dk/rebol/reblog/reblog.html |
it's practically automated testing and probe on serious steroids :-) | |
Sunanda 9-Feb-2006 [3390] | Looks great! Any release date? |
Henrik 9-Feb-2006 [3391] | I could release it now, but it's very, very buggy and it's not shielded from the program context |
Sunanda 9-Feb-2006 [3392] | You need to decide if you have the time now to deal with the bugs people will issue. If not, wait til it is more stable. |
Henrik 9-Feb-2006 [3393] | http://www.hmkdesign.dk/rebol/tester/tester.r |
older newer | first last |