Hi,
Olof-joachim, iterate-devel: Thanks for the help.
I have written a small driver for iterate which iterates over dates in a given range. The basic usage is: (iter (for (y m d) from-date '(2011 1 26) to '(2011 2 27) by 2 skipweekends nil) (format t "~a/~a/~a~%" d m y))
notes: 1) default value for "to" is today 2) default value for "by" is 1 3) skipweekends if true, skips over weekends
I would like to include this in date-calc package, as I feel it logically belongs there. Please let me know how to go about this. I am just learning lisp, and all comments/flames are welcome.
In the iterate driver, I would like to reuse the given variables (y m d) instead of gensym'ming , but I get a slew of errors, which I am unable to comprehend. Instead of:
(defmacro-driver (FOR (y m d) FROM-DATE from-date-spec &optional TO to-date-spec BY (n 1) SKIP-WEEKENDS (skipval t)) "Driver for iterating over dates. All dates are in YMD format, ie (YYYY MM DD)" (let ((ty (gensym "TO-YEAR")) (tm (gensym "TO-MONTH")) (td (gensym "TO-DATE")) (fy (gensym "FROM-YEAR")) (fm (gensym "FROM-MONTH")) (fd (gensym "FROM-DATE")) ..... (,kwd ,y next (progn .... (list ,fy ,fm ,fd) ....
I would like to use the input yy instead of gensym'ming to hold the current iteration value like: (defmacro-driver (FOR (y m d) FROM-DATE from-date-spec &optional TO to-date-spec BY (n 1) SKIP-WEEKENDS (skipval t)) "Driver for iterating over dates. All dates are in YMD format, ie (YYYY MM DD)" (let ((ty (gensym "TO-YEAR")) (tm (gensym "TO-MONTH")) (td (gensym "TO-DATE")) ..... (,kwd ,y next (progn .... (list ,y ,m ,d)
Also, any pointers to improve the code are very much appreciated.
Thanks, Venkatesan