this is a Q&D function for catching redefining words...

there are many things which can be added to this (like context handling), but I 
thought of supplying the most basic idea and letting the imagination of others run 
loose ;-)



safe-func: func [word args body][
        if value? in system/words word [
                print ["WARNING function" uppercase to-string word "has been 
redefined"]
        ]
        set in system/words word func args body
]


>> safe-func 'remove [arg1][probe arg1]
WARNING function REMOVE has been redefined

>> remove "HH"
HH


you can also protect all words with have a value before starting your script like so:

wordlist: query system/words
foreach word wordlist [
        if value? in system/words word [
                protect word
        ]
]

>> remove: true
** Script Error: Word remove is protected, cannot modify
** Near: remove: true

-MAx
---
"You can either be part of the problem or part of the solution, but in the end, being 
part of the problem is much more fun."
 

> -----Original Message-----
> From: Volker Nitsch [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, December 10, 2003 3:36 PM
> To: [EMAIL PROTECTED]
> Subject: [REBOL] Re: Rebol/Gotcha Handling previously defined words
> 
> 
> 
> Am Mittwoch 10 Dezember 2003 20:30 schrieb Tim Johnson:
> 
> Quickly fixing myself:
> (forgot return-value, added object to checklist)
> 
> my.context: func [[catch] block /local ctx] [
>     ctx: context block
>     foreach word first ctx [
>         if all [
>             value? w: in system/words word
>             any [
>               ; add your checks here
>                 any-function? get w
>                 object? get w
>             ]
>         ] [
>             throw make error! join "You don't want to 
> redefine this: " word
>         ]
>     ]
>     ctx ; oops, never forget return value..
> ]
> 
> ctx: my.context [a: b: none]
> ? ctx
> ctx2: my.context [a: reduce: none]
> 
> > TIA
> 
> -Volker
> 
> -- 
> To unsubscribe from this list, just send an email to
> [EMAIL PROTECTED] with unsubscribe as the subject.
> 
> 

-- 
To unsubscribe from this list, just send an email to
[EMAIL PROTECTED] with unsubscribe as the subject.

Reply via email to