This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: APL-style array indexing in Kawa - a sketch


On Aug 17, 2015, at 6:47 PM, Per Bothner <per@bothner.com> wrote:

> We could define [<:] as a supported syntax (see $bracket-list$ in syntax.scm).
> It would be relative easy to define 0 as the default lower bound, but that
> doesn't quite do what you want.  We could define [<;] as a special magic value
> that gets coerced to a specific range depending on context.

Hmm can we pick something that won't confuse paredit mode?


> Why wouldn't you just use: (T [0 <: 3] 3) ?

Oh, right.  I wasn't sure whether you could mix array indices and
scalar indices like that, but that certainly simplifies it.



> It seems reasonable to offer a 1-argument array-copy function.
> In addition to copying (necessary parts of) the data array,
> it would simplify the IntArray interface to an ArrayMapper.
> 
> Note that array-copy is a special case of:
>  (make-array-from-function SHAPE FUNCTION)
> since a rank-N array can be treated as N-ary function.

Yeah.  It occurs to me that this general function->array concept
overlaps quite a bit with expression templates from C++.  (This is a bit
off-topic w.r.t. APL style, but oh well.)  In addition to doing this
index mapping to create arrays from other arrays by permuting elements,
it would be useful to have a mechanism to construct an array that keeps
the same indices but invokes a function on each element.  So, perhaps
something like:

(array-map (lambda (x) (* 2 x)) ARR) => a new array where each element
is doubled in value.

(array-map + ARR1 ARR2) => a new array representing the elementwise sum
of the elements of ARR1 and ARR2.

(I'm imagining that the array-map call wouldn't allocate a new data
buffer, but would just close over the supplied function and array(s),
lazily applying the function to array elements as needed.)


--
Jamison Hope
The PTR Group
www.theptrgroup.com




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]