World: r3wp
[Core] Discuss core issues
older newer | first last |
onetom 20-Apr-2011 [1259] | hmm.. that's only for R3. this error is for R2 only. |
BrianH 20-Apr-2011 [1260] | Onetom, that error has been reported already and fixed in R2/Forward, but it hasn't made it into R2 yet. Here is the revised MAP-EACH: map-each: func [ "Evaluates a block for each value(s) in a series and returns them as a block." [throw catch] 'word [word! block!] "Word or block of words to set each time (local)" data [block!] "The series to traverse" body [block!] "Block to evaluate each time" /into "Collect into a given series, rather than a new block" output [any-block! any-string!] "The series to output to" ; Not image! /local init len x ][ ; Shortcut return for empty data either empty? data [any [output make block! 0]] [ ; BIND/copy word and body word: either block? word [ if empty? word [throw make error! [script invalid-arg []]] copy/deep word ; /deep because word is rebound before errors checked ] [reduce [word]] word: use word reduce [word] body: bind/copy body first word ; Build init code init: none parse word [any [word! | x: set-word! ( unless init [init: make block! 4] ; Add [x: at data index] to init, and remove from word insert insert insert tail init first x [at data] index? x remove x ) :x | x: skip ( throw make error! reduce ['script 'expect-set [word! set-word!] type? first x] )]] len: length? word ; Can be zero now (for advanced code tricks) ; Create the output series if not specified unless into [output: make block! divide length? data max 1 len] ; Process the data (which is not empty at this point) until [ ; Note: output: insert/only output needed for list! output set word data do init unless unset? set/any 'x do body [output: insert/only output :x] tail? data: skip data len ] ; Return the output and clean up memory references also either into [output] [head output] ( set [word data body output init x] none ) ] ] |
onetom 20-Apr-2011 [1261] | BrianH: thanks, but where can i find such info normally, beside in ur brain? |
BrianH 20-Apr-2011 [1262] | R3 chat #837 is where the R2/Forward project is normally stored. I'll be putting it in github as well as soon as I can figure out how to export or replicate the change history. |
onetom 20-Apr-2011 [1263] | the change history of what? r3 file storage? |
BrianH 20-Apr-2011 [1264x3] | Revisions to R2/Forward since the initial release to DevBase. |
There is a similar bug in many of the R3 mezzanine control functions (the opposite, actually), but fortunately most of R2's mezzanine control functions were converted to native in R3, so the bug doesn't affect much. | |
The revised mezz-series.r (relative to the 2.7.8 SDK source) is in R3 chat #8008 - that's the number of the particular version, which you can see by going to #41 (R2/Mezzanines) and doing a LF command. | |
onetom 20-Apr-2011 [1267] | these numbers are like the memory locations in home computers... spectrum, c64 (i didn't have an amiga..) in DOS 8000 was the HDD bios start, i think.. |
BrianH 20-Apr-2011 [1268] | The chat interface uses numbers as a deliberate design choice because it is easier to memorize and refer to a number than it is to a path or message ID. You can even write a message number in #8008 form in another message and it can be followed like a hyperlink to the message of that number. You can also do the hyperlink trich to CureCode tickets using the bug#539 form, which will take you to http://issue.cc/r3/539 (that R3 bug I mentioned above). |
GrahamC 26-Apr-2011 [1269] | Anyone have this ? http://www.fm.tul.cz/~ladislav/rebol/peekpoke.r It's not on Ladislav's site anymore at that url |
Geomol 26-Apr-2011 [1270x3] | Is there a point in allowing refinements like this? /1a |
REBOL also allow decimal! refinements like: /1.2 but treat it like an integer refinement. Some further thoughts: Can refinements be categorized in two groups, integer refinements and word refinements? If yes, then the refinement datatype maybe should be two different datatypes? | |
Hm, maybe what I call integer refinements shouldn't be allowed at all, as I see no point in them. I can't get the desired path using integer refinements as in: >> to-path [blk /2] == blk//2 The correct way is: >> to-path [blk 2] == blk/2 So if integer refinements are useless, what's the point? | |
Rebolek 26-Apr-2011 [1273] | John, I'm not sure I understand. Aren't you confusing path with refinement? |
Geomol 26-Apr-2011 [1274x3] | No, they're different. I know. You can use refinements to build paths, else refinements are used in functions. REBOL allow what I call integer refinements, as the scanner doesn't give error. I ask why is that? |
Or, maybe we can't actually use refinements to build paths, now I think of it. :-) | |
I can cook it down to: Why would REBOL allow refinements like: /1 /1a /1.2 My guess is, it's a side effect of how the scanner handle paths with integers, like: blk/1 So shouldn't refinements have the same rules as words, like the core manual suggest? | |
Rebolek 26-Apr-2011 [1277] | Ah, now I understand. It's probably a "bug" in scanner. |
Geomol 26-Apr-2011 [1278x3] | Because those refinements are allowed, you can write: f: func [/2] [ ... ] But that kinda makes no sense. |
No kidden, people get confused: >> f: func [/2] [if 2 [print "It's 2!"]] >> f It's 2! >> f/2 It's 2! I can even write >> f/3 It's 2! | |
In R3, at least we get: >> f: func [/2] [if 2 [print "It's 2!"]] >> f It's 2! >> f/2 ** Script error: incompatible refinement: 2 But the refinement is still valid. | |
Ladislav 26-Apr-2011 [1281] | Graham, see: http://www.fm.tul.cz/~ladislav/rebol/library-utils.r |
Henrik 26-Apr-2011 [1282] | I'm having problems renaming a file on a USB stick with R2 under Windows. It reports "cannot access". R3 does not have this problem. Can anyone reproduce this? |
Geomol 26-Apr-2011 [1283x2] | I did this under OS X with R2: >> write %/Volumes/NICOM/test.txt "Testing..." (and the files was produced, then) >> rename %/Volumes/NICOM/test.txt %/Volumes/NICOM/test2.txt ** Access Error: Cannot rename test.txt So an error. |
With R3, it works here. | |
Henrik 26-Apr-2011 [1285] | ok, that is interesting. possibly file system related? |
Geomol 26-Apr-2011 [1286] | Possibly, as rename works on HD in R2. |
Henrik 26-Apr-2011 [1287] | the mezz source says that if the file is not found, then it can't be accessed. |
Cyphre 26-Apr-2011 [1288] | Henrik, I have no problem with renaming a file on USB stick...tested under WindowsXP SP3 |
Geomol 26-Apr-2011 [1289] | Henrik, I can read the file with REBOL command READ in R2. |
Henrik 26-Apr-2011 [1290x2] | perhaps it's a timing issue? |
it works, if I open the port and find the file by hand | |
Cyphre 26-Apr-2011 [1292] | >> read %/f/ == [%data %KeePass/ %TrueCrypt/ %autorun.inf %test.r] >> rename %/f/test.r %test2.r >> read %/f/ == [%data %KeePass/ %TrueCrypt/ %autorun.inf %test2.r] >> |
Henrik 26-Apr-2011 [1293] | RENAME uses OPEN, not READ. |
Geomol 26-Apr-2011 [1294x2] | Seems like, it's the CHANGE command, that rename it. |
Reading the source for RENAME, it rename the file by changing its name in the directory file. And this doesn't work for some reason with USB sticks under OS X using R2. | |
Henrik 26-Apr-2011 [1296] | it does not work for me under Windows either. seems like a port bug. |
Geomol 26-Apr-2011 [1297] | Cyphre, did you test with R2 or R3? |
Henrik 26-Apr-2011 [1298] | and yes, it is at the CHANGE on the port, that fails. |
Cyphre 26-Apr-2011 [1299] | I tested with R2...no problems here. Henrik, maybe it has something to do with the fact you are emulating the Windows under OSX? |
Henrik 26-Apr-2011 [1300x2] | the CHANGE works, if I do it by hand. Then I can rename the file. |
Cyphre, Robert reported this from a customer, who I assume is running Windows natively. | |
Cyphre 26-Apr-2011 [1302] | hmm, hard to say then. |
Henrik 26-Apr-2011 [1303x2] | testing one more timing issue... |
does not help with timing, but I can still perform CHANGE outside the rename function | |
Geomol 26-Apr-2011 [1305] | It works, if you don't give NEW as full path. |
Henrik 26-Apr-2011 [1306] | I see... testing that |
Cyphre 26-Apr-2011 [1307x2] | that's how the HELP is telling you ;) |
new -- new name (not a path) | |
older newer | first last |