@haskellru

Страница 1210 из 1551
Alexander
19.05.2018
13:23:01
https://hackage.haskell.org/package/union

этот пакет

Антон
19.05.2018
13:23:28
есть либы с ними, но они были с адским апи
Апкаст с обязательными декларациями типа?

Alexander
19.05.2018
13:23:55
но это не совсем сабтайпинг, сабтайпинг по структуре это все же винил и товарищи

Google
Alexander
19.05.2018
13:24:14
я вообще не осилил нормально что-либо с ним писать

нужно 2 мозга иметь

Denis
19.05.2018
13:24:48
https://github.com/target/row-types/

Антон
19.05.2018
13:25:40
https://hackage.haskell.org/package/union
Выглядит дико. И потом, в Хаскелле разве есть type universe?

Alexander
19.05.2018
13:25:59
а ещё гист от клапауций есть (на имплиситах)

Выглядит дико. И потом, в Хаскелле разве есть type universe?
вроде вполне стандартное решение; а/что/где type universe

Антон
19.05.2018
13:29:23
вроде вполне стандартное решение; а/что/где type universe
Из доки: A union is parameterized by a universe u, an interpretation f and a list of labels as

Alexander
19.05.2018
13:30:52
необновленные доки?

u - кайнд

as :: [u]

universe тут в этом смысле

Yura
19.05.2018
14:04:57
кстати вопрос - чем чревато, что nix-build собирается с одной версией cabal а в nix-shell запускается с другой?

не снесет ли от этого крышу ghc-mod или еще чему-то похожему?

Google
IC
19.05.2018
14:53:02
А самому по принципу data types a la carte не подходит?
это мысля... а готовой реализации :+:, `⊗`и прочих нет?

Denis
19.05.2018
14:53:44
хаскелю бы Variant/VariantF как в пурсе

ну и рекорды как в пурсе)

Антон
19.05.2018
14:58:41
ну и рекорды как в пурсе)
С FieldNamePuns, что ли?

Denis
19.05.2018
14:59:07
Oleg
19.05.2018
14:59:10
Антон
19.05.2018
14:59:30
kana
19.05.2018
14:59:44
ну тогда бы сам row polymorphism, если он конечно так уж сильно нужен

Denis
19.05.2018
14:59:45
Антон
19.05.2018
15:00:06
есть еще compstrat
Тупо нагуглил

Denis
19.05.2018
15:00:08
kana
19.05.2018
15:00:26
вроде как он полноценно эмулируется через тайплевел-списки с семействами для констрейта на поиск мебмера

Denis
19.05.2018
15:00:30
Тупо нагуглил
есть презентация от типа, что написал compstrat

Антон
19.05.2018
15:00:37
Жалко, что data type a la carte требует перекрывающихся инстансов :(

kana
19.05.2018
15:00:55
да нормально выглядит

IC
19.05.2018
15:01:53
http://hackage.haskell.org/package/compdata
померло ещё на 8.2

Антон
19.05.2018
15:02:58
померло ещё на 8.2
Ну, я не настоящий хаскеллист

IC
19.05.2018
15:03:18
да там на гитхабе уже висят и баги и фиксы на это дело

Denis
19.05.2018
15:03:23
да нормально выглядит
ну сравни на пурсе и на хаскель)

Google
IC
19.05.2018
15:03:36
а винил прям совсем-совсем тормозной?

Oleg
19.05.2018
15:03:57
вроде как он полноценно эмулируется через тайплевел-списки с семействами для констрейта на поиск мебмера
как-то a64m рассказывал о великолепном перфомансе коспилятора на таких списках

kana
19.05.2018
15:03:59
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
19.05.2018
15:05:07
а теперь сравни когда мемберов много

kana
19.05.2018
15:05:35
ну вот выше сделал пример с "много"

kana
19.05.2018
15:09:09
а это важно? В пурсе это кроме рекордов мало где нужно же и больше мешает

Oleg
19.05.2018
15:09:19
и синтаксис не пурскриптовый

kana
19.05.2018
15:09:25
так про то и речь

Oleg
19.05.2018
15:09:54
Quet
19.05.2018
15:10:31
интересно есть ли какие концептуальные проблемы сделать в хаскеле рекорды как в пурсе

а не это недоразумение которое сейчас

Oleg
19.05.2018
15:10:43
в пурсе это превращается в обжекты, которые jit ом превращаются в структуры

а в хашкеле у тебя сразу структуры

Quet
19.05.2018
15:12:02
так, и в чем проблема?

Oleg
19.05.2018
15:12:14
и непонятно, нужно ли делать first-class типизированные мапы

и встраивать их в язык, где всё каррировано, т.е. по сути position-indexed

Google
Denis
19.05.2018
15:13:46
вот у Кметта когда-то было https://github.com/ermine-language/ermine/blob/master/stdlib/Prelude/Record.e

Oleg
19.05.2018
15:14:27
Кметт этот язык писал для генерации отчётов. Чтобы аналитики херак херак и репорт

А вы же вроде программисты тут. А желания как у кложуристов

Quet
19.05.2018
15:15:55
казалось бы как связана кложура и рекорды в пурсе..

Oleg
19.05.2018
15:17:03
казалось бы как связана кложура и рекорды в пурсе..
рекорды в пурсе для снятия части швов во взаимодействии с жс

не могу же я в приличном чате сказать "желания как у жаваскриптеров"

kana
19.05.2018
15:22:58
че кстати какой констрейнт всегда невыполим? Какой-нибудь VoidC :: Constraint

ну вообще идея, конечно в именованных полях
я думал, что идея роу-полиморфизма именно в тайплевел-сетах

Oleg
19.05.2018
15:26:21
вот тебе с оф сайта



обратить внимание на inferred type

kana
19.05.2018
15:28:17
так это конкретно в пурсе же, потому там через него рекорды выражаются, это могло быть ад-хок решением

Oleg
19.05.2018
15:28:50
тайп-фэмилис помимо того, что работают с тайп-левельными списками и твои алгоритмы субтайпинга будут для них квадратичной и кубичной сложности

ещё и всегда partial

у тебя нет тотальной typelevel - операции которая скажет "для любых вот таких рекордов я могу вычислить тип", ты в лучшем случае можешь наконстрейтить "для любых вот таких рекордов, в случае если компилятор вычислит мне тип"

kana
19.05.2018
15:32:15
1. потому что списки, а не сеты, как я предполагаю и есть все же основа рядового 2. не тотальное - это не проблема же, мы точно так же верим, что в пурсе проверка на элементы роу сета реализована тотально, как верим, что мембер тотальный

все выше - детали реализации, я спрашиваю про то, является ли это совершенно другой вещью, или же вполне себе выражение роу из пурсы, пусть не эффективное

Google
Oleg
19.05.2018
15:34:12
1. потому что списки, а не сеты, как я предполагаю и есть все же основа рядового 2. не тотальное - это не проблема же, мы точно так же верим, что в пурсе проверка на элементы роу сета реализована тотально, как верим, что мембер тотальный
1. ниче не понял 2. партиал на уровне компилятора - это очень большая проблема. Она становится неразрешимой, когда мы начинаем говорить об existential, что означает, что ты должен заранее вмечте с existential протащить все свои инстансы ТФ для всех последующих операций с ним

kana
19.05.2018
15:34:24
мол если дело только в перформансе и то, что синтаксис не такой няшный, как в пурсе, то это конечно проблемы, но не критикал

Oleg
19.05.2018
15:35:26
мол если дело только в перформансе и то, что синтаксис не такой няшный, как в пурсе, то это конечно проблемы, но не критикал
Ну это дело каждого, что ему критикал. Большинству эти рекорды вообще не нужны. Просто не стоит говорить, что роу-пооиморфизм через ТФ - полноценная замена какая-то

kana
19.05.2018
15:35:57
окей, слово "полноценно" там лишнее

Oleg
19.05.2018
15:48:21
по крайне в мере в скалке с такими рекордами нахлебался Именно из-за вот этой частичности тайп фемелей. В х-ле исчерпывающего опыта нет, конечно

Я правильно понимаю, что твой рекорд может иметь два поля с одним именем и разными типами?

kana
19.05.2018
15:52:05
да, как и в пурсе

Но мне все же интересно, говорим ли мы про одно и тоже

Имеет ли роу полиморфизм к рекордам хоть какое-нибудь отношение кроме того, что их можно реализовать через роу для отображения на типе списка полей с их типами (и сабтайпинг там)

Oleg
19.05.2018
16:04:30
да, как и в пурсе
насколько я понимаю, в пурсе - нет

иначе не понимаю, во что такой рекорд в рантайме превращается

kana
19.05.2018
16:07:40
Просто он будет не населен

Что точно так же можно сделать и тут, повесив констрейт на конструктор

Oleg
19.05.2018
16:11:25
Имеет ли роу полиморфизм к рекордам хоть какое-нибудь отношение кроме того, что их можно реализовать через роу для отображения на типе списка полей с их типами (и сабтайпинг там)
ну да, самая обыденная операция, например - слить два рекорда в один, убедившись, что результат слияния можно спроецировать на требуемый тип. Однако, естественно, что ты там хочешь не просто мержить, а всякий реюзабельный функционал юзать, инстансы, эффекты. Отсюда полиморфизм и появляется, но в то же время должен сохранять информацию на уровне "сумма полей двух этих больше этого"

проблемы там в общем, что нужны самые простые вещи: априорная ассоциативность, идемпотентность суммы именно в полиморфном смысле

иначе для любой операции тебе нужно набрать сорок констрейтов, чтобы наперёд всё выполнить

Я догадываюсь, что для этого вместо HList подобных структур можно использовать сами прямо контексты, т.к. они обладают похожими свойствами. Но не видел реализаций

Alexander
19.05.2018
17:57:13
в твиттере классный срачик про документацию

Страница 1210 из 1551