newtype Wrap a = Wrap { unWrap :: a } -- not an Ord even if a is test1 = unEmbed $ do x <- Embed $ Set.fromList [6, 2, 3] do y <- return (Wrap x) z <- Embed $ Set.fromList [1..2] guard (unWrap y < 5) return (unWrap y + z) `mplus` return 10