КОМЕНТАРІ
@hyperborean72
@hyperborean72 Годину тому
спасибо за качественный контент
@dmitrykuskov6715
@dmitrykuskov6715 3 години тому
Интересная тема для меня. В свое время проходил курс по 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 будут выведены автоматически.
@yarosav5396
@yarosav5396 4 години тому
следующий шаг, это после этого псевдообьяснение монад и функторов, это объяснить дайрект стайл, алг эффекты и континуации
@yarosav5396
@yarosav5396 4 години тому
м-да, около фп макакинг пошел, от ооп макаки, хоть бы на какой-то скале примеры показывал, другая совсем model of eval etc
@vid253
@vid253 4 години тому
Теперь бы более продвинутый пример, например универсальный контроллер для CRUD любых таблиц, пример использования knex чтобы руками запросы не писать, ну и что нибудь на твоё усмотрение 😅
@disconnect3763
@disconnect3763 6 годин тому
Коментарий оставил, лайк тоже!
@user-kq5gh9is8g
@user-kq5gh9is8g 7 годин тому
Потрясающее видео, все максимально доступно, очень насыщенно, спасибо! Прошло две недели, но зато хватило всего одного видео, чтобы узнать кууучу всего что нужно для большинства проектов! Одно видео и можно идти писать проект)
@ikakSlohno
@ikakSlohno 8 годин тому
Легенда
@alexander2576
@alexander2576 9 годин тому
Очень полезный материал! Нашёл для себя то, что искал )) Прекрасная подача материала! Благодарю!
@user-jc9xt5tp7i
@user-jc9xt5tp7i 9 годин тому
Спасибо за огромный вклад в будущее многих программистов 🤗 очень крутой видос вышел, правда где объяснения класса Контейнеров там стоит не класс, а конст) бывает опечаточки)
@igormalykhin5528
@igormalykhin5528 10 годин тому
Ребят, если у кого есть время, подскажите как к этой сборке прикрутить тейлвинд, куда что правильно прописать. А то что-то не выходит, стили не применяются, но и ошибок не показывает. Спасибо
@Spermoroid
@Spermoroid 11 годин тому
Очень много семантических ошибок в примерах псевдокода, внимательнее нужно быть.
@deftones4755
@deftones4755 14 годин тому
Ты не прошел собеседование
@user-vp9qe7gh1h
@user-vp9qe7gh1h 16 годин тому
Благодарю за контент! очень классное объяснение, жду не дождусь, когда начну использовать redux у себя в проектах
@DemianOliinyk-km4gr
@DemianOliinyk-km4gr 17 годин тому
Большое спасибо автору, за старание над созданием таких обучающих видео
@mr.pickles7853
@mr.pickles7853 17 годин тому
Думаю поступить в институт на программиста,что скажите?
@user-vp9qe7gh1h
@user-vp9qe7gh1h 18 годин тому
Спасибо Вам большое, на пальцах эту тему объяснили, сам бы сидел с неделю грыз это
@HaywasterChannel
@HaywasterChannel 23 години тому
Видео крутое, без споров молодец, но у меня все же есть пара вопросов: 1) Почему не рассмотрена тема рекурсии? 2) Иммутабельный подход требует постоянного создания копий. Это значит, что у нас постоянно выделяется память для их хранения, что не есть хорошо. Допустим то же использовние .map.filtet в конечном итоге создаст нам целых две копии. Этот момент как-то обрабатывается в JS? Ведь хотелось бы, чтобы конечный код хорошо работал и минимально расходовал память
@vladislavkomkov5178
@vladislavkomkov5178 День тому
- 2 года жизни на это, какой ужас, почему только сейчас мне хватила достоинства закончить эти мучения
@user-tx5sr8ex9m
@user-tx5sr8ex9m День тому
02:02:00 при попытке вывести в логах переменную выводит undefined, все перепробовал не могу понять в чем загвоздка.
@Kokurorokuko
@Kokurorokuko День тому
По-моему, на 51:00 f и g нужно поменять местами. Сначала применяется f (она должна быть внутри), а потом g.
@user-no7sl1yk3f
@user-no7sl1yk3f День тому
Действительно успокоил. Иногда начинаю кидаться за все подрят в панике что упущу что-то невероятно важное или "я не знаю зачем это мне, но я не программист если не послушаю про это"
@kitN
@kitN День тому
в конце видео наблюдаю что то похожее на попытку изобразить фигуры в разных количествах(кратностях) измерений?)
@skyranor6854
@skyranor6854 День тому
Спасибо за труд!
@verasmirnova503
@verasmirnova503 День тому
Лучший! Просто лучший! Самый информативный и краткий!
@some_body_qtyeeuy
@some_body_qtyeeuy День тому
Благодарствую!
@user-fd9eb9de2u
@user-fd9eb9de2u День тому
Вряд ли бы сделал видосик получше, тем более с той скоростью с которой ты их делаешь (респект и все такое))) но тему с каррированием пришлось разбирать с помощью learn.javascript, lodash и ChatGPT и это при том что пару лет назад просматривал эту тему - по моему сложновато будет для "не подготовленных)))))"
@vladyslavbrataniuk1324
@vladyslavbrataniuk1324 День тому
насколько эта тема продвинута? Что +- требуется от джуна в этом направлении?
@HaywasterChannel
@HaywasterChannel День тому
Блин, я искал буквально 3 дня назад видео по сравнению парадигм ООП и ФП, не нашел. И тут бабах! Очень кстати) Спасибо большое, Тимур!
@doublegold4061
@doublegold4061 День тому
пиздец, я нихуя не понимаю, слишком много ненужных терминов
@rikenbaker1
@rikenbaker1 День тому
Большое спасибо! Очень помоги в обучении
@artkrauchanka1779
@artkrauchanka1779 День тому
Ребятки, а чего айтишники так хиленько и болезненно выглядят? Огромные просадки со зрением, избыток веса, антисоциальные повадки... Наблюдаю больных и нервных людей с 5-10тыс. Долларов в месяц. Убить себя за бабки?
@dimitriywhite7728
@dimitriywhite7728 День тому
Получается, замыкание = грязная функция?
@dmitriy4415
@dmitriy4415 День тому
Никаких объектных обёрток над примитивами нет. Это выдумка. Смотри настоящую спецификацию.
@Son0fBeelzebub
@Son0fBeelzebub 6 годин тому
поэтому в в8 объекты типа String/Number/etc.. помечаются как JSPrimitiveWrapper? примитив - это просто данные в виде объекта с метадатой внутри хипа джса. данные объекты - это объекты "вокруг" данных с доступом до методов над этими данными. так что глупость про "настоящую спецификацию", потому что они друг другу не противоречат
@dmitriy4415
@dmitriy4415 5 годин тому
@@Son0fBeelzebub причём тут v8? А в Firefox что происходит? А в safari? Есть спецификация, где описан алгоритм, что делать, если идёт обращение к свойству примитивного значения. И не важно как там в deno или bun кто что как назвал.
@Son0fBeelzebub
@Son0fBeelzebub 3 години тому
@@dmitriy4415 И в спайдерманки, и в джскор - +- аналогичные разновидности этого же механизма. то, что алгоритм называется иначе - не значит, что у подобного механизма нет академического названия. К примитивному значению при обращении неявно вызывается конструктор с доступом к методам. Так что тут как не виляй пятой точкой - суть дела не меняется.
@user-xm5hp5qp3i
@user-xm5hp5qp3i День тому
Я не понимаю как ты умудряешься все так сжать и одновременно четко и объемно рассказать. Люто плюсую. Если бы я просто прочитал где такой код я бы сначала подофигел знатно. Немножко бы хотелось use case побольше, наверняка в rxjs массово применяются эти монады и функторы.
@user-wl2ok2mf6n
@user-wl2ok2mf6n День тому
Как же ты хорош!
@diamondserg-43
@diamondserg-43 День тому
Спасибо
@Miixx-jb6hk
@Miixx-jb6hk День тому
Мне 15 лео,хочу научится программировать.Подскажите пожалуйста,с чего начать(я полный ноль)
@03Rai
@03Rai 2 дні тому
благодарю ♡. топчик 😍
@user-ok6rt7zb8p
@user-ok6rt7zb8p 2 дні тому
Брат я так долго искал ошибку и с твоей помощью все понял. Спасибо большое за такой гайд. Респект и уважение
@vladislavepstein
@vladislavepstein 2 дні тому
После 15 минут видео у меня как радио-электромонтажника начал дёргаться глаз, а голова начала склоняться в сторону от количества информации, в ушах начался скрип текстолита и потихоньку валить дым от флюса :D Занятно, интересно, но нихрена не понятно)
@olegsozonik94
@olegsozonik94 2 дні тому
Тимур огромное спасибо!!! Глыба Красавчик👏
@sadcreateramv2724
@sadcreateramv2724 2 дні тому
Смотря и слушая это все, я осознал, что я не стану никогда программистом :D
@bogdankhamelyuk3857
@bogdankhamelyuk3857 2 дні тому
Братуха от души за информацию 🫡💪✊
@Peter-vz4tb
@Peter-vz4tb 2 дні тому
За курс по Angular (+ може nestjs) я б навіть гроші заніс
@midrala
@midrala 2 дні тому
Хочется сказать слова поддержки и выразить свое уважение к автору проделанную им работу. Спасибо Человек, ты делаешь этот мир лучше! Проделанная тобой работа помогает действительно стремящимся к знаниям людям получить их быстро и безболезненно, продолжай очень нравится. Творческих успехов и активной аудитории тебе!
@UlbiTV
@UlbiTV День тому
Спасибо за такие слова ❤️🙏
@kostya4182
@kostya4182 2 дні тому
Господи, как же все понятно, уже смотрю второй раз и все так же на одном дыхании. Смотрел в первый раз с телефона и только слушал т.к не было возможности кодить, щас смотрю второй раз но уже и что-то пытаюсь сделать в редакторе, и ощущение, интерес точно такой же как и при первом просмотре. Спасибо вам!!
@user-hy4qw4ki3o
@user-hy4qw4ki3o 2 дні тому
Привет! Видео класс! Подскажи где ты рисуешь видеоряд? Слайды и т.д.
@user-fx1so3hb9w
@user-fx1so3hb9w 2 дні тому
Крутейший курс. Спасибо большое
@asmodeus7862
@asmodeus7862 2 дні тому
Крутые фишечки! От души;)