Aliester
не, вроде его цитата
Alexander
Ну ладно тогда.
кана
интересно, какую именно терминалогию он имеет в виду: если базовые функтор/монада/моноид - то не могу согласиться, это появляется и в других языках, а замена одних названий на другие почти ничего не изменит (если назвать монаду флэтмапабл, то лучше понимать не станут..., наверное). Если про кметовские паиринги комонад и монад какие - этого мало и эти люди тихо занимаются своими абстракциями в своих блогах
кана
@bravit111
Vitaly
Лол, Брагилевский скопипастил мое сообщение отсюда
В твиттере это называется "цитата без ссылки!
Vitaly
Просто это были настолько распространённые фразы, что уже как common knowledge
Alexander
Это человек, который утверждает, что "Haskell is useless" и что этот язык должен "Avoid success at all costs".
нет, это было про эффекты и т.п. т.к. в совершенно чистом языке практически ничего сделать нельзя
Alexander
там была диаграмка
Alexander
основная проблема хаскеля для меня - отсутсвие адопшна среди больших компаний
смотря что такое адопшн, во многих больших компаниях минимум отдел есть
Vitaly
😂
Так, я соврал, правильное название «незакавыченная цитата»
Aliester
когда твитер прорывается в реальный мир и ты видишь Брагилевского в чате
Alexander
Окей :)
Alexander
А как может выглядеть крестовый поход против пуристов? Будем исключать их из чатиков?
Андрей
под пуристами в этом чате что имеется ввиду?
Aliester
остракизм
Aliester
отлучение от коммюнити
Антон
Aliester
неприем на работу
Alexander
категорию образуйте сначала! а потом в походы ходите :P
Aliester
обидные обзывательства
Aliester
каждая жопа немного тор
Андрей
двигать
Антон
каждая жопа немного тор
Только что проверил — неправда
Alexander
А что делать с жопой?
если среди идущих в крестовый поход есть жопа, то это проблема
Alexander
под пуристами в этом чате что имеется ввиду?
Люди, которые вытупают за чистоту рядов хаскельного коммьюнити. "Не нюхал теоркат - недостоин (чего бы то ни было)"
Anonymous
под пуристами в этом чате что имеется ввиду?
Те кому не нравится то что ⊥ населяет каждый тип.
Alexander
/me пристально ищет ⊥ в ByteArray#
Alexander
не нашёл
Alexander
Просто она приходит, когда ее не ждешь и не ищешь.
Anonymous
/me пристально ищет ⊥ в ByteArray#
Примитивы несчитово. Это вообще отдельный разговор
Alexander
Просто она приходит, когда ее не ждешь и не ищешь.
оно приходит там, где должно и не приходит, там где не может
Alexander
в unlifted типах, не приходит никогда
Alexander
unsafePerformIO относится к проблеме чуть менее, чем никак
Alexander
и его наличие, никак не создаст bottom в unlifted типах
Alexander
Вот странно, unsafePerformIO есть, а жопы нет
Alexander
это конечно смешно, но я могу только посоветовать ознакомиться с документацией ещё раз
Alexander
чтобы не мешать не связанные вещи друг с другом
Alexander
Это хороший совет, спасибо.
Anonymous
Так разговор не про это, а про то, что не стоит быть пуристом. Совсем упоротым тобишь. Чуть-чуть можно.
Alexander
сделать bottom с unlifted типом можно (было) только при unsafeCoerce#
Alexander
которое может кастануть lifted объект к unlifted
Alexander
тип, а не объект, конечно же
Alexander
с unlifted можно получить только _|_ в виде бесконечного вычисления
Андрей
ну так пока на хаскеле пишешь и всё чисто - проблем нет и быть не может
Андрей
я про то, что выбор "не быть пуристом" звучит странно в хаскель чате
Alexander
я, кстати, не знаю примеров людей которых имеют ввиду
Alexander
вот кто говорит, что не знаешь ТК - недостоин?
Leonid 🦇
/me вообще в последнее вермя перестал обращать внимание на мнение тех у кого нет хаскеля в продакшене
Alexander
но он уже есть почти у всех, а мнения отличаются?
Leonid 🦇
/вставить цитату полонского
Alexander
for some definition of production
Leonid 🦇
но он уже есть почти у всех, а мнения отличаются?
ну вот заходят люди и такие "ой а хаскель ваш такое говно на нем нельзя писать ничего кроме игрушек и зауми". а ты просто не реагируешь, не споришь
Alexander
вон, есть ли у @bravit111 идрис и haskell в продакшене, учитывая, что у него продакшн это учить студентов и писать статьи
Alexander
Это хороший совет, спасибо.
unsafePerformIO вообще достаточно безобидное, можно конечно заалиасить вещи, если не написать {-# NOINLINE #-}, и если очень неосторожным быть то даже unsafeCoerce переизобрести. Но новых неожиданных bottom-ов оно не добавляет
Alexander
А уж сколько таких "невинных" хаков в PureScript...
Alexander
Там reinterpret_cast, когда делают "заныривание" в JS и "выныривание" оттуда с уже новым типом.
Alexander
main = do let ref = unsafePerformIO $ newEmptyMVar putMVar ref 65 putStrLn =<< takeMVar ref
Alexander
вот как-нить так
Alexander
про purescript ничего сказать не могу
Alexander
Ну, unsafePerformIO используется для паттерна с глобальными переменными (или настройками, или переменными окружения). Хотя этот паттерн и не особо нужен.
Alexander
но то что выше можно записать для Storable через storableCoerce :: (Storable a, Storabel b) => a -> IO b storableCoerce a = alloca $ \ptr -> peek =<< castPtr <$> poke ptr a
Alexander
много для чего он может использоваться
Alexander
для анализа памяти возвращаемой FFI вызовами в матчингах и т.п.
Alexander
но там лучше использовать более опасные варинты типа inlineIO и unsafeDupablePerformIO, но там нужно следить, чтобы data dependency было
Alexander
иначе можно как в байтстрингах получить веселье
Leonid 🦇
accursedUnutterablePerformIO
Alexander
ну оно длинное
Alexander
inlineIO - тоже самое
Alexander
но это для morally pure функций
Alexander
аллокация сишного объекта, не такая (а в байтстрингах было так)
Alexander
в общем мой point был в том, что unsafePerformIO сам по себе не мешает проблема с bottom-ами