newLISP Fan Club

Forum => newLISP newS => Topic started by: Kazimir Majorinc on July 26, 2008, 05:50:51 AM

Title: How about $idx for map?
Post by: Kazimir Majorinc on July 26, 2008, 05:50:51 AM
If it is realistic, it can be cute small improvement.



(map (lambda()(print $idx)) '(1 2 7)) ; 127
Title:
Post by: Jeff on July 26, 2008, 06:37:56 AM
It would be more idiomatic for $idx to be the position of the current item in the list.


(map (fn (x) (list $idx x)) '(1 2 3)) => '((0 1) (1 2) (2 3))

Anyway, it isn't necessary.  Use dolist for that.
Title:
Post by: Kazimir Majorinc on July 26, 2008, 06:19:08 PM
Quote from: "Jeff"It would be more idiomatic for $idx to be the position of the current item in the list.


(map (fn (x) (list $idx x)) '(1 2 3)) => '((0 1) (1 2) (2 3))

Anyway, it isn't necessary.  Use dolist for that.


Yes, you are right about $idx as position on the list. I was not focused. True, it is not necessary, but it is still small improvement which could provide similar advantage to $idx in other loops, isn't it - if its implementation is equally (time, space, implementation effort) cheap.
Title:
Post by: Jeff on July 27, 2008, 07:37:04 AM
I don't think so.  It breaks convention.  A function, even an anonymous function, takes arguments.  What is it if there are multiple parameters, such as (map 'list '(1 2 3) '(4 5 6))?  You could always write your own macro that did the same thing, but accepted an expression instead of a function.