> From: david nicol <[EMAIL PROTECTED]> > Date: 15 Nov 2002 18:56:35 -0600 >
I don't know if you haven't been paying attention, or you're summarizing what's happened. I'll assume the former. Forgive me if I've misunderstood you. > > 1: string cat is an old and reliable horsehide drum. I've been > doing C programming recently, where you can concat two literal > strings by having no other language tokens between them. Really. > That's the real basis for repeating the suggestion of juxtaposition > as a string joining operator. Syntactic arguments can all be deflated > by retreating what gets recognized as a string juxtaposition to the > point where it is clear that other things are happenind when other > things are meant to happen. Besides, there's always join('',...). > If you're saying that juxtaposition should be string cat, see Larry's post on the subject. If you're saying that string I<literal> juxtaposition should concatenate, that's more sane, but why if we already have a cat? If you're saying juxtaposition is bad, good for you. > > 2: deprecating bitwise ops. I've also been working with C++ recently > where the > bitwise ops, particularly shift-left, were completely overrun and are > rarely missed. > Multiple dispatch means the same syntax can mean completely different > things. A > more perlish solution to the situation might be, since bitwise ops are > used rarely, to > explicitly bring them in with a pragma. Bitwise ops in their traditional form are depricated. They're replaced by I-don't-know-what-godawful-symbol (I think .& and .|, but I don't remember well). The | and & are junction constructors now (which I<I> think is fantastic). > { > use bitwiseops; > ... > } > > 3: I propose "means" as a postfix macro indicator. Macros are not > allowed to alter > the blocking structure, theymust be block-sane (like Lisp, unlike C). > > Tokens on both sides are the pieces that get replaced. Tokens and other > syntax on the > left that does not appear on the right is the pattern that will get > matched to invoke the > macro. The right hand side guides the rewriting. > No reserved begin and end markers are required because of the blocking > sanity > requirement. For example > > for( initialize ; test ; increment ) body > means > {initialize ; while (test) {body ; increment }} > ; Ummm... why? Why not just grammar-munge or define a sub? FYI, this macro thing has been discussed before, and failed to reach a conclusion. People wanted the power of Lisp macros, but found it would be hard to do because Perl has so much more structural complexity than Lisp. C-like-macros (as this is) don't give a big advantage in a spicy language like Perl. That is, unless you can come up with a good advantage.... Luke