Agreed. I've written quite a bit of code that way myself. Looking at Iavor's monadLib, though, raised a question: has there been any consider of removing the requirement that the newtype be the last argument? The classes for state monads, etc. are rather backwards as it is, since the independent type (and the primary point of the class) is always written last. It seems like it should be equally easy to support something like:
newtype Scopestate a = ScopeState (State (Scope VVar) a) deriving (Monad ScopeState, Functor ScopeState, StateM ScopeState (Scope VVar)) or even, ideally, a mixture of the two. /g On 2/2/07, John Meacham <[EMAIL PROTECTED]> wrote:
On Fri, Feb 02, 2007 at 04:18:19PM -0600, Bryan Burgers wrote: > Now, I was going to ask something like, "How can I define my type > synonym so I can do this," but I figured out while writing this email > that if I define ScopeState a different way: > >type ScopeState = State (Scope VVar) this is off-topic, but this is a perfect example of where newtype deriving is great. > newtype ScopeState a = ScopeState (State (Scope VVar) a) > deriving(Monad,Functor,State (Scope VVar)) I just really like this idiom is all. Using it pervasively pays off greatly. John -- John Meacham - ⑆repetae.net⑆john⑈ _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- It is myself I have never met, whose face is pasted on the underside of my mind.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe