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!