Difference between revisions of "Talk:Comparing class alias proposals"

From HaskellWiki
Jump to navigation Jump to search
(my thoughts about higher-order context-synonyms)
 
 
Line 20: Line 20:
   
 
Does this actually buy us anything? Unless we go for one of the extensions and we want something like this to be the ''only'' syntax perhaps?
 
Does this actually buy us anything? Unless we go for one of the extensions and we want something like this to be the ''only'' syntax perhaps?
  +
  +
On Class alias or context synonym:
  +
  +
<blockquote>Class aliases (in the case of writing instances of them) seem like a strict subset of context synonyms.</blockquote>
  +
I guess you mean "together with the extension of multi-instance declarations"?
  +
And this is only as long as we haven't added (default)methods to the class-alias declaration, isn't it?

Latest revision as of 00:39, 30 April 2009

About context synonyms:

A context synonym may appear anywhere a context is allowed:

Q: May a CS's RHS refer to other CS's? For example:

context Foo a = (BoundedEnum a, Eq a, Ord a)

I think you've already answered your own question. What to do about loops is something else of course.

Q: Apart from type constructors, may a CS's variables be class constructors (things of kind ... -> Context) as well? For example:

Q: May CS's be passed as arguments to other CS's? For example

I'd say this is an obvious no until we have some more general concept of class-variables. And let's not try to fit that in a context-synonym-proposal ;)

Q: May CS's be partially applied? Consider these alternate definitions of BoundedEnum:

Does this actually buy us anything? Unless we go for one of the extensions and we want something like this to be the only syntax perhaps?

On Class alias or context synonym:

Class aliases (in the case of writing instances of them) seem like a strict subset of context synonyms.

I guess you mean "together with the extension of multi-instance declarations"? And this is only as long as we haven't added (default)methods to the class-alias declaration, isn't it?