Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: bart 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: References: 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: 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