caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* 'a & string unification issue
@ 2006-08-22 17:03 Alessandro Baretta
  2006-08-22 23:24 ` [Caml-list] " Jacques Garrigue
  0 siblings, 1 reply; 3+ messages in thread
From: Alessandro Baretta @ 2006-08-22 17:03 UTC (permalink / raw)
  To: Ocaml

Hi guys. I haven't been around for a while. I hope everything's been well for 
everybody these past six months or so.

I'm back to my usual tuareg-mode session, and I'm back to my usual typing 
trouble. Does the following error message, coming from a fresh installation of 
ocaml 3.09.2, make any sense.

Values do not match:
   val init :
     [< `Odbc_driver of
          [< `Default
           | `Options of
               [< `DSN of string ] * [< `User of string ] *
               [< `Password of string ] ]
      | `Pgsql_driver of
          [< `Default
           | `Options of
               [< `Client_encoding of string

(* The problem seems to be here: shouldn't 'x & string unify trivially *)
(* for any type variable 'x? *)
                | `DB of 'a & string
                | `Debug_log of 'b & string
                | `Debug_options of 'c & string
                | `Host of 'd & string
                | `Hostaddr of 'e & string
                | `Password of 'f & string
                | `Port of 'g & int
                | `SSL of 'h & string
                | `User of 'i & string ]
               list
           | `String of string
           > `Options ] ] ->
     [> `Odbc_driver of Odbc_driver.pipeline
      | `Pgsql_driver of Pgsql_driver.pipeline ]
is not included in
   val init :
     [< `Odbc_driver of
          [< `Default
           | `Options of
               [ `DSN of string ] * [ `User of string ] *
               [ `Password of string ] ]
      | `Pgsql_driver of
          [< `Default
           | `Options of
               [< `Client_encoding of string
                | `DB of string
                | `Debug_log of string
                | `Debug_options of string
                | `Host of string
                | `Hostaddr of string
                | `Password of string
                | `Port of int
                | `SSL of string
                | `User of string ]
               list
           | `String of string ] ] ->
     [> `Odbc_driver of Odbc_driver.pipeline
      | `Pgsql_driver of Pgsql_driver.pipeline ]

-- 
*********************************************************************

Ing. Alessandro Baretta

Studio Baretta
http://studio.baretta.com/

Consulenza Tecnologica e Ingegneria Industriale
Technological Consulting and Industrial Engineering

Headquarters
tel. +39 02 370 111 55
fax. +39 02 370 111 54

Lab
tel. +39 02 9880 271
fax. +39 02 9828 0296


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Caml-list] 'a & string unification issue
  2006-08-22 17:03 'a & string unification issue Alessandro Baretta
@ 2006-08-22 23:24 ` Jacques Garrigue
  2006-08-24 14:51   ` Alessandro Baretta
  0 siblings, 1 reply; 3+ messages in thread
From: Jacques Garrigue @ 2006-08-22 23:24 UTC (permalink / raw)
  To: a.baretta; +Cc: caml-list

From: Alessandro Baretta <a.baretta@studio.baretta.com>

> I'm back to my usual tuareg-mode session, and I'm back to my usual typing 
> trouble. Does the following error message, coming from a fresh installation of 
> ocaml 3.09.2, make any sense.
> 
> Values do not match:
>    val init :
>      [< `Odbc_driver of
>           [< `Default
>            | `Options of
>                [< `DSN of string ] * [< `User of string ] *
>                [< `Password of string ] ]
>       | `Pgsql_driver of
>           [< `Default
>            | `Options of
>                [< `Client_encoding of string
> 
> (* The problem seems to be here: shouldn't 'x & string unify trivially *)
> (* for any type variable 'x? *)
Indeed, so this is probably not the problem
>                 | `DB of 'a & string
>                 | `Debug_log of 'b & string
>                 | `Debug_options of 'c & string
>                 | `Host of 'd & string
>                 | `Hostaddr of 'e & string
>                 | `Password of 'f & string
>                 | `Port of 'g & int
>                 | `SSL of 'h & string
>                 | `User of 'i & string ]
>                list
>            | `String of string
The next line seems to be the problem:
>            > `Options ] ] ->
>      [> `Odbc_driver of Odbc_driver.pipeline
>       | `Pgsql_driver of Pgsql_driver.pipeline ]
> is not included in
>    val init :
>      [< `Odbc_driver of
>           [< `Default
>            | `Options of
>                [ `DSN of string ] * [ `User of string ] *
>                [ `Password of string ] ]
>       | `Pgsql_driver of
>           [< `Default
>            | `Options of
>                [< `Client_encoding of string
>                 | `DB of string
>                 | `Debug_log of string
>                 | `Debug_options of string
>                 | `Host of string
>                 | `Hostaddr of string
>                 | `Password of string
>                 | `Port of int
>                 | `SSL of string
>                 | `User of string ]
>                list
>            | `String of string ] ] ->
>      [> `Odbc_driver of Odbc_driver.pipeline
>       | `Pgsql_driver of Pgsql_driver.pipeline ]

Looks like your implementation contains at least `Options, while the
interface doesn't. Since it is in a contravariant position, you should
be able to remove it from the implementation by subtyping.

Jacques Garrigue


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Caml-list] 'a & string unification issue
  2006-08-22 23:24 ` [Caml-list] " Jacques Garrigue
@ 2006-08-24 14:51   ` Alessandro Baretta
  0 siblings, 0 replies; 3+ messages in thread
From: Alessandro Baretta @ 2006-08-24 14:51 UTC (permalink / raw)
  To: Ocaml

Jacques Garrigue wrote:
> From: Alessandro Baretta <a.baretta@studio.baretta.com>

> Looks like your implementation contains at least `Options, while the
> interface doesn't. Since it is in a contravariant position, you should
> be able to remove it from the implementation by subtyping.
> 
> Jacques Garrigue

Ah, yes! The error message was so long that I missed the relevant spot, and the 
`&' sign tricked me into thinking that the issue was there. And, yes, the 
problem is the "> `Options" constraint, which appears in the inferred signature 
of the function, but not in the mli.

Thank you very much.

Alex


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2006-08-24 15:03 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-08-22 17:03 'a & string unification issue Alessandro Baretta
2006-08-22 23:24 ` [Caml-list] " Jacques Garrigue
2006-08-24 14:51   ` Alessandro Baretta

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).