In my experience with Data.Sequence and especially Data.Tree, I have learned that it is extremely difficult to test that a MonadFix instance obeys the laws. It also tends to be very difficult to prove that the laws hold. It would therefore be very helpful if checkers could provide some assistance. It's tricky because the functions passed to mfix need to be lazy, and their detailed strictness needs to be reflected in certain ways in the results of mfix. I suspect the right approach is to find a way to generate some reasonably large but very well-behaved class of functions, probably with some help from the user.
In my experience with
Data.Sequenceand especiallyData.Tree, I have learned that it is extremely difficult to test that aMonadFixinstance obeys the laws. It also tends to be very difficult to prove that the laws hold. It would therefore be very helpful ifcheckerscould provide some assistance. It's tricky because the functions passed tomfixneed to be lazy, and their detailed strictness needs to be reflected in certain ways in the results ofmfix. I suspect the right approach is to find a way to generate some reasonably large but very well-behaved class of functions, probably with some help from the user.