Ilya
возможно проблема в том, что либу я собираю стеком(сложная судьба у неё)
Alexander
с ним просто cabal build должен отлавливаьт
Ilya
ну я вижу в сендбоксе интерфейсные файлы своей либы. я добавил новый модуль в либу, но он в сендбоксе явно не появился
Ilya
мне нужно какой-то reinstall звать?
Ilya
➜ idris-codegen-wasm git:(master) ✗ cabal build Some add-source dependencies have been modified. They will be reinstalled... Resolving dependencies... In order, the following would be installed: ansi-wl-pprint-0.6.8.2 (via: idris-0.9.14.2 optparse-applicative-0.14.2.0 trifecta-1.7.1.1) (reinstall) (changes: ansi-terminal-0.7.1.1 -> 0.8.0.3) trifecta-1.7.1.1 (via: idris-0.9.14.2) (reinstall) (changes: ansi-terminal-0.7.1.1 -> 0.8.0.3, ansi-wl-pprint-0.6.8.2 removed) optparse-applicative-0.14.2.0 (via: idris-0.9.14.2 wasm-0.1.0) (reinstall) (changes: ansi-wl-pprint-0.6.8.2 removed) wasm-0.1.0 (reinstall) (changes: base64-bytestring-1.0.0.1 added) idris-0.9.14.2 (latest: 1.2.0) (new version) cabal: The following packages are likely to be broken by the reinstalls: idris-1.2.0 Use --force-reinstalls if you want to install anyway. Warning: Couldn't reinstall some add-source dependencies. Resolving dependencies... Configuring idris-codegen-wasm-0.0.1.0... Warning: To use the 'default-language' field the package needs to specify at least 'cabal-version: >= 1.10'. Preprocessing executable 'idris-codegen-wasm' for idris-codegen-wasm-0.0.1.0.. Building executable 'idris-codegen-wasm' for idris-codegen-wasm-0.0.1.0.. как-то так выглядит результат кабалобилда
Ilya
то есть он вроде видит, что что-то поменялось, но потом ноет что Warning: Couldn't reinstall some add-source dependencies.
Ilya
собственно внешняя либа это как раз wasm-0.1.0
Ilya
удалил из сендбокса либу и сделал снова cabal install, помогло, но мне кажется что раньше оно у меня как-то само из коробки работало
Mekhrubon
А почему MonadCatch и MonadCont вместе не работают? MonadCont написан на эксепшенах и это может ломать пользовательский код?
Alexander
иначе бы работали вместе
Mekhrubon
cont не использует exceptions
а почему тогда не работает связка cont и catch?
Mekhrubon
throw и cont работает
Alexander
т.к. не написать инстанс для отлавливания исключения не теряющий состояния
Alexander
MonadThrow m => MonadThrow (ContT * r m)
Alexander
тут throw от нижележащей монады берется
Alexander
а разумный catch не написать
Mekhrubon
да, в сорцах как раз и комент такой есть
Mekhrubon
спасибо
Maxim
Народ. Есть список [a], я делаю по нему traverse_ функцией a -> IO (), причём для всех элементов списка кроме не более одного функция превращается в return (). Можно как-то после этого одного элемента сделать break? Короче задача найти в списке нужный элемент, если он есть, и сделать с ним какое-то ио
Anonymous
Может, разделить эти 2 шага: 1) найти нужный элемент чистой ф вне ио 2) ио с этим элементом ?
Aragaer
filter + head, а потом io
Maxim
Гм, filter. Вечно забываю про ленивость!
Nikolay
Вот у нас есть категория Hask. В ней объекты все типы без дырок? Т.е Maybe Int, [Int] тоже объекты в ней ?
Nikolay
А как понимать return в монаде? Это морфизмом откуда и куда?
Nikolay
Я про то, что return умеет объект Int перевести в maybe int. Значит ли это что это морфизмом в исходной категории?
Dmitry
А исходная -- какая?
catostrophe
Т.к. ты остаешься в Hask
Nikolay
Т.к. ты остаешься в Hask
Если у меня функтор maybe, то я перехожу в подкатегории Hask. В ней объекты maybe с конкретным типом. Например просто int там уже нет
Ilya
Это не отменяет того, что ты останешься в Hask
Nikolay
Это не отменяет того, что ты останешься в Hask
А как это так, если у нее объекты уже не все?
Ilya
А как это так, если у нее объекты уже не все?
Образ отображения не обязан совпадать с кодоменом отображения
Alexander
а у WT как всегда прекрасный пост: https://well-typed.com/blog/2018/05/ghc-special-gc-objects/
Ilya
Например функция возведения в квадрат действует из R в R, но образ R получается меньше R (только неотрицательные).
Ilya
Аналогично, функтор не обязан "покрывать" всю категорию, в которую он отображает
Ilya
Это вообще-то к теории категорий даже отношения не имеет
Nikolay
Но мы вводим категорию как пятерку. И соответственно я бы предположил, что если у нас у нас есть 2 разных пятерки, то это разные категории
Nikolay
В нашем случае объектов становится меньше. Значит и морфизмом меньше.
Nikolay
А какое тогда определение тождественности категорий?
Nikolay
Должно быть определение тождественности, что бы сказать , что категории таковы
Ilya
full functor не имеет?
Это в любой книжке по алгебре объясняется на первых же страницах (различие между F(X) и Y, для F: X -> Y)
Ilya
И не важно, будет F функтором, функцией, чем угодно
Oleg
Это в любой книжке по алгебре объясняется на первых же страницах (различие между F(X) и Y, для F: X -> Y)
Ну тока в этих книжках используется предположение, что мы говорим о множествах
Oleg
Т.е. для не-локально -маленькой категории это может служить в лучшм случае интуицией
Oleg
Но вообще, я не с этим спорил
Oleg
Я спорил с тем, что понятия full /faithful не важны для теорката. Ну или как ты сформулировал "не имеют отношения к нему". Возможно, я неправильно понял посыл
Евгений
Но мы вводим категорию как пятерку. И соответственно я бы предположил, что если у нас у нас есть 2 разных пятерки, то это разные категории
Ты можешь ввести понятие подкатегории (не очень полезное, но всё равно), и заметить, что если у тебя есть функтор F: X -> Y, а Y -- подкатегория Z, то можно рассмотреть функтор F': X -> Z, заданный аналогичным образом, т.е. F'(A) = F(A) и F'(f) = F(f).
Oleg
Ааааа сорян посоны, перечитал исходный посыл
Oleg
Мы говорим не о full/не full. Мы говорим о том, что у функтора не все объекты в образе
Евгений
Ну да, его смущает, что образ меньше исходной категории
Oleg
Ну тут сложно сказать "меньше"
Oleg
Так-то вроде в не слишком заумных языках тайп-конструкторы инъективны
Oleg
Т.е. в случае эндофунктора для тайп-конструктора мы получаем "такой же по размеру"
Ilya
Так-то вроде в не слишком заумных языках тайп-конструкторы инъективны
правда опять же, это факт "ниже" теории категорий, и его можно объяснить на простых алебрагических примерах
Nikolay
Главный вопрос - return это морфиз откуда и куда ?
Ilya
правда опять же, это факт "ниже" теории категорий, и его можно объяснить на простых алебрагических примерах
f x = 2*x инъективна на N (натуральных числах), но тем не менее в кодомене есть ещё и "лишние" элементы (нечетные числа)
Alexander
В нашем случае объектов становится меньше. Значит и морфизмом меньше.
для бесконечных множеств такая логика не работает
Oleg
правда опять же, это факт "ниже" теории категорий, и его можно объяснить на простых алебрагических примерах
Но ведь наоборот лучше по возможности абстрагироваться от нисшей алгебры в категорные эквиваленты по-возможности
Евгений
a -> f a?
Ну нет, такого типа a (точнее он есть, но я бы не стал стрелки forall a. a -> f a объявлять морфизмами между forall a.a и forall a. f a). Лучше сказать, что return это семейство морфизмов
Nikolay
Да. Вот fmap - это отображение морфизмов. А return это он что наьоро исходных объектов отображает в набор каких объектов?
Nikolay
У каждого морфизма есть dom . Что для returna домен ?
Ilya
Только в худших на свете книжках с динозаврами
типа такой подход уже считается динозаврским? ну окей, не знал
Oleg
Oleg
Вооо, #яжговорил
ну в разном контексте это может быть морфизмом, семейством, индесированном объектом или объектом-и-эндофунктором