A64m
Влод
Влод
выразительности суммы типов недостаточно?
分解物質
A64m
вполне кейс
Alexander
@A64m_qb0 а для такого Applicative m => Maybe a -> e -> ExceptT e m a в линзах что есть?
A64m
так сразу не могу сказать
Leonid 🦇
tryIO
分解物質
вполне кейс
почему? разве не правильнее ошибки держать в результате и заставлять их обрабатывать?
分解物質
в хаскеле для этого всё есть под рукой
A64m
нет, нету
Влод
да поясни
A64m
в хаскеле проверяемые экспешены невозможны
Alexander
Alexander
чего там выше очередные генерогенные рекорды?
Alexander
любое значение может содержать любое исключение /thread
A64m
да поясни
https://simonmar.github.io/posts/2017-01-24-asynchronous-exceptions.html
Alexander
+ асинхронные ещё
Alexander
которые прилетуют в любой момент
Alexander
а ещё Either пока тормозит
Alexander
это вам не раст
Alexander
unboxed sum types пока не довезли
分解物質
Влод
ну окей конкаренси совсем боль.
ну вот в сишке например возвращается null из fopen
почему в хаскеле обязательно должен быть эксепшен
Влод
я просто не понимаю этого фатализма резкого
Влод
что мол спросили вполне конкретный вопрос, а вы такие резко в крайности ушли
Влод
мол мы ничего с этим поделать не можем - жизнь опасна и жестока
A64m
потому что уже в IO, в чистом коде есть смысл не исключения использовать, в IO уже нет, они просто удобнее будут
Alexander
я вроде написал почему в haskell невозможно ловить все исключения
Aminion
Alexander
более того нельзя перечислить все типы ошибок которые могут вернуться
Alexander
2 раза написал минимум
Alexander
но похоже это никому не интересно, т.к. мне не отвечали
Влод
ну ладно. я первый свернул тему не туда)
Alexander
расширяемые исключения обычно удобнее чем Either
Alexander
хотя я бы честно хотел видеть какие-то аннотации
Alexander
типа функция может бросить вот это вот, и может что-то ещё
кана
я так понял, если есть
class C a b | a -> b
type family F a b :: Constraint
то сделать
instance F a b => C a b
не получится, так как в F нет некой выводимости b из a (lhs type 'a' do not jointly determine rhs type ‘b’)
Alexander
просто с EItherT все быстро печально становится
Alexander
и толку нету все равно
分解物質
експириенс с обработкой ексцепшенов в хаскеле это одна из причин быстрого падения моей воодушевлённости к хаскелю после прочтения LYAH и написания первых програм
Alexander
а чего их ловить то?
Влод
кана
да вроде как везде: в эффектном коде try/catch, в чистом either/except со своими try/catch
分解物質
а чего их ловить то?
1. когда "исключительная ситуация" это ожидаемая ситуация в моей програме
2. показать нормальное сообщение об ошибке вместо хаскелевского стактрейса
Alexander
а смысле в чем сложность с этим?
分解物質
у меня с catch получалось дико уродливая конструкция которую я ещё долго соображал как сделать
Влод
ну это как спрашивать в чём проблема писать без типов
ты не знаешь наверняка захендлился эксепшен где-то во вложенных функциях или нет
Влод
(хотя лол - я сам же за сегодня дважды написал Left e -> error $ show e)
Aminion
分解物質
Влод
Denis
кана
Alexander
с интегралами, почему не (b-a)/n?
Alexander
чтобы ошибку то не накапливать
Alexander
и потом [0..n] и все
кана
Alexander
ну или (b-a)/delta
Alexander
если хочется так по немногу, то проще уже врапперы написать конечно
кана
кана
осилил генерик, красота
в прод такое тащить нельзя конечно
https://gist.github.com/kana-sama/b7f8a2a405061260a2ee7beafbd59e32
Влод
ну или (b-a)/delta
кажется это численная производная
ну и особо не понял про накопление ошибки
точнее не помню как оно оценивается вроде деление всё равно даст гораздо больше ошибки (ну это интуитивно)
Alexander
2 варианта, или фиксированная дельта, тогда делим конец - начало на дельту получаем число шагов
Alexander
или фиксированное число шагов, тогда длину шага считаем
Alexander
каждая операция с IEEE будет накапливать ошибку, если не использовать спец схемы
Alexander
поэтому a+d+d+d+d....
Alexander
будет не тоже самое что a+d*n, для какого-то n
Alexander
@vlastachu ^
кана
как правильно хендлить такой кейс?
моя ситуация: есть тип, в который можно сетать, нужно научится сетать в (a :*: b) в нужную ветку в зависимости от того, в какую можно сетать
Влод
Alexander
@kana_sama что если оба?
Alexander
ветки
кана
предположительно в обе не получится, но не уверен, что компилятору можно об этом сказать