From 2e611c8a936fbfe485cad0419e4f394e8c866bc7 Mon Sep 17 00:00:00 2001 From: Colin Okay <59481711+cbeo@users.noreply.github.com> Date: Fri, 10 Jul 2020 16:28:58 -0500 Subject: rephrase --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 106ec38..c6544e5 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ docstring. Many docstrings include examples of use. ``` -## First, Here's the Action +## First, Some Action Here are a few examples to show you what you can do. A more involved example apears at the end of the document, following the tutorial. -- cgit v1.2.3 From 30378724486559df0c9e497069d67fba46ca0709 Mon Sep 17 00:00:00 2001 From: Colin Okay Date: Sat, 11 Jul 2020 22:24:38 -0500 Subject: extraneous slot in with-slots --- gtwiwtg.lisp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtwiwtg.lisp b/gtwiwtg.lisp index 3cf1871..a9460ec 100644 --- a/gtwiwtg.lisp +++ b/gtwiwtg.lisp @@ -63,7 +63,7 @@ (at 0) to (by 1) inclusive (comparator #'<)) (defmethod has-next-p ((g range-backed-generator!)) - (with-slots (to current comparator by at) g + (with-slots (to comparator by at) g (or (not to) (funcall comparator (+ by at) -- cgit v1.2.3 From 429cbbee6765bcfb1d0982d1e616abc54af578c3 Mon Sep 17 00:00:00 2001 From: Colin Okay Date: Sat, 11 Jul 2020 22:28:22 -0500 Subject: removed inessential slot --- gtwiwtg.lisp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gtwiwtg.lisp b/gtwiwtg.lisp index a9460ec..fe60d53 100644 --- a/gtwiwtg.lisp +++ b/gtwiwtg.lisp @@ -60,7 +60,7 @@ ;;; Generator Classes ;;; (a-generator-class range-backed-generator! () - (at 0) to (by 1) inclusive (comparator #'<)) + (at 0) to (by 1) (comparator #'<)) (defmethod has-next-p ((g range-backed-generator!)) (with-slots (to comparator by at) g @@ -162,7 +162,6 @@ If TO is NIL, then the generator produces an infinite sequence. (if inclusive #'>= #'>)))) (make-instance 'range-backed-generator! :comparator comparator - :inclusive inclusive :at (- from by) :to to :by by))) -- cgit v1.2.3 From 4f0acd1f8774a8604793b30d12ae374953e9e095 Mon Sep 17 00:00:00 2001 From: Colin Okay Date: Sat, 11 Jul 2020 23:02:30 -0500 Subject: changed optional to keyword arguments in from-thunk-until --- gtwiwtg.lisp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/gtwiwtg.lisp b/gtwiwtg.lisp index fe60d53..35f830d 100644 --- a/gtwiwtg.lisp +++ b/gtwiwtg.lisp @@ -182,7 +182,7 @@ of the sequence." :sequence sequence :index (1- start)))) -(defun from-thunk-until (thunk &optional (until (constantly nil)) clean-up) +(defun from-thunk-until (thunk &key (until (constantly nil)) clean-up) "Creates a generator that produces a series of value by successively calling (FUNCALL THUNK). The iterator stops whenever (FUNCALL UNTIL) is non null. @@ -374,8 +374,10 @@ Error Conditions: (from-thunk-until (lambda () (apply map-fn (mapcar #'next all-gens))) + :until (lambda () (some (complement #'has-next-p) all-gens)) ; when at least one has no next value + :clean-up (lambda () (dolist (g all-gens) (stop g)))))) @@ -390,6 +392,8 @@ Error Condition: (let (on-deck) (from-thunk-until (lambda () on-deck) ; consumers always call has-next-p before next + + :until (lambda () (loop :while (has-next-p gen) @@ -399,6 +403,8 @@ Error Condition: (setf on-deck candidate) (return nil)) ; Don't stop generating, we found one :finally (return t))) ; Stop generating, we can't find one. + + :clean-up (lambda () (stop gen))))) @@ -434,6 +440,7 @@ Error Conditions: (from-thunk-until (lambda () (next sub-gen)) + :until (lambda () (loop :until (has-next-p sub-gen) @@ -446,7 +453,8 @@ Error Conditions: ;; hence: (not (or (has-next-p sub-gen) (has-next-p gen)))) - + + :clean-up (lambda () (stop gen) (when sub-gen (stop sub-gen))))))) @@ -509,9 +517,11 @@ Error Conditions: all-gens))) (car vals))) + :until (lambda () (null all-gens)) + :clean-up (lambda () (dolist (g all-gens) (stop g)))))) @@ -590,10 +600,12 @@ Caveat: (t (error "Attempted to get next from a spent generator.")))) + :until (lambda () (and (not (has-next-p source-generator)) (queue-empty-p local-q))) + :clean-up (lambda () (setf (car local-stop) t) (when (every #'car stop-cells) -- cgit v1.2.3