Is the fundamental issue in #2 that you don&#x27;t like the syntax? or that Scheme has mutation?<p>It&#x27;s interesting looking back on the history of Scheme.  Probably because of the order of presentation of SICP, along with hearsay, people seem to get an impression of Scheme being all about functional programming (and if it&#x27;s because functions are values you can pass around... well even Algol and Pascal could do that).  It&#x27;s true the original paper was called &quot;Scheme: an interpreter for the extended lambda calculus&quot; [1], but the big idea was that if variables were bound lexically, and if the environment structures used to close the variables were mutable, then you would have something like the actor model -- functions could have state and respond to messages.  As they admit in the abstract, the purpose was to demonstrate the core interpreter for implementations of contemporary AI systems.  The chapter on register machines in SICP is just an elaboration of their methods in this paper.<p>[1] <a href="http:&#x2F;&#x2F;repository.readscheme.org&#x2F;ftp&#x2F;papers&#x2F;ai-lab-pubs&#x2F;AIM-349.pdf" rel="nofollow">http:&#x2F;&#x2F;repository.readscheme.org&#x2F;ftp&#x2F;papers&#x2F;ai-lab-pubs&#x2F;AIM-...</a><p>Something about porting a metacircular evaluator seems odd to me.  Not that it&#x27;s a bad exercise -- it&#x27;s a good one.  But rather, that it&#x27;s no longer a _metacircular_ evaluator.  The progression of the book is 1) abstracting processes and names with procedures  2) abstracting data representation 3) abstracting interface as a module, along with the theory and practice of mutation 4) abstracting semantics with interpreters (programs which take programs as data).  The proof that 4 is a thing is by implementing an interpreter for the language in the language and then extending the interpreter in various ways.  Even procedure calls are implemented by calling a procedure in the host language.  (All I&#x27;m saying is that you exercised the metalinguistic abstraction by writing a scheme interpreter in femtolisp.  Metacircularity in itself is not much more than an interesting phenomenon to demonstrate.)<p>(P.S. The language in SICP is not the Scheme which was later standardized, say R5RS + SRFIs.  Mutation of lexical closures didn&#x27;t change.  You can&#x27;t really (cleanly) get away from that until you invent something like a monad to model state.)