4 ms·
SHCL – An unholy union of Posix shell and Common Lisp
- jacquesm 8y agoUnix? Unity?
- eslaught 8y agoI think that's a typo from bullet 2 in the README: "an unholy union of POSIX Shell and Common Lisp"
- nur0n 8y agoreadme says "an unholy union of POSIX Shell and Common Lisp"
- mattnewton 8y agoPun for “union” most likely. It’s punny because it is part of a Unix. The original title is union I think though.
- AdieuToLogic 8y agoIt’s punny because it is part of a Unix. I see what you did there. Nice :-).
- sctb 8y agoWe've s/unix/union/'d the title.
- jacquesm 8y agoThank you!
- bitwize 8y agoAnybody 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).
- JackCh 8y agoThere is also rash, with Racket: https://github.com/willghatch/racket-rash https://github.com/willghatch/racket-rash
- zeveb 8y agoscsh 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 8y agoYou 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 8y agoIn 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-lisp-is-case-sensitive.html https://oneofus.la/have-emacs-will-hack/2011-09-20-common-li... [2] https://common-lisp.net/project/parenscript/reference.html#section-symbolconv https://common-lisp.net/project/parenscript/reference.html#s...
- zeveb 8y agoI think using all-caps is ugly-as-hell: (DEFUN hello-world () (FORMAT T "Hello, world!~%"))
- euske 8y agoNow only if there was a Haskell shell (Hashell?) with monads as UNIX pipes...
- yorwba 8y agoWell, there's https://hackage.haskell.org/package/turtle https://hackage.haskell.org/package/turtle
- eddieh 8y agoIdk about “unholy”. I wish I could make eshell (in Emacs) my full time shell, but certain things like nvm don’t work, etc.
- chrisweekly 8y agonvm sucks! try n! https://github.com/tj/n/ https://github.com/tj/n/ seriously, it's so much tidier!
- adisbladis 8y agoImho 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.
- chrisweekly 8y agoMy 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)...
- hossbeast 8y agoMost entertaining readme I've read in awhile. Nice job!