quchen/articles

Inferred (rank 1) type of moeb could be more general

Jashweii opened this issue · 1 comments

With an explicit type signature, moeb can be given a more general type

moeb :: ((forall b . (a -> b) -> b) -> c -> a) -> c -> a
moeb f x = go where go = f ($ go) x

e.g. compare moeb (\a -> bimap a a) with/without the explicit rank 3(?) signature - the rank 3 version allows a fixpoint with different parameters.

quchen commented

Cleaning up old open issues/discussions.