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
--
Audentis fortuna juvat
--
Audentis fortuna juvat