What is a Monad? - Math vs Computer Science

Поделиться
HTML-код
  • Опубликовано: 17 янв 2025

Комментарии • 274

  • @robertstuckey6407
    @robertstuckey6407 8 месяцев назад +363

    I do not know what a monad is or why im here but im glad i am

  • @phecdaDia
    @phecdaDia 8 месяцев назад +198

    Just because I clicked on this video and already knew what a Monad was means I am itching for a fight. I mean I am itching for a fight, but not about Monads.

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +57

      I've got my ad hominem ready for whenever you are (whatever the fight is about).

  • @badabing3391
    @badabing3391 8 месяцев назад +285

    5th category, youtube algorithm is trying to get me interested in math.

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +85

      Has it worked? Have you converted? It's only a matter of time.
      (Also, this puts you in one of the first two categories: RUclips is your category theory/functional programming friend)

    • @badabing3391
      @badabing3391 8 месяцев назад +25

      @SheafificationOfG ill know in a few months. May or may not be pursuing a math minor rn.

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +20

      @@badabing3391 let's goooooooo

    • @badabing3391
      @badabing3391 8 месяцев назад +14

      @SheafificationOfG dont get too excited, im still an engineer foremost 😅

    • @icommentfornootherreasonth8773
      @icommentfornootherreasonth8773 7 месяцев назад +7

      im in the 6th category, i have to learn haskell in university

  • @nose766
    @nose766 4 месяца назад +39

    As a physicist (person who can't math or program), this is lovely. I understood like 75% of each part

  • @iamtraditi4075
    @iamtraditi4075 8 месяцев назад +99

    Dude, this was a banger video. Unironically a great explanation of the state monad too - seeing the parameter list and return type change was EXACTLY what I needed to make this idea click :)

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +20

      Glad to hear I could manipulate the state of your understanding (in a good way)!

  • @funkdefied1
    @funkdefied1 3 месяца назад +18

    0:34 you just wiped my database clean out. Thanks a lot.

  • @AdvayMengle
    @AdvayMengle 6 месяцев назад +24

    This is excellent content and a lot better explained than a number of more "serious" sounding YT math channels.

  • @evannixon6402
    @evannixon6402 9 месяцев назад +53

    Fantastic video
    I never realized how important it was to understand why axioms were chosen

  • @m3morizes
    @m3morizes 13 дней назад +6

    "Where is a monad?"
    "I'll do you one better: what is a monad?"
    "I'll do *you* one better: why is a monad?"

  • @derelbenkoenig
    @derelbenkoenig Месяц назад +5

    I'm not gonna lie, it did take me some work to get to the point where I could actually understand "Monoid in the category of endofunctors" but now that I got there, it kind of is the most concise way for me to represent the information in my mind

    • @derelbenkoenig
      @derelbenkoenig Месяц назад +2

      But, admittedly I know the functional programming perspective primarily, and I'm trying to expand more into the math

    • @MatthijsvanDuin
      @MatthijsvanDuin Месяц назад +1

      I also like his "improved" version at 1:16 ... I blinked at it for a moment then realized a 1-object category is just a monoid and enriching it over End(C) gets you right back to "monoid in the category of endofunctors"

  • @cloneguy77
    @cloneguy77 8 месяцев назад +29

    I didn’t completely follow, especially nearing the end, but I’m going to rewatch when I’m in a better frame of mind. This is very very good stuff man I always love to see high level math videos on RUclips that aren’t just 1hr long lectures. Keep up the good work!

  • @Max-jc1to
    @Max-jc1to 9 месяцев назад +17

    This was the best explanation I heard on Monads, I hope you continue to make videos like this one

  • @thrilhousesf
    @thrilhousesf 8 месяцев назад +10

    Some time last year I decided it would be fun to sit down and understand the 'monoid in the category of endofunctors' definition. It took 3 days on my whiteboard and at the end, it just means a functor with join and pure satisfying the unit and associativity laws, and provides no further insight. I was right though, it was fun.

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +1

      Yep, exactly!
      fmap :: functorial
      join :: multiplication
      ret :: unit
      While "monoid in a category of endofunctors" is really nice for never forgetting the axioms of a monad, it definitely doesn't help with understanding what a monad's all about.

  • @pmmeurcatpics
    @pmmeurcatpics 5 дней назад

    Like half a year and half the haskellbook later, I can finally say that I understand this video - which is not often the case with videos of yours. Can't wait to eventually understand like 3 to 4 more in the span of my lifetime!

  • @eddielam2875
    @eddielam2875 8 месяцев назад +14

    An example of this in algebraic geometry: Let Sch be the category of schemes, and CRing^op be the opposite category of commutative rings, then the global section functor Γ admits a right adjoint which is called Spec, which takes a commutative ring to its prime spectrums. As general consequences of pair of adjoint functors the composition Spec(Γ(-)) has the structure of a monad. For a scheme S, there is a canonical affinization map S -> Spec(Γ(S)); and Spec(Γ(Spec(Γ(-))) = Spec(Γ(-)) is always true because Γ(Spec) is (equivalent to) the identity
    by construction of Spec. In this case, an algebra over this monad is nothing but an affine scheme.

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +10

      Idempotent monads like this (arising from a fully faithful right adjoint) are an interesting subclass, since the category of algebras is a full subcategory of the original category (whereas you normally expect a category of algebras to be in some sense "bigger" than the original).
      However, this special property makes the "algebra" aspect of monadicity harder to appreciate in this case.
      For example, the category Grp of groups is monadic over sets, and this reflects how groups are a kind of algebraic structure over sets (like my linear algebra example). On the other hand, the category Ab of abelian groups is also monadic over Grp, but since this arises from an idempotent monad, Ab is a full subcategory of Grp, making it weirder to see it as expressing abelian groups as an algebraic structure over groups. Of course, this isn't to say there is no algebraic structure going on here: abelian groups are precisely the groups with an additional compatible group structure (by Eckmann-Hilton).
      Your example is similar in this respect: CRing^op is already the category of affine schemes, and it's kinda strange to view affine schemes as "schemes with some kind of algebraic structure", but you *can* do it.

    • @eddielam2875
      @eddielam2875 8 месяцев назад +1

      @@SheafificationOfG Yea there are many examples of idempotent monads arising in algebraic geometry. For example, if X is a variety with ring of functions R, then the adjunction R-mod QCoh(X) given by localization and global sections gives an idempotent monad. This realizes a subcategory of QCoh(X) as R-module, and I believe applying Barr-Beck theorem tells you that this is an equivalence iff X is affine.

    • @birdbeakbeardneck3617
      @birdbeakbeardneck3617 8 месяцев назад +6

      me first year in stem, with one abstract algebra course: hmm, impressive, very nice

    • @SultanLaxeby
      @SultanLaxeby 2 месяца назад +1

      @@SheafificationOfG so an idempotent monad is one where the multiplication map is an isomorphism? or something like that?

    • @SheafificationOfG
      @SheafificationOfG  2 месяца назад

      @@SultanLaxeby Yep, that's exactly right!

  • @abyzdoof8821
    @abyzdoof8821 8 месяцев назад +1

    You explained everything super clearly. Even though this is easily the highest level, I've heard anyone go into monads, I actually understood. Can't wait for the next upload!

  • @SlowMonoxide
    @SlowMonoxide 8 месяцев назад +3

    This is *hilarious* and also a pretty clear and concise explanation, subbed

  • @rudrapednekar1644
    @rudrapednekar1644 8 месяцев назад +9

    Great video man!!!
    That SQL injection tho😂😂😂

  • @lukiatiyah-singer5100
    @lukiatiyah-singer5100 8 месяцев назад +2

    I'm from the 5th category of people who are using jet bundles a lot in their day to day life and therefore need an explanation what a monad is to understand what a co-monad could be.
    But for real, great video, love your style and I feel I finally understood something about monads. Thanks a lot!

    • @mickschilder3633
      @mickschilder3633 8 месяцев назад +1

      Okay as a person that knows about monads and jet bundles i do not immediately see what comonads hage to do with jet bundles, or are jet bundles comonads? (Its 00:18 and i have not the brain capacity to figure this out without paper)

  • @stokedfool
    @stokedfool 8 месяцев назад +3

    Accessible and satisfying explanation of Monads. Thank you.

  • @jaysonbunnell8097
    @jaysonbunnell8097 8 месяцев назад +18

    love the video! As a tip for audio quality (because microphones are expensive), it’s a great trick to record the white noise in the room you’re recording in, and put it over any blank spots in the script. That way the audio-to-no-audio transformation isn’t so harsh. Subbed!

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +5

      Thanks for the tip! I'll consider it for my next video(s)!

    • @AKW91
      @AKW91 8 месяцев назад

      If your recording software supports VST plugins you can install Reaper and use ReaFir in subtract mode to remove the background noise. Just let it build the noise profile for few seconds and it's almost gone on all recordings.

    • @thezipcreator
      @thezipcreator 8 месяцев назад +4

      @@AKW91 audacity has noise removal built-in

  • @ProactiveYellow
    @ProactiveYellow 8 месяцев назад +36

    Ok but what if I WANT to assume the axiom of choice?

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +47

      Ok well why don't you go CHOOSE a basis for the vector space of continuous functions R -> R 😤

    • @biblebot3947
      @biblebot3947 8 месяцев назад +11

      @@SheafificationOfGalready did.

    • @ProactiveYellow
      @ProactiveYellow 8 месяцев назад +11

      @@SheafificationOfG sure:
      Let B be one of the bases for the vector space of continuous functions R→R guaranteed by the axiom of choice. By Zorn's lemma we may (through torturous restructuring into any other arbitrary form of the AoC) select basis B. Thus we now have a basis for the aforementioned space. QED.

    • @ThePiotrekpecet
      @ThePiotrekpecet 8 месяцев назад +4

      ​@@SheafificationOfGI choose polynomials as a perfectly good Schauder basis 😎

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +8

      @@ThePiotrekpecet Hamel basis or gtfo

  • @kotfare1698
    @kotfare1698 8 месяцев назад +2

    this is fantastic, perfect blend of humour and wit

  • @kualta
    @kualta 9 месяцев назад +17

    9 subscribers chad lord. make it 10.

    • @SheafificationOfG
      @SheafificationOfG  9 месяцев назад +9

      ⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠛⠛⠛⠋⠉⠈⠉⠉⠉⠉⠛⠻⢿⣿⣿⣿⣿⣿⣿⣿
      ⣿⣿⣿⣿⣿⡿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢿⣿⣿⣿⣿
      ⣿⣿⣿⣿⡏⣀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿
      ⣿⣿⣿⢏⣴⣿⣷⠀⠀⠀⠀⠀⢾⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿
      ⣿⣿⣟⣾⣿⡟⠁⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣷⢢⠀⠀⠀⠀⠀⠀⠀⢸⣿
      ⣿⣿⣿⣿⣟⠀⡴⠄⠀⠀⠀⠀⠀⠀⠙⠻⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⣿
      ⣿⣿⣿⠟⠻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠶⢴⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⣿
      ⣿⣁⡀⠀⠀⢰⢠⣦⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⡄⠀⣴⣶⣿⡄⣿
      ⣿⡋⠀⠀⠀⠎⢸⣿⡆⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⠗⢘⣿⣟⠛⠿⣼
      ⣿⣿⠋⢀⡌⢰⣿⡿⢿⡀⠀⠀⠀⠀⠀⠙⠿⣿⣿⣿⣿⣿⡇⠀⢸⣿⣿⣧⢀⣼
      ⣿⣿⣷⢻⠄⠘⠛⠋⠛⠃⠀⠀⠀⠀⠀⢿⣧⠈⠉⠙⠛⠋⠀⠀⠀⣿⣿⣿⣿⣿
      ⣿⣿⣧⠀⠈⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠟⠀⠀⠀⠀⢀⢃⠀⠀⢸⣿⣿⣿⣿
      ⣿⣿⡿⠀⠴⢗⣠⣤⣴⡶⠶⠖⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡸⠀⣿⣿⣿⣿
      ⣿⣿⣿⡀⢠⣾⣿⠏⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠉⠀⣿⣿⣿⣿
      ⣿⣿⣿⣧⠈⢹⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿
      ⣿⣿⣿⣿⡄⠈⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿
      ⣿⣿⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿
      ⣿⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
      ⣿⣿⣿⣿⣿⣦⣄⣀⣀⣀⣀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
      ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
      ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠙⣿⣿⡟⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿
      ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠁⠀⠀⠹⣿⠃⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿
      ⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⢐⣿⣿⣿⣿⣿⣿⣿⣿⣿
      ⣿⣿⣿⣿⠿⠛⠉⠉⠁⠀⢻⣿⡇⠀⠀⠀⠀⠀⠀⢀⠈⣿⣿⡿⠉⠛⠛⠛⠉⠉
      ⣿⡿⠋⠁⠀⠀⢀⣀⣠⡴⣸⣿⣇⡄⠀⠀⠀⠀⢀⡿⠄⠙⠛⠀⣀⣠⣤⣤⠄⠀

  • @krupt5995
    @krupt5995 8 месяцев назад +20

    0:16 My brother in Christ, I just like math

  • @ke9tv
    @ke9tv 8 месяцев назад +8

    I'm in Category IIIa. I know what a monad is, and itching to tell the categorists and functional programmers to please keep the noise down, I'm trying to get some work done here!

  • @Jesin00
    @Jesin00 8 месяцев назад +6

    I don't know how many people you expected to actually laugh out loud at the punchline at 1:18, but I *was* one of them.

    • @askyle
      @askyle 3 месяца назад

      Same here 😂

    • @zmaj12321
      @zmaj12321 Месяц назад

      I laughed at the axiom of choice bit

  • @tomholroyd7519
    @tomholroyd7519 10 дней назад

    In the 3-valued logic RM3, the modal operators "possible" and "necessary" are monads. The universal and existential qualifiers are also monads. A functor on a poset is always order preserving. (F -> B -> T) => (F -> T)

  • @CanaanZhou2002
    @CanaanZhou2002 8 месяцев назад +2

    As an undergraduate interested in categorical logic, I'm so glad that I clicked this video, really well done! Love the concise yet accurate language and the funny presentation style, can't wait to see more videos!
    Also just a curious question: judging from your username, I would assume you have some background in topos theory? If so, how do you make sense of Beck monadicity theorem and Pare theorem (the latter says that for every elementary topos, the "powerobject" functor is monadic)? I never feel comfortable with them.

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +1

      Regarding Beck monadicity: if you're willing to accept that a "monad" is a general way of encoding a flavour of "algebraic structure" on objects of a certain category, then Beck's monadicity theorem is a recognition theorem for when you can view objects of one category as "objects of another category with algebraic structure". This perspective also gives a bit of intuition for the conditions on a functor U : C -> D to be monadic:
      1. U having a left adjoint establishes that you can use the putative algebraic structure to *generate* an algebra from an "unstructured" object in D (analogous to "formal linear combinations" generated over a set in the video), and it identifies which objects of C are freely-generated.
      2. U creating coequalisers of U-split pairs reflects the fact that a general algebra admits a presentation via "generators and relations" (like a free resolution of a ring; in fact, this is a good place to draw intuition).
      Regarding Paré's result on the monadicity of the contravariant power-object functor, I think a good starting point for drawing intuition is to look at the category of Sets. Again, if we take "monadicity" of U : C -> D to mean "C is the category of objects of D equipped with a certain kind of algebraic structure", then understanding the monadicity of \Omega : E^op -> E amounts to understanding how to view objects of E^op as objects of E with algebraic structure. For sets, (classically) we have an equivalence of categories between Set^op and the category CABA of "complete atomic Boolean algebras", from which it's apparent what algebraic structure is encoded by the contravariant powerset functor. This gives an impression of what's going on in general (though, you have to let go of LEM, so you don't get "Boolean algebras").

  • @WayOfTheCode
    @WayOfTheCode 5 месяцев назад

    THAT WAS THE BEST WAY TO EXPLAIN MONADS

  • @Canadian_Teemo
    @Canadian_Teemo 8 месяцев назад +4

    I don't think I understood work in this video, as a category 5 viewer, youtube recommendation, then I just watched for all the memes. I feel like you need a Master's in mathematics to understand something from this video.

    • @IceQueenaliasIQ
      @IceQueenaliasIQ 7 месяцев назад +1

      Rather knowledge in maths AND programming. As someone with a maths degree, I can tell you you don't normally deal with the concept of monad, unless you actively pick the courses which do.

  • @endersteph
    @endersteph 8 месяцев назад +9

    I've seen a lot of monad-explainers on youtube, but this is the first one I feel I really understood, so thanks for that! What would you recommand to start learning category theory? Or perhaps to learn more about applications of cat in cs?
    (Btw, I AM assuming the axiom of choice, and in fact in every waking moment of my life I am consciously assuming it!)

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +7

      Thanks so much, I appreciate it (except for the part where you choose the axiom of choice)!
      As for category theory recommendations: I've heard that "Category Theory for Programmers" (github.com/hmemcpy/milewski-ctfp-pdf) is good, but I've personally never read it.
      I studied category theory purely as a mathematical endeavour, mainly in its intersection with algebraic topology, so I can't say my curated advice would be too valuable to someone on the CS side, though hopefully the book reference is useful.

  • @Kyler1Ace
    @Kyler1Ace 9 месяцев назад +9

    Best debut video ive watched with this few views

    • @Kyler1Ace
      @Kyler1Ace 9 месяцев назад +4

      Explaining monads in fp as just being a type that allows you to compose an effect when used on any other arbitrary type instantly made perfect sense compared to all the other explanations I've heard over the years when trying to grok it

    • @SheafificationOfG
      @SheafificationOfG  9 месяцев назад +1

      Thanks a tonne, I'm flattered. So happy to hear found the explanation clear!

  • @sebwys900
    @sebwys900 8 месяцев назад +4

    Monads at 3am, life couldn’t be better

  • @b1rds_arent_real
    @b1rds_arent_real 8 месяцев назад +3

    You deserve those 1m+ subs, keep going!

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +2

      Really gunning for that non-free vector space reveal, eh? 😏

  • @haukur1
    @haukur1 2 месяца назад

    I fully expected a Morpheus quote at 1:50.
    "Unfortunately no one can be told what the Monad is. They have to see it for themselves."

  • @EulerJr_
    @EulerJr_ 2 месяца назад

    Great video, this was unbelievably interesting! You earned yourself a subscriber.
    What is your background?

    • @SheafificationOfG
      @SheafificationOfG  2 месяца назад

      Thanks!
      As for my bg: just a humble abstract homotopy theory enjoyer

  • @bdfb-th5ek
    @bdfb-th5ek 8 месяцев назад +4

    Geez. I learned both FP+Formalization (under the umbrella term of 'Programming Language') and pure math, and was thinking about all the foundation stuffs from time to time from my enjoyment. You are very strong at explaining the _intuition_ behind it as clear as possible while getting as deep as it can get in understanding. Much thanks and I look forward for future videos!!
    Suggestion that you can freely ignore: Is the set X of 'computable' real numbers countable? There is only a countable number of programs, so it should be countable. Now by enumerating X and using the Cantor diagonalization, can't we get contradiction by finding a computable number outside X? (A counterargument gives a resolution of Halting problem) Now how about the set of 'defineable' real numbers? There is only a countable number of math statements. How about we do the Cantor diagnoalization again here?
    I'm saying all this without clarity and only handwaiving... what I'd like to see is a crystal clear clarification around those issues if you get what I mean.

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +2

      Thanks! The angle on Cantor's diagonalisation to prove that the computable numbers are not computably enumerable (despite being countable) is definitely cute! I'll see if it fits with some topics I might want to cover down the road!

    • @MatthijsvanDuin
      @MatthijsvanDuin Месяц назад

      Obviously in general the set of expressions that can be proven to have some particular type T in some particular system can, theoretically, be enumerated (although not necessarily practically), giving a surjection from ℕ onto T (*). The big problem with enumerating computable reals is the inability to filter duplicates because equality is not decidable (you've only got semi-decidable inequality). More generally, there is no (well-defined, deterministic, computable) non-constant function from the computable reals to bool or any other discrete type, which also blows up the digit-extraction needed for Cantor.
      (*) Well, onto those elements of T for which membership can be proven in whatever type system you're using that supports computable reals (Paul Taylor's Abstract Stone Duality?). Whether or not that's truly a surjection onto T could be open to philosophical debate, presumably there will exist programs that are semantically valid computable reals for which no proof exists that they are?

  • @u03b5
    @u03b5 8 месяцев назад +1

    very intuitive explanation 👍

  • @ai_serf
    @ai_serf 4 месяца назад

    after learning a bunch of mathematical logic and getting into haskell and lambda caluclus and type theory, this whole thing now makes a lot of sense. (i was an expert c++ programmer, so i'm familier with impure functions or functions that obfuscate their state).

  • @slothman8233
    @slothman8233 3 месяца назад

    2:22
    Imma steal this joke so I could tell my computer scientist buddies that they're mathematicians.

  • @penand_paper6661
    @penand_paper6661 8 месяцев назад +2

    The only thing that would make this even more complete would be discussion on monads in philosophy and in physics.
    Also I find it ridiculous that mathematicians just went ahead and said to itself, "I know there is 5 times 5, and there is 5 times X, but what if I did 5 times apple?" and just, invented a whole terminology for that.
    Preschooler-level creativity - which is creativity of the highest order.

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +1

      Oh neat, what's a monad in physics? (Not that I really know what a monad in philosophy is, but I came across it while browsing for content...)

    • @penand_paper6661
      @penand_paper6661 8 месяцев назад

      @@SheafificationOfG Oh hey, thanks for commenting!
      If you want, you could describe a Monad as being a "perfectly unified/most basic thing/concept, often which if the original Thing." Rather important in Greek philosophy. Plus, a lot of religions tend to think of God as a monad.
      It would be cool to see how this relates to math, including set theory and ideas of infinity (for example, you can use set theory to prove God cannot make a rock he can't lift, since that would involve making another God, or God being a self-defined thing with no need to have been created, but that's a whole discussion).
      I'd say the best advice is just to browse wikipedia on this and absorb whatever you can, and when you see something that looks like it intersects with your fields, dive into it properly.
      As for physics, I was thinking in terms of singularities, eg black holes, which arguably are unified point in the universe where the density is arguably infinite. You'll probably find making a vid on that much easier.

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад

      @@penand_paper6661 Ah, that description of the philosophical monad is roughly what I gathered from my 10s of browsing (definitely not my wheelhouse).
      Do physicists really refer to singularities as monads?

    • @penand_paper6661
      @penand_paper6661 8 месяцев назад

      @@SheafificationOfG Truthfully, physics is not my area of expertise. However, I once saw the term used to describe singularities.
      I think you'd have a better time looking into the physics, as the math you worked with in the vid might have an application somehow there. (And since physics is basically applied maths.)

  • @mvf314
    @mvf314 5 месяцев назад

    What a great explanation, awesome video

  • @ucantSQ
    @ucantSQ 8 месяцев назад +1

    That was masterful. Split your arrow on a double bulls-eye. Subbed.

  • @SultanLaxeby
    @SultanLaxeby 2 месяца назад

    This video gets better everytime you watch it.

  • @norude
    @norude 2 месяца назад

    I didn't understand the cat theorist's perspective, but the jokes are incredibly funny

  • @connorallen162
    @connorallen162 8 месяцев назад +3

    I am my own functional programming friend, and I also have no idea what a monad is. Though understanding 20% of this video is as close as I've ever been

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +2

      rare functional programmer who's on good terms with himself

  • @therealist9052
    @therealist9052 8 месяцев назад

    Best math + meme channel on YT. Subbed.

  • @Tobbzn
    @Tobbzn 2 месяца назад

    Funny and impressive explanation. I did not expect you to get into Kleisli vs Eilenberg-Moore. It's a choice of technical presentation that I think sacrifices intuition, but it's equivalent to the induced T-modules versus *all* T-modules. I'd always felt like the programmers were using monads in a weird way and this helped elucidate that.
    I still don't see how that first joke about a monad being a single object endofunctor enriched category actually works though - that's *any* category considered as a singleton subcategory of the category of categories.
    Feels like it's a homage to the joke definition of a group as a single-object groupoid but here I don't see the equivalence.

    • @SheafificationOfG
      @SheafificationOfG  2 месяца назад +1

      Just like how a monoid is a category with one object, a monoid object in V is equivalent to a V-enriched category with one object.
      So, since "a monad is a monoid in the category of endofunctors", it follows that a monad is an endofunctor-enriched category with one object.
      But yes, it is a bit of an homage to the group vs groupoid joke :)
      Also, a category is not determined by its corresponding singleton subcategory of Cat. For example, both the initial and terminal objects in Cat have equivalent endofunctor categories.

    • @Tobbzn
      @Tobbzn 2 месяца назад

      @SheafificationOfG Ah, I see where my sleep deprived brain went wrong - I made the classic newbie mistake of thinking of the V-enrichment in terms of each morphism being an object of V rather than replacing the hom-space itself by an object of V. Now that I've had lunch and a nap it makes a lot more sense.

  • @ZapPack
    @ZapPack 8 месяцев назад +1

    monoid monad endofunctor T Algebra formal R3 vector space

  • @Misteribel
    @Misteribel 8 месяцев назад

    Good luck with your channel! This is great content. Personally, I'd use less distracting images while on such a denser subject (i know the subject matter, but still had to pause a few times or scroll back).

  • @askyle
    @askyle 3 месяца назад +1

    tbh I'm friends with monads from both points of view so I just came here for the memes; but the relation FP:Algebra ≈ Kleisli:EM was an unexpected epiphany! 🤯
    ... then I started wondering what the dual of an epiphany is and ended up realizing I still haven't found the time to play Danganronpa T_T
    anyway, subbed 👍

  • @njdarda
    @njdarda 8 месяцев назад

    youtube has been desperate for me to watch this video for weeks so here i finally am. cool stuff.

  • @leonsteffens7015
    @leonsteffens7015 2 месяца назад

    7:10 I had this exact moment with path algebras of quivers... like what does it mean to 'add' two paths together if they are in disjoint parts of the quiver....?

  • @dothedeedbro-qn4eb
    @dothedeedbro-qn4eb 2 месяца назад

    i still dont know what a monad is but thanks for the effort it was a pleasant experience

  • @shoyuramenoff
    @shoyuramenoff Месяц назад

    Category 5: Doesn't know FP or Category Theory but studied Real and Complex Analysis and got recommended math videos.

  • @chemicallife6108
    @chemicallife6108 8 месяцев назад +2

    Well, i guess you could consider the RUclips algorithm to be a bot. So, that last category fits everyone who didn't specifically look for this video.

  • @SungKan-gv3yd
    @SungKan-gv3yd 8 месяцев назад

    perfect introduction

  • @colonelmoustache
    @colonelmoustache 8 месяцев назад

    That was quick, that was clean

  • @danmar007
    @danmar007 8 месяцев назад +2

    " they're just monoids in the category of endofunctors" 😛

  • @sarthakvijay214
    @sarthakvijay214 3 месяца назад

    I rarely comment on RUclips. BUT, this video made me to! It’s rare to find such an impeccable mixture of comedy and serious math.

  • @lexkoal8657
    @lexkoal8657 Месяц назад

    Thnx, I undestood like 40% of the video and 70% of the part where I had some prior knwoledge. With kind regards, engineering major

  • @VaviVove
    @VaviVove 7 месяцев назад

    I feel like my brain is getting bigger each time I'm watching this video... Bros is it what we call banger content?

  • @MrMaskedhater
    @MrMaskedhater 2 месяца назад

    I believe a Monad is a red sword that allows you to see the future

  • @jrgenolsen3290
    @jrgenolsen3290 8 месяцев назад +1

    very good video the sweetspot of math and FP

  • @macchiato_1881
    @macchiato_1881 8 месяцев назад

    Im from the category of people that accidentally clicked a FP video and the algorithm has been sandblasting my face with FP related vids ever since last week

  • @ElliotPotts
    @ElliotPotts 2 месяца назад

    Do a video on adjunctions!

  • @samuelwaller4924
    @samuelwaller4924 3 месяца назад

    1:36 I wish people did this more often when explaining math concepts

  • @Your2ndPlanB
    @Your2ndPlanB 5 месяцев назад +1

    Monads are *not* monoids in the category of endofunctors... rather, if *C* is _any_ 2-category, then a monad is a monoid in the category *C*(A,A) for an object A in *C*.

  • @stefanb6539
    @stefanb6539 2 месяца назад

    I am of the category of people that try to understand what Gotfiried Wilhelm Leibniz and Baroch Spinoza have in common, who starts actively sweating, whenever I see a depiction involving more than 3 mathematical signs in a sentence.

  • @skynmystical4861
    @skynmystical4861 9 месяцев назад +1

    Amazing. Make more!!

  • @iandyke4412
    @iandyke4412 23 дня назад

    The winnie the pooh meme is such a useful educational tool throughout this entire video.
    Why? How? I still can't figure it out myself, but I'm impressed, I'm educated, and I'm mildly intimidated.

  • @lacruz7157
    @lacruz7157 14 дней назад

    Didnt understand one bit of this video😂 and I just took an introductory call on set and logic, where i encounter monoid as defining a set under a binary operation
    There's so much for me to learn

  • @nocakewalk
    @nocakewalk 6 месяцев назад

    Soooooo, T stores operations as strings, and the monad runs eval() on them? No? I didn't get it 😢.

  • @Seltyk
    @Seltyk 8 месяцев назад

    Great video! I feel like this is the closest I've ever gotten to understanding fmap, join, and bind. I'm just… not *quite* there. I'm also unsure what monads can do that generically-typed structs (like std::pair) can't. Finally, the example used to demonstrate fmap glosses over what happens if the division function fails; it feels as though fmap is told "just assume no errors will occur and operate as if the types were X and Y instead of T(X) and T(Y)".

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +1

      Thanks!
      Regarding your comment on generically-typed structs vs monads, I think the misconception is that monads are more of a "design pattern" than a "data structure". There are many ways you can *implement* a monad.
      For example, std::optional *is* an implementation of the Maybe monad (where the "new element" is std::nullopt). Of course, you can go your whole life without thinking about std::optional as a monad (or without even using std::optional, really), but the monad perspective can help you navigate your usage of std::optional.
      For example, if we use the pure implementation of division (4:33), how do we pass its output to is_pos? C++ will complain if you just pass a std::optional into is_pos, so you need to write a wrapper for is_pos to only deal with the "float part":
      if (input.has_value())
      { return is_pos(input); }
      else
      { return std::nullopt; }
      This wrapper is exactly fmap(is_pos).
      In particular, what you say about fmap really is what happens: fmap expresses how pure functions are completely unaware of any computational effects. If the input to fmap(is_pos) were an error (due to division by zero, say), the result of fmap(is_pos) is the same error. In particular, fmap isn't supposed to do anything too deep, and is just there to "correct the input/output types" of a pure function.

    • @Seltyk
      @Seltyk 8 месяцев назад

      @@SheafificationOfG this makes a lot of sense for "programming on rails" monads like maybe, but what does fmap do with the state monad? My immediate guess would be that it executes the pure function then discards the state output, but that implementation removes logic which sounds silly

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад

      @Seltyk in general, fmap "passes effects along" through pure functions. If you have a pure function f : X -> Y, then fmap for the state monad transforms this function into a map Funcs(S, X x S) -> Funcs(S, Y x S). In other words, you can imagine the input of fmap(f) being "a value x that depends on state and, when obtained, alters the state", so the output is "the value f(x) that depends on the state and, when obtained, alters the state [where the effect on state is done when finding x before plugging into f]".
      If you try to use a pure function f : X -> Y and construct a function fmap(f) of the correct type, this is essentially the only natural way to do it.
      I hope this helps!

  • @sinom
    @sinom 7 месяцев назад

    Also category 5
    But I'm also a postgrad CS student with a minor in maths. So it's at least kinda relevant to me

  • @thsand5032
    @thsand5032 5 месяцев назад

    This was actually very helpful and understandable.
    As a mathematician, I felt vindicated by the ending. I can also assure you, every vector space is freely generated. Can you imagine living in a world where some K-vector spaces are neither injective nor projective ? Having a nontrivial cohomological theory for K-vector spaces ?
    Have you thought of the ramifications that jumpscare-denying AC can have on poor unsuspecting algebraic geometers just chilling around ?
    Kind of irresponsible.

  • @strangeWaters
    @strangeWaters 6 месяцев назад

    Great vid. Every time you make fun of programmers for using multivalued functions with implicit arguments, Euler sheds a tear.

  • @samuelwaller4924
    @samuelwaller4924 3 месяца назад

    "If you are a functional programmer, you are interested in the category of sets where the maps from X to Y are the pure functions from X to T(Y)"
    Can someone explain what this means? Does this mean that (maps from X to Y) map (by the category) to (the pure functions from X to T(Y))? Or am I misunderstanding categories completely

    • @SheafificationOfG
      @SheafificationOfG  3 месяца назад

      Yes, arrows X -> Y in the category are given by pure functions X -> T(Y) of sets!

    • @samuelwaller4924
      @samuelwaller4924 3 месяца назад

      @@SheafificationOfG thank you!

  • @Lexinathan
    @Lexinathan 8 месяцев назад +1

    7:14
    Someone looked into Combinatorial Game Theory

  • @borzydar1196
    @borzydar1196 5 месяцев назад +1

    This has to be the weirdest faction of gnosticism there is

  • @Megaritz
    @Megaritz Месяц назад +2

    I'm a philosopher, I only know about Leibniz's monads

  • @zyansheep
    @zyansheep 5 месяцев назад +1

    13:27, I'm keeping you to that!

  • @nsr-ints
    @nsr-ints Месяц назад +1

    Sir, are you attempting to SQL-inject me? I am afraid that will not work, as I properly sterilise my inputs.

    • @Il_panda
      @Il_panda Месяц назад

      after im done injecting my sql there is going to be nothing left to sterilize it

  • @josephma293
    @josephma293 3 месяца назад

    category 5: I was watching one of your other videos and it mentioned this one (cosets)

  • @ashleyzinyk399
    @ashleyzinyk399 8 месяцев назад

    5th category; I've forgotten what monads are, so I feel that I need a reminder.

  • @furrball
    @furrball 8 месяцев назад

    um... does a monad that returns a placeholder value consistent with the expected return value type, on failure, instead of throwing, still qualify as a maybe?

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад

      The maybe monad *always* extends a type to have a new element. If your implementation of division returns 0, say, when dividing by zero, then you actually just have a good old-fashioned pure function with no computational effects at all.

    • @furrball
      @furrball 8 месяцев назад

      @@SheafificationOfG horay, thanks! I'll update my comments to call a certain collection of functions just functions, then. :)

  • @markusklyver6277
    @markusklyver6277 8 месяцев назад

    I think the disagreement over what a function is is not so much its domain and codomain, but rather that a function in computers describe an algorithm to be run, i.e. a procedure. A mathematical function is not a procedure to run or to be evaluated, it just is. It is a common misconception that expressions like sin(e/pi) do not have an exact value, but indeed it is. sin(e/pi) is exactly sin(e/pi). What is commonly meant is that it isn't a computable or "calculable" number.
    But mathematical expressions or functions are not *procedures*, which is usually how more laymen people, applied mathematicians and computer scientists tend to view them.

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад

      Is it really common to believe that sin(e/pi) doesn't have an exact value?
      It may not have a closed form, but this number is "computable" (in the sense that there is an algorithm for computing sin(e/pi) to whatever desired precision in finite time).
      The discrepancy is definitely that mathematics views functions as a unique abstract association of an output (in the codomain) to any input (in the domain), whereas procedural programming views functions as an abstraction for parameterised computation. The point for introducing monads is just that they offer a way of reconciling the latter so that it can be studied as a mathematical (i.e., "pure") function, and remarkably this can be done by having a monad modify the codomain according to the type of effect the procedure has when executed.
      However, this is not to say that the discrepancy between functions in maths and CS is a matter of the choice of codomain. Monads are, of course, not the "be-all and end-all" of encoding procedures as (pure) functions: monads are only capable of encoding the "computational effects" of a procedure. It's not necessarily ideal for encoding so-called "computational context" (which affect the behaviour of the procedure)---such things are better suited to comonads.

    • @markusklyver6277
      @markusklyver6277 8 месяцев назад

      @@SheafificationOfG And by "an abstraction for parameterised computation" you mean a procedure that eventually produces the desired output. I am arguing that this procedure-based view is a much more fundamental disagreement rather than the domain and codomain.

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад

      @@markusklyver6277 I agree with you that the procedural nature of functions in programming is definitely the more fundamental thing, but I'm just confused by what you mean regarding a "disagreement in co/domain"... I don't recall saying something along this line in the video.
      I (hopefully) didn't claim that all discrepancies can be resolved by having procedures appeal to co/monads to become pure functions, but the focus of the video was on monads, so naturally the discrepancy between math/cs functions that's important to me in this case is the presence of computational effects (which, of course, fall out of the procedural nature of these functions).

  • @SeanAnthony-j7f
    @SeanAnthony-j7f Месяц назад +1

    Wtf is monad? Is it from Monadology by Leibniz?

  • @sheepcommander_
    @sheepcommander_ 5 месяцев назад

    this actually made a lot of sense up until a bit past the 5 minute

  • @pomtubes1205
    @pomtubes1205 8 месяцев назад +1

    A monad is a monoid in the category of endofunctors.
    A monad is a monoid in the category of endofunctors.
    A monad is a monoid in the category of endofunctors.
    A monad is a monoid in the category of endofunctors.
    A monad is a monoid in the category of endofunctors.
    A mo

    • @SheafificationOfG
      @SheafificationOfG  8 месяцев назад +1

      ....................../´¯/)
      ....................,/¯../
      .................../..../
      ............./´¯/'...'/´¯¯`·¸
      ........../'/.../..../......./¨¯\
      ........('(...´...´.... ¯~/'...')
      .........\.................'...../
      ..........''...\.......... _.·´
      ............\..............(
      ..............\.............\...

    • @pomtubes1205
      @pomtubes1205 8 месяцев назад

      @@SheafificationOfG 🤣🤣🤣

  • @dr.mikelitoris
    @dr.mikelitoris 8 месяцев назад

    can you do what is a gonad next

  • @gregboi183
    @gregboi183 2 месяца назад

    That's easy, a monad is a monoid in the category of endofunctors

  • @vuufke4327
    @vuufke4327 24 дня назад

    So what's a monad?

  • @hashtags_YT
    @hashtags_YT 5 месяцев назад

    I've accepted that I may never understand what a monad is.

  • @CYXXYC
    @CYXXYC 5 месяцев назад +2

    was trying to watch the video, got SQL injected instead

  • @BungusChungus-c7t
    @BungusChungus-c7t 8 месяцев назад +1

    YES! HE REFERENCED THE GNOSTIC MONAD< HAHAHAHAHAHA

  • @comlitbeta7532
    @comlitbeta7532 8 месяцев назад

    That I know fore sure. A monade is a monoïde in the category on andofunctir

  • @memyselfishness
    @memyselfishness 8 месяцев назад

    Okay, but why didn't you discuss the monad of philosophy

  • @sayedizaanahmad
    @sayedizaanahmad 8 месяцев назад +1

    6th category, learning maths