
Alexander
15.02.2018
21:20:45
кто это не видит, у того integer overflow не триггерится

Yuriy
15.02.2018
21:20:47
какая логика в двух мажорах?

Alexander
15.02.2018
21:21:07
чуть большая, чем в двух мажорах в семвере
там они спрятаны в 0 и 1

Google

Alexander
15.02.2018
21:21:14
=-)
в том, что степень изменений и поломок может быть разная

Yuriy
15.02.2018
21:21:38
"ты втираешь мне какую-то дичь"

Artyom
15.02.2018
21:21:40

Alexander
15.02.2018
21:22:03
или как я покажу, что я сломал все ваши юзкейсы т.к. изменилась семантика
без изменения API
по семверу я кстати не должен менять мажорную версию :P

Yuriy
15.02.2018
21:22:22
согласен, SemVer для разработчиков, PVP для маркетинга

Alexander
15.02.2018
21:22:29
fuf
ага
0->1 не для маркетинга?

Yuriy
15.02.2018
21:22:58

Alexander
15.02.2018
21:23:40
в PVP у меня есть возможность указывать зависимости по второй версии

Google

Yuriy
15.02.2018
21:23:47

Alexander
15.02.2018
21:23:50
например для каких-нить либ где я завишу не сильно

Yuriy
15.02.2018
21:24:12
пусть программа сломается, но не сильно

Alexander
15.02.2018
21:24:17
в PVP есть все плюсы семвера, без его идиотизма
кастую сюда нелюбителей upper bounds

Yuriy
15.02.2018
21:24:40
пусть пользователь умрёт, если не до конца

Alexander
15.02.2018
21:24:54
которым семвер портит жизнь окончательно и безповоротно
а ПВП позволяет работать на свой страх и риск
semver абсолютно бесполезный, с ним ничего нельзя сделать хорошо
блин у меня какая-то плохая методичка для фанатиков
(не относится к нашему сообществу) вообще кстати интересно среди любителей stackage/stack workflow, нелюбителей upper bounds, и любителей semver огромная корреляция
учитывая, что по хорошему эти вещи друг другу противоречат
т.е. хочешь чтобы семвер толк приносил - ставь аппер баунды
ставишь аппербаунды - ломаешь жизнь стекенджу

Pig
15.02.2018
22:24:23
Лучше бы роботы ставили версии

Quet
16.02.2018
03:17:18
@qnikst https://youtu.be/oyLBGkS5ICk?t=29m52s ) вот там про семвер хорошо

Daniel
16.02.2018
07:26:48

Alexander
16.02.2018
07:50:04

Mikhail
16.02.2018
08:55:10
есть список tupl'ов, каждый из трех элементов. как добавить в каждый tuple четвертый элемент, равный сумме длин всех предыдущих третьих элементов?
то есть есть что-то такое:

Google

Mikhail
16.02.2018
08:56:08
("INIT","","")
("JUMP","foo","56")
("JUMPDEST","bar","5b")
("PUSH","0x99","6099")
("PUSH","0x88","6088")
("MUL","","02")
("PUSH","0x6677","616677")
("SSTORE","","55")
("JUMPDEST","foo","5b")
("PUSH","0x88","6088")
("SLOAD","","54")
("JUMPI","bar","57")
("STOP","","00")
Нужно к каждой строчке добавить смещение
императивный способ был бы такой - пройти все циклом, добавляя длину третьего элемента в переменную и записывая в 4-й элемент

Denis
16.02.2018
08:59:46
Сделай структуру с 4 элементами и в четвертой пусть будет Maybe тогда если ничего нет там будет Nothing, иначе Just value

Mikhail
16.02.2018
09:02:17
что я делаю сейчас, но явно неверно
computeOffsets :: [(String,String,String)] -> [(String,String,String,String)]
computeOffsets asm = let
l = "ss"
in map (\(x,y,z) -> (x,y,z,l)) asm
ну то есть я могу так посчитать length z, вместо "ss"
но нужна длина еще и всех предыдущих
Maybe мне тут не знаю зачем, это всё строки, и длина тоже будет храниться в хексе

Dmitry
16.02.2018
09:08:09
в чём проблема-то?
обходишь первый список, считаешь смещение, генерируешь второй. можно явной рекурсией. можно фолдом.
можно генерить врайтером
может быть, код более простой получится

Mikhail
16.02.2018
09:08:46
да, наверное фолдл

Dmitry
16.02.2018
09:09:01
обычно,
(String,String,String)
никто не использует, а создают ADT
для которого потом делают pretty printer, что бы его выводить

Mikhail
16.02.2018
09:11:08
можно и list
там все строки

A64m
16.02.2018
09:14:54

Mikhail
16.02.2018
09:15:24
не
третьих элементов туплей, предшествующих текущему

Google

Mikhail
16.02.2018
09:16:19
сумму

A64m
16.02.2018
09:18:27
сумму
> scanl (+) 0 . map (\(_,_,xs) -> length xs) $ [(1,1,"1"),(2,2,"22"),(3,3,"333")]
[0,1,3,6]

Alexander
16.02.2018
10:36:46
так а какой там пакет из validation считается хорошим?

Leonid
16.02.2018
10:37:53
@qnikst если любишь линзы то http://hackage.haskell.org/package/validation-0.6.2/docs/Data-Validation.html
или этот. https://hackage.haskell.org/package/either-5/docs/Data-Either-Validation.html
тут разве что нет изо линз Valdation<->Either
а нет, есть
Да, в првом есть тайпкласс чтобы валидашки были полиморфные по Validation/Either. я поэтому его взял

Alexander
16.02.2018
10:40:25
ясно
о either в зависимостях есть уже
почему там Monoid а не Semigroup
@lonokhov ?

Leonid
16.02.2018
10:48:24
в каком месте?
applicative с semigroup
Alternative только с monoid, но это естественно. Так есть Alt - оно без empty
и соответсвенно semigroup

Alexander
16.02.2018
10:52:55
документации
data Validation e a Source#
Validation is Either with a Left that is a Monoid

Leonid
16.02.2018
10:54:13
Ну может раньше был monoid

? animufag ?
16.02.2018
10:55:43

Alexander
16.02.2018
10:56:15
да, может документацию не обновили

Google

Alexander
16.02.2018
10:56:24

? animufag ?
16.02.2018
10:59:13
ну это существенно определяет выбор либы
то что моноид вместо полугруппы

Alexander
16.02.2018
11:00:37
да
если ошибка не формирует Monoid то одной из либ может быть пользоваться нельзя
Semigroup e => Semigroup (Validation e a) а как это работает без ограничения на a?
@vlastachu вот я посмотрел на типы и инстансы и увидел что они не нравятся могу посмотреть код и проверить
instance Semigroup e => Semigroup (Validation e a) where
Failure e1 <> Failure e2 = Failure (e1 <> e2)
Failure _ <> Success a2 = Success a2
Success a1 <> Failure _ = Success a1
Success a1 <> Success _ = Success a1
смотрю - вижу, т.к. у них нету Monoid a то они один из выборов семантику
в данном случае из ответов выбирается первый, это далеко не факт, что я хочу, так же может быть последний или все, например
в моей программе мне пофиг, но вообще мне это не нравится

Leonid
16.02.2018
11:06:14
зачем вообще этот инстанс?
по большому счёту это на alt можно же сделать

Alexander
16.02.2018
11:14:14
ну я хотел что-то вроде mconcat [....]

Leonid
16.02.2018
11:14:23
типа https://hackage.haskell.org/package/base-4.9.1.0/docs/Data-Foldable.html#v:asum, но на Alt

Alexander
16.02.2018
11:14:58
в общем оно мне не мешает, но пока я почти не использую validation

Leonid
16.02.2018
11:14:59
и NotEmpty :)

A64m
16.02.2018
11:30:07
мне инстанс "пробовать, пока не получилось" кажется вполне полезным и интуитивно понятным

Leonid
16.02.2018
11:31:28
ну у нас даже у Maybe инстанс с моноидом
тут выбивается из ряда
Может оказаться внезапным