Fixed a bug with a forgotten :acc.
Inlined the in-file bindings, with the risk of exposing it to a misguided set!.
This commit is contained in:
parent
c53a08c769
commit
093d1319d9
1 changed files with 5 additions and 28 deletions
|
@ -113,8 +113,7 @@
|
||||||
((elts (map car pairs))
|
((elts (map car pairs))
|
||||||
(succ (map step pairs)))
|
(succ (map step pairs)))
|
||||||
()
|
()
|
||||||
. rest))
|
. rest))))
|
||||||
))
|
|
||||||
|
|
||||||
(define-syntax define-in-indexed
|
(define-syntax define-in-indexed
|
||||||
(syntax-rules ()
|
(syntax-rules ()
|
||||||
|
@ -154,8 +153,6 @@
|
||||||
. rest))
|
. rest))
|
||||||
))
|
))
|
||||||
|
|
||||||
;;> \macro{(for ch (in-port [input-port [reader [eof?]]]))}
|
|
||||||
|
|
||||||
(define-syntax in-port
|
(define-syntax in-port
|
||||||
(syntax-rules ()
|
(syntax-rules ()
|
||||||
((in-port ((var) source) next . rest)
|
((in-port ((var) source) next . rest)
|
||||||
|
@ -167,16 +164,14 @@
|
||||||
((in-port ((var p) (port read-char)) next . rest)
|
((in-port ((var p) (port read-char)) next . rest)
|
||||||
(in-port ((var p) (port read-char eof-object?)) next . rest))
|
(in-port ((var p) (port read-char eof-object?)) next . rest))
|
||||||
((in-port ((var p) (port reader eof?)) next . rest)
|
((in-port ((var p) (port reader eof?)) next . rest)
|
||||||
(next ((p port) (r reader) (e? eof?))
|
(next ((p port))
|
||||||
()
|
()
|
||||||
((var (r p) (r p)))
|
((var (reader p) (reader p)))
|
||||||
((e? var))
|
((eof? var))
|
||||||
()
|
()
|
||||||
()
|
()
|
||||||
. rest))))
|
. rest))))
|
||||||
|
|
||||||
;; ;;> \macro{(for ch (in-file [input-port [reader [eof?]]]))}
|
|
||||||
|
|
||||||
(define-syntax in-file
|
(define-syntax in-file
|
||||||
(syntax-rules ()
|
(syntax-rules ()
|
||||||
((in-file ((var) source) next . rest)
|
((in-file ((var) source) next . rest)
|
||||||
|
@ -193,7 +188,6 @@
|
||||||
()
|
()
|
||||||
((close-input-port p)) . rest))))
|
((close-input-port p)) . rest))))
|
||||||
|
|
||||||
|
|
||||||
(define-syntax in-generator
|
(define-syntax in-generator
|
||||||
(syntax-rules ()
|
(syntax-rules ()
|
||||||
((_ ((var) (source)) next . rest)
|
((_ ((var) (source)) next . rest)
|
||||||
|
@ -205,8 +199,6 @@
|
||||||
()
|
()
|
||||||
. rest))))
|
. rest))))
|
||||||
|
|
||||||
;;> \macro{(for x (up-from [start] [(to limit)] [(by step)]))}
|
|
||||||
|
|
||||||
(define-syntax up-from
|
(define-syntax up-from
|
||||||
(syntax-rules (to by)
|
(syntax-rules (to by)
|
||||||
((up-from (() . args) next . rest)
|
((up-from (() . args) next . rest)
|
||||||
|
@ -232,8 +224,6 @@
|
||||||
((up-from ((var) (start limit)) next . rest)
|
((up-from ((var) (start limit)) next . rest)
|
||||||
(up-from ((var) (start limit 1)) next . rest))))
|
(up-from ((var) (start limit 1)) next . rest))))
|
||||||
|
|
||||||
;;> \macro{(for x (down-from [start] [(to limit)] [(by step)]))}
|
|
||||||
|
|
||||||
(define-syntax down-from
|
(define-syntax down-from
|
||||||
(syntax-rules (to by)
|
(syntax-rules (to by)
|
||||||
((down-from (() . args) next . rest)
|
((down-from (() . args) next . rest)
|
||||||
|
@ -293,17 +283,12 @@
|
||||||
(folding ((var) (init update (if #t))) n . rest))
|
(folding ((var) (init update (if #t))) n . rest))
|
||||||
((_ :acc ((var) (init)) n . rest)
|
((_ :acc ((var) (init)) n . rest)
|
||||||
(folding ((var) (init var (if #t))) n . rest))))
|
(folding ((var) (init var (if #t))) n . rest))))
|
||||||
|
|
||||||
|
|
||||||
;;> \macro{(for x [pair] (listing expr))}
|
|
||||||
|
|
||||||
(define-syntax listing
|
(define-syntax listing
|
||||||
(syntax-rules (:acc)
|
(syntax-rules (:acc)
|
||||||
((listing :acc args next . rest)
|
((listing :acc args next . rest)
|
||||||
(accumulating :acc (cons reverse '()) args next . rest))))
|
(accumulating :acc (cons reverse '()) args next . rest))))
|
||||||
|
|
||||||
;;> \macro{(for x [pair] (listing-reverse expr))}
|
|
||||||
|
|
||||||
(define-syntax listing-reverse
|
(define-syntax listing-reverse
|
||||||
(syntax-rules (:acc)
|
(syntax-rules (:acc)
|
||||||
((listing-reverse :acc args next . rest)
|
((listing-reverse :acc args next . rest)
|
||||||
|
@ -312,33 +297,25 @@
|
||||||
(define (append-reverse rev tail)
|
(define (append-reverse rev tail)
|
||||||
(if (null? rev) tail (append-reverse (cdr rev) (cons (car rev) tail))))
|
(if (null? rev) tail (append-reverse (cdr rev) (cons (car rev) tail))))
|
||||||
|
|
||||||
;;> \macro{(for x [pair] (appending expr))}
|
|
||||||
|
|
||||||
(define-syntax appending
|
(define-syntax appending
|
||||||
(syntax-rules (:acc)
|
(syntax-rules (:acc)
|
||||||
((appending :acc args next . rest)
|
((appending :acc args next . rest)
|
||||||
(accumulating :acc (append-reverse reverse '()) args next . rest))))
|
(accumulating :acc (append-reverse reverse '()) args next . rest))))
|
||||||
|
|
||||||
;;> \macro{(for x [pair] (appending-reverse expr))}
|
|
||||||
|
|
||||||
(define-syntax appending-reverse
|
(define-syntax appending-reverse
|
||||||
(syntax-rules (:acc)
|
(syntax-rules (:acc)
|
||||||
((appending-reverse :acc args next . rest)
|
((appending-reverse :acc args next . rest)
|
||||||
(accumulating :acc (append-reverse (lambda (x) x) '()) args next . rest))))
|
(accumulating :acc (append-reverse (lambda (x) x) '()) args next . rest))))
|
||||||
|
|
||||||
;;> \macro{(for x (summing expr))}
|
|
||||||
|
|
||||||
(define-syntax summing
|
(define-syntax summing
|
||||||
(syntax-rules (:acc)
|
(syntax-rules (:acc)
|
||||||
((summing :acc args next . rest)
|
((summing :acc args next . rest)
|
||||||
(accumulating :acc (+ (lambda (x) x) 0) args next . rest))))
|
(accumulating :acc (+ (lambda (x) x) 0) args next . rest))))
|
||||||
|
|
||||||
;;> \macro{(for x (multiplying expr))}
|
|
||||||
|
|
||||||
(define-syntax multiplying
|
(define-syntax multiplying
|
||||||
(syntax-rules (:acc)
|
(syntax-rules (:acc)
|
||||||
((multiplying :acc args next . rest)
|
((multiplying :acc args next . rest)
|
||||||
(accumulating (* (lambda (x) x) 1) args next . rest))))
|
(accumulating :acc (* (lambda (x) x) 1) args next . rest))))
|
||||||
|
|
||||||
|
|
||||||
;;; Here starts generator clauses.
|
;;; Here starts generator clauses.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue