Leonid 🦇
надо возвращаться к корням. бросать линзы и серванты.
Alexander
это gogol
Alexander
и я не буду его переписывать нормально
Leonid 🦇
гогол на сервантах же
Leonid 🦇
вся проблемы в хаскеле от линз и серванта
Alexander
вроде join $ a ^? foo . _Just . bar взлетело
Alexander
как убрать join?
Leonid 🦇
еще один _Just вставить после bar?
A64m
еще один _Just
Alexander
так, а как сделать чтобы оно мое исключение кинуло, если там Nothing?
Alexander
может и такая магия есть?
Leonid 🦇
я вообще бы view bar <$> view foo a написал
A64m
```(foo . _Just . bar . _Just) `failing error "BANG!"``` (не проверял)
Alexander
error же thunk сделает?
Alexander
а throwM нельзя?
Alexander
я конечно сделал в 2 шага
A64m
не знаю
Alexander
ок
Alexander
автогенеренное API это жесть
Alexander
столько ада и бойлерплейта
Alexander
и не ясно что лучше
A64m
не понятно чего они призмы не генерят
Alexander
окуча ньютайпов и только линзы к ним
Alexander
как же я их люблю
Alexander
и все через maybe
Kirill
гоголь, мёртвые души, что с них возьмёшь...
Leonid 🦇
что с nix возьмёшь
Alexander
интересно как по человечески это сделать
Alexander
вон на том же питоне код нормально для минипримеров выглядит
Alexander
или это т.к. либу гуглеры поддерживают? а тут автогенеренное
Kirill
ты про человеческий апи?
Kirill
питон наверняка суппортят
Leonid 🦇
на питоне тоже нагенерёный
Alexander
ну не сколько апи, сколько его использование
A64m
ну, если б они незаконные линзы с мейбями не генерили, а генерили призмы - было бы foo . bar - куда лучше-то?
Alexander
ещё я думаю в питоне не парятся с Maybe
Kirill
@lonokhov чот https://github.com/GoogleCloudPlatform/google-cloud-python/pull/4851 не похоже на фикс генерилки
Alexander
None и вылетишь с исключением
Leonid 🦇
ну х.з., раньше генерили из какого-то json описания
Leonid 🦇
может это было когда все ещё верили в самоописуемые рест сервисы
Зигохистоморфный
ещё я думаю в питоне не парятся с Maybe
как альтернатива Maybe есть всякие элвисы
Alexander
элвисы?
Alexander
просто вот я вижу код питонячий и там никто не парится что у запроса создания job не будет jobId
Alexander
ясно что это пример и одноразово, но все же
Alexander
хочется примерно тот же уровень удобства написания, ну и плюс гарантии какие-то
Alexander
за которые не платишь +400% строк
Alexander
хотя если в какой-нибудь errors и ExceptT завернуть, может и прилично будет
Зигохистоморфный
элвисы?
https://wiki2.org/en/Elvis_operator
Зигохистоморфный
:D
Leonid 🦇
Вообще большая проблема что хаскелисты любят про "невыразимые инвалидные состояния" затирать. Но в итогде эти темы влепляются не там где нужно, потому что цена ошибки велика, а там где могут это всё выразить.
Зигохистоморфный
так, однажды на самом начале я заметил, что под похожим ником сидит @jqueryismonad или как-то так
Alexander
вот да, это как с тестами
Alexander
тестим то, что просто, а не то, что может поломаться
Alexander
в итоге даже 100% coverage протекает
Alexander
у меня это ад тайпчекнулся
Alexander
все можно PR делать // шутка
Alexander
опять thunk
Leonid 🦇
а ты его форсани
Leonid 🦇
чем там из Data.ByteString.Lazy.Internal принято аккумулировать LBS из чанков?
Cheese
а как ты ещё исключение бросишь? либо форсить, либо в монаде
Cheese
монадические линзы я не видел
Cheese
если только прочитать одной линзой до половины, проверить в монаде, потом прочитать остаток второй линзой
Kirill
чем там из Data.ByteString.Lazy.Internal принято аккумулировать LBS из чанков?
А зачем именно Internal? fromChunks не подходит? Ты как-то кусочно кусочки генеришь?
Leonid 🦇
Разница в том что можно аккумулировать не ([chunk]++), а Сhunk chunk
Leonid 🦇
обойтись без конструктора списков
Kirill
а ++ откуда? Может хотяб (chunk:)?
Leonid 🦇
а потом разворачивать?
Leonid 🦇
chunks = ([chunk1]++) . ([chunk2]++) . ([chunk3]++) $ []
Kirill
λ> (1:).(2:).(3:) $ [] [1,2,3]же
Leonid 🦇
O_o
Leonid 🦇
ну или так
Kirill
ну или через Internal есь λ> (C8.pack "1" `chunk`) . (C8.pack "2" `chunk`) $ "" "12"
Leonid 🦇
да я уже нашел chunk
Kirill
ты лучш покажи тест где оно даст прибавку к пенсии
Leonid 🦇
фу таким быть
Alexander
у тебя deforestation, чтобы конструкторов списков не было
Leonid 🦇
Я не верю компиляторам
Kirill
на этот счёт есть по идее https://github.com/nomeata/inspection-testing
Alexander
@A64m_qb0 а почему в Array# параметр кайнда *