
Pineapple
26.06.2018
15:56:15
many1 оно называлось в парсеке

Aleksey
26.06.2018
16:00:44

Leonid
26.06.2018
16:01:07
да это не сложно

Aleksey
26.06.2018
16:01:12
Ну может snap какой формы тоже умеет.

Google

Aleksey
26.06.2018
16:01:22

Leonid
26.06.2018
16:01:34
ну не на реакте же мне фронт делать

Aleksey
26.06.2018
16:01:40
digestive-functor глянь для форм

Leonid
26.06.2018
16:02:47
ну digestive я использовал

Yuuri
26.06.2018
16:03:22

Aleksey
26.06.2018
16:04:21
В Yesod сносный hamlet, довольно приятный роутер, формочки опять же удобно сделаны - чик-чик и готовая обустрапленая форма с валидацией и прочим. Толко главное - не делать проект по шаблону :)

Alex
26.06.2018
16:04:24
defines_ <- defines
strInRow "protected:"
Есть вот такая кострукция
defines :: Parser [String]
defines = many define
Как сделать чтобы когда define фейлил, сразу вызывался
strInRow "protected:"
( это тоже парсер)
помогите пожалуйста

Aleksey
26.06.2018
16:05:12
try?

Alex
26.06.2018
16:06:21
Действительно
Блин
Я его не туда написал в прошлый раз

Google

Alex
26.06.2018
16:06:35
Видимо уже устал
Спасибо большое

Yuuri
26.06.2018
16:07:26
> Толко главное - не делать проект по шаблону :)
А что с ними?

Andrei
26.06.2018
16:13:48

Alex
26.06.2018
16:22:09
Джентельмены, есть вот такая штука:
data Msg = Msg String String [String] [String] [Fields_t]
Есть какой-то способ подробне указать, что значит каждый параметр там? Я видел что то типа
data A { String::name } можно плиз линк, как так делать, я не могу найти

Piu
26.06.2018
16:23:05

Alex
26.06.2018
16:24:13
Спасибо:)

Yuuri
26.06.2018
16:25:08
http://learnyouahaskell.com/making-our-own-types-and-typeclasses#record-syntax

Piu
26.06.2018
16:27:03

Alexander
26.06.2018
16:27:19

Mikhail
26.06.2018
16:51:04
Привет, братцы! Кто знает почему удалили сундучок мыслей darkus-а ?

Denis
26.06.2018
16:55:09

Andrei
26.06.2018
16:59:00
что-то знакомое, емнип бложек про околофп

Alexander
26.06.2018
17:01:01
Романа Душкин вел блог в ЖЖ с таким названием

Andrei
26.06.2018
17:01:29
oh

Alexander
26.06.2018
17:01:56
можно его на Facebook или в твиттере спросить он там активен
@bravit111 может ты знаешь?

Google

Alex
26.06.2018
17:04:59
Спасибо большое всем, кто сегодня принимал участие в процессе написания моего парсера!
Вы очень здорово помогли

Denis
26.06.2018
17:07:25
и где конечный результат?)

Ilya
26.06.2018
17:11:52
а как в Хаскеле теоремы про type level функции доказывать?

Alexander
26.06.2018
17:12:13
unsafeCoerce

Denis
26.06.2018
17:12:24
:D

Ilya
26.06.2018
17:12:35
вот есть
type family RecTy (l :: Symbol) (lts :: [k1]) :: k where
RecTy l (l := t ': lts) = t
RecTy q (l := t ': lts) = RecTy q lts

Alexander
26.06.2018
17:12:47
все что примитивными TF не покажется не сработает

Ilya
26.06.2018
17:13:09
и
type family DB' (schema :: [(Symbol, [*])]) where
DB' '[] = '[]
DB' ('(l, r) ': fs) = l := [Rec r] ': DB' fs
хочу из RecTy t schema r уметь получать RecTy t (DB' schema) [Rec r]
вроде кажется просто...
unsafeCoerce как-то не очень... но для прототипа сойдет, наверное

Alexander
26.06.2018
17:15:42
не понимаю, RecTy это функция, получить из результат применения функции результат другой функции?

Ilya
26.06.2018
17:16:24
да, я написал, как будто это констрейнт, сорри
хочу RecTy t schema ~ RecTy t (DB' schema), конечно

Denis
26.06.2018
17:17:37

Ilya
26.06.2018
17:18:15
так они не равны, зачем бы иначе огород городить?
schema -- это список пар (Symbol, Row), а DB' schema -- это список пар (Symbol, [Rec r])

Denis
26.06.2018
17:21:30
Row ~ [Rec r]?
насколько я помню то рекорд изоморфен списку пар вроде
тайплевел списку

Google

Ilya
26.06.2018
17:22:16
это да
но DB' берет Row и возвращает тип списка рекордов с этим Row
ok, тут unsafeCoerce помог, а как мне констрейнты коерсить?
как бы мне постулировать RecSize schema ~ RecSize (DB' schema)?

Denis
26.06.2018
17:27:29
но я не знаю точно

Vitaly
26.06.2018
17:29:34

Ilya
26.06.2018
17:29:34
хм. Как-то я им пользовался, там вылезают ошибки типа, которые без Эдварда не понятно, как фиксить ? попробую еще раз

Denis
26.06.2018
17:32:30

Ilya
26.06.2018
17:33:29
да он и отвечает на #haskell, на это вся и надежда ?

Admin
ERROR: S client not available

Alexander
26.06.2018
17:56:28
или TF a b возвращающую Refl a b
а не класс типов, да, то ещё удовольствие в Haskell

Alex
26.06.2018
18:10:26
Получился обычный парсер. Вечером оказалось, что конечный вид меседжей еще не утвержден, так что сам конструктор я пока писать не буду:)
и где конечный результат?)
Или вам интересен сам код?

Yuuri
26.06.2018
18:16:12
Да, можем поревьюить :)

Ilya
26.06.2018
18:44:02
меня продолжает кусать та же ошибка с переименованием:
recSizeOfDB :: forall schema. RecSize (DB' schema) :~: RecSize schema

Google

Ilya
26.06.2018
18:44:56
• 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
26.06.2018
18:45:29
ScopedTypeVariables + forall schema?

Ilya
26.06.2018
18:45:46
и дальше про то, что RecSize is a type function, and may not be injective

Alexander
26.06.2018
18:45:54
ну

Ilya
26.06.2018
18:46:08
но я это знаю, я как раз хочу теорему, что есть равенство ?
ScopedTypeVariables включил

Alexander
26.06.2018
18:46:29
и schema в forall?

Ilya
26.06.2018
18:46:33
forall есть

Alexander
26.06.2018
18:46:36
а можно гист?
у меня наконец-то телеграм на компе есть

Ilya
26.06.2018
18:47:57
можно github: https://github.com/yanok/queLam/blob/master/src/QueLam/R.hs

Alexander
26.06.2018
18:50:36
src/QueLam/Core.hs:44:17: error:
Not in scope: type constructor or class ‘RecVecIdxPos’
|
44 | , KnownNat (RecVecIdxPos l sortedFlds)

Ilya
26.06.2018
18:51:45
Да, там надо патченый superrecord
Стеком должно собираться сорри ?

Alexander
26.06.2018
18:54:53
у меня new-build-ом нормально
так как теперь заставить его сломаться?
чтобы увидеть проблему
@ilya_yanok ^

Ilya
26.06.2018
18:58:35
Хм
блин, сорри, я не закомитил
хм, нет, вроде закомитил
@qnikst у тебя QueLam/R.hs собирается?

Alexander
26.06.2018
19:02:28
7a22bb269b2ce5bf3615a19b77ba5301354a61a1 <- ?