Andrei
что-то знакомое, емнип бложек про околофп
Alexander
Романа Душкин вел блог в ЖЖ с таким названием
Andrei
oh
Alexander
можно его на Facebook или в твиттере спросить он там активен
Alexander
@bravit111 может ты знаешь?
Alex
Спасибо большое всем, кто сегодня принимал участие в процессе написания моего парсера!
Alex
Вы очень здорово помогли
Зигохистоморфный
и где конечный результат?)
Ilya
а как в Хаскеле теоремы про type level функции доказывать?
Alexander
unsafeCoerce
Зигохистоморфный
:D
Ilya
вот есть type family RecTy (l :: Symbol) (lts :: [k1]) :: k where RecTy l (l := t ': lts) = t RecTy q (l := t ': lts) = RecTy q lts
Alexander
все что примитивными TF не покажется не сработает
Ilya
и type family DB' (schema :: [(Symbol, [*])]) where DB' '[] = '[] DB' ('(l, r) ': fs) = l := [Rec r] ': DB' fs
Ilya
хочу из RecTy t schema r уметь получать RecTy t (DB' schema) [Rec r]
Ilya
вроде кажется просто...
Ilya
unsafeCoerce как-то не очень... но для прототипа сойдет, наверное
Alexander
не понимаю, RecTy это функция, получить из результат применения функции результат другой функции?
Ilya
да, я написал, как будто это констрейнт, сорри
Ilya
хочу RecTy t schema ~ RecTy t (DB' schema), конечно
Зигохистоморфный
хочу RecTy t schema ~ RecTy t (DB' schema), конечно
тут хватит доказать что schema ~ DB' schema? или нет
Ilya
так они не равны, зачем бы иначе огород городить?
Ilya
schema -- это список пар (Symbol, Row), а DB' schema -- это список пар (Symbol, [Rec r])
Зигохистоморфный
Row ~ [Rec r]? насколько я помню то рекорд изоморфен списку пар вроде
Зигохистоморфный
тайплевел списку
Ilya
это да
Ilya
но DB' берет Row и возвращает тип списка рекордов с этим Row
Ilya
ok, тут unsafeCoerce помог, а как мне констрейнты коерсить?
Ilya
как бы мне постулировать RecSize schema ~ RecSize (DB' schema)?
Зигохистоморфный
как бы мне постулировать RecSize schema ~ RecSize (DB' schema)?
не знаю, мб как-то заюзать https://www.stackage.org/haddock/lts-11.15/constraints-0.10/Data-Constraint.html#t:Dict
Зигохистоморфный
но я не знаю точно
Vitaly
Ilya
хм. Как-то я им пользовался, там вылезают ошибки типа, которые без Эдварда не понятно, как фиксить 🙂 попробую еще раз
Зигохистоморфный
хм. Как-то я им пользовался, там вылезают ошибки типа, которые без Эдварда не понятно, как фиксить 🙂 попробую еще раз
у него есть пару постов http://comonad.com/reader/2011/what-constraints-entail-part-1/ http://comonad.com/reader/2011/what-constraints-entail-part-2/
Ilya
да он и отвечает на #haskell, на это вся и надежда 🙂
Alexander
или TF a b возвращающую Refl a b
Alexander
а не класс типов, да, то ещё удовольствие в Haskell
Alex
Получился обычный парсер. Вечером оказалось, что конечный вид меседжей еще не утвержден, так что сам конструктор я пока писать не буду:)
Alex
и где конечный результат?)
Alex
Или вам интересен сам код?
Ю ли я? 🤔
Да, можем поревьюить :)
Ilya
меня продолжает кусать та же ошибка с переименованием:
Ilya
recSizeOfDB :: forall schema. RecSize (DB' schema) :~: RecSize schema
Ilya
• Couldn't match type ‘RecSize (DB' schema0)’ with ‘RecSize (DB' schema)’ Expected type: RecSize (DB' schema) :~: RecSize schema Actual type: RecSize (DB' schema0) :~: RecSize schema0
Alexander
ScopedTypeVariables + forall schema?
Ilya
и дальше про то, что RecSize is a type function, and may not be injective
Alexander
ну
Ilya
но я это знаю, я как раз хочу теорему, что есть равенство 🙂
Ilya
ScopedTypeVariables включил
Alexander
и schema в forall?
Ilya
forall есть
Alexander
а можно гист?
Alexander
у меня наконец-то телеграм на компе есть
Ilya
можно github: https://github.com/yanok/queLam/blob/master/src/QueLam/R.hs
Alexander
src/QueLam/Core.hs:44:17: error: Not in scope: type constructor or class ‘RecVecIdxPos’ | 44 | , KnownNat (RecVecIdxPos l sortedFlds)
Ilya
Да, там надо патченый superrecord
Ilya
Стеком должно собираться сорри 😀
Alexander
у меня new-build-ом нормально
Alexander
так как теперь заставить его сломаться?
Alexander
чтобы увидеть проблему
Alexander
@ilya_yanok ^
Ilya
Хм
Ilya
блин, сорри, я не закомитил
Ilya
хм, нет, вроде закомитил
Ilya
@qnikst у тебя QueLam/R.hs собирается?
Alexander
7a22bb269b2ce5bf3615a19b77ba5301354a61a1 <- ?
Alexander
а может не добавлен в cabal
Alexander
точно у тебя ж hpack
Ilya
угу, это все стэк 🙂
Alexander
скорее hpack
Alexander
стек-то ещё куда ни шло
Ilya
стэк сейчас hpack по умолчанию предлагает
Alexander
всегда знал что стек это плохо
Alexander
блин на ноуте опять сдох телеграм и чтож такое
Alex
Это было бы замечательно:)
Alex
Да, можем поревьюить :)
Alex
Завтра скину
Alexander
я заставил ту штуку скомпиляться
Alexander
не ясно что с суперрекордом делать, который неиндуктивный нифига