Nemesis namespace

After thinking about it for a while, it seems to be doable. The Nemesis data structure needs to be modified.

I never use this feature in Rake, so I'm probably not gonna do it unless people start to shout :) never over engineering, ever!

Nemesis is in a state I'm pretty satisfied, the implementation generally gets out of my way, and falls back from DSL to general Haskell code quite gracefully.

7 releases were made in 3 days, yeah, I'm crazy. Just can't stand knowing that people will get imperfect libraries.

update: I did it, in the 8th release, damn it.

Nemesis 复仇女神

I just created my first DSL, called Nemesis, in Haskell. It's modeled after Rake.

A single file named Nemesis containing dependency specifications, something like this:

1
2
3
4
5
6
7
8
9
10
11
nemesis = do

task "dist" $ do
sh "cabal clean"
sh "cabal configure"
sh "cabal sdist"

task "i" (sh "ghci -isrc src/System/Nemesis.hs")

task "manifest" $ do
sh "find . | grep 'hs$' > manifest"

I'm planning to use Nemesis instead of Rake from now on, since Nemesis compiles to machine code and can be blazingly fast. I'm happy :)