develooper Front page | perl.perl5.porters | Postings from February 2022

Re: Pre-RFC: builtin:: functions for detecting numbers vs strings

Thread Previous | Thread Next
From:
Dan Book
Date:
February 28, 2022 09:41
Subject:
Re: Pre-RFC: builtin:: functions for detecting numbers vs strings
Message ID:
CABMkAVXZ-PQkWUyZd_s_XySp+fES9LCA5sn4qJ2ekk-biUDQ3Q@mail.gmail.com
On Mon, Feb 28, 2022 at 4:27 AM Tom Molesworth <tom@deriv.com> wrote:

> On Mon, 28 Feb 2022 at 16:56, Dan Book <grinnz@gmail.com> wrote:
>
>> On Mon, Feb 28, 2022 at 3:27 AM Philippe Bruhat (BooK) <book@cpan.org>
>> wrote:
>>
>>> When parsing `{ "a" : 2, "b": "c" }`, all that Perl reads is text. How
>>> would a pure Perl JSON parser decode that `2` from the input source and
>>> keep it in memory as if it was always the number 2?
>>>
>>
>> That's not the case - JSON parsers are aware whether they are parsing a
>> number or a string because the JSON grammar is distinct, and can create the
>> scalar differently depending. Not like e.g. certain databases where you
>> can't always tell the type of the response values. Cpanel::JSON::XS::Type
>> uses this information to return a type schema which you can already use to
>> round-trip the output - these sort of changes enable more opportunities.
>>
>
> I think the point here is "how does pure perl say 'this string in $x was
> always a number'". Extracting the number 2 from a string of JSON is easy
> enough, presumably `substr` or regex were involved to get to that point -
> but how do we then set the "this was originally a number" flag to make the
> roundtrip work? Hopefully something in `builtin` or equivalent will provide
> that, rather than requiring XS calls to internal APIs!
>
>
I do believe that is the original topic of this thread...

-Dan

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About