
SHCL – An unholy union of Posix shell and Common Lisp - rauhl
https://github.com/bradleyjensen/shcl
======
bitwize
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).

~~~
zeveb
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]:
[https://franz.com/support/tech_corner/modern.mode.lhtml](https://franz.com/support/tech_corner/modern.mode.lhtml)

~~~
EdwardCoffin
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](http://clhs.lisp.se/Body/23_ab.htm)

[2]
[http://www.cs.utexas.edu/users/mfkb/km.html](http://www.cs.utexas.edu/users/mfkb/km.html)

~~~
sedachv
In fact you can have case-sensitive Common Lisp packages that are completely
backwards compatible with case-insensitive CL code by settings _readtable-
case_ to _:invert_ [1], and this works without any problems for interfacing
with external case-sensitive environments.[2] Allegro's modern mode is what
you would get if you assume case sensitivity as a default, but portable Common
Lisp can handle case sensitivity perfectly fine without breaking backwards
compatibility.

[1] [https://oneofus.la/have-emacs-will-hack/2011-09-20-common-
li...](https://oneofus.la/have-emacs-will-hack/2011-09-20-common-lisp-is-case-
sensitive.html)

[2] [https://common-
lisp.net/project/parenscript/reference.html#s...](https://common-
lisp.net/project/parenscript/reference.html#section-symbolconv)

------
hossbeast
Most entertaining readme I've read in awhile. Nice job!

------
chrisweekly
My cousin's a core contrib on [xonsh]([https://xonsh.org](https://xonsh.org))
which is a posix-compliant python shell. I remember him cackling about making
his env completely unusable to anyone else in the world (while giving himself
amazing powers)...

------
euske
Now only if there was a Haskell shell (Hashell?) with monads as UNIX pipes...

~~~
yorwba
Well, there's
[https://hackage.haskell.org/package/turtle](https://hackage.haskell.org/package/turtle)

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

~~~
chrisweekly
nvm sucks! try n!

[https://github.com/tj/n/](https://github.com/tj/n/)

seriously, it's so much tidier!

~~~
adisbladis
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 <nixpkgs> {});
      
      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.

------
jacquesm
Unix? Unity?

~~~
mattnewton
Pun for “union” most likely. It’s punny because it is part of a Unix. The
original title is union I think though.

~~~
sctb
We've s/unix/union/'d the title.

~~~
jacquesm
Thank you!

