Все это время, когда любая лекция Haskell говорила о «плоской карте», как правило, по отношению к Монадам, я думал, что она называется «плоской» по какой-то причине, то есть она сглаживает контейнер , Такfmap и «плоская карта» в Haskell
[[1,2],[3,4]]
будет обрабатываться так же, как если бы это было
[1,2,3,4]
Но теперь я обнаружил, что БПМЖ и карта в основном то же самое, с той лишь разницей является применение одного функторов и другой для просто списков. И это было сделано только в конце, чтобы избежать путаных сообщений об ошибках при использовании карты.
Это правда? И если да, то почему f
в fmap означает «плоский», почему бы не «functor map»?
'f' в' fmap' не означает 'flat'. Эквивалентом 'flatMap' в Haskell является' (>> =) '. Сначала была определена функция 'map' для списков, поэтому для более общей функции' fmap' было необходимо другое имя. – Lee
Скорее, 'fmap' является обобщением' map' другим функторам, кроме функтора списка. Тот, кто сказал вам, что «fmap» был коротким для «плоской карты», ошибся. – chepner
Вы уверены, что лекция, на которую вы ссылались, имела в виду «fmap», когда говорила «плоская карта»? Было бы разумнее, если бы речь шла о 'concatMap' (aka' >> = '), который часто называют« flatMap »на других языках и ведет себя так, как вы ожидали. – sepp2k