LINUX.ORG.RU

map vs fmap

 fmap, ,


0

1
map :: (a->b) -> [a] -> [b]

fmap :: (a->b) -> f a -> f b

fmap (+1) [1..3]
[2,3,4]

List - это функтор

зачем тогда нужен map? почему постоянно захламляют стандартную библиотеку, не объявляя устаревшие вещи 'deprecated'?

Еще беда, что одни и те же наборы функций лежат в разных пространствах х имен

★★★★★

Последнее исправление: MyTrooName (всего исправлений: 1)
Ответ на: комментарий от MyTrooName

Никто ничего не будет (и не стал бы) менять т.к. 100% кода записит от этой функции. Выкинуть её можно только вместе со всем когда-либо написанным на хаскеле кодом. Плюс книги.

а почему нельзя было просто расширить тип функции map до функторов?

В таких случаях обычно говорят что так легче учить язык.

fmap
()

почему постоянно захламляют стандартную библиотеку, не объявляя устаревшие вещи 'deprecated'?

Исторически сложилось. Для листа fmap = map. Захламления не вижу. Для дерева, например, fmap уже не map.

yoghurt ★★★★★
()
Ответ на: комментарий от MyTrooName

Да любое, вот тот же

data Tree a = Node a (Tree a) (Tree a) | Leaf
yoghurt ★★★★★
()

Проще и понятнее сообщения об ошибках для новичков. Вроде бы в prelude-classy как раз пробуют идти дорогой функторов и Traversable'ов.

kost-bebix ★★
()
Ответ на: комментарий от yoghurt

Давай об этом поговорим. И какой там хлам? Допустим там есть много функций для получения элемента последовательности (sequence): nth, elt, aref, svref. Но разве это хлам?

shamaz
()
Ответ на: комментарий от yoghurt

Да, а ещё eq, eql, equal, equalp, =, string= итд итп )

Касательно функций, схожих по функциональности, но для разных типов, моё мнение таково, что может для более «узкоспециализированных» функций можно получить более быстрый результат. CLTL2, например:

svref is identical to aref except that it requires its first argument to be a simple vector. In some implementations of Common Lisp, svref may be faster than aref in situations where it is applicable. See also schar and sbit.

Хотя sbcl'ю, вроде как, пофиг

map[a-z]+

Пожалуй да. Хотя там есть деструктивно модифицирующий map-into и mapc, не собирающий результат. Это неплохо

shamaz
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.