<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE message PUBLIC
  "-//MLarc//DTD MLarc output files//EN"
  "../../mlarc.dtd"[
  <!ATTLIST message
    listname CDATA #REQUIRED
    title CDATA #REQUIRED
  >
]>

  <?xml-stylesheet href="../../mlarc.xsl" type="text/xsl"?>


<message 
  url="2009/01/6fa2751eaac22525f374afc56dd431c5"
  from="Jacques Garrigue &lt;garrigue@m...&gt;"
  author="Jacques Garrigue"
  date="2009-01-15T12:13:36"
  subject="Re: [Caml-list] What is a future of ocaml?"
  prev="2009/01/f31c22f422bda4384f7be5c84ef27fd9"
  next="2009/01/a92fb204b44d257214f723b6267be86d"
  prev-in-thread="2009/01/f1aad22c4a589642a3bb869a498b8209"
  next-in-thread="2009/01/a92fb204b44d257214f723b6267be86d"
  prev-thread="2009/01/f07eb010cca2eff83e4c7a391c1beec7"
  next-thread="2009/01/6cf79b75301fab6a2690970d5f9afce6"
  root="../../"
  period="month"
  listname="caml-list"
  title="Archives of the Caml mailing list">

<thread subject="What is a future of ocaml?">
<msg 
  url="2009/01/d009a32338fe2358180636ec38f25ff7"
  from="Radzevich Belevich &lt;radzevich.belevich@g...&gt;"
  author="Radzevich Belevich"
  date="2009-01-14T09:18:34"
  subject="What is a future of ocaml?">
<msg 
  url="2009/01/4b5af49a7cba83100640b515610091d8"
  from="David Allsopp &lt;dra-news@m...&gt;"
  author="David Allsopp"
  date="2009-01-14T09:36:00"
  subject="RE: [Caml-list] What is a future of ocaml?">
</msg>
<msg 
  url="2009/01/3ecccd2434146d19ca1d3421567a5687"
  from="Richard Jones &lt;rich@a...&gt;"
  author="Richard Jones"
  date="2009-01-14T09:51:49"
  subject="Re: [Caml-list] What is a future of ocaml?">
</msg>
<msg 
  url="2009/01/5f1b07f9372962c4e6c1289b87b07329"
  from="Sylvain Le Gall &lt;sylvain@l...&gt;"
  author="Sylvain Le Gall"
  date="2009-01-14T13:35:50"
  subject="Re: What is a future of ocaml?">
</msg>
<msg 
  url="2009/01/eaa7a5e430cc498ebaa24cfa72dfa40c"
  from="Dawid Toton &lt;d0@w...&gt;"
  author="Dawid Toton"
  date="2009-01-14T13:44:49"
  subject="Re: [Caml-list] What is a future of ocaml?">
<msg 
  url="2009/01/a1ade591c77a79c5499179f8e61baf52"
  from="Martin Jambon &lt;martin.jambon@e...&gt;"
  author="Martin Jambon"
  date="2009-01-14T15:39:17"
  subject="Re: [Caml-list] What is a future of ocaml?">
</msg>
<msg 
  url="2009/01/f1aad22c4a589642a3bb869a498b8209"
  from="David Allsopp &lt;dra-news@m...&gt;"
  author="David Allsopp"
  date="2009-01-14T15:39:56"
  subject="RE: [Caml-list] What is a future of ocaml?">
<msg 
  url="2009/01/6fa2751eaac22525f374afc56dd431c5"
  from="Jacques Garrigue &lt;garrigue@m...&gt;"
  author="Jacques Garrigue"
  date="2009-01-15T12:13:36"
  subject="Re: [Caml-list] What is a future of ocaml?">
<msg 
  url="2009/01/a92fb204b44d257214f723b6267be86d"
  from="Benedikt Grundmann &lt;benedikt.grundmann@g...&gt;"
  author="Benedikt Grundmann"
  date="2009-01-15T12:46:16"
  subject="Re: [Caml-list] What is a future of ocaml?">
<msg 
  url="2009/01/1b8eb3b52088e8fffff776a62cc75175"
  from="Oliver Bandel &lt;oliver@f...&gt;"
  author="Oliver Bandel"
  date="2009-01-15T22:20:50"
  subject="Re: [Caml-list] What is a future of ocaml?">
<msg 
  url="2009/01/7312253b25c1ecc3531c6e6f9cce03cc"
  from="Kuba Ober &lt;ober.14@o...&gt;"
  author="Kuba Ober"
  date="2009-01-16T14:56:05"
  subject="Re: [Caml-list] What is a future of ocaml?">
</msg>
</msg>
</msg>
<msg 
  url="2009/01/5e1743ee64b2e8d98a2d49c2322433a3"
  from="David Allsopp &lt;dra-news@m...&gt;"
  author="David Allsopp"
  date="2009-01-15T12:51:34"
  subject="RE: [Caml-list] What is a future of ocaml?">
</msg>
<msg 
  url="2009/01/91a2652f1e0d99973e3fe36b3b63f44a"
  from="Stefan Monnier &lt;monnier@i...&gt;"
  author="Stefan Monnier"
  date="2009-01-15T21:08:19"
  subject="Re: What is a future of ocaml?">
</msg>
</msg>
</msg>
<msg 
  url="2009/01/14d8d8d728ebd37e4a9f9ddac58fed93"
  from="Jérémie Dimino &lt;jeremie@d...&gt;"
  author="Jérémie Dimino"
  date="2009-01-14T16:07:38"
  subject="Re: [Caml-list] What is a future of ocaml?">
</msg>
<msg 
  url="2009/01/22c25b4e5ea354938c7d5035de6cc89a"
  from="Dario Teixeira &lt;darioteixeira@y...&gt;"
  author="Dario Teixeira"
  date="2009-01-14T17:29:05"
  subject="Re: [Caml-list] What is a future of ocaml?">
<msg 
  url="2009/01/f679aa40d312c7084ed5422741c0cd24"
  from="Richard Jones &lt;rich@a...&gt;"
  author="Richard Jones"
  date="2009-01-15T17:50:54"
  subject="Re: [Caml-list] What is a future of ocaml?">
</msg>
</msg>
<msg 
  url="2009/01/9bd9cb12dcbf96b8c27512b55051256b"
  from="Richard Jones &lt;rich@a...&gt;"
  author="Richard Jones"
  date="2009-01-15T17:46:43"
  subject="Re: [Caml-list] What is a future of ocaml?">
<msg 
  url="2009/01/ac0bd86b327fabed4e03a7bfa07c588d"
  from="Xavier Leroy &lt;Xavier.Leroy@i...&gt;"
  author="Xavier Leroy"
  date="2009-01-18T16:34:24"
  subject="Re: [Caml-list] What is a future of ocaml?">
<msg 
  url="2009/01/5308b83c36d2f5cea5ee6ea4ec3329d0"
  from="Richard Jones &lt;rich@a...&gt;"
  author="Richard Jones"
  date="2009-01-18T18:02:54"
  subject="Re: [Caml-list] What is a future of ocaml?">
</msg>
</msg>
</msg>
</msg>
</msg>
</thread>

<contents>
From: "David Allsopp" &lt;dra-news@metastack.com&gt;
&gt; Dawid Toton wrote:
&gt; &gt; Could anybody explain why it's impossible to have type classes in OCaml?
&gt; 
&gt; I don't think it's impossible - but I believe that if you introduce type
&gt; classes then you "damage" Hindley-Milner type inference and you can no
&gt; longer derive a principal typing for an arbitrary ML expression without
&gt; resorting to type annotations. Whether this is a problem or not is a matter
&gt; of taste - but it does make the language harder to call "ML" if you lose one
&gt; of its central features! That said, there are of course two big features
&gt; (objects and polymorphic variants) in OCaml already which do require
&gt; annotations.

The reason is mostly wrong :-)
One can have both type classes and principal types; the problem with
principal types in Haskell is more subtle thant that.
And neither polymorphic variants nor object require type anotations in
ocaml; they just make it much more painful to understand error
messages.
Principality is only broken by optional arguments and polymorphic
methods, and there is a -principal flag that recovers some form of
principality (requiring type annotations).

This said, type classes have a lot of common features with modules or
objects, so this would be yet another way to do some similar things.
More problematic, type classes depend on the nominality of the type
systems, while ocaml has a rich language of structural types. For
instance, it is not completely clear how one could select instances of
type classes for polymorphic variants, without introducing conflicts.
I'm afraid the combination of type classes with modules and functors
is not trivial either.

Jacques Garrigue

</contents>

</message>

