[REBOL] Re: Types & runtime
From: carl:cybercraft at: 26-Aug-2002 1:42
Ahem. (: As you would've worked out from Scott's post, a simple 'do
is enough to turn a word into type datatype! ...
>> list: [name string! birthday date!]
== [name string! birthday date!]
>> type: do pick list 2
== string!
>> type? type
== datatype!
Carl.
On 26-Aug-02, Carl Read wrote:
> On 25-Aug-02, Robert M. Muench wrote:
>> Hi, can some help me with this:
>> list: [name string! birthday date!]
>> field: pick list 1
>> type: pick list 2
>>>> type? Type
>> == word!
>> What I want to do is to set field to a value of type 'type.
>> Something like:
>> switch type [
>> string! [value: "test"]
>> ]
>> to-set-word field reduce[make to-type type value]
>> Is something like this possible? Robert
> Indeed it is, as I've just found out...
> to-type: func [type [datatype!] value [any-type!]][
> make type value
> ]
>>> to-type string! [me--here--com]
> == "[me--here--com]"
>>> to-type string! 'hello
> == "hello"
>>> to-type integer! "999"
> == 999
> Converting a word in a block to the datatype! type is slightly
> tricky though...
>>> blk: [string!]
> == [string!]
>>> type? blk/1
> == word!
>>> blk: reduce blk
> == [string!]
>>> type? blk/1
> == datatype!
> So to do what you were attempting at the start...
>>> list: [name string! birthday date!]
> == [name string! birthday date!]
>>> field: pick list 1
> == name
>>> type: first reduce reduce [pick list 2]
> == string!
> That makes 'type a datatype!...
>>> type? type
> == datatype!
> so we can now use it in the above function...
>>> to-type type field
> == "name"
> HTH.
--
Carl Read