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

[REBOL] Re: Please help me out

From: lmecir:volny:cz at: 24-Aug-2010 12:27

Dne 23.8.2010 19:26, Arie van Wingerden napsal(a):
> Indeed that is the way it works. > In Lisp a list (when unquoted!) is always evaluated. > In Rebol evaluation is not standard, but must be triggered by a calling > function (outside the block). And indeed also, when a block is being > evaluated functions within the block will be recognized and evaluated also. > > 2010/8/23 Emeka<emekamicro-gmail.com> > >> Hello All, >> >> This where I got my conclusion. >> >> I mentioned before that blocks are a container type. An ordered sequence of >> values. Actually they are an ordered sequence of un-evaluated values. What >> that means is that when a block itself is evaluated the values it contains >> are not evaluated. The values a block contains are evaluated when a >> function >> is applied to the block >> >> >> http://www.codeconscious.com/rebol/articles/rebol-concepts.html#Firsttrapforbeginners >> >> >> Is the last statement correct? >> >> >> Emeka >>
...the rest snipped... The funny thing about the discussion above is, that although the contributors look like being in mutual agreement, their statements actually are not. Let me try to add my two cents in hope I do not add more confusion to the subject. First, let's examine the expression: do [ ; this is the "outer block" length? [ ; this is the "inner block" 1 ] ] Such an expression is quite frequently referred to as: "The (outer) block in the above expression is evaluated by the DO function." When describing, how the DO function interprets the (outer) block, the documentation sources say, that "The values and words of the block are computed from left to right." Notice, that the word used is not evaluated , but "computed". That is a necessary terminological distinction, since the inner block is not "evaluated" in the same way as the outer block is, it is just "computed", which actually means, that the inner block is supplied "as is" to the LENGTH? function. In this case, the LENGTH? function does not do any further "evaluation" of the inner block, it just yields the length of the inner block as its result. Hope, that this "terminological detour" was of some help. -Ladislav P.S. the usage of the "un-evaluated values" notion I see as quite unfortunate, since it looks more confusing than explaining.