Hello! On Sat, Jul 3, 2010 at 9:12 PM, Dan Doel <dan.d...@gmail.com> wrote: > The problem is instantiation. SomeMonad is a constructor for the type > > SomeMonad s a > > for any *particular* s and a. But the type: > > forall s. SomeMonad s a > > is not that type. That type doesn't have constructors (proper) at all, and > hence you cannot match against it. If types were passed explicitly, then > values of the second type would look like: > > /\s -> ... > > Where the big lambda is type abstraction. But you can't match against this, of > course (just as you can't match against functions as lambda expressions), you > can only apply values of this type.
I understood your explanation. However, is this an implementation detail/bug or is it an intended feature? Cheers, -- Felipe. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe