Это копия, сохраненная 28 марта 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
До этого юзал функциональные либы в императивных языках, люто доставило, зависимость есть.
В общем, ФП тред, иди!
>ФП
ты что фукций не проходил?
>общие абстракции ФП
там нету абстракций, это ж токо функции
>Есть ли какой туториал подобного рода,
нету, любой даун уже понял что фп это функции
>И что нужно знать до того, как погрузится в ФП?
100 рецептов борща с поварёнок.ру
>Теорию множенств?
не знаю
>Теорию категорий?
не слышал
> Или какой другой матан?
да
>иди
иди нахуй
>ФП
ты что фукций не проходил?
>общие абстракции ФП
там нету абстракций, это ж токо функции
>Есть ли какой туториал подобного рода,
нету, любой даун уже понял что фп это функции
>И что нужно знать до того, как погрузится в ФП?
100 рецептов борща с поварёнок.ру
>Теорию множенств?
не знаю
>Теорию категорий?
не слышал
> Или какой другой матан?
да
>иди
иди нахуй
Сначала нужно будет задеть пару разделов математической логики, а именно по порядку: логику первого порядка, логику второго порядка, комбинаторную логику и лямбда-исчисление. Пока будешь проходить комбинаторную логику, желательно параллельно что-нибудь программировать на языках J, K или Unalmbda. Когда будешь проходить лямбда-исчисление, желательно программировать на языке Scheme. Дальше читаешь TAPL. Потом читаешь что-то по типизированному лямбда-исчислению, слегонца кодишь на каком Standard ML. Дальше нужно пройти курс общей алгебры. После этого, можешь браться за теорию категорий и параллельно учить Haskell. Изучил какую нибудь хуйнюшку в хаскеле - смотришь её в ТК, и наоборот, лучше даже наоборот. Такая вот схема, если готов к долгому плаванью.
Если всё это ебёт делать, вот тебе слайды по ФП-паттернам http://www.slideshare.net/ScottWlaschin/fp-patterns-buildstufflt
Добра тебе, анон. Твоя мама порядочная женщина, а у тебя в жизни все будет хорошо.
С лямбда исчисления начни.
))))))))0000
Годненько. МОАР!
Жиза
лах, говорили тебе учи сначала матлогику
Действительно, математических теорий построено удивительно много, и каждая из них является совершенно своеобразным языком общения сравнительно ограниченного круга
специалистов, которые хорошо понимают друг друга. Однако попытка “непосвященного” понять практическую пользу и значимость нового математического языка
наталкивается на препятствия.
Прежде всего оказывается необходимым перестроить собственный стиль мышления, чтобы на известные трудности взглянуть под новым углом зрения. Так распространение объектно-ориентированного
программирования требует и привлечения других способов рассуждения, которые зачастую радикально отличаются от стереотипов рассуждения в процедурном программировании.
Точно также лишь немногие и сравнительно молодые математические теории ориентированы на рассуждения в терминах объектов, а не в терминах
операторов, как это следует из опыта изучения математического анализа в большинстве университетов, в том числе, и технического или компьютерного профиля. К сожалению,
программисту не удается прослушать университетский курс, закладывающий основы математического мышления в терминах объектов. В лучшем случае дело ограничивается сообщением чисто математических результатов, полученных в комбинаторной логике,
лямбда-исчислении или теории категорий, которые не так-то просто преломить на практическое программирование без известной теоретической искушенности.
> JavaScript's C-like syntax, including curly braces and the clunky for statement, makes it appear to be an ordinary procedural language. This is misleading because JavaScript has more in common with functional languages like Lisp or Scheme than with C or Java. It has arrays instead of lists and objects instead of property lists. Functions are first class. It has closures. You get lambdas without having to balance all those parens.
Без иммутабельности и статической типизации этим всем можно подтерется.
Ну, да, конечно, можно прикрутить либу для иммутабельности вроде фейсбучного Immutable.js и еще одну для тайп хинтинга, вроде фейсбучного же Flow.js, и еще либу для монад, и еще либу для каррирования и еще либу для ну ты понел, но зачем, если можно просто взять Clojure?
непреложность immutability позволяет разные оптимизации?
ну как:
NewState = do_smth(OldState)
не будет копировать весь OldState.
хвостовая рекурсия может быть и в языках с изменяемыми переменными, как ruby.
Сообщества в ЖЖ: ru_declarative, ru_lambda, fprog. Отдельно читать следующих уёбков: thedeemon, nponeccop, antilamer, через них выйдешь на остальных интересных личностей и прочих хуесосов : D
Сдалась тебе эта функциональщина, это давно уже немодно. Модно и круто машинное обучение на питоне с вставками фортрана.
Как раз сейчас ФП переживает второе рождение, помяни мои слова.
>машинное обучение на питоне с вставками фортрана.
ЩИТО? нет, серьезно, ЩИТО??
Когда я пишу на ФОРТРАНЕ, Господь подымает меня над полом и приближает к себе. Не так близко, чтоб поздороваться, но так высоко над вами, чтобы узнать вам, дешёвкам, цену. Вы писькины плевки, получившие паспорта, вы спрессованный в толпу корм для рыбок, ваши лица сливаются в одну огромную жопу. Человек без распечатки в портфеле есть такая низкая тварь, что даже утопая в реке, я не подам ему руку.
>машинное обучение на питоне с вставками фортрана.
Scipy из этого слеплен. А на нём делают https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks
Это не от хорошей жизни же все. Они там используют говна мамонтов на фортране, т.к. написать новое некому.
жыза
А я готов спорить, что сейчас все наиграются этими хаскилями и сразу перейдут к декларативщине. Дээсэли, хуесэли, визуальное программирование, вот это всё. А фп утонет.
Дээсэли - нинужны. Используют их когда исходный язык говно и вместо решения задачи всё скатывается в написание метамодели метаконфига метамодели, и автор уходит в астрал, так нихуя и не сделав.
Статическая типизация помогает вылавливать баги на стадии компиляции.
Ну, а если язык динамически типизирован, то хотя бы тайп хинтинг, чтобы вылавливать их на стадии разработки.
В том же JS, знакома ситуация, когда читаешь откуда-то число, например, 10, хочешь добавить к нему 5, а на выходе получаешь 105 вместо 15, потому что 10 на самом деле "10"? То-то же.
Дсли нужны. Исходный язык всегда говно, а ты просто любитель вытирать жопу наждачкой.
Тут ты тусовок функциональщиков врядли сыщешь.
Чтобы сыскать функциональщика - нужно выйти в любое людное место, и просто наблюдать за мимо проходящими людьми. В любом рашкинском городе, со временем, ты увидишь небритого мужика в грязной одежде тёмных цветов, от которого воняет потом и мочой. В руках у него, скорее-всего, будет пакет с пельмешками, и банка какой-нибудь балтики. Отличительная от других бомжей черта - очки, тоже старые, заплывшие жиром. Подойдя к нему, нужно сказать "катаморфизм". Если он, медленно подняв голову, скажет "Чо?" - вы ошиблись, это обычный бомж. В остальных случаях - это функциональщик.
Двинь вперед, макака, ничто видеть здесь.
Ну расскажи тогда мне, нелисподебил, зачем же ты тогда пишешь дсл для каждой решаемой задачи (кроме laba2)?
Если ты таким интересным способом пытаешься пропихнуть лиспосектантскую идею, что "программисты постоянно пишут ДСЛи, даже не задумываясь об этом" то просто иди нахуй.
1) Это не лисперовская идея.
2) Так и есть.
3) Только полный идиот, витающий где-то в своём мире, будет спорить, что решить задачу на специально спроектированном языке - проще, быстрее и менее подвержено багам, чем сделать это же на любом универсальном языке типа сисечки.
Я так и думал. Нет, я не метадебил как ты, и поэтому вижу существенную разницу между созданием высокуровневых абстракций с помощью примитивов языка и написанием ДСЛей. Пиздуй уже ЛОРапарашу засирать или откуда ты там вылез.
>поэтому вижу существенную разницу между созданием высокуровневых абстракций с помощью примитивов языка и написанием ДСЛей.
Лел. Нет, не видишь. ЕДСЛ - такая же высокоуровневая абстракция, созданная с помощью примитивов языка.
мимо-крокодил
Алсо, а уж не жава ли ты макака, для которой ДСЛи заканчиваются на программировании на xml?
всё тот же крокодил
Нет, я не создаю новый язык, а использую изначальное языковое множество. Конечно для лисподебила пользовательская функция, тип или псевдоним - уже дсл, но это не так, разумеется.
>я не создаю новый язык
Именно это ты и делаешь, особенно, если ты крестоблядь твой язык поддерживает перегрузку операторов.
Нет, я всего лишь считаю что всякие допилы на макросах, создания своих удобных(тм) операторов, шаблоны и прочее метапрограммирование - корень всего зла и костыль для недоязыков. И что у разработчика должна быть очень серьёзная причина для написания ДСЛей, вместо использования стандартизированного и всем известного языка.
Тогда поздравляю! Твоё познание о ДСЛях где-то на уровне между "программируем на XML" и "вычисляем какую-то хуйню во время компиляции на шаблонах" Хотя последнее к дсл непосредственного отношения не имеет.
И ещё, скажу тебе по секрету: ЕДСЛи можно строить и без макросов. Только тссс
Вот тут хорошо описан подход к использованию EDSL:
http://swizard.info/articles/solitaire/article.html
>Common Lisp
Дальше не читал.
>>437221
По пути можешь ответить для себя на вопрос, почему все разработчики, начиная со времён алгола пользуются универсальными языками, а за дслеписательсво в продакшне без весомой причины бьют по тупому метаебалу. Можешь подумать над этим в перерывах между мастурбацией на s-выражения и написанием очередного метаконфига для дсля для написания дселей.
#define
>Дальше не читал.
Ну, поищи что-нибудь аналогичное для немерле, скалы, хаскеля или окамля. Просвещаться-то надо, а то так и останешься недалекой крестомакакой.
>По пути можешь ответить для себя на вопрос, почему все разработчики, начиная со времён алгола пользуются универсальными языками, а за дслеписательсво в продакшне без весомой причины бьют по тупому метаебалу.
Для тебя могу ответить. Давай, попробую описать основные причины: 1) примитивность языков с точки зрения возможностей построения абстракций: ни алголы, ни сишки, ни жавы не имеют приличных для того средств, Так же можно было и про ООП когда-то сказать: типа никто с алгола не пользовался, нечего и начинать.
2) неприспособленность синтаксиса. Во многих языках практически невозможно сделать выглядящий гармонично edsl имею в виду edsl, созданный средствами метапрограммирования. На тех же крестах писать-то невозможно без крови из глаз, не то что генерировать код или расширять синтаксис.
3) и да, по метаебалу не бьют. Даже отсталые жавамакаки любят на xml программировать.
>Использование ретроградских костылей для недоязыков
>Просвещаться
Мда.
>скалы, хаскеля
А вот там это точно не нужно.
>невозможно сделать выглядящий гармонично edsl
И не нужно. Как и
>генерировать код или расширять синтаксис
>и да, по метаебалу не бьют
Кому ты пиздишь, маня.
>Использование ретроградских костылей для недоязыков
Мне тоже не нравится, но сейчас это мейнстрим!
>А вот там это точно не нужно.
Тебе-то откуда знать? Алсо, edsl'и в них строятся не средствами метапрограммирования. Ну, т.е. не обязательно ими.
>>невозможно сделать выглядящий гармонично edsl
>И потому не нужно.
Вот так.
>>и да, по метаебалу не бьют
>Кому ты пиздишь, маня.
Покажи мне хоть один крупный проект на жаве, где не используется dsl на так горячо любимом всеми жава-сеньорами xml'е.
Есть очень простой пример того, что ты — хуй: https://msdn.microsoft.com/en-us/library/bb397926.aspx
Во, вспомнил. Погугли OMeta, STEPS. Там были хорошие примеры реализации tcp/ip стека, отрисовки шрифтов.
Что-то не так? Монады — типичнейший паттерн вроде синглтонов или абстрактных фабрик.
Эти слайды для начинающих или дебилов.
Гугли вот это:
Typeclassopedia
Programming with Arrows
The Essence of the Iterator Pattern
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
Еще вот этот дядя пишет много чего сложного и интересного: http://okmij.org/ftp/
Для всего вышеперечисленного нужно знание хаскеля "на уровне чтения кода".
Другой вариант (если вообще ничего не понимашь в ФП) - Functional programming in scala. Точно, не помню, но синтаксис скалы там вроде объясняется. Полезно еще и тем что можешь по пути выучить язык, который сможет тебе пригодиться. вдальнейшем.
>>437234
>edsl'и в них строятся не средствами метапрограммирования. Ну, т.е. не обязательно ими.
>Покажи мне хоть один крупный проект на жаве, где не используется dsl на так горячо любимом всеми жава-сеньорами xml'е.
Он ничего не сможет показать, этот даун вообще не понимает что такое DSL.
>>437233
>А вот там это точно не нужно.
Кому ты пиздишь?
мимоскалист
как написать printf без побочек
я возможно, окунусь в это ваше ФП.
Ещё один ДСЛедаун кукарекает. Хорошо, что вы как общешлюхи, вас мало и вы только в сети встречаетесь. Ещё и на скале пишет, ёбаный стыд, даже с нормальными инструментами не может не обмазаться говном.
Но любое IO это побочка.
Я не говорю что на каждый чих нужно писать дсл.
Примеры ДСЛ которые писал лично я: дсл для определения бинарного протокола, дсл для формирования отчетов.
Использовал уже написанные дсли (как части библиотек): Apache Camel, elastic4s, gatling etc.
Это все НИНУЖНО, даун?
>>437556
printf писать нинужно, пиши аналог sprintf.
Функция print :: String -> IO Unit должна быть в стандартной библиотке и, как в любом другом языке, реализована на более низком уровне.
давай ты ещё объект к массиву в евале прибавишь?
чё за пиздец, приводи явно в неочевидных моментах.
Еще бы хотелось чтобы язык был прикладной, а не как лисп))))), ориентируюсь на веб-бекенд, но если есть фул-стек фреймворк еще лучше.
Это копия, сохраненная 28 марта 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.