Re: When Is A High/Low-Level Language Not A High/Low-Level Language?

Liste des GroupesRevenir à l c 
Sujet : Re: When Is A High/Low-Level Language Not A High/Low-Level Language?
De : ldo (at) *nospam* nz.invalid (Lawrence D'Oliveiro)
Groupes : comp.lang.c
Date : 18. Aug 2024, 02:23:45
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v9reuh$23e4r$3@dont-email.me>
References : 1 2 3 4
User-Agent : Pan/0.159 (Vovchansk; )
On Sun, 18 Aug 2024 00:20:49 +0100, Bart wrote:

On 17/08/2024 23:11, Lawrence D'Oliveiro wrote:
>
On Sat, 17 Aug 2024 11:19:30 +0100, Bart wrote:
 
... what does this have to do with C, or anything at all?
 
C is supposed to be the epitome of the low-level language that can do
bit-fiddling and unsafe type conversions and the like. This is an
example of an unsafe type conversion (offering a typesafe interface to
the caller, of course) done dynamically, in a language which is
generally considered to be “higher-level” than C.
 
In sum: types as first-class objects + low-level bit-fiddling = a
combination unavailable in traditional “low-level” languages like C.
 
Apart from being an apallingly bit of code.
 
How would you it less “apallingly”?
 
(This sentence no verb. Also speling.)
 
It's an adverb. Although there should have been two P's.

Still not answering the question.

However I can't see the switch-expression; there is a Dict
constructor, where all elements are evaluated, not just the one
selected. That is not how 'switch' works.
 
How does a switch-expression work, then? Can you give us an example?
 
Take this Python code that has a similar dict constructor:
 
   def prnt(x): print(x); return len(x)
 
   i=3 a={1:prnt("One"), 2:prnt("Two"), 3:prnt("Three")}[i]
 
   print(a)
 
It selects the third element keyed with '3', but the output is:
 
   One Two Three 5
 
So 'prnt' has been called 3 times instance of just once. (Also using a
non-existent key gives an error.)

So do it this way:

    a = \
        {
            1 : lambda : prnt("One"),
            2 : lambda : prnt("Two"),
            3 : lambda : prnt("Three"),
        }[i]()

(Also using a non-existent key gives an error.)

Want a default case for your switch? Easy:

    a = \
        {
            1 : lambda : prnt("One"),
            2 : lambda : prnt("Two"),
            3 : lambda : prnt("Three"),
        }.get(i, lambda : «default»)()

You think this is somehow new to me? It’s all covered here:
<https://gitlab.com/ldo/python_topics_notebooks/-/blob/master/Simple%20Code-Shortening%20Idioms.ipynb>

The equivalent using 'switch' in one of my languages ...

If you want an unlabelled switch, that’s covered in the above
notebook, too.

Date Sujet#  Auteur
16 Aug 24 * When Is A High/Low-Level Language Not A High/Low-Level Language?10Lawrence D'Oliveiro
17 Aug 24 +- Re: When Is A High/Low-Level Language Not A High/Low-Level Language?1Steven G. Kargl
17 Aug 24 +* Re: When Is A High/Low-Level Language Not A High/Low-Level Language?7Bart
18 Aug 24 i`* Re: When Is A High/Low-Level Language Not A High/Low-Level Language?6Lawrence D'Oliveiro
18 Aug 24 i `* Re: When Is A High/Low-Level Language Not A High/Low-Level Language?5Bart
18 Aug 24 i  `* Re: When Is A High/Low-Level Language Not A High/Low-Level Language?4Lawrence D'Oliveiro
18 Aug 24 i   `* Re: When Is A High/Low-Level Language Not A High/Low-Level Language?3Bart
18 Aug 24 i    `* Re: When Is A High/Low-Level Language Not A High/Low-Level Language?2Lawrence D'Oliveiro
18 Aug 24 i     `- Re: When Is A High/Low-Level Language Not A High/Low-Level Language?1Bart
20 Aug 24 `- Re: When Is A High/Low-Level Language Not A High/Low-Level Language?1Kenny McCormack

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal