Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

How to transform a string into a word and get its associated value

 [1/9] from: gerardcote:sympatico:ca at: 21-Jun-2005 17:07


Hi list, Since I got no cue about my recent parse submit, I will restructure my problem another simpler way: I have some word called 'name and its associated integer value 250.
>> name: 250
== 250 I can verify the value associated with the word 'name from the global system/words object.
>> print system/words/name
250 Now for the difficult part (at least to me). I get another word called 'info that contains a reference to my former word 'name.
>> info: "name"
== "name" When I ask to display its value, the word name is correctly associated but it remains a string and is in no way considered as a real word called 'name.
>> print system/words/info
name What I would get is a substitution of the string "name" for the real word 'name and then the associated value could be accessed - indirectly. I feel there is some way to do it but I can't up to now say which it is ???? I tried some basic knowledge I have but the result is not the one I want.
>> print system/words/:info
** Script Error: Invalid path value: name ** Where: halt-view ** Near: print system/words/:info May be I could join or append the 2 parts (system/words and info) in some way but I have yet to get it done. Thanks, Gerard

 [2/9] from: volker:nitsch:g:mail at: 22-Jun-2005 0:23


On 6/21/05, Gerard Cote <[gerardcote--sympatico--ca]> wrote:
> Hi list, > Since I got no cue about my recent parse submit, I will restructure my problem another simpler way:
<<quoted lines omitted: 7>>
> >> info: "name" > == "name"
!>> info: 'name == name !>> get info == 250
> When I ask to display its value, the word name is correctly associated but it remains a string and is in no way considered as a real > word called 'name.
<<quoted lines omitted: 14>>
> 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

 [3/9] from: Izkata:Comcast at: 21-Jun-2005 17:46


>> A: 250
== 250
>> B: "A"
== "A"
>> get in system/words to-word B ;one-line way to do it
== 250
>> C: to-word B ;two-line way to do it
== A
>> system/words/:C
== 250 You're using a string, that's to problem.. But I thank you for asking in that way, I needed this very thing for something of my own and couldn't figure it out before now! -Izzy Boy

 [4/9] from: tom::conlin::gmail::com at: 21-Jun-2005 16:22


Hi Gerard,
>> foo: 5
== 5
>> bar: "foo"
== "foo"
>> get to-get-word bar
==5 is that what you are looking for? On 6/21/05, Gerard Cote <[gerardcote--sympatico--ca]> wrote:
> Hi list, > Since I got no cue about my recent parse submit, I will restructure my problem another simpler way:
<<quoted lines omitted: 25>>
> To unsubscribe from the list, just send an email to > lists at rebol.com with unsubscribe as the subject.
-- ... nice weather eh

 [5/9] from: gerardcote:sympatico:ca at: 21-Jun-2005 19:51


Thanks Izkata, This is just what I need. I must admit that until you submitted your own solution I had not been able to figure the exact syntax by my self... But I was not very far of yours! In fact my use of get in waas incorrect - I was missing the required type conversion to-word !!! Regards, Gerard

 [6/9] from: th72::dds::nl at: 22-Jun-2005 11:18


I think it's very easy, if i understand you right. Use this for example:
>> test: 99
== 99
>> name: "test"
== "test"
>> name
== "test"
>> make word! name
== test
>> do make word! name
== 99 Tim make word! "test" Gerard Cote wrote:

 [7/9] from: th72::dds::nl at: 22-Jun-2005 11:19


I think it's very easy, if i understand you right. Use this for example:
>> test: 99
== 99
>> name: "test"
== "test"
>> name
== "test"
>> make word! name
== test
>> do make word! name
== 99 Tim make word! "test" Gerard Cote wrote:

 [8/9] from: gabriele::colellachiara::com at: 22-Jun-2005 15:23


Hi Gerard, On Tuesday, June 21, 2005, 11:07:22 PM, you wrote: GC> Since I got no cue about my recent parse submit, I will GC> restructure my problem another simpler way:
>> name: 250
== 250
>> string: "name"
== "name"
>> get to word! string
== 250 No need for IN, converting to word already binds to the global context. Regards, Gabriele. -- Gabriele Santilli <[g--santilli--tiscalinet--it]> -- REBOL Programmer Amiga Group Italia sez. L'Aquila --- SOON: http://www.rebol.it/

 [9/9] from: gerardcote:sympatico:ca at: 22-Jun-2005 22:41


Hi list, and the winner is (my preferred one that is) :
> >> name: 250 > == 250
<<quoted lines omitted: 4>>
> No need for IN, converting to word already binds to the global > context.
Interesting and useful info for me since I recently looked at 'bind and the question remaining unanswered to me was how to bind a variable defined in a local context to some word defined in the global context. Thanks you Gabriele and every others that also have submitted helpful solutions. I'll look at them later in an effort to compare their respective value and learn more about REBOL. Regards, Gerard P.S. If you asked yourself what was the usefulness of all this let me simply say that I am working on a REBOL version of a printf work alike. Many languages offer this instruction: C, awk, ... The proposed syntax will be something like : printf ["%-d| %|6.2f| %08b %-6s" n 123 123 "allo"] "%" the last part is a delimiter and will be suppressed during the final stage. If you look in detail at the different parts her is a summary for all of them: a beginning field delimiter % an optional | char (used for vertical alignment during printout if desired) an optional alignment flag can be - + " " 0 c (left aligned for minus, add sign for plus, left padding with blanks or zeros, field centering for c) an optional field width (number) an optional precision (dot followed by number) a conversion code (specifies conversion type from the original data to its final form, present supported forms are b-binary, o-octal, h-hex, d/f-decimal, e/g-scientific form and s-string) a final optional | char (used for vertical alignment during printout if desired) Some details have yet to be done before the printf is completed. I'll announce it for posting to the library for study when ready to release if there is some interest. Also welcomed is any suggestion to enhance the usability of the actual printf, which I really never found user friendly at all.

Notes
  • Quoted lines have been omitted from some messages.
    View the message alone to see the lines that have been omitted