кана
я представить не могу, что кто-то так будет писать
кана
мало того, у [a] -> Maybe a есть и теоретическое обоснование, которое тоже важно
кана
функция forall a. [a] -> a невозможна теоретически
Ilya
а как часто ты пишешь код вида \(Just x) -> f x?
я и head не вызываю, если не уверен, что пустого списка не будет. и что с того. это разговор в плоскости best practices. ты не можешь представить, а кто-то возьмёт и напишет этот unJust, и компилятор съест.
кана
ну мой поинт был про то, что шанс заюзания head намного выше, чем шанс заюзания \(Just x) -> g
Alexander
функция forall a. [a] -> a невозможна теоретически
А можно в двух словах, что бы это значило? Ну, то есть, слова я понимаю, а почему невозможно, и что будет, если так написать - неясно
Dmitry
а как часто ты пишешь код вида \(Just x) -> f x?
fromJust иногда встречается в моём коде.
Ilya
fromJust иногда встречается в моём коде.
правильно. потому что иногда программист уверен, что значение Nothing не придёт, и тогда fromJust оправдан. точно так же иногда программист уверен, что пустого списка не будет изначально, и тогда частичный head оправдан
Alexander
кроме bottom
кана
А можно в двух словах, что бы это значило? Ну, то есть, слова я понимаю, а почему невозможно, и что будет, если так написать - неясно
это по сути алгебра, то есть пара из двух функций для каждого кейса - () -> a и (a, [a]) -> a (тут правда все таки не []), для первого кейса общую функцию не написать
кана
дело в том, что жс программисты тоже в своем коде уверены, поэтому не полагаются на систему типов)
кана
проблемы две: - иметь правильный тип - правильно обработать значение первая имхо приоритетнее второй, поэтому [a] -> Maybe a уже решение. Остается проблема обработки, которую хаскель не решает (и даже ворнинг не всегда показывает)
кана
но то, что мы не можем обработать - не значит, что нужно игнорировать и первую проблему
кана
так же мне кажется, что "уверен в том, что там Just" - флаг того, что типы неправильные
Alexander
вот не иметь head а иметь только safeHead имхо глупость неописуема
кана
нет, head полезен таки, если падение программы в неожиданном месте - норма
Alexander
глупости
Alexander
фашисткие
кана
иначе программа падает же
кана
без возможности захендлить ошибку
Ilya
нет, head полезен таки, если падение программы в неожиданном месте - норма
было падение от head, будет падение от fromJust . head, в чём разница?
Alexander
не падает если у тебя есть инварианты
Alexander
в том что второе тормозит в добавок
кана
так
кана
сейчас началась полная херня
Alexander
ваще я подробно написал
кана
мы говорим не о разных вещах
Alexander
выше
кана
вот не иметь head а иметь только safeHead имхо глупость неописуема
тогда опиши кейс использования именно head?
кана
только тогда, когда ты уверен, что там есть голова, иначе нужно упасть, ведь это невозможно
Alexander
прочитай выше, меня задолбало тут по полчаса подробно писать, чтобы потом очередной пурист пришел с заставлял с руганью меня повторяться
кана
ебана
Alexander
а потом, мне бы говорили, что я слишком агрессивный и плохо пишу, и вообще тут комьюнити строят
Alexander
в общем есть смысл от призмы _head и head частичной
кана
твои слова: head можно использовать там, где ты уверен, что есть значение, ведь обратный кейс невозможный мои слова: head можно использовать там, где я уверен, что есть значение, ведь иначе следует упасть, ведь это невозможно ты мне отвечаешь: пурист, фашист, глупость
Alexander
значит я неверно прочитал что выше
Alexander
приношу извинения
Alexander
я прочитал как то, что head не нужно, а нужно использовать его безопасную версию
Alexander
возможно из-за части дискуссии выше
Alexander
Два хороших человека всегда найдут способ договориться
Alexander
Но если при этом полгорода в руинах, можно ли это считать успехом? Ощущения как от просмотра супергеройского фильма. Хеппи енд, все радуются, а что там половину мирного населения в расход пустили, никого не заботит
кана
смотри на это иначе
Taras 🦀
😂👍
кана
полгорода живы
ena
полгорода живы
Кто-то жив Это печально
A64m
Мы ж в хаскель за этим и пришли - чтобы компилятор нам помогал, а вот с этими Хэд и тэил из прелюдии начинает кложой пахнуть
ну хаскель это определенно не подходящий язык для желающих бороться с head и tail, потому что это язык не для проверяльщиков, а такой где можно что-то наговнокодить легко и приятно и проверок в принципе хватит, чтоб это все не развалилось и не разъехалось с другой стороны, не то чтобы у проверяльщиков был большой выбор
A64m
т.е. писать какой-то высокоуровнеый код в принципе можно, что без проверок было бы затруднительно, но это не помогатель доказывателя же, в этом направлении будет боль и ужас
ena
В "Иду на грозу" такая атмосфера описана, только для физиков как ваше обсуждение
Alexander
в общем я кажется совсем не понимаю hasql Есть двумерный массив рэнжей, для рэнжей есть инстанс (mkDValue :: Value (Int, Int)) я пишу let arrayOf = array . arrayDimension replicateM . arrayValue in Map.fromList . ([0..6] `Prelude.zip`) <$> (arrayOf . arrayOf) mkDValue Мне отет все та же "ResultError (RowError 0 (ValueError "End of input"))" Как это отлаживать не очень понятно
Alexander
вот черт, это было прямо в документации в примерах использования :(
Vladislav
а есть ли что-то лучше чем pastebin для haskell?
Зигохистоморфный
какбы гисты на гитхабе
Denis
Я сейчас читаю про функтор. Функтор отображает категорию в категорию. Вот и пытаюсь понять, если у меня определен функтор для листа, то что является категориями.
Не так уж и просто изучать Хаскельный функтор через призму функтора математического. Проще думать о контексте, нежели о категориях, в данном случае.
Denis
ИМХО.
Vladislav
lpaste
что-то он у меня не открывается.
Vladislav
у кого-нибудь открывается?
Vladimir
http://isitblockedinrussia.com/?host=lpaste.net
Vladimir
> Yes! It appears that lpaste.net is currently blocked in Russia.
Vladimir
Но, видимо, он и без этого плохо себя чувствует.
Vladislav
http://isitblockedinrussia.com/?host=lpaste.net
охренеть, его-то за что?!
Vladimir
Там же написано, /17.
Vladislav
но он не открывается даже через впн
Artem
Из Чехии не открывается
Artem
Пару месяцев назад, кстати, для него искали мэинтейнеров на Реддите https://www.reddit.com/r/haskell/comments/862k28/looking_for_new_maintainer_of_lpastenet/
Aleksei (astynax)
lpaste автор обещал закрыть вроде
Anonymous
какбы гисты на гитхабе
тоже snippets на bitbucket.org
A64m
чет как начался поиск желающих почитать про линтипы в комитетской рассылочке они и остальные пропозалы прекратили обсуждать. мертвыми прикинулись
Alexander
Почему - прикинулись мертвыми? Читают... Продираются... Офигевают...
A64m
ну да, конечно
Alexander
ну да, конечно
Люблю, когда со мной соглашаются, даже если согласие выглядит как сарказм
A64m
не только выглядит