It's also good to use MinGW and MSYS. MinGW comes with the platform. MSYS currently doesn't but it should too. You can install them yourself, if you don't have the platform.
Regarding third-party libraries, I only have experience with `glpk-hs` package which is a wrapper around the GLPK solver. It took me a lot of time to get this to work but in general, try to get a binary build for windows (for GLPK, there's a Winglpk on sourceforge) and then you use `--extra-include-dirs=` and `--extra-lib-dirs=` so specify the locations of the library files.
In my case, I use a Makefile for this, which accepts a $(glpk) argument with the install location of Winglpk.
```
GPLK_LIBS_INCLUDES := --extra-include-dirs=$(glpk)/src --extra-include-dirs=$(glpk)/src/amd --extra-include-dirs=$(glpk)/src/colamd --extra-include-dirs=$(glpk)/src/minisat --extra-include-dirs=$(glpk)/src/zlib --extra-lib-dirs=$(glpk)/w32
```
Then I call cabal like this
`cabal install --only-dependencies $(GPLK_LIBS_INCLUDES)`
Finally, (just in case...), with MSYS you give paths on windows like this, for example, `/c/lib/glpk-4.51`.
Hope that helps,
Michal