=================[ Readings on Scheme ]================= In the textbook, Scheme is called a dialect of LISP; others would call it a separate language. Scheme was meant to focus on the features of LISP that were most interesting such as lexical scoping; clean up unnecessary complexity, such as separate symbol-value and symbol-function and the related "funcall" cruft for calling lambdas; and to make the syntax more uniform, by uniformly ending predicates with ?, functions and special forms with side effects with !, etc. For example: atom?, null?, set!, car!, and cdr! instead of LISP's atom, null, setq, rplaca, rplacd. Scheme became the language for testing new programming language and compiler research ideas. Being of a LISP descent, it had minimal syntax and could be redefined and extended at will, while still having its programs at the same time as its most fundamental data structure (a list). As a cleaner LISP, it was compact and rid of some of LISP's legacy baggage. ----------------[ From Lisp to Scheme code ]---------------- For brief but informative translations between Scheme and Lisp see the end of textbook's section 3.3. Figure 20.1 in Chapter 20 of OnLisp is more comprehensive. Chapter 20 talks of "continuations", which became another core PL concept after closures and lexical scoping newly introduced in Scheme. MacPorts has several Scheme implementations: chez-scheme, scheme48, mit-scheme, etc. I am using chez-scheme currently, installed via "port install chez-scheme". I tried installing racket and mit-scheme through MacPorts but ran into various issues. See https://wingolog.org/archives/2013/01/07/an-opinionated-guide-to-scheme-implementations if you are interested in exploring; Racket has a GUI and an IDE if you like these. Otherwise, use any command-line Scheme with "rlwrap" ("port install rlwrap"). =====================[ Running Scheme in Emacs ]==================== First and foremost, you can run chez-scheme just from command line. It gets you nice Readline keybindings by default, so you don't even need rlwrap. The simplest way of running Scheme in Emacs is https://www-users.cse.umn.edu/~gini/1901-07s/emacs_scheme/ What I did in class was slightly more complicated: I installed the Geiser package for my Emacs 29 and then used it as a wrapper for chez-scheme. I did this with two commands: M-x package-install RET geiser-chez RET and M-x geiser (Recall that M- is ESC- by default), as per https://www.nongnu.org/geiser/Installation.html#DOCF1 and https://www.nongnu.org/geiser/The-REPL.html#The-REPL The most important keybinding for me is M-p (Esc-p).