Restricting a monad to a type class

前端 未结 3 1914
醉梦人生
醉梦人生 2020-12-09 18:18

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

相关标签:
3条回答
  • 2020-12-09 18:24

    It appears that I ran into a well-known problem in Haskell. I found many workarounds by googling for "restricted monads". This solutions seems to be the least disruptive. Still, for my purposes, it seems overkill. I think I'll keep the Distribution monad general, and simplify a support via a restricted function, as suggested by Revolucent.

    0 讨论(0)
  • 2020-12-09 18:29

    Check out Martin Erwig's library, PFP:

    The PFP library is a collection of modules for Haskell that facilitates probabilistic functional programming, that is, programming with stochastic values. The probabilistic functional programming approach is based on a data type for representing distributions. A distribution represent the outcome of a probabilistic event as a collection of all possible values, tagged with their likelihood.

    0 讨论(0)
  • 2020-12-09 18:46

    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.

    0 讨论(0)
提交回复
热议问题