< Rebol Programming
USAGE:
CLOSURE spec body
DESCRIPTION:
Defines a closure function.
CLOSURE is a function value.
ARGUMENTS
- spec -- Help string (opt) followed by arg words (and opt type and string) (Type: block)
- body -- The body block of the function (Type: block)
(SPECIAL ATTRIBUTES)
- catch
SOURCE CODE
closure: func [
"Defines a closure function."
[catch]
spec [block!] {Help string (opt) followed by arg words (and opt type and string)}
body [block!] "The body block of the function"
/local spc bdy word
][
spc: make block! 1 + (2 * length? spec)
insert/only spc [throw]
bdy: make block! 5 + length? spec
insert bdy reduce [:do :make :function! spc body]
parse spec [any [
set-word! | set word any-word! (
insert tail bdy to word! :word
insert tail spc to get-word! :word
insert/only tail spc [any-type!]
) | skip
]]
throw-on-error [make function! spec bdy]
]
This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.