OMG! I'm so excited to announce that through my work at @spritelyinst we've published A Scheme Primer:
Direct link:

This document manages to serve two purposes:
- As a quick skim, it's a reasonable intro to "how to start programming with Scheme with no prior experience". Hey, tutorials are useful!
- But also, in less than 30 pages we manage to compress a TON of computer science ideas in a way that I think is really, really approachable.

The document ends with a code example, and full walkthrough, of a Scheme interpreter written in Scheme... in a mere 30 lines of code! It's like 3/4 of Structure and Interpretation of Computer Programs compressed into a document you could read in an afternoon!

@spritelyinst so much nice feedback here, on and on reddit today! Sadly we didn't get onto the orange site, a blessing and a curse I guess either way with that one. I woke up very happy though reading all this. Thank you everyone! You really made my day, I hope the Scheme Primer proves useful to you or someone you know!

@cwebber @spritelyinst Well done! I’ve been willing to have such a document for a long time!

@civodul @spritelyinst The .info export reads really nice in emacs:

I've been wondering whether a scheme-primer package installs the info version might be worthwhile to have in Guix. What do you think?

@cwebber @spritelyinst It would be useful IMO, and in good company with the ‘sicp’ package!

@cwebber @spritelyinst could you upload a version in DRM-free .epub format somewhere easy for me to pay gobs of money for it? Maybe idk

@pho4cexa @cwebber @spritelyinst Actually it is great to have worthwhile reading material in epub format. A few years ago a hernia put me on my back for a month or two and a simple light little e-ink reader was a great help. But to make use of it, .pdfs were not helpful, I needed well-formatted .epubs.

@bsmall2 @cwebber @spritelyinst yeah i wasn't being facetious. a nicely formatted epub version would be super convenient, and if there were a price attached i'd probably pay it happily to support this great project

@pho4cexa @cwebber @spritelyinst I guessed that you were being light about a important idea and a decent request. I'd probably pay for an .epub too. When I couldn't move much I was tempted to pay for Beautiful Racket but couldn't find an .epub for reading off-line while lying on the back over tatami mats.

@pho4cexa @spritelyinst Interesting idea! I'll prompt my co-founder about that. is a nice idea.

@cwebber @spritelyinst I just printed out the 28 pages and hope to read them all over the next day or so. During your #FossAndCrafts talk people in the chat mentioned that the curly brace {} infix notation didn't work in Racket. Racketeers have a double dot notation that confused me for a long time while trying to read their contracts.
{ 1 + 2 } becomes ( 1 . + . 2 ); just in case someone wants to get distracted by that Racket detail (Racktail?) while learning from your tutorial!

@bsmall2 @spritelyinst @cwebber It's great - although I haven't made it all the way to the end yet. Will set aside some time this weekend.

For startes, I love all the Douglas Adams references.

@acousticmirror @spritelyinst @cwebber If the target is classrooms with diverse populations it's safer to avoid pop culture refs. The Gilligan's Island refs in Learning Perl distracted me. I showed parts of The Wizard of Oz in classes. A student wrote 'teachers shouldn't subject captives to their own tastes.' Seeing the same kid years later made me think he was just at a bad time earlier. But an engaged one said similar stuff of a documentary he himself liked. I didn't even enjoy Oz much then!

@bsmall2 @spritelyinst @cwebber This might be true, but in this Scheme Primer, specifically, the references are not "in your way": they're there for whoever "gets" them. For anyone else, they're just examples of integers (42) or strings "Pangalactic Gargleblaster". So I don't believe they would prove distracting at all.

@acousticmirror @spritelyinst @cwebber Yes, I wasn't writing to criticize the PrimerI haven't read yet and that may target an audience different from the one I mentioned. It's just that this discussion gave me a chance to remember Learning Perl. And, by coincidence I stumbled on the book with the Henry Sweet quote "be dull and commonplace" that has been bothering me for years. But the quote is directed at the base materials, not what people do with them in the classroom, or various docs, I think

@acousticmirror @spritelyinst @cwebber Learning Perl was on my mind for another reason, cut from the earlier reply: Christine's comment about footnotes. I like footnotes too, Learning Perl said that only publisher intervention kept them from writing the whole book in footnotes. Animosity toward footnotes in college was the backlash to Learning Perl 😆 ! In the 90's, I decided to learn programming for no particular reason and struggled with C. #LearningPerl got me doing worthwhile things.

@bsmall2 @spritelyinst Ha yeah, there are some differences with default Racket. you might need to set eg " r5rs" to get the same behavior in some sections. In particular, Racket doesn't support one-legged ifs! One of the footnotes talks about this.

@cwebber @spritelyinst Yes, the comments about if and when help me. Racket surprised me by refusing one-legged `if: stressful before finding `when. fn:18 is about this but gets cut off right on p.19 of my pdf pages. I went back to the html version to read the whole fn: and then was able to find the rest of it on p.20. Org should leave the code block border open at the bottom to indicate it continues? Or maybe footnotes should have a subtle line to show they are not part flow directly above them?

@bsmall2 @spritelyinst Ah yeah... the ODT's handling of footnotes isn't super great. I hope to improve that but I'll have to mess with the stylesheet, currently just using the default org-mode one

@cwebber @spritelyinst Stylesheet messing sounds involved, especially on your day off. I was hoping it was something simple. Does Scribble do any better? For a while I enjoyed Scribble's index and bibliography stuff. After not using it every day getting back into it takes so much effort there's not much energy left for actually writing. Maybe there is a DRY technique that would let one big document generate a web page, a print page, a slideshow, an epub.. An org technique or Pollen approach?

opinion by relatively experienced programmer for whom this was the first serious view at a lisp 

@cwebber I've read through the whole thing and I have some criticisms, but in general thanks for creating this, it was definitely educational!

First some small editorial things: is one place you say "square root" where I believe you mean "square", and one of the "eval" examples seems to be missing a "'()" as the second argument.

As for didactic value the whole thing is written quite well, with only two problems imo: 1. some of the later examples are underexplained -- this is kinda ok if you want readers to figure out what they are about themselves, but this should probably be specified explicitly and probably clashes with the goal of this being accessible for inexperienced programmers, 2. the connection between lists and quoting is present implicitly but never explored explicitly -- I don't know much about it, but I suspect it might be too involved of a topic for the main text, so maybe mentioning it in a footnote with a link to further reading would be good?

As for Scheme itself it looks cool, but I'm unable to treat any language that is not strongly statically typed seriously. D; Also pattern matching not being a build in feature feels weird, but I respect that it can be added easily. (I also understand and respect the decisions behind typing, I just disagree with them. >:)

Once again thanks for writing this, if I ever need to point someone to a quick primer about Scheme this is an invaluable resource!


@cwebber - utterly no clue how to DM you, but I think you might want to talk to this guy about your experience podcasting:

@cwebber @spritelyinst I thought that "bcom" has always been an abbreviation for "become" - does it stand for something? "Bestowed Capability for Object Mutation"? :blobcat:

@Parnikkapore @spritelyinst Haha that's a great retecon name. It's just a shorthand for "become", you got it right the first time :)

@cwebber @spritelyinst Good work. The essay is very interesting. I'm more likely to use Scheme now.

@cwebber @spritelyinst Yay, an alternative to SICP I can use that's (presumably!) not written by an Epstein apologist :D!

Sign in to participate in the conversation

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!