Traversable is Foldable, а мы-то тут при чем?

Mar 30, 2015 12:08

Размышляю тут вторые сутки над вопросом, что делает контекст Foldable в определении класса типов Traversable

class (Functor t, Foldable t) => Traversable t where
...
Технически он не нужен: никакая функциональность Foldable не используется ни при выражении законов Traversable, ни для реализации по умолчанию его методов.

Контекст Functor, ( Read more... )

haskell, fp

Leave a comment

Comments 12

sassa_nf March 30 2015, 10:01:51 UTC
так на самом деле тут нужно что-то такое:

instance (Traversable t) => Foldable t where
foldMap = foldMapDefault

Reply

deni_ok March 30 2015, 10:37:40 UTC
Для этого потребуются FlexibleInstances и UndecidableInstances для объявления и еще и OverlappingInstances, если у нас встретятся прямые реализации представителей Foldable.

Reply

sassa_nf March 30 2015, 10:44:03 UTC
ну да, но каковы последствия от включения этих фич? что-то перестанет работать?

Reply

deni_ok March 30 2015, 10:58:24 UTC
Почему-то отсутствует, хотя согласен со здравостью идеи.

Reply


lelf March 30 2015, 10:44:35 UTC
Мне лень сейчас искать, но этот proposal давно есть

Reply

deni_ok March 30 2015, 10:51:24 UTC
Было бы странно, если бы не. Просто сейчас это несколько актуализировалось.

Reply


migmit March 30 2015, 11:54:57 UTC
Замечательно изложено, почему Monad не должен быть наследником Applicative.

Reply

deni_ok March 30 2015, 12:41:51 UTC
Что ж ты раньше молчал!

Reply

migmit March 30 2015, 12:46:49 UTC
Ну дык хипстота так мечтала, чтобы оно случилось. Должны же мечты сбываться.

Reply

deni_ok March 30 2015, 12:57:25 UTC
Кому же, как не тебе, индоктринировать хипстоту правильным образом!

Reply


Leave a comment

Up