Hi Carl,

thanks for the explanations. I believe that your final comment:

>Finally, to illustrate the truth of using parens in function specs:
>
>  >> fun: func [:par (paren!)][head insert tail :par [+ 4]]
>  >> a: fun (1 + 3)
>  == (1 + 3 + 4)
>  >> a
>  == 8
>
>Ah, the things you need to do to be sure a language is reflective
>(that is, it deals well with itself).  A gem.

is meant to address my pointing out that:

>>I'd say the dictionary needs to be updated. BTW, if anyone from the REBOL
>>crew is reading along, the following statement in the dictionary entry for
>>PAREN! also needs to be carefully reworded ;-):
>>
>>"When provided within the specification of the argument of a function, it
>>requests the interpreter to check that the argument value is of the
>>specified type when the function is evaluated. "
>>
>>That was never true. 
>>


I read the dicitionary to be saying that (string!) "requests the
interpreter to check that the argument value is of the specified type" i.e.
in my example of type string!. Apparently something quite different is
meant, as you illustrated. Perhaps the ambiguous "is of the specified type"
should be replaced by "to check that the argument value is of type PAREN!".

Elan


>
>-Carl
>
>PS: Docs team: add this.
>
>
>At 11/28/99 01:25 PM -0800, you wrote:
>>Hi Gabriele,
>>
>>glad to see you back in good "form" (pun itended ;-).
>>
>>you wrote:
>>>That behaviour is not due to form:
>>
>>
>>Correct. What is it due to? 
>>
>>Apparently, the way REBOL treats words in parentheses has changed since
>>version 1:
>>Here's what version 1 used to do:
>>
>>>> word: "meaning"
>>meaning
>>>> var2: make paren! [word]
>>(word)
>>>> var2
>>(word)
>>>> :var2
>>(word)
>>
>>(This was copied from the Version 1 console: 1.0.3.3 (Win32 x86))
>>
>>Compare to your experiments:
>>
>>>> word: "meaning"
>>== "meaning"
>>>> var2: make paren! [word]
>>== (word)
>>>> var2
>>== "meaning"
>>>> :var2
>>== (word)
>>
>>In version 1 get and evaluation of var2 amounted to the same thing. In the
>>current version this is no longer true.
>>
>>How do you account for the difference between:
>>>> :var2
>>== (word)
>>
>>and 
>>
>>>> var2
>>== "meaning"
>>
>>?
>>
>>Using :var2 returns something different from evaluating var2. However, the
>>new User's Guide (beta) continues to say:
>>
>>User's Guid (beta)
>>:word   Retrieve the word's value, but don't evaluate it.
>>        This is useful for referring to functions and other
>>        types of data without evaluating them.
>>
>>So, everything would be peachy, if (word) was covered by the vague "... and
>>other types of data ...". Is a word in parentheses a type of data that is
>>evaluated? Not according to the dictionary:
>>
>>"PAREN!
>>
>>Represents the PAREN datatype, both externally to the user and internally
>>within the system. When supplied as an argument to the MAKE function, it
>>specifies the type of value to be created. When provided within the
>>specification of the argument of a function, it requests the interpreter to
>>check that the argument value is of the specified type when the function is
>>evaluated. "
>>
>>For our discussion it is important to note that the dictionary does not
>>document a usage of paren! which leads to the evaluation of a word. My
>>guess is that was introduced after 1.0. Version 2.1 already includes the
>>new way (word) works. 
>>
>>I'd say the dictionary needs to be updated. BTW, if anyone from the REBOL
>>crew is reading along, the following statement in the dictionary entry for
>>PAREN! also needs to be carefully reworded ;-):
>>
>>"When provided within the specification of the argument of a function, it
>>requests the interpreter to check that the argument value is of the
>>specified type when the function is evaluated. "
>>
>>That was never true. 
>>
>>Elan
>> 
>
>
>

Reply via email to