And the underlying processor has no such thing as a "type" -- it is simply a 
high level abstraction designed to keep the ill equipped from cutting their 
hands off by grabbing the wrong end of the knife...


---
The fact that there's a Highway to Hell but only a Stairway to Heaven says a 
lot about anticipated traffic volume.


>-----Original Message-----
>From: sqlite-users [mailto:sqlite-users-
>boun...@mailinglists.sqlite.org] On Behalf Of Peter Da Silva
>Sent: Sunday, 8 October, 2017 08:40
>To: SQLite mailing list
>Subject: Re: [sqlite] XOR operator
>
>Generally, when you talk about whether a language is strongly or
>weakly typed, you're talking about the storage, not the content.
>
>Pretty much every "weakly typed" language out there (there are a few
>exceptions, like Tcl) does have fully typed values. In many cases you
>can even interrogate the value with a "type of" operator. They just
>have storage locations (variables, array elements, hash targets) that
>can hold any type.
>
>SQLite is, in common terminology, weakly typed.
>
>> On 2017-10-08, at 08:56, Roman Fleysher
><roman.fleys...@einstein.yu.edu> wrote:
>>
>> The point is that terminology is chosen for a reason and can not be
>dismissed. "Flexibly typed" means it is typed. It means SQLite knows
>how many bytes: without knowing it would not be able to establish
>equality "IS".  Flexibly means columns can contain values of mixed
>types,  but each value still has a type. And this is a very very big
>advantage of SQLite.
>>
>> Perhaps longer term is "flexibly strongly typed". Perhaps because
>"typed" implies "strongly" (what is a weak type?), strongly is
>redundant.
>>
>> Roman
>>
>>
>>
>>
>> -------- Original message --------
>> From: R Smith <rsm...@rsweb.co.za>
>> Date: 10/8/17 9:38 AM (GMT-05:00)
>> To: sqlite-users@mailinglists.sqlite.org
>> Subject: Re: [sqlite] XOR operator
>>
>> On 2017/10/06 6:03 PM, Richard Hipp wrote:
>>> On 10/6/17, R Smith <rsm...@rsweb.co.za> wrote:
>>>> I'd also like to see a Unary NOT operator, such that you can say:
>a = !b
>>> In SQL and SQLite that would be:  a = NOT b
>>
>> Apologies, I thought it obvious from the context that I meant a
>binary
>> operation, not a Boolean operation NOT.
>>
>> i.e. 0xA (base16) = 1010 (base2) so that NOT 0xA = 0101 = 0x5... so
>if a
>> = 0xA then !a = 0x5, but that only works IF we are restricted to
>"a"
>> being 1 byte in size, which brings us to the following point:
>>
>>>
>>>> But, I guess that's only feasible in a strongly typed language.
>>> (1) I object to the characterization of SQLite not being "strongly
>>> typed".  SQLite is "flexibly typed" in the sense that it provides
>the
>>> application with a lot of flexibility with regard to what
>datatypes
>>> are allowed to be stored in a particular column or participate in
>an
>>> operation.  Other SQL database engines are "rigidly typed".  Those
>>> other SQL implementations are much more judgmental about what you
>can
>>> and cannot do with your data.
>>>
>>> (2) Why is rigid typing required in order to implement boolean
>negation?
>>
>> Answering (2): A strongly typed language that defines
>> INT/UINT/WORD/INT64/etc. as specifically a 32-bit or 64-bit
>> signed/unsigned representation, or "Byte" as a 8-bit unsigned
>> representation will be sensible to say a = not b; where a and b are
>both
>> typed as BYTE values. but if you don't know how many bits are
>"meant" to
>> be in "a", how to determine how many bits must be negated /
>"notted" /
>> changed to produce the result of "NOT b" in the way described up
>there.
>>
>> If for example a = 0xA then !a might be 0x5 for a nibble, but it
>will be
>> 0xF5 for a byte, 0xFFF5 for a WORD, 0xFFFFFF5 for a 32bit INT, etc.
>etc.
>>
>> It's often used in masking bit flag sequences. a = (a & !0x3) would
>see
>> "a" being switched so that it's LSB's 0 and 1 gets switched off
>while
>> leaving the others in tact. Yes, I could have just said a = (a &
>(0xFF -
>> 0x03)) or even work out what that result is and go a = (a & 0xFC),
>but
>> if the bits that get switched off lives in a variable (b), then a =
>(a &
>> !b) is just so much more sensible / elegant. I'm even ok with
>syntax
>> like a = (a & (not b))... but that's not how SQLite works, or can
>work,
>> unless it becomes strongly typed.
>>
>>
>> As to (1)... Cool, call it flexibly typed then, I'm ambivalent to
>the
>> terminology, my point is about the variable sizes not being set in
>stone.
>>
>>
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@mailinglists.sqlite.org
>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-
>users
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@mailinglists.sqlite.org
>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-
>users
>
>_______________________________________________
>sqlite-users mailing list
>sqlite-users@mailinglists.sqlite.org
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to