A64m
Ну первоначально враги FTP вроде не обнаружили пример с длиной тупла (видимо потому, что всю траверсабл-машинерию они никогда и не использовали)
Denis
вот что толсто, так это https://hackage.haskell.org/package/lens-4.15.4/docs/Control-Lens-Each.html#t:Each !
A64m
там претензии были более общего характера
Denis
я не представляю как можно пользоваться хаскеллем без Traversable
Leonid 🦇
Data.OldList :)
A64m
да можно
A64m
не так давно траверсабл и появился
Denis
ему сто лет в обед, просто отдельным пакетом был
Влод
тем, кому нужен Traversable для пары)
ну разве что можно использовать afold и как бы при достаточном везении прокинуть пару в то что нужно
A64m
да и прямо скажем, до появления линз вся эта его инфраструктура была не особо юзабельной
Leonid 🦇
а уж допилили все инстансы и RULEсы к Traversable не так и давно
A64m
как-то код в стиле "Суть паттерна "итератор"" в глаза не бросался.
Denis
в базу походить, асинки подергать - регулярно в таких вещах вылазит
Leonid 🦇
(traverse.traverse) вообще удобно
Anonymous
а почему в имлпементации профунктора у tagged в аргументе *?
A64m
ну в простых случаях его часто используют, а собственные траверсаблы их функторов никто не композит обычно
Denis
traverse.traverse и в продакшн
A64m
после появления линз другое дело - этот подход дозрел
Denis
а почему в имлпементации профунктора у tagged в аргументе *?
потому что первый параметр poly-kinded, а Tagged имеет инстанс Functor
Anonymous
ойей
A64m
@catamorphism небыл он отдельным пакетом, его буквально году в 2006-ом изобрел Конор Макбрайд как "идеоматический траверсал"
A64m
и довольно быстро в base все это оказалось
Leonid 🦇
а у Конора сколько методов было в классе?
A64m
@catamorphism я и не путаю, именно использование Traversable в названном мной пейпере и описывалось
Andrey
Я думал это Хаскелисты других троллят что длина пары равна 1, а самим все интуитивно понятно 😊
A64m
@lonokhov столько же, апликатив суперклассом монады-то не был
Leonid 🦇
ээ, мы тут уже попутали Traversable и Foldable
Alexander
@IIvana всем понятно
Alexander
но часть отказываются это признавать
Alexander
т.к. НИИНТУИТИВНА
Denis
https://hackage.haskell.org/package/mono-traversable вот эта фигота с 2013 на hackage, задолго до FTP
Denis
и было еще что-то емнип
A64m
фолдабл, это просто оптимизация для траверсаблов, которые не возвращают контейнер с той же структурой
A64m
как что-то отдельное их и рассматривать смысла нет
A64m
не нужна была бы оптимизация его и не было бы
Andrey
Я наверное из той части, коду это интуитивно, и признание приходит само собой
Leonid 🦇
ну так из-за Traversable то никто и не переживал с FTP, чего мы к ним скатились?
Alexander
mono-traversable это совсем другое
Alexander
оно есть т.к. traversable уже существовал
Alexander
но 2013 это совсем недавно
Leonid 🦇
mono-traversable это из разряда HasLength и classy prelude
Denis
это другое, которое после Traversable на hackage появилось, я не помню как пакет назывался
Leonid 🦇
/me не одобряет
A64m
@lonokhov да и из-за траверсаблов переживали
Denis
@qnikst может ты помнишь где на hackage дебютировал Traversable?
A64m
но да, основная критика по фолдаблу всегда была
Alexander
нет
A64m
в base
Alexander
но я знаю человека, который обычно хорошо помнит историю haskell
Alexander
но почему-то тут он не признается, что он это он
A64m
упрощенно говоря, тогда хекеджа-то и не было
Konstantin
/me
Denis
Мне вот помнится что задолго до base в отдельных пакетах обитало. Но не могу вспомнить, сорян.
A64m
тогда вроде и контейнеры с арреем были в base - какие другие пакеты?
Denis
@qnikst К.?
Alexander
+
A64m
все хаскельные либы прямо с ghc и "толстой" версией hugs и ставились
Leonid 🦇
Я опознал этого человека по 4м сообщениям
Alexander
@lonokhov ты вообще рекорсмен
A64m
вроде можно по никнейму
Alexander
я не пытался его расшифрофывать
Alexander
только сейчас понял, что это опции для RTS
Denis
лол
Denis
я подозреваю интригу
Denis
про что конкретно?
Anonymous
kind polymorphism или с чем там этот синтакс связан
Alexander
а чего там читать?
Alexander
data Foo a <- по умолчанию a кайда * (значения)
Alexander
если включить PolyKinds то k - любой
Alexander
для тега логично иметь любой кайд
Alexander
т.к. тогда можно сделать data T = A | B ; type P t a = Tagged (t::T) a
Alexander
функтор работает со значениями поэтому там всегда у типа кайнд *
Alexander
ну да
Alexander
или использовать (*->*) тогда даже DataKinds не нужен