@haskellru

Страница 848 из 1551
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
по семверу я кстати не должен менять мажорную версию :P
сломал семантику => сломал совместимость => должен менять мажор

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

Google
Yuriy
15.02.2018
21:23:47
0->1 не для маркетинга?
нет, для разработчиков. 0 значит, что тебе никто не должен, 1 значит договор

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
@qnikst https://youtu.be/oyLBGkS5ICk?t=29m52s ) вот там про семвер хорошо
я вижу там хикки и даже не хочу открывать ссылку, я неправильно делаю?

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
но нужна длина еще и всех предыдущих
в смысле, вопрос в том, как посчитать длину всех строк в тупле без дублирования? Prelude Control.Lens> ("foo", "bar", "baz") ^. each & length 9

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 инстанс с моноидом

тут выбивается из ряда

Может оказаться внезапным

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