On 3/8/06, Jeff Massung <[EMAIL PROTECTED]> wrote:
> Thanks, I'll take a closer look at that one when I get a moment. Along th=
e
> same lines, has anyone come up with a version of "gensym" that can be use=
d?
>
> For example, using VID, I may want to dynamically create controls that
> access themselves.

if they want to access themself, they are objects, they know who they
are. Means they have a 'self.
Except if you use action-blocks in vid, these are closures, staying
bound to their original environment. They get the appropriate face as
parameter 'face.

> I currently don't know of a way to do this without
> generating a symbol to use. Here's a brief example of what I mean:
>
> dyn-btn: does [
>     join [] [ gensym: 'button "foo" [ gensym/text: "bar" ]
> ]
>
> Obviously, however, I can't use "gensym:" over and over again,

Not?! Looking confused for context.
Maybe not elegant example, but still possible :)
The basic trick with making a context and getting a word from it is univers=
al.

dyn-btn: func[foo /local ctx] [
   ctx: context[
    sym: none
    lay: compose copy/deep [
      sym: button (foo) [ probe sym/text probe lay ]
    ]
   ]
]
buttons: copy[]
lay: copy[]
repeat i 10[
 append buttons ctx: dyn-btn join "btn" i
 append lay ctx/lay
]
? lay
lay: layout lay
foreach btn buttons[
 probe btn/sym/text
]
view lay


> I need to
> have a way of "creating" the symbol on the fly and accessing it. I suppos=
e I
> could use to-word and coerce a generated string for the name (like Lisp
> does). But is there a "nicer" way to do this?
>
> On 3/8/06, Gregg Irwin <[EMAIL PROTECTED]> wrote:
> >
> >
> > Hi Jeff,
> >
> > JM> So, I'm sure REBOL has some sort of support for this, but I have ye=
t
> > to find
> > JM> it. Does REBOL have any built-in support for traditional mapping
> > functions
> > JM> that are found in Lisp?
> >
> > Oddly enough, there isn't a native one. It has come up a number of
> > times, and many folks have written their own; I don't know why RT
> > hasn't included one yet. It's possible they're still looking for the
> > right design. e.g. with refinements and such, I think there's more to
> > it than just do the same thing Lisp does, when creating a standard
> > function.
> >
> > Here's one, written by Larry Palmiter, that I use sometimes:
> >
> >     map: apply: func [fn blk args /local result][
> >         result: copy []
> >         repeat el blk [append/only result fn :el args]
> >         result
> >     ]
> >
> > -- Gregg
> >
> > --
> > To unsubscribe from the list, just send an email to
> > lists at rebol.com with unsubscribe as the subject.
> >
> >
>
>
> --
> [EMAIL PROTECTED]
>
> --
> To unsubscribe from the list, just send an email to
> lists at rebol.com with unsubscribe as the subject.
>
>


--
-Volker

"Any problem in computer science can be solved with another layer of
indirection. But that usually will create another problem." David
Wheeler
-- 
To unsubscribe from the list, just send an email to 
lists at rebol.com with unsubscribe as the subject.

Reply via email to