Fix numeric contagion in `cycling`
author |
Steve Losh <steve@stevelosh.com> |
date |
Sat, 15 Oct 2016 13:27:34 +0000 |
parents |
756273274876
|
children |
d49a710b5fcc
|
branches/tags |
(none) |
files |
losh.lisp |
Changes
--- a/losh.lisp Sat Oct 15 13:14:57 2016 +0000
+++ b/losh.lisp Sat Oct 15 13:27:34 2016 +0000
@@ -949,11 +949,11 @@
(for x :cycling (print 'beep) :from 1 :downto 0 :by 0.5)
(print x))
=>
- 1
+ 1.0
0.5
0.0
BEEP
- 1
+ 1.0
0.5
"
@@ -966,10 +966,12 @@
(let ((kwd (if generate 'generate 'for)))
(with-gensyms (%counter %start %end %increment)
`(progn
- (with ,%start = ,start)
(with ,%end = ,end)
(with ,%increment = ,increment)
(with ,%counter)
+ ;; ugly hack to get numeric contagion right for the first val
+ ;; (borrowed from Alexandria)
+ (with ,%start = (- (+ ,start ,%increment) ,%increment))
(,kwd ,var next
(progn
(setf ,%counter