World: r3wp
[RAMBO] The REBOL bug and enhancement database
older newer | first last |
Anton 18-Mar-2005 [301x2] | Isn't that kind of inconsistant ? You have a choice of 0 or 2+. How do you get just 1 leading space ? Furthermore: |
prin ["" "hello" ""] print "." ;hello . ; <---- 1 traling space form ["" "hello" ""] ;== "hello " ; <--- 1 trailing space | |
Izkata 18-Mar-2005 [303] | print rejoin [" " "whatever" " "] ; ;) |
Anton 18-Mar-2005 [304x2] | The inconsistency is also between empty strings which are in first position or a later position in the block. |
Yes, Izkata, I am well aware of that workaround. | |
Izkata 18-Mar-2005 [306] | No real argument from me, though, since I don't know and have never used 'form or simply printed blocks |
Anton 18-Mar-2005 [307x2] | However, I keep bumping into this problem and so it wastes my time continually. I also imagine it's a small confusion for beginners. |
So, I would like: print ["" "hello"] ; hello ; <---- 1 leading space form ["" "hello"] ;== " hello" ; <--- 1 leading space form ["" "hello" ""] ;== " hello " ; <--- 1 leading and 1 trailing space And similar results for PRINT. Anyone have any objections ? | |
Pekr 18-Mar-2005 [309] | Anton - how can you produce space without actually providing a space? ;-) "" is empty string. Even 'empty? tells you so ... it can't add space by some magis, just only because it is used in a block or form ... |
Anton 18-Mar-2005 [310x3] | FORM puts a space between all items in the block when it is joining them together, even items which are empty strings - *except* if it is the first item. |
You should read my examples more carefully. | |
Well now, that is not always true either ! form [{} {} {} {} {}] ; a whole bunch of empty strings ;== "" ; <--- empty string form [{} {a} {} {} {}] ; one character added ;== "a " ; <--- three trailing spaces | |
Izkata 18-Mar-2005 [313] | Perhaps form is just waiting until there's a value before it adds stuff? >> form [{} {} {} {Hi} {} {}] == "Hi " ;2 spaces, and only after string w/value found >> form [{} {} {} {Hi} {} {} {Hi} {}] == "Hi Hi " ;2 spaces and 1 space.. But yes, there probably ought to be a space in fron like you said before. If the behavoir I think is happening, then 'trim should just be used, not letting it be automatic |
Anton 18-Mar-2005 [314] | I am guessing the logic behind FORM is that it changes mode at the first non-empty string. |
Izkata 18-Mar-2005 [315] | Basically what I tried to say but couldn't type correctly ;) |
Pekr 18-Mar-2005 [316] | Anton - it does not matter imo. It is design of 'form or 'print, that those add spaces between chars, but once you put empty string into block, it is value, and the value is empty string, so it is imo incorrect to want it represent space |
Anton 18-Mar-2005 [317x2] | Read my comment above. |
Pekr, look at this example. There are five items in the block (some are empty strings). So I expect five items to be separated by four spaces. form ["" 1 "" 2 ""] ;== "1 2 " ; <<<< but I count only three spaces in the result | |
Anton 20-Mar-2005 [319x2] | Gabriele, I see #3455 and #3576 are basically identical. I think #3576 is more accurate, so older #3455 should be removed. |
Ok, submitted a report for the struct! comparison bugs above. | |
Anton 21-Mar-2005 [321x5] | Undecided about FORM.... |
Here's another bug: BUG: using DETECT (instead of ENGAGE) is unreliable with stopping time events, as in this example: | |
lay: layout [btn "start" [lay/rate: 1 show lay] btn "stop" [lay/rate: none show lay]] lay/feel: make lay/feel [detect: func [face event][if event/type = 'time [print ['tick now/precise lay/rate]] event]] view lay p: open http://www.rebol.com close p view lay | |
If you paste the above code straight into your console, the problem is present in the first VIEW as well as the second VIEW. If you type/paste each line individually into your console, the problem is only present after the network access. Once a console has the problem, it remains "contaminated", and you will need to open another console to continue testing. | |
Testing on REBOL/View 1.2.57.3.1e | |
Gabriele 21-Mar-2005 [326x5] | Anton: I have no idea if the FORM behavior is intentional or a bug. about detect: maybe the difference is due to copy&paste? |
it's hard to believe something that hasn't been evaluated yet (i.e. the open) affects the view... | |
indeed, if you preceed the lines after the first view by semicolons (;) you get the same problem | |
to me it looks like that the problem happens if there are pending characters in the console yet to be read. | |
try to paste that into a string and then try to DO the string. the problem is only there after the OPEN. so, OPEN does trigger it anyway. | |
Romano 21-Mar-2005 [331x4] | I have submitted an issue entry in RAMBO about make integer!. I should like to know what people think about what must be the "RIGHT" conversion result. |
My first question is "make integer! should return a decimal! in some cases"? | |
Anton, i have the same rate problem in a program of mine! I was not able to reduce the problem to a simple example. | |
There is a workaround: call unview, then rate restarts to stop :-) | |
Gabriele 22-Mar-2005 [335] | make integer!: asked carl directly. |
Anton 22-Mar-2005 [336x6] | Gabriele, about detect: Yes, perhaps the console input is similar enough to a network access (a port access ?). And, amazingly, doing from a string after "contamination" does *not* show the problem. |
And yet more amazingly, doing from a string in a fresh rebol console *does* show the problem at the first VIEW. | |
Romano, that's not really a workaround if the requirement is to keep the window open. :) | |
Romano, "make integer!", I think if it can't fit all the integer digits from the input string into a valid integer, then it should throw an invalid argument error. Any digits after a decimal point should be discarded. That would mean MAKE at least understands arbitrary length numbers in a string, even if it can't fit them into a rebol datatype. | |
(or throw a math overflow error). | |
and so "make integer!" should never return a decimal!, in my opinion. | |
Ladislav 6-Apr-2005 [342] | hi all, I found a nasty surprise in alpha async, at least for me it is a nasty surprise: http://www.rebol.net/cgi-bin/rambo.r?sort=4&limit=1&cmd=Search&id=&pattern=Read+handler The behaviour I observed is observable in OpenBSD 3.6 too, Gabriele, could you add this note to it? |
Gabriele 6-Apr-2005 [343] | Tom: I don't think .a libraries can be loaded dynamically, but i might be wrong. |
JaimeVargas 6-Apr-2005 [344] | Thats correct .a libraries are used for static compilation. |
Ladislav 6-Apr-2005 [345] | Gabriele: this is the response I get: Chunk no 1 before insert read handler execution interrupted! response Chunk no 2 before insert after insert after insert |
Gabriele 6-Apr-2005 [346] | this makes me think it's recursion, rather than interruption. a bit strange maybe, though. |
Ladislav 6-Apr-2005 [347x2] | aha, so it looks that the handler eventually "returns", fine |
then it is a bit better | |
Tomc 6-Apr-2005 [349] | Gabriele: Carl thought it was a possibility, and asked me to add the request ro rambo so it did not get lost. |
Gabriele 6-Apr-2005 [350] | ok. maybe it is possible on some OSes. |
older newer | first last |