Этого треда уже нет.
Это копия, сохраненная 2 марта 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
35 Кб, 460x460
Haskell-тред #3 #495156 В конец треда | Веб
Ребе благословляет этот тред. Красивых всем морфизмов.
#2 #495341
Скажите мне, почему Хаскель - говно? Почему его не стоит учить?
А то я остановится не могу.
#3 #495371
>>495341
Сферический язык в вакууме без задач, вырвиглазный синтаксис. Изучай Scala по ней хоть вакансии есть.
#4 #495395
>>495371

>Scala


>вакансии


Чего ещё расскажешь? На руби у тебя тоже вакансии есть? Отсыпь немного.
>>496351
#5 #495429
>>495341
Русский доучи.
46 Кб, 617x361
#6 #495596
>>495341
Потому что кодинг нужен для решения задач, а хаскель позволяет лишь заняться алгеброй под видом программирования. При этом задачи на нём решать куда менее эффективно, чем на джаве, сишарпе, скале, питоне, руби, джаваскрипте и тд.
>>495622>>498164
#7 #495622
>>495596
иди нахуй, у борща своя предметная область, недавно наткнулся на какого-то ебаната, который сделал сайт на идрисе
>>495627>>639819
#8 #495623
>>495371
посмотрите на этого ленивого генри-милнера
#9 #495627
>>495622

>своя предметная область


>наткнулся на какого-то ебаната


Ясно.
>>495635
#10 #495635
>>495627
может тогда на ассемблере будешь свой петшоп писать?
>>495639
#11 #495639
>>495635

>на ассемблере


Already. GPU, of course.
#12 #495643
Извините что совсем не в тему, но этот тред мне кажется самым подходящим.
Кто-нибудь тут сталкивался с этим бложиком
http://jeremykun.com/
Так вот, мне кажется он невообразимо блевотным. Как-будто автор объясняет на столько хуево и через задницу, на сколько это возможно (вспоминаю своего препа по алгебре). Просто сразу тянет блевать и трисет.
Или это мне все кажется, а на самом деле все норм?
>>495648>>495657
#13 #495648
>>495643
Да не, вроде бы нормально всё. Заодно объясняет, почему программисты не могут в изучение математики.
http://jeremykun.com/2013/02/08/why-there-is-no-hitchhikers-guide-to-mathematics-for-programmers/
>>496067>>556080
#14 #495657
>>495643
а предлог `на` писать отдельно тебя не трисет?
>>495785
#15 #495785
>>495657
Пиздец гуманитарии ебаные понапридумают хуйни неведомой. Лучше бы сидели тихо и в жопу друг-дружку ебали.
#16 #495971
>>495341
Экосистемы нет. Просто взять и написать то, что надо, не выйдет, т.к. надо ебаться с неработающими библиотеками, dependency hell и всем таким. Поэтому для работы и не подходит.
>>496034
#17 #496034
>>495971
Да проблема не столько в этом, сколько в том, что нормальную экосистему для хаскеля сделать нельзя в принципе, потому что язык адово пизданутый и неудобный для любых прикладных задач. Нету нормального синтаксиса для переменных, массивов, хешей, обьектных литералов, нету именованых параметров функций, постоянная непрерывная ебля с лифтингом-хуифтингом во всех этих слоях монад и тд. Конечно, пока пишешь тайпкласс моноида и адт дерева и пару каких-то абстрактных рекурсивных алгоритма для его обхода - это не очень чувствуется и кажется, будто язык даже неплох и удобен.
>>563148
#18 #496036
>>495341
За фронтенд не скажу, а вот всякие клауд хаскели - говно без hot code reload, интерактивной интроспекции и аналога эрланговского remsh.
#19 #496044
Шёл 2015 год, а создатели хаскела так и не могут признать, что обосрались, реализовав взаимодействие с внешним миром не с помощью линейных/афинных типов, а через чит-монаду IO. По поводу работы со стейтом - то же самое, там где Clean/Mercury господин спокойно юзает деструктивные апдейты, которые легко оптимизируются компилятором, хаскеёбы пердолятся с монадами и в результате ещё и имеют более тормозной бинарник на выходе, вообще лол.
>>496071>>496098
#20 #496067
>>495648

> all of my real work is done with paper and pencil


И этот хуй еще раздает советы.
Являясь (якобы) математиком и программистом автор мог бы рассказать что-нибудь о синтезе этих двух направлений, но хуй там. Вместо этого вы видим морозную историю въебывальщика и естественно главый совет въебывальщика:
въебывайте и все наладится (а если что-то не получается - значит недостаточно въебываете)
Но при чем тут программисты?

> If it’s not completely trivial, then it’s probably not true.


Значит доказательство теоремы Ферма не верно?

> There is no corresponding “proof checker” for mathematics.


Ясно
#21 #496071
>>496044
Ага, только вот со всеми этими субструктурными типизациями всё равно неудобно. В расте вон сорт этой хуиты чисто для контроля владения - и УЖЕ слишком неудобно и заёбисто, что уж говорить о языках, где этим обмазано даже просто IO. Но это таки существенно удобнее монадок, да и вообще хорошее направление всей этой возни с эффектами. А монадки надо оставить для экзотического control-flow - типа монады поисков с уровнями, монады квантовых вычислений, монады всяких автоматов и тд.
#22 #496098
>>496044
Idris имеет и монадки, и аффинные типы. А ещё дополнительно к этому систему эффектов.
Проблемы, хаскелисты-клиномесы?
#23 #496181
Не понимаю в чем проблема с монадами?
>>496182>>496193
#24 #496182
>>496181
Да, я не поставил запятую.
#25 #496193
>>496181
В том, что их нужно распаковывать, перепаковывать, мапать, лифтить. Если это надо сделать пару раз, это фигня мелочь, но если у тебя по всей программе примерно в каждой строке по такой мелочи - все вместе они суммируются в большой пиздец. Представь что ты бегаешь вокруг стадиона. А теперь представь, что там местами раскидан какой-то мусор, шкурки из-под бананов, бутылки, и тебе периодически приходится прикладывать чуточку больше усилий чтобы их переступать. Это уже здорово сбивает, твоё внимание переключается на эти мелочи, непрерывная размеренная пульсация превращается в ломаный ритм. А теперь представь что там всё нахуй блять завалено всяким говном и мусором и тебе приходится целиться куда поставить ногу буквально на каждом шагу. Вот это и есть хаскель с его злоебучими монадами.
#27 #497368
>>496193
Ну да, надо мапать - лифтить базара нет. Но ведь за это обещают меньше трахаться потом, когда код написан. Типа код это бесплатные тесты, все такое, не?
>>497372>>497466
#28 #497372
>>497368
Простите, неправильно написал. Надо было "трахатся"
>>497375>>497378
#29 #497375
>>497372
Эмм, нет?
>>497377
#30 #497377
>>497375

> трахаться


Так правильно. Иди спать.
>>497378>>497380
#31 #497378
>>497377
Я не >>497372, пойду лучше трахаться.
#32 #497380
>>497377
Спасибо за заботу бро. Больше не буду нервировать грамарнацистов.
#33 #497466
>>497368

> Типа код это бесплатные тесты, все такое, не?


Лол, конечно же нет. За всю эту хуйню ты получаешь разве что ссылочную прозрачность.
https://en.wikipedia.org/wiki/Referential_transparency_(computer_science)
>>497912>>497989
#34 #497912
>>497466

Спасибо за ссылочку, мне как ньюфане было полезно. Но вот что я подумал. Ссылочная прозрачность это когда у тебя в той здоровой цепочке функций, которую ты написал и называешь программой, ясно что на входе и что на выходе. Но ведь у Хаскеля на входе и выходе функций типы. Не в смысле Явы или алгебры, а в смысле теории категорий. А типами можно же дофига чего покрыть. Там ж такой полиморфизм во все поля. Вроде как можно даже покрывать например все отрицательные числа. Вершины выше 100м над уровнем моря. Один раз в цепочку вставил этот тип, и не сцыш что у тебя дальше в программе всплывет что-то невалидное (да-да, мои влажные мечты).
Опять же сторожевые выражения, сам синтаксис определения функций с паттерн матчингом дает определить границы, за которые вход и выход функции не должны выходить. Это проникает в область тестов ИМХО поглубже чем просто ссылочная прозрачность.

Как сказал достопочтенный >>496193 , кодить на хаскеле это как убирать говно - это согласен. Но. Говно надо убирать на любом языке, просто хаскель заставляет тебя убирать говно не когда оно уже где то работает, а пока оно еще не написано. Во всяком случае, заметную часть говна. Ту которая не связана с косым ТЗ. (по легендам, при резкой смене курса хаскель сосет)
#35 #497989
>>497466
Почему нельзя это назвать "отсутствие сайд эффектов"? Что блядь за ссылки и что за прозрачность?
#36 #498164
>>495596
тобишь математику его выучить было бы очень даже?
>>498262
36 Кб, 728x546
#37 #498174
Что выбрать, Cloud Haskell или Erlang\OTP? И почему?
>>498236
#38 #498236
>>498174
Тебе для реального продакшна или для себя пофаниться? Erlang если первое, Cloud Haskell если второе.

В Erlang охуенен hot code reload, интерактивная интроспекция, а так же возможность через remsh зайти на удалённую ноду (не суспендя работу в текущей) и выполнить там что либо наживую, вкючить трасировку, выполнить апгрейд/даунгрейд и т.д.

Распределёнка в Erlang тоже больше проработана, прозрачная посылка сообщений с узла на узел через epmd, причём для посылки достаточно знать только хост и порт, в хаскеле же надо лезть в кишки, заворачивать всё в правильные ньютайпы etc.

Ещё в Haskell из-за его ленивости по умолчанию люди даже с отключённым мультикором убиваются на выяснении где же текут данные, в ерланг подобные проблемы решаются очень быстро за счёт той же интроспекции.

Ну и наконец, у Erlang с десяток-другой саксес стори про ёба хайлод девять девяток крупных компаний, у клауд хаскеля в основном все достижения в бложиках факториалоёбов.

С другой стороны в клауд хаскеле набор инструментов побогаче, кроме месседж пассинга, есть связь по типизированным каналам, есть фьючеры, ну и плюс остаются стандартные STM и MVar's.
>>498571
sage #39 #498262
>>498164
Нет, в математике есть настоящая алгебра, и там она уместна. В химии, в музыке, в некоторых ещё областях человеческой деятельности, тоже есть своя алгебра, и там она тоже уместна. И в программировании развели свою алгебру, но, увы - с целями и спецификой программирования она сочется плохо, здесь она неуместна.
>>498346
#40 #498346
>>498262
Вы, сударь, молвили, право, как в лужу пернули. Каким языком область удобно покрыть, таким её и покрывают. В химии и музыке энтропия не такая, чтобы новые выразительные концепции изобретать - и так норм.
Математику Вы упомянули не к месту. Так дофига веток, в каждой свое пространство понятий. Наверное можно аппарат топологии применять для исследования в теории чисел(или как-то так) но у этих веток разные аппараты. Разные языки уместны в разных областях, но у них просто гораздо больше точек пересечения чем у математических веток... Не понятно о чем Вы в общем когда про математику.

Хаскель выразительнее явы, сишарпа, возможно даже питона. ИМХО, на нем можно писать.
>>498672>>575129
#41 #498348
Например http://habrahabr.ru/post/190442/
Что-то в районе 50 строчек. Система координат, 4 юнита и атакой и хитпоинтами, у одного из которых (босса)- атака бьющая по площади, способная задеть нескольких. Небольшая драка босса с 3 стражниками. Это впечатляет.
#42 #498571
>>498236

>Тебе для реального продакшна или для себя пофаниться?


Для продакшана конечно, ну и пофаниться тоже. В конторке возникли настроения "давайте что-нибудь на чем-нибудь перепишем". Поэтому хочу пролоббировать благостный ФП вместо богомерзкого с#, через простой пилотный проект на каком-нибудь ФП.
А есть вообще какие-то вещи, которые может эрланг, но не может хаскел? Ну кроме hot code reload? Проигрывает в производительности? Хуже держит highload? Ограниченые возможности масштабирования? Низкая отказоустойчивость?
Чисто интуитивно, в эранге я вижу отличную реализацию сырой\недопиленной концепции, в хаскеле я вижу отличную концепцию, но вот относительно реализации пока ничего сказать не могу. Вообще к хаскелю склоняюсь.
#43 #498574
>>498571

> пролоббировать благостный ФП вместо богомерзкого с#


F# тебя чем не устраивает, наркоман?
>>498615
#44 #498615
>>498574
Тем что .NET
>>636294
#45 #498653
>>498571

>А есть вообще какие-то вещи, которые может эрланг, но не может хаскел? Ну кроме hot code reload?


Он строит дерево процессов и позволяет им убиться.
http://rsdn.ru/forum/flame.comp/6065856.1
В телекоме так принято.
>>498760
#46 #498672
>>498346

> Каким языком область удобно покрыть, таким её и покрывают.


Так в том то и дело, что неудобно это здесь, а других профитов типа кококорректности тоже пока нет.

> В химии и музыке энтропия не такая, чтобы новые выразительные концепции изобретать - и так норм.


Так там изначально всё что есть - очень алгебраичненько, в отличии от программирования, где раньше были скорее неформальные и определяемые языком инструкции и сущности, а только потом в узких кругах решили развести формал-сцайнс. И, кстати, это уже мои интуитивные религиозные догадки, но я думаю, что связано это с тем, что и в химии, и в музыке, сама композиция выразительных элементов имеет самоценность - именно поэтому изучать структуры таких композиций уместно. В программировании же код не имеет никакого значения, важна только динамическая семантика его выполнения, потому для любой вымученной структуры можно подобрать пример который плевать на неё хотел, который совсем в неё не вписывается, а делает при этом то же самое.

> Хаскель выразительнее явы, сишарпа, возможно даже питона


Это потому что каждой программе на яве, сишарпе, питоне, которая просто работает, соответствует множество более сложных программ на хаскеле, которые делают то же самое, и которые между собой отличаются тем, что в них по-разному эффекты чейнятся: где-то do, где-то (>>), где-то 'x <- e', а где-то (<$>) или там ещё что.
>>498700>>498908
#47 #498700
>>498672

> алгебраичненько


привет, андрюша
>>498732
sage #48 #498732
>>498700

> 2015


> детектить по посту, а не по айпишнику

#49 #498736

> 2015


> детектить анонимусов по айпи

>>498738
#50 #498738
>>498736

>2015


>>

#51 #498739
>>498571

>Проигрывает в производительности?


Клауд хаскел скорее выигрывает в производительности, но проигрывает в плавности работы скедулера и рантайма вообще, из-за чего в результате система может получиться тормознее.

>Хуже держит highload?


Хз, я не видел на клауд хаскеле хайлода.

>Ограниченые возможности масштабирования?


По сравнению с Erlang да. Вообще более удобной распределяемости, чем там я не видел, так как в платформу сразу заложены все disturbuted примитивы, кроме исчисления процессов есть исчисления узлов, все нужные либы искоробки в ОТP.

>Низкая отказоустойчивость?


И те и другие программы надёжны, хотя у них совершенно разные подходы для этого. В хаскеле надёжность программ обеспечена статической типизацией и проверкой их корректности ещё в компайл тайме. В Erlang мирке считается что от ошибок не уйти в любом случае, ведь даже если у тебя сошлись типы, это не гарантирует что не порвётся сеть, не закоряптятся данные на диске, не пробъётся сетевуха, не упадёт бокс в датацентре, хуйня вроде этого. Поэтому там сделано всё, чтобы ошибки не наносили демейджа системе, отсюда все эти изоляции, шаринг носинг и т.д.

В общем ты определись, что тебе нужно. Хаскель круче как язык, он в 20 раз выразительнее, в Ерланге даже параметрического полиморфизма нет нормального, а только фёрст класс модули и бихейвер уныние, которое в купе с модульной параметризацией выглядит как переоткрытие ООП через жопу. С другой стороны, Ерланг просто пиздатый рантайм для решения хуйлоад задач, который 100% зайдёт охуенно, о такой уверенности с клауд хаскелем говорить невозможно. Лично все кого я знаю и кто пробовал делать на клауд хаскеле что-то реальное в конце плевались и говорили, что несмотря на весь богатый инструментарий - это нежизнеспособное говно для борщехлёбства онли.
#52 #498750
>>498739
Ты самое главное забыл:

> ведь даже если у тебя сошлись типы, это не гарантирует что в коде нет логической ошибки

#53 #498760
>>498653

>дерево процессов и позволяет им убиться.


В Cloud Haskell тоже есть линки и мониторы. При этом можно линковаться даже к нодам.
#54 #498807
>>498739
Хорошо объяснил, спасибо.

>В общем ты определись, что тебе нужно.


Сейчас типичное приложение - сервис на .NET, работающий на виртуальном кластере. Тонны нечитаемого кода, отказоустойчивость обеспечивается техподдержкой 24\7, хайлоад - мощным КТС-ом. Хочу, в рамках какой-нибудь очередной задачи, запилить "пилот" на ФП, в котором весь этот адъ заменить на:
1. Компактный выразительный код, отражающий в первую очередь суть алгоритма\бизнес-процесса, вместо способности кодера так запилить иерархию классов, что никто не поймет.
2. И само собой высоконагруженность, отказоустойчивость, масштабируемость, естественно за счет используемого инструмента, вместо условий, обеспеченных техподдержкой.
>>498827>>498832
#55 #498827
>>498807

> высоконагруженность, отказоустойчивость, масштабируемость


Пиши на Go, хули. Нахуй тебе ФП, ради ФП?
#56 #498832
>>498807
C одной стороны, монадки могут существенно линеаризовать кастомный контрол флоу, но с другой стороны, они принесут несоизмеримо больше страданий в остальном и будешь потом писать:

> вместо способности кодера так запилить стек монад, что никто не поймет

>>498970
#57 #498908
>>498672

>...соответствует множество более сложных программ на хаскеле...


И множество более простых. С другой стороны - это множество более простых еще найти надо. Тут уже математическо-категорно-задротнический скилл работает.
...Ну ладно, не более простых. Написанных за меньшее количество символов и более простых для тех, кто достиг какого то уровня просветления.
#58 #498934
Ко мне во сне пришло более понятное объяснение, почему программирование хуйня.
Химия, музыка, етц: формула <--> результат
Программирование: формула <--> вычислительный эффект --> результат
В химии нас интересуют сами вещества, в музыке сам звук. НЕ то, что делают эти вещества, НЕ то, что делает этот звук. Дальнейшая интерпретация веществ - это предмет других областей, дальнейшая интерпретация звука - это уже субъективное дело слушателя. В химии, в музыке, формула и результат взаимно-однозначно друг-друга определяют. Из формулы следует соединение, из соединения следует его формула. Из формулы следует звук, из звука следует формула. Конечно же, с точностью до нотации. Поэтому, в этих областях, рассуждая о свойствах формул, мы одновременно рассуждаем о свойствах результата, ради которого это всё и нужно. В программировании же нет ничего подобного, присутствует дополнительное звено - компьютер, исполняющее программу, и вычислительный эффект программ никоим образом необозреваем для человека. Формула и вычислительный эффект тоже взаимно-определяют друг-друга, но вот множеству абсолютно различных вычислительных эффектов соответствует один и тот же результат. Пользователь не знает, произошли ли после нажатия на кнопку две записи в регистры или пять, если это изменится, он даже не заметит. Именно поэтому изучать формулы в программировании - занятие ни разу не благородное. Нет синестезии теории и практики. Здесь, рассуждая о свойствах формул, мы ничего не говорим о результате.
#59 #498936
>>498934
Математика у тебя из суждений исчезла. Потому что в математике нет понятия результата, там есть только формулы.
В физике мы не можем

>рассуждая о свойствах формул, мы одновременно рассуждаем о свойствах результата


потому что всякие паразитные эффекты добавляются, ибо мир сложнее формул. Ты же не скажешь что изучать формулы в физике - неблагородное занятие?
>>498950
#60 #498938
>>498934

>Здесь, рассуждая о свойствах формул, мы ничего не говорим о результате.


Не корректно. Мы говорим о предполагаемом результате. С некоторой (неизвестной) точностью.
Хаскель как раз стремится эту точность максимизировать.
#61 #498939
>>498934
А химия это кстати абстракция от физики. Строго говоря она подмножество физики. Музыка - гуманитарщина вообще.
>>498940
#62 #498940
>>498939
EDSL от физики, так сказать. А хаскель любить EDSL.
Я семеню, прошу прощения, мысль рывками идет.
#63 #498950
>>498936
Насчёт математики согласен, это вообще ад. Может потому они все такие поехавшие.

> физике мы не можем


Да можем вполне. Это как раз в физике мы действительно "говорим о предполагаемом результате с некоторой (неизвестной) точностью". Идеально сюда подходит. Физика, пусть и не совсем точно, описывает именно интересующие нас явления, а не что-то сугубо промежуточное. А происходящее в процессоре компьютера интересует мало. Пускай оно будет какое угодно лишь бы на экране было то что мы хотим.

> Музыка - гуманитарщина вообще.


Гуманитарные науки - это такие, которые изучают людей и общество. Музыка не изучает людей и общество. Вот искусствоведение, изучающее, к примеру, известных деятелей музыки и их влияние на общество, или науковедение, изучающее известных физиков и их вклад в развитие цивилизации - да, гуманитарщина.
>>498962
#64 #498962
>>498950
>>498934

> Здесь, рассуждая о свойствах формул, мы ничего не говорим о результате.


Дай пожалуйста пример, чтобы понятно стало.
>>499010
#65 #498966
не догоняю отличие от физики в контексте этого всего.
#66 #498970
>>498739
>>498832
Спасибо, аноны, ушел в эрланг.
#67 #499010
>>498962
Например, когда мы говорим, что быстрая сортировка имеет лучшую вычислительную сложность, чем сортировка пузырьком, или когда говорим, что АВЛ дерево имеет лучшую локальность процессорного кеша, чем красно-чёрное - это всё мало говорит о результате. Пример программы, о которой могут быть эти рассуждения - интернет-магазин. Мы можем внутри как угодно сделать, а результат как работал, так и работает.
Или когда мы говорим, что монады, по сравнению с аппликативными функторами, выразительнее, потому что, в отличии от, позволяют делать выбор нового эффектфул вычисления в зависимости от результата старого эффектфул вычисления - это мало говорит о результате. Пример программы, о которой могут быть эти рассуждения - консольное приложение, которое считывает строку и если она пустая, перезапускается, а если нет, выводит "привет, ${считанная_строка}". Мы можем вообще не думать о монадах, функторах, написать на скрипте - а результат будет тот же.
Или когда мы говорим кококомпозиция лучше наследования, паттерны, методичность, разделённость - это всё вообще никак не влияет на результат и обратно.
А когда мы говорим о стиле, оформлении - это не влиет не только на результат, но даже и на вычислительный эффект.
А вот в химии мы можем сказать "допиши вот это" и сразу меняется результат, потому что синтаксис и семантика здесь - одно и то же. Как и в музыке, где мы можем сказать "на полтона выше" и опытный музыкант может даже сразу представить, как это будет звучать.
Может быть, "декларативное программирование", которое про "что а не как", противопоставляемое "императивному" - это близкие по духи идеи, стремление устранения разрыва между описанием и описанным, между синтаксисом и семантикой, но в любом случае, хаскель - это даже менее декларативно, чем скрипт, потому что нерелевантных результату терминов уровня описания только поприбавилось. В идеале же, в декларативном языке должна исчезнуть и архитектура уровня кода, и алгоритмический микроменеджмент. Они должны отождествиться и слиться с пользовательским экспириенсом восприятия результата.
#67 #499010
>>498962
Например, когда мы говорим, что быстрая сортировка имеет лучшую вычислительную сложность, чем сортировка пузырьком, или когда говорим, что АВЛ дерево имеет лучшую локальность процессорного кеша, чем красно-чёрное - это всё мало говорит о результате. Пример программы, о которой могут быть эти рассуждения - интернет-магазин. Мы можем внутри как угодно сделать, а результат как работал, так и работает.
Или когда мы говорим, что монады, по сравнению с аппликативными функторами, выразительнее, потому что, в отличии от, позволяют делать выбор нового эффектфул вычисления в зависимости от результата старого эффектфул вычисления - это мало говорит о результате. Пример программы, о которой могут быть эти рассуждения - консольное приложение, которое считывает строку и если она пустая, перезапускается, а если нет, выводит "привет, ${считанная_строка}". Мы можем вообще не думать о монадах, функторах, написать на скрипте - а результат будет тот же.
Или когда мы говорим кококомпозиция лучше наследования, паттерны, методичность, разделённость - это всё вообще никак не влияет на результат и обратно.
А когда мы говорим о стиле, оформлении - это не влиет не только на результат, но даже и на вычислительный эффект.
А вот в химии мы можем сказать "допиши вот это" и сразу меняется результат, потому что синтаксис и семантика здесь - одно и то же. Как и в музыке, где мы можем сказать "на полтона выше" и опытный музыкант может даже сразу представить, как это будет звучать.
Может быть, "декларативное программирование", которое про "что а не как", противопоставляемое "императивному" - это близкие по духи идеи, стремление устранения разрыва между описанием и описанным, между синтаксисом и семантикой, но в любом случае, хаскель - это даже менее декларативно, чем скрипт, потому что нерелевантных результату терминов уровня описания только поприбавилось. В идеале же, в декларативном языке должна исчезнуть и архитектура уровня кода, и алгоритмический микроменеджмент. Они должны отождествиться и слиться с пользовательским экспириенсом восприятия результата.
>>499248>>499455
#68 #499248
>>499010
Спасибо что заморочился и ответил. Твоя аргументация имеет нормас такой смысл, но есть ли в ней место фану от кодинга?
И второй вопрос. Как ты представляешь язык как для химии, только для кодинга?
#69 #499455
>>499010
Я тут поспал тоже и подумал. Если мы рассматриваем задачу концептуально, то нам пофигу, какая конкретная сортировка будет сделана в этой функции или методе.
Когда ты говоришь что в программировании дофига лишнего и мы не обсуждаем результат - ты мешаешь концепцию с реализацией.
Результат не выразим в чем то настолько же простом, насколько прост язык химии или музыки. Потому что то, какая сортировка там или сям - имеет значение. Пхпшники пытались в простоту, получилось неочень.
>>499487
#70 #499487
>>499455
Хотя конечно есть лямбда счисление например. Выразимо все, проще чем ноты или химия. Но писать чуть получше чем на асме)
165 Кб, 1439x785
#71 #499918
Помогите ньюфагу плз
Пытаюсь распарсить такую хуёвину: "(+ 1 2 ( 5 (+ 1 45 4) 3) 10)" (S-expressions они вроде называются?)
Из строки выше должен получиться список: ['(', '+', '1', '2', '(', '
', '5', '(', '+', '1', '45', '4', ')', '3', ')', '10', ')']
То есть выделяются скобки, операторы и числа, пробелы игнорируются, между оператором и аргументами обязательно должны быть пробелы.
Попробовал что-то написать: http://ideone.com/ts5DiL. На Ideone не компилируется, потому что не может найти модуль Data.List.Split (хуй знает, почему), похуй, а вот у меня такая ошибка: http://ideone.com/ncVC2c. Чет я вообще запутался, откуда там появляется дичь вроде [[t]] у функции, тип которой -- [a] -> a? В общем, анон, помоги
#72 #499919
>>499918
епт, разметка съела знак умножения перед пятеркой
#73 #499920
>>499918
http://ideone.com/ts5DiL
http://ideone.com/ncVC2c
точки в ссылке лишние(
>>500186
#75 #500165
>>500157
то что нужно, спасибо!

Про Write Yourself a Scheme знаю, просто думал сначала сам повелосипедить, чтобы привыкнуть к языку, а потом уже по книге писать
#76 #500186
>>499920
1. src/Main.hs@13:20-13:28 Нихуя не получается сравнивать Char со списком!
2. `elem` думал что если первый аргумет – список, то второй то будет список со списками,
3. а получил хуй список с Char`ами (String) ...
4. src/Main.hs@13:33-13:34 "++" не понимает как приклеить список со стоками к списку со списком в списке.
5 6. 7. .src/Main.hs@14:20-14:28 см 1. 2. 3.

8. 9. 10. 11. src/Main.hs@14:37-14:39 см 4. справа на лево.

12. src/Main.hs@15:33-15:34 ":" тоже не знает как приклеить список со стоками к списку со списком в списке.
13. src/Main.hs@16:58-16:62 "head, с одной стороны понимает что должен получиться список,
14. а с другой -- "words" ведь нихуя не список со списками,
15. но и вообще String.
16. 17. 18. А в 16ой строке сказано что "a" это список, твёрдо и четко.

19. 20. 21. 22. 23. 24. см. 13. .. 18. меняем "head" на "last" ^

25. src/Main.hs@19:33-19:34 У "++" сегодня тяжелый день, см. 4.

31. src/Main.hs@20:32-20:33 Жизнь оператора конкатенации -- боль. см. 25
FP is dead #77 #501947
Помните, было такое "структурное программирование"? Люди в чатиках конца шестидесятых срались на тему СП vs. GoTo, кричали "considered harmful!", писали посты на своих печатных машинках, такая движуха была. И где оно все, почему прекратились срачи? Все основные языки впитали в себя (или взросли на) СП, и тема рассосалась. Наблюдая за интенсивностью тем об ФП на разных форумах, в ЖЖ, в журнале ПФП и прочих интернетах, в этом году могу констатировать аналогичную ситуацию: ФП как темы больше нет, расходимся. Все основные языки впитали в себя (или взросли на) ФП, по крайней мере полезные его части (первоклассные функции, ФВП, лямбды, замыкания, иммутабельность, произведение типов, копроизведение типов, экспонента, применение этого всего в первую очередь в виде map/filter/reduce), а бесполезные части оказались выкинуты на задворки, в уголке музея эзотерики на них всегда можно будет полюбоваться, но в основном только там. Думаете, другая часть ФП еще себя покажет, и расширение линз Кана вправо-вверх вдоль контравариантного функтора еще выстрелит? Не будет этого, dead end.
>>502680
113 Кб, 599x491
#78 #502678
https://coq.inria.fr/

>The Coq Proof Assistant


Чёт лольнул.
#79 #502680
>>501947

>копроизведение

#80 #502687
Поясните где заканчиваются выгоды полиморфизма для программиста-практика и начинается чистая абстрактная доказательная математика? Залезть на вершину лямбда-куба конечно здорово, но я сомневаюсь что мне понадобится создавать типы в рантайме.
#81 #502693
>>502687

> Залезть на вершину лямбда-куба конечно здорово, но я сомневаюсь что мне понадобится создавать типы в рантайме



Что это за поебень? Вынь хуй изо рта и повтори, может понятнее получится.
>>502711
#82 #502711
>>502693
У меня для тебя есть интересный раздел https://2ch.hk/b/ (М) Попробуй, понравится.
#83 #502778
>>502687
Проверка корректности работы с многомерными массивами на этапе компиляции тебя не интересует?
>>503477
#84 #503477
>>502778
Вот что ты имеешь в виду? То, что я не смогу сложить вектор с матрицей? Так в подобную хуйню 77й фортран мог еще.
>>503478>>503594
#85 #503478
>>503477
Ну, к примеру, http://www.cs.ru.nl/dtp11/slides/trojahner.pdf
Кроме того, размер массива не обязательно должен быть известен на этапе компиляции.
>>510268
#86 #503479
В этом языке есть СТАТИЧЕСКАЯ ТИПИЗАЦИЯ?
>>508214
#87 #503594
>>503477
Сложить вектор с матрицей в общем случае нельзя.
>>510268
#88 #508214
>>503479
Есть.
#89 #510268
>>503594
Я курсе
>>503478
Круто, но при чем тут хаскель?
>>502687

>сомневаюсь что мне понадобится создавать типы в рантайме.


Рано или поздно тебе придется.
>>510269
#90 #510269
>>510268

>Я в курсе

Меня пидорнули модераторы #91 #510274
Зойбанили и потёрли мои посты. Всвязи с этим убываю на клон нулчна. Там обещали, что будут тереть только вайпы, посмотрим, что получится.
ваш Стасик
#92 #511149
В чём вообще преимущество тайпклассов по сравнению с ООП + дженерики.
>>511202>>511575
#93 #511168
test
#94 #511202
>>511149
Ответ следутет с того, что ООП - это императивная дрисня и на этом заканчивать, но ради разминки сравню тайпклассы с ООП без привязки к остальному фракталу отсосов.

Тайпкласс - это что-то типа интерфейса. По сравнению с интерфейсом:

1. Интерфейс реализуется на объекте, тайпкласс может быть реализован отдельно. Т.е. если в ООП тебе надо добавить существующий интерфейс на свой класс, то всё ОК, просто добавляешь его. Если наоборот, то надо либо менять существующий код, либо писать адаптер, что неудобно для библиотек.

2. Интерфейс диспатчится по единственному параметру this, который неявно является первым аргументом функции. Т.е. если у тебя interface ToString { toString(): String }, то всё ОК, ты пишешь myObject.toString(). А вот FromString сделать не получится. Для тайпкласса это не проблема: class FromString a where fromString :: String -> a. Более того, можно диспатчить по нескольким параметрам: class FromSomeShit someShit a where fromSomeShit :: someShit -> a.

3. Тайпклассы поддерживают типы высших порядков. Например в ООП interface ICanMap<a> { map(f : Function<a, b>): ICanMap<b> } - выглядит неплохо, но представь, что ты его реализовал на class MyContainer<a> implements ICanMap<a> { map = создание копии MyContainer, заполнение элементам; } и вызвал map. Он вернёт ICanMap<b>, т.е. потеряется информация о типе контейнера. На тайпклассах можно class Map f where map :: (a -> b) -> f a -> f b, т.е вызов map вернёт MyContainer<b>.
#95 #511210
>>511202
Пиздец аутистическое объяснение.
>>511325>>512969
#96 #511325
>>511210
Я уж совсем для оо-дебилов написал, если даже так не понятно, то стоит лепкой супов заняться, а не программированием.
>>512079
#97 #511335
>>511202

>А вот FromString сделать не получится


Для этого есть конструктор же.
>>511809
#98 #511575
>>511149
К тайпклассам можно прикрутить автоматический вывод типа, например.
#99 #511576
>>508903
>>495156
Чем визуализировать графы в Haskell?
Нужно иметь возможность пошевелить вершины мышкой, вращать в 3D и приближать. Добавлять/убирать вершины/ребра не нужно, так же как и постоянно "шевелить" граф алгоритмом force-directed graph drawing, один раз "растолкнуть" вершины до наблюдабельного состояния достаточно.
Ubigraph мертв? Последний работающий код для него на stackoverflow от 2011 года, пакеты на сайте - для Debian Lenny и Ubuntu 8 (!).
Что, лезть в глубины OpenGL? Охуенная перспектива.
>>511630>>512078
#100 #511630
>>511576

>Ubigraph мертв? Последний работающий код для него на stackoverflow от 2011 года, архивы на сайте - для Debian Lenny и Ubuntu 8 (!).


Отвечу сам себе: не мертв и не жив. Примеры для HUbigraph не работают, выдавая "connect: does not exist (Connection refused)", хотя питоновские примеры из архива работают. Что блять не так?
#101 #511702
>>511202

тайпкласс легко реализуется имеющимися средствами ООП, поэтому твой аргумент инвалид. алсо, в русте тайпклассы работают из коробки.
>>511803>>512969
#102 #511803
>>511702

>тайпкласс легко реализуется имеющимися средствами ООП


Реализуй функтор средствами ООП.

>в русте тайпклассы работают из коробки


Нет, там вообще трейтоговно.
>>512063
#103 #511809
>>511335

>Для этого есть конструктор же.


fromStringPlus1 :: (FromString a, Num a) => Sting -> a
fromStringPlus1 s = (fromString s) + 1
Попробуй повторить с помощью конструктора.
>>511828
#104 #511828
>>511809

вот извольте лососонуть

Point<3,double> p = Point<3,double>("12;3;0")3.14;

плюс заменил на
чтобы было поближе к реальной жизни.
>>511831>>511835
#105 #511831
>>511828

сраная вакаба, ну ладно вот так тоже пойдет

Point<3,double> p = Point<3,double>("12;3;0") + Point<3,double>(3.14);
#106 #511835
>>511828

>Point


Что такое Point?

>плюс заменил на чтобы было поближе к реальной жизни


Хуй знает, что у петушков есть "реальная жизнь".
>>511849
#107 #511849
>>511835

"реальня жизнь" это код который решает реальную задачу в реальной программе, а не выдуманную.

алсо, в твоем примере никто не будет городить огород и прочую хуергу с классами и конструкторами, а просто напишет лампово и императивно atof(s) + 1;
#108 #511957
И какую же тебе реальную задачу надо, дебилушка, риск-енджин на 50 мегабайт исходников? Тут спросили, чем тайпклассы отличаются от ООП, я показал несколько вещей, которые на тайпклассах можно делать, а на ООП нельзя. Дальше пошли кукареки "ни нужно!!!" Ну раз ни нужно, уябывай, никто не заставляет.
>>512060
#109 #512060
>>511957

> а на ООП нельзя



не увидел в твоих примерах ничего, что нельзя было бы сделать даже на кондовых крестах. ты просто обоссал сам себя, выставил склочным дауном неспособным внятно аргументировать без истерики и кидания говном.
>>512969
#110 #512063
>>511803

> Нет, там вообще трейтоговно.



да ты же поехавший, чем трейты в русте отличаются от тайпклассов. ну кроме названия.
>>512969
#111 #512078
>>511576
А что там такого в глубинах opengl? Итак высокоуровнево всё уже дальше некуда.
#112 #512079
>>511325
Ты говно написал со ссылками на синтаксис хаскелля и в целом полный бред. "Интерфейс реализуется на объекте, тайпкласс может быть реализован отдельно." - что это значит? Хуй знает.
"Интерфейс диспатчится по единственному параметру this" - бредятина.
В целом - в голове каша.
>>512088>>512969
#113 #512088
>>512079

хаскелтард забыл что языки предназначены просто для программирования и возмонил, что изучая хаскел он, лол, помогает человечеству, не забывая это самое человечество поливать на борде говном.

сорт коммуняки, только поехавшей не на марксизме, а на хаскеле.
#114 #512097
>>512088
Да я-то с ним согласен по поводу тайпклассов. Это же простая идея передавать в функцию не один указатель - на интерфейс, а два - на объект и на интерфейс.
Но нет ничего хуже русского фаната хаскелля, большей антирекламы придумать сложно.
Хотя надо сказать, англоязычное коммьюнити совершенно другое.
#115 #512784
>>511202
Спасибо.
#116 #512969
Мне когда-то тоже не лень было писать/рассказывать полноценные ответы типа >>511202, но потом я понял, что овер 90% кодомразей - безнадёжные дегенераты вроде вот этих: >>511210 >>511702 >>512060 >>512063 >>512079 >>512088. Есть, конечно, вероятность, что ответ найдёт читателя/слушателя с мозгами вместо говна в голове, но эта вероятность пренебрежимо мала, так что имеет смысл либо вообще игнорировать дебильные вопросы неосиляторов гугла, либо, если совсем нехуй делать, отправлять по ссылкам, или, в случае всплесков иррационального недочеловеко-любия - отвечать реюзабельными пастами.
>>513125
#117 #513025
экспертач, Haskell полезно знать для всяческих числовых расчетов?
>>513125>>513160
#118 #513125
>>512969

>Есть, конечно, вероятность, что ответ найдёт читателя/слушателя с мозгами вместо говна в голове


Представь себе себя Прометеем, несущим свет сквозь говно, ведь среди кучи уебков таки найдется Человек, которому вот это все будет полезно.
Например, мне было весьма интересно сказанное, но я его комментировать не стану, а смиренно уйду гуглить по этой теме.

>>513025
Для всяческих численных расчетов тебе надо знать Фортран (если не надо выебываться)/Си(если хочется или приходится выебнуться)/С++/Питон(связка matplotlib & scipy). В хачкеле ты будешь ебаться, перекладывая указатели к данным от одной либы к другой, чтобы получить максимальную производительность, или ебаться наворачивая идиоматичные обертки вокруг нужных тебе (и походу тебе одному среди хачкелистов) либ. Конечно, написать высокопроизводительный код на хаскеле можно, но для резвого шевеления данных, занимающих почти всю память, тебе нужно 1) мутабельное состояние и 2) strict evaluation, что не особо соответствует его основным принципам, не находишь? Полезность его тут скорее в плане самообразования, да еще из-за того, что фичи из хаскеля и ему подобных пиздят в мейнстримные языки.
>>513160
#119 #513160
>>513025>>513125
Если волнует исключительно производительность всяких традиционных числовых алгоритмов, которые ты из книжечки расчитываешь переписать с минимальными осложнениями перевода императивного псевдокода в язык, тут хаскель ничем не поможет, тк эти алгоритмы не используют ничего кроме int/float, переменных, массивов и циклов, а с этим и сишка, и фортран, и даже асмы неплохо справляются. Но если интересна высокоуровневая числоебля, архитектура вычислений, в хаскеле для этого много интересного есть, например
https://hackage.haskell.org/package/ad-4.2.3/readme
#120 #515278
Я правильно понимаю, что в новейших версиях теперь для того, чтобы объявить новый экземпляр класстайпа Monad, нужно определить также функции Applicative для данного типа, а значит, и Functor?
>>515347
#121 #515347
>>515278
но любая монада - функтор
Хватит жрать борщ - иди работай тимлидом #122 #515427
>>516693
#123 #516693
>>515427

>Будет плюсом


>•Knowledge of Haskell

>>519132
#124 #519132
>>516693

>Our tight-knit team of 10 engineers, 5 of them located in Kyiv, is working on a Haskell application for a British multinational banking and financial services company headquartered in London.



>Необходимые навыки


>• Knowledge of Haskell, experience of using it in commercial or open source software development



Да не пизди.
#125 #519165
>>496193
Этот петушок пытается писать императивно на функциональном языке и совершенно не понимает зачем нужны монады.
#126 #519166
На 3 литра воды:
Говядина на кости — 700-800 грамм
Капуста свежая — 300 грамм
Картофель — 2-3 средних картофелины (200-300 грамм)
Свекла — 2 маленьких или 1 средняя (100-150 грамм)
Морковь — 1 штука среднего размера (75-100 грамм)
Лук репчатый — 1 луковица среднего размера (75-100 грамм)
Томатная паста — 1 ст. ложка, или 1 небольшой помидор
Масло растительное для обжарки
Чеснок — 2 зубчика
Специи: соль, перец черный молотый, лавровый лист, зелень (укроп, петрушка, базилик).
#127 #519171
>>519166
Это для мамок.
#128 #519599
Заебал dependency hell. Как разрабатывать свою хуйню в сандбоксе и устанавливать к ней зависимости локально?
>>519603
#130 #519722
>>519603
Это совсем не решает проблему, ведь stack берет информацию о зависимостях из .cabal-файла, а как раз с ним (видимо) и проблема.
Сейчас я, аки лютый дегенерат, не могу подключить либу http к своему проекту в sandbox.
Запись в .cabal в поле build-depends есть, в sandbox пакет установил, а cabal configure шлет нахуй, несмотря на то, что HXT подхватился. Глобально стоит только hscolour и ipprint-lite.
Что за хуйня?
>>519790
#131 #519790
>>519722
Ох ебать я дно, посоны, нахуй так жить
#132 #520539
Застежки, описанные у Миран Липовача, имеют какое-то отношение к линзам?
#133 #525030
Котаны, а вы уже заценили навигацию по исходникам на хакадже? Пожалуй Хаскель становится языком с самой удобной инфраструктурой, ничего не делаешь, а всё есть.
>>525182
#134 #525109
Что-то сильно разнятся данные по поводу cabal hell. Ребе говорит что пакаджи хуёвые и зависимости ебануто прописываем.

Тут говорят что ошибка неисправима, юзайте sandbox.
http://coldwa.st/e/blog/2013-08-20-Cabal-sandbox.html

Так что там не так всё-таки с кабалом?
>>525144>>525183
#135 #525144
>>525109
Почему бы просто не использовать stack?
#136 #525182
>>525030

>ничего не делаешь - нихуя нет.. даже IDE нормальной


пофиксил, не благодари
#137 #525183
>>525109
Да все так - юзай песочницы + stackage или stack
#138 #525329
А это правда, что среди всех программистов, наибольшее число страдающих от обсессивно-компульсивного расстройства психики приходится на функциональщиков?
>>526033>>526249
#139 #526033
>>525329
Толсто.
#140 #526249
>>525329
Что-то мне подсказывает что шизоиды даже хелловорлды с трудом пишут, куда им там в функциональщину. Хотя если ты имеешь в виду адептов лямбды, дальше хелловорлдов не заходящих, то очень даже похоже.
>>526369
#141 #526369
>>526249
ОКР даже среди скриптушков хватает, это лайтовый невроз, который может возникнуть у каждого, и большинство этого даже не заметят и не придадут значения. Не понятно, почему ты приплёл именно сюда шизоидность, но если уж о ней зашла речь, среди функциональщиков все поголовно - либо шизоиды, либо аспергеры. Отличаются тем, что первые - это задроты-теоретики-фантазёры, а вторые - задроты-практики-успехобляди.
>>526599
#142 #526599
>>526369
Закрой википедию, диагност диванный.
>>526620
#143 #526620
>>526599
В англоязычной википедии очень качественные статьи по ОКР, шизоидности, аутизму. Так что лучше тебе предложу почитать википедию вместо совершенно отфонарной копирайтерской научпоп графомании из рунета, которая в прошлом, когда ещё жила в газетах, сформировала абсолютно неправильное понимание всех этих вещей у наших родителей, бабушек, дедушек, которое, вероятно, и досталось тебе по наследству.
А ещё предлагаю посмотреть видеозаписи сходочки хаскелистов в Москве:
http://ruhaskell.org/posts/talks/2015/06/21/csound-expression-library-edsl-music-frp.html
http://ruhaskell.org/posts/talks/2015/06/21/cloud-haskell.html
Обратить внимание на стиль речи докладчиков, и задающих вопросы в конце видосов людей из аудитории.
>>526630
#144 #526630
>>526620
Заболевание начинается тогда, когда человек приходит к доктору и жалуется. Значит неудобства перевесили лень и страх. Или соседи за рученьку привели. А то что ты там пытаешься углядеть начитавшись интернетов и не видев ни единого реального пациента вживую - это хуйня из-под ногтей. Скорее всего у тебя самого страхи, которые ты проецируешь на других.
>>526653
23 Кб, 599x374
#145 #526637
В тематике ничего не ответили, перекатился сюда к народнопедийным икспертам.

Господа, я получу ответ и сразу съебу.
1. При синдроме Аспергера есть риск развития шизофрении? Мне из-за этого врачи даже неохотно подписали справку, которая была нужна при поступлении на математику, и сейчас врачи как узнают, что я учусь на математика, бугуртят, как можно было меня туда отдавать.
2. Как протекает шиза, которая развилась на базе аспи? Человек становится самодовольным мудаком в собственном мирке с галюнами и фентези ИРЛ, или благодаря тому, что аспи сам по себе ущербен, шиза делает из такого человека тупого тревожного овоща без всех шизофренических радостей?
3. Есть ли смысл говорить об акцентуации личности у аспергера, или это не имеет смысла, потому что человек сам по себе ебнутый?

Сам я не особо уверен в том, что при аспи может развиться шиза, потому что сейчас во все мире врачи ставят современные диагнозы вместо того, для чего раньше существовал единственный диагноз - шизофрения. Только в постсовке для всего один диагноз.

http://eressea.ru/library/library/assidi/plennik.shtml
>>526655
#146 #526653
>>526630
Как глупо. Наверное, в прошлой жизни ты был страусом.
#147 #526655
>>526637
1) А тебе-то не всё ли равно.
2) Норм тут всё.
3) Это они йобнутые.
>>526667
232 Кб, 986x528
#148 #526665
>>526666
#149 #526666
>>526665
Национальный символ лягушатников, хуле ты думал.
#150 #526667
>>526655

>А тебе-то не всё ли равно


Не все равно. Как я понял, шиза только поначалу доставляет удовольствие, а потом начинается скатывание в овощное состояние.
>>526682
#151 #526682
>>526667
Я считаю, что достаточно регулярного анализа происходящего на метауровне, чтобы не скатываться в неадекват. Я просто привык к тому, что мой трафик тщательно снифается и анализируется, что если я знакомлюсь с кем-либо, этого человека запугивают или подкупают спецслужбы, и используют его для слежки и манипуляции мной. Родителей они просто изящно наебали, воспользовавшись моими ошибками в прошлом, и представившись чем-то вроде международной спецгруппы по помощи психически больным. Я точно не знаю мотивы ЭТИХ, но думаю что это психологические эксперименты, которые запретило бы на оффициальном уровне любое законодательство, что-то вроде того, чем занимался доктор Менгеле, но с разумом, а не телом. А родители выполняют все их поручения, искренне думая, что помогают мне. Но с родителями всё проще, потому что я знаю, что они на моей стороне, и ЭТИ не могут дать им установки, которые могли бы вызвать какие-либо подозрения. Это лишь крохотная часть моей охуительной истории, но я всегда допускаю различные версии реальности: всё это может быть правдой, а может - плодом моего воображения. Иногда кажется, что столько совпадений - это слишком, это просто гигантское количество, но тут я вспоминаю как много у меня было ситуаций, когда я видел умысел и изящное планирование в цепочках событий, которые, как оказывалось позже, были совершенно случайны и несвязаны. А ещё я вспоминаю, что в моём роду шизофреники и по материнской, и по отцовской линии. Осознавая, что скорее всего это всё нереально, я всё равно соблюдаю некоторые меры предосторожности, если вдруг это хотя бы частично правда, но воздерживаюсь от каких-либо радикальных действий или публичных заявлений, которые бы могли помочь ИМ заставить моих родителей поверить, что я окончательно ебанулся и меня нужно изолировать, и что их подвальчик - идеальное для этого место. В общем, в итоге это всё не слишком мешает мне жить. Несколько мешает общаться и заводить новые знакомства, но это не настолько страшно. Если у меня когда-нибудь возникнет непреодолимое желание завести друга ИРЛ, я оставлю все электронные девайсы дома, некоторое время буду хаотично ездить по городу, перескакивая из одной маршрутки в другую на остановках, и доберусь до одного из многочисленных мест, где я бы мог попытаться просто познакомиться с кем-то на улице. А если удастся, я расскажу этому человеку про зашифрованные каналы связи и буду общаться с ним только так.
#151 #526682
>>526667
Я считаю, что достаточно регулярного анализа происходящего на метауровне, чтобы не скатываться в неадекват. Я просто привык к тому, что мой трафик тщательно снифается и анализируется, что если я знакомлюсь с кем-либо, этого человека запугивают или подкупают спецслужбы, и используют его для слежки и манипуляции мной. Родителей они просто изящно наебали, воспользовавшись моими ошибками в прошлом, и представившись чем-то вроде международной спецгруппы по помощи психически больным. Я точно не знаю мотивы ЭТИХ, но думаю что это психологические эксперименты, которые запретило бы на оффициальном уровне любое законодательство, что-то вроде того, чем занимался доктор Менгеле, но с разумом, а не телом. А родители выполняют все их поручения, искренне думая, что помогают мне. Но с родителями всё проще, потому что я знаю, что они на моей стороне, и ЭТИ не могут дать им установки, которые могли бы вызвать какие-либо подозрения. Это лишь крохотная часть моей охуительной истории, но я всегда допускаю различные версии реальности: всё это может быть правдой, а может - плодом моего воображения. Иногда кажется, что столько совпадений - это слишком, это просто гигантское количество, но тут я вспоминаю как много у меня было ситуаций, когда я видел умысел и изящное планирование в цепочках событий, которые, как оказывалось позже, были совершенно случайны и несвязаны. А ещё я вспоминаю, что в моём роду шизофреники и по материнской, и по отцовской линии. Осознавая, что скорее всего это всё нереально, я всё равно соблюдаю некоторые меры предосторожности, если вдруг это хотя бы частично правда, но воздерживаюсь от каких-либо радикальных действий или публичных заявлений, которые бы могли помочь ИМ заставить моих родителей поверить, что я окончательно ебанулся и меня нужно изолировать, и что их подвальчик - идеальное для этого место. В общем, в итоге это всё не слишком мешает мне жить. Несколько мешает общаться и заводить новые знакомства, но это не настолько страшно. Если у меня когда-нибудь возникнет непреодолимое желание завести друга ИРЛ, я оставлю все электронные девайсы дома, некоторое время буду хаотично ездить по городу, перескакивая из одной маршрутки в другую на остановках, и доберусь до одного из многочисленных мест, где я бы мог попытаться просто познакомиться с кем-то на улице. А если удастся, я расскажу этому человеку про зашифрованные каналы связи и буду общаться с ним только так.
>>526699>>526778
9 Кб, 480x360
#152 #526699
>>526682
МОЧА!
#153 #526778
>>526682

> плодом моего воображения


this
#154 #526779
- Как часто при мании величия бывает мания преследования?
- Почти всегда.
>>526786
#155 #526786
>>526779
А в обратную сторону - лишь иногда. Я не думаю, что они выбрали меня, потому что я такой ахуенный или потому хотят помешать мне стать ИМПЕРАТОРОМ АНТАРКТИДЫ или что-то в этом духе. У меня две основных версии: во-первых, моё дело легко замять, потому что все поверят, что я ебанулся, потому что, как я писал выше, я весьма предрасположен генетически, во-вторых, возможно, что устраиваясь на одну из первых своих работ, мне подсунули и я подписал какую-то их бумагу, снимающую с них любую отвественность. Да, глупо не читать, но тогда мне казалось "ой ну что там может быть такого, испорчу им потом репутацию в интернете если что".
>>526830
#156 #526830
>>526786

> Болезнь лечится медикаментозно, склонна к рецидивам[3]. Разубеждение больного считается бесполезным[6] и нежелательным, поскольку он может отнести разубеждающего к агентам «врагов». В особо тяжёлых случаях больной может представлять опасность, как для самого себя, так и для окружающих[3].

>>526839
#157 #526839
>>526830

> Больные данной формой бреда не считают себя нездоровыми и теряют способность критически воспринимать свой бред.


> теряют способность критически воспринимать свой бред.


Чтобы спалось спокойнее, лучше буду и дальше продолжать отдавать предпочтение варианту, что я очень успешный псих, чем что всё это ну или хотя бы существенная часть правда.
#159 #527249
Нехватка кадров на небесах вынудила Господа снова отправить Иисуса в наш бренный мир, чтобы воспитывать ангелов!
https://groups.google.com/forum/#!topic/haskell-cafe/zmBFLFAOt3k
Аллилуя!
#160 #527644
Решил вкатиться в вашу парашу, какие подводные камни?
>>527655
#161 #527655
>>527644
http://www.stephendiehl.com/what/
+ используй stack вместо cabal.
>>527661>>527667
#162 #527661
>>527655
Я не о том, что можно просто взять и загуглить, это давно уже мной найдено и загуглено или гуглится и изучается. Я о другом, хотел спросить, о глобальной стратегии: как добиться успеха и начать писать полезные программы, учитывая что я студентоблядь без реального опыта в профессии
5793 Кб, Webm
#163 #527666
>>495156 (OP)
Освящаю тред
#164 #527667
>>527655
Stack - замена не cabal, а только cabal-install, причём сомнительная. Полезно, конечно, что ньюфаги, не знающие про 'cabal sandbox init' будут по-умолчанию получать аналогичное поведение, а не засирать глобальное пространство пакетов, но вся эта их идея со слепками проекций хакаджа - это дофига мейнтейнить, а очень негибко. Этот их LTS (Long Term Support) резолвер, ради которого всё и затевалось - нужен для такого кровавешего энтерпрайза, что я даже хз, пишет ли кто такое на хаскеле. С появлением сендбоксов в обычном кабале у меня исчезли какие-либо проблемы, и даже если какой-то пакет ломается, всё очень гибко, я легко могу его у себя развернуть, пофиксить, и установить в нужный сендбокс. В общем, не совсем понимаю, какие такие важные проблемы решает stack.
>>527678
#165 #527678
>>527667
Тем не менее, со stack'ом вообще ничего не надо делать, а всё есть и просто работает. Так что не вижу причин использовать cabal-install вместо него.
#166 #527696
>>495156 (OP)
Хаскелисты, как вы относитесь к тому, что в вашем языке принято такое дерьмовое именование? Вот есть языки в этом плане хорошие (C#, Scheme) и есть пиздец, как будто создатели говном на туалетной бумаге его писали (Python, C). Вы ведь тоже это чувствуете?
>>527705>>528675
#167 #527705
>>527696
Проблема в том, что там очень мало пакетов. Про энтерпрайзный LTS вообще молчу, но даже в nightly: https://www.stackage.org/nightly-2015-08-09
Причём пакеты обязательно появятся сначала на хакидже, а только потом будут аккуратно отобраны и залиты на стакидж, если кто-то будет настаивать. Я для себя не вижу ни одной причины мейнтейнить дополнительно ещё и stack.yaml, изучать ещё один альтернативный способ делать "cabal sandbox add-source" только для stack и тд, особенно учитывая, что если с пакетами всё нормально и они в принципе могут вместе собраться и разрулиться, то всё будет прекрасно работать и с cabal sandbox init; cabal install yoba1 ... yobaN, а если нет - то и в stack чинить это надо будет примерно так же как с кабалом, но немножк по-своему.
#168 #528675
>>527696
Что именно там дерьмовое?
#169 #530607
Что означает (# blah, blah #)? Это какой-то особый вид таплов? Как это называется?
>>530705
#171 #530876
Нужна анонимная экспертиза
http://logicaltypes.blogspot.ru/2015/08/pure-functional-programming-claims-irl.html
Этот хуй реально на сктолько крут как он утверждает или это его больные фантазии?
>>530914>>639829
#172 #530914
>>530876
Мандадки на (старой!) жабе выглядят фантазией человека, который не делал мандадок на жабе. Там такая срань получается, а её ёще и с абстракными фабриками надо как-то связывать. Хотя я не эксперт, может быть, у кого-то и получалось получше.
>>531330
#173 #531330
>>530914
Для монады как для паттерна нужны всего лишь анонимные функции, которые на старой жабке делались через анонимные интерфейсы. Я делал list-монаду. Но вот с системой типов беда будет, это будет всего лишь паттерн.
>>531352>>531452
#174 #531352
>>531330
Ну я и говорю. Получается такой код, что гораздо проще написать всё старыми добрыми if/while. И это при том, что я-то на шарпе пытался, где и лямбды короче и эктеншен-методы есть.
Если у тебя было лучше, можешь код вбросить на посмотреть?
>>531452
#175 #531452
>>531330
>>531352
Монады приемлимо не делаются даже на скалке, хотя там и hkt есть, и имплиситами инстансы вбрасывать можно. На хаскеле уже более-менее, но хотелось бы ещё автолифтинга для трансформеров и синтаксического сахарка побольше.
>>532506
#176 #532506
>>531452
Так вроде lift для трансформеров не нужен уже.
>>532823
#177 #532823
>>532506
Есть так называемый mtl-стайл, когда для монадических операций объявляются тайпклассы типа MonadState, MonadReader и тд, и если все функции писать полиморфно по этим тайпклассам, то лифтить на call-site действительно ненужно будет, только вот лифтинг этот надо будет писать на definition стороне, и каждая такая функция будет выглядтеть в духе yoba ... = lift $ ..., что не очень красиво, тк не факт что функция будет вызываться там, где этот lift реально нужен (а не будет просто лишним вызовом который ничего не делает). Плюс само наличие дополнительных тайпклассов для операций тоже не очень красиво, потому что хотелось бы иметь то же самое и без этого. Они получается чисто инфраструктурные для лифтинга, а не содержательные.
#179 #541837
Сап. Маю тип с параметром A a, и две разные функции:
f1 :: (Num a, Ord a) => A a -> A a -> A a
f2 :: A () -> A () -> A (),
и я бы не против их скрестить так, чтобы можно было
"привести типы", точнее при необходимости отбросить переменную а:
f (A a) (A ()) даст A ()
f (A a) (A a) -> A a
и так далее. В А, вообще-то, валяется Set (Int, Int, a), так что принципиально тут наверное ничего особого нет, но система типов не дает. Так вот - это блять вообще можно сделать в хачикле?
>>542021
#180 #542021
>>541837
Хуй знает, чё ты там выдумал, попробуй
A a -> A b -> A b
#181 #542635
Ананасы, подскажите годный материал на РУССКОМ для изучения Haskell.
#182 #542664
>>542635
http://www.labirint.ru/books/467141/
Весьма годная книга, вышла в 2015
>>542708
#183 #542696
Ананасы, подскажите годный материал НА РУССКОМ дли изучения теории категорий
>>542710
#184 #542708
>>542635
>>542664
"Изучая Haskell" хорошая книга, но она сложна для тех, кто только начинает.
"О Haskell по-человечески" годная книжка. Простая и приятная.
"Учебник по Haskell" Холомьёва очень хорош. Есть несколько глав по теории, поможет вникнуть в концепции.
А в "Изучая Haskell" много продвинутых тем, описания работы с библиотеками, куча расширений языка, так что если с Haskell'ем совсем не знаком, то можно только запутаться. Но она хороша если основы уже понимаешь и готов к практическому программированию.
Есть ещё книги Душкина, но кроме сборника эссе ничего не читал, поэтому рекомендовать не берусь.
Ещё есть 3-4 видео-курса на русском (compscicenter.ru, stepic.org), но там в основном обсуждается тема функционального программирования, так что полезность их относительна.
#185 #542710
>>542696
Опять же у Холомьёва есть несколько глав с понятным введением в теорию категорий.
Есть книжка - Маклейна С. "Категории для работающего математика"
Ещё в Питере проходили лекции по типу - https://vk.com/category_agile
7 Кб, 150x210
#186 #542724
>>542635
Ещё
С.А. Овсянников, Миран Липовача "Изучай Haskell во имя добра!"
>>542867
#187 #542740
>>542635
Только раздел на викибукс, тайпкласопедию и haskell real world.
Всё остальное - говно для дебилов, монады в картинках и прочая хуйня для даунов, вместо нормальных категориальных определений.
>>542843>>542856
#188 #542843
>>542740
Для программирования на Хаскеле не обязательно знать теорию категорий
>>543056
#189 #542856
>>542740

> haskell


> теоркат


Nice meme. XDDDD
А если серьёзно, то хаскель содержит теоркат в следовых количествах, а сами хаскелисты теорката не знают.
>>543056
#190 #542867
>>542724
На этом пока остановился, спасибо, аноны
#191 #543056
>>542843
>>542856
Из-за тупорылых определений для даунов типа "мандада ыта такая коробочка" потом получаем оленей не могущих в линзы, пучки, стрелки и прочих дебилов которые продолжают перекладывать кирпичики как в джавашарпоговнах, вместо того, чтоб заниматься алгеброй программирования.
>>543068>>543099
#192 #543068
>>543056
Хаскель никому не интересен кроме тех самых джавамакак. Нормальные пацаны уже пару лет как перекатились на агду и идрис.
#193 #543077
Надеюсь, эти нормальные пацаны там занимаются полировкой оснований мироздания и проверкой теоремок, иначе им предстоит много разочарований. Всем остальным ценителям прекрасного желаю скорейшего переката в литературу, изобразительное искусство, кинематограф, музыку, игры!
#194 #543099
>>543056
Сможешь хотя бы дать определение sink и source без гугла?
#195 #543656
Зачем он нужен, этот ваш хаскелль?
>>543659
#196 #543659
>>543656
что бы у всех бомбило
#197 #543751
ethernet пробовал кто делать? Дайте советов мудрых.
sage Помогите неучу #198 #543805
4.Исправьте ошибки в запросе и объясните, что он выполняет:
INSERT INTO TEMP_TABLE (CORP, HOUSE, CUST, CYCLE, UNIQUE_CUSTOMER_PIN, FIRST_NAME, LAST_NAME, PHONE_1,PHONE_2)
SELECT
WO.CORP,
WO.HOUSE,
WO.CUST,
CM.CYCLE,
CM.UNIQUE_CUSTOMER_PIN,
CM.FNAME,
CM.LNAME,
FROM WWWOOO WO
JOIN CCCMMM CM ON WO.CORP = CM.CORP AND WO.HOUSE = CM.HOUSE AND WO.CUST = CM.CUST
LEFT OUTER JOIN SSSDDD ON SD.RPT_COLL_WRITE_OFF_ID = WO.RPT_COLL_WRITE_OFF_ID
WHERE SD.RPT_COLL_WRITE_OFF_ID IS NULL
AND WO.ADD_DT > SYSDATE-10;

Помогите Антоши, надо сделать, а я кажется нихуя не понимаю.
63 Кб, 500x500
#199 #544188
>>543805
Используй persistent
#200 #544205
>>543805

> SSSDDD


Ты тут алиас SD проебал. Должно быть SSSDDD SD.
Скрипт инсертит в таблицу результат селект-запроса.
>>544210
#201 #544210
>>544205
Также некоторые столбцы в select-запросе названы не так как в источнике - надо переименовать, и двух столбцов не хватает - их я нуллами заполнил
http://pastebin.com/YdK3iRzf
>>544214
#202 #544214
>>544210

> источнике


получателе
#203 #545155

>Первая теорема утверждает, что если формальная арифметика непротиворечива, то в ней существует невыводимая и неопровержимая формула.


>Вторая теорема утверждает, что если формальная арифметика непротиворечива, то в ней невыводима некоторая формула, содержательно утверждающая непротиворечивость этой арифметики.


применимы ли эти теоремы к языкам с зависимыми типами? да, я дурак
>>545615
#204 #545615
>>545155
Разумеется, если язык с зависимыми типами непротиворечив. лол
#205 #546939
Поделюсь своим опытом. Ранее никогда не писал на Haskell. Выбрал его для нового проекта в котором нужен был упор на безопасность, корректность и скорость.

Рассуждал так:

Scala - хорошо, но утомляет долгое время компиляции при больших проектах. Требует JVM. Отличная система типов, хоть иногда её мощи недостаточно.

Go - пробесил меня. рудиментарная система типов, много boilerplate, error handling. однако быстро компилируется.

Rust - казался чем-то как Scala(типы, макросы, и прочие прелести) но без JVM и быстрее вроде как. Тогда еще не было даже 1.0 версии, но я искренне хотел попробовать. Не осилил на нем даже hello world, даже установить компилятор не смог с первого раза. Очень сырой был, пришлось отказаться.

Python, Ruby и прочее не хотелось рассматривать по причине отсутствия времени на написание горы тестов и отлавливания багов типа TypeError: 'NoneType' в рантайме.

Послушав одного знакомого который помогал в конторе переучивать команду с PHP на Haskell, и другими адептами которые делились success story.. Я подумал что стоит попробовать.

И вот пишу уже почти год на Хаскеле SaaS с REST API. В свое время я писал такие вещи на популярных платформах (php, python, ruby, go, scala).

Вначале было очень сложно, без опыта делать что-то большее чем в туториалах показано. Чтение кода давалось тяжело с непривычки и беглого чтения мануалов. Код писался порой не самый красивый, но корректный. Я бы сказал, что местами я писал код как я раньше это делал в императивных языках. Совсем не idiomaitic Haskell. Однако это не мешало ему быть корректным.

Время шло, и постепенно ко мне приходило понимание, зачем нужны fmap, <$>. Как использовать их в реальной жизни. На практике это выглядело так, я нагорожу код в виде pyramid of doom. А через пару месяцев возвращаюсь и делаю его в разы короче используя <$>, either, maybe, fmap, >>=. Рефакторинг такого кода доставляет огромное удовольствие. Ведь ничего не ломается. А код становится короче, и дальше ты уже не пишешь эти пирамиды из if и case of, а используешь удобные инструменты для композиции и перевода данных из одного типа в другой.

Поработав с Haskell продолжительное время, я пришел к выводу: мы все время разделяем код на мелкие части, чтобы было проще понять и поддерживать. Потом мы собираем все кусочки вместе чтобы получить какой-то полезный нам продукт(передаем результат от одной функции к другой).

Так вот, комбинирование функций и отображение(маппинг) в Haskell делается невероятно просто. Это настолько естественно и удобно в повседневной работе, что я уже не хочу писать ни на каких других языках.

Я считаю что Haskell заслуживает лучшей репутации. Коллеги, учитесь и делайте на нем проекты.
В этом языке планка возможностей очень высока. Прийдется много читать, пробовать. Но это лучше чем Go в миллион раз. В нём есть все что нужно для разработки сегодня.

Я давно уже не получал столько удовольствия от программирования.

С практической точки я добавлю о экосистеме:
- За все время разработки мне не пришлось написать ни одного драйвера.
- Ни разу не столкнулся с cabal hell. Сейчас еще проще с этим, когда есть stack.
- В экосистеме за 20 лет набралось достаточно библиотек, чтобы спокойно писать для web.

Задавайте ответы.
#205 #546939
Поделюсь своим опытом. Ранее никогда не писал на Haskell. Выбрал его для нового проекта в котором нужен был упор на безопасность, корректность и скорость.

Рассуждал так:

Scala - хорошо, но утомляет долгое время компиляции при больших проектах. Требует JVM. Отличная система типов, хоть иногда её мощи недостаточно.

Go - пробесил меня. рудиментарная система типов, много boilerplate, error handling. однако быстро компилируется.

Rust - казался чем-то как Scala(типы, макросы, и прочие прелести) но без JVM и быстрее вроде как. Тогда еще не было даже 1.0 версии, но я искренне хотел попробовать. Не осилил на нем даже hello world, даже установить компилятор не смог с первого раза. Очень сырой был, пришлось отказаться.

Python, Ruby и прочее не хотелось рассматривать по причине отсутствия времени на написание горы тестов и отлавливания багов типа TypeError: 'NoneType' в рантайме.

Послушав одного знакомого который помогал в конторе переучивать команду с PHP на Haskell, и другими адептами которые делились success story.. Я подумал что стоит попробовать.

И вот пишу уже почти год на Хаскеле SaaS с REST API. В свое время я писал такие вещи на популярных платформах (php, python, ruby, go, scala).

Вначале было очень сложно, без опыта делать что-то большее чем в туториалах показано. Чтение кода давалось тяжело с непривычки и беглого чтения мануалов. Код писался порой не самый красивый, но корректный. Я бы сказал, что местами я писал код как я раньше это делал в императивных языках. Совсем не idiomaitic Haskell. Однако это не мешало ему быть корректным.

Время шло, и постепенно ко мне приходило понимание, зачем нужны fmap, <$>. Как использовать их в реальной жизни. На практике это выглядело так, я нагорожу код в виде pyramid of doom. А через пару месяцев возвращаюсь и делаю его в разы короче используя <$>, either, maybe, fmap, >>=. Рефакторинг такого кода доставляет огромное удовольствие. Ведь ничего не ломается. А код становится короче, и дальше ты уже не пишешь эти пирамиды из if и case of, а используешь удобные инструменты для композиции и перевода данных из одного типа в другой.

Поработав с Haskell продолжительное время, я пришел к выводу: мы все время разделяем код на мелкие части, чтобы было проще понять и поддерживать. Потом мы собираем все кусочки вместе чтобы получить какой-то полезный нам продукт(передаем результат от одной функции к другой).

Так вот, комбинирование функций и отображение(маппинг) в Haskell делается невероятно просто. Это настолько естественно и удобно в повседневной работе, что я уже не хочу писать ни на каких других языках.

Я считаю что Haskell заслуживает лучшей репутации. Коллеги, учитесь и делайте на нем проекты.
В этом языке планка возможностей очень высока. Прийдется много читать, пробовать. Но это лучше чем Go в миллион раз. В нём есть все что нужно для разработки сегодня.

Я давно уже не получал столько удовольствия от программирования.

С практической точки я добавлю о экосистеме:
- За все время разработки мне не пришлось написать ни одного драйвера.
- Ни разу не столкнулся с cabal hell. Сейчас еще проще с этим, когда есть stack.
- В экосистеме за 20 лет набралось достаточно библиотек, чтобы спокойно писать для web.

Задавайте ответы.
>>547127
#206 #546946

>И вот пишу уже почти год на Хаскеле SaaS с REST API


Ну т.е. примитивную CRUD аппликуху.

>А через пару месяцев возвращаюсь и делаю его в разы короче используя <$>, either, maybe, fmap, >>=.


А потом кто-то пытается разобраться в этих заклинаниях. Но так как опыта простого кода у него нет, он, тупой такой, не понимает этого и в уме восстанавливает старый код.
>>546948
#207 #546948
>>546946

> Ну т.е. примитивную CRUD аппликуху


Платформа типа AppStore + Game Center.

> А потом кто-то пытается разобраться в этих заклинаниях.


Да какие там заклинания. Это же элементарно все. И потом есть git blame.

Разве сложно въехать что вместо:

f <- getFoo
return Yoba f

просто пишешь Yoba <$> getFoo
>>547163
#208 #547127
>>546939
Спасибо, подрочил.
#209 #547163
>>547255
#210 #547255
>>547163
Зачем? Так получится длиннее, и нужно будет чистую функцию самостоятельно завернуть в монаду(liftm или return):
getFoo >>= return . Yoba

Т.к. >>= :: m a -> (a -> m b) -> m b

Монада же это тот же аппликативный функтор. Значит можно пользоваться <$> :: (a -> b) -> m a -> m b и достичь того же эффекта.
>>547256
#211 #547256
>>547255
В этом диалоге весь хаскель. Примитивный CRUD. Вместо того, чтобы написать на пыхе return (new Yoba(foo)), и тест, имитирующий проверку типов, у нас, бляха-муха, аппликативные функторы (на самом деле простые функторы, потому что <$> - это fmap, а Applicative это <*>, но это еще добавляет пикантности в вопрос).
>>547264>>547274
#212 #547264
>>547256
С fmap, конечно же, верное замечание.

Правда моего мнения не меняет. Зачем тратить время и писать эти тесты, лишний код который не несёт полезной нагрузки? Пишешь из года в год одно и тоже, так чего бы не прекратить повторяться.

Мне это напоминает отказ от vim потому что не осилил key bindings.
>>547266
#213 #547266
>>547264
Лишний код - это <$> и прочее >>=, а здесь ты получаешь generic код, который покрыть тестами все равно надо. Будущее - за языками с JIT проверкой типов, типа Julia. Быстро, при желании типизация форсится до статической, при этом код универсален.
А я из года в год одно и то же не пишу, если мне что-то нужно, я лучше возьму готовое решение и допилю его.
>>547274
#214 #547274
>>547266

> Лишний код - это <$> и прочее >>=, а здесь ты получаешь generic код, который покрыть тестами все равно надо.



Где тут generic code? Он очень даже concrete. Ты же комбинируешь функции с конкретными типами.

>> Будущее - за языками с JIT проверкой типов, типа Julia. Быстро, при желании типизация форсится до статической, при этом код универсален.


А что за проблема? Не пиши деклараций типов вообще. В Haskell они не обязательны :)

> А я из года в год одно и то же не пишу, если мне что-то нужно, я лучше возьму готовое решение и допилю его.



А как ты будешь допиливать? Все равно будет новый код, будет тот же самый boilerplate.

>>547256
А в чем прикол с CRUD? Проблема написать чтоли?
Или что-то ты не можешь написать на Haskell?
>>547284
#215 #547284
>>547274

>А что за проблема? Не пиши деклараций типов вообще.


Проблема в том, например, что + - это a -> a -> a, что значит, что сложения по разнотипным объектам быть не может. А это, в свою очередь, значит, что модулю dimensional требуется или прятать плюс из прелюдии, или обзывать его .+ или еще как. Что значит, что полиморфный код и для интегеров, и для метров - невозможен. То есть текстом написать можно foo a b = a + b, только работать это не будет, потому что для разных call-tree потребуется разная сигнатура для foo. Это - ключевая проблема системы типов хаскеля, которая и заставляет засорять код всеми этими эскалаторами-элеваторами. И тут не важно, написал ли я сигнатуру, или нет.
Самое главное, что более простое решение Julia (в которой foo a b = a + b просто работает и все, точно так же, как в крестовых шаблонах), совершенно не затрагивает мозг, оно интуитивно понятно.

>А в чем прикол с CRUD? Проблема написать чтоли?


В том-то и дело, что CRUD - страшный примитив.
#216 #547292
>>547284
Про Julia понял. Спасибо. Однако это не фатальный недостаток :)

Вот c CRUDом не понимаю твоей боли. Чего тебе не хватает?
9 Кб, 225x164
#217 #547878
>>547284
Кстати, я вот думал про напряг с со сложением.
Я думаю что если делать сигнатуру a -> b -> b или a -> b -> c, то это скроет детали приведения типов. Плюс осложнит type inference.
Будет как javascript.
>>549228
#218 #549228
>>547878
А доставьте ту картинку, где таких действий дохера и к ним ещё комментарии приписаны. Картинка за авторством Qt-саже-петуха из ранних крестотредов.
>>549270>>549284
#219 #549270
>>549228

>WAT.flv

#220 #549284
>>549228
Раньше гуглилось по "because fuck math", сейчас тоже должно.
#221 #555810
А я вот начал свое становление с хаскеля, написал пару небольших сервисов, прочитал несколько хороших книг. Но впоследствии перекатился на C#, который как мне показал ось много проще. Теперь же с ностальгией вспоминаю чистые функции, обработку исключений, ошибок, async. Жаль, что на Haskell практически невозможно писать GUI под Windows=/
>>556456
#222 #556080
>>495648
что пост, что комментарии, прочел с удовольствием. В отличии от этого треда.
#223 #556297
>>495156 (OP)
петушня, а вы за борщи пишете или есть профессионалы?
на хачкиле вообще сложно найти работу?
>>556437>>556714
#224 #556390
Зацените мой автоперезагружальщик камер.
https://bitbucket.org/Majesty911/camreboot
Для меня важны Ваши замечания, дорогие друзья.
>>556423
#226 #556437
>>556297
Вот тут есть работки:
https://angel.co/haskell/jobs
А вообще, я даже сисярпом-то денег не зарабатываю, а ты про хескиль
#227 #556456
>>555810
wxHaskell
>>556696
#228 #556696
>>556456
Зачем ты впариваешь человеку это говно под видом конфетки? Хаскель не может в виндовый гуй, и вообще никто, кроме самих MS, не может в виндовый гуй. Потому что он прогессирует быстрее, чем кто-либо успевает его изучать его и писать биндинги.

wxHaskell - это способ писать гуйню уровня windows 95 с 3-D кнопками. Да и не поддерживает его особо никто, поэтому не удивлюсь, если у авотра поста возникнет ональный гемморой жопы при попытке хотя бы его сбилдить. Другое дело, что если бы даже Хаскеле были все свистоперделки виндового GUI на уровне распоследнего сишарпа, среднестатистический школопрограммист не cмог бы ими воспользоваться как команды профессиональных дизайнеров и юзабильщиков в MS. Поэтому может быть и не проблема это вовсе?

Я вот вообще в Хаскеле консолькой балуюсь и мне для моих задач хватает. Потому что написание качественного GUI приложения требует на порядок больших трудозатрат, даже при наличии самых современных инструментов. А консолька под силу и программисту-одиночке. И вот тут Хаскель добавляет удобные принтеры и парсеры, чтобы программисту-одиночке консолька и текстовые файлы стали еще доступнее. В C# таких инструментов нет.

Поэтому если форсить Хаскель, то надо форсить его в том, в чем дествительно силён. Если одиночный программист-ресёчер или небольшая команда и могут что-то написать, то Хаскель предоставит им средства для усиления их эффективности. Если мы говорим об индустриальном GUI за 100500 тысяч долларов, в который вбухиваются зиллионы человеко-часов, причем даже не программитов, то какой-нибудь Microsoft Blend for Visual Studio наверняка более оптимизирован под эту задачу.
#229 #556702
>>555789

>Haskell в матмоделировании используется?


В матмоделировании чего? В матмоделированнии рулят инструменты матмоделирования, типа Маткада. Маткад теоретически можно переписать на Хаскеле, будет Маткад на Хаскелле. Не думаю, что ты, как пользователь, заметишь разницу. Я вот даже не знаю, на чём Маткад написан. Вдруг он вообще на Брейнфаке? Это вообще ебёт кого-нибудь, кроме его разработчиков?
#230 #556714
>>556297

>на хачкиле вообще сложно найти работу?


Если ты хуй простой - то сложно. Если ты Simon Marlow - то ты уже работаешь в Фейсбуке, пишешь статьи, и проблемы чернокожих тебя не волнуют.

Хуёвому программисту сложно найти хорошую работу. Хуёвому программисту легко найти хуёвую работу и на хуёвую работу легко подобрать хуёвого программиста. На хуёвую работу сложно нанять хорошего программиста (HR-ы постоянно жалуются, мол хорошего программиста хуй найдёшь... на хуёвую-то работу). А если ты хороший программист, а работу предлагают только хуёвую - тот тут вообще всё вдвойне сложнее, тут надо что-то преосмыслить, либо в плане твоей хуеватости, либо в плане несовершенства мира.
#231 #556754
Давайте побазарим за проблемы Хаскеля. Вот я оче мало на нём программировал, поэтому мой опыт скорее единичный, чем статистический, тем не менее хочется побазарить за реальные проблемы, за проблемы потенциальные и проблемы надуманные. Может кто еще своими мыслясми поделится.

Проблемы реальные:
1. Cabal-Hell, притча во языцех. Чисто теоретически не должно быть никакого кабал-ада: пишете под последние либы на хакадже, они все собираются за редкими исключениями. На практике: мне мой проект нужен мне на fpcomplete, где платформа 14.09, на моём лептопе, где The Glorious Glasgow Haskell Compilation System, version 7.10.1 и на работе на юбунте, где какая-то совсем древняя версия. Поддеживать компилируемую версию проекта на всех этих платформах - это реально Hell. У меня в среденм один из 8 коммитов компилируется на всех трёх, в индустрильных платформах такой проблемы не наблюдалось.
2. Проверка типов. System-F неразрешима и GHC использует всякие эвристики. Проблема в том, что если ваша программа тайпчекалась в одной версии GHC, то она может не тайпчекнутся в другой. Я на это натыкался. Исправление одной ошибки - в среднем один день.
3. Засирание пространсв имён. В случае ООП вызов метода квалифицируется типом класса. И это реально работает. А в Хаскелле все функции идут в глобальный скоуп, при вызове надо явно квалифицировать. Отсюда километровые импорты и назначения алиасов. В ООП такого не было. В Идрисе предложили применять подходящую функцию по типам, если в скопе более, чем одна. Это звучит разумно, а скоупинг Хаскеля никуда не годится, как ни крути.

Проблемы потенциальные:
1. Меня еще ни разу серьезно не ебало, но в Хаскелле практически невозможно сделать каких-то выоводов о производельности функции по коду. Более того, большнсво попыток оптимизровать хаскелькод вручную ведут к пессимизациям. Это плохо, это означает, что я не чувствую компилятора, хотя в мйнстриме я их чувствовал и мог ими управлять.

Проблемы надуманные:
1. А вот их я не могу обозначить. Напишите мне, почему люди не используют Хаскель по своим соображениям.
#231 #556754
Давайте побазарим за проблемы Хаскеля. Вот я оче мало на нём программировал, поэтому мой опыт скорее единичный, чем статистический, тем не менее хочется побазарить за реальные проблемы, за проблемы потенциальные и проблемы надуманные. Может кто еще своими мыслясми поделится.

Проблемы реальные:
1. Cabal-Hell, притча во языцех. Чисто теоретически не должно быть никакого кабал-ада: пишете под последние либы на хакадже, они все собираются за редкими исключениями. На практике: мне мой проект нужен мне на fpcomplete, где платформа 14.09, на моём лептопе, где The Glorious Glasgow Haskell Compilation System, version 7.10.1 и на работе на юбунте, где какая-то совсем древняя версия. Поддеживать компилируемую версию проекта на всех этих платформах - это реально Hell. У меня в среденм один из 8 коммитов компилируется на всех трёх, в индустрильных платформах такой проблемы не наблюдалось.
2. Проверка типов. System-F неразрешима и GHC использует всякие эвристики. Проблема в том, что если ваша программа тайпчекалась в одной версии GHC, то она может не тайпчекнутся в другой. Я на это натыкался. Исправление одной ошибки - в среднем один день.
3. Засирание пространсв имён. В случае ООП вызов метода квалифицируется типом класса. И это реально работает. А в Хаскелле все функции идут в глобальный скоуп, при вызове надо явно квалифицировать. Отсюда километровые импорты и назначения алиасов. В ООП такого не было. В Идрисе предложили применять подходящую функцию по типам, если в скопе более, чем одна. Это звучит разумно, а скоупинг Хаскеля никуда не годится, как ни крути.

Проблемы потенциальные:
1. Меня еще ни разу серьезно не ебало, но в Хаскелле практически невозможно сделать каких-то выоводов о производельности функции по коду. Более того, большнсво попыток оптимизровать хаскелькод вручную ведут к пессимизациям. Это плохо, это означает, что я не чувствую компилятора, хотя в мйнстриме я их чувствовал и мог ими управлять.

Проблемы надуманные:
1. А вот их я не могу обозначить. Напишите мне, почему люди не используют Хаскель по своим соображениям.
#232 #556780
>>556754
Кабалхелл от очень строгих ограничений по версиям по каждому пакажду, которые любят в конечном итоге образовывать неразрешимые кольца. Ну ещё ghc требует всегда пересобирать мир, стабильных аби там никогда не было и не будет. Так-то к самому кабалу никаких претензий.

>невозможно сделать каких-то выоводов о производельности функции по коду



Предполагается что ты не должен об этом думать, а должен сконцентрироваться на описании своей задачи, а компилятор всё сделает за тебя.

>почему люди не используют Хаскель


>Исправление одной ошибки - в среднем один день.



Сам-то как думаешь?
>>563314
#233 #556936
>>556754
По поводу проблем вот тут уже все расписали
https://github.com/Gabriel439/post-rfc/blob/master/sotu.md
112 Кб, 1024x768
#234 #562260
Эй, хачкель-куны. Вот вам код из книжки PCL: http://ideone.com/DZxArH
Покажите как то же самое сделать на хачкеле. С меня нихуя.
81 Кб, 1280x720
#235 #562631
http://www.kaspersky.ru/job?vac=283264

> Skills/experience:


> Strong experience developing with Haskell

#236 #562658
>>562260
ой сейчас ты соснешь....
#237 #562693
>>562260
Чой-то за языко-то такой? Проорал с дефунов
>>562694
#238 #562694
>>562693
Заметил лисп, просто в глаза долблюсь, простите
185 Кб, 972x659
#239 #562800
>>562260
Ну же? Кто-нибудь? Или вы только факториалы умеете вычислять, а как только нужно с реальным миром общаться сразу в кусты?
>>563363
#240 #563148
>>496034

>Нету нормального синтаксиса


не нужен

>для переменных


не нужны

>массивов


не нужны

>хешей


не нужны

>обьектных литералов


не нужны

>нету именованых параметров функций


не нужны
>>563252
#241 #563252
>>563148
Конечно не нужны, но с ними удобнее же.
#242 #563295
test
#243 #563314
>>556754
1. можно вычёркивать, Ребе благословил Stackage.
>>556780

>Кабалхелл от очень строгих ограничений по версиям по каждому пакажду


Не от этого, а от того, что кобол-инстолл пытается разрешать зависимости, основываясь на том, какие пакеты у тебя уже установлены. В итоге, результат работы кобол-инстола у всех будет разный (даже, блядь, в сендбоксе, или при добавлении каждой нововой зависимости надо сносить нахуй сендбокс и переустанавливать всё), в зависимости от того, что уже устанавливали и в каком порядке. Более того, при таком подходе может получиться, что задача доустановки каких-то пакетов вообще не имеет решения, при том, что в природе совместимый набор пакетов есть.

Стек использует фиксированные билд-планы, поэтому там такой проблемы нет - что сбилдилось однажды, то будет билдится всегда. Плюс всё сделано для людей - установка нужной версии компилятора, генерация дистрибутивов с исходниками (причем он может сам проставлять ограничения по версиям), генерация хаддоков, сборка, тестирование, бенчмарки - любое действие одной командой. Больше не надо трахаться под вендой со сборкой Network или думать об установке alex и happy, Стек просто работает. А глубина отсоса хиккующих любителей индус-триальной Джавы / просто скалаёбов-неудачников, качающих джарники с помоек вроде апача и трахающихся потом с настройкой мавена, теперь просто не умещается в человеческое воображение по причине пробития верхней границы кардинальных чисел.
#244 #563333
Привет, анончики.

Работая сисярп макакой решил окунуться в хаскелль, прочел книжку, посмотрел на хаскелльпроблемс, и теперь пробую написать какую-нибудь маленькую программку.
Но у меня проблема - я пишу так, как писал бы в ипмеративной дрисне, как пишу на работе. У меня не получается хаскелль-код. Что делать?

(И мб кому нехуй делать, может оставить скайп, чтобы помочь долбоёбу? Ну, чтобы я могу иногда спрашивать, как в хаскелле написать юнит-тест или получить текст с главной страницы сайта по названию сайта и т.п. хуйню)
#245 #563363
>>562800

Тратить время на то чтобы переписывать твой код нет смысла. Хочешь посмотреть как выглядит код? Вот тебе пачка туториалов:

School of Haskell: http://schoolofhaskell.com/
Gabriel Gonzalez's basic Haskell examples:http://www.haskellforall.com/2015/10/basic-haskell-examples.html
Collection of Haskell papers and tutorials:http://www.dohaskell.com/
>>563534
#246 #563364
>>562260
Код ничего не читает и не выводит. В силу ленивости эквивалентная программа на Haskell это main = return ()
>>563365>>563534
#247 #563365
>>563364
Ахаха! Двачую. Я минут пять искал точку входа в том листинге.
>>563534
#248 #563534
>>563363
Во первых это не мой код, а код из https://en.wikipedia.org/wiki/Practical_Common_Lisp
>>563364
>>563365
Блять, ну вы какие-то ебанутые. Вы про REPL не слышали? Евалишь файлик, получаешь маленькую интерактивную дб для мп3шек. Вся суть хачеобезьян, 70 строчек кода осилить не могут.
>>563645
#249 #563645
>>563534
Нахуй мне переписывать код из твоей книжки. Сука вот охуел, давай я тебе на копипащу говна из книг а ты будешь переписывать?
>>563653>>563710
#250 #563653
>>563645
Что и требовалось доказать. Только фаломорфировать на апликативные сфинктеры и можете. А как сделать что-то полезное, так "нахуй мне". Ясно-понятно.
>>563721>>564063
#251 #563710
>>563645
Хочешь пользы - сделай сам. Хули 70 строчек. Можно обойтись одной IO. Ну или StateT IO.
>>564021
#252 #563721
>>563653
Хочешь пользы - сделай сам. Хули 70 строчек. Можно обойтись одной IO. Ну или StateT IO.

Дохуя свободного времени? Прочти LYAH. Книга маленькая знаний хватит чтобы переписать этот код.
>>564021
#253 #563853
>>562260
создай СО тред
#254 #564020
test
#255 #564021
>>563710
>>563721
Вся суть. В лиспотреде хаскельную парашу переписали все кому не лень, а местные полуебки могут только кукарекать, но ни строчки кода написать не в состоянии.
>>564063
Вопрос десятилетия #256 #564054
Илита писала на Хаскелле еще до того, как он стал мейстримом. Хаскель стал мейнстримом. Вопрос десятилетия: на чем сейчас пишет илита?

Кстати, удивительное наблюдение. На то, чтобы вывести Хаскель в менстрим потребовалось 25 лет. 25 лет, Карл, на то, чтобы вывести новый язык в мейнстрим. "Что в нём удивительного?", усомнится незадачливый читатель - "Есть же примеры новых языков, которые взлетели довольно быстро, тот же Питон, например, просто Хаскель - тормоз, всякое бывает.." Нет, отвечу я, все эти новомодные свистоперделки, вроде всяких питонов растов го и даже, Г-ди прости, эм-эли - по сути рекомбинации синтаксического сахорочка и сервисов рантайма, в них нет принципиально новой™ парадигмы, нет своего вектора, нет кредо.

Языки с кредо я могу четко обозначить.

Это сишка. Кредо сишки в том, что платформозависимый ассемблер можно заменить языком более высокого уровня без привязки к платформе. Заменить жестко, бескомпромиссно. Одним ударом зактнуть глотки всем питушкам, кукарекающим про то, что высокоуровневый язык не может быть производительным и продиктовать новый стандарт в их курятнике. И сишка это сделала. Практически за 4 года. Сейчас, когда речь идёт о написании высокопроизводительного кода в условиях ограниченности ресурсов, когда речь идёт о системном программировании, прежде всего говорят о сишке. Ну или о сишке с ассемблерными вставками. Но не о ассемблере с сишными вставками. Ищут программистов на Си. Сишка была эволюционным шагом.

Следующий шаг - ОО-языки с мусоросборниками. Тут сложно выделить один язык, начинать можно со Смолтолка или Лиспа (хотя скобочное говно так и не вылилось во что-то значащее, да, лисперов можно считать первопроходцами мусоросборников и богатых рантаймов, но, скорее, на уровне идей и концепций), но я возьму Джаву как индустриальный стандарт - всё остальное - в той или иной мере клоны или языки со сходными парадигмами. Тут опять же был тот же курятник, только уже со стороны сишкоёбов, кукарекающий про то, что "интерпретаторам" нет места в промышленном программировании. Джава строго провела всем по губам и доказала обратное. На взлёт от скриптового языка для пультов телевизоров и каких-то тормозных сановских серверов до стандарта обработки BigData ей потребовалось лет 10, наверное.

Параллено с ней - взлёт PHP. Ну и прочих руби-питонов, которые, по сути, пригламуренные перлы на стероидах. Кредо этого говна, включая ноду, в том, что скрипты с низким порогом вхождения рулят в глубого информатизированной эпохе постмодернизма, где каждая кухарка может написать свой сайт и бибилотеку количественного анализа на NumPy. Им, наверное, столько же, сколько и Джаве потребовалось, чтобы занять свою нишу, просто они в ортогональной проскости работают.

Теперь Хаскель. Кредо Хаскеля в дисциплине типов и провозглашении структуризации программы через типизацию самостоятельной ценностью. Это рвёт жопы безтиповым питушкам примерно так же, как кроссархитертурная сишка порвала жопы асмоёбам, как языки с богатыми рантаймами порвали жопы сишникам, как скрипты порвали жопы "системным" программистам. Т.е. питушок с низшей ступени эту ценность не понимает, он кукарекает "ну нахуй мне мусоросборник, я же и так память освободить могу, а ваш мусоросборник жрёт системные ресурсы!", так же и слаботипизированный питушок кукарекает "ну нахуй мне реификация, она же отжирает ресурсы моего головного мозга на доказательство, а я и так знаю, что условие выполняется!" Суть одна, питушок с низшего уровня не понимает ценностей питука с более высокого уровня и сопротивляется им, а индустрия доказывает обратное. И опять же, как и с Джавой, Хаскель - всего лишь один из языков, реализующий эту парадигму, поэтому, возможно, следует не языки с кредо искать, а сами кредо. Тем не менее, для вывода Хаскеля в мейнстрим понадобилось 25 лет.

Итак, через сколько же лет наши потомки смогут похвастаться тем, что пишут на новом языке программирования? Увидим ли мы сами этот новый язык, и на что он будет похож? Есть ли сейчас новые идеи, которые вызревают, как мусоросборники во времена Лиспа, или type-driven programming?
Вопрос десятилетия #256 #564054
Илита писала на Хаскелле еще до того, как он стал мейстримом. Хаскель стал мейнстримом. Вопрос десятилетия: на чем сейчас пишет илита?

Кстати, удивительное наблюдение. На то, чтобы вывести Хаскель в менстрим потребовалось 25 лет. 25 лет, Карл, на то, чтобы вывести новый язык в мейнстрим. "Что в нём удивительного?", усомнится незадачливый читатель - "Есть же примеры новых языков, которые взлетели довольно быстро, тот же Питон, например, просто Хаскель - тормоз, всякое бывает.." Нет, отвечу я, все эти новомодные свистоперделки, вроде всяких питонов растов го и даже, Г-ди прости, эм-эли - по сути рекомбинации синтаксического сахорочка и сервисов рантайма, в них нет принципиально новой™ парадигмы, нет своего вектора, нет кредо.

Языки с кредо я могу четко обозначить.

Это сишка. Кредо сишки в том, что платформозависимый ассемблер можно заменить языком более высокого уровня без привязки к платформе. Заменить жестко, бескомпромиссно. Одним ударом зактнуть глотки всем питушкам, кукарекающим про то, что высокоуровневый язык не может быть производительным и продиктовать новый стандарт в их курятнике. И сишка это сделала. Практически за 4 года. Сейчас, когда речь идёт о написании высокопроизводительного кода в условиях ограниченности ресурсов, когда речь идёт о системном программировании, прежде всего говорят о сишке. Ну или о сишке с ассемблерными вставками. Но не о ассемблере с сишными вставками. Ищут программистов на Си. Сишка была эволюционным шагом.

Следующий шаг - ОО-языки с мусоросборниками. Тут сложно выделить один язык, начинать можно со Смолтолка или Лиспа (хотя скобочное говно так и не вылилось во что-то значащее, да, лисперов можно считать первопроходцами мусоросборников и богатых рантаймов, но, скорее, на уровне идей и концепций), но я возьму Джаву как индустриальный стандарт - всё остальное - в той или иной мере клоны или языки со сходными парадигмами. Тут опять же был тот же курятник, только уже со стороны сишкоёбов, кукарекающий про то, что "интерпретаторам" нет места в промышленном программировании. Джава строго провела всем по губам и доказала обратное. На взлёт от скриптового языка для пультов телевизоров и каких-то тормозных сановских серверов до стандарта обработки BigData ей потребовалось лет 10, наверное.

Параллено с ней - взлёт PHP. Ну и прочих руби-питонов, которые, по сути, пригламуренные перлы на стероидах. Кредо этого говна, включая ноду, в том, что скрипты с низким порогом вхождения рулят в глубого информатизированной эпохе постмодернизма, где каждая кухарка может написать свой сайт и бибилотеку количественного анализа на NumPy. Им, наверное, столько же, сколько и Джаве потребовалось, чтобы занять свою нишу, просто они в ортогональной проскости работают.

Теперь Хаскель. Кредо Хаскеля в дисциплине типов и провозглашении структуризации программы через типизацию самостоятельной ценностью. Это рвёт жопы безтиповым питушкам примерно так же, как кроссархитертурная сишка порвала жопы асмоёбам, как языки с богатыми рантаймами порвали жопы сишникам, как скрипты порвали жопы "системным" программистам. Т.е. питушок с низшей ступени эту ценность не понимает, он кукарекает "ну нахуй мне мусоросборник, я же и так память освободить могу, а ваш мусоросборник жрёт системные ресурсы!", так же и слаботипизированный питушок кукарекает "ну нахуй мне реификация, она же отжирает ресурсы моего головного мозга на доказательство, а я и так знаю, что условие выполняется!" Суть одна, питушок с низшего уровня не понимает ценностей питука с более высокого уровня и сопротивляется им, а индустрия доказывает обратное. И опять же, как и с Джавой, Хаскель - всего лишь один из языков, реализующий эту парадигму, поэтому, возможно, следует не языки с кредо искать, а сами кредо. Тем не менее, для вывода Хаскеля в мейнстрим понадобилось 25 лет.

Итак, через сколько же лет наши потомки смогут похвастаться тем, что пишут на новом языке программирования? Увидим ли мы сами этот новый язык, и на что он будет похож? Есть ли сейчас новые идеи, которые вызревают, как мусоросборники во времена Лиспа, или type-driven programming?
#257 #564056
>>564054
Типичный гуманитарный подход. Talk is cheap.
>>564065
#258 #564063
>>563653

>сделать что-то полезное


>разобраться в скобочном говне, переписать пример из задачника


>сделать что-то полезное


В чем польза то?
>>564021

>Вся суть.


Вся суть. Вся суть программы на Хаскеле в том, что она делает что-то в IO, имеет observable effect, а если observable effect она не имеет, то она нахуй не нужна, не вычисляется ввиду ленивости и вообще стирается оптимизатором. В этом вся суть хаскеллистов - они понимают, что есть код, который что-то делает и есть код, который нихуя не делает, и наблюдаемой разницы между двумя кодами, которые нихуя не делают, нет никакой, сколько бы строчек они не занимали. Поэтому хаскеллисты и не рвутся транслировать твой высер, ведь для них observable effect от этого действа будет нулевой. Это характерезует их maturity как программистов. Пока лиспошколота суетится паттернами в пустоту, подобно джаваархитегтогам, хаскельгоспода приближаются к более глубинному пониманию сути программирования.
>>588668
#259 #564065
>>564056
Типичный комментарий человека, который не может в дискурс. Точнее, не просто не может, а хочет, но не может (ведь если бы просто не мог бы, то проигнорировал бы, а тут на лицо желание и фрустрация). Этакий недогуманитарий, заваливший экзамен по онтологии и диалектике и слепо кидающийся на всех теперь, кто эксперементирует с софизмам, ради речевой эстетики.
>>564075>>564077
#260 #564075
>>564065
Владение дискурсом - это необходимое качество любого квалифицированного программиста, как человека, баллансирующего на тонкой грани математической лингвистики и лингвоматематики. Переводящего сугубо личные и неформальные пожелания клиента в домен ультрафинитизма (т.е. в даже гораздо более строгий, чем тот, которым оперируют "чистые" математики) и получающего за это деньги. Программист, который не может в дискурс - это неудавшийся математик, разорившийся аристократ в порту, который выглядит даже более нелепо, чем матрос на светском рауте.
#261 #564077
>>564065
Это был типичный комментарий человека, который называет говно - говном. Ты криптомарксист. Типа, есть первобытнообщинный строй, есть рабовладельческий строй (сишка), ну и так далее, в перед в светлое коммунистическое будущее (хаскель). Вокруг этого строится куча демагогии. А на деле - пшик и военный коммунизм в виде несчастного пердолинга стеками трансформеров. С марксистами не надо дискутировать, их надо пиздить. К сожалению, я не могу тебя отпиздить удаленно.
>>572983
#262 #564078
Проводить параллели с марксизмом можно бесконечно. И марксизмом, и хаскелем вохищается еврейская беднота. Богатые евреи делают фейсбук на php. Бедные - восторгаются хаскелем.Коммунизм так же требует высрать нового человека, который
>>572983
#263 #564079
который всю эту еблю с типами ради ебли с типами поймет и будет использовать. Как и видел на какой-то из борд: "а я теперь заставляю себя вместо питона запускать ghci". Хочет человек, пытается стать новым, человеком будущего. Однако подлая динамическая типизация все равно подсказывает: забей на это, реши задачу. Но - нет, мы будем страдать. Во имя будущего. Программ без ошиmemory exhausted.
>>572983
11 Кб, 480x360
sage #264 #564147
Поехавших полный тред.
>>564157
#265 #564150
>>564054

>Есть же примеры новых языков, которые взлетели довольно быстро


>тот же Питон


Ага, всего каких-то пятнадцать лет. Ну, по сравнению с хаскилем, может быть, это и быстро.

>И сишка это сделала. Практически за 4 года.


Ты нолик потерял. Правильно будет: "Практически за 40 с небольшим года".
#266 #564157
>>564147
Классический хаскель-тред ))
#267 #565127
>>564054

>Одним ударом зактнуть глотки всем питушкам, кукарекающим про то, что высокоуровневый язык не может быть производительным и продиктовать новый стандарт в их курятнике. И сишка это сделала. Практически за 4 года.


Вроде оптимизатора под итаниум то ли долго не было, то ли до сих пор нет. Кстати, никто не в курсе? Ведь если под него генерить оптимальный код, он же всех порвёт?
>>565960
57 Кб, 1490x406
#269 #572668
Ребят, работы вам принес.
#270 #572783
Сап. У меня есть задача, которая хорошо ложится на параллельный императивный пердолинг с набором двумерных массивов, но передавать результат туда-сюда через FFI нужно часто, поэтому стоит написать это все напрямую на хаскеле.
Собственно, я знаю язык как вот этот придурок >>572596 поэтому вопрос: что лучше использовать? repa сойдет?
>>598567
sage #271 #572829
Мочушка-то местная хачкелист, причём горящий.
>>572936>>572983
#272 #572936
>>572829
Это тебе санитары рассказали?
>>572978
#273 #572978
>>572936
Мой высер, и высер на который я отвечал быстро и уверенно были уделены с трупа этого треда. Моча - соси мой хуй, ты моя сука.
#274 #572983
>>572829
Тут даже мой поток сознания >>564077 >>564078 >>564079 оставили.
#275 #574446
бамп
#276 #575129
>>498346

>Наверное можно аппарат топологии применять для исследования в теории чисел(или как-то так) но у этих веток разные аппараты.


Идели/адели. Не говоря уже об этальных когомологиях и прочем. В общем, уже сотню лет как топология в тч один из главных аппаратов. И вообще числа = узлы
#277 #581176
А вам, я смотрю, наконец-то строгость завезли.
https://github.com/ghc/ghc/commit/46a03fbec6a02761db079d1746532565f34c340f
>>582301>>583247
#278 #582301
>>581176
Это победа или поражение для ghc?
>>582314
#279 #582314
>>582301
Это ещё один шаг на пути к энтерпрайзу.
24 Кб, 700x392
#280 #582732
Братья и сёстры! Благая весть! Обнаружен целый класс случаев, когда использовать списки - те самые функциональные связанные списки - действительно имеет смысл! Если взять любую задачу, решаемую динамическим программированием, такую, что значения, табулируемые в кеш, обновляются на основании функции от (некоего предыдущего значения в кеше и результата функции от неких рассматриваемых элементов), в решение этой задачи можно вписать дополнительный второй кеш, ячейками которого будут ноды списков, "логирующие" элементы, фигурировавшие в наполнении первого, и это будет действительно полезно, потому что вместо хранения для каждой ячейки всей коллекции, мы будем хранить только присоединённую к некой предыдущей ячейке кеша часть, в результате чего здорово экономить память. Через такое преобразование решения, находящие наилучшее что-то там, превращаются в решения, находящие последовательность шагов, через которую оно достигается.
>>583252>>583888
#281 #583247
>>581176
был же seq и bangpatterns
>>583253
#282 #583252
>>582732
С разморозкой.
#283 #583253
>>583247

>This also upgrades ordinary Haskell to allow recursive and polymorphic strict bindings

348 Кб, 685x411
#284 #583888
Котятки, извините. Сегодня стало очевидно, что всё-таки связные списки ненужны, а то что я описал чуть выше - это array-based стеки. На большинстве ЯП вместо ссылки на хвост нужно будет хранить индекс. С++ позволяет сделать это с нулевым оверхедом и в виде связных списков тоже (анбоксед массив cons-ячеек, и указатели/ссылки на клетки), но большого смысла нет, так как мы не хотим произвольного консирования в общую кучу - у нас ведь свой преаллоцированный хип в виде динпрог-таблицы. Ну ничего, я верю что и для настоящих связных списков когда-нибудь найдётся задача!
>>582732
#285 #587372
Андрей был отчислен с 4го курса КПИ в зимнюю сессию. Попал под призыв, так как у его родителей не было денег, связей и желания как-то оградить сына от войны. У самого Андрея тоже не было желания сопротивляться судьбе. Позже в суде он скажет: «В то время у меня не было особо сильных желаний, привязок, стимулов, не было мотивации». Был направлен в зону АТО. Отсиделся в штабе писарем, но после возвращения стал еще более замкнутым.
Вернувшись с войны, Андрей стал искать работу. Сначала устроился охранником в Сильпо, но быстро осознал, что зарплаты хватает только на еду. Возможно, если бы он мог позволить себе роман с какой-нибудь Галей, все сложилось бы иначе. Андрей вернулся к изучению программирования, стал пропадать на широко известных в узких кругах форумах, допоздна обсуждая анафорические и пандорические макросы, хуки компилятора и хаер-кайндед типы. Вскоре он устроился программистом-стажером в одну из крупных аутсорс компаний.
Шли годы. Андрей продвигался по служебной лестнице. Теория языков программирования стала его страстью. Он съехал от родителей, стал собирать кластер для исследований метапарадигм программирования. Неудовлетворенный уровнем зарплаты, Андрей меняет работу.
Здесь судьба вводит в жизнь Андрея и наше повествование нового героя: Фридриха. Фридрих, являясь человеком решительным и волевым, занимает должность начальника Андрея. Он прекрасно может заставить работать даже ленивого негра и своей выгоды ни за что не упустит, однако страдает от ригидности ума и отсутствия чувства такта. У протагониста случается конфликт с Фридрихом на почве использования прогрессивного языка программирования в проекте. Разум Андрея, поврежденный войной и шок-контентом в интернете, не выдерживает и у Андрея возникает синдром хронической усталости.
В Киеве ноябрь. Последние листы, уже не такие яркие, но блестящие от дождя, еще висят на деревьях и пахнут, а ветер перемешивает их ароматы с запахами дождя и выхлопных труб. Андрей, невыспавшись, собирается на работу. Позавтракав чаем на кухне, бросает взгляд на столовые приборы и апельсин. Ему остаётся способ один: папин подарок – РАЗДЕЛОЧНЫЙ НОЖ. ЕСЛИ НЕЛЬЗЯ ПО ДРУГОМУ — ТО ЧТО Ж... ФРИДРИХ!!!
#285 #587372
Андрей был отчислен с 4го курса КПИ в зимнюю сессию. Попал под призыв, так как у его родителей не было денег, связей и желания как-то оградить сына от войны. У самого Андрея тоже не было желания сопротивляться судьбе. Позже в суде он скажет: «В то время у меня не было особо сильных желаний, привязок, стимулов, не было мотивации». Был направлен в зону АТО. Отсиделся в штабе писарем, но после возвращения стал еще более замкнутым.
Вернувшись с войны, Андрей стал искать работу. Сначала устроился охранником в Сильпо, но быстро осознал, что зарплаты хватает только на еду. Возможно, если бы он мог позволить себе роман с какой-нибудь Галей, все сложилось бы иначе. Андрей вернулся к изучению программирования, стал пропадать на широко известных в узких кругах форумах, допоздна обсуждая анафорические и пандорические макросы, хуки компилятора и хаер-кайндед типы. Вскоре он устроился программистом-стажером в одну из крупных аутсорс компаний.
Шли годы. Андрей продвигался по служебной лестнице. Теория языков программирования стала его страстью. Он съехал от родителей, стал собирать кластер для исследований метапарадигм программирования. Неудовлетворенный уровнем зарплаты, Андрей меняет работу.
Здесь судьба вводит в жизнь Андрея и наше повествование нового героя: Фридриха. Фридрих, являясь человеком решительным и волевым, занимает должность начальника Андрея. Он прекрасно может заставить работать даже ленивого негра и своей выгоды ни за что не упустит, однако страдает от ригидности ума и отсутствия чувства такта. У протагониста случается конфликт с Фридрихом на почве использования прогрессивного языка программирования в проекте. Разум Андрея, поврежденный войной и шок-контентом в интернете, не выдерживает и у Андрея возникает синдром хронической усталости.
В Киеве ноябрь. Последние листы, уже не такие яркие, но блестящие от дождя, еще висят на деревьях и пахнут, а ветер перемешивает их ароматы с запахами дождя и выхлопных труб. Андрей, невыспавшись, собирается на работу. Позавтракав чаем на кухне, бросает взгляд на столовые приборы и апельсин. Ему остаётся способ один: папин подарок – РАЗДЕЛОЧНЫЙ НОЖ. ЕСЛИ НЕЛЬЗЯ ПО ДРУГОМУ — ТО ЧТО Ж... ФРИДРИХ!!!
#286 #587376
>>587372
неблохая фабула.
27 Кб, 387x569
#287 #587461
>>587372
Откуда такие подробности? На ксорче только сам факт поимки описывался. После слышал разве, что кластер отбили при задержании, в тюрячке теперь по массивам небось раскладывает. С nokia-2323c-2 хошь-не-хошь - экономить надо.
>>588450
105 Кб, 774x1032
#288 #587565
>>587372
Только быдло моет руки ради чистоты, элита же делает это из естественного любопытства и просто ради удовольствия. Вот взять, к примеру, меня. Начнём с простого. Сходив пописять, я мою руки. Сходив покакать, я мою руки. Дёрнус пинус, я мою руки. Дёрнув анус, я мою руки. Перед едой и после еды я мою руки. Во время готовки, как правило, я мою руки несколько раз. Это доступно каждому, но я не упускаю и другие возможности. В университете, на перерывах, студенты хотят развеяться: кто-то идёт в буфет, кто-то - в туалет передёрнуть, а я мою руки. В офисе тоже: коллеги идут на перекур, а я - за чаем. Коллеги - за кофе, а я мою руки. Во Франции бомбануло, а я мою руки. Bend over and I'll show ya more, you rookie!
>>587649
#289 #587649
>>587565
Брофист. Тож люблю навернуть мыльца.
sage #290 #588427
Вы помните цикл фильмов «Восставшие из ада»? В них главные герои находят коробочку-головоломку, и когда они находят способ, как её открыть, за ними приходят инфернальные сущности и утаскивают в глубины ада. Некоторые считают, что Хаскелл – это что-то вроде такой коробочки. Ведь неслучайно, что его разрабатывают в Microsoft Research.
#292 #588574
>>588450
это тут при чем?
#293 #588668
>>564063
На самом деле пыхоскобочный петух пытался вас подловить на отсутствии макросов. Собственно этот пример ничем не отличается от школьной задачки из учебника, кроме того, что имеет некое подобие языка запросов. К сожалению пыхоскобочный петух не знает, что в языке с каррированием и нормальным порядком редукции, предикаты пишутся ничуть не сложнее.
>>589843
assoc-in #294 #589333
Пацаны, это линзы или нет?
https://clojuredocs.org/clojure.core/assoc-in
>>589634
15 Кб, 486x339
97 Кб, 1280x720
1052 Кб, 1280x720
499 Кб, 500x280
#295 #589393
Когда control-flow-as-data пригодилось на практике.
>>589426>>590231
144 Кб, 256x256
3 Кб, 558x82
#296 #589406
Так как скоро начнётся 3я мировая и человечество самоликвидируется, напоследок начинаю палить секретные методологии структурирования вычислений, чтобы бедняши просветились перед переходом на следующий уровень бытия:
https://en.wikipedia.org/wiki/User:MikeDunlavey/Difex_Article
http://stackoverflow.com/a/489936/1203558
http://stackoverflow.com/a/24875909/1203558
Упражнение для хаскелистов: завернуть в монаду.
69 Кб, 466x680
sage #297 #589421
Бля, весело у вас, анимешки сидят, а в нашем iOS треде ничего подобного.
>>589434>>589440
#298 #589426
>>589393
Блевотина какая. Тебе ещё небось и ноде.жс нравится.
>>589791
#299 #589434
>>589421
Корреляции не замечаешь? Маргинальные языки только таких же к себе и привлекают, оттуда же и пониёбство. Тут как-то анон вкидывал видео с конфы, рекомендую:
http://ruhaskell.org/posts/talks/2015/06/21/cloud-haskell.html
#300 #589440
>>589421
Посмотри оп-пики пхы-треда. Там тоже онемешнеки сидят, если ты понимаешь о чём я.
#301 #589634
23 Кб, 500x236
14 Кб, 727x238
6 Кб, 865x95
#302 #589791
>>589426
Ну смотря с чем сравнивать и как. Если есть время и деньги, я, конечно, выберу си плас плас.
#303 #589843
>>588668

>отсутствии макросов


А как же Template Haskell?
25 Кб, 459x453
#304 #590231
>>589393
Ещё немного этих мягких французских булок. Не уверен, правда, что идиоматично использовать самопереход таким образом. А чё там в хаскеле, есть чё? На крестах вон MSM - похоже что state-of-the-art по теме среди всех ЯП. А на хаскеле опять нихуя полезного:
https://github.com/ekmett/machines - какая-то очередная стриминговая муть
https://hackage.haskell.org/package/fsmActions - datatype либа, не для control-flow
Вот самое близкое по теме, но из конкретики есть лишь ебливый трюк с использованием сишного препроцессора чтобы присваивать переменные было не супер-хуёво, а просто слегка уёбищно и неэффективно:
https://lukepalmer.wordpress.com/2007/07/10/abstract-state-machines-for-game-rule-specification/
https://lukepalmer.wordpress.com/2007/07/26/making-haskell-nicer-for-game-programming/
>>590316
#305 #590316
>>590231
ты похоже дурачок. в хаскеле такие вещи есть из коробки, без всяких MSM и костылей. Твой control-flow-as-data, как ты его реализовал - просто костыль ввиду ущербности языка.
>>590578
#306 #590578
>>590316
Из коробки ты можешь разве что пытаться описывать вручную какие-нибудь '(Trigger, State) -> IO State', но быстро запутаешься, да и неудобно самому State жонглировать (отчасти, ради того эксплицитные стейт-машины и нужны, чтобы взять на себя целиком это жонглирование). Возможно, это сносно заворачивается в StateT/IO, но надо реализовывать и смотреть. Здесь у меня есть _stateMachine.Fire(Trigger.Yoba), в хаскеле будет что-то типа 'fire :: Trigger -> StateMachineT Trigger State m State'.
1 Кб, 528x267
#307 #591262
Жму в emacs start interpreter С-c C-z. Запустился интерпретатор. Ввожу 123, нажимаю enter и нихуя не происходит. Ни сообщений об обшибке, ничего. Не дает выполнить выражение и все. Куда копать, что смотреть?
>>591286
#308 #591286
>>591262
подожди, ghc компилирует прост
#309 #592052
>>564054
Всё гораздо банальней. Бизнесу и промышленной разработке похуй на все эти абстрактные сферы.
Pure c взлетел потому что он частично решил проблему с еблей с asm. Плюсы взлетели ибо можно пилить абстракции. Php взлетел просто потому, что он позволял почти из коробки родить web страницу. Js тоже самое, только в браузере. Java взлетела когда на неё подсел интырпрайз, потому что альтернативы тупо не было.

Не следует путать - пользуются потому что нет выхода и пользуются потому, что язык лучше. Многие из вышеперечисленных языков особенно на начальных этапах развития - ещё тот понос с тьмой проблем. Но под них пилились фреймворки, стандарты, они при своей кривизне являют собой функционирующие организмы.

Чтобы хаскель стал заметно эксплуатируемым промышленным стандартом, он должен решать проблемы лучше и быстрее(включая время обученения). А для этого нужны хотя бы фреймворки, хотя бы на уровне спринга/ee, symphony, gorilla, boost, expressjs итд в зависимости от области задач плюс устаканившиеся паттерны(чтобы 10 разработчиков не пилило свою инвалидную коляску для решения очередной рутинной задачи) плюс решение проблемы с кабалом. Компания же глубоко насрать по какой причине проект перестал компилироваться, причём вполне обоснованно
>>592171>>593779
#310 #592171
>>592052

> А для этого нужны хотя бы фреймворки, хотя бы на уровне спринга/ee, symphony, gorilla, boost, expressjs


Из перечисленного тобой что-то более-менее ориентированное на решение конкретных задач, а не на героические скачки по граблям на костылях - это веб-фреймворки. В Хаскелле они, внезапно, есть. Только вот кто будет затевать разработку интернет-магазина на Хаскелле, если его можно заказать на фриланс.ру за 200 долларов с дизайном?

>плюс решение проблемы с кабалом


Поставьте себе уже Стек, уёбок. Ничего не делаешь, а всё есть, поставь Стек, сука.
#311 #592180
>>592171

>Только вот кто будет затевать разработку интернет-магазина на Хаскелле, если его можно заказать на фриланс.ру за 200 долларов с дизайном?


Я бы заказал, если бы это стоило на хаскелле 200 долларов с дизайном. Только это будет стоить в 20 раз дороже при худшем качестве.
>>592191
#312 #592191
>>592180
define качество
>>592245
#313 #592245
>>592191
Давай по существу, за сколько ты готов сделать на хаскеле интернет-магазин?
>>592904
#314 #592290
>>592171

> В Хаскелле они, внезапно, есть.


Только толку от них нет. Большая часть вообще говно, есть несколько интересных экспериментальных с вещами типа роутов на тайплевеле, но всем этим пользоваться нормально нельзя, потому что в каждом вызове эффекты перепаковывать придётся, и лучше уж пхп взять.
>>592904
#315 #592855
>>592171
Я имел в виду не конкретный фреймворк в плане его назначения, а простота его использования и решение им рутинных проблем. Интуитивно мне нравится хаскель(может потому, что я его не юзал в боевых проектах), но чувствуется нехватка разработчиков у языка.

Потенциально фп более выгодно для многих задач(в том числе и для веб сервисов), более красиво. Но без аналога спринга/ee стоимость запила стремительно растёт=бизнесу не нужно=меньше промышленной разработки=меньше желающих запилить фреймворк и стандартизировать в рамках него типовое приложение.
>>592904
#316 #592904
>>592245
Я финансовым софтом занимаюсь, в интернет-магазинах не шарю. Найди себе специалиста под задачу.
>>592290
Попизди мне тут, я тебя, мудозвона, уже запомнил.
>>592245
Кстати, вот этот >>592290 обмудок тебе наверняка согласится интернет-магазин писать. Сразу в нём видно диванного специалиста по всем вопросам.
>>592855

>простота его использования и решение им рутинных проблем


Хаскель проще в использовании, чем Скала, или, Б-же упаси, Сишарп/Джава. И инфраструктура у него проще и эффективнее. И работает, блядь, быстрее, у меня ноут - полупланшет lenovo yoga, у меня ентерпрайзговно тупо всю память выжирает, поэтому производительность для меня - очень приятное дополнение Я на собственном опыте замечаю, что какой-нибудь подвыперднутый алгоритм мне проще сначала написать на Хаскеле, а потом транслировать на Скалу более частный его случай.

Короче такой положняк: для ресёча - Хаскель, Скала - это что-то среднее, вроде поресёчить можно, но уже не так удобно, а Джавы/Шарпы годятся только для того, чтобы писать по готовым спецификациям, когда всё от и до известно.

>Но без аналога спринга/ee


Да ты ебанутый какой-то. Понимаю, привел бы какую-нибудь конкретную библиотеку для решения конкретных задач, аналога которой в Хаскеле нет. А Спринг - это ёбаный костыль, который и в Джаве-то не особо нужен, не то что в Хаскеле. Какие конкретно задачи решает Спринг? Эээ.. ммм.. ну это.. типо ёба энтерпрайз.. хуё моё.. ну Спринг же..
>>592912
#317 #592912
>>592904

>Я финансовым софтом занимаюсь, в интернет-магазинах не шарю.


О том и речь. "Только это будет стоить в 20 раз дороже при худшем качестве.". При этом будет еще куча пафосного пиздабольства от скриптовика-затейника.
>>592929
#318 #592929
>>592912

>О том и речь.


Нет, чувак. "Только это будет стоить в 20 раз дороже при худшем качестве." - это всё твоё высосанное из двадцать первого пальца пиздобольство. Я вот могу только за своё качество ответить, и в своей предметной области, потому что я в ней разбираюсь. А ты пиздишь за то, в чем не разбираешься, поэтому даже уринировать тебя - слишком четь большая будет.
#319 #592933
>>592929
Нахуй иди.
#320 #593094
>>592929

>не подходит для веба


>ну, я веб не пишу - не разбираюсь


>я и говорю, не подходит для веба


>дебил, пиздишь, не понимаешь нихуя, хаскель из лав, хаскиль из лайф, даже обоссывать не буду


Вся суть хаскилистов.
>>593570
#321 #593421
>>592929
Вот и ответь за качество, обмудок. В своей блядской предметной области.
Чем эта твоя мозгосносящая хуита с $!$* и монадами лучше явы, моно или плюсов для финансового софта?
>>593556>>593605
#322 #593556
>>593421
Всем.
#323 #593570
>>593094

>Нихуя не знаю Хаскель


>Спиздану-ка, что он не подходит для веба, вдруг поверят.


Чем различаются уёбок, теоретик и практикующий программист?
Уёбок: Хаскель не подходит для веба!!!1
Теоретик: По моему икспертному и охуенно авторитетному мнению Хаскель подходит/не подходит для веба потому что обладает следующими свойствами, из которых следует что...
Практикующий программист: Я использовал/не использовал Хаскель для веба, столкнулся/не столкнулся со следующими проблемами, поэтому для моих задач Хаскель подошел/не подошел.

Сам себя в нужную группу впиши.
>>593856
#324 #593605
>>593421

> Чем эта твоя мозгосносящая хуита с $!$* и монадами лучше явы, моно или плюсов для финансового софта?


Тем, что позволяет заманить на эту работу любителей таких языков. Так-то финансовую парашу писать вряд ли кого тянет, и даже зарплатой мало кого в это затащишь, вот и приходится прибегать к тяжёлой ментальной артилерии.
>>593631
#325 #593631
>>593605

>Так-то финансовую парашу писать вряд ли кого тянет


Финансовая параша - это один из наиболее простых видов матана. Там ничего сложнее Блэка-Шоулза нет, т.е. финансовая математика - это детский сад по сравнению с физиками-теоретиками, например, это уровень первого-второго курса любого математического университета. С другой стороны, по сравнению с паттерными джавадебилами и лисперами-недоучками, любой хаскеллист-финансит, это Лобачевский, можно сказать.
>>593659
#326 #593659
>>593631
Матан, как и хаскель - это инструмент. Радость матану - это явление аналогичное радости хаскелю. Речь как раз о том, что это ещё и способ заманивать на работу людей, которые так увлечены инструментами, что сами задачи для них вторичны. Не то, чтобы что-то плохое, просто факт. На деньги, в принципе, тоже ведутся, но эти, в отличии от, не будут испытывать какого-то особого маниакального интереса к проекту, потому такие кадры вторые по приоритетности. А людей, которые могут увлекаться инструментом ради инструмента, на самом деле немного, и это явление в человеке, если постараться, можно убить, и превратить его в практика, который и пальцем не пошевелит, если не получит стопицот нефти компенсации, и только лишь в том случае, если проект реально полезный, важный, интересный, и просто субъективно вызывает удовольствие как продукт.
#327 #593665

> способ заманивать на работу


Ах да, ещё яркий пример - нынешний форс "дата-сцайнса", за которым скрывается ребрендинг корпоративного BI.
>>593669
#328 #593669
>>593665

> нынешний форс "дата-сцайнса", за которым скрывается ребрендинг корпоративного BI.


Неее, ты что, просто ребрендинг - это недостаточно жидорептилоидно. На них ещё и дополнительные обязанности повесили:
https://www.quora.com/What-is-the-difference-between-a-data-scientist-and-a-business-intelligence-analyst

> Both data scientists and BI analysts do visualizations.


> Both data scientists and BI analysts work with data sources.


> Both data scientists and BI analysts do programming.


> But in addition to that, data scientists are expected to be statistically literate, run experiments, interpret data with a mind on causation and - most often - do modelling.


> That is the main distinction in my mind, and the high level answer to this question. I am sure BI analysts can do these things if they want to, and I do not doubt that many of them have the capability to. But they would not be responsible for it.


> But they would not be responsible for it.

#329 #593779
>>592052
Хаксель благодаря функциональной чистоте и развитой библиотеке имеет убийственное преимущество в параллельных вычислениях, которые сейчас в моде, намного больше чем Erlang. Странно, что он ещё не стал там мейнстримом.
>>593833
#330 #593833
>>593779
Ты ничего не путаешь? Параллельные вычисления - это низкоуровневый дроч GPGPU и вряд ли хаскелю есть что предложить в этой нише. Может ты имел в виду конкурентность, раз Erlang приплёл, ну так есть же Cloud Haskell. Но да, он тоже никому не нужен, потому что сырой, всякие спарки/параллельные монадки - неудобны в использовании, да и в таких проектах платформа без вменяемых средств интроспекции и хот-релоада всего что движется - не нужна.
#331 #593856
>>593570
Чем различаются уёбок, теоретик и практикующий программист?
Уёбок: Я не пользовался и не знаю, но хаскель подходит для веба!!!1 Хаскель крут, а ты пиздишь за то, в чем не разбираешься, поэтому даже уринировать тебя - слишком честь большая будет.
Теоретик: По моему икспертному и охуенно авторитетному мнению Хаскель подходит/не подходит для веба потому что обладает следующими свойствами, из которых следует что...
Практикующий программист: Я использовал/не использовал Хаскель для веба, столкнулся/не столкнулся со следующими проблемами, поэтому для моих задач Хаскель подошел/не подошел.

Сам себя в нужную группу впиши.
#332 #593877
>>593833
По идее на хаскеле можно было бы разработать DSL для GPGPU дроча. Проблема в том, что Theano почему-то все равно написали на питоне.
sage #333 #593899
>>593833
Не доёбывайся до меня с терминологией, если на то пошло, то это называется - распределённые вычисления. У вас я видел это называется Pure Parallelism.

>хот-релоада


резонно
P.S.: Я не хаскелист.
#334 #593943
>>593833

> и вряд ли хаскелю есть что предложить в этой нише


Диванная икспертиза засчитана: https://hackage.haskell.org/package/repa

> Но да, он тоже никому не нужен, потому что сырой


Сырые у тебя только штанишки. Любой продукт из "сырого" в "не сырой" выводится за полгода силами одной компании, стоит только пару проектов на нём сделать. Так было с той же Аккой и Эрлангом. Только вот сделать Акку и Эрланг не "сырыми" даже еще сложнее, потому что говно бай дизайн. Но нет, тупые уёбки вроде тебя будут говорить, "мы лучше будем страдать хуйнёй и в очередной раз простреливать себе ногу на Акке, чем возьмём Хаскель, ведь он сырой!" Дебилы блядь.
>>593948>>594496
#335 #593948
>>593943

>Диванная икспертиза засчитана


Так ты и есть диванный эксперт. Repa - неюзабельное говно.
>>594762
#336 #594496
>>593943

>Так было с той же Аккой и Эрлангом


Не знаю на счёт Акки, а Эрланг из сырого в несырой переходил в течение 10 лет усилиями крупной компании, а потом ещё несколько лет и целого комьюнити. И это в рамках узкоспециализированного язычка и платформы.

А под сыростью я подразумеваю всего лишь, что клауд хаскель не продакшн-реади, т.е. ведёт себя нестабильно и хуй знает как решать его постоянные проблемы. Бизнес такое не любит, поэтому всем похуй на его богатый внутренний мир.

А для души есть около 50 конкурентных академ языков: на пи-исчислении, на CSP, на алгебре Клини, на темпоральной логике и ещё хуй знает на чём. Клауд хаскель ничего нового в принципе не вносит, так что он не нужен не только бизнесу, ни и обычным нердам.
>>594764
#337 #594762
>>593948
Я просто не ту ссылку дал https://hackage.haskell.org/package/accelerate
#338 #594764
>>594496

>хуй знает как решать его постоянные проблемы


Перечисли несколько. И заодно расскажи, как они решаются в продашн-реади системах.
#339 #597335
Как в хаскеле работает оптимизация?

Это хвостовая рекурсивная реализация факториала, тут будет применен TCE, то-есть f' будет превращен в обычный цикл и будет использовать один фрейм в стеке.

f x =
f' x 1
where f' 0 acc = acc
f' n acc = f' (n - 1) (n acc)

А как оптимизация будет выглядеть в случаи нерекурсивной реализации?

f 0 = 1
f n = n
f (n - 1)
>>597352
#340 #597352
>>597335
Поссал на давунов.
https://ideone.com/s2Ct2q
#341 #597403
>>597352

>>int m = (int )malloc(sizeof(int) * (n + 1));



как это работает?
>>597407
#342 #597407
>>597403
Выделяется непрерывный кусок памяти из n+1 идущих подряд интов. Каждый инт занимает определенное системой количество байт.
sage #343 #597456
>>597352
Эпичный дебил выделять память в куче учитывая размер int. Вся суть байтоебков.
#344 #597457
>>597352
В чём юмор, зачем массив? В хаскеле здесь ничего не аллоцируется, если что.
#345 #597463
Сука, дебилы, блядь.
https://ideone.com/KBLqyu
#346 #597482
Добрый вечер, хаскелоиды.

Почти дочитал learn you a haskell, параллельно учу скалу, угарел по ФП, в общем. Покидайте, пожалуйста, эталонных (или просто хороших, по мнению анона) хаскел/скала проектов на гитхабе, чтобы прям смотреть, вникать и учиться хорошему коду.
>>597502>>597582
#347 #597493
Сука, дебилы, блядь.
https://ideone.com/G3Wo3F
#348 #597502
>>597482
scotty
servant
stack
haskell-tor
>>597512
#349 #597512
>>597502
Какое чудо, спасибо, анон.
Кстати, вот смотрю scotty -- весь фреймворк умещается всего в 19 файлах, тогда как в Синатре файлов в три раза больше (хотя казалось бы Руби тоже очень фичастый и всё такое). Это особенности хаскелевой декомпозиции или он реально настолько меньше строчек требует?
>>597527
#350 #597527
>>597512
не знаю что тебе ответить
я вижу в синатре порядка 3х файлов с полезным кодом, у скотти их 6
>>597554
#351 #597551
>>519166
Это не борщ.
#352 #597554
>>597527
Да, наверное ты прав, я даже не вглядывался в файлы.
#353 #597565
>>519166
вот единственно верный функциональный борщ на облачных монадах
https://gist.github.com/lenadroid/abb3a9e0f1957e19589e
#355 #597670
Помогите императивному дауну плз.

Можно более-мене понятный кусок кода, где используется чтение файла кусками с помощью кодуита или пайпс?

Вообще, это чтобы csv парсер написать, но я что-то не догнал примеры их использования, которые в статьях приводили.
>>597922
#356 #597922
>>597670
Если ты неосилил сам разобраться с этим, ты неосилишь ими пользоваться, потому что там на каждом шагу тонкости такой же или большей сложности. Если бы ты осилил это сам, ты бы осознал, какое они говно, и либо переключился бы на разработку очередной альтернативы, либо дропнул хаскель.
>>598032
#357 #598032
>>597922
Этот кукаретик неосилил также
#358 #598567
>>572783
Бампецкий
#359 #601668
PS1: если что - я не считаю нужным "писать на haskell реальные проекты" - imho это довольно неудачное технически изделие, которое полезно как источник идей и площадка, на которой можно быстро и грязно откатать какие-то решения перед их серьезной реализацией. Потому аргументы про то, что "ФП говно, потому что на Хаскелл серьезные люди не пишут" они просто не по теме

PS2: Тот же Haskell интересен именно как набор довольно большого количества еще не переваренных индустрией идей. Когда я говорил что в области дизайна FPGA есть смысл на него посмотреть я ни разу не имел в виду, "это надо писать на Haskell" - я имел в виду то, что довольно многие идеи, реализованные в Haskell могут быть уместны и полезны в этой области. Не потому что "ФП универсальный рулез", а потому что специфика задачи такова, что довольно много проблем родственных тем, которые возникают при попытке создания языка программирования без неявных побочных эффектов.

И да - все практически идеи связанные с тем, что сейчас называется ФП не имеют отношения "к лиспу". Общее там скорее название, да некоторые смутные мечты создателей Лиспа, которые тогда не были реализованы даже примерно - если искать предшественников то это скорее APL и бэкусовский FL.
>>601675
#360 #601675
>>601668
Типичный прогноз методом прикладывания линейки. Типа "ФП - это как ООП 30 лет назад". Ну ты и говноед.
32 Кб, 625x449
#361 #602106
Функач, читая <<Учебник по Haskell>> Холомьева, наткнулся на непонятки(я дебил) в тексте(смотри пику) причём не ясна как сама проблематика так и частные вопросы при близком рассмотрении.

1. Откуда вообще появилось принципиальное деление на константу и псевдоним? Видно, что это фундаментальное ограничение. Так что за этим стоит?
2. Почему тип выражения `s` может вообще измениться?
3. Можно ли здесь заменить тип на класс типов?
2. Что ещё за ограничение мономорфизамасам читай Маклейна? Здесь только его ограничения или и сам мономорфизм? Что является объектами в категории этого мономорфизма?
2. Откуда появляется условие на определение типа константы? Не слишком ли сильное ограничение? Не достатоноч ли просто требовани выводимости?
>>622239
#362 #602473
Аноны, помогите, лаба горит.
Генерация всех возможных расстановок знаков арифметических операций и скобок в заданном шестизначном числе так, чтобы результатом полученного выражения было число 100.
>>602850
#363 #602850
>>603274
#364 #603274
>>602850
Спасибо большое.
Можешь посоветовать что-нибудь, что стоит прочитать, чтобы понять код этот?
>>603286
#365 #603286
>>603274
Пожалуйста. Да хз. hoogle для поиска, typeclassopedia, ruhaskellbook, learn you a haskell. Про монады в основном читать надо. Если конкретные вопросы, спрашивай здесь.
>>603291
#366 #603291
>>603286

>Если конкретные вопросы, спрашивай здесь.


Конкретных вопросов нет, но, если не сложно, можешь закомментить строчки в коде?
>>603357
#368 #603359
>>603357
Немного неверно написал, должно быть

>operations - монадическая функция вида a -> b -> m a

>>603369
#369 #603369
>>603357
>>603359
Еще раз спасибо тебе огромнейшее.
>>603408>>604245
#370 #603408
>>603369
Нез. А вам именно на хачкиле лабу надо было? Или по выбору?
>>603545
#371 #603545
>>603408
Любой функциональный язык.
>>604245
#372 #603583
Скажите плз безопасный для использования в кондуитах аналог hGetLine.
#373 #603615
А можно ли учить математику, изучая хаскель, а не наоборот?
>>603670
#374 #603670
>>603615
Нет
#375 #604189
Математики, к вам серьёзный вопрос.

У меня есть List constructor типа
[megaFunc(elem) | elem <- elements]

megaFunc работает достаточно долго. Как мне это распараллелить? Т.е. куда запихнуть rpar/rseq и т.д.
>>604248
#376 #604245
>>603369
>>603545
Сорри, там лишь частичное решение было, которое не учитывало возможность перестановки скобок. Вот полное. Не поздно, надеюсь?
http://pastebin.com/8Pn7F4wz
>>604426>>604734
#377 #604248
>>604189
Твой конструктор эквивалентен map megaFunc elements
http://stackoverflow.com/questions/5606165/parallel-map-in-haskell
#378 #604426
>>604245
Спасибо еще раз, не поздно.
#379 #604734
>>604245
В 29 что значат тройные скобки??
И 32 можешь расписать?
>>604865
#380 #604865
>>604734
29 функция берет список и возвращает список списков списков, т.е. возможных разбиений первого списка. Например, "123" (эквивалентно ['1', '2', '3'] она превратит в [["123"], ["12", "3"], ["1", "23"], ["1", "2", "3"]]

>map (\(y:ys) -> (x:y):ys) (combinations xs)


Применяем эту функцию к хвосту списка и к каждой возможной комбинации в начале приклеиваем голову, таким образом получая списки, у которых больше одного элемента в голове.
map ([x]:) (combinations xs)
По-другому приклеиваем голову к полученным комбинациям, чтобы она являлась отдельной в списке. Т.е. если x = '1', то (\(y:ys) -> (x:y):ys) ["2", 3"] = ["12", "3"], а ([x]:) ["2", "3"] = ["1", "2", "3"]
#381 #606016
тоним?
>>606041
#382 #606041
>>606016
Штиль
#383 #606462
>>495156 (OP)
Поясните за Haskell?
Для чего его юзают какие-то крупные предприятия и корпорации?
Т.е., если я его выучу и пойду на работу, что я на нём буду писать? И насколько он сложный в освоении?
>>606543>>606922
#384 #606543
>>495156 (OP)
>>606462
Раз такая пьянка, то расскажите, чем сейчас теоретическая информатика и теория вычислений живут.
#385 #606831
Нужно снять фильм, суть такова: таиландская катой-программист, КМС по муай-тай, вернувшись домой не обнаруживает своего энвайронмента с облачными монадами. После чего начинается экшон, трап ходит по своим старым плохим знакомым, ломает им бёдра, выворачивает челюсти, уродует и калечит, и всем задаёт один вопрос: ГДЕ МОИ МОНАДЫ? Ну и в конце финальная драка, в которой наша девочка инвалидирует человек двести, и забирает свой кластер.
#386 #606922
>>606462
С таким подходом ты только в бодишопе сможешь найти работу.
#388 #613823
Бамп нубским вопросом:
Почему левая свертка не применима к бесконечным спискам?
>>613901
#389 #613901
>>613823
Потому что для получения результата надо вычислить f ( ... (f (f (f z x1) x2) x3) ...) xn, т.е. дойти до конца списка.
>>614045
#390 #614045
>>613901
Нe да, это очевидно. Менее очевидно для меня то, почему правая свертка применима.
Не могу разобраться в этом примере:
foldr (&&) True (repeat False)
и
foldl (&&) True (repeat False)
Почему в случае левой свертки не произойдет то же самое, что и в случае правой, а именно почему мы сразу не получим в логическом И отрицание и на этом все не остановиться? Правая свертка сразу выкидывает False, а левая продолжает идти по списку?
>>614101>>620671
#391 #614101
>>614045
Это называется short-circuiting логических операторов: увидев где-то false, оператор && не вычисляет остальные части выражения. Это ещё со времён Си пошло. О БОЖЕ В СИ ЕСТЬ ЛИНИВОСТЬ КАК В ХАЧКИЛЕ!!!
>>614140
#392 #614140
>>614101
Да эт понятно. Мне непонятно то, почему в правой свертке это работает, но в левой не работает.
>>614144>>614145
#393 #614144
>>614140
Потому что
foldr (&&) True (repeat False) = False && ...
- сразу шортциркутится
foldl (&&) True (repeat False) = ((((True && False) && False) && False) && ... )
- пытается вычислить самую внешнуюю и верхнюю форму, но список бесконечный и потому вообще зависает нахуй
>>614146
#394 #614145
>>614140
А, понял.
Ну в левой свёртке он просто начинает сворачивать с конца. То есть сначала последний с предпослендим, потом результат с пред-предпоследним и так далее.
Вот он и зависает в поисках последнего.
#395 #614146
>>614144
Опередил меня ещё и с даблом
#396 #620671
>>614045

>Менее очевидно для меня то, почему правая свертка применима.


Потому что правая свёртка сразу возвращает результат:
Правая свёртка: foldr f z (x:xs) = f x (foldr f z xs), т.е. если f ленивая по аргументам, то ты сразу получаешь результат в WHNF, не проходя по всему списку, но это только если f - ленивая (для сложения чисел, например, не работает).
Левая свёртка: foldl f z (x:xs) = foldl f (f z x) xs, т.е. тут надо рекурсивно звать foldl пока список не закончится, даже если f - ленивая по аргументам.
#397 #622031
Ух ты, как раз у вас тут разговор о стратегиях вычислений. Как вы в целом избегаете space leaks? Каждый раз парите голову разбираясь где будет WHNF и куда ещё воткнуть seq? Как избегаете бесконечных циклов?
>>622183>>622425
#398 #622183
>>622031

>Как вы в целом избегаете space leaks?


Прописываю -rtsopts "-with-rtsopts=M2G" в кабале, это не даёт программе выжирать больше 2G. Если вдруг выжирает, значит действительно есть какой-то косяк. На моей памяти один раз такое было, когда в Criterion вычислял NF от результата функции, не учтя тот факт, что там будут все решения, количество которых растёт как степенная функция, ослабил до WHNF.

>куда ещё воткнуть seq?


Если ты откроешь код каких-нибудь либ на Хаскеле, то seq почти не встретишь.

>Как избегаете бесконечных циклов?


Так же как и в остальных ЯП.
>>622209
#399 #622209
>>622183
Да, я вот в целом тоже потом подумал, всё это не так часто встречается на самом деле. А если не мудрить свои контейнеры данных на каждый чих, то вполне можно жить.
#400 #622239
>>602106

>Функач


пошел нахуй

>дебил


пошел нахуй

>пику


сходи уже нахуй, блять

>тупые вопросы тупого выпиздня


блять, ты доебал
#401 #622425
>>622031

> Как избегаете бесконечных циклов?


Лучший способ — явно различать данные и коданные. Жаль, хаскель не умеет.
#402 #624573
Поясните, какой бэкграунд нужно иметь для понимания теорката? Вроде бы относительно понятно о чём речь, но всё слишком как-то абстрактно.
>>624581>>624584
#403 #624581
>>624573
Это тебе в маттред /sci/.
>>624585
#404 #624584
>>624573
Можешь начать с теории групп, она с одной стороны абстрактна, а с другой — не совсем.
Вот годная книжка: http://ipfs.io/ipfs/QmS8BCuX4qKqJzDdF54Tg8sEWPQDcBVBZabuWzRJUB5BnP
>>624585
#405 #624585
>>624584
Выглядит обещающе. Спасибо.
>>624581
Не заглядывал в ски, думал там поехавшие обсуждают торсионные поля. А там оказывается даже маттред есть.
#406 #625869
Бамп, есть тут кто в столь поздний час?
Вот я хочу посчитать какую-то функцию, я пишу
f 0 = 0
f x = z + f z
..where
....z = veryComplexFunction x

Короче, суть в том, что z это какое-то длинное выражение, которое очень хочется посчитать, чтобы не вычислять его дважды. Как это нормально сделать? Будет ли работать seq?
Я про него читал, что он, вообще говоря, не гарантирует, что первый аргумент вычислится раньше второго, гарантируется лишь, что когда a `seq` b посчитается, а бдудет посчитано.
Поэтому есть сомнения в коде вида
f x = z `seq` z + f z
..where blablabla

Или я таки заблуждаюсь и seq работает в данном случае нормально? Как короче это лучше сделать?
>>625943
#407 #625943
>>625869
seq здесь совсем не нужен, компилятор сам догадается если ты просто выпишешь выражение в where. Более того, он может теоретически даже кешировать результаты чистых функций в рантайме, но это всё опять же под капотом и в коде программы этого быть не должно.

seq нужен только чтобы побороть пожирание памяти огромными невычисленными из-за ленивости выражениями.
>>626063
#408 #626063
>>625943
Круто, спасибо!
А правда ли, что то, что все посчитается, гарантируется компилятором вот всегда? И считаться будет до WHNF же?
>>626568
#409 #626523
Анон спасай! Нужно решить 2 задачи до экзамена, экзамен сегодня в 10:00.
1. Дан двумерный массив, известно, что среди его элементов два и только два равны между собой. Напечатать их индексы.
2. Дан двумерный массив. В каждой строке находится минимальный элемент, затем среди этих чисел выбирается максимальное. Напечатать номер строки массива, в которой расположено выбранное число.
>>630327
#410 #626568
>>626063
Рантайм может отбрасывать ненужные части выражений, ускоряя программы. Это возможно благодаря функциональной чистоте. Результат от этого не страдает никак.

Все эти заморочки со стратегий вычислений можно особенно в голову не вгружать. Всё равно большая часть всего что пишут про WHNF и прочее - близкие к истине догадки, в живом гохацэ всё обязательно будет несколько иначе.

Единственное это тот самый seq, позволяющий по сути ограничить неограниченную ленивость. Например, в том же fold, мы обязательно проходим по всем элементам вычисляя их значения, поэтому нет смысла (а иногда и вредно по расходу памяти) лениво откладывать вычисления до последнего. По большому счёту это недостаток компилятора, в идеале он сам должен догадываться где это нужно, но иногда у него не выходит и нужно подсказывать.
26 Кб, 460x78
#411 #627523
5435 Кб, Webm
#412 #630180
— Одну минуту, — громко произнес Стасик, — прежде чем продемонстрировать вам способ поедания борща, о котором все вы, как будто, позабыли, я должен опорожнить свой кишечник.

Вот каким образом развратник приступил к омерзительной операции. Его окружили четверо хачкель-петухов: один держал наготове большой ночной горшок, второй взял зажженную свечу и подставил ее поближе к анусу, чтобы было лучше видно происходящее, третий сосал ему член, четвертый, перекинув через руку белоснежное полотенце, целовал Стасика в губы. Тот, опершись еще на двоих педерастов, поднатужился, и как только появилось невероятное количество дерьма, которое обыкновенно и регулярно выдавал хозяин параши, учитывая страшное количество поглощаемого им борща, тот петух, что держал горшок, принялся восхвалять экскременты. «Какое прекрасное дерьмо! — восклицал он. — Ах, господин мой, какое превосходное хачкель-говно! Как красиво вы испражняетесь». Когда дифирамбы закончились, педераст, вооруженный салфеткой, языком очистил преддверие ануса, а горшечник подставил содержимое горшка под нос Стасику и опять громогласно восхвалял его. После этого мощная струя мочи ударила в рот сосателю, который тут же проглотил всю жидкость, полотенце завершило то, что не мог сделать язык, и четверо петухов, оставшись без дела, долго сосали поочередно язык, фаллос и задний проход распутника.
>>630267
#413 #630267
>>630180
Слабо. СТРАУСТРУП был круче.
эээээээээ иблисы, хаскаль не трогайте! я ваше святое ебал. #414 #630325
эээээээээ иблисы, хаскаль не трогайте! я ваше святое ебал.

на нем классно писать приложения!
#415 #630327
>>626523
учиться надо было и думать мозгами...
64 Кб, 563x712
#416 #631327
Кто-то по компиляторам угорает?
>>631561
50 Кб, 400x600
#417 #631512
>>495371
По твоему совету прошел курс от О'Дерски по Скале. Стал подворачивать штаны, есть маффины и запивать смуззи.
Как мне теперь всё вернуть обратно?!
#418 #631561
>>631327
Я по твоей мамке угораю. Вчера она хорошо выдала.
25 Кб, 267x400
#419 #633786
Я прочитал пикрелейтед и понял, что в Haskell не используется теория категорий. Совсем не используется. Абсолютно не используется. Это всё обман.
>>633787>>636699
78 Кб, 1176x470
98 Кб, 702x916
#421 #633788
>>633787
Это не теория категорий. Теория категорий - пикрелейтед.
>>633790
#423 #633892
Предположим, мы хотим разработать чистый ФЯП под существующую виртуальную машину императивного языка, естественно с возможностью использовать его библиотеки, где всё мутабельно до неприличия. Какие идеи, как реализовать?

И ещё, какие есть способы инкапсуляции побочных эффектов помимо монад?
>>633895
#424 #633895
>>633892

>Какие идеи, как реализовать?


Глава про FFI в real world haskell

>И ещё, какие есть способы инкапсуляции побочных эффектов помимо монад?


https://ru.wikipedia.org/wiki/Clean
>>633905
#425 #633905
>>633895
Спасибо
#426 #635715
В хаскель внезапно нормальную документацию завезли: https://www.reddit.com/r/haskell/comments/42usvl/an_attempt_at_a_modern_haskell_theme_continued/
Глядишь, так и инфраструктура наконец появится.
>>636181
#427 #636181
>>635715
Вообще-то в Хаскеле одна из лучших документаций. Вернее самая лучшая. Когда после Хаскеля надо что-то нагуглить по той же джаве или скале, просто удивляешься, что энтерпрайзом является вот эта невнятная параша, вернее начинаешь думать, что бардак и отсутсвие внятной и удобной документации и есть один из признаков "промышленных" языков.
>>637035
#428 #636294
>>498615 И какие у тебя с ним проблемы?
33 Кб, 592x332
#429 #636618
Поясните за афинные типы (гуглятся только афинные преобразования)
>>636991
#430 #636699
>>633786

>Я прочитал пикрелейтед


Кому ты пиздишь?
>>649021
#432 #637035
>>636181

> Вообще-то в Хаскеле одна из лучших документаций. Вернее самая лучшая.


Без поиска (inb4: hoogle) и навигации, ага.
В том же расте намного лучше всё сделали.
>>643337
#433 #637466
Ребята, я тут мимокрок из геесвифта, у нас тоже появились монады, и как я понимаю это некоторый объект который инкапсулирует в себе цепочку операций над объектом + полиморфизм, верно? То-есть мы как-бы прикручиваем стек операций над объектом, а когда нам нужно его значение монада выполняет цепочку операций (это и есть ленивость?) и выдает нам конечное значение. Все правильно понял?
#434 #637470
>>637466
Все проще. Монада применяет функцию к (упакованному) значению, возвращая упакованное значение (значение + контекст).
Вот, буквать с картинками с швабры: https://habrahabr.ru/post/183150/
#435 #637471
>>637470
То что ты сейчас может быть чем угодно.
>>637475
#436 #637472
>>637470

>Монада применяет функцию к (упакованному) значению, возвращая упакованное значение


На самом деле, тут обсёр, и упакованное значение возвращает функция, которая о мандадках и знать-то не должна была. Да, лучше не сделать, но обсёра это не отменяет.
>>637475
#437 #637475
>>637470
>>637471
>>637472
всем спасибо
#438 #637502
>>637466

>это и есть ленивость


нет, ленивость вообще этому всему ортогональна
6139 Кб, Webm
Вакансия Ассистента Рисерчера #439 #637824
Друзья! У нас появилось немного денег, которые мы хотим потратить. В нашу эрланг компанию требуется стажер, возможно студент, который интересуется теорией типов и разработкой компиляторов. Если так получилось что вы родились в Украине, и вам тесно и грустно работать перекладывая байты из JSON в XML на Хаскеле, но вас не берут в крутые международные проекты под управлением Аводея, Байера и Мейера из-за отсутствия публикации -- это все поправимо.

Что мы предлагаем? Мы предлагаем вам присоединится к нам в качестве ассистента или младшего научного сотрудника. Все публикации, авторские права остаются за вами, никакого NDA или прочей неопределенности. Все статьи публикуются на превью площадки (Архив, РисерчГейт) как только достигнут качества "не стыдно".

Мы исследуем разные аспекты компиляции эрланг кода и компиляции в контексте эрланг инфраструктуры, так, например, компания Cloudozer занимается разрабткой статически-компилируемого LLVM языка L, основное назначение которого генерировать эффективный нативный код (с удалением информации о типах) из исходников похожих на Эрланг или с минимальными изменениями Эрланг кода. Synrc же занимается фул стек Erlang решениеми и исследованием в области доказательства корректности программ. Сейчас у нас есть два направления: 1) это доказательство алгоритмов используемых для обеспечения персистентного хранения цепочек (KVS/N2O/BPE), используя пруверы основанные на теории зависимых типов (мы используем Lean, вы должны уметь использовать любой прувер с Pi типами); 2) разработка собственного языка с рекурсивными полиномиальными типами и зависимыми рекордами (первоклассными модулями), который компилируется в промежуточную форму чистого языка на основе Henk/Morte/Om, а оттуда транформируется в Erlang AST (без компиляции паттерн мачинга, без необходимости своего gc, т.е. все самое сложное оставляем для виртуальной машины Эрланг и его оптимизирующего компилятора).

Что мы хотим? Мы хотим, чтобы вы знали основы Теории Категорий, могли нарисовать все коммутативные диаграммы и аксиомы необходимые для определния декартово-замкнутой категории и могли читать proof-theoretical аксиоматическую нотацию. Также вы должны понимать коммутативные диаграммы F-алгебр для рекурсивных типов, а также иметь понятие о кодировании Черча и его применении к кодированию индуктивных типов. Необязательно но полезно было бы быть знакомым со слоениями и slice категориями для категорного понимания зависимых типов.

Поверьте, такой опыт предложить в Украине не может ни одна компания. Важно иметь возможность проводить еженедельные совещания в оффлайне, удаленная работа полностью исключается.

Пишите: maxi9]3mANUSF.+synrcPUNCTUMco%Jrm

http://maxim.livejournal.com/463323.html
6139 Кб, Webm
Вакансия Ассистента Рисерчера #439 #637824
Друзья! У нас появилось немного денег, которые мы хотим потратить. В нашу эрланг компанию требуется стажер, возможно студент, который интересуется теорией типов и разработкой компиляторов. Если так получилось что вы родились в Украине, и вам тесно и грустно работать перекладывая байты из JSON в XML на Хаскеле, но вас не берут в крутые международные проекты под управлением Аводея, Байера и Мейера из-за отсутствия публикации -- это все поправимо.

Что мы предлагаем? Мы предлагаем вам присоединится к нам в качестве ассистента или младшего научного сотрудника. Все публикации, авторские права остаются за вами, никакого NDA или прочей неопределенности. Все статьи публикуются на превью площадки (Архив, РисерчГейт) как только достигнут качества "не стыдно".

Мы исследуем разные аспекты компиляции эрланг кода и компиляции в контексте эрланг инфраструктуры, так, например, компания Cloudozer занимается разрабткой статически-компилируемого LLVM языка L, основное назначение которого генерировать эффективный нативный код (с удалением информации о типах) из исходников похожих на Эрланг или с минимальными изменениями Эрланг кода. Synrc же занимается фул стек Erlang решениеми и исследованием в области доказательства корректности программ. Сейчас у нас есть два направления: 1) это доказательство алгоритмов используемых для обеспечения персистентного хранения цепочек (KVS/N2O/BPE), используя пруверы основанные на теории зависимых типов (мы используем Lean, вы должны уметь использовать любой прувер с Pi типами); 2) разработка собственного языка с рекурсивными полиномиальными типами и зависимыми рекордами (первоклассными модулями), который компилируется в промежуточную форму чистого языка на основе Henk/Morte/Om, а оттуда транформируется в Erlang AST (без компиляции паттерн мачинга, без необходимости своего gc, т.е. все самое сложное оставляем для виртуальной машины Эрланг и его оптимизирующего компилятора).

Что мы хотим? Мы хотим, чтобы вы знали основы Теории Категорий, могли нарисовать все коммутативные диаграммы и аксиомы необходимые для определния декартово-замкнутой категории и могли читать proof-theoretical аксиоматическую нотацию. Также вы должны понимать коммутативные диаграммы F-алгебр для рекурсивных типов, а также иметь понятие о кодировании Черча и его применении к кодированию индуктивных типов. Необязательно но полезно было бы быть знакомым со слоениями и slice категориями для категорного понимания зависимых типов.

Поверьте, такой опыт предложить в Украине не может ни одна компания. Важно иметь возможность проводить еженедельные совещания в оффлайне, удаленная работа полностью исключается.

Пишите: maxi9]3mANUSF.+synrcPUNCTUMco%Jrm

http://maxim.livejournal.com/463323.html
#440 #637867
>>637824
Чтобы что-то подобное мутить, нужно работать по совместительству в ВУЗе, и там искать себе студентов/аспирантов, которые на основании этого будут делать дипломы/диссертации. Не имея подобных связей, хуй он кого найдёт.
#441 #637876
>>637824
Для языка вроде Эрланга правильный путь - это JIT компиляция, а не статическая пре-компиляция, как этот чухан предлагает.
Алсо, в Университете Стокгольма кто-то этой темой занимается. Могли бы как-то скооперироваться с ними.
>>638013
#442 #637914
>>637824
Что за фильм?
#443 #637932
>>637824
Судя по описанию, работа за еду.
#444 #637972
>>637824

>Важно иметь возможность проводить еженедельные совещания в оффлайне, удаленная работа полностью исключается.


Вроде люди неглупые, а от обезьяньих повадок отказываться не спешат. От чего так?
#445 #638013
>>637876

>JIT компиляция, а не статическая пре-компиляция


Почему?
>>638023
#446 #638023
>>638013
Это оправдания динамопетушков, которые не могут в статический анализ кода.

Конечно, JIT эффективней AOT, но вместе-то ещё лучше.
>>639078
#447 #639078
>>638023
Но в Эрланге есть статический анализатор.
35 Кб, 500x360
#448 #639496
Охуенное начало. Программы на лямбда-калькулусе у него простые и понятные. И на комбинаторах тоже всё просто и понятно. Я даже помню ту лекцию от какого-то русского профессора с лекториума, который признался, что нихуя в этих комбинаторах так и не понял, поэтому читает по бумажке. Вот почему функциональщики никогда не говорят прямо, всегда виляют и откровенно лгут? Так же как в пейпере того хуя про why functional programming matters, в котором он сначала писал факториалы, потом искал простые числа, а вай, собственно, функциональное программирование маттерс сообщить забыл.
#449 #639573
>>639496
А ты сравни программу для машины Тьюринга и на лямбдах.
>>639778
Новая Рубрика: Эрланг Ебанаты. Выпуск #1 #450 #639583
Иногда захожу в ЖЖ и ищу слова "Erlang" и "Эрланг" в поиске. Только эти. Если вы увидели у себя в каментах меня, скорее всего я пришел к вам по этим словам. Новый персонаж это jamhed, которого турки (которые висят Massive Solutions (которые LING сделали между прочим!) 50 тонн) взяли на работу вместо меня. До этого он терся у меня в каментах и пытался "дискутировать" в духе Зефирова. Я его сразу нахуй послал, не подумав. А этот хуй оказывается злобный ебанашка. Устроился к туркам на работу взял наш код и пробует его "рефакторить" и учить эрланг. Паралельно вспоминая как я его послал нахуй и периодически вырыгивая у себя в ЖЖ что-то типа Эрланг за 2 недели (сколько можно Валкина цитировать, не заебало еще) или Срывает покровы имплементации нашего гейм сервера, который написал Сергей (Если бы Богатырь Сергей при встрече увидел этого Моджахеда он бы его вогнал по пояс в землю), или вот еще прекрасное: Посчитал сколько он туркам бабла сэкономил. Ну и вот блядь Неофиты. Мы неофиты :-)

Напоминаю Джамшуду, что вот эту хуйню я сделал за 1 человеко-месяц. Сам прототип пацанам из Intersog нарисовал на JavaScript как йобаный раб (а то они хотели мне это все на css и png сделать), заодно дизайнерам ихним Sketch показал, а то они до сих пор бы ебались в илюстраторе с экспортом SVG:

http://ns.synrc.com:8080/static/app/index.htm

А он уже там работает вроде как скоро год и у него пока только вот эта хуйня http://kakaranet.com которая позволяет, чтобы на столе было больше 15 карт :-)

Если задумаете нас тролить, сначала взвесьте все за и против, ребята. Посмотрите на свой гитхаб и наш :-)

http://maxim.livejournal.com/468313.html
#451 #639715
>>639496
Ну а чего в комбинаторах сложного-то? Это такой своеобразный брейнфак же. Есть правила, по которым можно приводить лямбда-термы к комбинаторным вообще механически, не задумываясь. Чтобы не писать много раз одно и то же, вводишь несколько часто используемых комбинаторов на основе K и S, помечаешь их другими буквами. Потом так же вводишь нумералы, пары, кортежи, комбинатор неподвижной точки. Добавляешь немного сахара типа let-выражений и вуаля - у тебя есть ML. Это настолько прозрачная схема, что ее понять, по-моему, проще, чем выучить паскаль в школе.
#452 #639778
>>639496

> Программы на лямбда-калькулусе у него простые и понятные.


Ну как-бы ничто не мешает их сделать намного проще и понятнее, заготовив некоторый набор функций.
Вообще, лямбда-исчисление всего лишь частный случай переписывания термов.

>>639573
Ну кроме МТ и лямбда-исчисления ещё НАМ есть.
>>640067
#453 #639795
>>495156 (OP)
Эй, уёбки, хочу перекатится с плюсов на каскель. Есть ли нормальные кроссплатформенные фреймворки для него?
>>643172
#454 #639816
Кто здесь пишет на Haskell на работе?
#455 #639819
>>495622

>у борща своя предметная область


Вычисление факториалов, чисел Фибоначчи, переворачивание списков, написание плохих туториалов про монады (массивы), срачи на \зк, отработка техники ленивого программирования. Что-то забыл?
#456 #639824
>>511202
тайпкласс енто trait
#457 #639829
>>530876
Откуда берутся такие умные чуваки? я, блин, на работе только тыкаю во всякие SQL запросы, стыдно даже.
#458 #639831
>>543805

>FROM WWWOOO WO


>JOIN CCCMMM CM


что я читаю?
#459 #639948
>>547284

>Сложения по разнотипным обьектам


Мразь, ублюдок, говно, из-за таких как ты падают космические аппараты, а медецинское оборудование убивает пациентов. Желаю тебе стать жертвой ошибки, которую можно было отловить при помощи строгой типизации, но программист писал на каком-то говне
>>639954
#460 #639954
>>639948
Ты сам дурак, мразь и ублюдок. И тупой дебил. У нормальных людей как. Есть тип Inch, есть тип Meter. И складываются они так, что хуй ошибешься. А в хаскелле как? Да никак, ебись со своим Double. и нет, модуль dimensional тебя не спасет, по причинам, которые я тебе, говно, выше расписал.
#461 #639955

>А это, в свою очередь, значит, что модулю dimensional требуется или прятать плюс из прелюдии, или обзывать его .+ или еще как. Что значит, что полиморфный код и для интегеров, и для метров - невозможен.

#462 #639956
Сука, блядь, и ведь написал же тупому говну еще в прошлый раз:

>А это, в свою очередь, значит, что модулю dimensional требуется или прятать плюс из прелюдии, или обзывать его .+ или еще как. Что значит, что полиморфный код и для интегеров, и для метров - невозможен.

#463 #639961
>>639954
Чем тебе не угодило явное приведение типов, питух?!
>>640124
#464 #640067
>>639778
НАМ еще хуже, ты нихуя не контролируешь порядок редукций и приходится колдовать каждый раз.
#465 #640098
Что в Хаскелле является аналогом Акки?
>>643348
#466 #640120
>>512088

>сорт коммуняки, только поехавшей не на марксизме, а на хаскеле.


весело тут у вас
#467 #640124
>>639961
Переводить метры в даблы, чтобы сложить, а потом опять в метры? Ну так это и есть источник ошибок!
>>640187
#468 #640187
>>640124
Переведи метры в инчи и сложи с инчами получив инчи. Или переведи инчи в метры и сложы с метрами, получи метры
>>640300
#469 #640300
>>640187
Речь идет о полиморфизме. Когда ты написал, допустим, интегратор произвольной лямбды на отрезке, и он сразу тебе выдает ответ в нужной единице измерения.
#470 #640442
>>639954

>У нормальных людей как. Есть тип Inch, есть тип Meter. И складываются они так, что хуй ошибешься.


Какие-то неправильные у тебя нормальные люди. В таких случаях всегда задается один тип, с ним и производятся любые вычисления. Уже полученное значение преобразуется в понятный человеку формат. Смотри как библиотеки для работы со временем устроены.
Эрланг Ебанаты. Выпуск #2 #471 #640884
Ох давно такого в ЖЖ не было. Но мы спонсируем. Все говно которые вылазит из так называемых программистов вы уже можете наблюдать, собственно ради этого все и затевалось. Чтобы искренность ебанизмов полезла наружу. Что мне нравится в срачах в ЖЖ так это то, что можна увидеть истинное лицо человек. Истинную его ебанистическую натуру. Например спрашиваешь человека, скажи правду, а он увиливает и мычит что-то. Или еще хуже скатывается в днище какое-то :-) Собственно ниже дна ЖЖ уже мало что есть. Даже ДОУ более искренее. Там ебанаты какие-то "сферические в ваккуме" что-ли. А тут реально Интервата.

Итак ретроспектива проекта с хуйовой кармой "Какаранет".

2010 год. Турки нанимают эрланг-ебаната Кунтара в качестве СТО и просят сделать проект который сможет держать 2 миллиона пользователей. OKEY — это игрушка в которую играют тупо поголовно все в Турции, поэтому Эрланг кажется логичным решением. Кунтар нанимает бразильцев (известную эрланг кантору) те рисуют техзадание и пишут какой-то ПабСаб (код я выкинул потому что в 2010 эта кантора учила эрланг на этом проекте). Бразильцы выставляют ниибический счет, Кунтар принимает решение не платить. Суд. Кунтар меняет заказчика на известного эрлангиста Павла Перегуда, тот ему пишет playable OKEY код и Кунтар принимает решение делать клиента на Flash. В 2010 это было решение вроде как ОК. Был уже Haxe и вприниципе можно было бы что-то нормальное запилить, если бы не наняли ебанатов-флешеров.

Кунтар нанимает Massive Solutions и генеральный директор просто охуевает от Кунтара и его идей, все заканчивается очень печально. Весь отдел что-то ебашит, в итоге 50 штук зависают в воздухе. Второе судебное разбирательство. На самом деле третье так как Перегуду тоже вроде недоплатили, просто он парень скромный в суд не подал.

2011 год. Ноябрь. Я сижу в ритрите под Москвой мне звонит Кунтар и приглашает на работу. Я приезжаю через 3 месяца (2012 Январь) в Киев и знакомлюсь с Кунтаром. Надо сказать что Кунтра веселый и похож на Карлсона, а я как Малыш на эрланге до этого не писал ничего в жизни.

[ Лирическое отступление: Кроме LDAP сервера для fprog #7, который меня попросил оформить в виде статьи Кирпичев и неудачного проекта с еще одним Эрланг-Ебанатом Олегом Смирновым, на этом проекте работал еще Соловьев Кложурист с известным видео в сети, проект ебанистический, назовем его условно "малайзиский", никому не заплатили, мне висят 5 штук до сих пор). Сразу после этого проекта я разосрался с Олегом, но это никого не касается: Олег считает что я ебанат, я что он. Все по чесному ].

Были еще на этом проекта ситуативные эрланг-ебанаты и флеш-ебанаты, которым Кунтар нихуя не платил и выгонял через месяц работы. Впринципе я тогда был человек наемный и просто получал деньги, изучая riak, erlang, код Павла Перегуда (который по сути с правками Сергея так и составил основу гейм сервера). Нитроген, Риак, erlando, gettex, mochiweb и еще 30 библиотек, которые предыдущие эрланг-ебанаты втащили в проект. Понемногу начинаю понимать, что все вокруг полные дибилы.

2012 Август. Я еду в паломнический тур по 22 монастрымя ваджраяны в Индии. Возвращаюсь и еду в Турцию знакомиться с заказчиками, там живу в отеле наслаждаюсь пахлавой и донерами, катаюсь на корабликах и ем клубнику, черешни и фиги, паралельно исследуя возможность стресс тестирования гейм сервера и веб фремворка. Я готовлю тщательно нагрузочное тестирование чистого ковбоя и нитрогена (именно тогда я начал готовить статью http://maxim.livejournal.com/392587.html) которую опубликовал в январе 2013 после того как ко мне приехала Маша и вдохновила меня. После публикации статьи понимаю что Нитроген как идея суперохуенен, но как реализация полное дерьмище. С этого момента я тверд решимости клонировать Нитроген и полносью его нахуй переписать, потому что на Эрланг-ебаната Джесси Гамма (майнтейнера нитрогена) нет никакой надежды. Новый год праздновали с Машей в Стамбуле.

2013 Февраль. Уже к этому времени у нас работал Сергей, которому было поставлена задача полностью переписать и оформить гейм сервер. Кроме Сергея гейм сервер никто после этого не трогал. У меня было чем заниматься, тогда у нас был кластер из 9-х серверов риака и 3-х RabbitMQ и трех инстансов с glusterfs. Тогда у меня закралась идея выбросить это все нахуй, или хотя бы не выбросить а прототипировать на чем-то попроще, например на mnesia, а когда выходить впродакшин уже кроли и риак. Так родилась идея KVS, абстрактной библиотеки для KV бекендов — протипируешь на мнезии, в взлетаешь на риаке.

Турки вызывают меня и говорят мне открыто и чесно, что Кунтар их заебал. Что он потратил все их бабки и они хотят уволить и спрашивают готов ли я взять все на саой контроль. Я говорю говно вопрос. Кунтар сам уходит, потому что это все его заебало еще больше. Шутка ли он хотел полностью повторить всю функциональность фейсбука. Я анонсирую Туркам свое видение проекта — отказать от фейсбук-идеи и ебашить только игру. Турки не соглашаются и просять отставить форумы, лайка, посты, группы, подписки, и всю эту ебалу. В это время у нас работал akalenuk, он не даст соврать, что это все реально его заебывало. Но что делать упоротый заказчик платит. Естественно мы это все не потягивем и турки нам зависают быбло, все разъезжаются по домам в Апреле 2013.

2013 Май. Я вернулся в Киев и мы c doxtop открываем s.r.o. Снимаем офис и ставим себе задачу написать N2O и KVS и писать на них сайтики. Берем проект у Калифорнийских долбоебов, Доктор им пишет CMS на N2O, нам недоплачивают и проект уходит в архив. С доктором мы просидели до осени. Доктор понимает, что на N2O и KVS жену не прокормишь и уходит в Плейтек израильский. Покупает себе Туарег и отстраняется от Эрланга и переходит на Scala. Я зависаю с Кириловым, провожу тренинги и мастер классы, развиваю N2O и KVS потому что свято верю что у меня все получится. К нам приезжают турки и слезно просят продолжить проект мы ласково с доктором их шлем нахуй через перводчицу, они выплачивает неполную сумму, половину из которо мы отдаем Сереге, а вторую делим пополам. Все по чесному, Сергей на нас не в обиде.

http://maxim.livejournal.com/468658.html
Эрланг Ебанаты. Выпуск #2 #471 #640884
Ох давно такого в ЖЖ не было. Но мы спонсируем. Все говно которые вылазит из так называемых программистов вы уже можете наблюдать, собственно ради этого все и затевалось. Чтобы искренность ебанизмов полезла наружу. Что мне нравится в срачах в ЖЖ так это то, что можна увидеть истинное лицо человек. Истинную его ебанистическую натуру. Например спрашиваешь человека, скажи правду, а он увиливает и мычит что-то. Или еще хуже скатывается в днище какое-то :-) Собственно ниже дна ЖЖ уже мало что есть. Даже ДОУ более искренее. Там ебанаты какие-то "сферические в ваккуме" что-ли. А тут реально Интервата.

Итак ретроспектива проекта с хуйовой кармой "Какаранет".

2010 год. Турки нанимают эрланг-ебаната Кунтара в качестве СТО и просят сделать проект который сможет держать 2 миллиона пользователей. OKEY — это игрушка в которую играют тупо поголовно все в Турции, поэтому Эрланг кажется логичным решением. Кунтар нанимает бразильцев (известную эрланг кантору) те рисуют техзадание и пишут какой-то ПабСаб (код я выкинул потому что в 2010 эта кантора учила эрланг на этом проекте). Бразильцы выставляют ниибический счет, Кунтар принимает решение не платить. Суд. Кунтар меняет заказчика на известного эрлангиста Павла Перегуда, тот ему пишет playable OKEY код и Кунтар принимает решение делать клиента на Flash. В 2010 это было решение вроде как ОК. Был уже Haxe и вприниципе можно было бы что-то нормальное запилить, если бы не наняли ебанатов-флешеров.

Кунтар нанимает Massive Solutions и генеральный директор просто охуевает от Кунтара и его идей, все заканчивается очень печально. Весь отдел что-то ебашит, в итоге 50 штук зависают в воздухе. Второе судебное разбирательство. На самом деле третье так как Перегуду тоже вроде недоплатили, просто он парень скромный в суд не подал.

2011 год. Ноябрь. Я сижу в ритрите под Москвой мне звонит Кунтар и приглашает на работу. Я приезжаю через 3 месяца (2012 Январь) в Киев и знакомлюсь с Кунтаром. Надо сказать что Кунтра веселый и похож на Карлсона, а я как Малыш на эрланге до этого не писал ничего в жизни.

[ Лирическое отступление: Кроме LDAP сервера для fprog #7, который меня попросил оформить в виде статьи Кирпичев и неудачного проекта с еще одним Эрланг-Ебанатом Олегом Смирновым, на этом проекте работал еще Соловьев Кложурист с известным видео в сети, проект ебанистический, назовем его условно "малайзиский", никому не заплатили, мне висят 5 штук до сих пор). Сразу после этого проекта я разосрался с Олегом, но это никого не касается: Олег считает что я ебанат, я что он. Все по чесному ].

Были еще на этом проекта ситуативные эрланг-ебанаты и флеш-ебанаты, которым Кунтар нихуя не платил и выгонял через месяц работы. Впринципе я тогда был человек наемный и просто получал деньги, изучая riak, erlang, код Павла Перегуда (который по сути с правками Сергея так и составил основу гейм сервера). Нитроген, Риак, erlando, gettex, mochiweb и еще 30 библиотек, которые предыдущие эрланг-ебанаты втащили в проект. Понемногу начинаю понимать, что все вокруг полные дибилы.

2012 Август. Я еду в паломнический тур по 22 монастрымя ваджраяны в Индии. Возвращаюсь и еду в Турцию знакомиться с заказчиками, там живу в отеле наслаждаюсь пахлавой и донерами, катаюсь на корабликах и ем клубнику, черешни и фиги, паралельно исследуя возможность стресс тестирования гейм сервера и веб фремворка. Я готовлю тщательно нагрузочное тестирование чистого ковбоя и нитрогена (именно тогда я начал готовить статью http://maxim.livejournal.com/392587.html) которую опубликовал в январе 2013 после того как ко мне приехала Маша и вдохновила меня. После публикации статьи понимаю что Нитроген как идея суперохуенен, но как реализация полное дерьмище. С этого момента я тверд решимости клонировать Нитроген и полносью его нахуй переписать, потому что на Эрланг-ебаната Джесси Гамма (майнтейнера нитрогена) нет никакой надежды. Новый год праздновали с Машей в Стамбуле.

2013 Февраль. Уже к этому времени у нас работал Сергей, которому было поставлена задача полностью переписать и оформить гейм сервер. Кроме Сергея гейм сервер никто после этого не трогал. У меня было чем заниматься, тогда у нас был кластер из 9-х серверов риака и 3-х RabbitMQ и трех инстансов с glusterfs. Тогда у меня закралась идея выбросить это все нахуй, или хотя бы не выбросить а прототипировать на чем-то попроще, например на mnesia, а когда выходить впродакшин уже кроли и риак. Так родилась идея KVS, абстрактной библиотеки для KV бекендов — протипируешь на мнезии, в взлетаешь на риаке.

Турки вызывают меня и говорят мне открыто и чесно, что Кунтар их заебал. Что он потратил все их бабки и они хотят уволить и спрашивают готов ли я взять все на саой контроль. Я говорю говно вопрос. Кунтар сам уходит, потому что это все его заебало еще больше. Шутка ли он хотел полностью повторить всю функциональность фейсбука. Я анонсирую Туркам свое видение проекта — отказать от фейсбук-идеи и ебашить только игру. Турки не соглашаются и просять отставить форумы, лайка, посты, группы, подписки, и всю эту ебалу. В это время у нас работал akalenuk, он не даст соврать, что это все реально его заебывало. Но что делать упоротый заказчик платит. Естественно мы это все не потягивем и турки нам зависают быбло, все разъезжаются по домам в Апреле 2013.

2013 Май. Я вернулся в Киев и мы c doxtop открываем s.r.o. Снимаем офис и ставим себе задачу написать N2O и KVS и писать на них сайтики. Берем проект у Калифорнийских долбоебов, Доктор им пишет CMS на N2O, нам недоплачивают и проект уходит в архив. С доктором мы просидели до осени. Доктор понимает, что на N2O и KVS жену не прокормишь и уходит в Плейтек израильский. Покупает себе Туарег и отстраняется от Эрланга и переходит на Scala. Я зависаю с Кириловым, провожу тренинги и мастер классы, развиваю N2O и KVS потому что свято верю что у меня все получится. К нам приезжают турки и слезно просят продолжить проект мы ласково с доктором их шлем нахуй через перводчицу, они выплачивает неполную сумму, половину из которо мы отдаем Сереге, а вторую делим пополам. Все по чесному, Сергей на нас не в обиде.

http://maxim.livejournal.com/468658.html
>>640885
#472 #640885
>>640884

2014 Март. Турки делают мне приглашение от которого я не могу отказаться продолжить заниматься проектом. Они оплачивают мне поезду в калифорнию, где я покупаю себе Макбук, выступаю с докладом по N2O, а турки в свою очередь отказывають от идеи Фейсбука и согласны на просто игру. Но нужно же что-то делать с флешовым клиентом, его пора уже выбрасывать. Так как у нас в N2O уже есть BERT и вебсокеты, поэтому я советую туркам не платить мне бабки, вкинуть все в профессиональных художников и JavaScript программистов. Я нахожу студию Intersog одесскую и Вячеслав Потравный хуярит новый OKEY клиент а я делаю к нему бекент, и сокращаю (фактически выбрасываю встроенный фейсбук) бекенд до 400 строк (все остально за счет N2O). База 120 строк. Сервер остался Сергея (10K LOC) потому что он тупо работал и там дохуища функциональности. Там были турниры, которые я подозреваю что Эрланг-ебанат Джамшут хуй реализовал так как надо, раз он сократил там все в 3 раза. Я просто не верю что у него работают турниры. Пусть покажет мне работающие турниры (это я вам скажу в любой игре турниры дохуя кода займут, кто писал MMORPG тот знает). Но ладно оставим Джамшуда в покое, хватит насиловать труп. Счас речь идет о других эрланг-ебанатах. Так вто этот прототип без фейсбука на новом N2O и KVS этот проект он публичный https://github.com/synrc/games Этот проект я сделал за 1 месяц сам (ну кроме клиента, который Intersog писали и рисовали). Но склеивал все я сам за неделю, паралельно изучая джаваскрип и беря уроки у Юлии Пучниной. А потом оказалось что ошибок там столько что еще пару неделек я это все багфиксал, но то такое играть можно было уже через месяц.

2014 Май. Турки висят мне опять бабло. И у меня просходин нервный срыв. Одной половиной мозга я понимаю, что все это не напрасно и что я доказал самому себе что я могу сам сделать игрушку на джаваскрпте и испробовал N2O в реальном бою. Второй половиной мозга я хочу разломать череп Синану и Ахмеду. Я возвращаюсь в Киев и забываю про турков навсегда.

Новая история. Солнцеликий ПриватБанк (БЕЗ Эрланг-Ебанатов, но с нормальными пацанам)

2014 Осень. Меня находят мои прекрасный друзья из Приватбанка и дают мне неограниченную власть в своем отделе. Я туда привожу N2O, KVS, BPE, UPL, FORMS, MAD и весь свой стек. За 2 месяца я делаю прототип который представляю лично СТО Приватбанка. СТО дает добро уволить отдел Python-ебанатов у которых 100 SQL таблиц на джанго и проект стартует 10 минут, бесконечное колчество ошибок. Наш проект стартует за 1 секунду и занимет в 100 раз меньше места в виде исходиников (счас всего лишь в 10) и может обслужить весь дневной объем клиентов за 7 секунд. За историю нашего проекта в Привате не было ни одного инцидента на продакшине. Все в ахуе и мы тоже.

2015. Через нашу систему в ПриватБанке было открыто депозитов на 20 миллиардов. Каждый клиент ПриватБанка, который пользуется депозитами (через касиров или сам) пользуется нашей системой написанной на N2O. У нас три вкладки в интернет банке Приват24.

2016. Я решаю посвятить себя написанию языка с зависимыми типами, чтобы доказывать свойства KVS и N2O и предствить миру первый в истории прувабл веб фреймворк, паралельно родив язык не хуже Scala для виртуальных машин BEAM и LING.
#472 #640885
>>640884

2014 Март. Турки делают мне приглашение от которого я не могу отказаться продолжить заниматься проектом. Они оплачивают мне поезду в калифорнию, где я покупаю себе Макбук, выступаю с докладом по N2O, а турки в свою очередь отказывають от идеи Фейсбука и согласны на просто игру. Но нужно же что-то делать с флешовым клиентом, его пора уже выбрасывать. Так как у нас в N2O уже есть BERT и вебсокеты, поэтому я советую туркам не платить мне бабки, вкинуть все в профессиональных художников и JavaScript программистов. Я нахожу студию Intersog одесскую и Вячеслав Потравный хуярит новый OKEY клиент а я делаю к нему бекент, и сокращаю (фактически выбрасываю встроенный фейсбук) бекенд до 400 строк (все остально за счет N2O). База 120 строк. Сервер остался Сергея (10K LOC) потому что он тупо работал и там дохуища функциональности. Там были турниры, которые я подозреваю что Эрланг-ебанат Джамшут хуй реализовал так как надо, раз он сократил там все в 3 раза. Я просто не верю что у него работают турниры. Пусть покажет мне работающие турниры (это я вам скажу в любой игре турниры дохуя кода займут, кто писал MMORPG тот знает). Но ладно оставим Джамшуда в покое, хватит насиловать труп. Счас речь идет о других эрланг-ебанатах. Так вто этот прототип без фейсбука на новом N2O и KVS этот проект он публичный https://github.com/synrc/games Этот проект я сделал за 1 месяц сам (ну кроме клиента, который Intersog писали и рисовали). Но склеивал все я сам за неделю, паралельно изучая джаваскрип и беря уроки у Юлии Пучниной. А потом оказалось что ошибок там столько что еще пару неделек я это все багфиксал, но то такое играть можно было уже через месяц.

2014 Май. Турки висят мне опять бабло. И у меня просходин нервный срыв. Одной половиной мозга я понимаю, что все это не напрасно и что я доказал самому себе что я могу сам сделать игрушку на джаваскрпте и испробовал N2O в реальном бою. Второй половиной мозга я хочу разломать череп Синану и Ахмеду. Я возвращаюсь в Киев и забываю про турков навсегда.

Новая история. Солнцеликий ПриватБанк (БЕЗ Эрланг-Ебанатов, но с нормальными пацанам)

2014 Осень. Меня находят мои прекрасный друзья из Приватбанка и дают мне неограниченную власть в своем отделе. Я туда привожу N2O, KVS, BPE, UPL, FORMS, MAD и весь свой стек. За 2 месяца я делаю прототип который представляю лично СТО Приватбанка. СТО дает добро уволить отдел Python-ебанатов у которых 100 SQL таблиц на джанго и проект стартует 10 минут, бесконечное колчество ошибок. Наш проект стартует за 1 секунду и занимет в 100 раз меньше места в виде исходиников (счас всего лишь в 10) и может обслужить весь дневной объем клиентов за 7 секунд. За историю нашего проекта в Привате не было ни одного инцидента на продакшине. Все в ахуе и мы тоже.

2015. Через нашу систему в ПриватБанке было открыто депозитов на 20 миллиардов. Каждый клиент ПриватБанка, который пользуется депозитами (через касиров или сам) пользуется нашей системой написанной на N2O. У нас три вкладки в интернет банке Приват24.

2016. Я решаю посвятить себя написанию языка с зависимыми типами, чтобы доказывать свойства KVS и N2O и предствить миру первый в истории прувабл веб фреймворк, паралельно родив язык не хуже Scala для виртуальных машин BEAM и LING.
>>640888>>641822
#473 #640888
>>640885
Нахуй ты это поехавшее хамло сюда несешь?
#474 #640895
Не могу вникнуть в спор. Кто-то может вкратце объяснить, почему (+) :: a -> a -> a вместо a -> b -> c, и можно и в одной области видимости иметь и стандартный оператор сложения, и свой собственный, объявленный как a -> b -> c?

Почему это имеет смысл лучше показать на (*), который имеет тот же тип. Пример: умножение матрицы на вектор.
#475 #641399
>>640895

>Пример: умножение матрицы на вектор.


https://wiki.haskell.org/Functional_dependencies
>>641441
#476 #641441
>>641399

>(m1 m2) m3 -- type error; type of (m1m2) is ambiguous


>(m1 m2) :: Matrix m3 -- this is ok


Типа в первом случае он применяет (
) :: a -> a -> a, а во втором (*) :: a -> b -> c? Разве в хаскеле есть перегрузка функций?
>>641812
#477 #641522
>>495156 (OP)
Есть в Haskell каноничный способ работы с ошибками и исключениями?
>>641811
#479 #641812
>>641441
-XMultiParamTypeClasses, но ухудшится выведение типов
#480 #641822
>>640885
Шел бы ты отсюда со своей эрлангодрамой
#481 #643172
>>639795
Тебе что надо вообще? Хаскель сам по себе кроссплатформенный фреймворк
#482 #643175
>>639954

>Есть тип Inch, есть тип Meter. И складываются они так, что хуй ошибешься


Блядь, запихни нужные тебе типы в тип-сумму, определи для него инстанс Num или что тебе нам еще надо и живи спокойно, если за универсальностью не гоняешься.
#483 #643188
>>640895
Потому что дисциплина типов, блджад. Потому что нахуй тогда нужна ваша статическая типизация, если программу можно превратить в дрисню.
>>643225
#484 #643225
>>643188

Да всем насрать, не хочешь пиши.
#485 #643232
>>640895

>Не могу вникнуть в спор.


Да нет никакого спора.

> Кто-то может вкратце объяснить, почему (+) :: a -> a -> a вместо a -> b -> c


Потому что с a -> b -> c мало того, что требуются multiparameter typeclasses, так еще и вывод типов начинает в большом числе случаев тупить. Точнее, по-моему в случае a -> b -> c он просто невозможен без дополнительных зависимостей.
Можно ввести какой-нибудь .* и экспортировать таким образом модуль dimensional без перекрытия прелюдии.
#486 #643270
Вот меня один вопрос интересует. Нахуя хаскелькие монады суют в другие языки программирования. Понятно дело в хаскеле они необходимы. Но в других даже не очень или совсем не функциональных языках зачем они? Уже интернет пестрит статьями как круто в Расте монады можно поиметь. Ну да ладно, мне на Раст похуй. Но некоторые уроды-же и в С++ монады суют. optional<T> - монада, future/then - монады. Сейчас мы только для них напишем bind/return и пиздец. Бля, какого хрена? Мало того, что без do-нотации код получается абсолютно уёбищным. Так ещё же тормозит всё, компилятор не может эти блядские монады оптимизировать наравне с обычным С++ кодом. Какими аргументами вправить мозги этим пидарасам?
#487 #643284
>>643270

> Какими аргументами вправить мозги этим пидарасам?


Вот, держи: http://blog.paralleluniverse.co/2015/08/07/scoped-continuations/
Please Stop Polluting our Imperative Languages with Your Pure Concepts.
#488 #643334
>>643270
Просто аплликативы и монады очень удобный обобщённый концепт для управления последовательностями вычислений. Любой программист много размышляющий на эту тему рано или поздно придёт к частному случаю использования апликативов/монад. Так нахуя кривые частные поделия, когда можно взять готовый обобщённый концепт из цаскеля? Будь моя воля, я б вообще в каждый язык их завёз.
>>643356
#489 #643337
>>637035
Nyet, с поиском и навигацией. Причем можно кликнуть по любой функции в исходнике и перейти к её определению.
#490 #643340
>>637466
Нет, это некоторый объект, который инкапсулирует в себе цепочку операций можно при желании описать в виде монады и связывать такие цепочки монадическим биндом. Т.е. всякая щука рыба, но не всякая рыба - щука, как-то так.
#491 #643343
>>643270
ФГМ не излечим, увы.
#492 #643346
>>639954
Ты дебла кусок. Когда Inch и Meter складываются, один приводится к другому и получается результат в виде Inch или Meter.
>>643421
#493 #643347
>>643270
Это всё жидовский заговор, очевидно же.
#494 #643348
>>640098
Что в США является аналогом засранных подъезов в коммиблоках?
>>643425
#495 #643356
>>643270
Потому что это >>643334 Но ты абсолютно прав - пихать монады в языки, которые абсолютно для этого не предназначены - долбоёбизм, на выходе получается нечитаемое говно. Впрочем, не все языки абсолютно не предназначены для монад, в том же F# есть воркэраунды и в Питоне. И я бы не сказал, что async workflow в F# и STM - полное говно. Но в целом да, если хочешь, чтобы было как в Хаскеле, просто возьми Хаскель, а не насилуй свой язык, который разрабатывался под совершенно другой стиль программирования.
#496 #643421
>>643346
Речь изначально шла о полиморфизме, а не о том, что можно сделать в разных частных случаях.
>>645681
#497 #643425
>>643348
Засранные подъезды в многоэтажках. Повторяю свой вопрос.
>>644767
#498 #643508
>>643270
Option/Maybe вполне неплохо оптимизируются простым инлайном, а остальные нинужны.
>>643599>>644119
#499 #643599
>>643508
Either? Или ты любитель трайкетчей?
>>644119
#500 #644119
>>643508>>643599
Но ведь эти ваши мейби-монды это по сути коды возврата - прыжок назад в 80 и няшную сишечку в замен божественным исключениям.
>>644270>>644716
#501 #644270
>>644119
Это не коды возврата, это полноценные значения. Чем они и должны быть, за исключением случаев, когда происходит нечто неприемлимое.
>>644283
#502 #644283
>>644270
Как будто коды возврата это не полноценные значения. Монды это тупик.
>>644292>>644657
#503 #644292
>>644283
Коды возврата должен не забыть проверить (как и поймать исключения) Васян-разработчик (возможно, пишущий код с перепоя). Типы значений-монад проверит коньпелятор слава роботам.
#504 #644657
>>644283
Кроме обычных монад есть ещё свободные монады, а то и вообще эффекты, как в идрисе (http://docs.idris-lang.org/en/latest/effects/introduction.html).
#505 #644716
>>644119
Код возврата ты можешь проверять, а можешь не проверять. Во втором случае всё пойдёт по пизде, если где-то случится ошибка. Причём размер этой попизде предугадать довольно сложно. С Маубе ты можешь писать код так, будто ошибок не существует, а они сами будут обрабатываться. Попизде не придёт.
#506 #644767
>>643425
Что в Акке является аналогом Хаскеля?
#507 #644772
По-хорошему перекот бы уже сделать, но спрошу пока здесь.

Чистота функций подразумевает передачу данных как бы по значению. То есть реаллокация кусков памяти отдаётся на откуп компилятору, который может оптимизировать, а может и не оптимизировать определённый код. Например у меня есть большие куски данных, как то игровые уровни или стейт физической симуляции. Как это разрешать лучше? Явно через монадки менеджить куски мутабельной памяти или отдавать на откуп компилятору, но писать чисто? например newstate <- function state deltatime
#508 #644915
Пилите перекат.
#509 #645681
>>643421

>полиморфизме


Если хочешь складывать хомяков с числами - тебе в Си. И вообще, что ты понимаешь под этим словом -"Полиморфизм"? Ты же даже определения не дашь, говна ты кусок
#510 #646867
>>495156 (OP)

Хачканы, поясните как проводить декомпозицию задачи в терминах теории категорий? С ООП все понятно, собственно он типа так и задуман что отражает реальный мир, но как его моделировать в теоркате?

PS С теоркатом знаком.
>>646898
#511 #646898
>>646867
есть вот такое http://www.haskellforall.com/2012/08/the-category-design-pattern.html но по мне вся эта петушня про ко-ко-котегории нужна для всяких абстрактных хуёвин в библиотечках, т.е. локально.
#512 #648979
Помогите, пожалуйста, начинающему.

http://pastebin.com/Aq9GWN9r

Term : uncode
Type : Int -> a -> [Integer] -> [Integer] -> Int
Does not match : Integer -> a -> [Integer] -> [Integer] -> Int

Забыл вставить в пастбин перевод в десятичную.
des = foldl1 ((+) . (
2))
>>649358
#513 #649021
>>636699
Как что-то сложное. Что, никто здесь Маклейна не осилил?
>>649343
#514 #649343
>>649021
Честно пытался три раза
воннаби-математик-кун
#515 #649358
>>648979
Запили декларацию типа
Что ты ожидаешь от процедуры. И посмотри где именно ошибка
#516 #649726
>>495156 (OP)
Перекат >>649725 (OP)
Перекат >>649725 (OP)
Перекат >>649725 (OP)
Перекат >>649725 (OP)
Тред утонул или удален.
Это копия, сохраненная 2 марта 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски