Skip to main content
copy-editing, mostly. Thanks for the expansion!
Source Link

Take a look at this posting by Matthias Felleisen to the LL1 discuss list in 2002. In it heHe suggests three main uses for macros:

  1. Data sublanguages: I can write simple looking-looking expressions and create complex nested lists/arrays/tables with quote, unquote, etc. neatly dressed up with macros. 2. Binding constructs: I can introduce new binding constructs with macros. That helps me get rid of lambda'slambdas and with placingplace things closer together that belong together. 3. Evaluation reordering: I can introduce constructs that delay/postpone the evaluation of expressions as needed. Think of loops, new conditionals, delay/force, etc. [Note: In Haskell or any lazy language, you don't need thatthis one is unnecessary.]

Take a look at this posting by Matthias Felleisen to the LL1 discuss list in 2002. In it he suggests three main uses for macros:

  1. Data sublanguages: I can write simple looking expressions and create complex nested lists/arrays/tables with quote, unquote etc neatly dressed up with macros. 2. Binding constructs: I can introduce new binding constructs with macros. That helps me get rid of lambda's and with placing things closer together that belong together. 3. Evaluation reordering: I can introduce constructs that delay/postpone the evaluation of expressions as needed. Think of loops, new conditionals, delay/force, etc. [Note: In Haskell, you don't need that one.]

Take a look at this posting by Matthias Felleisen to the LL1 discuss list in 2002. He suggests three main uses for macros:

  1. Data sublanguages: I can write simple-looking expressions and create complex nested lists/arrays/tables with quote, unquote, etc. neatly dressed up with macros. 2. Binding constructs: I can introduce new binding constructs with macros. That helps me get rid of lambdas and place things closer together that belong together. 3. Evaluation reordering: I can introduce constructs that delay/postpone the evaluation of expressions as needed. Think of loops, new conditionals, delay/force, etc. [Note: In Haskell or any lazy language, this one is unnecessary.]
Inlined some content from the linked mailing list archive post.
Source Link
Jeremy
  • 4.8k
  • 1
  • 27
  • 40

Take a look at this posting by Matthias Felleisen to the LL1 discuss list fromin 2002. In it, Matthias Felleisen he suggests three main uses for macros:

  1. Data Sublanguages
  2. Binding Constructs
  3. Evaluation Reordering
  1. Data sublanguages: I can write simple looking expressions and create complex nested lists/arrays/tables with quote, unquote etc neatly dressed up with macros. 2. Binding constructs: I can introduce new binding constructs with macros. That helps me get rid of lambda's and with placing things closer together that belong together. 3. Evaluation reordering: I can introduce constructs that delay/postpone the evaluation of expressions as needed. Think of loops, new conditionals, delay/force, etc. [Note: In Haskell, you don't need that one.]

Take a look at this posting to the LL1 discuss list from 2002. In it, Matthias Felleisen suggests three main uses for macros:

  1. Data Sublanguages
  2. Binding Constructs
  3. Evaluation Reordering

Take a look at this posting by Matthias Felleisen to the LL1 discuss list in 2002. In it he suggests three main uses for macros:

  1. Data sublanguages: I can write simple looking expressions and create complex nested lists/arrays/tables with quote, unquote etc neatly dressed up with macros. 2. Binding constructs: I can introduce new binding constructs with macros. That helps me get rid of lambda's and with placing things closer together that belong together. 3. Evaluation reordering: I can introduce constructs that delay/postpone the evaluation of expressions as needed. Think of loops, new conditionals, delay/force, etc. [Note: In Haskell, you don't need that one.]
Source Link

Take a look at this posting to the LL1 discuss list from 2002. In it, Matthias Felleisen suggests three main uses for macros:

  1. Data Sublanguages
  2. Binding Constructs
  3. Evaluation Reordering