relationship to SRFI-25
Per Bothner
(30 Jul 2015 05:30 UTC)
|
Re: relationship to SRFI-25
John Cowan
(30 Jul 2015 20:20 UTC)
|
Re: relationship to SRFI-25
Bradley Lucier
(31 Jul 2015 21:00 UTC)
|
Re: relationship to SRFI-25
Bradley Lucier
(26 Sep 2015 18:33 UTC)
|
Re: relationship to SRFI-25
Per Bothner
(27 Sep 2015 05:34 UTC)
|
Re: relationship to SRFI-25
Bradley Lucier
(28 Sep 2015 21:04 UTC)
|
Re: relationship to SRFI-25
Per Bothner
(28 Sep 2015 21:29 UTC)
|
Re: relationship to SRFI-25
Bradley Lucier
(28 Sep 2015 21:54 UTC)
|
Re: relationship to SRFI-25 Jamison Hope (28 Sep 2015 22:22 UTC)
|
Re: relationship to SRFI-25
Bradley Lucier
(28 Sep 2015 22:38 UTC)
|
Re: relationship to SRFI-25
Jamison Hope
(28 Sep 2015 23:20 UTC)
|
Re: relationship to SRFI-25
Bradley Lucier
(29 Sep 2015 06:03 UTC)
|
Re: relationship to SRFI-25
Jamison Hope
(29 Sep 2015 16:12 UTC)
|
Re: relationship to SRFI-25
Bradley Lucier
(30 Sep 2015 03:42 UTC)
|
On Sep 28, 2015, at 5:53 PM, Bradley Lucier <xxxxxx@math.purdue.edu> wrote: > (4) when using this array API there is no point in this whole process where a bang occurs textually. This could be resolved quite easily if the API provided array-set! instead of just array-setter. I hesitate to suggest adding more procedures to the API, since I think there are already too many, but it would feel much more natural if there were array-get and array-set! procedures that called array-getter and array-setter under the hood. -JH > On 09/28/2015 05:29 PM, Per Bothner wrote: >> >> >> On 09/28/2015 02:04 PM, Bradley Lucier wrote: >>> On 09/27/2015 01:33 AM, Per Bothner wrote: >>>> >>>> I think this has been mentioned before: the name >>>> specialized-array-share! >>>> should not end in a '!'. >>> >>> Perhaps, I don't remember the remark. >>> >>> Let me say what issue I was trying to address by adding "!" and you >>> can offer some advice. >>> >>> I've generally thought that the bang "!" in set-cdr!, vector-set!, >>> etc., was to alert the reader that something strange or nonlocal could >>> happen. >> >> I thank of it as something that causes a side-effecting modification. >> Can you think of counter-examples? >> >>> In our case, if we have >>> >>> (define domain (interval '#(0 0) '#(100 100))) >>> (define a (array->specialized-array (array domain list))) >>> >>> for which >>> >>> ((getter a) 0 0) => (0 0) >>> >>> and then >>> >>> (define b (specialized-array-share! a (interval '#(0) '#(100)) (lambda >>> (i) (values i j)))) >>> >>> >>> then calling >>> >>> ((setter b) #t 0) >>> >>> will change subsequent values of >>> >>> ((getter a) 0 0) => #t >> >> How is this different from: >> >> #|kawa:1|# (define lx (list 'x 'a 'b)) >> #|kawa:2|# (define ly (cons 'y (cdr lx))) >> #|kawa:3|# (set-car! (cdr ly) 'w) >> #|kawa:4|# lx >> (x w b) >> >> The specialized-array-share! is the equivalent of line 2 - i.e. we >> create a new data structure >> that share with another. > > I agree completely. > > (1) I don't particularly like my notation; (2) sharing mutable structures can cause strange situations because of later mutations; (3) these later mutations using existing primitive procedures usually have a bang in their names to indicate that they are mutations (I think it's to alert the code reader that the code is doing something dangerous); (4) when using this array API there is no point in this whole process where a bang occurs textually. > > So I put a bang in the notation for the sharing step. > > This is just me trying to explain my previous notational choice, and I'll probably remove the bang in the next revision. > > Brad > To unsubscribe from this list please goto http://www.simplelists.com/confirm.php?u=eHmYtP8qzjHs0XIbGTgBtEfrRCCJYnAa -- Jamison Hope xxxxxx@alum.mit.edu