HOWTO Write Code That Writes Code That Writes Code

Martin Rodgers

Revision History
Revision 0.012002-01-29Revised by: mcr
Converted to a DocBook article. Wrote an intro comparing software. construction to making buildings.
Revision 0.022002-01-30Revised by: mcr
Added a books appendix. Added a links appendix.
Revision 0.032002-02-09Revised by: mcr
Added Zope to the links appendix.
Revision 0.042002-03-07Revised by: mcr
Added Reflections on Trusting Trust to the links appendix.
Revision 0.052002-03-20Revised by: mcr
Added Redirecting redirections.
Revision 0.062002-04-25Revised by: mcr
Add quine stuff to "code that writes code that writes code" section.
Revision 0.072002-06-03Revised by: mcr
Added www.generative-programming.org to the books list. Added www.program-transformation.org to the website list. Added links for SICP and Lisp in small pieces.
Revision 0.082002-07-04Revised by: mcr
Changed article id from "codethatwritescode" to "index". Changed link to HTML version accordingly.
Revision 0.092002-08-28Revised by: mcr
Threw away a whole load of material and downsized the document. Added some new sections to explain a lot more. Phew!
Revision 0.102002-08-29Revised by: mcr
Added further details, links, etc.
Revision 0.112002-09-26Revised by: mcr
Added link to Olin Shiver's "Stylish Lisp programming techniques". Added a reference to define-macro to the intro section on Scheme. Added a small note the macro section - define-macro isn't R5RS. Fixed a bug in define-adder. Fixed a similar bug in define-adder! (oops).

Table of Contents
1. Introduction
1.1. Copyright Information
1.2. Disclaimer
1.3. New Versions
1.4. Credits
1.5. Feedback
1.6. Translations
2. Scheme
3. Quote
4. Eval
5. Backquote
6. Advanced Eval
7. Quines
8. Macros
9. Code that writes code that writes code
10. Conclusion
A. References: books
B. References: links

1. Introduction

1.1. Copyright Information

This document is Copyright (c) 2001, 2002 by Martin Rodgers. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is available at http://www.gnu.org/copyleft/fdl.html

1.2. Disclaimer

No liability for the contents of this documents can be accepted. Use the concepts, examples and other content at your own risk. As this is a new edition of this document, there may be errors and inaccuracies, that may of course be damaging to your system. Proceed with caution, and although this is highly unlikely, the author(s) do not take any responsibility for that.

All copyrights are held by their by their respective owners, unless specifically noted otherwise. Use of a term in this document should not be regarded as affecting the validity of any trademark or service mark.

Naming of particular products or brands should not be seen as endorsements.

You are strongly recommended to take a backup of your system before major installation and backups at regular intervals.

1.3. New Versions

This is a work in progress.

The latest version number of this document can be found in the HOWTO section of my homepage.

The newest version of this HOWTO will always be made available on my website, in a variety of formats:

1.4. Credits

In this version I have the pleasure of acknowledging: nobody (yet).

1.5. Feedback

Feedback is most certainly welcome for this document. Without your submissions and input, this document wouldn't exist. Please send your additions, comments and criticisms to the following email address : .

1.6. Translations

No translations exist at this point in time.