Next: Printing Blocks, Up: Tutorial [Contents]
Blocks can be created using the make-block*
function. Useful blocks
need the code
and language
keyword arguments.
(use-modules (blocks) (blocks language ruby)) (define my-block (make-block* #:language ruby #:code " def fibonacci(n) n <= 1 ? n : fibonacci(n - 1) + fibonacci(n - 2) end 5.times do |n| puts \"#{n} #{fibonacci(n)}\" end"))
Blocks are run using the run-block
function:
(run-block my-block) ;; => $1 = #<block... result: "0 0\n1 1\n2 1\n3 2\n4 3\n"...>
This returns a new block, largely identical to my-block
but with the
result
field set. my-block
was not modified; if
my-block
is run again the Ruby subprocesses will be reinvoked.
To get the result, use the block-result
function.
(block-result (run-block my-block)) ;; => $1 = "0 0\n1 1\n2 1\n3 2\n4 3\n"
As a shorthand, pass #:run? #t
to make-block*
to simultaneously
create and run a block.