|
Not at all my favorite language, but I do wish that JavaScript could handle associative arrays (not objects) in foreach loops where keys and values could be easily accessed for each item in the array, and so that it could be done recursively. The workarounds for this are making me bug-eyed.
|
|
|
|
|
Cpichols wrote: I do wish that JavaScript could handle associative arrays (not objects) in foreach loops where keys and values could be easily accessed for each item in the array Most times people blame the language when it's really due to them not studying the language.
const data = [];
data['a'] = 200;
data['b'] = 300;
for (const datum in data) {
console.info(`${datum}: ${data[datum]}`);
}
Cpichols wrote: and so that it could be done recursively No language I've ever used does recursive traversing of objects automatically in a loop. Why would JavaScript be more difficult to understand?
Jeremy Falcon
|
|
|
|
|
Loop enhancements:
First iteration statements executed in loop context.
An optional 'break code' added to a 'break', to indicate why a loop is prematurely terminated
'Handlers' that executes in the context of the loop, for each break code. 'finally', like in exception handling.
E.g.:
for (record r = head; r; r = r.next) {
initloop: {
int iterationCount = 0;
record trailer = null;
int accumulated = 0;
}
...
if (++iterationCount > limit) break : GivingUp;
...
if (r.key == desiredKey) break : RecordFound;
...
trailer = r;
accumulated += r.value;
exitbreak (GivingUp): {
Console.WriteLine("Possible circular list: " + head.listname;
Console.WriteLine("Giving up after " + iterationCount + " iterations");
}
exitbreak (RecordFound): {
if (trailer == null) head = r.next;
else trailer.next = r.next;
r.sumOfPreceding = accumulated;
}
exitloop: {
Console.Writeline(desiredKey + " not found among " + iterationCount + " records");
}
finally: {
<actions executed in loop context regardless of exit reason>
}
} This would keep all the action related to the loop as one syntactical unit. It would reduce variable clutter for reporting the loop termination, and termination actions would have access to variables relevant to the loop alone.
The above actions, expressed without these enhancements, would require a handful of (loop) global variables, and the semantics would be spread out before the loop, in the loop and after the loop, not as one syntactical unit. Alternately, the loop body would have several if/else levels of nesting and it would be difficult to identify the exit actions as such.
|
|
|
|
|
switch( x, y, z )
{
case 1, 2, 3:
break;
etc.
}
|
|
|
|
|
CHILL has that. Or maybe I should say "had" - I don't know if anyone at all are using CHILL nowadays. We (i.e. Norway) used to have half of our land line phones handled by switches programmed in CHILL (ITT System 12 switches) but the land line phone system was closed down last newyear. Now only mobile phones and IP phones are left.
Maybe CHILL is where you take your proposal from. You present a simplified view: CHILL offered both '*' for Don't Care and ELSE for All other values than those mentioned explicitly in other switch alternatives.
CHILL has a few other properties that goes into my language feature wish list. It is a pity that it never caught on as a general language, it is really well designed. But noone worked for it - not even the creators of the language (The initial C is for CCITT, 'CCITT HIgh Level Language'. CCITT changed name to ITU-T many years ago.). They saw it as a good language for programming phone switches, and didn't care to consider the language for any other use.
|
|
|
|
|
C:
defer that works just like Go's deferAnonymous functions that don't mark the stack executable[1], so that defer is actually useful.
Replace #define with lisp-like macros (now in Nim as well, I believe)Lots more, just don't have the time.
[1] Current methods to do nested functions using compiler-specific extensions mark the entire stack as executable.
|
|
|
|
|
Java really needs typedef.
It could easily be restricted to final classes. Implement it via erasure like other Java generics.
typedef String InvoiceId;
|
|
|
|
|
C:
- A standard (and simple) way to declare a parameter (or local variable) as not-nullable. Clang supports such an extension, as does gcc (but in a less clean way). It would be better to have a portable tag to do it defined in the language standards. Honestly, this should have been done in back in C99, and would have probably stopped many bugs over the last decade or two.
- Variable value bound declarations. So if a parameter is declared unsigned int , but really only has a meaningful range of 0-100 , it could flag it during compile time that it is an error. Probably more useful to set reasonable bounds on items which could cause integer overflows (or static buffer overflows when still used due to legacy code).. For example:
typedef struct
{
int id;
char name[20];
} myrecord_t;
myrecord_t * alloc_list(__bound__(0, 10000000) unsigned int size)
{
return malloc(size * sizeof(myrecord_t));
}
void safecaller(__bound__(1, 100000) unsigned int size)
{
myrecord_t * list = alloc_list(size);
}
void badcaller(unsigned int size)
{
myrecord_t * list = alloc_list(size);
}
|
|
|
|
|
Early growth key that is bird (6)
Life should not be a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside in a cloud of smoke, thoroughly used up, totally worn out, and loudly proclaiming “Wow! What a Ride!" - Hunter S Thompson - RIP
|
|
|
|
|
Early growth = BUD
Key = G
That is = IE
Bird = BUDGIE
|
|
|
|
|
Good man YAUT
nice to see a different solver
Life should not be a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside in a cloud of smoke, thoroughly used up, totally worn out, and loudly proclaiming “Wow! What a Ride!" - Hunter S Thompson - RIP
|
|
|
|
|
I was trying to justify the OON for KEY in GOONIE!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
you've lost me there
Edit
I see your thought process now
Life should not be a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside in a cloud of smoke, thoroughly used up, totally worn out, and loudly proclaiming “Wow! What a Ride!" - Hunter S Thompson - RIP
modified 1-Feb-23 6:11am.
|
|
|
|
|
It's a good thing G as early growth didn't occur to me or I'd still be working on it.
I spent a fair bit of time on "magpie" but magp went nowhere. 
|
|
|
|
|
Wordle 592 3/6
🟩🟨⬛⬛⬛
🟩⬛⬛🟩⬛
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 592 3/6
🟩⬛🟩⬛⬛
🟩🟩🟩⬛⬛
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 592 4/6
⬜🟨⬜⬜⬜
🟨⬜🟩⬜🟨
🟩⬜🟩🟨⬜
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 592 4/6
⬜⬜⬜🟨⬜
🟩⬜🟩⬜⬜
🟩⬜🟩⬜⬜
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 592 3/6*
⬜⬜🟩🟨⬜
🟨⬜🟩⬜🟨
🟩🟩🟩🟩🟩
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Wordle 592 4/6
⬛⬛⬛🟩⬛
⬛🟨⬛⬛⬛
⬛⬛🟨⬛🟨
🟩🟩🟩🟩🟩
I needed the full roster of starters but after that it's been almost immediate. I'd really like an official chronometer for Wordle speedrunning.
GCS/GE d--(d) s-/+ a C+++ U+++ P-- L+@ E-- W+++ N+ o+ K- w+++ O? M-- V? PS+ PE Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
|
|
|
|
|
Wordle 592 5/6
⬜⬜⬜⬜🟨
⬜⬜🟨🟩⬜
🟩⬜🟩🟩⬜
🟩⬜🟩🟩⬜
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 592 3/6*
⬜⬜⬜⬜🟨
🟩🟨🟩⬜⬜
🟩🟩🟩🟩🟩
Happiness will never come to those who fail to appreciate what they already have. -Anon
|
|
|
|
|
🟨⬜⬜⬜⬜
⬜🟨🟨⬜🟨
🟨⬜🟨🟨🟨
🟩🟩🟩🟩🟩
Life should not be a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside in a cloud of smoke, thoroughly used up, totally worn out, and loudly proclaiming “Wow! What a Ride!" - Hunter S Thompson - RIP
|
|
|
|
|
Wordle 592 4/6*
🟩⬜⬜⬜⬜
🟩⬜⬜🟨⬜
🟩🟩⬜⬜⬜
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 592 3/6
⬛🟨🟩⬛⬛
🟨⬛🟩⬛🟨
🟩🟩🟩🟩🟩
Get me coffee and no one gets hurt!
|
|
|
|