KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
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 example from F# to Haskell . However, in Haskell, I omitted support because it would change data Distribution a to data (Ord a) => Distribution a . With this change, I get the following error: ...probabilisticModeling.hs:42:13: Could not deduce (Ord a) from the context () arising from a use of `always' at ...probabilisticModeling.hs:42:13-18 Possible fix: add (Ord a) to the context of the type signature for `return' In the expression: always In the definition of `return': return = always In the instance declaration for `Monad Distribution' Indeed, the type of always / return is: (Ord a) => a -> Distribution a . Is there a way I can have a monad Distribution , but force the constraint (Ord a) on this monad? I tried: instance Monad Distribution where (>>=) = bind return :: (Ord a) => a -> Distribution a = always But I get the error: ...probabilisticModeling2.hs:48:4: Pattern bindings (except simple variables) not allowed in instance declarations return :: (Ord a) => a -> Distribution a = always Failed, modules loaded: none. So it there a way to have a monad M a , but restrict the a with a constraint suc
Tags (comma-separated)
Save Edits
Cancel