Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Janetsh – A new system shell (github.com)
89 points by andrewchambers 9 days ago | hide | past | web | favorite | 26 comments

> A new system shell that uses the Janet[1] programming language

Why have I never heard of Janet before? This ticks every single box so far on my Perfect Lisp Language (and possibly Perfect Language) check list, the language I've been looking for for years but couldn't find.

[1] https://janet-lang.org

Haha. I haven't heard of it either. I though that this was a toy project or something. Seems like it's real business. What don't you like about the other Lisps, like Common Lisp, for example? What boxes still remained unticked?

Janet discussion: https://news.ycombinator.com/item?id=19179963

I know right? Tiny like lua, really extensible and flexible, fast start time, awesome :D.

> while also supporting the things we love about sh.

This is great! Are there any other shells like this? I like the idea of something backwards compatible with bash.

Oilsh has focused more on backwards compatibility. This approach of adding a small functional language is interesting. The author seems to have done an elegant job with the syntax. Adding this to my list of things to download and play with.

Rash, the Racket Shell, does something similar to this: https://docs.racket-lang.org/rash/index.html

Es shell is similar but in a less lispy, more bash style.

xonsh does the same thing for sh and python.


Very neat. Will give this a spin and perhaps a port for FreeBSD if interested?

If you are up for it, currently it may be a tad difficult to get running, but I am certainly willing to provide assistance.

In the future I hope it will support mac/freebsd/openbsd/linux and be easy to install and use.

I have a project that uses free unparsed text with evaluated sexpressions mixed in. I understand that alot of people just dont like sexpressions...but otherwise is anyone really bothered by this style of allowing arbitrary junk at the top level?

I think it’s fine, it’s like you’re saying that every expression is implicitly wrapped in a ‘()’ itself, so the syntax is redundant at the top level in a shell.

Not sure I’d appreciate it outside of a shell.

Yeah, the shell implicitly adds () in janetsh, but it doesn't do it for you when you are writing scripts.

Why did they subtract one from (length all-files) in the gif?

There is a blank line from find captured in the array. I think it is to remove it from the count.

That is right, I also just wanted to show you can do some basic calculation easily inline.

Looks like the last item in the all-files array is an empty string - maybe that's why? Either that, or the current directory (".") might be included as the first element.

If . was included then .. almost certainly would be as well. But an empty string at the end like you say and as explained by the sibling comment makes sense.

The empty line after the split was the reason, also to demonstrate how to do arithmetic.

you lost me on the second bracket :D

lisp may be as ugly as bash, but it much more principled and composable.

Does it use the flow of time as a lotion?

How’s the cactus compatibility?


I believe these are references to The Good Place[1], although I don't usually expect to see pop-culture references as top level comments on HN.

[1]: https://en.wikipedia.org/wiki/The_Good_Place

To be fair, it is named after the character from that show. It doesn't really add much to the discussion to post references here, though.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact