You should be able to write something like this:

type StateB a b = StateT SomeOtherState (StateA a) b

Best regards, Øystein Kolsrud

On Wed, Dec 7, 2011 at 11:48 AM, Dmitry Kulagin <dmitry.kula...@gmail.com>wrote:

> Hi Dan,
>
> I am still pretty new in Haskell, but this problem annoys me already.
>
> If I define certain monad as a type synonym:
>
>    type StateA a = StateT SomeState SomeMonad a
>
> Then I can't declare new monad based on the synonym:
>
>    type StateB a = StateT SomeOtherState StateA a
>
> The only way I know to overcome is to declare StateA without `a':
>
>    type StateA = StateT SomeState SomeMonad
>
> But it is not always possible with existing code base.
>
> I am sorry, if this is offtopic, but it seemed to me that the problem
> is realted to partially applied type synomyms you described.
>
> Thanks!
> Dmitry
>
> On Tue, Dec 6, 2011 at 10:59 PM, Dan Doel <dan.d...@gmail.com> wrote:
> > Greetings,
> >
> > In the process of working on a Haskell-alike language recently, Ed
> > Kmett and I realized that we had (without really thinking about it)
> > implemented type synonyms that are a bit more liberal than GHC's. With
> > LiberalTypeSynonyms enabled, GHC allows:
> >
> >    type Foo a b = b -> a
> >    type Bar f = f String Int
> >
> >    baz :: Bar Foo
> >    baz = show
> >
> > because Bar expands to saturate Foo. However, we had also implemented
> > the following, which fails in GHC:
> >
> >    type Foo a b = b -> a
> >    type Bar f = f (Foo Int) (Foo Int)
> >    type Baz f g = f Int -> g Int
> >
> >    quux :: Bar Baz
> >    quux = id
> >
> > That is: type synonyms are allowed to be partially applied within
> > other type synonyms, as long as similar transitive saturation
> > guarantees are met during their use.
> >
> > I don't know how useful it is, but I was curious if anyone can see
> > anything wrong with allowing this (it seems okay to me after a little
> > thought), and thought I'd float the idea out to the GHC developers, in
> > case they're interested in picking it up.
> >
> > -- Dan
> >
> > _______________________________________________
> > Haskell-Cafe mailing list
> > Haskell-Cafe@haskell.org
> > http://www.haskell.org/mailman/listinfo/haskell-cafe
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>



-- 
Mvh Øystein Kolsrud
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to