Resuming some recreational Algol 68 programming I'm working on an array-of-array (row-of-row) structure. I started as so often with[code snipped -- ANW]
a specific function, say,
PROC permute_nums = (REF MAT m) VOID :
FOR y TO 1 UPB m DO
FOR x TO 2 UPB m DO
REF INT where = m [y, x];
where := num [where]
OD
OD;
Since these nested loops are clumsy and are expected to appear in
some more functions I added a generic variant
where the specific transformation function is passed as a parameter.
Now I'm not too much concerned about performance but more about the
clarity of the source code. [...]
Comments on these ruminations, thoughts and ideas, are welcome.I don't feel that four lines of code to iterate through a two- dimensional array is difficult to write or understand. If it was a 6D
On 14/04/2026 14:04, Janis Papanagnou wrote:
Resuming some recreational Algol 68 programming I'm working on an[code snipped -- ANW]
array-of-array (row-of-row) structure. I started as so often with
a specific function, say,
PROC permute_nums = (REF MAT m) VOID :
FOR y TO 1 UPB m DO
FOR x TO 2 UPB m DO
REF INT where = m [y, x];
where := num [where]
OD
OD;
Since these nested loops are clumsy and are expected to appear in
some more functions I added a generic variant
where the specific transformation function is passed as a parameter.
Now I'm not too much concerned about performance but more about the
clarity of the source code. [...]
Personally, I find the non-generic version clearer. ISTM that you're opening cans of worms with the generic version as well as making
the code harder to understand.
[ identified problem with 'print'-like code snipped ]
Comments on these ruminations, thoughts and ideas, are welcome.
I don't feel that four lines of code to iterate through a two- dimensional array is difficult to write or understand.
If it was a 6D
array, you might [IMO] have more reason to avoid repeating the obvious loops. OTOH, that might give you cause to simplify the data structures
or take a different approach, such as pre-processing the code.
[I once, some years ago, spent a lot of time solving puzzles involving tree searches (eg, for Slitherlink, Light-Up and Hashi). I
tried to write generic code for the relevant parallel processing, but
in the end it was (much) easier to write the specific code for one
puzzle and copy-and-edit it for the next puzzle. YMMV.]
| Sysop: | DaiTengu |
|---|---|
| Location: | Appleton, WI |
| Users: | 1,116 |
| Nodes: | 10 (0 / 10) |
| Uptime: | 86:53:11 |
| Calls: | 14,305 |
| Files: | 186,338 |
| D/L today: |
1,015 files (319M bytes) |
| Messages: | 2,525,511 |