[Haskell-cafe] More liberal than liberal type synonyms

Øystein Kolsrud kolsrud at gmail.com
Wed Dec 7 12:09:13 CET 2011


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.kulagin at 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.doel at 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 at haskell.org
> > http://www.haskell.org/mailman/listinfo/haskell-cafe
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>



-- 
Mvh Øystein Kolsrud
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20111207/69329357/attachment.htm>


More information about the Haskell-Cafe mailing list