Антон
Жалко, что data type a la carte требует перекрывающихся инстансов :(
кана
да нормально выглядит
IC
http://hackage.haskell.org/package/compdata
померло ещё на 8.2
Антон
померло ещё на 8.2
Ну, я не настоящий хаскеллист
IC
да там на гитхабе уже висят и баги и фиксы на это дело
Зигохистоморфный
да нормально выглядит
ну сравни на пурсе и на хаскель)
IC
а винил прям совсем-совсем тормозной?
Oleg
вроде как он полноценно эмулируется через тайплевел-списки с семействами для констрейта на поиск мебмера
как-то a64m рассказывал о великолепном перфомансе коспилятора на таких списках
кана
z :: forall r. Y (_ :: X | r) t :: Y (_ :: X) k :: forall r. Y (_ :: X, _ :: C | r) -- vs z :: Member X r => Y r t :: Y '[X] k :: Members '[X, С] r => Y r
кана
ну сравнил
кана
и че
IC
а теперь сравни когда мемберов много
кана
ну вот выше сделал пример с "много"
кана
а это важно? В пурсе это кроме рекордов мало где нужно же и больше мешает
Oleg
и синтаксис не пурскриптовый
кана
так про то и речь
Quet
интересно есть ли какие концептуальные проблемы сделать в хаскеле рекорды как в пурсе
Quet
а не это недоразумение которое сейчас
Oleg
в пурсе это превращается в обжекты, которые jit ом превращаются в структуры
Oleg
а в хашкеле у тебя сразу структуры
Quet
так, и в чем проблема?
Oleg
и непонятно, нужно ли делать first-class типизированные мапы
Oleg
и встраивать их в язык, где всё каррировано, т.е. по сути position-indexed
Зигохистоморфный
вот у Кметта когда-то было https://github.com/ermine-language/ermine/blob/master/stdlib/Prelude/Record.e
Oleg
Кметт этот язык писал для генерации отчётов. Чтобы аналитики херак херак и репорт
Oleg
А вы же вроде программисты тут. А желания как у кложуристов
Quet
казалось бы как связана кложура и рекорды в пурсе..
Oleg
казалось бы как связана кложура и рекорды в пурсе..
рекорды в пурсе для снятия части швов во взаимодействии с жс
Oleg
не могу же я в приличном чате сказать "желания как у жаваскриптеров"
кана
че кстати какой констрейнт всегда невыполим? Какой-нибудь VoidC :: Constraint
кана
ну вообще идея, конечно в именованных полях
я думал, что идея роу-полиморфизма именно в тайплевел-сетах
Oleg
вот тебе с оф сайта
Oleg
Oleg
обратить внимание на inferred type
кана
так это конкретно в пурсе же, потому там через него рекорды выражаются, это могло быть ад-хок решением
Oleg
тайп-фэмилис помимо того, что работают с тайп-левельными списками и твои алгоритмы субтайпинга будут для них квадратичной и кубичной сложности
Oleg
ещё и всегда partial
Oleg
у тебя нет тотальной typelevel - операции которая скажет "для любых вот таких рекордов я могу вычислить тип", ты в лучшем случае можешь наконстрейтить "для любых вот таких рекордов, в случае если компилятор вычислит мне тип"
кана
1. потому что списки, а не сеты, как я предполагаю и есть все же основа рядового 2. не тотальное - это не проблема же, мы точно так же верим, что в пурсе проверка на элементы роу сета реализована тотально, как верим, что мембер тотальный
кана
все выше - детали реализации, я спрашиваю про то, является ли это совершенно другой вещью, или же вполне себе выражение роу из пурсы, пусть не эффективное
Oleg
1. потому что списки, а не сеты, как я предполагаю и есть все же основа рядового 2. не тотальное - это не проблема же, мы точно так же верим, что в пурсе проверка на элементы роу сета реализована тотально, как верим, что мембер тотальный
1. ниче не понял 2. партиал на уровне компилятора - это очень большая проблема. Она становится неразрешимой, когда мы начинаем говорить об existential, что означает, что ты должен заранее вмечте с existential протащить все свои инстансы ТФ для всех последующих операций с ним
кана
мол если дело только в перформансе и то, что синтаксис не такой няшный, как в пурсе, то это конечно проблемы, но не критикал
Oleg
мол если дело только в перформансе и то, что синтаксис не такой няшный, как в пурсе, то это конечно проблемы, но не критикал
Ну это дело каждого, что ему критикал. Большинству эти рекорды вообще не нужны. Просто не стоит говорить, что роу-пооиморфизм через ТФ - полноценная замена какая-то
кана
окей, слово "полноценно" там лишнее
Oleg
по крайне в мере в скалке с такими рекордами нахлебался Именно из-за вот этой частичности тайп фемелей. В х-ле исчерпывающего опыта нет, конечно
Oleg
Я правильно понимаю, что твой рекорд может иметь два поля с одним именем и разными типами?
кана
да, как и в пурсе
кана
Но мне все же интересно, говорим ли мы про одно и тоже
кана
Имеет ли роу полиморфизм к рекордам хоть какое-нибудь отношение кроме того, что их можно реализовать через роу для отображения на типе списка полей с их типами (и сабтайпинг там)
Oleg
да, как и в пурсе
насколько я понимаю, в пурсе - нет
Oleg
иначе не понимаю, во что такой рекорд в рантайме превращается
кана
Просто он будет не населен
кана
Что точно так же можно сделать и тут, повесив констрейт на конструктор
Oleg
Имеет ли роу полиморфизм к рекордам хоть какое-нибудь отношение кроме того, что их можно реализовать через роу для отображения на типе списка полей с их типами (и сабтайпинг там)
ну да, самая обыденная операция, например - слить два рекорда в один, убедившись, что результат слияния можно спроецировать на требуемый тип. Однако, естественно, что ты там хочешь не просто мержить, а всякий реюзабельный функционал юзать, инстансы, эффекты. Отсюда полиморфизм и появляется, но в то же время должен сохранять информацию на уровне "сумма полей двух этих больше этого"
Oleg
проблемы там в общем, что нужны самые простые вещи: априорная ассоциативность, идемпотентность суммы именно в полиморфном смысле
Oleg
иначе для любой операции тебе нужно набрать сорок констрейтов, чтобы наперёд всё выполнить
Oleg
Я догадываюсь, что для этого вместо HList подобных структур можно использовать сами прямо контексты, т.к. они обладают похожими свойствами. Но не видел реализаций
Alexander
в твиттере классный срачик про документацию
Alexander
гонзлес развел
Alexander
не дальше от Haskell чем обсуждение рядового полиморфизма
Alexander
или мне нужно процитировать твиты, чтобы это автоматом онтопиком стало?
Alexander
https://mobile.twitter.com/GabrielG439/status/997139222711562243
Alexander
отсюда началось
Евгений
https://mobile.twitter.com/GabrielG439/status/997139222711562243
Очевидно же, что в тьюринг-полном языке на уровне сигнатур частичные функции не отличить от полных
Евгений
Поэтому сигнатуры не оч документация
Alexander
это начало, там потом несколько веток дискуссии
Alexander
про то как хорошо писать документацию и что обязан сделать автор перед тем как выкладывать пакет
Евгений
Твиттор неудобно. Запилите канал с разбором твиттер-срачей
Евгений
Как у медузы про политоту, только для хаскелистов
Антон
https://mobile.twitter.com/GabrielG439/status/997139222711562243
Какой-то ноунейм> This is what Haskeller actually believe Денис Шевченко> We don't believe it, we definitely know it.
Alexander
на самом деле хоть это и не совсем онтопик было бы интересно послушать мнения