Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Шутка про ду оказалась неожиданно продуктивным инсайтом. Некоторые ячейки было непонятно, как заполнять, и я использовал аналогии

\x -> f $ g $ x = f . g
\x -> f <$> g <$> x = f ??? g


Ну то есть если . это ValueComposition - то ??? это явно хороший претендент на FunctorComposition

Cоответственно $ получается аналогична <$>.

Но осталось непонятным, что же такое ApplicativeApplication и ApplicativeComposition.

Для прояснения я полез читать статью по свободному аппликативу. По ячейкам таблицы не прояснилось, но зато оказалось, что аппликатив - это такое дерево
data Tree c
  = Leaf c
  | Decorate (a -> c) (Tree a)
  | Join (a -> b -> c) (Tree a) (Tree b)
Ну, я слукавил немного и на самом деле у нас GADT, такое полиморфно рекурсивное дерево (a и b экзистенциально квантифицированы):

data FreeApp c where
  Leaf :: c -> FreeApp c
  Decorate :: (a -> c) -> FreeApp a -> FreeApp c
  Join :: (a -> b -> c) -> FreeApp a -> FreeApp b -> FreeApp c
В таком варианте труднее видно дерево, зато легче видно, что Leaf, Decorate и Join - это pure, fmap и liftA2 соответственно.

Трассировать это дерево то ещё удовольствие, поскольку с элементами нельзя ничего сделать, кроме как продекорировать и соединить попарно.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 5 comments