When defining many similar processes, it can be useful to parameterize a single process template. This can be accomplished by defining a procedure that takes any number of arguments and returns a parameterized process. Here’s how to do this somewhat verbosely in plain Scheme:
(define (build-me-a-process thing) "Return a process that displays THING." (make-process (name (string-append "show-" thing)) (procedure `(display ,thing)))) ;; Now use this procedure to build concrete processes. (define show-fruit (build-me-a-process "fruit")) (define show-kitchen (build-me-a-process "kitchen")) (define show-table (build-me-a-process "table"))
As this is a somewhat common thing to do in real workflows, the GWL provides simplified syntax to express the same concepts with a little less effort:
process build-me-a-process (with thing) name string-append "show-" thing procedure ` display ,thing define show-fruit build-me-a-process "fruit" define show-kitchen build-me-a-process "kitchen" define show-table build-me-a-process "table"
The result is the same: you get a procedure
that you can use to define a number of similar processes. In the end
you have the three processes