Size: a a a

2020 November 11

A

Aleksandr Khristenko in Haskell
Kirill Valyavin
Но вообще для этого пакет есть
А что за пакет?
источник

KV

Kirill Valyavin in Haskell
Зачем так длинно через фмап, можно просто внимательно посмотреть и понятно
источник

MK

Maxim Koltsov in Haskell
я бы так не писал
источник

MK

Maxim Koltsov in Haskell
и на ревью бы сказал переделать
источник

A

Aleksandr Khristenko in Haskell
Kirill Valyavin
Зачем так длинно через фмап, можно просто внимательно посмотреть и понятно
Ну хз, а вот внимательно смотрю и мне не особо понятно. Понятнее стало только когда в сигнатуру посмотрел.
источник

к

кана in Haskell
Aleksandr Khristenko
А код вида ((f. ) .) . g в реальных проектах использутся?
ну вот такой может быть

f . (. g) . (h .) . t
источник

KV

Kirill Valyavin in Haskell
источник

KV

Kirill Valyavin in Haskell
Aleksandr Khristenko
Ну хз, а вот внимательно смотрю и мне не особо понятно. Понятнее стало только когда в сигнатуру посмотрел.
(f .) . g читается как "применить f после функции, которую вернёт g"
источник

A

Aleksandr Khristenko in Haskell
Забавный у них нейминг =)
источник

A

Aleksandr Khristenko in Haskell
Kirill Valyavin
(f .) . g читается как "применить f после функции, которую вернёт g"
А вот так понятнее стало, спасибо.
источник

AV

Alexander Vershilov in Haskell
Aleksandr Khristenko
А код вида ((f. ) .) . g в реальных проектах использутся?
скорее нет, чем да
источник

AV

Alexander Vershilov in Haskell
кана
ну вот такой может быть

f . (. g) . (h .) . t
А вот такое уже точно нет
источник

c

certifiable fleece in Haskell
Очень интересные вещи происходят. Я так понимаю в последнем случае многие fmap раскрываются в (.)?

> :t fmap fmap fmap fmap
fmap fmap fmap fmap
 :: (Functor f1, Functor f2, Functor f3) =>
    f1 (f2 (a -> b)) -> f1 (f2 (f3 a -> f3 b))
> :t fmap fmap fmap fmap fmap
fmap fmap fmap fmap fmap
 :: Functor f => (a1 -> b) -> (a2 -> a1) -> f a2 -> f b
источник

DR

Denis Redozubov in Haskell
fmap fmap и в продакшен
источник

к

кана in Haskell
certifiable fleece
Очень интересные вещи происходят. Я так понимаю в последнем случае многие fmap раскрываются в (.)?

> :t fmap fmap fmap fmap
fmap fmap fmap fmap
 :: (Functor f1, Functor f2, Functor f3) =>
    f1 (f2 (a -> b)) -> f1 (f2 (f3 a -> f3 b))
> :t fmap fmap fmap fmap fmap
fmap fmap fmap fmap fmap
 :: Functor f => (a1 -> b) -> (a2 -> a1) -> f a2 -> f b
когда мы уже делаем fmap fmap fmap, тут определяется тип функтора внешнего, так как аргумент - fmap, то и функтор - стрелка

поэтому fmap fmap fmap это fmap . fmap
источник

AV

Alexander Vershilov in Haskell
сколько fmap помещается на кончике иглы?
источник

к

кана in Haskell
а дальше просто аргументы добавляются я так понимаю
источник

KV

Kirill Valyavin in Haskell
Alexander Vershilov
А вот такое уже точно нет
Но это-то понятнее, не так понятно как с профункторными методами конечно
источник

YR

Yuki Rito in Haskell
у меня в свое время такое запороли в ревью, типа нечитабельно )
источник

AV

Alexander Vershilov in Haskell
правильно сделали!
источник