
On Mon, Dec 22, 2008 at 6:19 PM, Peter Padawitz
I'd like to define a monad Set for types in the class Eq. But how can the arguments of Set be constrained when Set is defined as an instance of Monad? instance Eq a => Monad Set where ... obviously cannot work.
Shouldn't you impose the constraint when defining functions operating on Set values? I guess that the contraint should be enforced not only when dealing with monadic code, but also whenever it appears in your program.
Is there a standard update function for fields in data types, something that OO programmers do with assignments like obj.attr := value ?
Your statement doesn't make much sense in the functional world of Haskell. There's a record update construct which may resemble the OO data update operation but it makes a whole new copy of the original value, i.e.: foo a = a { attr = value } which is basically like doing: foo a = a + 2 Cristiano