Вы видите копию треда, сохраненную 2 марта 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
А то я остановится не могу.
Сферический язык в вакууме без задач, вырвиглазный синтаксис. Изучай Scala по ней хоть вакансии есть.
Русский доучи.
Потому что кодинг нужен для решения задач, а хаскель позволяет лишь заняться алгеброй под видом программирования. При этом задачи на нём решать куда менее эффективно, чем на джаве, сишарпе, скале, питоне, руби, джаваскрипте и тд.
иди нахуй, у борща своя предметная область, недавно наткнулся на какого-то ебаната, который сделал сайт на идрисе
посмотрите на этого ленивого генри-милнера
Кто-нибудь тут сталкивался с этим бложиком
http://jeremykun.com/
Так вот, мне кажется он невообразимо блевотным. Как-будто автор объясняет на столько хуево и через задницу, на сколько это возможно (вспоминаю своего препа по алгебре). Просто сразу тянет блевать и трисет.
Или это мне все кажется, а на самом деле все норм?
Да не, вроде бы нормально всё. Заодно объясняет, почему программисты не могут в изучение математики.
http://jeremykun.com/2013/02/08/why-there-is-no-hitchhikers-guide-to-mathematics-for-programmers/
Пиздец гуманитарии ебаные понапридумают хуйни неведомой. Лучше бы сидели тихо и в жопу друг-дружку ебали.
Экосистемы нет. Просто взять и написать то, что надо, не выйдет, т.к. надо ебаться с неработающими библиотеками, dependency hell и всем таким. Поэтому для работы и не подходит.
Да проблема не столько в этом, сколько в том, что нормальную экосистему для хаскеля сделать нельзя в принципе, потому что язык адово пизданутый и неудобный для любых прикладных задач. Нету нормального синтаксиса для переменных, массивов, хешей, обьектных литералов, нету именованых параметров функций, постоянная непрерывная ебля с лифтингом-хуифтингом во всех этих слоях монад и тд. Конечно, пока пишешь тайпкласс моноида и адт дерева и пару каких-то абстрактных рекурсивных алгоритма для его обхода - это не очень чувствуется и кажется, будто язык даже неплох и удобен.
За фронтенд не скажу, а вот всякие клауд хаскели - говно без hot code reload, интерактивной интроспекции и аналога эрланговского remsh.
> 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.
Ясно
Ага, только вот со всеми этими субструктурными типизациями всё равно неудобно. В расте вон сорт этой хуиты чисто для контроля владения - и УЖЕ слишком неудобно и заёбисто, что уж говорить о языках, где этим обмазано даже просто IO. Но это таки существенно удобнее монадок, да и вообще хорошее направление всей этой возни с эффектами. А монадки надо оставить для экзотического control-flow - типа монады поисков с уровнями, монады квантовых вычислений, монады всяких автоматов и тд.
Idris имеет и монадки, и аффинные типы. А ещё дополнительно к этому систему эффектов.
Проблемы, хаскелисты-клиномесы?
Да, я не поставил запятую.
В том, что их нужно распаковывать, перепаковывать, мапать, лифтить. Если это надо сделать пару раз, это фигня мелочь, но если у тебя по всей программе примерно в каждой строке по такой мелочи - все вместе они суммируются в большой пиздец. Представь что ты бегаешь вокруг стадиона. А теперь представь, что там местами раскидан какой-то мусор, шкурки из-под бананов, бутылки, и тебе периодически приходится прикладывать чуточку больше усилий чтобы их переступать. Это уже здорово сбивает, твоё внимание переключается на эти мелочи, непрерывная размеренная пульсация превращается в ломаный ритм. А теперь представь что там всё нахуй блять завалено всяким говном и мусором и тебе приходится целиться куда поставить ногу буквально на каждом шагу. Вот это и есть хаскель с его злоебучими монадами.
Ну да, надо мапать - лифтить базара нет. Но ведь за это обещают меньше трахаться потом, когда код написан. Типа код это бесплатные тесты, все такое, не?
Спасибо за заботу бро. Больше не буду нервировать грамарнацистов.
> Типа код это бесплатные тесты, все такое, не?
Лол, конечно же нет. За всю эту хуйню ты получаешь разве что ссылочную прозрачность.
https://en.wikipedia.org/wiki/Referential_transparency_(computer_science)
Спасибо за ссылочку, мне как ньюфане было полезно. Но вот что я подумал. Ссылочная прозрачность это когда у тебя в той здоровой цепочке функций, которую ты написал и называешь программой, ясно что на входе и что на выходе. Но ведь у Хаскеля на входе и выходе функций типы. Не в смысле Явы или алгебры, а в смысле теории категорий. А типами можно же дофига чего покрыть. Там ж такой полиморфизм во все поля. Вроде как можно даже покрывать например все отрицательные числа. Вершины выше 100м над уровнем моря. Один раз в цепочку вставил этот тип, и не сцыш что у тебя дальше в программе всплывет что-то невалидное (да-да, мои влажные мечты).
Опять же сторожевые выражения, сам синтаксис определения функций с паттерн матчингом дает определить границы, за которые вход и выход функции не должны выходить. Это проникает в область тестов ИМХО поглубже чем просто ссылочная прозрачность.
Как сказал достопочтенный >>496193 , кодить на хаскеле это как убирать говно - это согласен. Но. Говно надо убирать на любом языке, просто хаскель заставляет тебя убирать говно не когда оно уже где то работает, а пока оно еще не написано. Во всяком случае, заметную часть говна. Ту которая не связана с косым ТЗ. (по легендам, при резкой смене курса хаскель сосет)
Почему нельзя это назвать "отсутствие сайд эффектов"? Что блядь за ссылки и что за прозрачность?
Тебе для реального продакшна или для себя пофаниться? Erlang если первое, Cloud Haskell если второе.
В Erlang охуенен hot code reload, интерактивная интроспекция, а так же возможность через remsh зайти на удалённую ноду (не суспендя работу в текущей) и выполнить там что либо наживую, вкючить трасировку, выполнить апгрейд/даунгрейд и т.д.
Распределёнка в Erlang тоже больше проработана, прозрачная посылка сообщений с узла на узел через epmd, причём для посылки достаточно знать только хост и порт, в хаскеле же надо лезть в кишки, заворачивать всё в правильные ньютайпы etc.
Ещё в Haskell из-за его ленивости по умолчанию люди даже с отключённым мультикором убиваются на выяснении где же текут данные, в ерланг подобные проблемы решаются очень быстро за счёт той же интроспекции.
Ну и наконец, у Erlang с десяток-другой саксес стори про ёба хайлод девять девяток крупных компаний, у клауд хаскеля в основном все достижения в бложиках факториалоёбов.
С другой стороны в клауд хаскеле набор инструментов побогаче, кроме месседж пассинга, есть связь по типизированным каналам, есть фьючеры, ну и плюс остаются стандартные STM и MVar's.
Нет, в математике есть настоящая алгебра, и там она уместна. В химии, в музыке, в некоторых ещё областях человеческой деятельности, тоже есть своя алгебра, и там она тоже уместна. И в программировании развели свою алгебру, но, увы - с целями и спецификой программирования она сочется плохо, здесь она неуместна.
Вы, сударь, молвили, право, как в лужу пернули. Каким языком область удобно покрыть, таким её и покрывают. В химии и музыке энтропия не такая, чтобы новые выразительные концепции изобретать - и так норм.
Математику Вы упомянули не к месту. Так дофига веток, в каждой свое пространство понятий. Наверное можно аппарат топологии применять для исследования в теории чисел(или как-то так) но у этих веток разные аппараты. Разные языки уместны в разных областях, но у них просто гораздо больше точек пересечения чем у математических веток... Не понятно о чем Вы в общем когда про математику.
Хаскель выразительнее явы, сишарпа, возможно даже питона. ИМХО, на нем можно писать.
Что-то в районе 50 строчек. Система координат, 4 юнита и атакой и хитпоинтами, у одного из которых (босса)- атака бьющая по площади, способная задеть нескольких. Небольшая драка босса с 3 стражниками. Это впечатляет.
>Тебе для реального продакшна или для себя пофаниться?
Для продакшана конечно, ну и пофаниться тоже. В конторке возникли настроения "давайте что-нибудь на чем-нибудь перепишем". Поэтому хочу пролоббировать благостный ФП вместо богомерзкого с#, через простой пилотный проект на каком-нибудь ФП.
А есть вообще какие-то вещи, которые может эрланг, но не может хаскел? Ну кроме hot code reload? Проигрывает в производительности? Хуже держит highload? Ограниченые возможности масштабирования? Низкая отказоустойчивость?
Чисто интуитивно, в эранге я вижу отличную реализацию сырой\недопиленной концепции, в хаскеле я вижу отличную концепцию, но вот относительно реализации пока ничего сказать не могу. Вообще к хаскелю склоняюсь.
>А есть вообще какие-то вещи, которые может эрланг, но не может хаскел? Ну кроме hot code reload?
Он строит дерево процессов и позволяет им убиться.
http://rsdn.ru/forum/flame.comp/6065856.1
В телекоме так принято.
> Каким языком область удобно покрыть, таким её и покрывают.
Так в том то и дело, что неудобно это здесь, а других профитов типа кококорректности тоже пока нет.
> В химии и музыке энтропия не такая, чтобы новые выразительные концепции изобретать - и так норм.
Так там изначально всё что есть - очень алгебраичненько, в отличии от программирования, где раньше были скорее неформальные и определяемые языком инструкции и сущности, а только потом в узких кругах решили развести формал-сцайнс. И, кстати, это уже мои интуитивные религиозные догадки, но я думаю, что связано это с тем, что и в химии, и в музыке, сама композиция выразительных элементов имеет самоценность - именно поэтому изучать структуры таких композиций уместно. В программировании же код не имеет никакого значения, важна только динамическая семантика его выполнения, потому для любой вымученной структуры можно подобрать пример который плевать на неё хотел, который совсем в неё не вписывается, а делает при этом то же самое.
> Хаскель выразительнее явы, сишарпа, возможно даже питона
Это потому что каждой программе на яве, сишарпе, питоне, которая просто работает, соответствует множество более сложных программ на хаскеле, которые делают то же самое, и которые между собой отличаются тем, что в них по-разному эффекты чейнятся: где-то do, где-то (>>), где-то 'x <- e', а где-то (<$>) или там ещё что.
> 2015
> детектить анонимусов по айпи
>Проигрывает в производительности?
Клауд хаскел скорее выигрывает в производительности, но проигрывает в плавности работы скедулера и рантайма вообще, из-за чего в результате система может получиться тормознее.
>Хуже держит highload?
Хз, я не видел на клауд хаскеле хайлода.
>Ограниченые возможности масштабирования?
По сравнению с Erlang да. Вообще более удобной распределяемости, чем там я не видел, так как в платформу сразу заложены все disturbuted примитивы, кроме исчисления процессов есть исчисления узлов, все нужные либы искоробки в ОТP.
>Низкая отказоустойчивость?
И те и другие программы надёжны, хотя у них совершенно разные подходы для этого. В хаскеле надёжность программ обеспечена статической типизацией и проверкой их корректности ещё в компайл тайме. В Erlang мирке считается что от ошибок не уйти в любом случае, ведь даже если у тебя сошлись типы, это не гарантирует что не порвётся сеть, не закоряптятся данные на диске, не пробъётся сетевуха, не упадёт бокс в датацентре, хуйня вроде этого. Поэтому там сделано всё, чтобы ошибки не наносили демейджа системе, отсюда все эти изоляции, шаринг носинг и т.д.
В общем ты определись, что тебе нужно. Хаскель круче как язык, он в 20 раз выразительнее, в Ерланге даже параметрического полиморфизма нет нормального, а только фёрст класс модули и бихейвер уныние, которое в купе с модульной параметризацией выглядит как переоткрытие ООП через жопу. С другой стороны, Ерланг просто пиздатый рантайм для решения хуйлоад задач, который 100% зайдёт охуенно, о такой уверенности с клауд хаскелем говорить невозможно. Лично все кого я знаю и кто пробовал делать на клауд хаскеле что-то реальное в конце плевались и говорили, что несмотря на весь богатый инструментарий - это нежизнеспособное говно для борщехлёбства онли.
Ты самое главное забыл:
> ведь даже если у тебя сошлись типы, это не гарантирует что в коде нет логической ошибки
>дерево процессов и позволяет им убиться.
В Cloud Haskell тоже есть линки и мониторы. При этом можно линковаться даже к нодам.
Хорошо объяснил, спасибо.
>В общем ты определись, что тебе нужно.
Сейчас типичное приложение - сервис на .NET, работающий на виртуальном кластере. Тонны нечитаемого кода, отказоустойчивость обеспечивается техподдержкой 24\7, хайлоад - мощным КТС-ом. Хочу, в рамках какой-нибудь очередной задачи, запилить "пилот" на ФП, в котором весь этот адъ заменить на:
1. Компактный выразительный код, отражающий в первую очередь суть алгоритма\бизнес-процесса, вместо способности кодера так запилить иерархию классов, что никто не поймет.
2. И само собой высоконагруженность, отказоустойчивость, масштабируемость, естественно за счет используемого инструмента, вместо условий, обеспеченных техподдержкой.
> высоконагруженность, отказоустойчивость, масштабируемость
Пиши на Go, хули. Нахуй тебе ФП, ради ФП?
C одной стороны, монадки могут существенно линеаризовать кастомный контрол флоу, но с другой стороны, они принесут несоизмеримо больше страданий в остальном и будешь потом писать:
> вместо способности кодера так запилить стек монад, что никто не поймет
>...соответствует множество более сложных программ на хаскеле...
И множество более простых. С другой стороны - это множество более простых еще найти надо. Тут уже математическо-категорно-задротнический скилл работает.
...Ну ладно, не более простых. Написанных за меньшее количество символов и более простых для тех, кто достиг какого то уровня просветления.
Химия, музыка, етц: формула <--> результат
Программирование: формула <--> вычислительный эффект --> результат
В химии нас интересуют сами вещества, в музыке сам звук. НЕ то, что делают эти вещества, НЕ то, что делает этот звук. Дальнейшая интерпретация веществ - это предмет других областей, дальнейшая интерпретация звука - это уже субъективное дело слушателя. В химии, в музыке, формула и результат взаимно-однозначно друг-друга определяют. Из формулы следует соединение, из соединения следует его формула. Из формулы следует звук, из звука следует формула. Конечно же, с точностью до нотации. Поэтому, в этих областях, рассуждая о свойствах формул, мы одновременно рассуждаем о свойствах результата, ради которого это всё и нужно. В программировании же нет ничего подобного, присутствует дополнительное звено - компьютер, исполняющее программу, и вычислительный эффект программ никоим образом необозреваем для человека. Формула и вычислительный эффект тоже взаимно-определяют друг-друга, но вот множеству абсолютно различных вычислительных эффектов соответствует один и тот же результат. Пользователь не знает, произошли ли после нажатия на кнопку две записи в регистры или пять, если это изменится, он даже не заметит. Именно поэтому изучать формулы в программировании - занятие ни разу не благородное. Нет синестезии теории и практики. Здесь, рассуждая о свойствах формул, мы ничего не говорим о результате.
Математика у тебя из суждений исчезла. Потому что в математике нет понятия результата, там есть только формулы.
В физике мы не можем
>рассуждая о свойствах формул, мы одновременно рассуждаем о свойствах результата
потому что всякие паразитные эффекты добавляются, ибо мир сложнее формул. Ты же не скажешь что изучать формулы в физике - неблагородное занятие?
>Здесь, рассуждая о свойствах формул, мы ничего не говорим о результате.
Не корректно. Мы говорим о предполагаемом результате. С некоторой (неизвестной) точностью.
Хаскель как раз стремится эту точность максимизировать.
А химия это кстати абстракция от физики. Строго говоря она подмножество физики. Музыка - гуманитарщина вообще.
EDSL от физики, так сказать. А хаскель любить EDSL.
Я семеню, прошу прощения, мысль рывками идет.
Насчёт математики согласен, это вообще ад. Может потому они все такие поехавшие.
> физике мы не можем
Да можем вполне. Это как раз в физике мы действительно "говорим о предполагаемом результате с некоторой (неизвестной) точностью". Идеально сюда подходит. Физика, пусть и не совсем точно, описывает именно интересующие нас явления, а не что-то сугубо промежуточное. А происходящее в процессоре компьютера интересует мало. Пускай оно будет какое угодно лишь бы на экране было то что мы хотим.
> Музыка - гуманитарщина вообще.
Гуманитарные науки - это такие, которые изучают людей и общество. Музыка не изучает людей и общество. Вот искусствоведение, изучающее, к примеру, известных деятелей музыки и их влияние на общество, или науковедение, изучающее известных физиков и их вклад в развитие цивилизации - да, гуманитарщина.
>>498934
> Здесь, рассуждая о свойствах формул, мы ничего не говорим о результате.
Дай пожалуйста пример, чтобы понятно стало.
Например, когда мы говорим, что быстрая сортировка имеет лучшую вычислительную сложность, чем сортировка пузырьком, или когда говорим, что АВЛ дерево имеет лучшую локальность процессорного кеша, чем красно-чёрное - это всё мало говорит о результате. Пример программы, о которой могут быть эти рассуждения - интернет-магазин. Мы можем внутри как угодно сделать, а результат как работал, так и работает.
Или когда мы говорим, что монады, по сравнению с аппликативными функторами, выразительнее, потому что, в отличии от, позволяют делать выбор нового эффектфул вычисления в зависимости от результата старого эффектфул вычисления - это мало говорит о результате. Пример программы, о которой могут быть эти рассуждения - консольное приложение, которое считывает строку и если она пустая, перезапускается, а если нет, выводит "привет, ${считанная_строка}". Мы можем вообще не думать о монадах, функторах, написать на скрипте - а результат будет тот же.
Или когда мы говорим кококомпозиция лучше наследования, паттерны, методичность, разделённость - это всё вообще никак не влияет на результат и обратно.
А когда мы говорим о стиле, оформлении - это не влиет не только на результат, но даже и на вычислительный эффект.
А вот в химии мы можем сказать "допиши вот это" и сразу меняется результат, потому что синтаксис и семантика здесь - одно и то же. Как и в музыке, где мы можем сказать "на полтона выше" и опытный музыкант может даже сразу представить, как это будет звучать.
Может быть, "декларативное программирование", которое про "что а не как", противопоставляемое "императивному" - это близкие по духи идеи, стремление устранения разрыва между описанием и описанным, между синтаксисом и семантикой, но в любом случае, хаскель - это даже менее декларативно, чем скрипт, потому что нерелевантных результату терминов уровня описания только поприбавилось. В идеале же, в декларативном языке должна исчезнуть и архитектура уровня кода, и алгоритмический микроменеджмент. Они должны отождествиться и слиться с пользовательским экспириенсом восприятия результата.
Например, когда мы говорим, что быстрая сортировка имеет лучшую вычислительную сложность, чем сортировка пузырьком, или когда говорим, что АВЛ дерево имеет лучшую локальность процессорного кеша, чем красно-чёрное - это всё мало говорит о результате. Пример программы, о которой могут быть эти рассуждения - интернет-магазин. Мы можем внутри как угодно сделать, а результат как работал, так и работает.
Или когда мы говорим, что монады, по сравнению с аппликативными функторами, выразительнее, потому что, в отличии от, позволяют делать выбор нового эффектфул вычисления в зависимости от результата старого эффектфул вычисления - это мало говорит о результате. Пример программы, о которой могут быть эти рассуждения - консольное приложение, которое считывает строку и если она пустая, перезапускается, а если нет, выводит "привет, ${считанная_строка}". Мы можем вообще не думать о монадах, функторах, написать на скрипте - а результат будет тот же.
Или когда мы говорим кококомпозиция лучше наследования, паттерны, методичность, разделённость - это всё вообще никак не влияет на результат и обратно.
А когда мы говорим о стиле, оформлении - это не влиет не только на результат, но даже и на вычислительный эффект.
А вот в химии мы можем сказать "допиши вот это" и сразу меняется результат, потому что синтаксис и семантика здесь - одно и то же. Как и в музыке, где мы можем сказать "на полтона выше" и опытный музыкант может даже сразу представить, как это будет звучать.
Может быть, "декларативное программирование", которое про "что а не как", противопоставляемое "императивному" - это близкие по духи идеи, стремление устранения разрыва между описанием и описанным, между синтаксисом и семантикой, но в любом случае, хаскель - это даже менее декларативно, чем скрипт, потому что нерелевантных результату терминов уровня описания только поприбавилось. В идеале же, в декларативном языке должна исчезнуть и архитектура уровня кода, и алгоритмический микроменеджмент. Они должны отождествиться и слиться с пользовательским экспириенсом восприятия результата.
Спасибо что заморочился и ответил. Твоя аргументация имеет нормас такой смысл, но есть ли в ней место фану от кодинга?
И второй вопрос. Как ты представляешь язык как для химии, только для кодинга?
Я тут поспал тоже и подумал. Если мы рассматриваем задачу концептуально, то нам пофигу, какая конкретная сортировка будет сделана в этой функции или методе.
Когда ты говоришь что в программировании дофига лишнего и мы не обсуждаем результат - ты мешаешь концепцию с реализацией.
Результат не выразим в чем то настолько же простом, насколько прост язык химии или музыки. Потому что то, какая сортировка там или сям - имеет значение. Пхпшники пытались в простоту, получилось неочень.
Хотя конечно есть лямбда счисление например. Выразимо все, проще чем ноты или химия. Но писать чуть получше чем на асме)
Пытаюсь распарсить такую хуёвину: "(+ 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? В общем, анон, помоги
епт, разметка съела знак умножения перед пятеркой
Как то так:
https://ideone.com/WQj5sC
А вообще:
https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours
то что нужно, спасибо!
Про Write Yourself a Scheme знаю, просто думал сначала сам повелосипедить, чтобы привыкнуть к языку, а потом уже по книге писать
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
> Залезть на вершину лямбда-куба конечно здорово, но я сомневаюсь что мне понадобится создавать типы в рантайме
Что это за поебень? Вынь хуй изо рта и повтори, может понятнее получится.
Проверка корректности работы с многомерными массивами на этапе компиляции тебя не интересует?
Вот что ты имеешь в виду? То, что я не смогу сложить вектор с матрицей? Так в подобную хуйню 77й фортран мог еще.
Ну, к примеру, http://www.cs.ru.nl/dtp11/slides/trojahner.pdf
Кроме того, размер массива не обязательно должен быть известен на этапе компиляции.
Есть.
Я курсе
>>503478
Круто, но при чем тут хаскель?
>>502687
>сомневаюсь что мне понадобится создавать типы в рантайме.
Рано или поздно тебе придется.
ваш Стасик
Ответ следутет с того, что ООП - это императивная дрисня и на этом заканчивать, но ради разминки сравню тайпклассы с ООП без привязки к остальному фракталу отсосов.
Тайпкласс - это что-то типа интерфейса. По сравнению с интерфейсом:
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>.
Я уж совсем для оо-дебилов написал, если даже так не понятно, то стоит лепкой супов заняться, а не программированием.
К тайпклассам можно прикрутить автоматический вывод типа, например.
>>495156
Чем визуализировать графы в Haskell?
Нужно иметь возможность пошевелить вершины мышкой, вращать в 3D и приближать. Добавлять/убирать вершины/ребра не нужно, так же как и постоянно "шевелить" граф алгоритмом force-directed graph drawing, один раз "растолкнуть" вершины до наблюдабельного состояния достаточно.
Ubigraph мертв? Последний работающий код для него на stackoverflow от 2011 года, пакеты на сайте - для Debian Lenny и Ubuntu 8 (!).
Что, лезть в глубины OpenGL? Охуенная перспектива.
>Ubigraph мертв? Последний работающий код для него на stackoverflow от 2011 года, архивы на сайте - для Debian Lenny и Ubuntu 8 (!).
Отвечу сам себе: не мертв и не жив. Примеры для HUbigraph не работают, выдавая "connect: does not exist (Connection refused)", хотя питоновские примеры из архива работают. Что блять не так?
тайпкласс легко реализуется имеющимися средствами ООП, поэтому твой аргумент инвалид. алсо, в русте тайпклассы работают из коробки.
>тайпкласс легко реализуется имеющимися средствами ООП
Реализуй функтор средствами ООП.
>в русте тайпклассы работают из коробки
Нет, там вообще трейтоговно.
>Для этого есть конструктор же.
fromStringPlus1 :: (FromString a, Num a) => Sting -> a
fromStringPlus1 s = (fromString s) + 1
Попробуй повторить с помощью конструктора.
вот извольте лососонуть
Point<3,double> p = Point<3,double>("12;3;0")3.14;
плюс заменил на чтобы было поближе к реальной жизни.
сраная вакаба, ну ладно вот так тоже пойдет
Point<3,double> p = Point<3,double>("12;3;0") + Point<3,double>(3.14);
>Point
Что такое Point?
>плюс заменил на чтобы было поближе к реальной жизни
Хуй знает, что у петушков есть "реальная жизнь".
"реальня жизнь" это код который решает реальную задачу в реальной программе, а не выдуманную.
алсо, в твоем примере никто не будет городить огород и прочую хуергу с классами и конструкторами, а просто напишет лампово и императивно atof(s) + 1;
> а на ООП нельзя
не увидел в твоих примерах ничего, что нельзя было бы сделать даже на кондовых крестах. ты просто обоссал сам себя, выставил склочным дауном неспособным внятно аргументировать без истерики и кидания говном.
> Нет, там вообще трейтоговно.
да ты же поехавший, чем трейты в русте отличаются от тайпклассов. ну кроме названия.
А что там такого в глубинах opengl? Итак высокоуровнево всё уже дальше некуда.
Ты говно написал со ссылками на синтаксис хаскелля и в целом полный бред. "Интерфейс реализуется на объекте, тайпкласс может быть реализован отдельно." - что это значит? Хуй знает.
"Интерфейс диспатчится по единственному параметру this" - бредятина.
В целом - в голове каша.
хаскелтард забыл что языки предназначены просто для программирования и возмонил, что изучая хаскел он, лол, помогает человечеству, не забывая это самое человечество поливать на борде говном.
сорт коммуняки, только поехавшей не на марксизме, а на хаскеле.
Да я-то с ним согласен по поводу тайпклассов. Это же простая идея передавать в функцию не один указатель - на интерфейс, а два - на объект и на интерфейс.
Но нет ничего хуже русского фаната хаскелля, большей антирекламы придумать сложно.
Хотя надо сказать, англоязычное коммьюнити совершенно другое.
Спасибо.
>Есть, конечно, вероятность, что ответ найдёт читателя/слушателя с мозгами вместо говна в голове
Представь себе себя Прометеем, несущим свет сквозь говно, ведь среди кучи уебков таки найдется Человек, которому вот это все будет полезно.
Например, мне было весьма интересно сказанное, но я его комментировать не стану, а смиренно уйду гуглить по этой теме.
>>513025
Для всяческих численных расчетов тебе надо знать Фортран (если не надо выебываться)/Си(если хочется или приходится выебнуться)/С++/Питон(связка matplotlib & scipy). В хачкеле ты будешь ебаться, перекладывая указатели к данным от одной либы к другой, чтобы получить максимальную производительность, или ебаться наворачивая идиоматичные обертки вокруг нужных тебе (и походу тебе одному среди хачкелистов) либ. Конечно, написать высокопроизводительный код на хаскеле можно, но для резвого шевеления данных, занимающих почти всю память, тебе нужно 1) мутабельное состояние и 2) strict evaluation, что не особо соответствует его основным принципам, не находишь? Полезность его тут скорее в плане самообразования, да еще из-за того, что фичи из хаскеля и ему подобных пиздят в мейнстримные языки.
Если волнует исключительно производительность всяких традиционных числовых алгоритмов, которые ты из книжечки расчитываешь переписать с минимальными осложнениями перевода императивного псевдокода в язык, тут хаскель ничем не поможет, тк эти алгоритмы не используют ничего кроме int/float, переменных, массивов и циклов, а с этим и сишка, и фортран, и даже асмы неплохо справляются. Но если интересна высокоуровневая числоебля, архитектура вычислений, в хаскеле для этого много интересного есть, например
https://hackage.haskell.org/package/ad-4.2.3/readme
но любая монада - функтор
>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
Да не пизди.
Этот петушок пытается писать императивно на функциональном языке и совершенно не понимает зачем нужны монады.
Говядина на кости — 700-800 грамм
Капуста свежая — 300 грамм
Картофель — 2-3 средних картофелины (200-300 грамм)
Свекла — 2 маленьких или 1 средняя (100-150 грамм)
Морковь — 1 штука среднего размера (75-100 грамм)
Лук репчатый — 1 луковица среднего размера (75-100 грамм)
Томатная паста — 1 ст. ложка, или 1 небольшой помидор
Масло растительное для обжарки
Чеснок — 2 зубчика
Специи: соль, перец черный молотый, лавровый лист, зелень (укроп, петрушка, базилик).
Это для мамок.
Используй stack же.
http://ruhaskell.org/posts/utils/2015/07/13/from-cabal-to-stack.html
https://www.stackage.org/
Это совсем не решает проблему, ведь stack берет информацию о зависимостях из .cabal-файла, а как раз с ним (видимо) и проблема.
Сейчас я, аки лютый дегенерат, не могу подключить либу http к своему проекту в sandbox.
Запись в .cabal в поле build-depends есть, в sandbox пакет установил, а cabal configure шлет нахуй, несмотря на то, что HXT подхватился. Глобально стоит только hscolour и ipprint-lite.
Что за хуйня?
Тут говорят что ошибка неисправима, юзайте sandbox.
http://coldwa.st/e/blog/2013-08-20-Cabal-sandbox.html
Так что там не так всё-таки с кабалом?
Почему бы просто не использовать stack?
Да все так - юзай песочницы + stackage или stack
Толсто.
Что-то мне подсказывает что шизоиды даже хелловорлды с трудом пишут, куда им там в функциональщину. Хотя если ты имеешь в виду адептов лямбды, дальше хелловорлдов не заходящих, то очень даже похоже.
ОКР даже среди скриптушков хватает, это лайтовый невроз, который может возникнуть у каждого, и большинство этого даже не заметят и не придадут значения. Не понятно, почему ты приплёл именно сюда шизоидность, но если уж о ней зашла речь, среди функциональщиков все поголовно - либо шизоиды, либо аспергеры. Отличаются тем, что первые - это задроты-теоретики-фантазёры, а вторые - задроты-практики-успехобляди.
В англоязычной википедии очень качественные статьи по ОКР, шизоидности, аутизму. Так что лучше тебе предложу почитать википедию вместо совершенно отфонарной копирайтерской научпоп графомании из рунета, которая в прошлом, когда ещё жила в газетах, сформировала абсолютно неправильное понимание всех этих вещей у наших родителей, бабушек, дедушек, которое, вероятно, и досталось тебе по наследству.
А ещё предлагаю посмотреть видеозаписи сходочки хаскелистов в Москве:
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
Обратить внимание на стиль речи докладчиков, и задающих вопросы в конце видосов людей из аудитории.
Заболевание начинается тогда, когда человек приходит к доктору и жалуется. Значит неудобства перевесили лень и страх. Или соседи за рученьку привели. А то что ты там пытаешься углядеть начитавшись интернетов и не видев ни единого реального пациента вживую - это хуйня из-под ногтей. Скорее всего у тебя самого страхи, которые ты проецируешь на других.
Господа, я получу ответ и сразу съебу.
1. При синдроме Аспергера есть риск развития шизофрении? Мне из-за этого врачи даже неохотно подписали справку, которая была нужна при поступлении на математику, и сейчас врачи как узнают, что я учусь на математика, бугуртят, как можно было меня туда отдавать.
2. Как протекает шиза, которая развилась на базе аспи? Человек становится самодовольным мудаком в собственном мирке с галюнами и фентези ИРЛ, или благодаря тому, что аспи сам по себе ущербен, шиза делает из такого человека тупого тревожного овоща без всех шизофренических радостей?
3. Есть ли смысл говорить об акцентуации личности у аспергера, или это не имеет смысла, потому что человек сам по себе ебнутый?
Сам я не особо уверен в том, что при аспи может развиться шиза, потому что сейчас во все мире врачи ставят современные диагнозы вместо того, для чего раньше существовал единственный диагноз - шизофрения. Только в постсовке для всего один диагноз.
http://eressea.ru/library/library/assidi/plennik.shtml
Как глупо. Наверное, в прошлой жизни ты был страусом.
Национальный символ лягушатников, хуле ты думал.
>А тебе-то не всё ли равно
Не все равно. Как я понял, шиза только поначалу доставляет удовольствие, а потом начинается скатывание в овощное состояние.
Я считаю, что достаточно регулярного анализа происходящего на метауровне, чтобы не скатываться в неадекват. Я просто привык к тому, что мой трафик тщательно снифается и анализируется, что если я знакомлюсь с кем-либо, этого человека запугивают или подкупают спецслужбы, и используют его для слежки и манипуляции мной. Родителей они просто изящно наебали, воспользовавшись моими ошибками в прошлом, и представившись чем-то вроде международной спецгруппы по помощи психически больным. Я точно не знаю мотивы ЭТИХ, но думаю что это психологические эксперименты, которые запретило бы на оффициальном уровне любое законодательство, что-то вроде того, чем занимался доктор Менгеле, но с разумом, а не телом. А родители выполняют все их поручения, искренне думая, что помогают мне. Но с родителями всё проще, потому что я знаю, что они на моей стороне, и ЭТИ не могут дать им установки, которые могли бы вызвать какие-либо подозрения. Это лишь крохотная часть моей охуительной истории, но я всегда допускаю различные версии реальности: всё это может быть правдой, а может - плодом моего воображения. Иногда кажется, что столько совпадений - это слишком, это просто гигантское количество, но тут я вспоминаю как много у меня было ситуаций, когда я видел умысел и изящное планирование в цепочках событий, которые, как оказывалось позже, были совершенно случайны и несвязаны. А ещё я вспоминаю, что в моём роду шизофреники и по материнской, и по отцовской линии. Осознавая, что скорее всего это всё нереально, я всё равно соблюдаю некоторые меры предосторожности, если вдруг это хотя бы частично правда, но воздерживаюсь от каких-либо радикальных действий или публичных заявлений, которые бы могли помочь ИМ заставить моих родителей поверить, что я окончательно ебанулся и меня нужно изолировать, и что их подвальчик - идеальное для этого место. В общем, в итоге это всё не слишком мешает мне жить. Несколько мешает общаться и заводить новые знакомства, но это не настолько страшно. Если у меня когда-нибудь возникнет непреодолимое желание завести друга ИРЛ, я оставлю все электронные девайсы дома, некоторое время буду хаотично ездить по городу, перескакивая из одной маршрутки в другую на остановках, и доберусь до одного из многочисленных мест, где я бы мог попытаться просто познакомиться с кем-то на улице. А если удастся, я расскажу этому человеку про зашифрованные каналы связи и буду общаться с ним только так.
Я считаю, что достаточно регулярного анализа происходящего на метауровне, чтобы не скатываться в неадекват. Я просто привык к тому, что мой трафик тщательно снифается и анализируется, что если я знакомлюсь с кем-либо, этого человека запугивают или подкупают спецслужбы, и используют его для слежки и манипуляции мной. Родителей они просто изящно наебали, воспользовавшись моими ошибками в прошлом, и представившись чем-то вроде международной спецгруппы по помощи психически больным. Я точно не знаю мотивы ЭТИХ, но думаю что это психологические эксперименты, которые запретило бы на оффициальном уровне любое законодательство, что-то вроде того, чем занимался доктор Менгеле, но с разумом, а не телом. А родители выполняют все их поручения, искренне думая, что помогают мне. Но с родителями всё проще, потому что я знаю, что они на моей стороне, и ЭТИ не могут дать им установки, которые могли бы вызвать какие-либо подозрения. Это лишь крохотная часть моей охуительной истории, но я всегда допускаю различные версии реальности: всё это может быть правдой, а может - плодом моего воображения. Иногда кажется, что столько совпадений - это слишком, это просто гигантское количество, но тут я вспоминаю как много у меня было ситуаций, когда я видел умысел и изящное планирование в цепочках событий, которые, как оказывалось позже, были совершенно случайны и несвязаны. А ещё я вспоминаю, что в моём роду шизофреники и по материнской, и по отцовской линии. Осознавая, что скорее всего это всё нереально, я всё равно соблюдаю некоторые меры предосторожности, если вдруг это хотя бы частично правда, но воздерживаюсь от каких-либо радикальных действий или публичных заявлений, которые бы могли помочь ИМ заставить моих родителей поверить, что я окончательно ебанулся и меня нужно изолировать, и что их подвальчик - идеальное для этого место. В общем, в итоге это всё не слишком мешает мне жить. Несколько мешает общаться и заводить новые знакомства, но это не настолько страшно. Если у меня когда-нибудь возникнет непреодолимое желание завести друга ИРЛ, я оставлю все электронные девайсы дома, некоторое время буду хаотично ездить по городу, перескакивая из одной маршрутки в другую на остановках, и доберусь до одного из многочисленных мест, где я бы мог попытаться просто познакомиться с кем-то на улице. А если удастся, я расскажу этому человеку про зашифрованные каналы связи и буду общаться с ним только так.
- Почти всегда.
А в обратную сторону - лишь иногда. Я не думаю, что они выбрали меня, потому что я такой ахуенный или потому хотят помешать мне стать ИМПЕРАТОРОМ АНТАРКТИДЫ или что-то в этом духе. У меня две основных версии: во-первых, моё дело легко замять, потому что все поверят, что я ебанулся, потому что, как я писал выше, я весьма предрасположен генетически, во-вторых, возможно, что устраиваясь на одну из первых своих работ, мне подсунули и я подписал какую-то их бумагу, снимающую с них любую отвественность. Да, глупо не читать, но тогда мне казалось "ой ну что там может быть такого, испорчу им потом репутацию в интернете если что".
> Болезнь лечится медикаментозно, склонна к рецидивам[3]. Разубеждение больного считается бесполезным[6] и нежелательным, поскольку он может отнести разубеждающего к агентам «врагов». В особо тяжёлых случаях больной может представлять опасность, как для самого себя, так и для окружающих[3].
> Больные данной формой бреда не считают себя нездоровыми и теряют способность критически воспринимать свой бред.
> теряют способность критически воспринимать свой бред.
Чтобы спалось спокойнее, лучше буду и дальше продолжать отдавать предпочтение варианту, что я очень успешный псих, чем что всё это ну или хотя бы существенная часть правда.
https://groups.google.com/forum/#!topic/haskell-cafe/zmBFLFAOt3k
Аллилуя!
Я не о том, что можно просто взять и загуглить, это давно уже мной найдено и загуглено или гуглится и изучается. Я о другом, хотел спросить, о глобальной стратегии: как добиться успеха и начать писать полезные программы, учитывая что я студентоблядь без реального опыта в профессии
Освящаю тред
Stack - замена не cabal, а только cabal-install, причём сомнительная. Полезно, конечно, что ньюфаги, не знающие про 'cabal sandbox init' будут по-умолчанию получать аналогичное поведение, а не засирать глобальное пространство пакетов, но вся эта их идея со слепками проекций хакаджа - это дофига мейнтейнить, а очень негибко. Этот их LTS (Long Term Support) резолвер, ради которого всё и затевалось - нужен для такого кровавешего энтерпрайза, что я даже хз, пишет ли кто такое на хаскеле. С появлением сендбоксов в обычном кабале у меня исчезли какие-либо проблемы, и даже если какой-то пакет ломается, всё очень гибко, я легко могу его у себя развернуть, пофиксить, и установить в нужный сендбокс. В общем, не совсем понимаю, какие такие важные проблемы решает stack.
Тем не менее, со stack'ом вообще ничего не надо делать, а всё есть и просто работает. Так что не вижу причин использовать cabal-install вместо него.
Хаскелисты, как вы относитесь к тому, что в вашем языке принято такое дерьмовое именование? Вот есть языки в этом плане хорошие (C#, Scheme) и есть пиздец, как будто создатели говном на туалетной бумаге его писали (Python, C). Вы ведь тоже это чувствуете?
Проблема в том, что там очень мало пакетов. Про энтерпрайзный 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 чинить это надо будет примерно так же как с кабалом, но немножк по-своему.
Что именно там дерьмовое?
http://logicaltypes.blogspot.ru/2015/08/pure-functional-programming-claims-irl.html
Этот хуй реально на сктолько крут как он утверждает или это его больные фантазии?
Мандадки на (старой!) жабе выглядят фантазией человека, который не делал мандадок на жабе. Там такая срань получается, а её ёще и с абстракными фабриками надо как-то связывать. Хотя я не эксперт, может быть, у кого-то и получалось получше.
Для монады как для паттерна нужны всего лишь анонимные функции, которые на старой жабке делались через анонимные интерфейсы. Я делал list-монаду. Но вот с системой типов беда будет, это будет всего лишь паттерн.
Ну я и говорю. Получается такой код, что гораздо проще написать всё старыми добрыми if/while. И это при том, что я-то на шарпе пытался, где и лямбды короче и эктеншен-методы есть.
Если у тебя было лучше, можешь код вбросить на посмотреть?
>>531352
Монады приемлимо не делаются даже на скалке, хотя там и hkt есть, и имплиситами инстансы вбрасывать можно. На хаскеле уже более-менее, но хотелось бы ещё автолифтинга для трансформеров и синтаксического сахарка побольше.
Есть так называемый mtl-стайл, когда для монадических операций объявляются тайпклассы типа MonadState, MonadReader и тд, и если все функции писать полиморфно по этим тайпклассам, то лифтить на call-site действительно ненужно будет, только вот лифтинг этот надо будет писать на definition стороне, и каждая такая функция будет выглядтеть в духе yoba ... = lift $ ..., что не очень красиво, тк не факт что функция будет вызываться там, где этот lift реально нужен (а не будет просто лишним вызовом который ничего не делает). Плюс само наличие дополнительных тайпклассов для операций тоже не очень красиво, потому что хотелось бы иметь то же самое и без этого. Они получается чисто инфраструктурные для лифтинга, а не содержательные.
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), так что принципиально тут наверное ничего особого нет, но система типов не дает. Так вот - это блять вообще можно сделать в хачикле?
>>542664
"Изучая Haskell" хорошая книга, но она сложна для тех, кто только начинает.
"О Haskell по-человечески" годная книжка. Простая и приятная.
"Учебник по Haskell" Холомьёва очень хорош. Есть несколько глав по теории, поможет вникнуть в концепции.
А в "Изучая Haskell" много продвинутых тем, описания работы с библиотеками, куча расширений языка, так что если с Haskell'ем совсем не знаком, то можно только запутаться. Но она хороша если основы уже понимаешь и готов к практическому программированию.
Есть ещё книги Душкина, но кроме сборника эссе ничего не читал, поэтому рекомендовать не берусь.
Ещё есть 3-4 видео-курса на русском (compscicenter.ru, stepic.org), но там в основном обсуждается тема функционального программирования, так что полезность их относительна.
Опять же у Холомьёва есть несколько глав с понятным введением в теорию категорий.
Есть книжка - Маклейна С. "Категории для работающего математика"
Ещё в Питере проходили лекции по типу - https://vk.com/category_agile
Только раздел на викибукс, тайпкласопедию и haskell real world.
Всё остальное - говно для дебилов, монады в картинках и прочая хуйня для даунов, вместо нормальных категориальных определений.
> haskell
> теоркат
Nice meme. XDDDD
А если серьёзно, то хаскель содержит теоркат в следовых количествах, а сами хаскелисты теорката не знают.
На этом пока остановился, спасибо, аноны
Хаскель никому не интересен кроме тех самых джавамакак. Нормальные пацаны уже пару лет как перекатились на агду и идрис.
Сможешь хотя бы дать определение sink и source без гугла?
что бы у всех бомбило
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;
Помогите Антоши, надо сделать, а я кажется нихуя не понимаю.
Используй persistent
> SSSDDD
Ты тут алиас SD проебал. Должно быть SSSDDD SD.
Скрипт инсертит в таблицу результат селект-запроса.
Также некоторые столбцы в select-запросе названы не так как в источнике - надо переименовать, и двух столбцов не хватает - их я нуллами заполнил
http://pastebin.com/YdK3iRzf
>Первая теорема утверждает, что если формальная арифметика непротиворечива, то в ней существует невыводимая и неопровержимая формула.
>Вторая теорема утверждает, что если формальная арифметика непротиворечива, то в ней невыводима некоторая формула, содержательно утверждающая непротиворечивость этой арифметики.
применимы ли эти теоремы к языкам с зависимыми типами? да, я дурак
Рассуждал так:
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.
Задавайте ответы.
Рассуждал так:
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.
Задавайте ответы.
>И вот пишу уже почти год на Хаскеле SaaS с REST API
Ну т.е. примитивную CRUD аппликуху.
>А через пару месяцев возвращаюсь и делаю его в разы короче используя <$>, either, maybe, fmap, >>=.
А потом кто-то пытается разобраться в этих заклинаниях. Но так как опыта простого кода у него нет, он, тупой такой, не понимает этого и в уме восстанавливает старый код.
> Ну т.е. примитивную CRUD аппликуху
Платформа типа AppStore + Game Center.
> А потом кто-то пытается разобраться в этих заклинаниях.
Да какие там заклинания. Это же элементарно все. И потом есть git blame.
Разве сложно въехать что вместо:
f <- getFoo
return Yoba f
просто пишешь Yoba <$> getFoo
Спасибо, подрочил.
Зачем? Так получится длиннее, и нужно будет чистую функцию самостоятельно завернуть в монаду(liftm или return):
getFoo >>= return . Yoba
Т.к. >>= :: m a -> (a -> m b) -> m b
Монада же это тот же аппликативный функтор. Значит можно пользоваться <$> :: (a -> b) -> m a -> m b и достичь того же эффекта.
В этом диалоге весь хаскель. Примитивный CRUD. Вместо того, чтобы написать на пыхе return (new Yoba(foo)), и тест, имитирующий проверку типов, у нас, бляха-муха, аппликативные функторы (на самом деле простые функторы, потому что <$> - это fmap, а Applicative это <*>, но это еще добавляет пикантности в вопрос).
С fmap, конечно же, верное замечание.
Правда моего мнения не меняет. Зачем тратить время и писать эти тесты, лишний код который не несёт полезной нагрузки? Пишешь из года в год одно и тоже, так чего бы не прекратить повторяться.
Мне это напоминает отказ от vim потому что не осилил key bindings.
Лишний код - это <$> и прочее >>=, а здесь ты получаешь generic код, который покрыть тестами все равно надо. Будущее - за языками с JIT проверкой типов, типа Julia. Быстро, при желании типизация форсится до статической, при этом код универсален.
А я из года в год одно и то же не пишу, если мне что-то нужно, я лучше возьму готовое решение и допилю его.
> Лишний код - это <$> и прочее >>=, а здесь ты получаешь generic код, который покрыть тестами все равно надо.
Где тут generic code? Он очень даже concrete. Ты же комбинируешь функции с конкретными типами.
>> Будущее - за языками с JIT проверкой типов, типа Julia. Быстро, при желании типизация форсится до статической, при этом код универсален.
А что за проблема? Не пиши деклараций типов вообще. В Haskell они не обязательны :)
> А я из года в год одно и то же не пишу, если мне что-то нужно, я лучше возьму готовое решение и допилю его.
А как ты будешь допиливать? Все равно будет новый код, будет тот же самый boilerplate.
>>547256
А в чем прикол с CRUD? Проблема написать чтоли?
Или что-то ты не можешь написать на Haskell?
>А что за проблема? Не пиши деклараций типов вообще.
Проблема в том, например, что + - это a -> a -> a, что значит, что сложения по разнотипным объектам быть не может. А это, в свою очередь, значит, что модулю dimensional требуется или прятать плюс из прелюдии, или обзывать его .+ или еще как. Что значит, что полиморфный код и для интегеров, и для метров - невозможен. То есть текстом написать можно foo a b = a + b, только работать это не будет, потому что для разных call-tree потребуется разная сигнатура для foo. Это - ключевая проблема системы типов хаскеля, которая и заставляет засорять код всеми этими эскалаторами-элеваторами. И тут не важно, написал ли я сигнатуру, или нет.
Самое главное, что более простое решение Julia (в которой foo a b = a + b просто работает и все, точно так же, как в крестовых шаблонах), совершенно не затрагивает мозг, оно интуитивно понятно.
>А в чем прикол с CRUD? Проблема написать чтоли?
В том-то и дело, что CRUD - страшный примитив.
Про Julia понял. Спасибо. Однако это не фатальный недостаток :)
Вот c CRUDом не понимаю твоей боли. Чего тебе не хватает?
Кстати, я вот думал про напряг с со сложением.
Я думаю что если делать сигнатуру a -> b -> b или a -> b -> c, то это скроет детали приведения типов. Плюс осложнит type inference.
Будет как javascript.
А доставьте ту картинку, где таких действий дохера и к ним ещё комментарии приписаны. Картинка за авторством Qt-саже-петуха из ранних крестотредов.
Раньше гуглилось по "because fuck math", сейчас тоже должно.
что пост, что комментарии, прочел с удовольствием. В отличии от этого треда.
петушня, а вы за борщи пишете или есть профессионалы?
на хачкиле вообще сложно найти работу?
https://bitbucket.org/Majesty911/camreboot
Для меня важны Ваши замечания, дорогие друзья.
Вот тут есть работки:
https://angel.co/haskell/jobs
А вообще, я даже сисярпом-то денег не зарабатываю, а ты про хескиль
Зачем ты впариваешь человеку это говно под видом конфетки? Хаскель не может в виндовый гуй, и вообще никто, кроме самих MS, не может в виндовый гуй. Потому что он прогессирует быстрее, чем кто-либо успевает его изучать его и писать биндинги.
wxHaskell - это способ писать гуйню уровня windows 95 с 3-D кнопками. Да и не поддерживает его особо никто, поэтому не удивлюсь, если у авотра поста возникнет ональный гемморой жопы при попытке хотя бы его сбилдить. Другое дело, что если бы даже Хаскеле были все свистоперделки виндового GUI на уровне распоследнего сишарпа, среднестатистический школопрограммист не cмог бы ими воспользоваться как команды профессиональных дизайнеров и юзабильщиков в MS. Поэтому может быть и не проблема это вовсе?
Я вот вообще в Хаскеле консолькой балуюсь и мне для моих задач хватает. Потому что написание качественного GUI приложения требует на порядок больших трудозатрат, даже при наличии самых современных инструментов. А консолька под силу и программисту-одиночке. И вот тут Хаскель добавляет удобные принтеры и парсеры, чтобы программисту-одиночке консолька и текстовые файлы стали еще доступнее. В C# таких инструментов нет.
Поэтому если форсить Хаскель, то надо форсить его в том, в чем дествительно силён. Если одиночный программист-ресёчер или небольшая команда и могут что-то написать, то Хаскель предоставит им средства для усиления их эффективности. Если мы говорим об индустриальном GUI за 100500 тысяч долларов, в который вбухиваются зиллионы человеко-часов, причем даже не программитов, то какой-нибудь Microsoft Blend for Visual Studio наверняка более оптимизирован под эту задачу.
>Haskell в матмоделировании используется?
В матмоделировании чего? В матмоделированнии рулят инструменты матмоделирования, типа Маткада. Маткад теоретически можно переписать на Хаскеле, будет Маткад на Хаскелле. Не думаю, что ты, как пользователь, заметишь разницу. Я вот даже не знаю, на чём Маткад написан. Вдруг он вообще на Брейнфаке? Это вообще ебёт кого-нибудь, кроме его разработчиков?
>на хачкиле вообще сложно найти работу?
Если ты хуй простой - то сложно. Если ты Simon Marlow - то ты уже работаешь в Фейсбуке, пишешь статьи, и проблемы чернокожих тебя не волнуют.
Хуёвому программисту сложно найти хорошую работу. Хуёвому программисту легко найти хуёвую работу и на хуёвую работу легко подобрать хуёвого программиста. На хуёвую работу сложно нанять хорошего программиста (HR-ы постоянно жалуются, мол хорошего программиста хуй найдёшь... на хуёвую-то работу). А если ты хороший программист, а работу предлагают только хуёвую - тот тут вообще всё вдвойне сложнее, тут надо что-то преосмыслить, либо в плане твоей хуеватости, либо в плане несовершенства мира.
Проблемы реальные:
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. А вот их я не могу обозначить. Напишите мне, почему люди не используют Хаскель по своим соображениям.
Проблемы реальные:
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. А вот их я не могу обозначить. Напишите мне, почему люди не используют Хаскель по своим соображениям.
Кабалхелл от очень строгих ограничений по версиям по каждому пакажду, которые любят в конечном итоге образовывать неразрешимые кольца. Ну ещё ghc требует всегда пересобирать мир, стабильных аби там никогда не было и не будет. Так-то к самому кабалу никаких претензий.
>невозможно сделать каких-то выоводов о производельности функции по коду
Предполагается что ты не должен об этом думать, а должен сконцентрироваться на описании своей задачи, а компилятор всё сделает за тебя.
>почему люди не используют Хаскель
>Исправление одной ошибки - в среднем один день.
Сам-то как думаешь?
По поводу проблем вот тут уже все расписали
https://github.com/Gabriel439/post-rfc/blob/master/sotu.md
Покажите как то же самое сделать на хачкеле. С меня нихуя.
> Skills/experience:
> Strong experience developing with Haskell
ой сейчас ты соснешь....
Заметил лисп, просто в глаза долблюсь, простите
Ну же? Кто-нибудь? Или вы только факториалы умеете вычислять, а как только нужно с реальным миром общаться сразу в кусты?
>Нету нормального синтаксиса
не нужен
>для переменных
не нужны
>массивов
не нужны
>хешей
не нужны
>обьектных литералов
не нужны
>нету именованых параметров функций
не нужны
Конечно не нужны, но с ними удобнее же.
1. можно вычёркивать, Ребе благословил Stackage.
>>556780
>Кабалхелл от очень строгих ограничений по версиям по каждому пакажду
Не от этого, а от того, что кобол-инстолл пытается разрешать зависимости, основываясь на том, какие пакеты у тебя уже установлены. В итоге, результат работы кобол-инстола у всех будет разный (даже, блядь, в сендбоксе, или при добавлении каждой нововой зависимости надо сносить нахуй сендбокс и переустанавливать всё), в зависимости от того, что уже устанавливали и в каком порядке. Более того, при таком подходе может получиться, что задача доустановки каких-то пакетов вообще не имеет решения, при том, что в природе совместимый набор пакетов есть.
Стек использует фиксированные билд-планы, поэтому там такой проблемы нет - что сбилдилось однажды, то будет билдится всегда. Плюс всё сделано для людей - установка нужной версии компилятора, генерация дистрибутивов с исходниками (причем он может сам проставлять ограничения по версиям), генерация хаддоков, сборка, тестирование, бенчмарки - любое действие одной командой. Больше не надо трахаться под вендой со сборкой Network или думать об установке alex и happy, Стек просто работает. А глубина отсоса хиккующих любителей индус-триальной Джавы / просто скалаёбов-неудачников, качающих джарники с помоек вроде апача и трахающихся потом с настройкой мавена, теперь просто не умещается в человеческое воображение по причине пробития верхней границы кардинальных чисел.
Работая сисярп макакой решил окунуться в хаскелль, прочел книжку, посмотрел на хаскелльпроблемс, и теперь пробую написать какую-нибудь маленькую программку.
Но у меня проблема - я пишу так, как писал бы в ипмеративной дрисне, как пишу на работе. У меня не получается хаскелль-код. Что делать?
(И мб кому нехуй делать, может оставить скайп, чтобы помочь долбоёбу? Ну, чтобы я могу иногда спрашивать, как в хаскелле написать юнит-тест или получить текст с главной страницы сайта по названию сайта и т.п. хуйню)
Тратить время на то чтобы переписывать твой код нет смысла. Хочешь посмотреть как выглядит код? Вот тебе пачка туториалов:
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/
Код ничего не читает и не выводит. В силу ленивости эквивалентная программа на Haskell это main = return ()
Во первых это не мой код, а код из https://en.wikipedia.org/wiki/Practical_Common_Lisp
>>563364
>>563365
Блять, ну вы какие-то ебанутые. Вы про REPL не слышали? Евалишь файлик, получаешь маленькую интерактивную дб для мп3шек. Вся суть хачеобезьян, 70 строчек кода осилить не могут.
Нахуй мне переписывать код из твоей книжки. Сука вот охуел, давай я тебе на копипащу говна из книг а ты будешь переписывать?
Что и требовалось доказать. Только фаломорфировать на апликативные сфинктеры и можете. А как сделать что-то полезное, так "нахуй мне". Ясно-понятно.
Хочешь пользы - сделай сам. Хули 70 строчек. Можно обойтись одной IO. Ну или StateT IO.
Хочешь пользы - сделай сам. Хули 70 строчек. Можно обойтись одной IO. Ну или StateT IO.
Дохуя свободного времени? Прочти LYAH. Книга маленькая знаний хватит чтобы переписать этот код.
создай СО тред
>>563721
Вся суть. В лиспотреде хаскельную парашу переписали все кому не лень, а местные полуебки могут только кукарекать, но ни строчки кода написать не в состоянии.
Кстати, удивительное наблюдение. На то, чтобы вывести Хаскель в менстрим потребовалось 25 лет. 25 лет, Карл, на то, чтобы вывести новый язык в мейнстрим. "Что в нём удивительного?", усомнится незадачливый читатель - "Есть же примеры новых языков, которые взлетели довольно быстро, тот же Питон, например, просто Хаскель - тормоз, всякое бывает.." Нет, отвечу я, все эти новомодные свистоперделки, вроде всяких питонов растов го и даже, Г-ди прости, эм-эли - по сути рекомбинации синтаксического сахорочка и сервисов рантайма, в них нет принципиально новой™ парадигмы, нет своего вектора, нет кредо.
Языки с кредо я могу четко обозначить.
Это сишка. Кредо сишки в том, что платформозависимый ассемблер можно заменить языком более высокого уровня без привязки к платформе. Заменить жестко, бескомпромиссно. Одним ударом зактнуть глотки всем питушкам, кукарекающим про то, что высокоуровневый язык не может быть производительным и продиктовать новый стандарт в их курятнике. И сишка это сделала. Практически за 4 года. Сейчас, когда речь идёт о написании высокопроизводительного кода в условиях ограниченности ресурсов, когда речь идёт о системном программировании, прежде всего говорят о сишке. Ну или о сишке с ассемблерными вставками. Но не о ассемблере с сишными вставками. Ищут программистов на Си. Сишка была эволюционным шагом.
Следующий шаг - ОО-языки с мусоросборниками. Тут сложно выделить один язык, начинать можно со Смолтолка или Лиспа (хотя скобочное говно так и не вылилось во что-то значащее, да, лисперов можно считать первопроходцами мусоросборников и богатых рантаймов, но, скорее, на уровне идей и концепций), но я возьму Джаву как индустриальный стандарт - всё остальное - в той или иной мере клоны или языки со сходными парадигмами. Тут опять же был тот же курятник, только уже со стороны сишкоёбов, кукарекающий про то, что "интерпретаторам" нет места в промышленном программировании. Джава строго провела всем по губам и доказала обратное. На взлёт от скриптового языка для пультов телевизоров и каких-то тормозных сановских серверов до стандарта обработки BigData ей потребовалось лет 10, наверное.
Параллено с ней - взлёт PHP. Ну и прочих руби-питонов, которые, по сути, пригламуренные перлы на стероидах. Кредо этого говна, включая ноду, в том, что скрипты с низким порогом вхождения рулят в глубого информатизированной эпохе постмодернизма, где каждая кухарка может написать свой сайт и бибилотеку количественного анализа на NumPy. Им, наверное, столько же, сколько и Джаве потребовалось, чтобы занять свою нишу, просто они в ортогональной проскости работают.
Теперь Хаскель. Кредо Хаскеля в дисциплине типов и провозглашении структуризации программы через типизацию самостоятельной ценностью. Это рвёт жопы безтиповым питушкам примерно так же, как кроссархитертурная сишка порвала жопы асмоёбам, как языки с богатыми рантаймами порвали жопы сишникам, как скрипты порвали жопы "системным" программистам. Т.е. питушок с низшей ступени эту ценность не понимает, он кукарекает "ну нахуй мне мусоросборник, я же и так память освободить могу, а ваш мусоросборник жрёт системные ресурсы!", так же и слаботипизированный питушок кукарекает "ну нахуй мне реификация, она же отжирает ресурсы моего головного мозга на доказательство, а я и так знаю, что условие выполняется!" Суть одна, питушок с низшего уровня не понимает ценностей питука с более высокого уровня и сопротивляется им, а индустрия доказывает обратное. И опять же, как и с Джавой, Хаскель - всего лишь один из языков, реализующий эту парадигму, поэтому, возможно, следует не языки с кредо искать, а сами кредо. Тем не менее, для вывода Хаскеля в мейнстрим понадобилось 25 лет.
Итак, через сколько же лет наши потомки смогут похвастаться тем, что пишут на новом языке программирования? Увидим ли мы сами этот новый язык, и на что он будет похож? Есть ли сейчас новые идеи, которые вызревают, как мусоросборники во времена Лиспа, или type-driven programming?
Кстати, удивительное наблюдение. На то, чтобы вывести Хаскель в менстрим потребовалось 25 лет. 25 лет, Карл, на то, чтобы вывести новый язык в мейнстрим. "Что в нём удивительного?", усомнится незадачливый читатель - "Есть же примеры новых языков, которые взлетели довольно быстро, тот же Питон, например, просто Хаскель - тормоз, всякое бывает.." Нет, отвечу я, все эти новомодные свистоперделки, вроде всяких питонов растов го и даже, Г-ди прости, эм-эли - по сути рекомбинации синтаксического сахорочка и сервисов рантайма, в них нет принципиально новой™ парадигмы, нет своего вектора, нет кредо.
Языки с кредо я могу четко обозначить.
Это сишка. Кредо сишки в том, что платформозависимый ассемблер можно заменить языком более высокого уровня без привязки к платформе. Заменить жестко, бескомпромиссно. Одним ударом зактнуть глотки всем питушкам, кукарекающим про то, что высокоуровневый язык не может быть производительным и продиктовать новый стандарт в их курятнике. И сишка это сделала. Практически за 4 года. Сейчас, когда речь идёт о написании высокопроизводительного кода в условиях ограниченности ресурсов, когда речь идёт о системном программировании, прежде всего говорят о сишке. Ну или о сишке с ассемблерными вставками. Но не о ассемблере с сишными вставками. Ищут программистов на Си. Сишка была эволюционным шагом.
Следующий шаг - ОО-языки с мусоросборниками. Тут сложно выделить один язык, начинать можно со Смолтолка или Лиспа (хотя скобочное говно так и не вылилось во что-то значащее, да, лисперов можно считать первопроходцами мусоросборников и богатых рантаймов, но, скорее, на уровне идей и концепций), но я возьму Джаву как индустриальный стандарт - всё остальное - в той или иной мере клоны или языки со сходными парадигмами. Тут опять же был тот же курятник, только уже со стороны сишкоёбов, кукарекающий про то, что "интерпретаторам" нет места в промышленном программировании. Джава строго провела всем по губам и доказала обратное. На взлёт от скриптового языка для пультов телевизоров и каких-то тормозных сановских серверов до стандарта обработки BigData ей потребовалось лет 10, наверное.
Параллено с ней - взлёт PHP. Ну и прочих руби-питонов, которые, по сути, пригламуренные перлы на стероидах. Кредо этого говна, включая ноду, в том, что скрипты с низким порогом вхождения рулят в глубого информатизированной эпохе постмодернизма, где каждая кухарка может написать свой сайт и бибилотеку количественного анализа на NumPy. Им, наверное, столько же, сколько и Джаве потребовалось, чтобы занять свою нишу, просто они в ортогональной проскости работают.
Теперь Хаскель. Кредо Хаскеля в дисциплине типов и провозглашении структуризации программы через типизацию самостоятельной ценностью. Это рвёт жопы безтиповым питушкам примерно так же, как кроссархитертурная сишка порвала жопы асмоёбам, как языки с богатыми рантаймами порвали жопы сишникам, как скрипты порвали жопы "системным" программистам. Т.е. питушок с низшей ступени эту ценность не понимает, он кукарекает "ну нахуй мне мусоросборник, я же и так память освободить могу, а ваш мусоросборник жрёт системные ресурсы!", так же и слаботипизированный питушок кукарекает "ну нахуй мне реификация, она же отжирает ресурсы моего головного мозга на доказательство, а я и так знаю, что условие выполняется!" Суть одна, питушок с низшего уровня не понимает ценностей питука с более высокого уровня и сопротивляется им, а индустрия доказывает обратное. И опять же, как и с Джавой, Хаскель - всего лишь один из языков, реализующий эту парадигму, поэтому, возможно, следует не языки с кредо искать, а сами кредо. Тем не менее, для вывода Хаскеля в мейнстрим понадобилось 25 лет.
Итак, через сколько же лет наши потомки смогут похвастаться тем, что пишут на новом языке программирования? Увидим ли мы сами этот новый язык, и на что он будет похож? Есть ли сейчас новые идеи, которые вызревают, как мусоросборники во времена Лиспа, или type-driven programming?
>сделать что-то полезное
>разобраться в скобочном говне, переписать пример из задачника
>сделать что-то полезное
В чем польза то?
>>564021
>Вся суть.
Вся суть. Вся суть программы на Хаскеле в том, что она делает что-то в IO, имеет observable effect, а если observable effect она не имеет, то она нахуй не нужна, не вычисляется ввиду ленивости и вообще стирается оптимизатором. В этом вся суть хаскеллистов - они понимают, что есть код, который что-то делает и есть код, который нихуя не делает, и наблюдаемой разницы между двумя кодами, которые нихуя не делают, нет никакой, сколько бы строчек они не занимали. Поэтому хаскеллисты и не рвутся транслировать твой высер, ведь для них observable effect от этого действа будет нулевой. Это характерезует их maturity как программистов. Пока лиспошколота суетится паттернами в пустоту, подобно джаваархитегтогам, хаскельгоспода приближаются к более глубинному пониманию сути программирования.
Типичный комментарий человека, который не может в дискурс. Точнее, не просто не может, а хочет, но не может (ведь если бы просто не мог бы, то проигнорировал бы, а тут на лицо желание и фрустрация). Этакий недогуманитарий, заваливший экзамен по онтологии и диалектике и слепо кидающийся на всех теперь, кто эксперементирует с софизмам, ради речевой эстетики.
Владение дискурсом - это необходимое качество любого квалифицированного программиста, как человека, баллансирующего на тонкой грани математической лингвистики и лингвоматематики. Переводящего сугубо личные и неформальные пожелания клиента в домен ультрафинитизма (т.е. в даже гораздо более строгий, чем тот, которым оперируют "чистые" математики) и получающего за это деньги. Программист, который не может в дискурс - это неудавшийся математик, разорившийся аристократ в порту, который выглядит даже более нелепо, чем матрос на светском рауте.
Это был типичный комментарий человека, который называет говно - говном. Ты криптомарксист. Типа, есть первобытнообщинный строй, есть рабовладельческий строй (сишка), ну и так далее, в перед в светлое коммунистическое будущее (хаскель). Вокруг этого строится куча демагогии. А на деле - пшик и военный коммунизм в виде несчастного пердолинга стеками трансформеров. С марксистами не надо дискутировать, их надо пиздить. К сожалению, я не могу тебя отпиздить удаленно.
>Есть же примеры новых языков, которые взлетели довольно быстро
>тот же Питон
Ага, всего каких-то пятнадцать лет. Ну, по сравнению с хаскилем, может быть, это и быстро.
>И сишка это сделала. Практически за 4 года.
Ты нолик потерял. Правильно будет: "Практически за 40 с небольшим года".
Классический хаскель-тред ))
>Одним ударом зактнуть глотки всем питушкам, кукарекающим про то, что высокоуровневый язык не может быть производительным и продиктовать новый стандарт в их курятнике. И сишка это сделала. Практически за 4 года.
Вроде оптимизатора под итаниум то ли долго не было, то ли до сих пор нет. Кстати, никто не в курсе? Ведь если под него генерить оптимальный код, он же всех порвёт?
Собственно, я знаю язык как вот этот придурок >>572596 поэтому вопрос: что лучше использовать? repa сойдет?
Мой высер, и высер на который я отвечал быстро и уверенно были уделены с трупа этого треда. Моча - соси мой хуй, ты моя сука.
>Наверное можно аппарат топологии применять для исследования в теории чисел(или как-то так) но у этих веток разные аппараты.
Идели/адели. Не говоря уже об этальных когомологиях и прочем. В общем, уже сотню лет как топология в тч один из главных аппаратов. И вообще числа = узлы
https://github.com/ghc/ghc/commit/46a03fbec6a02761db079d1746532565f34c340f
Это ещё один шаг на пути к энтерпрайзу.
С разморозкой.
>>582732
Вернувшись с войны, Андрей стал искать работу. Сначала устроился охранником в Сильпо, но быстро осознал, что зарплаты хватает только на еду. Возможно, если бы он мог позволить себе роман с какой-нибудь Галей, все сложилось бы иначе. Андрей вернулся к изучению программирования, стал пропадать на широко известных в узких кругах форумах, допоздна обсуждая анафорические и пандорические макросы, хуки компилятора и хаер-кайндед типы. Вскоре он устроился программистом-стажером в одну из крупных аутсорс компаний.
Шли годы. Андрей продвигался по служебной лестнице. Теория языков программирования стала его страстью. Он съехал от родителей, стал собирать кластер для исследований метапарадигм программирования. Неудовлетворенный уровнем зарплаты, Андрей меняет работу.
Здесь судьба вводит в жизнь Андрея и наше повествование нового героя: Фридриха. Фридрих, являясь человеком решительным и волевым, занимает должность начальника Андрея. Он прекрасно может заставить работать даже ленивого негра и своей выгоды ни за что не упустит, однако страдает от ригидности ума и отсутствия чувства такта. У протагониста случается конфликт с Фридрихом на почве использования прогрессивного языка программирования в проекте. Разум Андрея, поврежденный войной и шок-контентом в интернете, не выдерживает и у Андрея возникает синдром хронической усталости.
В Киеве ноябрь. Последние листы, уже не такие яркие, но блестящие от дождя, еще висят на деревьях и пахнут, а ветер перемешивает их ароматы с запахами дождя и выхлопных труб. Андрей, невыспавшись, собирается на работу. Позавтракав чаем на кухне, бросает взгляд на столовые приборы и апельсин. Ему остаётся способ один: папин подарок – РАЗДЕЛОЧНЫЙ НОЖ. ЕСЛИ НЕЛЬЗЯ ПО ДРУГОМУ — ТО ЧТО Ж... ФРИДРИХ!!!
Вернувшись с войны, Андрей стал искать работу. Сначала устроился охранником в Сильпо, но быстро осознал, что зарплаты хватает только на еду. Возможно, если бы он мог позволить себе роман с какой-нибудь Галей, все сложилось бы иначе. Андрей вернулся к изучению программирования, стал пропадать на широко известных в узких кругах форумах, допоздна обсуждая анафорические и пандорические макросы, хуки компилятора и хаер-кайндед типы. Вскоре он устроился программистом-стажером в одну из крупных аутсорс компаний.
Шли годы. Андрей продвигался по служебной лестнице. Теория языков программирования стала его страстью. Он съехал от родителей, стал собирать кластер для исследований метапарадигм программирования. Неудовлетворенный уровнем зарплаты, Андрей меняет работу.
Здесь судьба вводит в жизнь Андрея и наше повествование нового героя: Фридриха. Фридрих, являясь человеком решительным и волевым, занимает должность начальника Андрея. Он прекрасно может заставить работать даже ленивого негра и своей выгоды ни за что не упустит, однако страдает от ригидности ума и отсутствия чувства такта. У протагониста случается конфликт с Фридрихом на почве использования прогрессивного языка программирования в проекте. Разум Андрея, поврежденный войной и шок-контентом в интернете, не выдерживает и у Андрея возникает синдром хронической усталости.
В Киеве ноябрь. Последние листы, уже не такие яркие, но блестящие от дождя, еще висят на деревьях и пахнут, а ветер перемешивает их ароматы с запахами дождя и выхлопных труб. Андрей, невыспавшись, собирается на работу. Позавтракав чаем на кухне, бросает взгляд на столовые приборы и апельсин. Ему остаётся способ один: папин подарок – РАЗДЕЛОЧНЫЙ НОЖ. ЕСЛИ НЕЛЬЗЯ ПО ДРУГОМУ — ТО ЧТО Ж... ФРИДРИХ!!!
неблохая фабула.
Откуда такие подробности? На ксорче только сам факт поимки описывался. После слышал разве, что кластер отбили при задержании, в тюрячке теперь по массивам небось раскладывает. С nokia-2323c-2 хошь-не-хошь - экономить надо.
Только быдло моет руки ради чистоты, элита же делает это из естественного любопытства и просто ради удовольствия. Вот взять, к примеру, меня. Начнём с простого. Сходив пописять, я мою руки. Сходив покакать, я мою руки. Дёрнус пинус, я мою руки. Дёрнув анус, я мою руки. Перед едой и после еды я мою руки. Во время готовки, как правило, я мою руки несколько раз. Это доступно каждому, но я не упускаю и другие возможности. В университете, на перерывах, студенты хотят развеяться: кто-то идёт в буфет, кто-то - в туалет передёрнуть, а я мою руки. В офисе тоже: коллеги идут на перекур, а я - за чаем. Коллеги - за кофе, а я мою руки. Во Франции бомбануло, а я мою руки. Bend over and I'll show ya more, you rookie!
Брофист. Тож люблю навернуть мыльца.
это тут при чем?
На самом деле пыхоскобочный петух пытался вас подловить на отсутствии макросов. Собственно этот пример ничем не отличается от школьной задачки из учебника, кроме того, что имеет некое подобие языка запросов. К сожалению пыхоскобочный петух не знает, что в языке с каррированием и нормальным порядком редукции, предикаты пишутся ничуть не сложнее.
https://clojuredocs.org/clojure.core/assoc-in
https://en.wikipedia.org/wiki/User:MikeDunlavey/Difex_Article
http://stackoverflow.com/a/489936/1203558
http://stackoverflow.com/a/24875909/1203558
Упражнение для хаскелистов: завернуть в монаду.
Корреляции не замечаешь? Маргинальные языки только таких же к себе и привлекают, оттуда же и пониёбство. Тут как-то анон вкидывал видео с конфы, рекомендую:
http://ruhaskell.org/posts/talks/2015/06/21/cloud-haskell.html
Посмотри оп-пики пхы-треда. Там тоже онемешнеки сидят, если ты понимаешь о чём я.
niet
Ну смотря с чем сравнивать и как. Если есть время и деньги, я, конечно, выберу си плас плас.
Ещё немного этих мягких французских булок. Не уверен, правда, что идиоматично использовать самопереход таким образом. А чё там в хаскеле, есть чё? На крестах вон 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/
ты похоже дурачок. в хаскеле такие вещи есть из коробки, без всяких MSM и костылей. Твой control-flow-as-data, как ты его реализовал - просто костыль ввиду ущербности языка.
Из коробки ты можешь разве что пытаться описывать вручную какие-нибудь '(Trigger, State) -> IO State', но быстро запутаешься, да и неудобно самому State жонглировать (отчасти, ради того эксплицитные стейт-машины и нужны, чтобы взять на себя целиком это жонглирование). Возможно, это сносно заворачивается в StateT/IO, но надо реализовывать и смотреть. Здесь у меня есть _stateMachine.Fire(Trigger.Yoba), в хаскеле будет что-то типа 'fire :: Trigger -> StateMachineT Trigger State m State'.
подожди, ghc компилирует прост
Всё гораздо банальней. Бизнесу и промышленной разработке похуй на все эти абстрактные сферы.
Pure c взлетел потому что он частично решил проблему с еблей с asm. Плюсы взлетели ибо можно пилить абстракции. Php взлетел просто потому, что он позволял почти из коробки родить web страницу. Js тоже самое, только в браузере. Java взлетела когда на неё подсел интырпрайз, потому что альтернативы тупо не было.
Не следует путать - пользуются потому что нет выхода и пользуются потому, что язык лучше. Многие из вышеперечисленных языков особенно на начальных этапах развития - ещё тот понос с тьмой проблем. Но под них пилились фреймворки, стандарты, они при своей кривизне являют собой функционирующие организмы.
Чтобы хаскель стал заметно эксплуатируемым промышленным стандартом, он должен решать проблемы лучше и быстрее(включая время обученения). А для этого нужны хотя бы фреймворки, хотя бы на уровне спринга/ee, symphony, gorilla, boost, expressjs итд в зависимости от области задач плюс устаканившиеся паттерны(чтобы 10 разработчиков не пилило свою инвалидную коляску для решения очередной рутинной задачи) плюс решение проблемы с кабалом. Компания же глубоко насрать по какой причине проект перестал компилироваться, причём вполне обоснованно
> А для этого нужны хотя бы фреймворки, хотя бы на уровне спринга/ee, symphony, gorilla, boost, expressjs
Из перечисленного тобой что-то более-менее ориентированное на решение конкретных задач, а не на героические скачки по граблям на костылях - это веб-фреймворки. В Хаскелле они, внезапно, есть. Только вот кто будет затевать разработку интернет-магазина на Хаскелле, если его можно заказать на фриланс.ру за 200 долларов с дизайном?
>плюс решение проблемы с кабалом
Поставьте себе уже Стек, уёбок. Ничего не делаешь, а всё есть, поставь Стек, сука.
>Только вот кто будет затевать разработку интернет-магазина на Хаскелле, если его можно заказать на фриланс.ру за 200 долларов с дизайном?
Я бы заказал, если бы это стоило на хаскелле 200 долларов с дизайном. Только это будет стоить в 20 раз дороже при худшем качестве.
> В Хаскелле они, внезапно, есть.
Только толку от них нет. Большая часть вообще говно, есть несколько интересных экспериментальных с вещами типа роутов на тайплевеле, но всем этим пользоваться нормально нельзя, потому что в каждом вызове эффекты перепаковывать придётся, и лучше уж пхп взять.
Я имел в виду не конкретный фреймворк в плане его назначения, а простота его использования и решение им рутинных проблем. Интуитивно мне нравится хаскель(может потому, что я его не юзал в боевых проектах), но чувствуется нехватка разработчиков у языка.
Потенциально фп более выгодно для многих задач(в том числе и для веб сервисов), более красиво. Но без аналога спринга/ee стоимость запила стремительно растёт=бизнесу не нужно=меньше промышленной разработки=меньше желающих запилить фреймворк и стандартизировать в рамках него типовое приложение.
Я финансовым софтом занимаюсь, в интернет-магазинах не шарю. Найди себе специалиста под задачу.
>>592290
Попизди мне тут, я тебя, мудозвона, уже запомнил.
>>592245
Кстати, вот этот >>592290 обмудок тебе наверняка согласится интернет-магазин писать. Сразу в нём видно диванного специалиста по всем вопросам.
>>592855
>простота его использования и решение им рутинных проблем
Хаскель проще в использовании, чем Скала, или, Б-же упаси, Сишарп/Джава. И инфраструктура у него проще и эффективнее. И работает, блядь, быстрее, у меня ноут - полупланшет lenovo yoga, у меня ентерпрайзговно тупо всю память выжирает, поэтому производительность для меня - очень приятное дополнение Я на собственном опыте замечаю, что какой-нибудь подвыперднутый алгоритм мне проще сначала написать на Хаскеле, а потом транслировать на Скалу более частный его случай.
Короче такой положняк: для ресёча - Хаскель, Скала - это что-то среднее, вроде поресёчить можно, но уже не так удобно, а Джавы/Шарпы годятся только для того, чтобы писать по готовым спецификациям, когда всё от и до известно.
>Но без аналога спринга/ee
Да ты ебанутый какой-то. Понимаю, привел бы какую-нибудь конкретную библиотеку для решения конкретных задач, аналога которой в Хаскеле нет. А Спринг - это ёбаный костыль, который и в Джаве-то не особо нужен, не то что в Хаскеле. Какие конкретно задачи решает Спринг? Эээ.. ммм.. ну это.. типо ёба энтерпрайз.. хуё моё.. ну Спринг же..
>Я финансовым софтом занимаюсь, в интернет-магазинах не шарю.
О том и речь. "Только это будет стоить в 20 раз дороже при худшем качестве.". При этом будет еще куча пафосного пиздабольства от скриптовика-затейника.
>О том и речь.
Нет, чувак. "Только это будет стоить в 20 раз дороже при худшем качестве." - это всё твоё высосанное из двадцать первого пальца пиздобольство. Я вот могу только за своё качество ответить, и в своей предметной области, потому что я в ней разбираюсь. А ты пиздишь за то, в чем не разбираешься, поэтому даже уринировать тебя - слишком четь большая будет.
Нахуй иди.
>не подходит для веба
>ну, я веб не пишу - не разбираюсь
>я и говорю, не подходит для веба
>дебил, пиздишь, не понимаешь нихуя, хаскель из лав, хаскиль из лайф, даже обоссывать не буду
Вся суть хаскилистов.
Вот и ответь за качество, обмудок. В своей блядской предметной области.
Чем эта твоя мозгосносящая хуита с $!$* и монадами лучше явы, моно или плюсов для финансового софта?
Всем.
>Нихуя не знаю Хаскель
>Спиздану-ка, что он не подходит для веба, вдруг поверят.
Чем различаются уёбок, теоретик и практикующий программист?
Уёбок: Хаскель не подходит для веба!!!1
Теоретик: По моему икспертному и охуенно авторитетному мнению Хаскель подходит/не подходит для веба потому что обладает следующими свойствами, из которых следует что...
Практикующий программист: Я использовал/не использовал Хаскель для веба, столкнулся/не столкнулся со следующими проблемами, поэтому для моих задач Хаскель подошел/не подошел.
Сам себя в нужную группу впиши.
> Чем эта твоя мозгосносящая хуита с $!$* и монадами лучше явы, моно или плюсов для финансового софта?
Тем, что позволяет заманить на эту работу любителей таких языков. Так-то финансовую парашу писать вряд ли кого тянет, и даже зарплатой мало кого в это затащишь, вот и приходится прибегать к тяжёлой ментальной артилерии.
>Так-то финансовую парашу писать вряд ли кого тянет
Финансовая параша - это один из наиболее простых видов матана. Там ничего сложнее Блэка-Шоулза нет, т.е. финансовая математика - это детский сад по сравнению с физиками-теоретиками, например, это уровень первого-второго курса любого математического университета. С другой стороны, по сравнению с паттерными джавадебилами и лисперами-недоучками, любой хаскеллист-финансит, это Лобачевский, можно сказать.
Матан, как и хаскель - это инструмент. Радость матану - это явление аналогичное радости хаскелю. Речь как раз о том, что это ещё и способ заманивать на работу людей, которые так увлечены инструментами, что сами задачи для них вторичны. Не то, чтобы что-то плохое, просто факт. На деньги, в принципе, тоже ведутся, но эти, в отличии от, не будут испытывать какого-то особого маниакального интереса к проекту, потому такие кадры вторые по приоритетности. А людей, которые могут увлекаться инструментом ради инструмента, на самом деле немного, и это явление в человеке, если постараться, можно убить, и превратить его в практика, который и пальцем не пошевелит, если не получит стопицот нефти компенсации, и только лишь в том случае, если проект реально полезный, важный, интересный, и просто субъективно вызывает удовольствие как продукт.
> способ заманивать на работу
Ах да, ещё яркий пример - нынешний форс "дата-сцайнса", за которым скрывается ребрендинг корпоративного BI.
> нынешний форс "дата-сцайнса", за которым скрывается ребрендинг корпоративного 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.
Хаксель благодаря функциональной чистоте и развитой библиотеке имеет убийственное преимущество в параллельных вычислениях, которые сейчас в моде, намного больше чем Erlang. Странно, что он ещё не стал там мейнстримом.
Ты ничего не путаешь? Параллельные вычисления - это низкоуровневый дроч GPGPU и вряд ли хаскелю есть что предложить в этой нише. Может ты имел в виду конкурентность, раз Erlang приплёл, ну так есть же Cloud Haskell. Но да, он тоже никому не нужен, потому что сырой, всякие спарки/параллельные монадки - неудобны в использовании, да и в таких проектах платформа без вменяемых средств интроспекции и хот-релоада всего что движется - не нужна.
Чем различаются уёбок, теоретик и практикующий программист?
Уёбок: Я не пользовался и не знаю, но хаскель подходит для веба!!!1 Хаскель крут, а ты пиздишь за то, в чем не разбираешься, поэтому даже уринировать тебя - слишком честь большая будет.
Теоретик: По моему икспертному и охуенно авторитетному мнению Хаскель подходит/не подходит для веба потому что обладает следующими свойствами, из которых следует что...
Практикующий программист: Я использовал/не использовал Хаскель для веба, столкнулся/не столкнулся со следующими проблемами, поэтому для моих задач Хаскель подошел/не подошел.
Сам себя в нужную группу впиши.
По идее на хаскеле можно было бы разработать DSL для GPGPU дроча. Проблема в том, что Theano почему-то все равно написали на питоне.
Не доёбывайся до меня с терминологией, если на то пошло, то это называется - распределённые вычисления. У вас я видел это называется Pure Parallelism.
>хот-релоада
резонно
P.S.: Я не хаскелист.
> и вряд ли хаскелю есть что предложить в этой нише
Диванная икспертиза засчитана: https://hackage.haskell.org/package/repa
> Но да, он тоже никому не нужен, потому что сырой
Сырые у тебя только штанишки. Любой продукт из "сырого" в "не сырой" выводится за полгода силами одной компании, стоит только пару проектов на нём сделать. Так было с той же Аккой и Эрлангом. Только вот сделать Акку и Эрланг не "сырыми" даже еще сложнее, потому что говно бай дизайн. Но нет, тупые уёбки вроде тебя будут говорить, "мы лучше будем страдать хуйнёй и в очередной раз простреливать себе ногу на Акке, чем возьмём Хаскель, ведь он сырой!" Дебилы блядь.
>Так было с той же Аккой и Эрлангом
Не знаю на счёт Акки, а Эрланг из сырого в несырой переходил в течение 10 лет усилиями крупной компании, а потом ещё несколько лет и целого комьюнити. И это в рамках узкоспециализированного язычка и платформы.
А под сыростью я подразумеваю всего лишь, что клауд хаскель не продакшн-реади, т.е. ведёт себя нестабильно и хуй знает как решать его постоянные проблемы. Бизнес такое не любит, поэтому всем похуй на его богатый внутренний мир.
А для души есть около 50 конкурентных академ языков: на пи-исчислении, на CSP, на алгебре Клини, на темпоральной логике и ещё хуй знает на чём. Клауд хаскель ничего нового в принципе не вносит, так что он не нужен не только бизнесу, ни и обычным нердам.
>хуй знает как решать его постоянные проблемы
Перечисли несколько. И заодно расскажи, как они решаются в продашн-реади системах.
Это хвостовая рекурсивная реализация факториала, тут будет применен 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)
Выделяется непрерывный кусок памяти из n+1 идущих подряд интов. Каждый инт занимает определенное системой количество байт.
Эпичный дебил выделять память в куче учитывая размер int. Вся суть байтоебков.
В чём юмор, зачем массив? В хаскеле здесь ничего не аллоцируется, если что.
https://ideone.com/KBLqyu
Почти дочитал learn you a haskell, параллельно учу скалу, угарел по ФП, в общем. Покидайте, пожалуйста, эталонных (или просто хороших, по мнению анона) хаскел/скала проектов на гитхабе, чтобы прям смотреть, вникать и учиться хорошему коду.
https://ideone.com/G3Wo3F
Какое чудо, спасибо, анон.
Кстати, вот смотрю scotty -- весь фреймворк умещается всего в 19 файлах, тогда как в Синатре файлов в три раза больше (хотя казалось бы Руби тоже очень фичастый и всё такое). Это особенности хаскелевой декомпозиции или он реально настолько меньше строчек требует?
Это не борщ.
Да, наверное ты прав, я даже не вглядывался в файлы.
вот единственно верный функциональный борщ на облачных монадах
https://gist.github.com/lenadroid/abb3a9e0f1957e19589e
Haskell:
http://hackage.haskell.org/package/profunctors
http://hackage.haskell.org/package/kan-extensions
http://hackage.haskell.org/package/contravariant
http://hackage.haskell.org/package/machines
http://lens.github.io/
http://hackage.haskell.org/package/free
http://hackage.haskell.org/package/ad
Scala:
https://github.com/scalaz/scalaz/blob/series/7.3.x/core/src/main/scala/scalaz/Unapply.scala#L128
Можно более-мене понятный кусок кода, где используется чтение файла кусками с помощью кодуита или пайпс?
Вообще, это чтобы csv парсер написать, но я что-то не догнал примеры их использования, которые в статьях приводили.
Если ты неосилил сам разобраться с этим, ты неосилишь ими пользоваться, потому что там на каждом шагу тонкости такой же или большей сложности. Если бы ты осилил это сам, ты бы осознал, какое они говно, и либо переключился бы на разработку очередной альтернативы, либо дропнул хаскель.
Этот кукаретик неосилил также
Бампецкий
PS2: Тот же Haskell интересен именно как набор довольно большого количества еще не переваренных индустрией идей. Когда я говорил что в области дизайна FPGA есть смысл на него посмотреть я ни разу не имел в виду, "это надо писать на Haskell" - я имел в виду то, что довольно многие идеи, реализованные в Haskell могут быть уместны и полезны в этой области. Не потому что "ФП универсальный рулез", а потому что специфика задачи такова, что довольно много проблем родственных тем, которые возникают при попытке создания языка программирования без неявных побочных эффектов.
И да - все практически идеи связанные с тем, что сейчас называется ФП не имеют отношения "к лиспу". Общее там скорее название, да некоторые смутные мечты создателей Лиспа, которые тогда не были реализованы даже примерно - если искать предшественников то это скорее APL и бэкусовский FL.
Типичный прогноз методом прикладывания линейки. Типа "ФП - это как ООП 30 лет назад". Ну ты и говноед.
1. Откуда вообще появилось принципиальное деление на константу и псевдоним? Видно, что это фундаментальное ограничение. Так что за этим стоит?
2. Почему тип выражения `s` может вообще измениться?
3. Можно ли здесь заменить тип на класс типов?
2. Что ещё за ограничение мономорфизамасам читай Маклейна? Здесь только его ограничения или и сам мономорфизм? Что является объектами в категории этого мономорфизма?
2. Откуда появляется условие на определение типа константы? Не слишком ли сильное ограничение? Не достатоноч ли просто требовани выводимости?
Генерация всех возможных расстановок знаков арифметических операций и скобок в заданном шестизначном числе так, чтобы результатом полученного выражения было число 100.
Пожалуйста. Да хз. hoogle для поиска, typeclassopedia, ruhaskellbook, learn you a haskell. Про монады в основном читать надо. Если конкретные вопросы, спрашивай здесь.
>Если конкретные вопросы, спрашивай здесь.
Конкретных вопросов нет, но, если не сложно, можешь закомментить строчки в коде?
Нет
У меня есть List constructor типа
[megaFunc(elem) | elem <- elements]
megaFunc работает достаточно долго. Как мне это распараллелить? Т.е. куда запихнуть rpar/rseq и т.д.
>>603545
Сорри, там лишь частичное решение было, которое не учитывало возможность перестановки скобок. Вот полное. Не поздно, надеюсь?
http://pastebin.com/8Pn7F4wz
Твой конструктор эквивалентен map megaFunc elements
http://stackoverflow.com/questions/5606165/parallel-map-in-haskell
Спасибо еще раз, не поздно.
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"]
Штиль
Поясните за Haskell?
Для чего его юзают какие-то крупные предприятия и корпорации?
Т.е., если я его выучу и пойду на работу, что я на нём буду писать? И насколько он сложный в освоении?
>>606462
Раз такая пьянка, то расскажите, чем сейчас теоретическая информатика и теория вычислений живут.
С таким подходом ты только в бодишопе сможешь найти работу.
Почему левая свертка не применима к бесконечным спискам?
Потому что для получения результата надо вычислить f ( ... (f (f (f z x1) x2) x3) ...) xn, т.е. дойти до конца списка.
Нe да, это очевидно. Менее очевидно для меня то, почему правая свертка применима.
Не могу разобраться в этом примере:
foldr (&&) True (repeat False)
и
foldl (&&) True (repeat False)
Почему в случае левой свертки не произойдет то же самое, что и в случае правой, а именно почему мы сразу не получим в логическом И отрицание и на этом все не остановиться? Правая свертка сразу выкидывает False, а левая продолжает идти по списку?
Это называется short-circuiting логических операторов: увидев где-то false, оператор && не вычисляет остальные части выражения. Это ещё со времён Си пошло. О БОЖЕ В СИ ЕСТЬ ЛИНИВОСТЬ КАК В ХАЧКИЛЕ!!!
Да эт понятно. Мне непонятно то, почему в правой свертке это работает, но в левой не работает.
Потому что
foldr (&&) True (repeat False) = False && ...
- сразу шортциркутится
foldl (&&) True (repeat False) = ((((True && False) && False) && False) && ... )
- пытается вычислить самую внешнуюю и верхнюю форму, но список бесконечный и потому вообще зависает нахуй
А, понял.
Ну в левой свёртке он просто начинает сворачивать с конца. То есть сначала последний с предпослендим, потом результат с пред-предпоследним и так далее.
Вот он и зависает в поисках последнего.
>Менее очевидно для меня то, почему правая свертка применима.
Потому что правая свёртка сразу возвращает результат:
Правая свёртка: 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 - ленивая по аргументам.
>Как вы в целом избегаете space leaks?
Прописываю -rtsopts "-with-rtsopts=M2G" в кабале, это не даёт программе выжирать больше 2G. Если вдруг выжирает, значит действительно есть какой-то косяк. На моей памяти один раз такое было, когда в Criterion вычислял NF от результата функции, не учтя тот факт, что там будут все решения, количество которых растёт как степенная функция, ослабил до WHNF.
>куда ещё воткнуть seq?
Если ты откроешь код каких-нибудь либ на Хаскеле, то seq почти не встретишь.
>Как избегаете бесконечных циклов?
Так же как и в остальных ЯП.
Да, я вот в целом тоже потом подумал, всё это не так часто встречается на самом деле. А если не мудрить свои контейнеры данных на каждый чих, то вполне можно жить.
>Функач
пошел нахуй
>дебил
пошел нахуй
>пику
сходи уже нахуй, блять
>тупые вопросы тупого выпиздня
блять, ты доебал
> Как избегаете бесконечных циклов?
Лучший способ — явно различать данные и коданные. Жаль, хаскель не умеет.
Можешь начать с теории групп, она с одной стороны абстрактна, а с другой — не совсем.
Вот годная книжка: http://ipfs.io/ipfs/QmS8BCuX4qKqJzDdF54Tg8sEWPQDcBVBZabuWzRJUB5BnP
Вот я хочу посчитать какую-то функцию, я пишу
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 работает в данном случае нормально? Как короче это лучше сделать?
seq здесь совсем не нужен, компилятор сам догадается если ты просто выпишешь выражение в where. Более того, он может теоретически даже кешировать результаты чистых функций в рантайме, но это всё опять же под капотом и в коде программы этого быть не должно.
seq нужен только чтобы побороть пожирание памяти огромными невычисленными из-за ленивости выражениями.
Круто, спасибо!
А правда ли, что то, что все посчитается, гарантируется компилятором вот всегда? И считаться будет до WHNF же?
1. Дан двумерный массив, известно, что среди его элементов два и только два равны между собой. Напечатать их индексы.
2. Дан двумерный массив. В каждой строке находится минимальный элемент, затем среди этих чисел выбирается максимальное. Напечатать номер строки массива, в которой расположено выбранное число.
Рантайм может отбрасывать ненужные части выражений, ускоряя программы. Это возможно благодаря функциональной чистоте. Результат от этого не страдает никак.
Все эти заморочки со стратегий вычислений можно особенно в голову не вгружать. Всё равно большая часть всего что пишут про WHNF и прочее - близкие к истине догадки, в живом гохацэ всё обязательно будет несколько иначе.
Единственное это тот самый seq, позволяющий по сути ограничить неограниченную ленивость. Например, в том же fold, мы обязательно проходим по всем элементам вычисляя их значения, поэтому нет смысла (а иногда и вредно по расходу памяти) лениво откладывать вычисления до последнего. По большому счёту это недостаток компилятора, в идеале он сам должен догадываться где это нужно, но иногда у него не выходит и нужно подсказывать.
Вот каким образом развратник приступил к омерзительной операции. Его окружили четверо хачкель-петухов: один держал наготове большой ночной горшок, второй взял зажженную свечу и подставил ее поближе к анусу, чтобы было лучше видно происходящее, третий сосал ему член, четвертый, перекинув через руку белоснежное полотенце, целовал Стасика в губы. Тот, опершись еще на двоих педерастов, поднатужился, и как только появилось невероятное количество дерьма, которое обыкновенно и регулярно выдавал хозяин параши, учитывая страшное количество поглощаемого им борща, тот петух, что держал горшок, принялся восхвалять экскременты. «Какое прекрасное дерьмо! — восклицал он. — Ах, господин мой, какое превосходное хачкель-говно! Как красиво вы испражняетесь». Когда дифирамбы закончились, педераст, вооруженный салфеткой, языком очистил преддверие ануса, а горшечник подставил содержимое горшка под нос Стасику и опять громогласно восхвалял его. После этого мощная струя мочи ударила в рот сосателю, который тут же проглотил всю жидкость, полотенце завершило то, что не мог сделать язык, и четверо петухов, оставшись без дела, долго сосали поочередно язык, фаллос и задний проход распутника.
Слабо. СТРАУСТРУП был круче.
на нем классно писать приложения!
учиться надо было и думать мозгами...
По твоему совету прошел курс от О'Дерски по Скале. Стал подворачивать штаны, есть маффины и запивать смуззи.
Как мне теперь всё вернуть обратно?!
Я по твоей мамке угораю. Вчера она хорошо выдала.
Это не теория категорий. Теория категорий - пикрелейтед.
И ещё, какие есть способы инкапсуляции побочных эффектов помимо монад?
>Какие идеи, как реализовать?
Глава про FFI в real world haskell
>И ещё, какие есть способы инкапсуляции побочных эффектов помимо монад?
https://ru.wikipedia.org/wiki/Clean
Спасибо
Глядишь, так и инфраструктура наконец появится.
Вообще-то в Хаскеле одна из лучших документаций. Вернее самая лучшая. Когда после Хаскеля надо что-то нагуглить по той же джаве или скале, просто удивляешься, что энтерпрайзом является вот эта невнятная параша, вернее начинаешь думать, что бардак и отсутсвие внятной и удобной документации и есть один из признаков "промышленных" языков.
> Вообще-то в Хаскеле одна из лучших документаций. Вернее самая лучшая.
Без поиска (inb4: hoogle) и навигации, ага.
В том же расте намного лучше всё сделали.
Все проще. Монада применяет функцию к (упакованному) значению, возвращая упакованное значение (значение + контекст).
Вот, буквать с картинками с швабры: https://habrahabr.ru/post/183150/
>Монада применяет функцию к (упакованному) значению, возвращая упакованное значение
На самом деле, тут обсёр, и упакованное значение возвращает функция, которая о мандадках и знать-то не должна была. Да, лучше не сделать, но обсёра это не отменяет.
Что мы предлагаем? Мы предлагаем вам присоединится к нам в качестве ассистента или младшего научного сотрудника. Все публикации, авторские права остаются за вами, никакого 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
Что мы предлагаем? Мы предлагаем вам присоединится к нам в качестве ассистента или младшего научного сотрудника. Все публикации, авторские права остаются за вами, никакого 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
Чтобы что-то подобное мутить, нужно работать по совместительству в ВУЗе, и там искать себе студентов/аспирантов, которые на основании этого будут делать дипломы/диссертации. Не имея подобных связей, хуй он кого найдёт.
Для языка вроде Эрланга правильный путь - это JIT компиляция, а не статическая пре-компиляция, как этот чухан предлагает.
Алсо, в Университете Стокгольма кто-то этой темой занимается. Могли бы как-то скооперироваться с ними.
Что за фильм?
Судя по описанию, работа за еду.
>Важно иметь возможность проводить еженедельные совещания в оффлайне, удаленная работа полностью исключается.
Вроде люди неглупые, а от обезьяньих повадок отказываться не спешат. От чего так?
Это оправдания динамопетушков, которые не могут в статический анализ кода.
Конечно, JIT эффективней AOT, но вместе-то ещё лучше.
Но в Эрланге есть статический анализатор.
Напоминаю Джамшуду, что вот эту хуйню я сделал за 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
Ну а чего в комбинаторах сложного-то? Это такой своеобразный брейнфак же. Есть правила, по которым можно приводить лямбда-термы к комбинаторным вообще механически, не задумываясь. Чтобы не писать много раз одно и то же, вводишь несколько часто используемых комбинаторов на основе K и S, помечаешь их другими буквами. Потом так же вводишь нумералы, пары, кортежи, комбинатор неподвижной точки. Добавляешь немного сахара типа let-выражений и вуаля - у тебя есть ML. Это настолько прозрачная схема, что ее понять, по-моему, проще, чем выучить паскаль в школе.
> Программы на лямбда-калькулусе у него простые и понятные.
Ну как-бы ничто не мешает их сделать намного проще и понятнее, заготовив некоторый набор функций.
Вообще, лямбда-исчисление всего лишь частный случай переписывания термов.
>>639573
Ну кроме МТ и лямбда-исчисления ещё НАМ есть.
Эй, уёбки, хочу перекатится с плюсов на каскель. Есть ли нормальные кроссплатформенные фреймворки для него?
>у борща своя предметная область
Вычисление факториалов, чисел Фибоначчи, переворачивание списков, написание плохих туториалов про монады (массивы), срачи на \зк, отработка техники ленивого программирования. Что-то забыл?
тайпкласс енто trait
Откуда берутся такие умные чуваки? я, блин, на работе только тыкаю во всякие SQL запросы, стыдно даже.
>Сложения по разнотипным обьектам
Мразь, ублюдок, говно, из-за таких как ты падают космические аппараты, а медецинское оборудование убивает пациентов. Желаю тебе стать жертвой ошибки, которую можно было отловить при помощи строгой типизации, но программист писал на каком-то говне
Ты сам дурак, мразь и ублюдок. И тупой дебил. У нормальных людей как. Есть тип Inch, есть тип Meter. И складываются они так, что хуй ошибешься. А в хаскелле как? Да никак, ебись со своим Double. и нет, модуль dimensional тебя не спасет, по причинам, которые я тебе, говно, выше расписал.
>А это, в свою очередь, значит, что модулю dimensional требуется или прятать плюс из прелюдии, или обзывать его .+ или еще как. Что значит, что полиморфный код и для интегеров, и для метров - невозможен.
>А это, в свою очередь, значит, что модулю dimensional требуется или прятать плюс из прелюдии, или обзывать его .+ или еще как. Что значит, что полиморфный код и для интегеров, и для метров - невозможен.
НАМ еще хуже, ты нихуя не контролируешь порядок редукций и приходится колдовать каждый раз.
Переводить метры в даблы, чтобы сложить, а потом опять в метры? Ну так это и есть источник ошибок!
Переведи метры в инчи и сложи с инчами получив инчи. Или переведи инчи в метры и сложы с метрами, получи метры
Речь идет о полиморфизме. Когда ты написал, допустим, интегратор произвольной лямбды на отрезке, и он сразу тебе выдает ответ в нужной единице измерения.
>У нормальных людей как. Есть тип Inch, есть тип Meter. И складываются они так, что хуй ошибешься.
Какие-то неправильные у тебя нормальные люди. В таких случаях всегда задается один тип, с ним и производятся любые вычисления. Уже полученное значение преобразуется в понятный человеку формат. Смотри как библиотеки для работы со временем устроены.
Итак ретроспектива проекта с хуйовой кармой "Какаранет".
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
Итак ретроспектива проекта с хуйовой кармой "Какаранет".
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
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.
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.
Нахуй ты это поехавшее хамло сюда несешь?
Почему это имеет смысл лучше показать на (*), который имеет тот же тип. Пример: умножение матрицы на вектор.
>(m1 m2) m3 -- type error; type of (m1m2) is ambiguous
>(m1 m2) :: Matrix m3 -- this is ok
Типа в первом случае он применяет () :: a -> a -> a, а во втором (*) :: a -> b -> c? Разве в хаскеле есть перегрузка функций?
Есть в Haskell каноничный способ работы с ошибками и исключениями?
-XMultiParamTypeClasses, но ухудшится выведение типов
Шел бы ты отсюда со своей эрлангодрамой
Тебе что надо вообще? Хаскель сам по себе кроссплатформенный фреймворк
>Есть тип Inch, есть тип Meter. И складываются они так, что хуй ошибешься
Блядь, запихни нужные тебе типы в тип-сумму, определи для него инстанс Num или что тебе нам еще надо и живи спокойно, если за универсальностью не гоняешься.
Потому что дисциплина типов, блджад. Потому что нахуй тогда нужна ваша статическая типизация, если программу можно превратить в дрисню.
>Не могу вникнуть в спор.
Да нет никакого спора.
> Кто-то может вкратце объяснить, почему (+) :: a -> a -> a вместо a -> b -> c
Потому что с a -> b -> c мало того, что требуются multiparameter typeclasses, так еще и вывод типов начинает в большом числе случаев тупить. Точнее, по-моему в случае a -> b -> c он просто невозможен без дополнительных зависимостей.
Можно ввести какой-нибудь .* и экспортировать таким образом модуль dimensional без перекрытия прелюдии.
> Какими аргументами вправить мозги этим пидарасам?
Вот, держи: http://blog.paralleluniverse.co/2015/08/07/scoped-continuations/
Please Stop Polluting our Imperative Languages with Your Pure Concepts.
Просто аплликативы и монады очень удобный обобщённый концепт для управления последовательностями вычислений. Любой программист много размышляющий на эту тему рано или поздно придёт к частному случаю использования апликативов/монад. Так нахуя кривые частные поделия, когда можно взять готовый обобщённый концепт из цаскеля? Будь моя воля, я б вообще в каждый язык их завёз.
Nyet, с поиском и навигацией. Причем можно кликнуть по любой функции в исходнике и перейти к её определению.
Нет, это некоторый объект, который инкапсулирует в себе цепочку операций можно при желании описать в виде монады и связывать такие цепочки монадическим биндом. Т.е. всякая щука рыба, но не всякая рыба - щука, как-то так.
ФГМ не излечим, увы.
Ты дебла кусок. Когда Inch и Meter складываются, один приводится к другому и получается результат в виде Inch или Meter.
Это всё жидовский заговор, очевидно же.
Потому что это >>643334 Но ты абсолютно прав - пихать монады в языки, которые абсолютно для этого не предназначены - долбоёбизм, на выходе получается нечитаемое говно. Впрочем, не все языки абсолютно не предназначены для монад, в том же F# есть воркэраунды и в Питоне. И я бы не сказал, что async workflow в F# и STM - полное говно. Но в целом да, если хочешь, чтобы было как в Хаскеле, просто возьми Хаскель, а не насилуй свой язык, который разрабатывался под совершенно другой стиль программирования.
Речь изначально шла о полиморфизме, а не о том, что можно сделать в разных частных случаях.
Option/Maybe вполне неплохо оптимизируются простым инлайном, а остальные нинужны.
Это не коды возврата, это полноценные значения. Чем они и должны быть, за исключением случаев, когда происходит нечто неприемлимое.
Коды возврата должен не забыть проверить (как и поймать исключения) Васян-разработчик (возможно, пишущий код с перепоя). Типы значений-монад проверит коньпелятор слава роботам.
Кроме обычных монад есть ещё свободные монады, а то и вообще эффекты, как в идрисе (http://docs.idris-lang.org/en/latest/effects/introduction.html).
Код возврата ты можешь проверять, а можешь не проверять. Во втором случае всё пойдёт по пизде, если где-то случится ошибка. Причём размер этой попизде предугадать довольно сложно. С Маубе ты можешь писать код так, будто ошибок не существует, а они сами будут обрабатываться. Попизде не придёт.
Что в Акке является аналогом Хаскеля?
Чистота функций подразумевает передачу данных как бы по значению. То есть реаллокация кусков памяти отдаётся на откуп компилятору, который может оптимизировать, а может и не оптимизировать определённый код. Например у меня есть большие куски данных, как то игровые уровни или стейт физической симуляции. Как это разрешать лучше? Явно через монадки менеджить куски мутабельной памяти или отдавать на откуп компилятору, но писать чисто? например newstate <- function state deltatime
>полиморфизме
Если хочешь складывать хомяков с числами - тебе в Си. И вообще, что ты понимаешь под этим словом -"Полиморфизм"? Ты же даже определения не дашь, говна ты кусок
Хачканы, поясните как проводить декомпозицию задачи в терминах теории категорий? С ООП все понятно, собственно он типа так и задуман что отражает реальный мир, но как его моделировать в теоркате?
PS С теоркатом знаком.
есть вот такое http://www.haskellforall.com/2012/08/the-category-design-pattern.html но по мне вся эта петушня про ко-ко-котегории нужна для всяких абстрактных хуёвин в библиотечках, т.е. локально.
http://pastebin.com/Aq9GWN9r
Term : uncode
Type : Int -> a -> [Integer] -> [Integer] -> Int
Does not match : Integer -> a -> [Integer] -> [Integer] -> Int
Забыл вставить в пастбин перевод в десятичную.
des = foldl1 ((+) . ( 2))
Вы видите копию треда, сохраненную 2 марта 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.