A collection of large applications and programs using macros

I am very interested in Macros and just beginning to understand its true power. Please help me make a lot of use of macros.

So far I have these constructions:

Matching pattern:

Andrew Wright and Bruce Oak. Pattern matching for Schemes, 1995

Prologue Relations:

Dorait the Sitars. Programming in schelog. http://www.ccs.neu.edu/home/dorai/schelog/schelog.html

Daniel P. Friedman, William E. Bird, and Oleg Kiselev. Reasoned Schemer. MIT Press July 2005

Matthias Felleisen. transliteration Prologue in the scheme. Technical Report 182, Indiana University, 1985

Expandable Contours:

Sebastian Egner. Rapid understanding of the circuit: design of the SRFI-42. In the Workshop on Pattern and Functional Programming, pages 13-26, September 2005.

Olin is trembling. Anatomy of the cycle: a history of coverage and control. In International Conference on Functional Programming, pages 2-14, 2005.

Class Systems:

Plt. PLT MzLib: A Guide to Libraries. Technical Report PLT-TR2006-4-v352, PLT Scheme Inc., 2006. http://www.plt-scheme.org/techreports/

Eli Barzilai. Scam. http://www.barzilay.org/Swindle .

Component systems:

Ryan Culpepper, Scott Owens and Matthew Flatt. Syntactic abstraction in component interfaces. At the International Conference on Programming and Component Engineering, pages 373-388, 2005

Checking Software Contracts

Matthew Flatt and Matthias Felleisen. Units: Cool modules for HOT languages. At the ACM SIGPLAN conference. Programming language Implementation, pages 236-248, 1998

Oscar Waddell and R. Kent Dybvig. Extending the scope of syntax abstraction. In the Symposium on the Principles of Programming Languages, pages 203-215, 199

Parser Generators

Scott Owens, Matthew Flatt, Olin Shiver, and Benjamin MacMullan. lexer and parser generators in the Scheme. In Workshop on Pattern and Functional Programming, pages 41-52, September 2004.

Tools for engineering semantics:

Matthias Fellaysen, Robert Bruce Findler, and Matthew Flatt. Semantics Engineering with PLT Redex. MIT Press, August 2009.

Compiler Transformation Specifications:

Dipanvita Sarkar, Oscar Waddell and R. Kent Dybvig. Nanopass framework for training compilers. Journal of Functional Programming, 15 (5): 653-667, September 2005. An Educational Pearl.

New execution forms

Servlets with serializable sequels Greg Pettion, John Clements, Joe Marshall, Sriram Krishnamurti and Matthias Fellesin. Continuations from the generalized inspection stack. At the International Functional Programming Conference, pages216-227, 2005.

Theoretical Evidence System

Sebastian Egner. The pursuit of understanding the circuit: design of the SRFI-42. In a workshop on circuit design and functional programming, pp. 13-26, September 2005.

Base language extensions with types

Sam Tobin-Hochstadt and Matthias Fellesiny. Design and implementation of a typed scheme. In Symposium on the Principles of Programming Languages, pages 395-406, 2008.

Laziness

Eli Barzilai and John Clements. Laziness without any difficult work: combining lazy and strict languages ​​for learning. In functional and declarative programming in education, pages 9-13, 2005.

Functional reactivity

Gregory H. Cooper and Sriram Krishnamurti. Embedding dynamic data stream in call language by value. At the European Programming Symposium, 2006




Link:

Collected from The Story of Ryan Culpepper

+57
macros lisp scheme racket hygiene
Dec 28 '10 at 19:20
source share
8 answers

Culpepper and Felleisen, Firming Macros, ICFP 2010

Culpepper, Tobin-Hochstadt and Felleisen, Advanced Macrology and Typed Scheme Implementation, Schema Workshop 2007

Flatt, Findler, Felleisen, Scheme with Classes, Mixins, and Traits, APLAS 2006

Hermann Meunier, Improving Static Analysis of Embedded Languages ​​with Partial Evaluation, ICFP 2004

+8
Dec 29 '10 at 23:12
source share
β€” -

Shivers, Carlstrom, Gasbichler, and Sperber (1994 et seq.) Scsh Reference Manual .

It has many good examples of using macros to embed mini-languages ​​in a Schema. He offered me a technique for defining macros that implicitly quote their argument. Look at the use of process forms, regular expressions, and awk-like mini-languages. Scsh is my recommendation as a starting point for playing with macros.

Hilsdale and Friedman (2000) Writing macros in the style of continuation of the passage .

Shows how macros of weak syntax rules can be made powerful using the continuation style. Gives a lot of examples.

Flatt, Culpepper, Darais, and Findler (represented) Macros that work together - compile-time bindings, partial extensions, and definition contexts .

Provides overview and semantics for approaching macros in the Racket / PLT schema. Not many examples, but I think there is something in the document that you are looking for.

+6
Feb 09 '11 at 7:00
source share

ReadScheme! Be sure to check out the extensive bibliography on ReadScheme.

http://library.readscheme.org/page3.html

One example that I think you missed is embedding SQL syntax in Scheme. http://repository.readscheme.org/ftp/papers/sw2002/schemeunit-schemeql.pdf

Macros are also used to record media for automatic testing.

+4
Aug 10 '11 at 13:11
source share

Not a diagram, but a somewhat similar Lisp dialect with a very wide use of macros: http://www.meta-alternative.net/mbase.html

There are macros that implement various types of pattern matching, lists, various parser generators (including the PEG / Packrat implementation), built-in Prolog, output of ADT visitors (for example, scrap of your template in Haskell), extensible syntax macros, Hindley-Milner Scheme-like syntax macro and many others. Parts of this functionality can potentially be transferred to the Scheme; other parts need an extended macro system with an explicit context.

+3
09 Feb 2018-11-11T00:
source share

I would add to the list the "Standard Schema Library". See the boot-9.scm in the guile distribution. Many of the most commonly used forms of schema are case , and etc. - defined there as macros.

+2
Mar 21 '12 at 18:13
source share

This is not particularly accurate, since it is distributed over a large number of very old publications, most of which I have never read, but large fragments of the IIRC common system Lisp Object and Meta- Object protocol * maybe; are located; or were originally built with macros ...

* that make up IMHO, by far the most advanced OO system programming ever seen

0
Feb 09 '11 at 6:40
source share

Check out one of my implementations of the selected REST API: the Slack api client, which is not written in the Scheme, but it is in Racket.

octotep / racket-slack-api

0
Jun 07 '17 at 21:33
source share



All Articles