this post was submitted on 27 Nov 2023
1 points (100.0% liked)
Lisp
53 readers
3 users here now
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I was a "lab assistant" one semester so I got to see first hand people learning Scheme. Some people really get messed up by all the parenthesis which I'm sure detracted from their experience. Therefore if you go this route, I would suggest first spending some time with him learning how to setup and use a smart code editor with parenthesis matching, sexp indentation, sexp motion commands, etc. These are of course useful for any language but critical for Scheme programming. It probably didn't help that (at the time at least) most scheme implementations had suboptimal error messages (for example, they don't have line/column numbers).
Yeah I went through setting up DrRacket and stuff like that when I worked through Scheme the first time around, I'll know what to show him. The Little Schemer uses functions that aren't really in Scheme, like (atom?)
Yeah "atom?" doesn't appear in r7rs. You could probably get away with (not (pair? x)) [[ unless '() isn't an atom - its been a while! ]]
Hopefully there wouldn't be too many of those. 🤷♂️
(define (atom? x) (not (pair? x)))
is the same as Common Lispatom
, but I've seen some Scheme texts that use versions that treat'()
as not an atom. Can be confusing if you have one definition in mind and look at something that uses the other.If (not (eq? '() #f)) then it may make sense to treat '() as non-atomic. "atomic?" would then be a cheap version of "list?".