From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,703c4f68db81387d X-Google-Thread: 109fba,703c4f68db81387d X-Google-Thread: 115aec,703c4f68db81387d X-Google-Thread: f43e6,703c4f68db81387d X-Google-Attributes: gid103376,gid109fba,gid115aec,gidf43e6,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news4.google.com!news.glorb.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local01.nntp.dca.giganews.com!nntp.comcast.com!news.comcast.com.POSTED!not-for-mail NNTP-Posting-Date: Mon, 28 Mar 2005 00:48:12 -0600 From: "Paul Mensonides" Newsgroups: comp.lang.ada,comp.lang.c++,comp.realtime,comp.software-eng References: <4229bad9$0$1019$afc38c87@news.optusnet.com.au> <1110032222.447846.167060@g14g2000cwa.googlegroups.com> <871xau9nlh.fsf@insalien.org> <3SjWd.103128$Vf.3969241@news000.worldonline.dk> <87r7iu85lf.fsf@insalien.org> <1110052142.832650@athnrd02> <1110284070.410136.205090@o13g2000cwo.googlegroups.com> <395uqaF5rhu2mU1@individual.net> <1111607633.301232.62490@z14g2000cwz.googlegroups.com> <1111628011.160315.134740@o13g2000cwo.googlegroups.com> <1111794348.874993.298340@g14g2000cwa.googlegroups.com> <1111827755.497376.232760@z14g2000cwz.googlegroups.com> Subject: Re: Teaching new tricks to an old dog (C++ -->Ada) Date: Sun, 27 Mar 2005 22:48:07 -0800 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.2527 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2527 X-RFC2646: Format=Flowed; Response Message-ID: NNTP-Posting-Host: 24.17.165.235 X-Trace: sv3-JP5FksjCI4RZUgKyI47UGI8ycYHq+kI37PWSufm3cH+rHraC7Ft82RCLZaj30tlJtcZ62Aj7/AhTMi0!4iFPuPxOvEJgp/HCNVMEN0LPd03bt7M9emoQP6yOCBMplAx0nlpzmxRqoCbOrQ== X-Complaints-To: abuse@comcast.net X-DMCA-Complaints-To: dmca@comcast.net X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.32 Xref: g2news1.google.com comp.lang.ada:10057 comp.lang.c++:47566 comp.realtime:1765 comp.software-eng:5396 Date: 2005-03-27T22:48:07-08:00 List-Id: Hyman Rosen wrote: > Jerry Coffin wrote: >> I see. So what is it that (you incorrectly believe) the C >> preprocessor can do that a Lisp macro can't do? > > Can Lisp macros manipulate the text of the macro arguments? > For example, > > #define cat1(a, b) a ## b > #define cat2(a, b) cat1(a, b) > > #define A x > #define B y > cat1(A, B) // produces AB > cat2(A, B) // produces xy Lisp macros cannot produce partial syntax either, whereas C/C++ macros can (e.g. on macro can create a '{' and another separate invocation can create the closing '}'). In the general case (obviously) Lisp (and Scheme) macros are far more powerful than C/C++ macros. As an aside, given suitable input, it is possible to create a compiler or interpreter with the C/C++ preprocessor--with a relatively small number of macros. Jerry is correct to say that they do similar things--they parametize code with code. The main differences is that in Lisp (etc.) their are syntactic constraints (which is both good and bad in various scenarios) and that Lisp executes in an environment (even when compiled) that can interpret code created at runtime. Regards, Paul Mensonides