Difference between Fix and Mu?


chexxor [5:25 PM]
ah, so Haskell’s fixed-points package defines cata and Fix, but in PS land, it’s split into fixed-points and matryoshka, where the former defines Fix as Mu and the latter defines cata.

The type sigs for matryoshka are quite intimidating, while sigs in the Haskell package are relatively quick to understand.

natefaubion [5:27 PM]
the equivalent to matryoshka is recursion-schemes

garyb [5:28 PM]
Fix is not quite the same as Mu, it can behave differently in Haskell due to laziness

chexxor [5:28 PM]
Isn’t that the same as anything between the two langs? Maybe in PS is not quite the same as Maybe in Haskell?

garyb [5:29 PM]
well, there’s a Mu in haskell too :smile:
(it’s in recusion-schemes)

chexxor [5:30 PM]
Ah, https://stackoverflow.com/questions/45580858/what-is-the-difference-between-fix-mu-and-nu-in-ed-kmetts-recursion-scheme-pac

garyb [5:30 PM]

chexxor [5:32 PM]
oh, Mu and Nu are isomorphic? So if I can define a data type using Mu, then I should be able to do it using Nu?


I thought Mu, Nu and Fix were all equivalent in a lazy setting, but Nu was strictly bigger in a strict language.