On May 14, 2010, at 3:38 PM, thmsfuller...@gmail.com wrote: > Hello All, > > I tried the sample code from the help. Although '{' is assigned to > 'do', the call syntaxes for 'do' and '{' are not the same ('do' has > ','s, but '{' has line breaks). I guess there is a difference in > parsing the code block of 'do' and the code block of '{'. Could you > please let me know some internal details so that I can understand the > differences? >
{ foo; bar } gets parsed into `{`(foo, bar) as you illustrated below. You can see that in the resulting expression: > e=parse(text="{foo; bar}")[[1]] > attributes(e)=NULL ## remove the original sources > e { foo bar } > .Internal(inspect(e)) @102182578 06 LANGSXP g0c0 [NAM(2)] @10082c9b8 01 SYMSXP g0c0 [MARK,gp=0x4000] "{" @100edfaa0 01 SYMSXP g0c0 [] "foo" @100edfc98 01 SYMSXP g0c0 [] "bar" and in case you are not familiar with the internal representation: > quote(`{`(foo,bar)) { foo bar } > .Internal(inspect(quote(`{`(foo,bar)))) @100f99868 06 LANGSXP g0c0 [] @10082c9b8 01 SYMSXP g0c0 [MARK,gp=0x4000] "{" @100edfaa0 01 SYMSXP g0c0 [] "foo" @100edfc98 01 SYMSXP g0c0 [] "bar" Cheers, Simon >> do=get("{") >> do(x <- 3, y <- 2*x-3, 6-x-y) > [1] 0 >> { > + x <- 3 > + y <- 2*x-3 > + 6-x-y > + } > [1] 0 >> x > [1] 3 >> y > [1] 3 >> > > -- > Tom > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel