Re: [Haskell-cafe] type versus data declarations

2007-06-08 Thread Alfonso Acosta

Hola Emilio!

On 6/7/07, Emilio Jesús Gallego Arias [EMAIL PROTECTED] wrote:

Hello,

I'm wondering why you can write

 data FSet a = Show a = M (a - Double)

 a :: FSet Double
 a = M $ \x - 0

and it works, but

 type FSet a = Show a = (a - Double)


type only works for redefinitions (i.e. adding the |Show a| constraint
makes FSet a different type to (a - Double)).

In addition you seem to be trying to pack a dictionary with the type
(something you cannot do in Haskell without existentials). This is
just a guess, but it seems that a definition using existentials is
what you're looking for.

data FSet a = forall a. Show a = FSet (a - Double)

Cheers,

PD: Saluda Ángel de mi parte :)
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] type versus data declarations

2007-06-07 Thread Emilio Jesús Gallego Arias
Hello,

I'm wondering why you can write

 data FSet a = Show a = M (a - Double)

 a :: FSet Double
 a = M $ \x - 0

and it works, but

 type FSet a = Show a = (a - Double)

 a :: FSet Double
 a _ = 0

fails with

 All of the type variables in the constraint `Show a' are already in scope
(at least one must be universally quantified here)
 In the type synonym declaration for `FSet'

If I understood the GHC manual, this should work, as FSet a should be
replaced in a, so a type signature would come:

 a :: Show a = (a - Double)

which is OK.

Sorry if this is FAQ, but I did some searches and nothing came out.

Thanks in advance,

Emilio

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe