[Haskell-cafe] It matters how Type Synonyms are defined?

J. Garrett Morris trevion at gmail.com
Sat Feb 3 02:39:22 EST 2007


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 <john at repetae.net> 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 at 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.


More information about the Haskell-Cafe mailing list