모나드(Monad)는 사실 쉽습니다. - 함수형 프로그래밍 끝판왕 깨기

Ғылым және технология

#함수형 #프로그래밍 #코딩
이 영상에서는 함수형 프로그래밍 개념 중 하나인 모나드에 대해 설명합니다. 모나드는 값에 함수를 적용하여 새로운 값이 담긴 상자를 만들어내는 기능을 가진 상자로 이해하면 됩니다. 모나드의 기본 기능으로는 유닛(Unit), 맵(Map), 플랫맵(FlatMap)이 있습니다. 유닛은 주어진 값을 모나드로 감싸는 기능, 맵은 주어진 함수를 실행한 결과를 다시 상자에 담아 내보내는 기능, 플랫맵은 이미 상자에 담긴 값을 반환하는 함수를 처리합니다. 이런 기능들 덕분에 모나드는 프로그래밍에서 편리하게 값을 처리하고, 어려운 문제를 간소화 하는 데 도움이 됩니다. 그러므로, 이해하고 사용할 줄 아는 것은 프로그래밍 실력 향상에 큰 도움이 됩니다. 이 영상을 통해 모나드의 기본 개념과 작동 원리, 그리고 간단한 예제를 통해 모나드를 이해하는 데 도움이 되었으면 합니다.
= = =
🏠 얄코사이트: www.yalco.kr
📖 얄코 도서: www.yalco.kr/book/
🧑‍🏫 얄코 강의: www.yalco.kr/#lectures
🎥 제대로 파는 Git & GitHub: • 제대로 파는 Git & GitHub (대...
🎥 제대로 파는 자바: • 제대로 파는 자바 - Java 끝.장.내...
🎥 제대로 파는 파이썬: • 제대로 파는 파이썬 - Python 끝장...
🎥 제대로 파는 자바스크립트: • (구판) 제대로 파는 자바스크립트 - 고...
🎥 제대로 파는 HTML & CSS: • 제대로 파는 HTML & CSS (대학생...
🎥 갖고 노는 MySQL 강좌: • 왕초보용! 갖고 노는 MySQL 데이터베...
🎥 반응형 프로그래밍 RxJS 강좌: • 반응형 프로그래밍이 뭔가요? (+ Rea...

Пікірлер: 34

  • @yalco-coding
    @yalco-coding27 күн бұрын

    🎫 얄코 강의 선착순 반값쿠폰 (매주 갱신) bit.ly/yalco-fcfs-coupon 예제코드 확인 : yalco.notion.site/Monad-f6054c8685f14a73a4a6853cd11f4431?pvs=4 얄코 강좌들 보기: www.yalco.kr/#lectures 얄코 책 보기: www.yalco.kr/#books

  • @isle1009
    @isle100926 күн бұрын

    다른 설명으로는 이해하기가 쉽지 않았는데 이 영상을 보고 이해가 됐습니다. 감사합니다~!

  • @yalco-coding

    @yalco-coding

    26 күн бұрын

    이해에 도움되어드렸다니 정말 기쁩니다 ㅠㅜ 감사합니다!!

  • @gagip7777
    @gagip777727 күн бұрын

    모나드의 특성을 잘 활용한 사례가 Railway oriented programming 라고 생각해요. 저는 코틀린의 Result를 통해 처음 접했는데 신선한 충격이었습니다.ㅋㅋㅋ 연산 중 에러 처리를 보통 try-catch로 하는데 Result라는 일관된 타입을 통해 정상이든 에러든 보다 일관된 흐름으로 작성할 수 있다는 이점이 큰 것 같았어요 이전에 얄코님 Rx강의로 함수형 프로그래밍을 공부했었는데 최근 영상으로 다시 복습하게 되네요 감사합니다

  • @yalco-coding

    @yalco-coding

    27 күн бұрын

    그 강의 수강하셨군요!! 코틀린 것도 살펴봐야겠습니다. 감사합니다!!

  • @aAgglkw221
    @aAgglkw22127 күн бұрын

    좋은 영상 감사합니다

  • @yalco-coding

    @yalco-coding

    27 күн бұрын

    감사합니다!

  • @orlein
    @orlein26 күн бұрын

    "자기함자 범주의 모노이드가 뭐가 그렇게 어렵다는거야!"

  • @curtsoon6135
    @curtsoon613526 күн бұрын

    모나드는 어떻게 사용하는가? 에 초점이 있군요. 비슷한 설명을 볼때마다 훨씬 간단하게 같은일을 할 수 있는데 모나드를 써야할 이유는 무엇일까? 도 같이 설명해줬으면 하곤 합니다 ㅎㅎ

  • @yalco-coding

    @yalco-coding

    26 күн бұрын

    일단 영상에서도 예시들을 통해 설명을 드렸지만... 콕 집기 어려운게 모나드마다 용도가 다 달라서 그렇습니다. 대표적인 모나드인 영상의 프로미스와 Maybe(실무에서는 자바 등의 옵셔널), 스트림 등이 왜 있고 실제로 사용되는지 생각해보시면 쉽게 이해하실 수 있을거예요. 이들을 가능하게 한 게 모나드인겁니다. 그것들을 생각하신 '훨씬 간단하게 작성'한 방식으로는 복잡한 작업 및 확장성 면에서 어떤 한계들이 있을지 금방 감을 잡으실 수 있을 것입니다.

  • @curtsoon6135

    @curtsoon6135

    26 күн бұрын

    @@yalco-coding 네 답변 감사합니다. 모나드마다 용도가 다를 수 있죠. 어떠한 디자인패턴이 그 쓰임처마다 용도가 다르듯이요. 하지만 어떤 상황일 때 그 패턴이 도움이 될지 결정하는데에는 해당 패턴의 일반적인 해결해주는 문제들의 공통된 특성들이 있어서 일 것입니다. 언급하신것 처럼 복잡성을 낮추기 위해서일 수도 있겠습니다. 그러면 모나드라는 패턴은 어떤 복잡성을 만났을 때 모나드를 써봐야겠다 하는 생각을 떠올릴만한가? 하는 공통점들이 궁금해서 댓글을 남겼습니다 ㅎㅎ

  • @yalco-coding

    @yalco-coding

    26 күн бұрын

    모나드를 직접 작성하실 일 보다는 프로미스, 태스크, 스트림, 널러블 등 이미 작성된 모나드를 쓰실 일이 훨씬 더 많을거예요. 이들은 공통적으로 연속되는 연산들을 함수형 코드와 체이닝으로 해결한다는 공통점을 생각할 수 있습니다. 그 체이닝 과정을 단순한 매핑보다도 한차원 더 깊게 사용할 수 있는 것이 모나드구요. (그렇게 하는 이유는 함수형 프로그래밍 영상에서 도움을 얻으실 수 있습니다) 스스로의 작업 또한 체이닝의 포함할 수 있도록 하는 것이라고 정리할 수 있을지 모르겠습니다만 이렇게 말하면 오히려 알아듣기 어렵구요 ㅠ 그래서 예시들을 보여드리는 방법을 썼습니다. 매우 추상적이고 한 마디로 정리할 수 있는게 아니라 영상에서 배열(진짜 모나드는 스트림), 프로미스, Maybe의 세 가지 다른 예시들을 통해 감을 잡으실 수 있도록 했습니다. 이들이 어떻게 사용되는지 잘 살펴보시면 정리가 잡힐 수 있을 것입니다.

  • @forheuristiclifeksh7836
    @forheuristiclifeksh783619 күн бұрын

    4:26

  • @forheuristiclifeksh7836
    @forheuristiclifeksh783619 күн бұрын

    9:34

  • @forheuristiclifeksh7836
    @forheuristiclifeksh783619 күн бұрын

    6:18

  • @forheuristiclifeksh7836
    @forheuristiclifeksh783619 күн бұрын

    11:00

  • @forheuristiclifeksh7836
    @forheuristiclifeksh783619 күн бұрын

    3:00

  • @Developer
    @Developer24 күн бұрын

    Monad대신 Chainable 이라는 용어를 쓰는게 더 명확하지 않을까요?

  • @yalco-coding

    @yalco-coding

    24 күн бұрын

    앗 나프다의 정도현 님이신가요?? 여기 방문해주시다니 영광이고 영상 보여드리기 부끄럽네요;; 말씀대로 이 영상에서 설명한 내용은 체이너블이라고 하는게 더 명확할 것 같습니다. 모나드는 더 깊은 수학적 개념을 포함하는거니까요. 함수형 프로그래밍에서 '모나드'란 용어가 쓰이고 그게 뭔지 궁금해하는 분들이 많아서 이렇게 영상을 만들었습니다. 채널 특성과 목적이 사람들이 어려워하는 개념들을 일단 감을 잡을 수 있게 문턱을 넘겨주는 곳이라.. 고수분들께는 지적할 부분이 있을 것임에 양해를 구합니다.

  • @Developer

    @Developer

    24 күн бұрын

    @@yalco-coding 앗! 나프다 청취자셨군요. 반갑습니다. 얄코님 영상에서 많이 배우고 있습니다. 저는 잘난체 하려면 모나드 설명하려면 체이너블 이렇게 구분해서 씁니다 ㅎ

  • @yalco-coding

    @yalco-coding

    24 күн бұрын

    @@Developer 말씀주신 부분 앞으로 이 주제 관련하여 다룰 일 있을 때 꼭 적용하겠습니다. 이렇게 댓글 달아주셔서 다시금 감사합니다!!

  • @Developer

    @Developer

    19 күн бұрын

    @@yalco-coding 부연하자면 저는 이 모나드라는 용어가 완전히 실패한 용어라고 봅니다. 왜냐면 실제 함수형 프로그래밍의 본질은 복잡한 처리를 추상화시켜서 최소한의 구문으로 데이터를 원하는 형태로 가공/추출 하자는 건데 모나드는 실제 구현에서는 그다지 중요하지 않은 Left Identity이니 Associativity같은거 부터 설명하고 있으니 대부분의 개발자들이 거기서부터 벽을 느끼는거죠. 컨테이너가 일반화된 현 시점에서 멀티 스레드의 부작용을 최소하 한다던지 이런건 그다지 중요하지 않고 SQL 과 비슷한 수준의 간략함에다가 다양한 처리를 결합 시킬 수 있는 형태로 데이터를 다룰 수있는 체이너블이라는 개념이 오늘날 함수형 프로그래밍의 핵심이라고 봅니다.

  • @yalco-coding

    @yalco-coding

    19 күн бұрын

    @@Developer 내용을 준비하면서, 말씀주신 법칙들이 실무에 얼마나 의미가 있는건지 의문스러운 부분이 많았는데, 이렇게 짚어주시니 비로소 깔끔하게 정리가 됩니다. 말씀대로 모나드는 과하게 붙인 용어로 생각됩니다. 어려운 부분이었는데 이렇게 인사이트 주셔서 감사합니다!

  • @user-tc2cx8vh4u
    @user-tc2cx8vh4u13 күн бұрын

    어렵 'ㅅ'....

  • @khundi
    @khundi27 күн бұрын

    자막이 작아서 폰으로 볼 때 자막 보기가 쉽지 않아요. 😅

  • @yalco-coding

    @yalco-coding

    27 күн бұрын

    앗 전에 크다는 사람이 있어서 줄인건데 ㅠㅜ 담 영상부턴 더 크게 조절해보도록 하겠습니다.

  • @khundi

    @khundi

    27 күн бұрын

    @@yalco-coding 헉 그렇군요..ㅠㅠ

  • @user-xn1vz9jq1b

    @user-xn1vz9jq1b

    27 күн бұрын

    먼가 평소보다 작아지고 길이가 길어졌다 싶었더니 그랬군요

  • @MrSeungseung

    @MrSeungseung

    27 күн бұрын

    유튜브 자막켜기 하시면 크게 볼 수 있고 또 자막 크기 및 색상조절도 할 수 있어요.

  • @morisheldon3530

    @morisheldon3530

    27 күн бұрын

    @@yalco-coding 요즘 트렌드는 확실히 폰사이즈에 맞추는게 대세인거 같긴해요 이런 컨텐츠는 모니터앞에 앉아 각잡고 공부해야지 하면서 찾아보는게 아니라 폰보다가 발견하면 맞아 나 이거 잘 몰라 하고 보게되는 경우가 많으니까요 내용을 가리는 수준만 아니라면 커서 나쁠건 살짝의 미관상의 이유말곤 전혀 없다고 생각해요! 아무튼 항상 잘보고 쉽게 이해하며 도움받고 있습니다 화이팅이에요❤

  • @user-uf2sm3ql1r
    @user-uf2sm3ql1r27 күн бұрын

    1등!

Келесі