vindarel a year ago

Wow, that's crazy O_o

Related:

- Lish allows to mix&match shell and Lisp code, with regular syntax. https://github.com/nibbula/lish/

    $ echo ,*package*
    #<PACKAGE "LISH-USER">
    $ (defun hello (name) (format t "hello ~a!!~&" name))
    $ (hello "me")
    hello me!!
    NIL
    $ (hello "me") | wc -w
    => 2 
    
It is usable. Interactive commands like sudo and htop work, some like less and fzf don't. So it ships a pager, `view`. It has a directory mode, a Lisp REPL with a debugger, completion…. It is not done, the author keeps hacking on it. Hackers invited to have a look.

- SHCL is a posix-like shell written in CL. https://github.com/bradleyjensen/shcl (it doesn't have completion. Not active.)

https://github.com/CodyReichert/awesome-cl#shells-shells-int...

  • kscarlet a year ago

    Thanks for the pointer to lish! I didn't know it had all that, I know it exists but was intimated by its non-standard packaging...

    I decided to not go too far on the structured/object shell route for Unix in Lisp, instead trying to get existing Unix utilities to work as seamlessly as possible first. But maybe in the future I could integrate some work from lish. That's lots of impressive work under yew/los and yew/tools!

agambrahma a year ago

One of those "I wonder what it'd be like if someone made that", and then someone _does_ make that, kudos!

Also, `defile` is a great name for a macro :-)

ahefner a year ago

Neat. Funny enough I've recently considered writing sort of the exact opposite of this - a FUSE FS that maps every package and symbol of a running lisp image into the filesystem, so that the value of variables could be read/written from outside, fbound symbols would be marked executable and "callable" from unix by running them (via some weird shebang hack, I guess), etc.

all2 a year ago

One of the examples in the readme is this

Counting number of files

    /Users/kchan> (cd quicklisp/local-projects/unix-in-lisp)
    /Users/kchan/quicklisp/local-projects/unix-in-lisp> (pipe (wc -l) (ls))
           9
Personally, I would want the top level parens to be implicit so I could write

    /Users/kchan> cd quicklisp/local-projects/unix-in-lisp
    /Users/kchan/quicklisp/local-projects/unix-in-lisp>
This removes what could be trivial, but for a basic `cd`, I don't want to have to remember parens every time. Optionally having those parens would be nice for when they're needed, but for basic use-cases I'd rather not.
  • kscarlet a year ago

    Author here! I've considered this before, but there are problems such as what does a single atom mean: Does test.sh run test.sh or returns the content of test.sh?

    I am a heavy Lisper myself so I end up choosing consistency over one less keystroke (I have paredit, so the difference between (ls) vs ls is just one keystroke), but I could be biased.

    • all2 a year ago

      That's a fair point. Consider that I have very little experience with any kind of Lisp beyond Scheme, and even that is very limited. I was coming at this recommendation from the perspective of a heavy command line user.

    • dmb2 a year ago

      Do you use this as a daily driver?

      I got addicted to evil-mode at some point and haven’t squared the circle of modal s-expression editing that this inevitably surfaces.

      At least readline respecting programs reward my early emacs years.

      • kscarlet a year ago

        Yes I use it daily.

        I never squared the circle of modal editing and use mostly vanilla Emacs bindings (and paredit) :)

        Would love to hear feedback from evil-mode user. Just in case I port it to vim in the future.

    • jdougan a year ago

      would it be hard to modify the readline mechanism to show the "implicit" parens and push them apart as you type?