Why use Bifunctor instead of like. Okay so we want that Mu f is a functor so f needs to be a Bifunctor bc f is a Functor in its second argument But you could just say that (\x. Mu (f x)) is a functor instead
I'm thinking of (after all the lectures are over) rewriting all of my notes with notation that I prefer (and that is consistent throughout!) bc this material is really interesting but just so confusing when mixed with Haskell's limitations on names
It bothers me that all this machinery is set up to use bifunctors but you only ever bimap id over the first type and the only time it's useful is to make the fixed point of the bifunctor a functor
Wait a minute. If there exists a unique x such that P(x) and I can show that P(y) for some y, then x = y right I was so caught up in the category theory I forgot how logic works
There's someone in our group whose first exposure to pattern matching might be Agda... oof Come to think of it though, everything we've been doing could've been done in Haskell, idk when we're going to get to dependent types