Re: [xml-dev] Here’s why you should be creating two levels of syntax

From
Ihe Onwuka <>
To
"Costello, Roger L." <>
Date
2016-08-04T19:29:39Z
ID
<CALfs7+yyVNcJDKBT=smun3=YJiMvO9R=>
Thread
Re: [xml-dev] Here’s why you should be creating two levels of syntax


On Thu, Aug 4, 2016 at 2:45 PM, Costello, Roger L. <[email protected]> wrote:

Hi Folks,

Would you provide a use case for creating two levels of syntax please?

I will provide two use cases, one from Lisp and the other from XML:Books.

Use Case #1: Recall from my previous message that the Lisp language defines two levels of syntax: s-expressions and Lisp forms. A list that is an s-expression may contain any elements, whereas a list that is a Lisp form must start with a symbol (This is a bit simplified – see John Cowan’s post). Now here’s why the Lisp folks created two levels of syntax: Lisp has functions and macros. The arguments to a function must be Lisp forms, which are evaluated before calling the function. Conversely, the arguments to a macro only have to be s-expressions, the arguments are not evaluated before calling the macro; the macro assigns a meaning to the s-expression (very neat!). (I realize this explanation is a bit terse. Hopefully, however, it gives you some feel for why two levels of syntax are important/needed in Lisp.)



The reason LISP/Scheme has special forms is because certain procedures wouldn't work if they followed the evaluation rules for s-expressions. The classic example is an if function because you don't want all it's arguments  to be evaluated before it is invoked. 

What you are exemplifying in this thread doesn't seem to follow that line of reasoning.