Joel,

I can show you another "black magic code" from my
http://www.sweb.cz/LMecir/contexts.html

f: func [level] [
    make object! [
        a: 2 * level
        b: either zero? level [
            f 1
        ] [none]
        a: a + 1
   ]
]
probe f 0

make object! [
    a: 0
    b: unset
]

It can be repaired as follows:

make-object: function [
    {
        A non-modifying make object version,
        returns an object with any self value
    }
    [throw]
    blk [block!] "object spec"
    /proto
    prototype [object!] "object prototype"
] [result getres] [
    getres: func [value] [result: :value]
    blk: compose [(:getres) :self (:blk)]
    error? make either proto [prototype] [object!] copy/deep blk
    result
]

f: func [level] [
    make-object [
        a: 2 * level
        b: either zero? level [
            f 1
        ] [none]
        a: a + 1
   ]
]
probe f 0

make object! [
    a: 1
    b:
    make object! [
        a: 3
        b: none
    ]
]

Regards
    Ladislav

-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to