[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: vectors are something else
From: |
Daniel Llorens |
Subject: |
Re: vectors are something else |
Date: |
Mon, 15 Apr 2013 16:08:01 +0200 |
On Apr 15, 2013, at 14:28, Daniel Hartwig wrote:
> Though such an array is potentially still a vector according to the simple
> explanation in the manual. So this requires introducing a more
> complicated discussion of when is an array a vector.
Not really. One just needs to say 'these functions produce vectors. Everything
else doesn't'.
> And a lot of the
> uses for treating some arrays as vectors will be lost with this, as it
> quite restrictive on the layout of the source data.
True. One could use arrays though.
> Given the semantic complications and lesser utility, it may as well be
> that no vectors are arrays and reject all.
No disagreement here.
> In this case, ‘vector?’ still must answer #f as the offset indexing
> makes the object not a vector. Right?
Well... it's really the same argument of 'it is an error'. We can do whatever.
> Most non-vector objects passed to ‘vector-ref’ will throw an error,
> except for offset arrays. Since the result is unspecified aka “it is
> an error”, it doesnt have to be correct (ie. include lbnd).
Wrong is wrong. Besides, people tend to rely on unspecified behavior. It's the
worst we could do.
> Is it
> really much faster to do one or the other:
>
> if lbnd != 0: error
> index = …
>
> vs:
>
> index = lbnd + ...
The second should actually be just
index = ...
You do this by having the base index point to the element at index 0 and not to
the first element. This is a mistake all through the Guile array code.
A branch would certainly be slower. However, if the array implementation was
exposed to the compiler, the lbnd!=0 check could be hoisted out of any array
loop. So both would end up being identical in that case.
I prefer the second option. But if it comes to you and I having to agree, I'd
be ok with the first.
I'm sending a poll to get some more reactions.
Regards
Daniel
- Re: vectors are something else, (continued)
Re: vectors are something else, Daniel Llorens, 2013/04/12
Re: vectors are something else, Daniel Llorens, 2013/04/12
Re: vectors are something else, Daniel Llorens, 2013/04/15
Re: vectors are something else, Mark H Weaver, 2013/04/15
Mutable top-level bindings (was: vectors are something else), Chris K. Jester-Young, 2013/04/17
Re: Mutable top-level bindings, Mark H Weaver, 2013/04/17