unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* name an array function
@ 2016-11-21 10:32 Daniel Llorens
  2016-11-21 12:37 ` Stefan Israelsson Tampe
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Daniel Llorens @ 2016-11-21 10:32 UTC (permalink / raw)
  To: guile-user


Hello,

version 2.2 of Guile will (I hope) include rank-polymorphic versions of array-ref, array-set! and array-for-each. What this means is that instead of requiring as many indices as the rank of the array, with these functions you can give fewer indices and get a subarray (a ‘prefix slice’). If you give all the indices, they behave just as the current versions.

My original intention was for these functions to replace array-ref and array-set!. That's how a number of array languages/libraries do it (numpy, to mention a popular one. You don't need to say A[i, :, :], you can just say A[i].). However, the maintainers spoke against this, so these functions need different names.

The names I chose are array-from, array-amend! and array-for-each-cell. These names are taken from the J docs (http://www.jsoftware.com/help/dictionary/d520.htm, http://www.jsoftware.com/help/dictionary/d530n.htm), because the behavior is based on J and I consider J to be ‘the source’ when it comes to these concepts.

civodul has proposed array-slice instead of array-from. However, array-from only returns a slice when the rank of the result would be positive. wingo has pointed out that it is unusual to have a function name ending in a preposition. 

What do *you* think should be the names of these functions?

Thanks,

	lloda

PS: The justification for these functions is given in the documentation, but in short: 1) other than the creation of the subarray descriptors, they don't cost any more than the rank-strict versions, 2) the only way to reproduce them in current Guile is with make-shared-array, which is very slow and cumbersome, 3) they recover a functionality that used to be part of Guile but was removed (‘enclosed arrays’). 

PPS: You can check out the functions at http://git.savannah.gnu.org/gitweb/?p=guile.git;a=shortlog;h=refs/heads/lloda-squash1. I rebase this branch on master periodically. The maintainers have reviewed it, but any extra reviews would of course be appreciated, especially of the doc.




^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2016-12-15 11:30 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-21 10:32 name an array function Daniel Llorens
2016-11-21 12:37 ` Stefan Israelsson Tampe
2016-11-21 12:55 ` tomas
2016-11-21 13:10   ` Daniel Llorens
2016-11-21 13:24     ` tomas
2016-11-21 13:42       ` Daniel Llorens
2016-11-21 13:56         ` tomas
2016-11-23 16:07           ` Daniel Llorens
2016-11-23 20:32             ` tomas
2016-11-23 20:48             ` David Pirotte
2016-12-15 11:12               ` Daniel Llorens
2016-12-15 11:30                 ` tomas
2016-11-21 14:01 ` Panicz Maciej Godek
2016-11-21 14:38   ` Daniel Llorens

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).