I don't have a problem with using TDD *and* type-safety to the full extent of usefulness, but the lifecycle/process isn't what TDD experts would call proper TDD.
I do use HSpec, very happily. The author has done a truly excellent job with it.
Process is something like:
write types, validate types
-> fill holes, validate terms against types
-> compose functions to see if results are sane, go back to 1st or 2nd step if not.
-> Are there useful invariants QuickCheck can express? Write those first. Repeat cycle as needed.
-> Decide on meaningful but compact functional/integration tests, repeat cycle as needed.