|
| 1 | +# Таймкоды к курсу "Функциональное программирование" |
| 2 | + |
| 3 | +Общее оглавление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Functional.md |
| 4 | + |
| 5 | +## [Функции, лямбды (стрелочные функции), контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) |
| 6 | + |
| 7 | +- [00:00:00 Введение ](https://youtu.be/pn5myCmpV2U?t=0) |
| 8 | +- [00:11:22 Функция объявление (Declaration)](https://youtu.be/pn5myCmpV2U?t=682) |
| 9 | +- [00:12:46 Функция выражение (Expression)](https://youtu.be/pn5myCmpV2U?t=766) |
| 10 | +- [00:16:07 Лямбда-выражение (Lambda expression) или функция-стрелка (Arrow function) ](https://youtu.be/pn5myCmpV2U?t=967) |
| 11 | +- [00:16:43 Лямбда-функция (Lambda function) ](https://youtu.be/pn5myCmpV2U?t=1003) |
| 12 | +- [00:18:45 Область видимости (Scope)](https://youtu.be/pn5myCmpV2U?t=1125) |
| 13 | +- [00:25:00 Функции, как абстракции](https://youtu.be/pn5myCmpV2U?t=1500) |
| 14 | +- [00:26:43 Методы функции (name, length, toString( ) )](https://youtu.be/pn5myCmpV2U?t=1603) |
| 15 | +- [00:31:26 Значения по умолчанию у функции ](https://youtu.be/pn5myCmpV2U?t=1886) |
| 16 | +- [00:36:46 Rest-оператор (...args)](https://youtu.be/pn5myCmpV2U?t=2206) |
| 17 | +- [00:41:49 Способ определения функции, через new Function](https://youtu.be/pn5myCmpV2U?t=2509) |
| 18 | +- [00:44:46 Функции внутри объекта](https://youtu.be/pn5myCmpV2U?t=2686) |
| 19 | +- [00:50:42 Обращение к полям объекта из привязанной функции, через this](https://youtu.be/pn5myCmpV2U?t=3042) |
| 20 | +- [00:55:24 История синтаксиса создания контекстов, через самовызывающиеся функции ( IIFE)](https://youtu.be/pn5myCmpV2U?t=3324) |
| 21 | +- [00:58:30 Методы функции, наследуемой от объекта (call, apply)](https://youtu.be/pn5myCmpV2U?t=3510) |
| 22 | +- [01:00:53 Комментирование функций](https://youtu.be/pn5myCmpV2U?t=3653) |
| 23 | +- [01:01:27 Задание декомпозиции функции](https://youtu.be/pn5myCmpV2U?t=3687) |
| 24 | +- [01:04:24 Замыкание: context ](https://youtu.be/pn5myCmpV2U?t=3864) |
| 25 | +- [01:08:41 Замыкание: chainning ](https://youtu.be/pn5myCmpV2U?t=4121) |
| 26 | +- [01:11:55 Замыкание: summator ](https://youtu.be/pn5myCmpV2U?t=4315) |
| 27 | +- [01:14:16 Замыкание: recursion](https://youtu.be/pn5myCmpV2U?t=4456) |
| 28 | + |
| 29 | +## [Частичное применение и каррирование в JavaScript ( Partial application )](https://youtu.be/ND8KQ5xjk7o) |
| 30 | + |
| 31 | +- [00:00:00 Замыкание ](https://youtu.be/ND8KQ5xjk7o?t=0) |
| 32 | +- [00:04:54 Лямбда- функция ](https://youtu.be/ND8KQ5xjk7o?t=294) |
| 33 | +- [00:06:06 Метод bind ](https://youtu.be/ND8KQ5xjk7o?t=366) |
| 34 | +- [00:08:30 Абстрагированный пример функции ](https://youtu.be/ND8KQ5xjk7o?t=510) |
| 35 | +- [00:13:42 Абстрагированный пример функции (расширение) ](https://youtu.be/ND8KQ5xjk7o?t=822) |
| 36 | +- [00:15:47 Неправильная реализация каррирования ](https://youtu.be/ND8KQ5xjk7o?t=947) |
| 37 | +- [00:22:22 Правильная реализация каррирования ](https://youtu.be/ND8KQ5xjk7o?t=1342) |
| 38 | +- [00:28:54 Правильная реализация каррирования (расширение)](https://youtu.be/ND8KQ5xjk7o?t=1734) |
| 39 | +- [00:31:41 Функциональные абстракции (superposition)](https://youtu.be/ND8KQ5xjk7o?t=1901) |
| 40 | +- [00:38:02 Функциональные абстракции, с сохранением выражений (composition)](https://youtu.be/ND8KQ5xjk7o?t=2282) |
| 41 | +- [00:45:05 Композиция с 2 функциями](https://youtu.be/ND8KQ5xjk7o?t=2705) |
| 42 | +- [00:46:05 Композиция с n - функциями, при помощи метода reduce](https://youtu.be/ND8KQ5xjk7o?t=2765) |
| 43 | +- [00:51:25 Композиция с n - функциями, при помощи цикла ](https://youtu.be/ND8KQ5xjk7o?t=3085) |
| 44 | +- [00:54:29 Композиция с n - функциями, при помощи рекурсии](https://youtu.be/ND8KQ5xjk7o?t=3269) |
| 45 | +- [00:57:40 Композиция асинхронных функций ](https://youtu.be/ND8KQ5xjk7o?t=3460) |
| 46 | +- [01:01:27 Обобщение](https://youtu.be/ND8KQ5xjk7o?t=3687) |
| 47 | + |
| 48 | +## [Функции высшего порядка, колбеки, события на JavaScript (HigherOrderFunctions, callbacks, events)](https://youtu.be/1vqATwbGHnc) |
| 49 | + |
| 50 | +- [00:00:00 Определение ](https://youtu.be/1vqATwbGHnc?t=0) |
| 51 | +- [00:02:03 Математическая функция ](https://youtu.be/1vqATwbGHnc?t=123) |
| 52 | +- [00:05:57 Функция обратного вызова (callback) ](https://youtu.be/1vqATwbGHnc?t=357) |
| 53 | +- [00:09:33 Замыкание ](https://youtu.be/1vqATwbGHnc?t=573) |
| 54 | +- [00:10:51 Цепочка вызовов ](https://youtu.be/1vqATwbGHnc?t=651) |
| 55 | +- [00:12:40 Сохранение кэша с помощью замыкания](https://youtu.be/1vqATwbGHnc?t=760) |
| 56 | +- [00:18:29 Добавление функции поведение логирования](https://youtu.be/1vqATwbGHnc?t=1109) |
| 57 | +- [00:21:45 Обобщение ](https://youtu.be/1vqATwbGHnc?t=1305) |
| 58 | +- [00:22:45 Сallback](https://youtu.be/1vqATwbGHnc?t=1365) |
| 59 | +- [00:25:32 Сallback асинхронной функции считывание файла](https://youtu.be/1vqATwbGHnc?t=1532) |
| 60 | +- [00:28:36 Сallback именованный](https://youtu.be/1vqATwbGHnc?t=1716) |
| 61 | +- [00:33:01 Сallback-timer ](https://youtu.be/1vqATwbGHnc?t=1981) |
| 62 | +- [00:36:20 Сallback-timer-curry](https://youtu.be/1vqATwbGHnc?t=2180) |
| 63 | +- [00:38:59 Listener](https://youtu.be/1vqATwbGHnc?t=2339) |
| 64 | +- [00:41:10 Listener-timer](https://youtu.be/1vqATwbGHnc?t=2470) |
| 65 | +- [00:46:59 Event](https://youtu.be/1vqATwbGHnc?t=2819) |
| 66 | +- [00:53:45 Event-imitter ](https://youtu.be/1vqATwbGHnc?t=3225) |
| 67 | +- [00:57:48 Deferred object (отложенный объект)](https://youtu.be/1vqATwbGHnc?t=3468) |
| 68 | +- [01:01:31 Errors](https://youtu.be/1vqATwbGHnc?t=3691) |
| 69 | + |
| 70 | +## [Примеси, обертки, декораторы, мемоизация в JavaScript (Wrappers)](https://youtu.be/oRQ0kQr1N-U) |
| 71 | + |
| 72 | +- [00:00:00 Синхронная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=0) |
| 73 | +- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=175) |
| 74 | +- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=508) |
| 75 | +- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=950) |
| 76 | +- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=1365) |
| 77 | +- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/oRQ0kQr1N-U?t=1538) |
| 78 | +- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/oRQ0kQr1N-U?t=1656) |
| 79 | +- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/oRQ0kQr1N-U?t=1790) |
| 80 | +- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/oRQ0kQr1N-U?t=1949) |
| 81 | +- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/oRQ0kQr1N-U?t=2343) |
| 82 | +- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/oRQ0kQr1N-U?t=2548) |
| 83 | +- [00:45:47 Примесь поля через точку ](https://youtu.be/oRQ0kQr1N-U?t=2747) |
| 84 | +- [00:51:35 Примесь поля через функцию extend](https://youtu.be/oRQ0kQr1N-U?t=3095) |
| 85 | +- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/oRQ0kQr1N-U?t=3455) |
| 86 | +- [00:59:18 Примесь поведения ](https://youtu.be/oRQ0kQr1N-U?t=3558) |
| 87 | +- [01:02:23 Примесь изменения класса](https://youtu.be/oRQ0kQr1N-U?t=3743) |
| 88 | +- [01:06:50 Определение](https://youtu.be/oRQ0kQr1N-U?t=4010) |
| 89 | +- [01:07:30 Реализация простой мемоизации ](https://youtu.be/oRQ0kQr1N-U?t=4050) |
| 90 | +- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/oRQ0kQr1N-U?t=4483) |
| 91 | +- [01:20:43 Удаление накопленного кэша ](https://youtu.be/oRQ0kQr1N-U?t=4843) |
| 92 | +- [01:25:35 Асинхронная мемоизация ](https://youtu.be/oRQ0kQr1N-U?t=5135) |
| 93 | +- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/oRQ0kQr1N-U?t=5470) |
| 94 | +- [01:33:32 Реализация сложной мемоизации](https://youtu.be/oRQ0kQr1N-U?t=5612) |
| 95 | + |
| 96 | +## [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) |
| 97 | + |
| 98 | +- [00:00:00 Введение ](https://youtu.be/PfuEfIiLX34?t=0) |
| 99 | +- [00:01:10 Чеининг через синтаксис вызова функций ](https://youtu.be/PfuEfIiLX34?t=70) |
| 100 | +- [00:02:12 Prototype ](https://youtu.be/PfuEfIiLX34?t=132) |
| 101 | +- [00:05:45 Сlass](https://youtu.be/PfuEfIiLX34?t=345) |
| 102 | +- [00:06:11 Functor](https://youtu.be/PfuEfIiLX34?t=371) |
| 103 | +- [00:11:54 Mutable](https://youtu.be/PfuEfIiLX34?t=714) |
| 104 | +- [00:16:34 Iterator](https://youtu.be/PfuEfIiLX34?t=994) |
| 105 | +- [00:26:18 Promise ](https://youtu.be/PfuEfIiLX34?t=1578) |
| 106 | +- [00:26:35 Test](https://youtu.be/PfuEfIiLX34?t=1595) |
| 107 | +- [00:37:08 Compare ](https://youtu.be/PfuEfIiLX34?t=2228) |
| 108 | +- [00:39:45 Benchmark](https://youtu.be/PfuEfIiLX34?t=2385) |
| 109 | +- [00:40:48 Запуск и анализ тестов ](https://youtu.be/PfuEfIiLX34?t=2448) |
| 110 | +- [01:03:48 Первый способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=3828) |
| 111 | +- [01:09:24 Второй способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=4164) |
| 112 | +- [01:12:26 Возвращение ошибок в асинхронном коде ](https://youtu.be/PfuEfIiLX34?t=4346) |
| 113 | +- [01:16:14 Корректное возвращение ошибок ](https://youtu.be/PfuEfIiLX34?t=4574) |
| 114 | +- [01:20:03 Обработка ошибок c promise ](https://youtu.be/PfuEfIiLX34?t=4803) |
| 115 | +- [01:23:58 Обработка ошибок c async-await](https://youtu.be/PfuEfIiLX34?t=5038) |
| 116 | + |
| 117 | +## [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) |
| 118 | + |
| 119 | +## [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) |
| 120 | + |
| 121 | +- [00:00:00 Определение функтора ](https://youtu.be/3Z7f0Gi8pxw?t=0) |
| 122 | +- [00:01:40 Функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=100) |
| 123 | +- [00:08:17 Функтор из прототипа (упрощенный) ](https://youtu.be/3Z7f0Gi8pxw?t=497) |
| 124 | +- [00:09:14 Функтор из замыкания ](https://youtu.be/3Z7f0Gi8pxw?t=554) |
| 125 | +- [00:11:49 Функтор из замыкания с тернарным оператором](https://youtu.be/3Z7f0Gi8pxw?t=709) |
| 126 | +- [00:12:44 Аппликативный функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=764) |
| 127 | +- [00:18:08 Аппликативный функтор из замыкания (монада)](https://youtu.be/3Z7f0Gi8pxw?t=1088) |
| 128 | +- [00:23:11 Пример применения монады ](https://youtu.be/3Z7f0Gi8pxw?t=1391) |
| 129 | +- [00:28:37 Функциональный объект ](https://youtu.be/3Z7f0Gi8pxw?t=1717) |
| 130 | +- [00:39:44 Пример применения функционального объекта](https://youtu.be/3Z7f0Gi8pxw?t=2384) |
| 131 | +- [00:45:27 Обобщение](https://youtu.be/3Z7f0Gi8pxw?t=2727) |
| 132 | + |
| 133 | +## [Отмена асинхронных операций, cancellable callback and Promise в JavaScript](https://youtu.be/T8fXlnqI4Ws) |
| 134 | + |
| 135 | +## [Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) |
| 136 | + |
| 137 | +## [Примеси, обертки, декораторы, мемоизация](https://youtu.be/2h9syXN5wO0) |
| 138 | + |
| 139 | +- [00:00:00 Синхронная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=0) |
| 140 | +- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=175) |
| 141 | +- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=508) |
| 142 | +- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=950) |
| 143 | +- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=1365) |
| 144 | +- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/2h9syXN5wO0?t=1538) |
| 145 | +- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/2h9syXN5wO0?t=1656) |
| 146 | +- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/2h9syXN5wO0?t=1790) |
| 147 | +- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/2h9syXN5wO0?t=1949) |
| 148 | +- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/2h9syXN5wO0?t=2343) |
| 149 | +- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/2h9syXN5wO0?t=2548) |
| 150 | +- [00:45:47 Примесь поля через точку ](https://youtu.be/2h9syXN5wO0?t=2747) |
| 151 | +- [00:51:35 Примесь поля через функцию extend](https://youtu.be/2h9syXN5wO0?t=3095) |
| 152 | +- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/2h9syXN5wO0?t=3455) |
| 153 | +- [00:59:18 Примесь поведения ](https://youtu.be/2h9syXN5wO0?t=3558) |
| 154 | +- [01:02:23 Примесь изменения класса](https://youtu.be/2h9syXN5wO0?t=3743) |
| 155 | +- [01:06:50 Определение](https://youtu.be/2h9syXN5wO0?t=4010) |
| 156 | +- [01:07:30 Реализация простой мемоизации ](https://youtu.be/2h9syXN5wO0?t=4050) |
| 157 | +- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/2h9syXN5wO0?t=4483) |
| 158 | +- [01:20:43 Удаление накопленного кэша ](https://youtu.be/2h9syXN5wO0?t=4843) |
| 159 | +- [01:25:35 Асинхронная мемоизация ](https://youtu.be/2h9syXN5wO0?t=5135) |
| 160 | +- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/2h9syXN5wO0?t=5470) |
| 161 | +- [01:33:32 Реализация сложной мемоизации](https://youtu.be/2h9syXN5wO0?t=5612) |
| 162 | + |
| 163 | +## [Мемоизация функций: memoize в JavaScript](https://youtu.be/H6S8QJo2Qxg) |
| 164 | + |
| 165 | +## [Композиция функций (pipe, compose) в JavaScript](https://youtu.be/xS9FicVrOTI) |
0 commit comments