World: r3wp
[!REBOL3]
older newer | first last |
Maxim 19-Apr-2011 [8030] | yes exactly. I agree completely now, that I understand the point fully. |
Ladislav 19-Apr-2011 [8031] | I am glad I asked here before writing something in CC, since now I know better how to make my arguments more convincing. |
Maxim 19-Apr-2011 [8032] | I think my post above gives a good clear starting point for the CC ticket. |
Ladislav 19-Apr-2011 [8033x2] | To complete the informations, I should probably perform a user poll in here. So, here goes: *For me, one of the main goal of logic operators like NOT, AND, OR, XOR is to yield a value, that is used mainly as the CONDITION argument of the IF, UNLESS, EITHER, etc. control functions. *Taking NOT (which is a unary logic operator) as an example, we see, that it is compatible with the above mentioned main purpose. The goal is achieved by "delegating" other functionalities NOT does not perform to COMPLEMENT. It is not possible for NOT to be both compatible with IF and perform the operations COMPLEMENT does. *Taking OR (which is a binary logic operator) as an example, we see, that it is incompatible with the above mentioned main purpose, not being able to correctly handle some logic combinations, that would be compatible with IF. As an example, see the expression 0 or true , which cannot be used to yield an argument for IF, although both its arguments *are* compatible with IF. Interestingly, there is not a shortage of functions that are meant to perform analogical non-logic operations. I would like to specifically mention the UNION function, which seems to be related to OR similarly as COMPLEMENT is related to NOT. *The question I am asking you is: - Do you prefer the "logical" solution used in the case of NOT, and apply it to other operators like AND and OR as well, or - Do you prefer the "non-logical" solution used in case of AND and OR and apply it to the NOT operator as well, or - Do you prefer to keep the current state of affairs for R3? |
I am for the first alternative, letting AND, OR and XOR work as "logic" operators only, "delegating" other (similar) functionalities to functions like UNION, INTERSECT, etc. | |
Maxim 19-Apr-2011 [8035] | + 1 |
Gregg 19-Apr-2011 [8036] | I misunderstood as well. Thanks for clarifying. +1 for having AND, OR, and XOR work as logic ops only. |
Geomol 19-Apr-2011 [8037] | I can see, how it became this way trying to avoid &, | and ^ for AND, OR and XOR. |
BrianH 19-Apr-2011 [8038] | The main reason the logic operators don't support none is to cut down on none propagation. We want those errors triggered, not unintentionally ignored. |
Ladislav 19-Apr-2011 [8039] | So, which variant do you prefer? |
BrianH 19-Apr-2011 [8040] | I don't mind AND, OR and XOR being both logical and bitwise ops. If there is a problem with the current behavior, I don't remember being tripped up by it. |
Ladislav 19-Apr-2011 [8041] | There surely is a problem, why would NOT be implemented differently otherwise? |
Geomol 19-Apr-2011 [8042] | Atm. I prefer the same as you too (the first one), but I would suggest some names for the bitwise and, or and xor in the reporting of this. I feel, the language would benefit from being a bit more strict. |
Maxim 19-Apr-2011 [8043] | I'm tripped by it EVERYTIME I try to use them... none is a valid value for all logic control funcs. so in over 10 years of reboling I've never been able to use them to control logic flow... I've used them only as bitwise ops... |
Ladislav 19-Apr-2011 [8044] | Yes, Max, I guess, that you are not an exception |
BrianH 19-Apr-2011 [8045] | NOT is an action that generates a logic! value. I like the current Lisp-like treatment, having none and false being falsey values and everything else being truthy values, with explicit conversions already available if we need them. Whatever we do, please don't have zero values be false without explicit conversion. |
Geomol 19-Apr-2011 [8046] | I think, Carl deside these thing by trying to figure out, what makes most sense for a new one to programming. Or trying to make a more humane less computer technical language. |
Maxim 19-Apr-2011 [8047] | (funny thing is that I keep forgetting this detail , and every few months I loose an hour trying to debug code until I remember ... hehe) |
Gregg 19-Apr-2011 [8048x2] | I also only use them as bitwise ops, but I don't remember tripping over it very often. I just always use ANY and ALL. NOT was probably designed to be friendly, rather than pure, and I do use it a lot. |
John, yes, and also supporting things people expect when coming from other languages. | |
BrianH 19-Apr-2011 [8050x2] | I come from languages that either have an explicit boolean type (Pascal-like) or act like REBOL (Lisp-like and Smalltalk-like). |
C-like languages always trip me up - a mass of design flaws, the whole lot of them. | |
Ladislav 19-Apr-2011 [8052] | Well, but, in this case, C works better by discerning | and || |
BrianH 19-Apr-2011 [8053] | The thing is, C needs to because it doesn't have proper boolean types, and REBOL doesn't need to because it has the logic! type. |
Geomol 19-Apr-2011 [8054] | Maybe AND, OR and XOR should only be bitwise, and then introduce && and || (and maybe logical xor ^^, but just maybe). |
Ladislav 19-Apr-2011 [8055] | REBOL needs to as well, since it (IF, UNLESS, EITHER, etc.) implements anything as logic, in fact. |
BrianH 19-Apr-2011 [8056] | We can do explicit conversions, and our code becomes easier to understand as a result. |
Maxim 19-Apr-2011 [8057] | but brian, we cannot use AND/OR for logic comparisons... #[none] breaks them and none *IS* a valid conditional value. |
Gregg 19-Apr-2011 [8058] | && and || -- Please NOOOOOOOOO! |
Geomol 19-Apr-2011 [8059] | :-D |
Gregg 19-Apr-2011 [8060] | :-) |
Geomol 19-Apr-2011 [8061] | Yeah, they're ugly! |
Maxim 19-Apr-2011 [8062x2] | well, then we should remove / * - + ^ too. |
:-) | |
Gregg 19-Apr-2011 [8064] | Just vote on Ladislav's proposal, and we'll see where the results lead. |
Geomol 19-Apr-2011 [8065x2] | But if almost nobody use OR today as logical or, but do as bitwise or, then we shouldn't change that. |
LOR, LAND and LXOR ;p | |
Gregg 19-Apr-2011 [8067] | If our goal is not to break things, yes. If our goal is to clean things up for the long term, now is the time. |
BrianH 19-Apr-2011 [8068] | None is a falsey value (NOT the value returns true), but not a false value. If we want to have AND, OR and XOR accept none as a false value, this will lead to errors being ignored unintentionally. We can do it, but there is a drawback. Still, I prefer that to making a separate set of operators for bitwise operations. |
Gregg 19-Apr-2011 [8069] | Some languages do that, but usually the other way around (bit-and, bit-or, ...). |
Geomol 19-Apr-2011 [8070] | How would you split OR into two, Gregg? |
Maxim 19-Apr-2011 [8071] | I find that R3 is the right time to address these issues in the language. R3 is already incompatible. I don't see a reason not to clean this up. |
Gregg 19-Apr-2011 [8072x2] | John: O and R. ;-) |
It's funny, though, talking about logic values and then having "falsey" and "truthy" values. | |
Geomol 19-Apr-2011 [8074] | So it'll go like: Hey Carl, we've found this huge problem ... and we have no solution. Poor Carl. |
BrianH 19-Apr-2011 [8075] | I always use AND, OR and XOR in both their logical and bitwise sense. There is no confusion because I have to use logic! values for the logical behavior. This means that explicit conversions resolve the difference visibly. |
Maxim 19-Apr-2011 [8076] | but brian, the current AND/OR/XOR *cannot* be used for logical ops. the fact that none isnt' supported is the proof that its not working. bitwise ops already exist in principle with the "set" functions 'complement, 'union etc. |
Gregg 19-Apr-2011 [8077] | Bitwise ops are computerish, logical ops are how humans think. I don't mind making the bitwise alternatives a little more verbose, or even adding a dialected BITWISE function. |
BrianH 19-Apr-2011 [8078] | I use the term "conditional expressions" for the truthy/falsey expressions, and "logical expressions" for the logic!-only ones, not interchangeably. |
Gregg 19-Apr-2011 [8079] | But, as Max brought up again, teh set ops are already there. |
older newer | first last |