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