World: r3wp
[!REBOL3]
older newer | first last |
BrianH 20-Apr-2011 [8180] | FOUND? and TRUE? take time to execute, and often make it necessary to put code in parentheses, which also have overhead. Silly interpreted language stuff, but it's significant. |
Ladislav 20-Apr-2011 [8181x2] | Actually, the case of TO-LOGIC, FOUND? and TRUE? shows what is bad about it. Does common user know which should be used? |
They are not interchangeable! | |
onetom 20-Apr-2011 [8183] | (i don't really know.. never used true?.. looks a bit silly. i got used to the conditional meaning of stuff, so i hardly use AND/OR but ANY/ALL instead :) |
BrianH 20-Apr-2011 [8184x2] | I often use the prefix forms of AND, OR and XOR because of the parentheses issue. Operations used often, but not always the operators. |
AND~, OR~ and XOR~ are the power-reboller's friend :) | |
Ladislav 20-Apr-2011 [8186x2] | A little comparison of TO-LOGIC, TRUE? and FOUND?: >> to-logic 0 == false >> true? 0 == true >> found? 0 == true >> to-logic false == false >> true? false == false >> found? false == true |
So, this state is not what could make an uninitiated user happy. | |
onetom 20-Apr-2011 [8188x2] | onetom ~/rebol $ grep -riw AND `find . -iname \*.r` | wc -l i ran this for OR too and 95% of the occurances are in comments or strings and where it's found in the code, it's usually used as a bit-wise operator |
(i have rebgui, cheyenne, vid-ext, rebdb, host-kit, musiclessonz, power-mezz, glass, r3 gui in this folder. ~500 files) | |
Ladislav 20-Apr-2011 [8190] | aha, fine, that is perfectly possible, but, it may be caused e.g. by the fact, that you actually are forced to use ANY and ALL for processing conditional values, since AND and OR are not working satisfactorily for that purpose |
onetom 20-Apr-2011 [8191] | Ladislav: yes, probably that is the case; which for example i am completely happy with |
Oldes 21-Apr-2011 [8192] | I prefere ANY and ALL for this reason: >> if (print 1 true) AND (print 2 false) AND (print 3 true) [print 4] 1 2 3 == none >> if all [(print 1 true) (print 2 false) (print 3 true)][print 4] 1 2 == none |
Geomol 21-Apr-2011 [8193x2] | It confused me a bit, what exactly was meant by "conditional AND and OR". So it's not just, that they operate on logic values, but that the second operand is only evaluated, if needed. |
I presume, it'll be hard to implement conditional AND and OR in REBOL, because it's not just a type check as with other operators. | |
Ladislav 21-Apr-2011 [8195x2] | it's not just, that they operate on logic values, but that the second operand is only evaluated, if needed - actually, you missed the explanation. "Conditional" was coined by Brian and was meant to represent functions able to yield values usable as CONDITION arguments of IF etc. as well as being able to combine conditional expressions into more complex conditional expressions (which is not true for AND and OR as demonstrated) |
no other property was mentioned | |
Geomol 21-Apr-2011 [8197] | Aha, then we're back to my original understanding, and then I don't understand, why you say REBOL does not have conditional AND and OR REBOL does to some extend: >> true and true == true Isn't that a conditional AND from your (or Brian's definition)? |
Maxim 21-Apr-2011 [8198x2] | no its a logical one. it only compares logic! datatypes correctly. |
(within a conditiional minset) | |
onetom 21-Apr-2011 [8200x2] | true and 1 none or none |
each operand could be a parameter for IF/EITHER/UNLESS and has it's very well defined logic! value | |
Geomol 21-Apr-2011 [8202] | Yes, I understand, but wouldn't it possible confuse Carl to say "REBOL does not have conditional AND and OR". It does to some extend, right? |
onetom 21-Apr-2011 [8203] | thats why i was asking for an explicite definition above |
Geomol 21-Apr-2011 [8204x3] | ok :) |
I guess, there are several problems in this. Some conditions are dealt with by AND and OR, the logic! ones. But not all conditions, IF/EITHER/UNLESS can handle is supported by AND and OR. And second, AND evaluate all operands, even if some are false. That is the definition of "conditional AND and OR" I found from a search: http://download.oracle.com/javase/tutorial/java/nutsandbolts/op2.html See "The Conditional Operators" a bit down and the mention of "short-circuiting" behavior. | |
Not having the "short-circuiting" behaviour is a direct bug, as I see it. Because this code with create an error: if (port <> none) and (data: read port) [ ... ] But I have a gut feeling, that logic AND isn't very REBOLish, and that's why we more often use ALL and ANY. It's just a feeling, so feel free to disagree. | |
onetom 21-Apr-2011 [8207] | yeah, i had the same feeling that it can be interpreted as the description of a non-complete boolean evaluation (that was the name of the flag in turbo pascal ;) |
Geomol 21-Apr-2011 [8208] | with -> will |
onetom 21-Apr-2011 [8209x5] | the original problem was not AND/OR but NOT |
so IF NOT is not the same as UNLESS | |
(if im correct) | |
or actually it is but then AND/OR why not | |
capable of handling the same parameters as NOT? | |
Maxim 21-Apr-2011 [8214x3] | the basic problem is that NOT isn't symmetric with AND/OR/XOR . currenty, AND/OR/XOR are bitwise ops. they are not language control flow ops. |
it raises the question, well what are these ops... and the answer is that there are none. its a strange hole in the language spec which has passed under the radar for a really long time. | |
its very possible that REBOLers think in a different way and using ANY/ALL is more natural, hence the unatention this has had. | |
Geomol 21-Apr-2011 [8217] | I don't agree, they're only used bitwise, as this example illustrate: >> a: 1 b: 2 == 2 >> if (a = 1) and (b = 2) [print "it's true"] it's true |
Ladislav 21-Apr-2011 [8218x2] | Geomol: I don't understand, why you say REBOL does not have conditional AND and OR Excerpt form the above definition of "conditional operator": "...being able to combine conditional expressions into more complex conditional expressions..." The demonstration that AND and OR are not able to combine conditional expressions into more complex conditional expressions is easy |
(and has been done already) | |
Geomol 21-Apr-2011 [8220x2] | I just got confused by the wording. :-) |
Is it correct to say, that AND and OR can be used as bitwise operators and to check on logic! values. And that e.g. IF can do more than this and then isn't really compatible with AND and OR? | |
Maxim 21-Apr-2011 [8222x3] | geomol, logic types are single precision states. on or off. any operation between logic values are implicitly bitwise. |
yep. | |
you just got the differentiation between conditional and logical comparisons. | |
Geomol 21-Apr-2011 [8225x2] | Ah yes, you can say that about bitwise. Makes sense. |
I'm just used to not think in bits when dealing with logics. | |
Ladislav 21-Apr-2011 [8227] | I am trying to use a slightly different formulation: IF can check not just logical expressions (yielding LOGIC! values), but conditional expressions (yielding any values). We do not have operators combining conditional expressions into more complex conditional expressions (ANY and ALL are dialects, not operators, although they can be used successfully). |
Geomol 21-Apr-2011 [8228] | Sounds good to me. |
Maxim 21-Apr-2011 [8229] | geomol, I come from electronics background wrt logic... so I can't make the difference ;-) I studied logic as digital circuits vs. analog circuits. |
older newer | first last |