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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
15 Кб, 220x210
Общий ФП тред #436191 В конец треда | Веб
Сап, кодач. Хочу обмазаться ФП, язык не имеет значения, даже более того, меня больше интересуют общие абстракции ФП, а не их конкретная реализация. Есть ли какой туториал подобного рода, чтобы даже идиот вроде меня разобрался? И что нужно знать до того, как погрузится в ФП? Теорию множенств? Теорию категорий? Или какой другой матан?
До этого юзал функциональные либы в императивных языках, люто доставило, зависимость есть.
В общем, ФП тред, иди!
sage #2 #436206
>>436191

>ФП


ты что фукций не проходил?

>общие абстракции ФП


там нету абстракций, это ж токо функции

>Есть ли какой туториал подобного рода,


нету, любой даун уже понял что фп это функции

>И что нужно знать до того, как погрузится в ФП?


100 рецептов борща с поварёнок.ру

>Теорию множенств?


не знаю

>Теорию категорий?


не слышал

> Или какой другой матан?


да

>иди


иди нахуй
sage #2 #436206
>>436191

>ФП


ты что фукций не проходил?

>общие абстракции ФП


там нету абстракций, это ж токо функции

>Есть ли какой туториал подобного рода,


нету, любой даун уже понял что фп это функции

>И что нужно знать до того, как погрузится в ФП?


100 рецептов борща с поварёнок.ру

>Теорию множенств?


не знаю

>Теорию категорий?


не слышал

> Или какой другой матан?


да

>иди


иди нахуй
#3 #436207
>>436206
Вебмакака не палится.
#4 #436208
>>436191
Сначала нужно будет задеть пару разделов математической логики, а именно по порядку: логику первого порядка, логику второго порядка, комбинаторную логику и лямбда-исчисление. Пока будешь проходить комбинаторную логику, желательно параллельно что-нибудь программировать на языках J, K или Unalmbda. Когда будешь проходить лямбда-исчисление, желательно программировать на языке Scheme. Дальше читаешь TAPL. Потом читаешь что-то по типизированному лямбда-исчислению, слегонца кодишь на каком Standard ML. Дальше нужно пройти курс общей алгебры. После этого, можешь браться за теорию категорий и параллельно учить Haskell. Изучил какую нибудь хуйнюшку в хаскеле - смотришь её в ТК, и наоборот, лучше даже наоборот. Такая вот схема, если готов к долгому плаванью.

Если всё это ебёт делать, вот тебе слайды по ФП-паттернам http://www.slideshare.net/ScottWlaschin/fp-patterns-buildstufflt
29 Кб, 308x475
#5 #436213
Книга в тему.
#6 #436214
>>436207

>покпок


что простите?
#7 #436215
>>436208
Добра тебе, анон. Твоя мама порядочная женщина, а у тебя в жизни все будет хорошо.
#8 #436216
>>436213
окасаки - хуйсосаки)
#9 #436250
А накидайте коммьюнити, сабреддиты там, и бложики, где функциональщики тусуются.
sage #10 #436449
>>436216
Лол.
#11 #436480
>>436449
))))))))))
#12 #436481
>>436191
С лямбда исчисления начни.
sage #13 #436492
>>436480
))))))))0000
#15 #436545
>>436213
Завяз на первом примере кода :(
#16 #436577
>>436507
Годненько. МОАР!
#17 #436595
>>436545
Жиза
#18 #436627
>>436507

>javascript



ну ты понел
#19 #436629
>>436545
лах, говорили тебе учи сначала матлогику
#20 #436703
Обилие и разнообразие подходов к программированию в computer science отражается в развитии и распространении различных подходов к построению математики.
Действительно, математических теорий построено удивительно много, и каждая из них является совершенно своеобразным языком общения сравнительно ограниченного круга
специалистов, которые хорошо понимают друг друга. Однако попытка “непосвященного” понять практическую пользу и значимость нового математического языка
наталкивается на препятствия.
Прежде всего оказывается необходимым перестроить собственный стиль мышления, чтобы на известные трудности взглянуть под новым углом зрения. Так распространение объектно-ориентированного
программирования требует и привлечения других способов рассуждения, которые зачастую радикально отличаются от стереотипов рассуждения в процедурном программировании.

Точно также лишь немногие и сравнительно молодые математические теории ориентированы на рассуждения в терминах объектов, а не в терминах
операторов, как это следует из опыта изучения математического анализа в большинстве университетов, в том числе, и технического или компьютерного профиля. К сожалению,
программисту не удается прослушать университетский курс, закладывающий основы математического мышления в терминах объектов. В лучшем случае дело ограничивается сообщением чисто математических результатов, полученных в комбинаторной логике,
лямбда-исчислении или теории категорий, которые не так-то просто преломить на практическое программирование без известной теоретической искушенности.
#21 #436951
>>436627

> 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.

#22 #436956
>>436951
Без иммутабельности и статической типизации этим всем можно подтерется.
Ну, да, конечно, можно прикрутить либу для иммутабельности вроде фейсбучного Immutable.js и еще одну для тайп хинтинга, вроде фейсбучного же Flow.js, и еще либу для монад, и еще либу для каррирования и еще либу для ну ты понел, но зачем, если можно просто взять Clojure?
#23 #436966
>>436956

>подтереться


Каюсь. Самофикс
#24 #436975
>>436956
непреложность immutability позволяет разные оптимизации?
ну как:
NewState = do_smth(OldState)
не будет копировать весь OldState.
хвостовая рекурсия может быть и в языках с изменяемыми переменными, как ruby.
#25 #436981
>>436250
Сообщества в ЖЖ: ru_declarative, ru_lambda, fprog. Отдельно читать следующих уёбков: thedeemon, nponeccop, antilamer, через них выйдешь на остальных интересных личностей и прочих хуесосов : D
#26 #436993
>>436250
Сдалась тебе эта функциональщина, это давно уже немодно. Модно и круто машинное обучение на питоне с вставками фортрана.
#27 #436995
>>436993
Как раз сейчас ФП переживает второе рождение, помяни мои слова.

>машинное обучение на питоне с вставками фортрана.


ЩИТО? нет, серьезно, ЩИТО??
73 Кб, 400x382
#28 #437002
>>436995
Когда я пишу на ФОРТРАНЕ, Господь подымает меня над полом и приближает к себе. Не так близко, чтоб поздороваться, но так высоко над вами, чтобы узнать вам, дешёвкам, цену. Вы писькины плевки, получившие паспорта, вы спрессованный в толпу корм для рыбок, ваши лица сливаются в одну огромную жопу. Человек без распечатки в портфеле есть такая низкая тварь, что даже утопая в реке, я не подам ему руку.
#29 #437023
>>436995

>машинное обучение на питоне с вставками фортрана.


Scipy из этого слеплен. А на нём делают https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks
#30 #437025
>>437023
Это не от хорошей жизни же все. Они там используют говна мамонтов на фортране, т.к. написать новое некому.
#31 #437047
>>437002
жыза
#32 #437053
>>436995
А я готов спорить, что сейчас все наиграются этими хаскилями и сразу перейдут к декларативщине. Дээсэли, хуесэли, визуальное программирование, вот это всё. А фп утонет.
#33 #437130
>>437053
Дээсэли - нинужны. Используют их когда исходный язык говно и вместо решения задачи всё скатывается в написание метамодели метаконфига метамодели, и автор уходит в астрал, так нихуя и не сделав.
#34 #437151
>>436975
Статическая типизация помогает вылавливать баги на стадии компиляции.
Ну, а если язык динамически типизирован, то хотя бы тайп хинтинг, чтобы вылавливать их на стадии разработки.
В том же JS, знакома ситуация, когда читаешь откуда-то число, например, 10, хочешь добавить к нему 5, а на выходе получаешь 105 вместо 15, потому что 10 на самом деле "10"? То-то же.
#35 #437153
>>437130
Дсли нужны. Исходный язык всегда говно, а ты просто любитель вытирать жопу наждачкой.
sage #36 #437154
>>437153

>Дсли нужны. Исходный язык всегда говно


В мире лисподебилов разве что.
#37 #437164
>>436250
Тут ты тусовок функциональщиков врядли сыщешь.
Чтобы сыскать функциональщика - нужно выйти в любое людное место, и просто наблюдать за мимо проходящими людьми. В любом рашкинском городе, со временем, ты увидишь небритого мужика в грязной одежде тёмных цветов, от которого воняет потом и мочой. В руках у него, скорее-всего, будет пакет с пельмешками, и банка какой-нибудь балтики. Отличительная от других бомжей черта - очки, тоже старые, заплывшие жиром. Подойдя к нему, нужно сказать "катаморфизм". Если он, медленно подняв голову, скажет "Чо?" - вы ошиблись, это обычный бомж. В остальных случаях - это функциональщик.
#38 #437171
>>437164
Двинь вперед, макака, ничто видеть здесь.
#39 #437177
>>437154
Ну расскажи тогда мне, нелисподебил, зачем же ты тогда пишешь дсл для каждой решаемой задачи (кроме laba2)?
#40 #437181
>>437177
Что за дсл, поясните?
мимо-нуб-создатель-посоветуйте-язык-тредов
#41 #437182
>>437177
Если ты таким интересным способом пытаешься пропихнуть лиспосектантскую идею, что "программисты постоянно пишут ДСЛи, даже не задумываясь об этом" то просто иди нахуй.
#43 #437191
>>437182
1) Это не лисперовская идея.
2) Так и есть.
3) Только полный идиот, витающий где-то в своём мире, будет спорить, что решить задачу на специально спроектированном языке - проще, быстрее и менее подвержено багам, чем сделать это же на любом универсальном языке типа сисечки.
#44 #437199
>>437191
Я так и думал. Нет, я не метадебил как ты, и поэтому вижу существенную разницу между созданием высокуровневых абстракций с помощью примитивов языка и написанием ДСЛей. Пиздуй уже ЛОРапарашу засирать или откуда ты там вылез.
#45 #437205
>>437199

>поэтому вижу существенную разницу между созданием высокуровневых абстракций с помощью примитивов языка и написанием ДСЛей.


Лел. Нет, не видишь. ЕДСЛ - такая же высокоуровневая абстракция, созданная с помощью примитивов языка.
мимо-крокодил
#46 #437207
>>437199
Алсо, а уж не жава ли ты макака, для которой ДСЛи заканчиваются на программировании на xml?
всё тот же крокодил
#47 #437208
>>437205
Нет, я не создаю новый язык, а использую изначальное языковое множество. Конечно для лисподебила пользовательская функция, тип или псевдоним - уже дсл, но это не так, разумеется.
#48 #437212
>>437208

>я не создаю новый язык


Именно это ты и делаешь, особенно, если ты крестоблядь твой язык поддерживает перегрузку операторов.
#49 #437213
>>437207
Нет, я всего лишь считаю что всякие допилы на макросах, создания своих удобных(тм) операторов, шаблоны и прочее метапрограммирование - корень всего зла и костыль для недоязыков. И что у разработчика должна быть очень серьёзная причина для написания ДСЛей, вместо использования стандартизированного и всем известного языка.
#50 #437217
>>437213
Тогда поздравляю! Твоё познание о ДСЛях где-то на уровне между "программируем на XML" и "вычисляем какую-то хуйню во время компиляции на шаблонах" Хотя последнее к дсл непосредственного отношения не имеет.
И ещё, скажу тебе по секрету: ЕДСЛи можно строить и без макросов. Только тссс
#51 #437219
>>437217
Ты конечно очень забавный, но просто иди нахуй и вангования свои забери.
#52 #437220
>>437213
Вот тут хорошо описан подход к использованию EDSL:
http://swizard.info/articles/solitaire/article.html
#53 #437221
>>437219
Не нужно быть вангой, чтоб увидеть твои скромные, стереотипные познания.
#54 #437223
>>437220

>Common Lisp


Дальше не читал.

>>437221
По пути можешь ответить для себя на вопрос, почему все разработчики, начиная со времён алгола пользуются универсальными языками, а за дслеписательсво в продакшне без весомой причины бьют по тупому метаебалу. Можешь подумать над этим в перерывах между мастурбацией на s-выражения и написанием очередного метаконфига для дсля для написания дселей.
#55 #437228
>>437223
#define
#56 #437231
>>437223

>Дальше не читал.


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

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


Для тебя могу ответить. Давай, попробую описать основные причины: 1) примитивность языков с точки зрения возможностей построения абстракций: ни алголы, ни сишки, ни жавы не имеют приличных для того средств, Так же можно было и про ООП когда-то сказать: типа никто с алгола не пользовался, нечего и начинать.
2) неприспособленность синтаксиса. Во многих языках практически невозможно сделать выглядящий гармонично edsl имею в виду edsl, созданный средствами метапрограммирования. На тех же крестах писать-то невозможно без крови из глаз, не то что генерировать код или расширять синтаксис.
3) и да, по метаебалу не бьют. Даже отсталые жавамакаки любят на xml программировать.
#57 #437233
>>437231

>Использование ретроградских костылей для недоязыков


>Просвещаться


Мда.

>скалы, хаскеля


А вот там это точно не нужно.

>невозможно сделать выглядящий гармонично edsl


И не нужно. Как и

>генерировать код или расширять синтаксис



>и да, по метаебалу не бьют


Кому ты пиздишь, маня.
#58 #437234
>>437233

>Использование ретроградских костылей для недоязыков


Мне тоже не нравится, но сейчас это мейнстрим!

>А вот там это точно не нужно.


Тебе-то откуда знать? Алсо, edsl'и в них строятся не средствами метапрограммирования. Ну, т.е. не обязательно ими.

>>невозможно сделать выглядящий гармонично edsl


>И потому не нужно.


Вот так.

>>и да, по метаебалу не бьют


>Кому ты пиздишь, маня.


Покажи мне хоть один крупный проект на жаве, где не используется dsl на так горячо любимом всеми жава-сеньорами xml'е.
#59 #437236
>>437233
Есть очень простой пример того, что ты — хуй: https://msdn.microsoft.com/en-us/library/bb397926.aspx
#60 #437239
>>437223
Во, вспомнил. Погугли OMeta, STEPS. Там были хорошие примеры реализации tcp/ip стека, отрисовки шрифтов.
#61 #437322
>>436208

>>ФП-паттернам


Шел бы ты отсюда петушок
#62 #437402
>>437322
Что-то не так? Монады — типичнейший паттерн вроде синглтонов или абстрактных фабрик.
#63 #437414
>>437322
>>437402

На самом деле не совсем подходящие название, и в тех слайдах эта тема сразу раскрывается, но решили всё таки это слово оставить.
#64 #437554
>>436208
Эти слайды для начинающих или дебилов.
Гугли вот это:
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

>А вот там это точно не нужно.


Кому ты пиздишь?
мимоскалист
sage #65 #437555
>>437554
хуита
#66 #437556
Если мне кто-то сможет понятно объяснить
как написать printf без побочек
я возможно, окунусь в это ваше ФП.
sage #67 #437562
>>437555
Ещё один ДСЛедаун кукарекает. Хорошо, что вы как общешлюхи, вас мало и вы только в сети встречаетесь. Ещё и на скале пишет, ёбаный стыд, даже с нормальными инструментами не может не обмазаться говном.
sage #68 #437563
#69 #437568
>>437556
Но любое IO это побочка.
#70 #437572
>>437562
Я не говорю что на каждый чих нужно писать дсл.
Примеры ДСЛ которые писал лично я: дсл для определения бинарного протокола, дсл для формирования отчетов.
Использовал уже написанные дсли (как части библиотек): Apache Camel, elastic4s, gatling etc.
Это все НИНУЖНО, даун?
>>437556
printf писать нинужно, пиши аналог sprintf.
Функция print :: String -> IO Unit должна быть в стандартной библиотке и, как в любом другом языке, реализована на более низком уровне.
#71 #447576
БАБАМП
#72 #448018
>>437151
давай ты ещё объект к массиву в евале прибавишь?

чё за пиздец, приводи явно в неочевидных моментах.
sage #73 #448024
#74 #448054
>>436213
окасаки не может в трифорс, а еще книги пишет
12 Кб, 554x555
#75 #448215
#76 #448323
Знаешь... Думаешь, я просто так тред создала? Нет. Я ведь один раз на кладбище что-то ведь нашла. Да... Шла по кладбищу и нашла... Это в монаде лежало. Я шла и увидела. Кто-то выбросил, а я нашла. Кому-то не нужно было, а я увидела. Шла и увидела. Да... Смотрю, монада лежит. А что в монаде?.. А что там в монаде?.. Дай, думаю, погляжу... Дай, думаю, погляжу... Подхожу... Подхожу... Палкой вот так разворачиваю... Разворачиваю вот так... Разворачиваю... А там... а там... а там... Палкой вот так разворачиваю... А там... А там КАТАМОРФИЗМ... Да... Катаморфизм там. Я же катаморфизм на кладбище нашла. В монаде. А?
#77 #448872
Понимаю что платина но все же. На какой стул сесть? Хачкель хорош, но я пока еще не дорос до всяких изоморфизмов. Скалка - хоть и год уже не пишу на Java но рвотные позывы остаются(или со скалой не все так плохо?). Кложа - ебучий синтаксис, ну вы поняли)))))) F# - какая подделка спермоблядей с жирным лектором? Эрланг - пока нравится больше всех, но проигрываю от того что работу со строками например они прикрутили уже потом, и чтобы было. И переменная надо приводить к строке каким то выебнутым способом. Но при этом он ближе всего к продакшину, хотя и сделан только для хайлоада и многопоточного программирования.
Еще бы хотелось чтобы язык был прикладной, а не как лисп))))), ориентируюсь на веб-бекенд, но если есть фул-стек фреймворк еще лучше.
#78 #448876
>>448872
просто не программируй
#79 #448882
>>448872

> ще бы хотелось чтобы язык был прикладной,


> фп

#80 #448895
А я наткнулся вчера на википедии на такую писечку, MLton называется. Уж как её там облизали со всех сторон, что ффи прозрачный, оптимизации хардкорные, можно делать абстракции, а программа всё равно получается быстрее, чем на крестах и всё такое. Я вот подумал, а если он так охуенен, то почему на нём никто не пишет? Штука не новая же уже. Какие подводные камни?
#81 #448917
>>448876
Но я хочу pure functions, квиксорт в одну строчку. Вот это все. Да и вообще хотелось бы мозги освежить от ООП.

>>448882
Но ведь для чего то они были сделаны и где то даже используются.
sage #82 #449175
>>448895

> MLton


ахах помню на моём старом целероне время компиляции хело ворлда было почти 1 минута
Тред утонул или удален.
Это копия, сохраненная 28 марта 2015 года.

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

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