Тёмный

Функциональное программирование от А до Я. ФП на JS. Монады, функторы, каррирование, композиция 

Ulbi TV
Подписаться 299 тыс.
Просмотров 43 тыс.
50% 1

В этом видео мы поговорим про функциональное программирование на javascript. Разберем такие темы как: Декларативность, Чистые функции и сайд эффекты, Иммутабельность (неизменяемость), Функции первого класса, Функции высшего порядка, Композиция/конвейер, Частичное применение и каррирование, Chaining, Контейнеры, Функторы и аппликативные функторы, Монады, Спецификация Fantasy-Land
Мой курс "Продвинутый Frontend. В production на React", скидка 20% - ulbitv.ru/frontend
Таймкоды:
00:00 ➝ Введение
01:30 ➝ План на урок
04:00 ➝ Что такое ФП? Сравнение с ООП
07:20 ➝ Концепции ФП
09:00 ➝ Декларативность vs императивность
13:25 ➝ Чистые функции и сайд эффекты
18:10 ➝ Иммутабельность (неизменяемость данных)
22:40 ➝ Минусы мутабельности и преимущества иммутабельности
24:20 ➝ Функции первого класса
26:40 ➝ Функции высшего порядка
31:20 ➝ Смысл концепций ФП
33:10 ➝ Композиция (compose)
37:00 ➝ Конвейер (pipe)
37:45 ➝ Каррирование и частичное применение
45:50 ➝ chaining (цепочки вызовов)
46:40 ➝ Контейнеры
52:05 ➝ Функторы и монады
58:55 ➝ Аппликативные функторы
01:03:10 ➝ Спецификация Fantasy land
01:04:10 ➝ Другие монады (either, future, writer)
01:06:40 ➝ Время ставить лайки и писать комментарии) всем спасибо!
Ссылка на мой телеграм канал - t.me/ulbi_tv
Поддержать меня и мой канал вы можете по ссылкам ниже.
Patreon/boosty (доступ к бонусам) - boosty.to/ulbitv
Qiwi кошелек - qiwi.com/n/BODYE821
Яндекс деньги - yoomoney.ru/to/4100116193037469

Наука

Опубликовано:

 

2 июн 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 262   
@fatcat4168
@fatcat4168 Месяц назад
Сегодня досрочно закрыл испытательный срок на своей первой работе фронтом 🎉🎉🎉 во многом благодаря Тимуру🎉🎉🎉, прошел почти весь курс, не дошел только до последнего раздела. Проходил ещё на первом потоке, у меня там была аватарка с вислоухим котом😺 когда прошел, на полгода забросил, но всё-таки взял себя в руки и устроился😊 всем удачи и верьте в себя!
@es7729
@es7729 Месяц назад
Мои поздравления! Красавчик!
@vladislavkomkov5178
@vladislavkomkov5178 Месяц назад
Хвастайся зп в 3 кириешки))
@webtensei2327
@webtensei2327 Месяц назад
@@vladislavkomkov5178так все с чего-то начинают)
@diamondserg-43
@diamondserg-43 Месяц назад
Молодец!
@arthurq7843
@arthurq7843 25 дней назад
Сколько опыта крутил?)
@vitalex9383
@vitalex9383 Месяц назад
Ролик вышел, как раз за час, до собеса. Решил быстро глянуть. И на собесе, спросили про функциональное программирование и функции высшего порядка. И я как выдал всю базу, которая есть в ролике, даже доп вопросов не задали😂. Спасибо Тимур за твой труд, за твои бесплатные и платный курсы.
@ker4ik13
@ker4ik13 Месяц назад
Обожаю твои уроки. Нет никого, кто объяснял бы понятнее и интереснее
@UlbiTV
@UlbiTV Месяц назад
Стараемся, спасиб)
@404Negative
@404Negative Месяц назад
неет нееет никого кроме бога одного
@sidless3862
@sidless3862 Месяц назад
Вообще, когда только начинал изучение JavaScript, считал его именно функциональным языком. Да и по факту большую часть времени пишу в функциональном стиле, и люблю его больше чем ООП. По-моему на фронте в ООП пишут только Ангулярщики, но могу ошибаться. Спасибо за очень информативный ролик, как всегда лучший!
@-Forever-Young-
@-Forever-Young- Месяц назад
Сразу лайк! Нет сомнений в качестве
@LeonidPolyakov
@LeonidPolyakov Месяц назад
Да, 100 процентов будет адекватно и информативно.
@dmitrykuskov6715
@dmitrykuskov6715 Месяц назад
Интересная тема для меня. В свое время проходил курс по Haskell, поэтому постараюсь дополнительно разъяснить про Монаду и Аппликативный функтор, если кому-то интересно, но не до конца понятно. 1) Монада - это структура, являющаяся наследником Функтора, но для которой дополнительно реализован метод chain. В разных языках/библиотеках название может быть разным. chain очень похож на map, отличие в том, что передаваемая в метод chain функция возвращает не значение (как в случае с map), а сам контейнер, в который запаковано значение. Пример Монады, который прямо под носом, но не был в таком ключе упомянут в видео - это Array. Для него методом chain по своей сути является flatMap: ведь функция, передаваемая во flatMap возвращает сам контейнер - Array: const duplicate = (arr) => arr.flatMap((n) => [n, n]); duplicate([1,2,3]); // [1,1,2,2,3,3] ramdajs.com/docs/#chain Как видно из примера, Монада - это более мощный интерфейс, чем Функтор, потому что позволяет менять не только запакованные значения(в случае с map), но и структуру самого контейнера. При использовании Maybe как Монады мы можем преобразовать Maybe в Nothing (использую псевдо-код): Maybe.of(1).chain(() => Nothing); // Nothing Maybe.of(1).chain((n) => Maybe.of(n * 2)); // Maybe(2) Используя Maybe как Функтор, мы можем изменить только значение, но не сам контейнер: Maybe.of(1).map((n) => n * 2); // Maybe(2) Промис в некотором понимании можно использовать и как Функтор, и как Монаду: Promise.resolve(1).then((n) => n * 2); Promise.resolve(1).then((n) => Promise.resolve(n * 2)); 2) Если кратко говорить про Аппликативный функтор, то он нужен, чтобы применять обычную функцию к упакованным значениям. Важно, чтобы все аргументы функции были одного типа. Например, у нас есть функция сложения, работающая с примитивами: const sum = (a, b) => a + b; Но мы хотим сложить не просто 2 числа, а 2 числа, упакованных в Maybe, причем сделать это лаконично и переиспользуя функцию sum. Maybe является Аппликативным функтором, т.к. реализует метод ap. Поэтому можем решить задачу так: const maybeResult = liftA2(sum, maybe1, maybe2); Если хотя бы 1 из переданных Maybe окажется Nothing, то результат всего выражения будет Nothing: такое поведение прописано в реализации ap для Maybe, которая дергается внутри liftA2. Для других структур поведение может быть своим, главное, чтобы оно удовлетворяло законам Аппликативных функторов. 3) Также можно упомянуть, что любая Монада является Аппликативным функтором, а любой Апликативный функтор является обычным Функтором. Это видно на схеме спецификации fantasy-land. На практике это означает, что если нам нужно объявить какую структуру Монадой, то нам достаточно реализовать только метод chain, а реализация методов ap и map будут выведены автоматически.
@user-dn7qr7vs1h
@user-dn7qr7vs1h 2 дня назад
Еще нужно для ясности подчеркнуть в чем отличия на практике. Упрощенно: Функторы позволяют выразить чистые вычисления в контексте. (в вычислениях можно производить вычисления) Аппликативные функторы позволяют выразить параллельные вычисления в контексте. (вычисления можно комбинировать) Монады позволяют выразить последовательные вычисления в контексте. (вычисления зависят от результатов предыдущих) Из этого, кстати, следует, что аппликативы можно статически исследовать, не интерпретируя (превратить в обычную структуру данных), в то время как с монадой - не прокатит. Ее придется вычислять. Т.е. если какой-нибудь Thread - не аппликатив, то соединить/синхронизировать (joinThread) два треда в результате гонки не получится. Если Thread - не монада, то дождаться выполнения треда, получить его результат, и запустить новый тред в зависимости от результата - не получится.
@ivanandreev1026
@ivanandreev1026 15 дней назад
Очень полезное видео. Как всегда. Простое и ясное обьяснение сложных вещей. Огромное спасибо.
@midrala
@midrala Месяц назад
Хочется сказать слова поддержки и выразить свое уважение к автору проделанную им работу. Спасибо Человек, ты делаешь этот мир лучше! Проделанная тобой работа помогает действительно стремящимся к знаниям людям получить их быстро и безболезненно, продолжай очень нравится. Творческих успехов и активной аудитории тебе!
@UlbiTV
@UlbiTV Месяц назад
Спасибо за такие слова ❤️🙏
@user-cd7iz2iv8h
@user-cd7iz2iv8h 23 дня назад
Спасибо автору, все очень качественно и интересно, отличный звук и видеоряд, ничего лишнего, лучший канал для начинающих разработчиков и не только для них.
@DavitDzneladze0802
@DavitDzneladze0802 17 дней назад
Как всегда очень качествено! большое спасибо!
@user-kw8cq6cd6y
@user-kw8cq6cd6y Месяц назад
Жду структурное программирование на Rust или Go))
@nikitatimofeenko9351
@nikitatimofeenko9351 Месяц назад
Поддерживаю, ждем структурное программирование с примерами и на Rust и на Go
@user-yq6vo5vb9p
@user-yq6vo5vb9p Месяц назад
@@nikitatimofeenko9351 поддерживаю поддерживание, ждем структурное программирование с примерами и на Rust и на Go
@user-dn7qr7vs1h
@user-dn7qr7vs1h 2 дня назад
Пришел от Мурыча, который оподливился, разбирая твоё видео. Дедушка в теме не разбирается. Спасибо за хороший контент по ФП, коего мало на русском. 👍
@Aantonya
@Aantonya 20 дней назад
Спасибо за то что ты делаешь. Я пошёл учится фулл стеком и твои видео всегда дают много знаний даже когда я не знал джс. Качество контента просто топ
@flame_____
@flame_____ 25 дней назад
Крутой ролик, теперь у меня есть понимание этих всех принципов
@Michael-bf7pm
@Michael-bf7pm Месяц назад
Твой ролик про ООП был просто шикарен, поэтому я невероятно ждал видео про ФП! Спасибо большое, Тимур!
@UlbiTV
@UlbiTV Месяц назад
Спасибо! Жду фидбек))
@jspytop
@jspytop 19 дней назад
Еще раз спасибо за обучающие видео. Делаю 2й проект уже за денежку, и прямо по новому переосмысливаю информацию по вью и авторизации. Если все получится - еще денежку занесу ))
@maxoonix
@maxoonix 11 дней назад
Класс, спасибо за видео 🎉
@aliicomua1369
@aliicomua1369 Месяц назад
Спасибо за контент. Всё равно на какую тему ролик от этого автора, главное что 100% это будет полезно.
@Kokurorokuko
@Kokurorokuko Месяц назад
По-моему, на 51:00 f и g нужно поменять местами. Сначала применяется f (она должна быть внутри), а потом g.
@romandeveloper7720
@romandeveloper7720 День назад
да-да, плюсую. сомнительно выглядит
@kowkavn2356
@kowkavn2356 Месяц назад
Лайк однозначно, коммент для продвижения, и вопрос по другой теме - снимаешь разбор Rx.js? Могу ошибаться, но она в стиле фп вроде. И как продолжение темы, или в принципе для расширения кругозора интересно услышать твое мнение и опыт в ней.
@Sergei546
@Sergei546 Месяц назад
супер контент!!! ждал! спасибо за труд!
@tahrizade
@tahrizade Месяц назад
ждем - про Микросервери , микрофронтенд И так далее 😊
@solovievss
@solovievss Месяц назад
Очень наглядное руководство по ФП! Разработчики, поделитесь опытом, может кто-то использовал ФП у себя в проектах? У меня дальше carry,compose,map в рамках ramda и lodash дело не пошло. С ts типизацией очень громоздкий код получался.
@konstantinsologub9568
@konstantinsologub9568 Месяц назад
Не понимаю как я не подписался на тебя раньше, хотя просматривал твои ролики до этого момента. Очень доходчиво объясняете и отличная дикция!
@UlbiTV
@UlbiTV Месяц назад
Спасибо!
@user-cw4xs7ed1y
@user-cw4xs7ed1y 15 дней назад
@UlbiTV Спасибо за полезные видео! Было бы интересно посмотреть видео на темы: 1. изменения настроек вебпака из сборки командой npx create-react-app. 2. Управление глобальным состоянием приложения, с помощью ApolloClient (для исключения использования другого state manager (типа redux) или контекста реакта). Т.е. управление кешем (через хуки или нормальзованными данными, возможно qraphql-codegen), объявление и управление локальными данными клиента (@client, writeQuery, makeVar, useReactiveVar). Интересно было бы посмотреть твое видение организации кода и управление состоянием.
@user-dw8lb8lc7u
@user-dw8lb8lc7u Месяц назад
Спасибо ЮЛЬБИ!!! уникальный качественный контент
@user-yt9he6ud5r
@user-yt9he6ud5r Месяц назад
Фунцкиональный стиль в JS это богоугодное дело! Жду не дождусь когда в спецификацию JS добавят конвейерный (pipeline) оператор |>
@awenn2015
@awenn2015 Месяц назад
Я лично жду когда в js добавят выражение по типу этого (выражение раннего выхода как в котлинине) const a = 5 ;((a: number) => { const b = a-5 || return false }) (a) Что бы не проверять ифами какую то тему и выходить в ифе
@ode2877
@ode2877 Месяц назад
Интересна штука особенно про монады, захотелось попробовать применять для избавления фигурных скобочек if error try catch и тд, единственное не хочется терять в производительности из за красоты, не знаю насколько v8 оптимизирует такие функциональные фокусы
@MAKS-FISHER
@MAKS-FISHER Месяц назад
Видно, что как всегда стараешься, спасибо тебе огромное, но я понял только поверхностно (всегда стараюсь твои уроки перематывать по "300" раз пока полностью все не пойму...), но досконально на таких примерах наверно и не нужно, а то мозг под плавится ))!!! Надеюсь, что когда будешь делать какие-то уроки с живым кодом, то будешь и вспоминать про этот урок приводя примеры с живым кодом, думаю, что не только я это ценю ))) !!! Желаю тебе вдохновения по более и ждем следующих видео.
@the_fisherman560
@the_fisherman560 9 дней назад
Сразу лайк!
@maratvaliev8642
@maratvaliev8642 26 дней назад
Аналог Конвейера в ООП можно считать паттерн Строитель (Builder). Также похожий подход можно увидеть в функции createSelector, библиотеки Redux-toolkit.
@Roger-qj4wu
@Roger-qj4wu Месяц назад
Спасибо, что продолжаешь давать нам ценный контент!
@user-hy4qw4ki3o
@user-hy4qw4ki3o Месяц назад
Привет! Видео класс! Подскажи где ты рисуешь видеоряд? Слайды и т.д.
@adelinaromanova8353
@adelinaromanova8353 Месяц назад
Лайк! 🎉
@user-frond-end_dev
@user-frond-end_dev Месяц назад
Карта развития или учебы для самостоятельного изучения есть у тебя?
@user-gk1yb3vp4b
@user-gk1yb3vp4b 26 дней назад
Мозг взорван, но мне понравилось))) Продолжай сенсей
@HaywasterChannel
@HaywasterChannel Месяц назад
Блин, я искал буквально 3 дня назад видео по сравнению парадигм ООП и ФП, не нашел. И тут бабах! Очень кстати) Спасибо большое, Тимур!
@barbatage5078
@barbatage5078 Месяц назад
Юлби, жги! Мы тебя любим 🫶🏼 каждый ролик долгожданный!
@helenit4365
@helenit4365 Месяц назад
Да!!!✨️🌟🔥
@bobronaud
@bobronaud 12 дней назад
Тимур, привет. Хочу тебе накинуть идею снять видео по девтулзам от А до Я. Изучаю фронтенд полтора года, но так и не сложилось цельной картины возможностей девтулзов, потому что в интернете очень разбросанная информация, в кучу фиг соберешь А девтулзы это основа основ для фронтендера. Считаю, этим видео ты очень поможешь прокачаться многим в плане отладки кода.
@samiracle9852
@samiracle9852 Месяц назад
Как раз подумывал курс купить, как диплом допишу, но раз такая скидочка, то нельзя откладывать Ну и ролик топ, как обычно
@falsetrue7910
@falsetrue7910 Месяц назад
Качество видео растет от ролика к ролику, смотрю почти каждый ролик и точно могу это сказать 😂 отличное введение в фп, но как ни крути, для полноценного фп надо писать не не js
@nikman5541
@nikman5541 Месяц назад
Отличный ролик на самом деле. Я занимаюсь JS уже 3 года и в этом ролике я открыл для себя новые интересные применения функций. Они вроде бы и были логичными, но про них даже не думал
@VolodymyrSirenko
@VolodymyrSirenko Месяц назад
Для меня очень полезное видео, спасибо!
@darvin2710
@darvin2710 Месяц назад
Тимур лучший, большое спасибо за видео. Твои уроки помогают разобраться лучше всего
@trusigmacom
@trusigmacom 8 дней назад
Просту гуру программирования ❤
@barbatage5078
@barbatage5078 Месяц назад
Сразу лайк не глядя! ❤
@lolimon58
@lolimon58 Месяц назад
Лайк префом. btw я scala разраб
@def1sR
@def1sR 19 дней назад
Ребят, подскажите как вы находите работу онлайн на позиции стажера или младшего разработчика? На LinkedIn просят невозможного , ( 4+ года опыта в реакте и .т.п вещи ) может есть другие источники?
@awenn2015
@awenn2015 Месяц назад
44:55 у меня вопрос, как типизировать такие каррированные функции? Тупо возвращать function и результат?
@musicthreads
@musicthreads Месяц назад
Лайкос тебе, дружище, за работу!
@yohohowowowo9471
@yohohowowowo9471 Месяц назад
О, это для меня! Я, конечно, не программист, но иногда приходится писать код, причём в основном на Лиспе или VBA, где ООП не реализовано. И именно в Лиспе, функции - это основной и довольно мощный инструмент. Из-за специфики кода, при написании программы, сначала приходится прописывать все функции последовательно от самого высокого уровня вложенности до самого низкого.
@ammoney159
@ammoney159 Месяц назад
Хороший видос, апдейт по монтажу хороший, спасибо
@TarasovFrontDev
@TarasovFrontDev 29 дней назад
Про контейнеры на 48:00 я совсем не понял. Каким образом мы данные инкапсулировали, если они доступны через свойство инстанса?
@Aristockij
@Aristockij Месяц назад
это что хоть такое-то? я неделю всасывал урок по вебпаку и тут нннныа и еще один видос подъехал! мне хотя бы половинку такой продуктивности
@eunicsi
@eunicsi Месяц назад
Лайк и комментарий для продвижения автоматически, спасибо!
@dmitriynemkov1380
@dmitriynemkov1380 Месяц назад
В какой программе презентацию делаешь?
@user-wu8zt4we5n
@user-wu8zt4we5n Месяц назад
А ты видел nodejs со встроенным gpt? Такой забавный Франкенштейн, но выглядит круто: переход к коду программы на человеческом языке!
@user-sc5qy2zw9s
@user-sc5qy2zw9s Месяц назад
Можно ли считать reducer чистой функцией, если у него дефолтное значение - переменная, определенная выше
@UlbiTV
@UlbiTV Месяц назад
Можно) это аргумент, такой же, просто с дефолтным значением, на чистоту не влияет
@user-rw3gf4te4e
@user-rw3gf4te4e Месяц назад
просто шикарно!
@yggllen
@yggllen Месяц назад
В целом интересная теория, но со стороны большого опыта работы на Java с StreamApi, Function, Optional, Consumer и тп. в JS вся эта структура кажется сложнее, хотя плюс минус тоже самое. Для меня самое сложное было понять как работают кастомные хуки в реакте, как я понимаю это также все выходит из ФП, но так как в java нет прямой аналогии для меня это выглядело как магия
@awenn2015
@awenn2015 Месяц назад
2:32 Я хоть и давно в вебе (3 года в js) но последние 5 пунктов вообще хз что это такое, как будто из ассемблера что то)) Хотя посмотрев ролик понимаешь что рано или поздно с опытом даже не зная этих заумных терминов сам приходишь к декларативности
@ada280202
@ada280202 Месяц назад
На 50:45 разве g и f справа от знака равенства не перепутаны?
@yakut54
@yakut54 Месяц назад
Феноменально! Как и всегда. Снимаю шляпу!
@nk_77777
@nk_77777 Месяц назад
Лайк со старта)❤
@romandeveloper7720
@romandeveloper7720 День назад
а откуда взят материал? особенно определения функторов и прочих
@tuku_mann
@tuku_mann Месяц назад
37:38 здесь опечатка на слайде или я не уловил мысль?
@miRorshik
@miRorshik Месяц назад
Где то читал об ещё одно важное отличие процедуры от функции это то что процедуры могут изменять данные из глобальной области видимости, а в функциях такое обычно не приветствуется как раз из соображений чистоты функций.
@alexsibrin715
@alexsibrin715 Месяц назад
Дай бог тебе здоровья мужик
@WinchesterD
@WinchesterD Месяц назад
Круто, спасибо за видео! 👍
@user-gd4vi6fv1z
@user-gd4vi6fv1z Месяц назад
Это ОЧЕНЬ классный ролик, спасибо огромное! действительно, ни где не встречала так четко структурированной информации.
@n1kaka
@n1kaka Месяц назад
Сразу лайк и коммент, огромное спасибо за видео😊
@Bespokerug
@Bespokerug Месяц назад
Спасибо за твои труды! Не мог бы ты сделать подобный ролик про паттерны проектирования?
@UlbiTV
@UlbiTV Месяц назад
В todo есть такой ролик
@psycho0sis
@psycho0sis Месяц назад
очень интересно, спасибо!
@alexstepanchhuk683
@alexstepanchhuk683 Месяц назад
Как всегда супер-годный контент!!!! Спасибо!
@talantasanov4973
@talantasanov4973 Месяц назад
видео топ(пока не смотрел, но знаю это))
@user-kv9ur9hi4n
@user-kv9ur9hi4n Месяц назад
на 19.09 функция меняет переданный в нее массив. ???
@Feniks20000
@Feniks20000 Месяц назад
Спасибо за ролик, как всегда, качественно и наглядно
@user-fw1ws8lr8n
@user-fw1ws8lr8n Месяц назад
Очень круто и информативно! Спасибо ♥️
@mr.pickles7853
@mr.pickles7853 Месяц назад
Думаю поступить в институт на программиста,что скажите?
@sattorerror
@sattorerror Месяц назад
безусловно лайк!
@KaHcTpykTap
@KaHcTpykTap Месяц назад
Посмотрю потом, лайк поставил.
@givename48
@givename48 Месяц назад
Может для фана, ролик по Backend серверу на Haskell? Отличное расширение кругозора! (я просто адепт Haskell)
@vetero4eg
@vetero4eg Месяц назад
Уникальный Ulbi, спасибо! Как всегда, очень крутой контент.
@Natalikashka
@Natalikashka 3 дня назад
Благодарность за вашу работу) А бусти ваш еще жив?
@valerygusso1053
@valerygusso1053 Месяц назад
Сначала мы пишем в иммутабельном стиле, а потом удивляемся, почему же 4 вкладки в гугл хроме выжирают всю оперативную память
@Sershir
@Sershir Месяц назад
Спасибо
@Redracer228
@Redracer228 Месяц назад
Надеюсь Ангуляр выйдет хотя в текущем десятилетии 😂
@UlbiTV
@UlbiTV Месяц назад
Я тоже 😂😂😂😂
@404Negative
@404Negative Месяц назад
да кому он нужен этот онгуляр
@tahrizade
@tahrizade 17 дней назад
а когда будет именно про React render , memoization под копотом ??? 🤔🤔🤔 тоест видос для lead )
@abylaev8233
@abylaev8233 Месяц назад
like
@user-hu1gl5lw3p
@user-hu1gl5lw3p Месяц назад
вижу новый видос ставлю лайк
@Ramosok
@Ramosok Месяц назад
Огнище огненное!! супер контент! спасибо!
@user-on4lv7lc9k
@user-on4lv7lc9k Месяц назад
Хороший монтаж. Люблю твои видосы связанные с теорией, оч круто обьясняешь (любимый ролик про eventLoop ) но вот видосы где ты пишешь код и обьясняешь мне не подходят, вообще не понимаю твоей подачи((
@nabijonazamov3695
@nabijonazamov3695 28 дней назад
Good mentor
@03Rai
@03Rai Месяц назад
благодарю ♡. топчик 😍
@andrewkruchini8614
@andrewkruchini8614 Месяц назад
Отличное изложение. Только много опечаток. На 37:37 не выдержал.
@tesohi
@tesohi Месяц назад
Господи, это превосходно! Я столько знаний получил с этого, мега круто! Причем как знаний по ФП, так и много-много знаний по js и лучшему пониманию того что происходит. А ещё мемоизация это лучший пример замыкания🤩 Тимур, это превосходно, ваш курс стоит покупки более чем! 💯💯💯
@vladb3449
@vladb3449 Месяц назад
Круто, спасибо за урок, чувствуется хорошая экспертиза!
@vasil_astrov
@vasil_astrov Месяц назад
Оч круто, спасибо! Благодарю
@kristinavolk2660
@kristinavolk2660 Месяц назад
Спасибо огромнейшее за тонкость и глубину контента. Заставляет явно провернуться шестеренкам в голове 🤓 со шлейфом, что что-то понял )) Эстетично и со вкусом 🌹 считывается, что ты в теме не просто шаришь, знаешь концепции, но ещё и Чувствуешь 💛 гармонично ориентируешься, но и подставляешь себя под критику, чтобы динамически расширить познание и критического мышления, развить его живость, эластичность и остроту. Редкость. Ценно 🫶🏻
@crap2680
@crap2680 Месяц назад
Хорош, братан, контент в кайф, давай еще, ваще красавчик, можно вот этого вот почаще?
Далее
ОВР Шоу: Русская баня @TNT_television
12:06
The purest coding style, where bugs are near impossible
10:25