[REBOL] Re: ?
From: ryanc:iesco-dms at: 10-Jan-2001 18:33
Hi SpliFF,
Your answer is hidden in the source of these functions:
>> source help
help: func [
"Prints information about words and values."
'word [any-type!]
/local value args item name refmode types attrs rtype
] ....
>> source source
source: func [
"Prints the source code for a word."
'word [word!]
] ....
Notice that they ask for 'word literally, instead of just word. In the
function header "dialect" the literial notation ' has basically the same
meaning--dont evaluate. So instead of the parameter being evaluated before
assignment within the function, it is just grabbed as-is. Same effect as if
you had used a literal notation on the parameter itself.
To further demonstrate, we can look at the native function 'and:
>> source and
and: native [
"Returns the first value ANDed with the second."
value1 [logic! number! char! tuple!]
value2 [logic! number! char! tuple!]
]
Notice its values are not asked for literally, and therefore will be evaluated
prior to assignment internally within the function.
--Ryan
SpliFF wrote:
> I was wondering how '? (or 'help) can take a word as an input without the
> word or it's function being evaluated first. Rebol evaluates from
> right-to-left as in:
>
> >> return-string: does [ print "ABC" return " A string! "]
> >> print trim return-string
> ABC
> A string!
>
> In that example 'return-string is evaluated first (I think), then 'trim,
> then 'print. So what about:
>
> >> ? return-string
> USAGE:
> RETURN-STRING
>
> DESCRIPTION:
> (undocumented)
>
> If this followed the same rule as before then the string "ABC" should have
> been printed before the help text. Since '? isn't a native function I
> can't see how it can break the standard convention. I thought
>
> >> source ?
>
> ... would provide an answer but the output just confused the hell outta
> me. I have tried to write functions like this in the past but never had
> any success. Clearly my concecpt of the standard convention must be wrong.
> Could somebody clarify it for me in plain english please.
>
> SpliFF
>
> --
> To unsubscribe from this list, please send an email to
> [rebol-request--rebol--com] with "unsubscribe" in the
> subject, without the quotes.
--
Ryan Cole
Programmer Analyst
www.iesco-dms.com
707-468-5400
I am enough of an artist to draw freely upon my imagination.
Imagination is more important than knowledge. Knowledge is
limited. Imagination encircles the world.
-Einstein