by Kevin Albrecht
A bibliography of reading material on Lisps (Common Lisp, Scheme, Clojure, etc.) and related research. Sometimes only quite vaguely related...
I prefer resources that are broadly applicable over ones that are highly specific, which means that I am heavy on things that teach you ideas and concepts over technologies. Technologies are transitory, while concepts will be with you forever.
- A Lisp Bibliography
- Meta Lists
- In Defense of Programming Languages
- Monads
- Concurrency
- Lisp Implementation
Note: Table of contents generated by Atom's markdown-toc package. Will automatically update on save if the package is installed.
- 3 - Must read for all developers.
- 2 - Every developer interested in the topic should see/read it.
- 1 - Could be useful for developers interested in the topic.
- Move relevant content from here: https://docs.google.com/document/d/1A0EVj7f4DUTjbFs4OLqkPJe-WZKG-NvIn5CTgc2F1lI/edit?hl=sv#heading=h.t43faihoaeuo
- Matt Might's Articles on Scheme, Lisp, etc
- Clojure the Next Level
- Rich Hickey’s Greatest Hits
- The greatest videos from Rich Hickey, creator or Clojure and all-around programmer-philosopher.
- Free Programming Books
- List of legal and free programming books.
- Papers We Love
- Repository of academic computer science papers and a community who loves reading them.
- JS Must Watch
- Curated list of the best JS videos over the years.
- Read Scheme: Bibliography of Scheme-related Research
- "Why Does The World Need More Programming Languages?" by Chris Dannen
- "The Hundred-Year Language" by Paul Graham
- "Why we need even more programming languages" By Neil McAllister
- Upgrading existing, popular languages to support new features is a lot harder than you might think
- "Programming Language Theory and its Implementation" by Michael J C Gordon (PDF) or (Amazon)
- An interesting and thorough overview of the Lambda Calculus. See Section II, Chapters 4-8.
- "Are We There Yet?" by Rich Hickey (Presentation) -- 3/3
- Philosophical discussion of identity/state/time, and a practical discussion on MVCC and STM.
Lisps that are influenced by CSP:
- Clojure's core.async:
Go's Concurrency Patterns:
- http://blog.golang.org/share-memory-by-communicating
- http://blog.golang.org/go-concurrency-patterns-timing-out-and
- http://blog.golang.org/pipelines
- http://blog.golang.org/context
- "Implementing Lisp" at c2.com
- "Three Implementation Models for Scheme" by R. Kent Dybvig (pdf)
- Describes two interesting interpreters/compilers: the heap based model is the easiest to implement, but the stack based is more efficient. Cover
- "A Micro-Manual for Lisp - Not the Whole Truth" by John McCarthy (pdf)
- Two page paper describing a "complete" Lisp interpreter for a pure Lisp.
- "Lisp in Small Pieces" by Christian Queinnec (Amazon)
- The ultimate guide to metacircular interpreters, and compilers.
- “Structure and Interpretation of Computer Programs” (web, video lectures, Kindle)
- "First-Class Macros" by Matt Might
- Comprehensive explanation of first-class macros and their effect on the implementation of the interpreter, with special emphasis on a metacircular interpreters.
- "Clojure and Hygienic Macros" by Marek Kubica
- Explanation of how Clojure handles hygiene in its macros through namespacing.
- "Scheme from Scratch" by Peter Michaux: http://peter.michaux.ca/articles/scheme-from-scratch-introduction
- Chicken Scheme
- Clojure???
- http://matt.might.net/articles/compiling-scheme-to-c/
- "A little bit of CPS, a few thunks, and a trampoline" by Chris Frisz (Video): http://www.chrisfrisz.com/slides/clojure-tco.pdf
- Short presentation on how TCO was implemented on top of Clojure
- "CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A." by Henry Baker: http://home.pipeline.com/~hbaker1/CheneyMTA.html
- Describes a technique to implement full tail recursion when compiling from Scheme into C.
- The Scheme2JS compiler and especially its trampoline implementation has been presented: http://www-sop.inria.fr/indes/scheme2js/files/tfp2007.pdf
- "The 90 Minute Scheme to C compiler" by Marc Feeley: http://www.iro.umontreal.ca/~boucherd/mslug/meetings/20041020/minutes-en.html
- Supports fully optimized proper tail calls, continuations, and (of course) full closures, using two important compilation techniques for functional languages: closure conversion and CPS-conversion
- http://www.cs.indiana.edu/~dyb/papers/3imp.pdf
- "Implementation Strategies for First-Class Continuations" by William D. Clinger, Anne H. Hartheimer, Eric M. Ost
- Description of Scheme2Js's call/cc implementation
Also referenced elsewhere in this bibliography
- "Three Implementation Models for Scheme" by R. Kent Dybvig
- Chapter 3 of "Lisp in Small Pieces" by Christian Queinnec