кана
чего хочется:
кана
фишка в том, что вызвать head_ не имея Partial констейта нельзя
Зигохистоморфный
HasError Error как-то так?
Denis
чего хочется:
надо IO иметь, чтобы у списка взять голову 😕
Cheese
надо IO иметь, чтобы у списка взять голову 😕
нет, здесь IO, чтобы обойти Partial
Alexander
for some definition of обойти
Alexander
где оно до WHNF
Denis
нет, здесь IO, чтобы обойти Partial
как это меняет то что я сказал?
Alexander
head_ [error "Hallo!", 2::Int]
Cheese
как это меняет то что я сказал?
предполагается, что ты в большинстве не захочешь обманывать типы, то есть для получения головы IO не нужен
Alexander
вообще типы/теги/аннотиции для expected failures и exceptions я бы хоел
Alexander
а идеально как ликвид хаскеле, чтобы они могли убираться в каких-то случаях
Alexander
Alexander
Там именно так
кана
да, идея оттуда, я просто только что узнал что в хаскеле тоже можно 0-арные классы
Cheese
headNote :: Partial => String -> [a] -> a headNote note x = withFrozenCallStack $ fromNote note "headNote []" $ headMay x https://www.stackage.org/haddock/lts-11.2/safe-0.3.17/Safe.html#v:headNote
Cheese
правда, там Partial автоматически удовлетворяется, его не надо соблюдать
Cheese
хм, кажется, withFrozenCallStack делает противоположное тому, что хотел автор
Alexander
кстати о safe
Alexander
очень странно что его не снойман написал
Alexander
тот ещё хтонический ужас
Зигохистоморфный
кстати о safe
бывает очень полезной)
Alexander
зачем?
Denis
а safe кто-то юзает вообще?
Alexander
уверен что да
Alexander
кстати покажите его кто-нить кложуристам
Leonid 🦇
я его через errors использую
Alexander
в errors hoist-ы хорошие
Leonid 🦇
там еще note noteT, hush, hushT
A64m
safe это ужас от которого нас спасли линзы
Зигохистоморфный
Alexander
ну это несколько факультативные функции имхо
A64m
ну всякие readMay, readEither
так есть соотв. призма
Зигохистоморфный
A64m
_Show
Зигохистоморфный
а пример?
A64m
а пример?
Prelude Control.Lens> "42" ^? _Show @Int Just 42
Зигохистоморфный
Prelude Control.Lens> "42" ^? _Show @Int Just 42
ну как бы линзы очень большой пакет, тащить ради только этого
Anonymous
а что у нас сэры, пэры и прочие господа для графов юзают?
Мусье нужна база графов? https://hackage.haskell.org/package/fgl
Denis
я либу видел, интересно что кто юзает и зачем
A64m
ну как бы линзы очень большой пакет, тащить ради только этого
все разно уже ради чего-то затащено, а вот сейф больше ни для чего не нужен
кана
такую фигню без AllowAmbiguousTypes можно сделать? чтобы потом через TypeApplications t юзать
A64m
вероятно нет, а что ghc говорит?
кана
кана
в принципе это логично, что без AllowAmbiguousTypes нельзя
A64m
вообще если что-то собираетесь юзать через TA, а без него непонятно как то это просто должно требовать включения AAT потому что весь смысл AAT чтоб по ошибке не написали код, который без TA использовать нельзя
Anonymous
я либу видел, интересно что кто юзает и зачем
topsort https://hackage.haskell.org/package/fgl-5.6.0.0/docs/Data-Graph-Inductive-Query-DFS.html кратчайший путь https://hackage.haskell.org/package/fgl-5.6.0.0/docs/Data-Graph-Inductive-Query-SP.html BFS https://hackage.haskell.org/package/fgl-5.6.0.0/docs/Data-Graph-Inductive-Query-BFS.html
кана
кана
кана
не знаю, зачем это, когда есть линзы захотелось просто
Anonymous
Да, с малым объёмом данных. Про память ничего плохого не скажу. Работает хорошо. Когда выбирал несколько лет назад, ничего удобнее не нашёл. Может, уже появились хорошие альтернативы. Кажется, популярная: https://www.stackage.org/nightly-2018-01-27/package/fgl-5.6.0.0/revdeps
Denis
гуд
Denis
тоже смотрел на неё
A64m
с малым объемом данных я просто containers использовал
кана
тайп-аргументы ведут себя все таки не совсем как обычные аргументы
Cheese
вроде algebraic-graphs хорошо работает с графами
Cheese
(ну, автор так утверждал)
A64m
это же язык какой-то
Cheese
простите, я имел в виду https://hackage.haskell.org/package/algebraic-graphs
A64m
там работа с графами теперь появилась? Это же был файнл таглесс едсл, которому какой-то бекенд требовался типа контейнеров или фгл-а
A64m
в generic-lens, кстати, траверсалы сделали (но вроде не зарелизили еще)
кана
заменил пары на массивы
кана
кана
Aminion
Лист компрехеншн, если ему скормить 0,0 .. 0, генерит бесконечно нули, это баг или фича?
Denis
Фича: пока меньше или равно - генерит, как станет больше - останавливается.
A64m
это не лист компрехеншон, а Enum, и Enum, наверное половина всех хаскельных стандартных втф-ов
Denis
[0 .. 0] то конечный
The sequence enumFromThenTo e1 e2 e3 is the list [e1,e1 + i,e1 + 2i,…e3], where the increment, i, is e2 − e1. If the increment is positive or zero, the list terminates when the next element would be greater than e3; the list is empty if e1 > e3. If the increment is negative, the list terminates when the next element would be less than e3; the list is empty if e1 < e3. https://www.haskell.org/onlinereport/haskell2010/haskellch6.html#x13-1310006.3.4
分解物質
как так получилось что System.IO функции разбрасываются ексцепшенами на каждый случай вреде "нет файла"?
分解物質
а как должно быть?
информация об ошибке в Either
Влод
информация об ошибке в Either
ну да в целом неприятная шелупонь в base сложилась
Влод
было бы удобно в типе видеть что может произойти
Влод
ещё функции над хендлерами как в сишечке
分解物質
почему?
1. потому что случаи вроде "нет файла" это ожидаемая, частая ситуация, которую в нужно нормально обработать 2. более канонично?