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.


Reply via email to