Over the weekend I was playing with Haskell (by reading through Learn You a Haskell for Great Good!) and I got to the chapter on IO. I saw that the author made a todo list manager similar to the famous “todo.txt” with just a single, short Haskell script. I wanted to extend the example but make something with simpler code, more features, and something I would actually use. The result?
It’s my first ever Haskell program more than a few lines long, and I am using it every day. I am really loving Haskell as a language. SHPM is mostly IO based so it’s not a great example of Haskell’s functional awesomeness, but it still shows how powerful the language is and how little boilerplate it has compared to my other favorite (Java).
SHPM manages a file called shpm.txt and keeps your todo list up to date with just a few simple commands:
shpm list -> list all tasks by project (in color) shpm list -nc -> list all tasks by project (no color) shpm add "Some Task" -> add "Some Task" to project "Other" shpm add "Some Project" "Some Task" -> add "Some Task" to the project "Some Project", creating the project if necessary shpm remove -> list all tasks and choose one to remove shpm remove n -> remove task #n from the list
And here are some action shots: