
30 Mar
2008
30 Mar
'08
8:09 p.m.
On Tue, 25 Mar 2008, Ryan Ingram wrote:
settest :: S.Set Int settest = runSetM $ do x <- mplus (mplus mzero (return 2)) (mplus (return 2) (return 3)) return (x+3) -- fromList [5,6]
What this does under the hood is treat the computation on each element of the set separately, except at programmer-specified synchronization points where the computation result is required to be a member of the Ord typeclass.
It's like working in the List monad mainly, collapsing duplicates from time to time, right?