Re: [Cheetahtemplate-discuss] FEEDBACK WANTED: syntax issues
Brought to you by:
rtyler,
tavis_rudd
From: Ian B. <ia...@co...> - 2001-08-25 22:08:06
|
ir...@se... (Mike Orr) wrote: > On Sat, Aug 25, 2001 at 02:22:16PM -0500, Ian Bicking wrote: > > > Cheetah allows you to use #blocks, to do it the way you > > > like using #data / #define, or to use #macros if you want > > > to do something really weird ;-) > > > > Aren't #macros also compile-time? > > They are, but the macro body can contain $placeholders and > runtime directives like #if and #for ... these will be inserted > in the template at compile time, and then later at runtime they'll > be evaluated. Sounds like the bastard child of the function. It can't be used recursively -- you can't even call other macros inside macros. That doesn't scale well -- if you make a good macro (function) you should be able to use it wherever, including in other macros. It's just cpp, which isn't a language, and whose functions (#defined) are dangerous. E.g., the problems with #define mul(a, b) a*b which does add(1+2, 3) == 7. Lisp uses this sort of thing to greater effect, but only because its syntax is reflective in a way neither C nor Cheetah are. And its macros are recursive. > > The compile-time/run-time thing is just confusing me. I'm > > starting to agree with Chuck about compile-time anything -- I can't > > really tell what's what, and it makes things unpredictable (i.e., > > surprising, i.e., bad). > > We're finding more and more reasons to throw the compile step out the > window and just start from scratch at each fill. But I don't see that > happening any time soon. Compiling as an optimization is safe and good. It *should* be entirely equivalent to doing it all at runtime, just faster. But Cheetah is doing more than compiling. It's doing a two-step evaluation, and I think that is the problem. Compiling is just translation, but there's real execution going on in the compile step. Maybe I'm being a language snob and stirring everything up, but really... the snobbish languages are better :) Ian |