World: r3wp
[RAMBO] The REBOL bug and enhancement database
older newer | first last |
Gregg 3-Nov-2006 [1952] | I often end up using REDUCE when dealing with datatypes that way. |
Ladislav 3-Nov-2006 [1953] | yes, but here the issue is, that FIND does not allow us to implement SWITCH reliably |
Anton 3-Nov-2006 [1954] | Ladislav, yes, these inconsistencies hold back rebol's reflection somewhat. Maybe it's excusable for ports, though, because they are kind of "custom series datatypes"... have to think carefully about that. |
Ladislav 4-Nov-2006 [1955] | excusable - the trouble is, that EQUAL? is incompatible even with itself this way, not speaking about FIND or SORT. It is too hard to implement custom FIND or SORT using "unreliable comparisons". |
Anton 4-Nov-2006 [1956x2] | Yes, I agree. I suppose EQUAL? is COPYing the port, what do you think ? Maybe it's just a minor implementation flaw. Can you see what it might be ? |
By the way, I found handling all the different datatypes consistently very difficult each time that I've launched into doing that. It would help development of all sorts of reflective tools if rebol is completely consistent and reliable there. Search tools / debugging tools / test kits (all that stuff you're probably doing right now.) This is one of those core issues which affects so many other higher level tasks, it should be ranked High or Critical. | |
Ladislav 4-Nov-2006 [1958] | my guess is, that it may be "by design", but I don't like it this way |
Anton 5-Nov-2006 [1959] | I think it may only be a side-effect of an incomplete implementation. |
Ladislav 8-Nov-2006 [1960] | user poll: what do you think about RAMBO #3518? |
Maxim 8-Nov-2006 [1961] | I do admit that he has a point wrt how the help states things. if there is a stated difference between '= and '== then maybe the '= should be expanded (and explicitely documented) for obviously equal values... like char and one letter string, $ and equivalent decimal, etc. |
Ladislav 8-Nov-2006 [1962] | char and one-letter string is not "obvious" for me, but a more "obvious" thing may be a comparison of [a] versus (a) or "a" versus %a etc. |
Maxim 8-Nov-2006 [1963x4] | isn't a character and "one letter" the same thing semantically? |
but in general I am in favor of expanding the equality, as long as it does not have side effects like breaking: if, any, all | |
I know many people would like to expand these to include empty strings and 0, just like python does... but in such a case, many usefull uses of any/all will loose their value. | |
I have considerably reduced useage of if and either since I have truely grasped Carl's elaborate and repeated use of any/all | |
Gregg 8-Nov-2006 [1967] | You have to draw the line somewhere. I think we'd have to discuss it on a case-by-case basis, because you can't always substitute one value for another, e.g. strings, files, and urls. So, even though it seems like two any-string! values could be compared safely, that might not work in our favor in real life. We could create a matrix and examples for duscussion; I'd be hesitant to change it without deeper thought. |
Maxim 8-Nov-2006 [1968] | yes obviously, and we could also add a new "loose" equality ~= or whatever... but in any case... all matching type-pairs should be explicitely explained and documented. |
Gregg 8-Nov-2006 [1969] | Agreed. |
Maxim 8-Nov-2006 [1970x3] | and we should decide first and foremost if its the intented value of the datatype which is consistent or the actual lexical form which is the consistent measure. |
in some types this will have a lot of meaning/differentiation ... take the date for example... do we equate the number of seconds, or the lexical textual form... or both, depending on other type pair... | |
I think this would be a very nice session/panel for devcon 2007 with Carl and Gurus as panel members and any one able to assist and give insight. | |
Anton 8-Nov-2006 [1973x7] | Ladislav, yes, equality is an area lacking clear definition in rebol. It doesn't seem to slow day-to-day programming down much, because most of the day-to-day requirements were implemented first, but when it comes to reflective code it makes everything hazy. |
WRT the rambo #3518, I think these just expose "not yet implemented" equalities. | |
In practice, a programmer would notice the failed equality, then convert to a datatype which supports the equality operation. | |
eg: >> (as-string http://www.rebol.com) = "http://www.rebol.com" == true | |
Bug: The size of the H1 is different in these two examples: | |
view layout/offset [h1 "query:"] 770x50 view layout/offset [h1 "query:"] 760x50 | |
Anyone confirm ? I think it is maybe something to do with H1 and size-text. | |
Maxim 9-Nov-2006 [1980] | hum I don't seem to see any different.. but how would offseting the window change the content? |
Anton 9-Nov-2006 [1981x2] | Do you see "query:" on one line in both cases ? |
Ah.. it's a bug in H1 init. | |
Maxim 9-Nov-2006 [1983] | the bug I have is that its vertical... in both examples... |
Anton 9-Nov-2006 [1984x2] | Compare these four examples: |
view layout [h1 "Hello!"] view layout/offset [h1 "Hello!"] 770x50 view layout/offset [h1 "Hello!"] 760x50 view layout/offset [h1 "Hello!"] 1076x50 | |
Maxim 9-Nov-2006 [1986] | yep, using the layout offset is screwy ! |
Anton 9-Nov-2006 [1987x3] | print mold svv/vid-styles/H1/init |
[ if :action [feel: svvf/hot saved-area: true] if all [not flag-face? self as-is string? text] [trim/lines text] if none? text [text: copy ""] change font/colors font/color if none? size [size: -1x-1] xy: size if any [size/x < 0 size/y < 0] [ state: max 1x1 pane-size * 9 / 10 - offset if size/x < 0 [size/x: state/x] if size/y < 0 [size/y: state/y] size: (size-text self) + (edge-size? self) + (to-pair all [para (to-pair para/margin) + to-pair para/origin]) ] if xy/x > 0 [size/x: xy/x] if xy/y > 0 [size/y: xy/y] ] | |
There you can see state is calculated from PANE-SIZE. There must be the problem I think. | |
Maxim 9-Nov-2006 [1990] | its possible pane-size is 0x0 which would make the text too small to fit horizontally... just thinking out loud here... |
Anton 9-Nov-2006 [1991] | I'll have to continue this later - time for some exercise... |
Maxim 9-Nov-2006 [1992] | its seems to be the same for all text label styles.. like text vtext, etc... I guess they are all just styles from the same core face. |
Anton 9-Nov-2006 [1993x5] | You can see the inheritance chain like this: >> svv/vid-styles/H1/style == BODY >> svv/vid-styles/BODY/style == TEXT >> svv/vid-styles/TEXT/style == VTEXT >> svv/vid-styles/VTEXT/style == BASE-TEXT >> svv/vid-styles/BASE-TEXT/style == FACE >> svv/vid-styles/FACE/style == none Hence FACE -> BASE-TEXT -> VTEXT -> TEXT -> BODY -> H1 |
Looking in LAYOUT we see this piece of code: new-face/size: pane-size: any [ all [size pane-size] new-face/size system/view/screen-face/size - (2 * new-face/offset) ] | |
There we can see that pane-size shrinks to 0x0 as new-face/offset approaches the middle of the screen. It can even go negative. | |
Anyone know what the purpose of that calculation is ? | |
It has been around since at least View 1.2.1 | |
Maxim 9-Nov-2006 [1998] | I think its just flawed logic. |
Anton 9-Nov-2006 [1999x2] | I'll search each style's molded init that mentions "pane-size". |
Obviously, but it was written for a reason. What was that reason. | |
Maxim 9-Nov-2006 [2001] | my guess is that it was supposed to increas a paren't size based on children offset and size... |
older newer | first last |