Haskell type inference is still a developing research area. Suffice to say, not even SPJ knows all about what it _should be_.
Here's a reasonable plan:
1) Start with so-called "Unification" [1]. Try manually inferring the types of some Haskell fragments to get a sense of how it applies. The connection should emerge as clear as day.
2) Next, study Damas-Hindley-Milner. Gain a sense of what motivates 'principal types', why they're useful, as opposed to a situation where they are impossible to infer.
3) Finally, there's type classes. I don't know if typed clojure has them or not, but this is really what separates Haskell from, say, Lazy ML (LML). Be warned, this is where it gets gnarly.
-- Kim-Ee