As someone who respects functional programming (because it removes geniuses from competing in my space) here's a nice video <a href="https://www.youtube.com/watch?v=ADqLBc1vFwI" rel="nofollow">https://www.youtube.com/watch?v=ADqLBc1vFwI</a><p>What is the beautiful monospace font in the pdf here <a href="http://brendanfong.com/programmingcats_files/cats4progs-DRAFT.pdf" rel="nofollow">http://brendanfong.com/programmingcats_files/cats4progs-DRAF...</a>?
When taught in January at MIT, a highlight was something I'd not seen elsewhere: someone called it the "aftermath" (3-pun). After the one-hour traditional-ish lecture (on video), the room was reserved for an additional hour.<p>When previously taught, people would remain afterwards to ask questions, discuss math, and chat. So this was an iterative-improvement formalization of that.<p>People would gather in front of the blackboards in fluid discussion clusters. Catalyzed by the three instructors and wizzy others, not all having to stay for the entire hour, but drifting off as discussion died away. They could show material they had pruned from the lecture, for want of time. Or got dropped as they ran over. Alternate presentation approaches they had considered, before selecting another. They could be much more interactive. One commented roughly "If I was tutoring someone, I'd never present the material this way". It was a delightful mix of catching the speaker after a talk to ask questions, a professor's office hours, a math major's lounge, an after-talk social, tutoring, an active-learning inverted classroom, hanging out with neighbors in front of the hallway blackboard, chalk clattering and cellphones clicking to snag key insights... It was very very nifty.<p>So, the book is nice. And lecture notes. And videos. But... the best part isn't there. Perhaps the next iterative improvement is to capture the aftermath on video, and share that too.<p>And as we look ahead, planning distance-learning and XR tools... maybe something like this is a vision to aspire too. The insane ratio of expertise to people learning is not something one can plausibly replicate in meatspace. But as conversations in front a virtual blackboard gradually become technically feasible, something like this might pay for the cost of it, with transformative impact.
If you're interested in how Category theory and Algebra can inform the design of software, have a look at ZIO Prelude.<p><a href="https://github.com/zio/zio-prelude" rel="nofollow">https://github.com/zio/zio-prelude</a><p>It's a brand new library for Scala that contains reusable mathematical structures. Still based on algebra and category theory, but it expresses them more or less differently than how they've been expressed in Haskell (and similar languages). For example, unlike Haskell (and Scala's own cats and ScalaZ), it doesn't present the "traditional" Functor -> Applicative -> Monad hierarchy. Instead, it presents the mathematical concepts in a more orthogonal and composable way.<p>One example out of many, you don't have a Monad. You have two distinct structures:<p>* Covariant functor, with typical map operation `map[A, B](f: A => B): F[A] => F[B]`<p>* IdentityFlatten which has a flatten operation `flatten[A](ffa: F[F[A]]): F[A]` and an identity element `any: F[Any]`<p>When combined together (Scala has intersection types), you get something equivalent to the traditional Monad.<p>The project is in its infancy, so it may still change significantly, though.
Look here for more detailed explanation:<p><a href="https://www.slideshare.net/jdegoes/refactoring-functional-type-classes" rel="nofollow">https://www.slideshare.net/jdegoes/refactoring-functional-ty...</a><p><a href="https://www.youtube.com/watch?v=OwmHgL9F_9Q" rel="nofollow">https://www.youtube.com/watch?v=OwmHgL9F_9Q</a>
I've read a lot about Category Theory, and I'm amazed at the abstraction level that lets you compose with different mathematical domains (geometry, topology, arithmetic, sets, ...).<p>And yet, the current mathematics relies heavily on the ZFC set theory. Why is that ? (Is that assumption even correct ?)<p>From what I've learned so far, the set theory suffers from Russel's Paradox[0] (does the set of all sets that does not contain itself, contains itself ?). That's what motivated the formalization of Type Theory and the invention of Type Systems in programming languages.<p>According to wikipedia[1], <i></i>some<i></i> type theories can serve as an alternative to set theory <i></i>as a foundation of mathematics<i></i>.<p>It seems to me that the Category Theory fits the description. So why don't we see a huge "adoption" in math fields ?<p>Thank you in advance for your clarifications :)<p>[0] - <a href="https://en.wikipedia.org/wiki/Russell%27s_paradox" rel="nofollow">https://en.wikipedia.org/wiki/Russell%27s_paradox</a>
[1] - <a href="https://en.wikipedia.org/wiki/Type_theory" rel="nofollow">https://en.wikipedia.org/wiki/Type_theory</a>
"We will assume no background knowledge on behalf of the student, starting from scratch on both the programming and mathematics."<p>This is a fantastic "side effect" of the fact that category theory isn't built on any other mathematical knowledge. You don't even need even any arithmetics for that.
Videos of the lectures from last year:
<a href="https://www.youtube.com/watch?v=NUBEB9QlNCM" rel="nofollow">https://www.youtube.com/watch?v=NUBEB9QlNCM</a>
For those who might not realize: IAP is the period between semesters at MIT, roughly most of January. So this is is a quick, accessible introduction, not a heavy semester-long slog.
In my experience, Monad, Applicable, and Monoid are probably the only ones I'd use in Haskell, and maybe none of them in languages without good inference and general support.<p>Pretty wild ideas, though. Fair chance they'd be more confusing than using more specifically named instances, but solid ideas where the class instance documents that you're using the pattern, instead of describing the preferred interface.
For a humorous use case of types, nothing has beat Aphyr's (of Jepsen fame) "Typing the Technical Interview" here: <a href="https://aphyr.com/posts/342-typing-the-technical-interview" rel="nofollow">https://aphyr.com/posts/342-typing-the-technical-interview</a><p>If you haven't read it, take a minute...
Wow, what a combo! I'd be interested in anything from each of the lecturers, but all 3 at the same course, is amazing.<p>Category Theory could be the rosetta stone of many things(this is relevant <a href="https://arxiv.org/pdf/0903.0340.pdf" rel="nofollow">https://arxiv.org/pdf/0903.0340.pdf</a>).
What an odd coincidence that this was posted and on my YT subscribe page: <a href="https://www.youtube.com/watch?v=NUBEB9QlNCM" rel="nofollow">https://www.youtube.com/watch?v=NUBEB9QlNCM</a> - Just posting the video for others to see.
David Spivak and other folks at Azimuth Forum[0] have been great at providing high quality discussions on ideas in this course and others. Many thanks.<p>[0] <a href="https://forum.azimuthproject.org" rel="nofollow">https://forum.azimuthproject.org</a>
the second i saw haskell i started saying eternally, "ABORT ABORT!"<p>You are going to have to revive jesus to come up with a functional language that simplifies coding over a procedural one. Especially over an object oriented one.