Necessary, but not sufficient. A lot of terminal apps are still - to borrow a phrase - captive user interfaces, which don't play much better with others than a GUI. Decompose all the things into individual utilities (or libraries) so they can be reused and recombined!
I built a shell in Haskell for a class project this semester. At some point I'll get around to releasing it on Github. It doesn't do much aside from backgrounding tasks, piping, and supporting environment variables (both in a config file and dynamically through a built in export command). But it was fun to build!
I would totally use something that allowed me to use Haskell like I use bash. Turtle allows me to do some of it. I'm thinking more along the lines of this project that never took off though:
Comments
Very nicely done. Terminalize ALL THE THINGS!
Necessary, but not sufficient. A lot of terminal apps are still - to borrow a phrase - captive user interfaces, which don't play much better with others than a GUI. Decompose all the things into individual utilities (or libraries) so they can be reused and recombined!
Haskell combinators for ALL THE THINGS :)
Get me a Haskell shell as usable as bash, and I'm down!
I built a shell in Haskell for a class project this semester. At some point I'll get around to releasing it on Github. It doesn't do much aside from backgrounding tasks, piping, and supporting environment variables (both in a config file and dynamically through a built in export command). But it was fun to build!
I would totally use something that allowed me to use Haskell like I use bash. Turtle allows me to do some of it. I'm thinking more along the lines of this project that never took off though:
http://nellardo.com/lang/haskell/hash/
edit: Need to re-evaluate using Hell[1] for these purposes... maybe Hell + Turtle?
0: https://github.com/Gabriel439/Haskell-Turtle-Library
1: https://github.com/chrisdone/hell
Nice! In this case it's less a question of implementation language (though Haskell would likely be the best fit) and more what it exposes to the user.