4 ms·
Emacs would be a fine choice, but is not mandatory, if you can live with less support for parens found in other editors. Emacs traditionally excels at working w
by zelphirkalt 4y ago
Emacs would be a fine choice, but is not mandatory, if you can live with less support for parens found in other editors. Emacs traditionally excels at working with lispy languages and REPLs.
I started working through the book, but did not feel like using Common Lisp. Instead I used GNU Guile. I am not very far in the book yet, but so far I was able to translate between Common Lisp and Scheme easily.
So for me the way to set things up was to install GNU Guile. I did that via GNU Guix package manager. However, GNU Guix can also install SBCL, so that you could use Common Lisp as the book does. SBCL is also in many distros' repositories.
- andrejlamov 4y agodo you think elisp will work for this book? or would one need to implement unique common lisp features in elisp? or will elisp just be too slow
- math-dev 4y agomost of it should work in elisp, note that elisp and common lisp have different semantics for IF. you might find some variances later on. also elisp doesn’t have as nice a debugging environment as SLIME so I’d honestly recommend just setting up common lisp
- proamdev123 4y agoWhat does “IF” stand for in your comment? Are you referring to the IF expression or something different?
- math-dev 4y agoignore me, read the comments above
- kazinator 4y agoAs far as I can tell, any Elisp if-form that is also a valid Common Lisp if-form has the same semantics; but Elisp allows more than one else-form in its syntax, with additional semantics. It's something like: (defmacro elisp-if (expr then &rest elses) `(cond (,expr ,then) (t ,@elses))) Whereas the regular if is like: (defmacro cl-if (expr then &optional else) `(cond (,expr ,then) (t ,else))) In a book that uses Common Lisp, you shouldn't see an if-form that isn't Elisp-compatible.
- math-dev 4y agoOh yes you are 100% right, I just had a brain fart. Thanks for correcting
- trenchgun 4y agoYou should use Common Lisp for this book, unless specifically want a challenge.
- medo-bear 4y agothis is ridiculous for a first reading. its the same as telling someone to use common lisp for sicp. why? maybe on a second or third reading for fun but to digest this book just use a well supported language like common lisp for which the book was written
- zelphirkalt 4y agoI can switch to Common Lisp at any time later in the book, if I feel, that translating to Scheme is too difficult for me. I will need to understand CL anyway, to do the translation. What I do not like about CL is probably one of the "wars" fought in computer programming: I do not like, that I have to use funcall, instead of simply wrapping with parens. I do not like, that variables and functions are in separate namespaces. However, if going through the book using Scheme gets too complicated, these are not things I cannot get over. EDIT: I probably also do not like the less emphasis on pure functions in CL. I think while solving some exercises I already did some things, so that I could solve without mutating global state. But it's been a while since I last continued working through the book, so I am not so sure. I get that sometimes a simple side-effect can be practical, but this is my free time occupation and I get joy from doing things in clean ways. Nevertheless, Common Lisp is one of the languages, which I wish I could actually work in (like on the job, not in my free time), when I compare it to things like Python, JavaScript and so on. At least it is in the family of languages I enjoy using.
- phyrex 4y agoLucky you, one of the chapters implements scheme. Seriously though, use CL, you’re not going to have a good time with scheme with this book. It’s making use of some CL specific behaviours
- zelphirkalt 4y agoThanks for the warning and look-ahead!