From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on ip-172-31-91-241.ec2.internal X-Spam-Level: X-Spam-Status: No, score=0.0 required=3.0 tests=none autolearn=ham autolearn_force=no version=4.0.1 Path: nntp.eternal-september.org!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail From: Lawrence =?iso-8859-13?q?D=FFOliveiro?= Newsgroups: comp.lang.ada Subject: Re: In precision typing we trust Date: Tue, 9 Sep 2025 06:01:30 -0000 (UTC) Organization: A noiseless patient Spider Message-ID: <109ofrp$q3aj$1@dont-email.me> References: <107uv9g$3019a$1@dont-email.me> <336fbb5f-a279-ea8e-67fd-f62bb00d6a89@irrt.De> <107vfb9$34cpj$1@dont-email.me> <10855lq$gj8l$1@dont-email.me> <1088h1a$19635$1@dont-email.me> <1089p1i$1ig1d$1@dont-email.me> <108aq2p$1qo9o$1@dont-email.me> <108b1r3$1sj3c$1@dont-email.me> <108dh4t$2f5h3$2@dont-email.me> <108dkik$2g20p$1@dont-email.me> <108g1cg$32gqg$2@dont-email.me> <108h6b0$3a75k$2@dont-email.me> <108iiq5$3lihe$3@dont-email.me> <108mhhk$j2jt$1@dont-email.me> <108mis1$j4cj$1@dont-email.me> <108o33p$vok4$5@dont-email.me> <108o6rp$10njb$1@dont-email.me> <108o7cm$10qct$1@dont-email.me> <108o845$10pj9$3@dont-email.me> <108oann$115to$1@dont-email.me> <108occm$11h9j$2@dont-email.me> <108p6qm$184gc$1@dont-email.me> <108r839$1osg9$2@dont-email.me> <108rrqb$1t75f$1@dont-email.me> <108rs57$1t9nv$1@dont-email.me> <108u59r$2eq9a$1@dont-email.me> <10905r6$2umau$1@dont-email.me> <1090tlv$3370l$1@dont-email.me> <10912eh$34bqp$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Injection-Date: Tue, 09 Sep 2025 06:01:30 +0000 (UTC) Injection-Info: dont-email.me; posting-host="7005646f5600b161ad3428a9c86fb0e9"; logging-data="855379"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19TgNL+tl9UrTA47C/HZQE5" User-Agent: Pan/0.163 (Kryvyi Rih) Cancel-Lock: sha1:UHhKmdN/fPtzkPim7wIqrt2erZY= Xref: feeder.eternal-september.org comp.lang.ada:67029 List-Id: On Sun, 31 Aug 2025 08:51:29 -0000 (UTC), Kevin Chadwick wrote: > On 31/08/2025 08:30, Lawrence DOliveiro wrote: >> >> What’s missing? > > Complete size controls and things like vomatile_full_access and > proper type protections ... Want different, incompatible BitVector classes? OK here’s use of a class factory function that creates such new classes on demand: BitVector1 = def_bitvector_class("BitVector1") BitVector2 = def_bitvector_class("BitVector2") First type still works as before: v1 = BitVector1(3, 2) v2 = BitVector1(5) v1, v2, int(v1), int(v2) (BitVector1(3, [False, True, False]), BitVector1(5, [False, False, False, False, False]), 2, 0) v1[0:2], v1[2], v1[1:3], v2[2:5] (BitVector1(2, [False, True]), False, BitVector1(2, [True, False]), BitVector1(3, [False, False, False])) The second type works just as well: v3 = BitVector2(5) v3[:] = 1 v3, int(v3) (BitVector2(5, [True, False, False, False, False]), 1) but is not directly compatible with the first type: v2[:] = v3 --------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[5], line 1 ----> 1 v2[:] = v3 [rest of traceback omitted] TypeError: invalid value for BitVector1 assignment: BitVector2(5, [False, False, False, False, False]) Of course explicit conversion via int does work: v2[:] = int(v3) v2 BitVector1(5, [True, False, False, False, False]) Is that some of what you had in mind? Not sure what the rest meant.