Thanks Mike (or do you go by "Mikera" as your email alias suggests?),
I think you make very good points, so I withdraw my request. I'm curious though... Just as a learning experience, would it be possible to "tack on" such syntax implicit indexing and slicing using Clojure's extend-type function? Thanks, Greg On Jun 27, 2013, at 6:45 AM, Mikera <mike.r.anderson...@gmail.com> wrote: > I agree that negative indexing (and presumably also modulo indexing for the > upper index?) is very useful. Stuff like this comes up all the time in > core.matrix > > However I don't think it makes sense as a standard feature in Clojure's > low-level data constructs for several reasons: > a) It's a breaking change for people who are handling out-of-bounds cases > b) In new code it will mask out-of-bounds errors, which can conceal some > nasty bugs > c) Cramming more implicit features into existing constructs is a bad idea in > general: explicit is better > d) It probably adds a small performance overhead. Not worth making everyone > pay a cost for one special case feature > > This kind of thing is IMHO better handled by either wrapping the vector in a > function, or creating some kind of extra collection wrapper that provides the > negative indexing functionality. > > On Thursday, 27 June 2013 04:19:24 UTC+1, Michael-Keith Bernard (SegFaultAX) > wrote: > Vectors and maps are already functions of their indices and keys, > respectively. I don't really think it makes sense for other sequence types > (seqs, lists, etc.) because they aren't naturally associative in the same > way. Finally, there isn't a Clojure form I'm aware of that allows negative > indices in the same way eg Python does, but I for one would find that > incredibly useful. > > On Wednesday, June 26, 2013 8:01:02 PM UTC-7, Greg Slepak wrote: > There is one feature that I really miss from newLISP and seems like it could > be a natural extension to Clojure, and that is implicit indexing for lists > and arrays. > > Clojure already has something similar in its use of keywords to act as > functions that look themselves up in a map. > > This is basically the same concept, but using numbers instead. Implicit > indexing creates a really elegant syntax for finding elements and ranges in a > list or array. Here's an example: > > > (setf mylist '(a b c d e f g)) > (a b c d e f g) > > (mylist 0) > a > > (mylist -1) > g > > (0 3 mylist) > (a b c) > > Has this been considered already? Would this be something that could be added > to the language syntax? > > Thanks for your consideration! > > Sincerely, > Greg > > -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.