← All posts tagged fp

lovesan

Курсы по функциональному программированию в элитном чятике

[2:34:31] Dmitry Ignatiev: Ну вот захотел ты посрать. Допустим ты ищешь с какого входа зайти в макдональдс, и к какому туалету
[2:35:01] Dmitry Ignatiev: Тут очередь, там очередь, а в середине еще столики стоят
[2:35:15] Dmitry Ignatiev: Надо изъебнуться и побыстрее пройти, а то уже совсем тянет
[2:39:33] Dmitry Ignatiev: Короче смотри
[2:40:22] Dmitry Ignatiev: Столики стоят и занимают свободное пространство. Между ними тоже есть проходы. На самом деле очереди — в кассу за бигмаками
[2:41:02] Dmitry Ignatiev: Оценивая скорость движения очередей, и количество жирных мудаков в очереди, ты можешь вычислить время стояния в каждом промежутке зала
[2:42:17] Dmitry Ignatiev: Предположим что императивно мыслить ты не можешь, т.к. учился в MIT и на курсе 6.001 все месяцы когда объясняли абстракцию данных — ты пробухал
[2:42:54] Dmitry Ignatiev: Надо рекурсивно вычислить, как бы быстрее пробежать посрать
[2:43:10] Dmitry Ignatiev: Сначала надо найти базу рекурсии
[2:44:06] Dmitry Ignatiev: Для вычисления времени до толчка мы должны рекурсивно поделить задачу об общем времени до толчка к мелким задачам о промежутках времени в каждом проходе
[2:44:49] Dmitry Ignatiev: Можно пропустить слово рекурсивно
[2:45:05] Dmitry Ignatiev: Потому что ты же бухал на 6.001 вместо лекций об императивщине
[2:45:20] Dmitry Ignatiev: Так вот
[2:45:32] Dmitry Ignatiev: Гггг
[2:45:52] Dmitry Ignatiev: Короче, надо сначала найти время на проход каждого мелкого участка пути
[2:45:55] Dmitry Ignatiev: до толчка
[2:46:07] Dmitry Ignatiev: Постепенно вычисляя как бы так пробраться побыстрее
[2:46:33] Dmitry Ignatiev: Сразу вычислить нельзя, потому что задача NP-полна и воще люди загораживают видимость следующих проходов
[2:46:53] Dmitry Ignatiev: Так вот, мы думаем — а как бы так побыстрее пробраться до толчка, это общая задача
[2:47:24] Dmitry Ignatiev: Чтобы побыстрее добраться до толчка — надо сначала побыстрее пробраться на чекпойнт до ближайшего до толчка угла
[2:47:44] Dmitry Ignatiev: А чтобы пробраться до него, надо сначала пробраться на ближайший к нему чекпойнт
[2:47:57] Dmitry Ignatiev: Таким образом получаем рекурсивную функцию, это так в MIT называют
[2:48:05] Dmitry Ignatiev: такой ход вычислений
[2:48:28] Dmitry Ignatiev: Ну так типа принято у пацанов
[2:48:36] Dmitry Ignatiev: Не совсем но близко
[2:48:51] Dmitry Ignatiev: Рекурсивная функция выражается через саму себя, это ваще пацаны в математике придумали
[2:49:10] Dmitry Ignatiev: но вычисляя подобным образом мы в итоге придем ко входу в макдак
[2:49:21] Dmitry Ignatiev: Дальше вычислять смысла тупо нет, потому что мы и так у входа
[2:49:27] Dmitry Ignatiev: Это типа называется базис рекурсии

продолжение в /1

lovesan

juick.com

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

1. Статическая типизация это говно ссаное нахуй не нужное, потому что на практике решает система ограничений на значения, причем опционально подключаемая(потому что для тьюринг-полного языка натянуть ее повсюду невозможно). Не так давно хаскелоиды и сочувствующие это стали называть "зависимые типы" и выдавать за охуенное изобретение, хотя на самом деле это, во-первых, называется constraint propagation, во-вторых к типизациям отношение имеет крайне отдаленное, и в-третьих, это было в компиляторах лиспа уже лет 20 назад(в том же CMUCL).

2. Монада(как и много других вещей в хаскеле и пр.) это такой классический пример изъебства на пустом месте. Вот знаете, типа как в С++ можно на шаблонах нахреначить факториал(и даже больше — один всем известный наркоман даже интерпретатор схемы написал) в компайл-тайме. Ну можно, да, ну охуеть, только вот встают вопросы — ну типа, во-первых, нахуя это вообще надо, считать факториалы в компайл-тайме, а во-вторых, нахуя их считать с таким страшным изъебством если на C++ без шаблонов и то получается проще на порядки. Это дает охуенный простор для задротства, конечно, но блять, а как насчет решения задач?

Кстати, насчет задроства — уже упомянутый C++ дает просто огромнейший простор для задрачивания бессмысленной хуеты на пустом месте. Раньше это был эталонный язык для подобного рода занятий(кстати, именно этим и объясняется любовь к нему определенного круга лиц). Сейчас, как я понимаю, C++ в этих делах отходит на второе место, в пользу хаскеля.

3. Блять, парсер-комбинаторы это же игрушка, ну правда. Парсить что-либо в продакшне парсер-комбинаторами, а не нормальными парсерами(от LL(1) и packrat+PEG до GLR), это знаете, типа как узнавать размер файла считав его весь в массив и вызвав функцию length. То есть, ну ок, может и нормально, если ты питонщик, и вообще, получаешь инвалидное пособие за умственную отсталость, но блять, в приличном обществе за такое надо руки отрубать.


А и кстати — DSL в рантайме, на фвп и прочей хуете это пиздец говно и кривота. DSL надо писать или на лиспе или, если лиспа у вас по странным причинам нету, конпилировать заранее с помощью чего-то типа ANTLR.