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:
		
							parent
							
								
									f6d7b01793
								
							
						
					
					
						commit
						5847bd21d4
					
				
					 3 changed files with 22 additions and 16 deletions
				
			
		|  | @ -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) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Linus
						Linus