1. 20
  1. 2

    I feel like this must be some kind of rite of passage for Schemers :)

    scsh

    Guile scripting

    Rash

    The list goes on :)

    1. 1

      I imagine that if Common Lisp hadn’t made the defensible-at-the-time decision to upcase symbols then it’d be a right of passage for Schemers too.

      I would desperately love to have a modern-mode (i.e., case-preserving) Lisp version of scsh.

      1. 1

        Just curious - my lisp chops extend only to a very tenuous understanding of elisp - but why is common lisp so much more desirable than scheme for such a task?

        1. 3

          I prefer Common Lisp for real use, as opposed to experimental or educational use.

          Scheme is a good language, I want to be clear about that. It is an awesome, clean, easy-to-implement language. The moment you first truly understand call/cc will change how you think about computation.

          So why do I prefer Lisp? Where Scheme is pure, Lisp is pragmatic. Scheme has a single namespace for all values: you can’t have a function, a class and a variable all named foo; you end up having to do things like naming classes <foo> or Foo, and naming your variables f or aFoo or whatever. A single namespace is easy to implement, and it has a certain conceptual purity, but I think it’s worse in practice. In Lisp, there are a plethora of namespaces, and you can create your own for things you care about.

          Scheme is minimal: you can implement your own control structures, your own error-handling, your own object system; in Common Lisp you can still do those things, but very good protocols are already specified. Scheme’s small standard means that each implementation comes with its own incompatible extensions; Lisp’s large standard means that implementations tend to be highly compatible.

          Unfortunately, Common Lisp chose to upcase read symbols, which makes it inappropriate to use as a shell.

          Again, Scheme is a great language, but it’s great for learning & understanding; Common Lisp is also a great language (a little grubby around the edges in places), and it’s great for actual use in real projects.

          All IMHO and worth exactly what you paid for it😀

          1. 2

            Thanks for the extremely illuminating reply. I appreciate the fact that you stated your preferences clearly as such, because there are obviously a ton of people out there using Scheme for real tasks despite its ivory tower tendencies :)

            1. 3

              Oh, it certainly can be used for real projects. But so can C😁

              1. 1

                It’s always amused me how LISP folks beat up on C. LISP is an amazing tool. There are tasks for which LISP is ideally suited.

                Are you saying that there are no tasks for which C is ideally suited?

                One particularly enlightened LISP hacker I knew said of C “It’s like working in a slightly higher level assembler. As long as you think of it in those terms, you’ll be fine.”

                1. 2

                  Are you saying that there are no tasks for which C is ideally suited?

                  No, although honestly the tasks for which C is the right answer generally involve talking to existing C code. Otherwise I think Forth, Ada or — yes — Lisp is the better choice. Or Go, for that matter.

                  1. 1

                    Replacing C is just about the only place I really love the idea of using Go. Its mix of high and low level abstractions do not spark joy for me.

            2. 1

              With regard to using CL as a shell, you can define your own readtable, you know. And you could define a package which has downcase re-exports of all the standardized symbols. (I foresee a problem with keywords, following this approach. My suggestion would be that since they’re already a lexical special case anyway, it would make sense to keep the upcasing behavior for keywords, and for no other symbols.)

              1. 2

                Yeah, I’ve played with stuff like that. The Real Answer ™, I believe, is Allegro’s modern mode. I wish more Lisp implementations supported it.

                1. 1

                  Ahh. Yes, absolutely.

      2. 1

        I’ve been pretty happy using eshell as my primary text shell.