cons = prepend
snoc = append
fst = first item of tuple
snd = second item of tuple
>>= is monadic bind... I won't try to explain it here. It's somewhat similiar to flatmap in Scala which has some easy explanations.
zip, I just remembered I explained already.