Stefan pushed to branch report/scheme-2017 at Stefan / Typer
Commits: 0b4fd757 by Stefan Monnier at 2017-05-19T16:07:31-04:00 -
- - - - -
1 changed file:
- paper.tex
Changes:
===================================== paper.tex ===================================== --- a/paper.tex +++ b/paper.tex @@ -186,6 +186,93 @@ knowing what role they will play.
\TODO{Cite \cite{Culpepper10, Burmako13}}
+\section{New Introduction} + +The defining feature of languages from the Lisp family of languages has been +their exclusive reliance on a very simple and regular base syntax, basically +composed of atomic elements like symbols, strings, and numbers, and +parenthesized subtrees. While this limitations is what makes Lisp +unpalatable to some programmers, it is also the fundamental element that +gives Lisp its unequaled power for metaprogramming. + +Attempts to add comparable macro systems to languages with a richer syntax +invariably face the need to introduce a lot of complexity. Some of that +complexity comes from the need to expose how that richer syntax gets mapped +to some data representation. Some comes from the presence of various +syntactic categories (such as expressions, instructions, types annotations, +or declarations) which not only makes the macro system more complex in +itself but can also make it less convenient to use because the macro's +argument might end up parsed using the ``wrong'' syntactic category. + +In Typer we wanted to benefit from a Lisp-style simple yet all-powerful +macro system, but without giving up on the more traditional infix notation. +Most language from the Lisp family use various ad-hoc exceptions to (which +you might call extensions of) the base syntax, such the use of the +traditional `\texttt{`}', and `\texttt{,}' prefix symbols for +quasi-quoting, the use of ``\textsl{var}:\textsl{syntaxclass}'' shorthand +in Racket's \texttt{syntax-parse}, or the use of \texttt{{}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \section{Introduction}
Almost all programming languages support one form or another of
View it on GitLab: https://gitlab.com/monnier/typer/commit/0b4fd757ccf5065df88794a6d43596c610eb...
--- View it on GitLab: https://gitlab.com/monnier/typer/commit/0b4fd757ccf5065df88794a6d43596c610eb... You're receiving this email because of your account on gitlab.com.