This works, but IMO it’s needlessly complicated and inefficient.
I often use the Lisp REPL as a sort of shell, and in almost every case there are library functions that take the place of external commands and shell builtins, and they’re almost always faster, if for no other reason than they don’t spawn a ton of background processes.
In other words, why use Curl when I can use an HTTP library that has a “real” API? Why call “ls” when there’s a #’list-directory function that already returns the results as a list of paths? Every example in the article would be cleaner and more efficient using library functions.
Besides, it completely defeats Haskell’s type system making everything a ByteString.
I am very interested in this, but I’m interested in how quickly the author discards the possibility of doing this with Python. Xonsh is one of the most mature “real programming shell” tools I have yet tried.
There is an irc client written in rc.