a -> b is the function type. It describes a function that takes a type a and returns a type b.
>>= is the monadic bind function. It is of type Monad m => m a -> (a -> m b) -> m b. If you need to understand this, I recommend reading Learn You a Haskell for Great Good. 
<- is syntactic sugar in a do block, where do {a <- b; c} translates as b >>= \a -> c, i.e, it’s basically a nicer way of writing >>=.
1
solved How to use arrow operators in haskell [closed]