Можешь объяснить ключевые различия между функциями высшего порядка `map`, `flatMap` и `compactMap` в Swift, включая их основные случаи использования и то, как они работают с вложенными коллекциями и опциональными значениями? — ДейлиПреп