Deutsch   English   Français   Italiano  
<v3mqtc$ct28$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: bart <bc@freeuk.com>
Newsgroups: comp.lang.c
Subject: Re: Interval Comparisons
Date: Tue, 4 Jun 2024 11:39:41 +0100
Organization: A noiseless patient Spider
Lines: 43
Message-ID: <v3mqtc$ct28$1@dont-email.me>
References: <v3merq$b1uj$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Tue, 04 Jun 2024 12:39:41 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="027492d54fa7a72a30fd705d730c9473";
	logging-data="422984"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19or4jqiTw0w5gm5HzTWrPp"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:QRUscSsowTFOgi3JqDk/E3j3DoQ=
Content-Language: en-GB
In-Reply-To: <v3merq$b1uj$1@dont-email.me>
Bytes: 2425

On 04/06/2024 08:14, Lawrence D'Oliveiro wrote:
> Would it break backward compatibility for C to add a feature like this
> from Python? Namely, the ability to check if a value lies in an interval:
> 
>      def valid_char(c) :
>          "is integer c the code for a valid Unicode character." \
>          " This excludes surrogates."
>          return \
>              (
>                  0 <= c <= 0x10FFFF
>              and
>                  not (0xD800 <= c < 0xE000)
>              )
>      #end valid_char

Yes it would break compatibility. The first '0 <= c' yields a 0 or 1 value.

But Python can also do it as `c in range(0, 0x10FFFF+1)`.

That could conceivably be added; the main obstacle would be introducing 
that new `in` keyword, while a better solution than `range` would be likely.

The chances of it actually happening are infinitesimal, and I'd be long 
dead before it become widely available.

This is the upside of devising your own language; I daily use these forms:

      a <= b <= c
      b in a .. c

in my systems language. The only stipulation with the first form is that 
if there are any angle brackets, then they all point the same way, 
otherwise the result is too confusing.

The language also needs to ensure middle terms of evaluated only once.

If I ever want to have the C meaning of 'a <= b <= c' (say I'm porting 
some code), then it can be written like this to break it up:

     (a <= b) <= c