[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: The 4 negations of Lua
- From: Ross Berteig <Ross@...>
- Date: Fri, 16 Sep 2016 14:25:58 -0700
On 9/16/2016 12:58 PM, Soni L. wrote:
On 17/09/16 02:18 AM, Martin wrote:
On 16-09-05 12:29 PM, Soni L. wrote:
Lua has 4 forms of negation:
Yet only 2 of them can be overloaded.
It's cool that Lua has 4 forms of negation tho.
As I understand "-" is for general numbers, "~" for integer numbers,
"not" for general logic and "~=" for equivalence logic. From them only
"~=" may be dropped and reformulated as "not ==".
What, "~true" isn't a good replacement for "not true"? A boolean has a
single bit so bitwise negation on booleans makes sense...
In C, bitwise and boolean not are separate operators. Any non-zero
integral value is equivalent to TRUE, but the boolean operators are
specified to produce the single value 1 for any true expression. So the
expressions (!TRUE) and (~TRUE) are *very* different. In particular,
(~TRUE) will produce a value that is also true, which may not be what
I see a strong but not always stated goal of Lua (and C too, before too
many standards committees got their teeth in it) as to have an
expressive language that is small enough, but not too small.
IMHO, there is no good argument for using the same operator for boolean
and bitwise not in a language you intend people to actually use,
understand, and debug.
The bad argument is to claim the language is too complicated, and should
have fewer operators. The reducto ad absurdum is that a Turing machine
is Turing-complete, but you wouldn't want to actually use one for
Ross Berteig Ross@CheshireEng.com
Cheshire Engineering Corp. http://www.CheshireEng.com/
+1 626 303 1602