Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Rebol Programming/funct

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

USAGE: FUNCT spec body /with object /extern words DESCRIPTION: Defines a function with all set-words as locals. FUNCT 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) REFINEMENTS /with -- Define or use a persistent object (self) object -- The object or spec (Type: object block) /extern words -- These words are not local (Type: block) (SPECIAL ATTRIBUTES) catch SOURCE CODE funct: func [ "Defines a function with all set-words as locals." [catch] spec [block!] {Help string (opt) followed by arg words (and opt type and string)} body [block!] "The body block of the function" /with "Define or use a persistent object (self)" object [object! block!] "The object or spec" /extern words [block!] "These words are not local" /local r ws wb a ][ spec: copy/deep spec body: copy/deep body ws: make block! length? spec parse spec [any [ set-word! | set a any-word! (insert tail ws to-word a) | skip ]] if with [ unless object? object [object: make object! object] bind body object insert tail ws first object ] insert tail ws words wb: make block! 12 parse body r: [any [ set a set-word! (insert tail wb to-word a) | hash! | into r | skip ]] unless empty? wb: exclude wb ws [ remove find wb 'local unless find spec /local [insert tail spec /local] insert tail spec wb ] throw-on-error [make function! spec body] ]