I accidentally a scheme
A playful blog post about “accidentally” creating a Scheme-like language prompts exchanges on what truly counts as Scheme, touching on Greenspun’s rule and JavaScript’s origins as a would‑be in‑browser Scheme constrained by marketing and syntax decisions. Commenters unpack the meme-based, verb-less title for readers unfamiliar with internet slang, while also sharing resources, anecdotes, and opinions on learning and using various Lisp dialects such as Common Lisp, Scheme, Clojure, Janet, and Racket. The thread highlights both the conceptual power and cultural quirks of Lisp-family languages, from macro systems and garbage collection to the joy (and occasional pain) of writing compilers and interpreters for fun.
Title, Memes, and Deliberate Bad Grammar
- Many comments ask about the missing verb in “I accidentally a scheme.”
- Others explain it as an old internet meme (“I accidentally [missing verb] X”) and connect it to similar memes (“one does not simply…”, LOLcat style).
- Several ESL speakers find this usage confusing or irritating; others argue it signals a playful, informal tone and is intentional wordplay, not a mistake.
- Some dissect it linguistically (omitted verb, adverb-as-verb joke, garden-path effect).
What Counts as a Scheme (and JavaScript’s Relationship)
- Debate over whether JavaScript is “a Scheme,” “Scheme-influenced,” or not Scheme at all.
- One side says Scheme is well-defined (via its reports), so early JS doesn’t qualify.
- Others note respected language designers have called JS a Scheme, and argue taxonomy is fuzzy and somewhat vacuous.
- Historical anecdotes: JS was initially intended as Scheme-in-a-browser, then altered by management and marketing; described as “Lisp in Java clothing.”
- Greenspun’s rule is invoked: complex systems/DSLs tend to “accidentally a Scheme” over time.
S-Types and S-Expressions
- A commenter recalls obscure “S-types” from a research internship: essentially well-specified S-expressions used as a data interchange format.
- Another links this to standardized S-expression syntax for cryptographic systems (SPKI/SDSI); surprised the spec has been revived.
Learning and Using Lisp
- Strong enthusiasm for learning a Lisp; many say Lisp programmers seem to have more fun.
- Recommendations:
- Common Lisp: fast, mature, powerful tooling.
- Clojure: good job prospects; teaches immutability and elegant composition; puzzle sites praised.
- Racket: cited as especially enjoyable.
- Janet: lightweight, embeddable; fun community, but lacks traditional cons cells, so feels less “lispy” to some.
- Multiple people recommend SICP and its lectures.
- “Write your own Lisp” projects (like MAL) are suggested as a learning path, but others caution that inventing your own dialect in isolation can limit understanding of mainstream Lisp culture and concepts.
Implementation Details, GC, and Data Structures
- Discussion of REPLs, image-based development, and restarts as core parts of the “fun” Lisp experience.
- Some dislike Common Lisp’s image/distribution model; others work around it via source-driven workflows.
- Janet’s array/tuple focus prompts a linked-list vs array performance debate; some argue linked lists are rarely the right answer, others emphasize problem-dependent trade-offs.
- Garbage collectors are briefly discussed: one commenter is broadly hostile to GC, others mention interest in alternative GCs (e.g., Whiffle) and testing GCs in other projects.
Writing Style of the Linked Article
- Several praise the essay’s prose as playful, dense, and “pompous in a good way.”
- Some note this style is delightful for blogs but would be poor for technical documentation.