@popefucker@cybre.space http://haskellbook.com/ is pretty good and starts from first principles, but costs money
http://book.realworldhaskell.org/ goes into a bunch of mathematical details later on.
those are both kinda generic, though, so I'll give you some specific stuff that might be useful to someone with a maths background in the next toot
@popefucker@cybre.space
* the equals sign works the same as in algebra - whenever you see the LHS, you can just replace it with the RHS (and visa versa)
* types are just sets - if you write a function, it takes elements from one set and returns elements of another set, for example:
isEven :: Integer -> Boolean
isEven n = case n `mod` 2 of
0 -> True
otherwise -> False
is a function that takes elements from the set of all integers, and returns elements from the set of Booleans.