
Leonid
29.03.2018
13:04:26
@qnikst а в ПОМИ РАН? 3 вечера с @bravit111!

Alexander
29.03.2018
13:04:36
типа того
да в ПОМИ еду
а с биокадавцами надо познакомиться, а то биокад есть а я никого оттуда не знаю

Google

Alexander
29.03.2018
13:05:17
или не знаю что знаю

Leonid
29.03.2018
13:06:01
А в Пассаже помещение снимают или офис прямо там? Чёт больно круто для офиса

Alexander
29.03.2018
13:08:41
блин чего-то у меня такое желание переписать бойлерплейта кучу на TH

Vitaly
29.03.2018
13:09:05

Leonid
29.03.2018
13:09:35
Богатая контора

Alexander
29.03.2018
13:09:59
хм.. может им консультанты нужны

Denis
29.03.2018
13:15:42

Leonid
29.03.2018
13:18:44
переписать кучу TH бойлерплейта на CPP

Denis
29.03.2018
13:18:57
cosmic-mind.jpg

Alexander
29.03.2018
13:19:00
ну там простой TH, в общем-то даже на CPP можно

Yuriy
29.03.2018
13:31:05
в аттопарсеке можно как-то посчитать, сколько байтов съел парсер?
там есть match, но весь инпут возвращает, я подозреваю, что смещение можно посчитать как-то более эффективно

Google

Denis
29.03.2018
13:31:39
да, плохо так..
в таком общении сразу проецируешь на тот момент, когда деньги будут должны и представляешь как будет
коллекторство - самая невеселая и сложная часть любой консалтерской деятельности ибо

Alexander
29.03.2018
13:33:23
мне тоже казалось, но что-то не вижу
в IResult ничего нету, например про это
если запускаешь этот IResult то можно самому считать

Denis
29.03.2018
13:34:44
там внутри Parser есть Pos
если написать комбинатор, который его вернет и отмотает континьюэйшен назад, то будет как раз то что надо

Alexander
29.03.2018
13:37:24
а да

Yuriy
29.03.2018
13:37:37
match внутри как раз берёт смещения и возвращает подстроку. надо его разобрать и оставить только смещения

Alexander
29.03.2018
13:38:54
count = Parser $ \s p m f s -> pure p
?

Yuriy
29.03.2018
13:39:50
ага

Denis
29.03.2018
13:43:14

Yuriy
29.03.2018
13:43:49

Denis
29.03.2018
13:43:58
pure p вроде байт схавает и не вернет

Yuriy
29.03.2018
13:44:19
• Couldn't match type ‘r’ with ‘Atto.Pos’
‘r’ is a rigid type variable bound by
a type expected by the context:
forall r.
Atto.State BS.ByteString
-> Atto.Pos
-> Atto.More
-> Atto.Failure BS.ByteString (Atto.State BS.ByteString) r
-> Atto.Success BS.ByteString (Atto.State BS.ByteString) Int r
-> Atto.IResult BS.ByteString r
at lib/RON/Binary.hs:193:10-47
Expected type: Atto.IResult BS.ByteString r
Actual type: Atto.IResult BS.ByteString Atto.Pos
• In the expression: pure pos
In the second argument of ‘($)’, namely ‘\ _ pos _ _ _ -> pure pos’
In the expression: Atto.Parser $ \ _ pos _ _ _ -> pure pos
|
193 | getPos = Atto.Parser $ \_ pos _ _ _ -> pure pos

Denis
29.03.2018
13:45:14
там надо f или s звать
мне по вышеназванным причинам кажется что f, но я не смотрел излишне внимательно!

Google

Yuriy
29.03.2018
13:45:59
придётся-таки match скопипастить
> излишне внимательно
я тебе чрезмерно благодарен

Denis
29.03.2018
13:47:31
ну там надо инстансы смотреть, происходит ли смещение оффсета в них автоматически
Если происходит, то f. Если нет - s.

Yuuri
29.03.2018
13:48:25

Rigidus
29.03.2018
13:50:12
я схожу

Yuriy
29.03.2018
13:56:32
заработало
getPos :: Parser Int
getPos = Atto.Parser $ \t pos more _ suc -> suc t pos more $ Atto.fromPos pos

Denis
29.03.2018
13:58:44

Yuriy
29.03.2018
13:59:46
хотя это тоже не спасёт
если сначала парсить, а потом проверять длину, злоумышленник может бесконечный поток скормить

Denis
29.03.2018
14:00:57
а задача то какая?

Yuriy
29.03.2018
14:02:41
парсить свежепридуманный формат/протокол

Vasiliy
29.03.2018
14:12:57
я ведь правильно понимаю, что Arbitrary инстансы нужно писать в том же файле, где и целевой тип?
мне кажется это странным, мб лучше {-# OPTIONS_GHC -fno-warn-orphans #-} и написать их рядом с Spec.hs где-то?

A64m
29.03.2018
14:13:43
не то чтобы нужно, рекомендуется

Denis
29.03.2018
14:13:52
если орфанов не хочешь - надо писать там же

Alexander
29.03.2018
14:14:03
да, то что выше написали
если написать в Spec то не забыть его заэкспозить
а то мало ли пользователю либы в тестах нужно будет

A64m
29.03.2018
14:14:38
я думаю, что во всякой вспомогательной обвязке для тестирования, отладочной печати и т.д. сирот бояться не нужно

Google

Vasiliy
29.03.2018
14:14:47
я мб глупость сейчас скажу, но разве в таком случае (если писать в том же файле) либа не будет ли зависеть от QuickCheck?

A64m
29.03.2018
14:15:07
будет

Alexander
29.03.2018
14:15:08
будет

Denis
29.03.2018
14:15:11
можно взять hedgehog, который вообще инстансов не требует

Vasiliy
29.03.2018
14:15:26
а это плохо, что она будет зависеть?
(hedgehog интересный, спасибо, не видел, но мне уже лень переходить на что-то еще:))

A64m
29.03.2018
14:15:27
бойлерплейт руками писать требует зато

Denis
29.03.2018
14:15:35
требует

A64m
29.03.2018
14:16:10

Alexander
29.03.2018
14:17:47
в идеале сделать пакет с либой и отдельный пакет с инстансами для квикчек имхо

Denis
29.03.2018
14:18:12

Alexander
29.03.2018
14:18:19
++
к вопросу

Alexander
29.03.2018
14:18:44
чтобы не тянуть зависимость в самой либе, но арбитрари инстансы тоже можно было просто подключить

Vasiliy
29.03.2018
14:18:56
блин, меня смущает, что тестовые зависимости попадают в либу
это ведь влияет на ее размер? (думаю влияет, конечно)
нет, мне, конечно, не очень важен ее размер сейчас вообще, но мне кажется это не оч правильным

Alexander
29.03.2018
14:19:00
как правило "в идеале" противоречит здравому смыслу, так как мир неидеален

A64m
29.03.2018
14:19:11
сделать сироты в тестовом субпакете, только он же будет и от квикчека зависеть

Denis
29.03.2018
14:20:14

A64m
29.03.2018
14:20:56
но эти "бест практисы" не рапространяются на тестирование и интеграцию разных библиотек в приложении
плохо делать сироты в библиотеках
естественно тесты на этот библиотечный случай не распростраяются

Google

Denis
29.03.2018
14:22:08
в приложении как правило появляется все равно как минимум один модуль с сиротами
потому что авторы библиотек не следуют best practices описанным выше

A64m
29.03.2018
14:22:26

Leonid
29.03.2018
14:22:37
в тестах и бинарях можно любую вакханалию устраивать. Если конечно в апстриме не могут инстанс добавить.

A64m
29.03.2018
14:22:54
но в приложении они и не опасны (если только не перемудрить с очень уж сложной структурой приложения)

Denis
29.03.2018
14:23:03

Leonid
29.03.2018
14:23:03
добавление инстанса это мажорный бамп пвп?

A64m
29.03.2018
14:23:50

Leonid
29.03.2018
14:24:31

Denis
29.03.2018
14:25:10
а я кстати не понимаю чего все жалуются
lens тянет много, но все такое дефолтненькое

A64m
29.03.2018
14:29:00
временами lens зависила от не очень дефолтных пакетов вроде аэсона

Leonid
29.03.2018
14:30:26
жсон всюду
так что считай дефолтный

A64m
29.03.2018
14:33:32
а что насчет zlib и utf8-string?

Denis
29.03.2018
14:33:40
вы еще не пишете бизнес-логику в json?
zlib спорненько