[REBOL] Re: the utility of 'bind
From: tim:johnsons-web at: 21-Jan-2004 12:00
* Andreas Bolka <[andreas--bolka--gmx--net]> [040121 09:06]:
>
> I will spare you my thoughts about REBOL's contexts and 'bind (for
> now) but I have a practical question:
>
> What is the utility of 'bind? No, I don't necessarily mean the typical
> cases where bind is needed to prevent errors. What I'm really thinking
> about are situations, where REBOL's behaviour regarding contexts and
> bind is actually contributing towards an elegant solution for a real
> problem.
>
> I think I remember various parse-based solutions posted to the list,
> that utilized bind. This is basically a question to those who
> understand _and_ use 'bind to actually solve problems: What do you use
> it for? Do you think REBOL's behaviour in those regards is practical?
> Are you aware of elegant solutions based on 'bind?
Although there are python-esque ways of doing things and rebol-esque
ways of doing things, I find the two languages inform me of further
possibilites.
Every python object has a built-in method called __dict__ (as far
as I know).
If you pass to a python object a series of keywords, you can validate
such keywords against __dict__
A rough comparison would be a rebol subroutine like this:
__dict__: does[next first self]
and if one had an object method - called 'set for instance.
that looked like this:
set: func[arg[block!]][do bind arg 'self ]
a validation routine within the context could then test for
the previous existance of a word using self/__dict__
; untested code!
context.....[
validate: func[args[block!] /local keywords][
keywords: self/__dict__
foreach [arg value] args[
if not find keywords arg[
throw-an-error
]
]
]
]
and one could have an object-creation routine that would guarantee
that an object be created with certain builtin methods, such as those
above.
*****************************
* Who says rebol ain't OOP! *
*****************************
> that utilized bind. This is basically a question to those who
> understand _and_ use 'bind to actually solve problems: What do you use
Now, to put my money where my mouth is, I need to implement this!
tj
--
Tim Johnson <[tim--johnsons-web--com]>
http://www.alaska-internet-solutions.com<