Live data from Hacker News

SHCL – An unholy union of Posix shell and Common Lisp

github.com

21–28 of 28 posts

Re: SHCL – An unholy union of Posix shell and Common Lisp

#21
post #10
post #3

Anybody remember scsh? Seems a better integration of the shell and Lisp bits if you ask me (although this is a neat hack, don't get me wrong).

scsh was definitely awesome, and it's not really practical in Common Lisp[0], due to Lisp's unfortunate choice to upcase all symbols. Made sense at the time, but in retrospect I think it was a mistake. It's a real pity that Franz's modern mode[1] didn't become more popular. [0]: it's possible , just ugly as hell because either one would have stuff like (|ls| |etc|) or one would have stuff like (|LENGTH| …). [1]: http…

Yeah, as others are saying, the CL spec foresees this with the way readtables work. But, honestly, the default behavior is pretty nice for normal programming tasks.

Re: SHCL – An unholy union of Posix shell and Common Lisp

#22
post #15

Idk about “unholy”. I wish I could make eshell (in Emacs) my full time shell, but certain things like nvm don’t work, etc.

nvm sucks! try n! https://github.com/tj/n/ seriously, it's so much tidier!

Imho all these tools like nvm, rvm etc are deeply flawed and doesn't really do their jobs all that well.

Where I work we use the nix package manager. Making sure your team is using the same version of node is just a few lines of config away:

  with (import  {});
  
  mkShell {
    buildInputs [ nodejs-8_x ];
  }
Pinning the whole package tree is just a few more lines away and offers you full reproducibility but I omitted it for brevity.

Another upside is that this approach is language agnostic and works for all tools packaged in the nix package repository.

Re: SHCL – An unholy union of Posix shell and Common Lisp

#23
post #3

Anybody remember scsh? Seems a better integration of the shell and Lisp bits if you ask me (although this is a neat hack, don't get me wrong).

Yes, and it was AWESOME! I never used it as a replacement for bash (no readline support), but a lot of shell scripts were much easier to write and to read in Scheme: full support for mathematical expression, elegant iteration, support for lists, etc., and this very well integrated with shell constructs like pipes and redirections.

I used it a lot and saved me lots of headhaches. It's a pity that the project was abandoned.

Re: SHCL – An unholy union of Posix shell and Common Lisp

#24
post #3

Anybody remember scsh? Seems a better integration of the shell and Lisp bits if you ask me (although this is a neat hack, don't get me wrong).

Scsh is not practical when used as an interactive shell. Where it shines, however, is with non-interactive scripting use. I use it everyday.

Re: SHCL – An unholy union of Posix shell and Common Lisp

#26
post #3

Anybody remember scsh? Seems a better integration of the shell and Lisp bits if you ask me (although this is a neat hack, don't get me wrong).

Yes. As a bonus, the acknowledgements in the scsh manual also features some of the finest writing I've ever read in a technical document: https://scsh.net/docu/html/man.html

Re: SHCL – An unholy union of Posix shell and Common Lisp

#27
post #20
post #3

Anybody remember scsh? Seems a better integration of the shell and Lisp bits if you ask me (although this is a neat hack, don't get me wrong).

It never got readline/libedit support AFAIK. I started once but it never got ready.

If you haven't already, I recommend checking out rlwrap, which you can use to run any ol' program that takes input on stdin and give it readline support. I use it quite a lot, and I have aliases in my .bashrc for wrapping various interpreters (like tclsh, sbcl, ocaml, and my own interpreters), but you can even use it to wrap /bin/cat and have a rudimentary line editor ;)

Re: SHCL – An unholy union of Posix shell and Common Lisp

#28
post #10

Earlier quoted context omitted.

scsh was definitely awesome, and it's not really practical in Common Lisp[0], due to Lisp's unfortunate choice to upcase all symbols. Made sense at the time, but in retrospect I think it was a mistake. It's a real pity that Franz's modern mode[1] didn't become more popular. [0]: it's possible , just ugly as hell because either one would have stuff like (|ls| |etc|) or one would have stuff like (|LENGTH| …). [1]: http…

You can use Readtable case :preserve to avoid the ugly-as-hell stuff [1]. Some libraries do this, for example KM [2] [1] http://clhs.lisp.se/Body/23_ab.htm [2] http://www.cs.utexas.edu/users/mfkb/km.html

I think using all-caps is ugly-as-hell:

    (DEFUN hello-world ()
       (FORMAT T "Hello, world!~%"))
Post reply on HN