In Haskell, is there a way to restrict a monad M a
so that a
satisfy a type class constraint?
I am translating the probabilistic modeling e
My understanding of this is that you simply cannot, because a monad is meant to be generalized over all types, not some restricted subset of types such as (Ord a)
.
Instead of restricting the monadic type M a
, you can simply restrict functions which use that monadic type, e.g.,
foo :: Ord a => Int -> M a
In fact, it is preferable to keep types as general as possible and use type classes only to restrict functions.
etc.