Fixed :final and make to, by => :to :by

I had a bug. I had an inconsistency. Don't worry. All is fixed.
This commit is contained in:
Linus 2021-03-18 12:41:39 +01:00
parent f6d7b01793
commit 5847bd21d4
3 changed files with 22 additions and 16 deletions

View file

@ -1,6 +1,6 @@
;; iterators.scm - iterators for goof-loop.
;;
;; Copyright 2020 Linus Björnstam
;; Copyright 2020-2021 Linus Björnstam
;; Copyright 2000-2015 Alex Shinn (original author of chibi-loop)
;; All rights reserved.
;;
@ -258,18 +258,18 @@
(g))))))
(define-syntax up-from
(syntax-rules (to by)
(syntax-rules (:to :by)
((up-from :for (() . args) next . rest)
(up-from :for ((var) . args) next . rest))
((up-from :for ((var) (start (to limit) (by step))) next . rest)
((up-from :for ((var) (start (:to limit) (:by step))) next . rest)
(next ((s start) (l limit) (e step))
((var s (+ var e)))
((>= var l))
() () . rest))
((up-from :for ((var) (start (to limit))) next . rest)
((up-from :for ((var) (start (:to limit))) next . rest)
(next ((s start) (l limit)) ((var s (+ var 1)))
((>= var l)) () () . rest))
((up-from :for ((var) (start (by step))) next . rest)
((up-from :for ((var) (start (:by step))) next . rest)
(next ((s start) (e step))
((var s (+ var e))) () () () . rest))
((up-from :for ((var) (start)) next . rest)
@ -282,18 +282,18 @@
(up-from :for ((var) (start limit 1)) next . rest))))
(define-syntax down-from
(syntax-rules (to by)
(syntax-rules (:to :by)
((down-from :for (() . args) next . rest)
(down-from :for ((var) . args) next . rest))
((down-from :for ((var) (start (to limit) (by step))) next . rest)
((down-from :for ((var) (start (:to limit) (:by step))) next . rest)
(next ((s start) (l limit) (e step))
((var (- s e) (- var e)))
((< var l))
() () . rest))
((down-from :for ((var) (start (to limit))) next . rest)
((down-from :for ((var) (start (:to limit))) next . rest)
(next ((s start) (l limit)) ((var (- s 1) (- var 1)))
((< var l)) () () . rest))
((down-from :for ((var) (start (by step))) next . rest)
((down-from :for ((var) (start (:by step))) next . rest)
(next ((s start) (e step)) ((var (- s e) (- var e)))
() () () . rest))
((down-from :for ((var) (start)) next . rest)