Дима
Генераторы не только в питоне
Andrei
Ага, я просто не стал уточнять.
Andrey
тут про книги нередко говорят - вот еще мнение https://medium.com/@_bravit/%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8-%D0%BF%D0%BE-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E-%D0%BD%D0%B0-haskell-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D1%8B-712c1f5b7749
Влод
Хотя жаль что все книги про то как вкатываться в хаскель
Vladislav
Да будет книга и про то, как дальше катиться
a66ath
Когда?
a66ath
Пилите там?
Vladislav
Хочется до 2018, но темп написания не такой на практике выходит. Но не забросили, делаем
Danila Matveev
early access будет?
Andrei
Когда?
Ты в LW slack-е сидишь?
a66ath
Да
Andrei
Я тоже. andreik
a66ath
Я в курсе
Vladislav
Vladislav
Надо просто стать соавтором или ревьюером
Vladislav
Платного early access не будет, потому что скорее всего сама книга будет бесплатной.
Danila Matveev
Надо просто стать соавтором или ревьюером
ревьювер вероятно предполагается тоже с опытом в разработке на хаскелле?
Vladislav
На данном этапе написания да, т.к. мы сейчас больше делаем уклон на сбор материала, чем педагогику. На последующих итерациях переписывания уже будет иметь смысл без опыта ревьюить
Vladislav
Т.е. пока что ревью имеет смысл на уровне таких замечаний: — лучше поменять порядок изложения — можно упомянуть такие-то связанные темы — лучше избегать такую-то тему (потому что такие-то грабли) — фактические ошибки — etc и не имеет смысл делать ревью, мол новичку текст будет непонятен (он сейчас весь непонятный).
Vladislav
Соавтором если становиться, можно не писать целые главы. Там есть полно TODO, где надо просто несколько абзацев добавить про тот или иной вопрос.
Vladislav
Или придумать хорошие примеры для демонстрации концепции.
Ilya
^ на каком языке книга?
Vladislav
англ. конечно
Danila Matveev
а есть способ отслеживания новостей? хотелось бы узнать, когда будет доступна
Vladislav
Vladislav
https://intermediatehaskell.com/
Danila Matveev
спасибо!
Danila Matveev
о, даже уже подписан, плохая память
Ilya
зачем нужна функция the ?
Ilya
что-то не могу придумать ей применения
Ilya
или её фишка в том, что она именно падает в случае разных элементов?
Ilya
что-то типа assert в си ? =)
Vladislav
типа assert
Evgeniy
у меня есть несколько странный вопрос к знатокам - возможно ли в Hask как то представить категорию монад? возник он у меня от того, что хочеться понять можно ли реализовать Free монаду как Adjunction или это почти не реализуемо в текущем состоянии языка для справки, вот на SO Кмет писал: ("So what is a Free Monad? Well, we do the same thing we did before, we start with a forgetful functor U from the category of monads where arrows are monad homomorphisms to a category of endofunctors where the arrows are natural transformations, and we look for a functor that is left adjoint to that." ) https://stackoverflow.com/questions/13352205/what-are-free-monads/13357359#13357359
Vladislav
Чтобы представить категорию монад, тебе нужно в качестве объектов взять типы с кайндом ☆ -> ☆ и инстансом Monad. Я не очень понимаю влпрос "представить", потому что вон она эта категория. Хочется инстанс класса Category? Такое не выйдет.
Vladislav
Category из base не даст констрейнт на объекты наложить.
Evgeniy
Чтобы представить категорию монад, тебе нужно в качестве объектов взять типы с кайндом ☆ -> ☆ и инстансом Monad. Я не очень понимаю влпрос "представить", потому что вон она эта категория. Хочется инстанс класса Category? Такое не выйдет.
если берем объекты ☆ -> ☆ и инстансом Monad и нам надо cделать функтор в категорию ендофункторов (видимо опять ☆ -> ☆ но инстансом Functor), то вроде как это тоже можно? у меня задача по лучше просто разобратся в adjunction, просто вот хочется понять прежде чем пытаться это делать это вообще более менее реализуемо, на основе той же либы https://github.com/ekmett/adjunctions/ или лучше ограничится тем, что понятно что возможно сделать через adjunction а именно State и Store?
Влод
Влод
https://www.barrucadu.co.uk/publications/YCS-2016-503.pdf
кана
А, хм, в определении "монада - моноид в определении эндофункторов" понималось, что эндофунктор тут - m : Type -> Type, а то, что оно моноид, говорит о m (m a) -> m a?
Arseniy
Haskell/Category theory - Wikibooks, open books for an open world https://en.m.wikibooks.org/wiki/Haskell/Category_theory
Vladislav
@kana_sama это не бред, потому что эндофунктор является эндоморфизмом в категории функторов
Vladislav
Соответственно m : Type -> Type с fmap дает тебе эндофунктор. Рассматриваешь категорию функторов (стрелки - натуральные трансформации), она является моноидальной по тензору Compose и единице Identity
Vladislav
И моноиды в этой категории оказываются монадами (Compose m m ~> m дает join, Identity ~> m дает return, и имеем fmap по определению категории функторов)
Vladislav
join + return + fmap = Monad
кана
благодарю, вроде прояснилось
кана
Стак по дефолту генерит папки app и src. Какой код куда класть? Были мысли, что в src нужно все, что не связано с приложением, но используется там, а в app все, что не имеет смысла без контекста приложения. Другой вариант - все в src, а в app чисто бутстрап приложения (консольный фронтенд например, парсинг аргументов) или же все с io
Vladislav
Все library в src, executable в app
Vladislav
Хотя я называю эти директории lib и exe, для ясности.
Aleksei (astynax)
Можно в app класть собственно Main. И, скажем, описания CLI, парсер файлов конфигурации, вот это всё. И то только в том случае, когда пакет планируется использовать ещё и как библиотеку и не хочется засорять последнюю описанием опций командной строки конкретного приложения
Cheese
instance Monad m => Category (Kleisli m) в стандартной библиотеке — это представление категории монад в Хаскелле, которое вы тут ищете?
Cheese
@strobegen ^
Cheese
в случае со стэком можно вообще не использовать никакие темплэйты хочешь проект — echo {} > stack.yaml хочешь пакет — echo {} > project.yaml и дальше по подсказкам сборщика
Vladislav
@cblp_su категория Клейсли — это не категория монад
Vladislav
в категории монад объекты вроде Maybe, [], или State, а стрелки — type m ~> n = forall a. (Monad m, Monad n) => m a -> n a
Vladislav
в категории Клейсли объекты такие же, как в Hask (все типы в *), но стрелки Kleisli вместо ->
Evgeniy
instance Monad m => Category (Kleisli m) в стандартной библиотеке — это представление категории монад в Хаскелле, которое вы тут ищете?
незнаю, возможно в том то и дело что я не до конца понимаю что ищу. Я знаю что не все все варианты adjunction возможно имплементировать в хаскеле тк некоторые функтуры завязанны на категории которые просто так не льзя описать используя type -> type. Собственно я и хочу осознать где проходит граница что можно делать а что нельзя
Evgeniy
пока вот нашел такую архивную дискуссию на подобную тему https://mail.haskell.org/pipermail/haskell-cafe/2007-December/036340.html но еще не успел ознакомится
Evgeniy
@cblp_su категория Клейсли — это не категория монад
а Eilenberg-Moore в отличии от Клейси как будет?
Vladislav
Не уверен, как лучше выразить T-алгебру (и возможно ли это в сегодняшнем Haskell).
Evgeniy
а вообще ктонибудь видел чтобы https://hackage.haskell.org/package/adjunctions или adjunction из category-extracts использовалась для каких то практических задач а не только для того чтобы сделать что то типа http://chrispenner.ca/posts/adjunction-battleship?
Evgeniy
ни как не могу найти место на ментальной карте для этого, с одной стороны штука сугубо теоритическая но с другой все же есть потенциально практические применения
Sherzod
Чуваки, вам девушка не нужна?
Sherzod
Sherzod
Держите. Не благодарите!
parket
Спасибо.
Aleksei (astynax)
(забрал стикеров)
Alex
чот не раскрыты темы профункторов и гистоморфизмов
Sherzod
Alex
профунктор это бифунктор, контравариантный по первому параметру
Alex
а гистоморфизм это схема рекурсии учитывающая предыдущие результаты
Alex
https://jtobin.io/time-traveling-recursion
Sherzod
а гистоморфизм это схема рекурсии учитывающая предыдущие результаты
то есть рекурсия, похожая на вычисление факториала?
Alex
типа того но произвольной глубины
Alex
для факториала вроде бы достаточно параморфизма
Vladislav
Спасибо, так намного яснее стало.
Если это был сарказм, то можно и разъяснить
Дима
Про профункторы как раз таки было понятнее всего предыдущего)