Artyom
если я просто юзаю buffer и больше ничего, что мне грозит?
Alexander
@lightgreen скорее всего ничего
Alexander
там не большие изменения будут
Oleg
а можно поподробнее? а то я ничего не понял
для того, чтобы, выражаясь вашими словами система имела смысл (soundness), в экспериментальной версии scala по имени dotty запрещают проводить мостик между top и bottom типами Any и Nothing вот такого рода type A >: Any <: Nothing иначе сам факт наличия такого type member без единого объекта, его содержащего, сколлапсил бы всю систему типов в одну точку Any =:= Nothing
Антон
А зачем вообще нужен Top?
Alexander
Top не обязателен, но с ним удобно
Artyom
@qnikst раз уж так, то спрошу ещё про кондуиты есть какой-то кондуит, который считает элементы и делает что-то после каждого N-ного?
Alexander
не думаю, что изкоробки есть
Alexander
я такое руками делал обычно, но я не мастер
Антон
Top не обязателен, но с ним удобно
А что с ним удобно? Ну не делать же id через полиморфизм субтипов же
доня.
для того, чтобы, выражаясь вашими словами система имела смысл (soundness), в экспериментальной версии scala по имени dotty запрещают проводить мостик между top и bottom типами Any и Nothing вот такого рода type A >: Any <: Nothing иначе сам факт наличия такого type member без единого объекта, его содержащего, сколлапсил бы всю систему типов в одну точку Any =:= Nothing
ага, понял, спасибо но это я немного не так выразился, речь шла не о soundness, а о том какой практический смысл у операции Переслано от Антон же сказал типа "зачем складывать боттом и юнит, в этом же нет смысла", а это soundness никак не нарушает и непонятно зачем делать для этого случая исключение и запрещать его, я вот об этом говорил
кана
А что с ним удобно? Ну не делать же id через полиморфизм субтипов же
палишься, у большинства англоязычный интерфейс телеги Forwarded from
Влод
палишься, у большинства англоязычный интерфейс телеги Forwarded from
ну я думаю он выставляет ретардство на показ одна из форм юмора
Антон
Да, вы тут напомнили — как выразить в Haskell тот факт, что для всех типов, для которых реализован класс типов Foo, автоматически реализовывается класс типов Bar, но при этом не делать Foo констраинтом на тип?
Oleg
учитывая, что всё-таки речь о языке с субтайпингом , странно искать практический смысл сначала спроецировав на F
Зигохистоморфный
Newtype + GeneralizedNewtypeDeriving
Антон
ньютайпом
А чуть подробнее? А то DataTypeContexts задепрекейтили зачем-то
Зигохистоморфный
или я не понял вопрос)
Alexander
тогда через DefaultInstances или как там его
Alexander
class Bar where bar :: Bar a default bar :: Foo a => Bar a bar = foo
Oleg
А чуть подробнее? А то DataTypeContexts задепрекейтили зачем-то
https://hackage.haskell.org/package/base-4.6.0.1/docs/Control-Arrow.html#t:ArrowMonad
Зигохистоморфный
Зигохистоморфный
только как импрувмент в будущем
Зигохистоморфный
тут обсуждали
Alexander
чсв > 80000
Антон
это же квантификация констрейнтов
Та самая, которая недавно в тестовой ветке GHC появилась?
Alexander
instance forall a . Foo a => Bar a <=> instance Foo a => Bar a
Антон
instance forall a . Foo a => Bar a <=> instance Foo a => Bar a
И теперь написать инстанс Bar можно только для типов, для которых реализован Foo
кана
тыкаете свои forall а потом думаете, что это новые фичи
Антон
А, стоп
Антон
Я неправильно понял
Alexander
пожалуйста, если играешь в проксю - проксируй все
Антон
Это ж констрейнт в экземпляре, а не в объявлении класса типов
Зигохистоморфный
Alexander
как? зачем? почему?
Alexander
это другой инструмент
Alexander
тут мы только говорим, как зоделать дефотную имплементацию метода
Alexander
придётся правда писать instance Bar A для всех типов
Alexander
но там идеальных решений нету
Alexander
{-# OVERLAPPABLE #-} instance (Foo a) => Bar a where bar = foo {-# OVERLAPPING #-} instance Bar Int where bar = 6
Alexander
если Int не реализует Foo
Alexander
тогда для всех типов, у которых есть Foo инстанс для Bar будет изкоробки, причем можно определить и для других
Alexander
но потом пойдут вопросы, а для тех кто реализует Baz тоже надо и что делать, особенно для типов, которые и Foo и Baz умеют
Alexander
а в stm-conduit с entangledPair вообще не ясно что делать
Alexander
на этом моменте пойдут и будет все плохо
Alexander
т.е. если для одного класса можно через этот путь или default signatures то, если хочется 2 дефолта то ещё придётся запихнуть метод это разрешающий
Alexander
что возможно, но выглядит как костыли
Alexander
хотя я не уверен, что в этом мире есть подходящее решенеие без явного указания что вызывать в любом из языков
Alexander
где есть множественное отношение принадлежности
Alexander
и по этому отношению строется инстанс
Alexander
@lightgreen похоже обновление stm-conduit откладывается минимум до завтра
Alexander
там все сложно
Зигохистоморфный
интересно https://github.com/nfrisby/coxswain
Зигохистоморфный
https://ghc.haskell.org/trac/ghc/wiki/Plugins/TypeChecker/RowTypes/Coxswain
Зигохистоморфный
@A64m_qb0 ^
Зигохистоморфный
http://hackage.haskell.org/package/HList-0.2.3/docs/Data-HList-GhcSyntax.html
Anonymous
скорее наоборот как раз
Anonymous
Void терминальный Unit инициальный (или наоборот)
Alexander
врятли наоборот
Alexander
хотя я всегда путаюсь
Vladislav
Void начальный, Unit конечный
Vladislav
Потому что из Void к любому другому объекту стрелка начинается (absurd), а в Unit заканчивается (const ())
Alexander
а да
Anonymous
мнемоника, в категории множеств начальный - пустое множество, а конечный - одноэлементное
Alexander
а в логике False и True
Alexander
или не True? то, что из False все следует это ясно
Vladislav
Если стрелка импликация то да, True из чего угодно можно заключить
Cheese
и в религиях из небытия возникает Монада (пифагорейская)
Anonymous
@qnikst, если рассматривать исчисление высказываний в форме натурального вывода как категорию, то да, False и True. это можно глянуть у Стива Ауди или у Ламбека-Скотта еще
Aliester
Быстрые свидания бесполезны. 30 секунд не хватает для того, чтобы объяснить все преимущества функционального программирования на Haskell.
Dmitry
👍