diff --git a/References_and_Acknowledgments.html b/References_and_Acknowledgments.html index 5bab925..a4242ad 100644 --- a/References_and_Acknowledgments.html +++ b/References_and_Acknowledgments.html @@ -2,32 +2,26 @@ 8 References and Acknowledgments

8 References and Acknowledgments

Eli Barzliay’s blog post, Writing ‘syntax-case’ Macros, helped me understand many key details and -concepts. It also inspired me to use a "bottom-up" approach. However -he wrote for a specific audience. If you’re not already familiar with -un-hygienic defmacro style macros, it may seem slightly weird to the -extent it’s trying to convince you to change an opinion you don’t -have. I’m writing for people who don’t have any opinion about macros -at all, except maybe that macros seem scary and daunting.

Eli wrote another blog post, +concepts, and inspired me to use a "bottom-up" approach.

Eli wrote another blog post, Dirty -Looking Hygiene, which explains syntax-parameterize. I relied -heavily on that, mostly just updating it since his post was written -before PLT Scheme was renamed to Racket.

Matthew Flatt’s +Looking Hygiene, which explains syntax-parameterize. I +relied heavily on that, mostly just updating it since his post was +written before PLT Scheme was renamed to Racket.

Matthew Flatt’s Composable -and Compilable Macros: You Want it When? explains how Racket handles -compile time vs. run time.

Chapter +and Compilable Macros: You Want it When? (PDF) explains how Racket +handles compile time vs. run time.

Chapter 8 of The Scheme Programming Language by Kent Dybvig -explains syntax-rules and syntax-case. Although -more "formal" in tone, you may find it helpful to read it. You never -know which explanation or examples of something will click for you.

After initially wondering if I was asking the wrong question and -conflating two different issues :), Shriram Krishnamurthi looked at an -early draft and encouraged me to keep going. Sam Tobin-Hochstadt and -Robby Findler also encouraged me. Matthew Flatt showed me how to make -a Scribble interaction print syntax as -"syntax" rather than as "#'". Jay McCarthy helped me -catch some mistakes and confusions. Jon Rafkind pointed out some -problems. Kieron Hardy reported a font issue and some typos.

Finally, I noticed something strange. After writing much of this, when +explains syntax-rules and syntax-case.

Fortifying +Macros (PDF) is the paper by Ryan Culpepper and Matthias Felleisen +introducing syntax-parse.

Shriram Krishnamurthi looked at a very early draft and encouraged me +to keep going. Sam Tobin-Hochstadt and Robby Findler also encouraged +me. Matthew Flatt showed me how to make a Scribble +interaction print syntax as "syntax" rather +than as "#'". Jay McCarthy helped me catch some mistakes and +confusions. Jon Rafkind provided suggestions. Kieron Hardy reported a +font issue and some typos.

Finally, I noticed something strange. After writing much of this, when I returned to some parts of the Racket documentation, I noticed it had -improved since I last read it. Of course, it was the same. I’d +improved since I last read it. Of course, it was the same; I’d changed. It’s interesting how much of what we already know is projected between the lines. My point is, the Racket documentation is very good. The Guide provides helpful examples and diff --git a/index.html b/index.html index 93ad055..3685635 100644 --- a/index.html +++ b/index.html @@ -1,3 +1,3 @@ Fear of Macros

 
\ No newline at end of file +
Copyright (c) 2012 by Greg Hendershott. All rights reserved.
Last updated 2012-11-14 08:55:51
Feedback and corrections are welcome here.

Contents:

    1 Preface

    2 Our plan of attack

    3 Transform!

      3.1 What is a syntax transformer?

      3.2 What’s the input?

      3.3 Actually transforming the input

      3.4 Compile time vs. run time

      3.5 begin-for-syntax

    4 Pattern matching: syntax-case and syntax-rules

      4.1 Pattern variable vs. template—fight!

        4.1.1 with-syntax

        4.1.2 with-syntax*

        4.1.3 format-id

        4.1.4 Another example

      4.2 Making our own struct

      4.3 Using dot notation for nested hash lookups

    5 Syntax parameters

    6 What’s the point of splicing-let?

    7 Robust macros: syntax-parse

      7.1 Error-handling strategies for functions

      7.2 Error-handling strategies for macros

      7.3 Using syntax/parse

    8 References and Acknowledgments

    9 Epilogue

 
\ No newline at end of file diff --git a/index.rkt b/index.rkt index e860969..f440d27 100644 --- a/index.rkt +++ b/index.rkt @@ -1569,45 +1569,41 @@ But for now I'll focus on improving the previous parts. @section{References and Acknowledgments} -Eli Barzliay's blog post, +Eli Barzliay's blog post, @hyperlink["http://blog.racket-lang.org/2011/04/writing-syntax-case-macros.html" "Writing ‘syntax-case’ Macros"], helped me understand many key details and -concepts. It also inspired me to use a "bottom-up" approach. However -he wrote for a specific audience. If you're not already familiar with -un-hygienic defmacro style macros, it may seem slightly weird to the -extent it's trying to convince you to change an opinion you don't -have. I'm writing for people who don't have any opinion about macros -at all, except maybe that macros seem scary and daunting. +concepts, and inspired me to use a "bottom-up" approach. -Eli wrote another blog post, +Eli wrote another blog post, @hyperlink["http://blog.racket-lang.org/2008/02/dirty-looking-hygiene.html" "Dirty -Looking Hygiene"], which explains syntax-parameterize. I relied -heavily on that, mostly just updating it since his post was written -before PLT Scheme was renamed to Racket. +Looking Hygiene"], which explains @racket[syntax-parameterize]. I +relied heavily on that, mostly just updating it since his post was +written before PLT Scheme was renamed to Racket. Matthew Flatt's @hyperlink["http://www.cs.utah.edu/plt/publications/macromod.pdf" "Composable -and Compilable Macros: You Want it When?"] explains how Racket handles -compile time vs. run time. +and Compilable Macros: You Want it When? (PDF)"] explains how Racket +handles compile time vs. run time. @hyperlink["http://www.scheme.com/tspl4/syntax.html#./syntax:h0" "Chapter 8"] of @italic{The Scheme Programming Language} by Kent Dybvig -explains @racket[syntax-rules] and @racket[syntax-case]. Although -more "formal" in tone, you may find it helpful to read it. You never -know which explanation or examples of something will click for you. +explains @racket[syntax-rules] and @racket[syntax-case]. -After initially wondering if I was asking the wrong question and -conflating two different issues :), Shriram Krishnamurthi looked at an -early draft and encouraged me to keep going. Sam Tobin-Hochstadt and -Robby Findler also encouraged me. Matthew Flatt showed me how to make -a Scribble @racket[interaction] print @racket[syntax] as -@racket["syntax"] rather than as @racket["#'"]. Jay McCarthy helped me -catch some mistakes and confusions. Jon Rafkind pointed out some -problems. Kieron Hardy reported a font issue and some typos. +@hyperlink["http://www.ccs.neu.edu/racket/pubs/icfp10-cf.pdf" "Fortifying +Macros (PDF)"] is the paper by Ryan Culpepper and Matthias Felleisen +introducing @racket[syntax-parse]. + +Shriram Krishnamurthi looked at a very early draft and encouraged me +to keep going. Sam Tobin-Hochstadt and Robby Findler also encouraged +me. Matthew Flatt showed me how to make a Scribble +@racket[interaction] print @racket[syntax] as @racket["syntax"] rather +than as @racket["#'"]. Jay McCarthy helped me catch some mistakes and +confusions. Jon Rafkind provided suggestions. Kieron Hardy reported a +font issue and some typos. Finally, I noticed something strange. After writing much of this, when I returned to some parts of the Racket documentation, I noticed it had -improved since I last read it. Of course, it was the same. I'd +improved since I last read it. Of course, it was the same; I'd changed. It's interesting how much of what we already know is projected between the lines. My point is, the Racket documentation is very good. The @italic{Guide} provides helpful examples and diff --git a/make-doc.sh b/make-doc.sh index b5596f0..1af34ef 100755 --- a/make-doc.sh +++ b/make-doc.sh @@ -1,3 +1,3 @@ scribble --htmls ++style gh.css ++xref-in setup/xref load-collections-xref --redirect-main "http://docs.racket-lang.org/" index.rkt racket add-to-head.rkt -cp index/ ./ +cp index/* ./