REBOL [ Title: "Fun" Date: 3-Jul-2002 Name: Fun Version: 1.0.0 File: %Fun.r Author: "Andrew Martin" Purpose: "Automatic local word generation for a function." Email: Al.Bri@xtra.co.nz Web: http://valley.150m.com Category: [util script 4] ] Fun: function [ "Automatic local word generation for a function." [catch] Spec [block!] {Optional help info followed by arg words (and optional type and string).} Body [block!] "The body block of the function." ][ Locals LocalRefinement ][ throw-on-error [ Locals: make block! 0 if found? LocalRefinement: find Spec /local [ insert tail Locals next LocalRefinement Spec: copy/part Spec LocalRefinement ] foreach Value Body [ if all [ set-word? :Value not found? find Spec to refinement! :Value ][ insert tail Locals to word! :Value ] ] Locals: exclude Locals Spec function Spec Locals Body ] ]