В чем разница между return и pure от Control.Applicative? Кажется, что я могу использовать pure даже в конце блока do?
Итак, есть ли ситуация, когда нужно быть предпочтительнее другого (кроме того, что каждый ожидает return в конце блока do)?