<?xml version="1.0" encoding="utf-8"?>
<!--  RSS generated by Flaimo.com RSS Builder [2009-11-21 16:32:16]  --> <rss version="2.0" xmlns:im="http://purl.org/rss/1.0/item-images/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" >
<channel>
<docs>http://caml.inria.fr/mantis/</docs>
<description>Mantis - ISSUES</description>
<link>http://caml.inria.fr/mantis/</link>
<title>Mantis - ISSUES</title>
<image>
<title>Mantis - ISSUES</title>
<url>http://caml.inria.fr/mantis/images/mantis_logo_button.gif</url>
<link>http://caml.inria.fr/mantis/</link>
<description>Mantis - ISSUES</description>
</image>
<category>All Projects</category>
<ttl>10</ttl>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<sy:updateBase>2009-11-21T16:32:16+01:00</sy:updateBase>
<item>
<title>0004927: caml_int64_of_bits, gcc optimisation and double alignment</title>
<link>http://caml.inria.fr/mantis/view.php?id=4927</link>
<description>I just experienced a problem with caml_int64_float_of_bits.  this function (as                                     &lt;br /&gt;
well as others in this file) use a union to &quot;convert&quot; an integer into a double                                     &lt;br /&gt;
: first the int64 value is copied into a union, then the double is read and                                        &lt;br /&gt;
send to caml_copy_double.                                                                                          &lt;br /&gt;
                                                                                                                   &lt;br /&gt;
With gcc 4.4.1 this was optimized into loading directly the float value into a                                     &lt;br /&gt;
float register from the address of the given value (+4 for the value header).&lt;br /&gt;
This fails on an architecture that cannot load double words from unaligned&lt;br /&gt;
address.&lt;br /&gt;
&lt;br /&gt;
This just happened to me on a MIPS for ocaml 3.9 (but I saw the function is &lt;br /&gt;
still the same on 3.11); as a workaround I declared the union as volatile, thus&lt;br /&gt;
preventing this optimisation, but this is not satisfactory.&lt;br /&gt;
&lt;br /&gt;
IMHO gcc is not to blame here since it's undefined behaviour to read a field of&lt;br /&gt;
a union but the one that was written to.&lt;br /&gt;
&lt;br /&gt;
I have no idea how to fix this properly.&lt;br /&gt;
&lt;br /&gt;
As a reference here is the involved code :                                                                         &lt;br /&gt;
&lt;br /&gt;
CAMLprim value caml_int64_float_of_bits(value vi)                                                                  &lt;br /&gt;
{                                                                                                                  &lt;br /&gt;
  union { double d; int64 i; int32 h[2]; } u;                                                                      &lt;br /&gt;
  u.i = Int64_val(vi);                                                                                             &lt;br /&gt;
  { int32 t = u.h[0]; u.h[0] = u.h[1]; u.h[1] = t; }                                                               &lt;br /&gt;
  return caml_copy_double(u.d);                                                                                    &lt;br /&gt;
}</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4927</guid>
<author>rixed &lt;rixed@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4927#bugnotes</comments>
</item>
<item>
<title>0004926: Better support for recursive types</title>
<link>http://caml.inria.fr/mantis/view.php?id=4926</link>
<description>The following will be rejected by the compiler:&lt;br /&gt;
&lt;br /&gt;
  type 'a t = A of 'a&lt;br /&gt;
  type u = u t&lt;br /&gt;
&lt;br /&gt;
whereas this works:&lt;br /&gt;
&lt;br /&gt;
  type 'a t = [ `A of 'a ]&lt;br /&gt;
  type u = u t&lt;br /&gt;
&lt;br /&gt;
Maybe there are good reasons why sum types, which create a new type, should not behave similar to polymorphic variants here.  But there are cases where the inability of the compiler to infer that the type recursion is &quot;interleaved&quot; by data constructors requires tedious workarounds (introducing new types).&lt;br /&gt;
&lt;br /&gt;
If it seems easy enough to do, it would be great if some support for recursive types could be added to the compiler.  Not all type recursion is evil.</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4926</guid>
<author>mottl &lt;mottl@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4926#bugnotes</comments>
</item>
<item>
<title>0004914: Add a syntax for reference to elements on text</title>
<link>http://caml.inria.fr/mantis/view.php?id=4914</link>
<description>It would be nice to add the following text element : &lt;br /&gt;
&lt;br /&gt;
{{!string}text}&lt;br /&gt;
&lt;br /&gt;
This would behave like {!string} but instead of writing the reference &quot;string&quot;, &quot;text&quot; would be written. &lt;br /&gt;
&lt;br /&gt;
Example :&lt;br /&gt;
&lt;br /&gt;
Have a look at {{!Mymodule.thetype}this type}&lt;br /&gt;
&lt;br /&gt;
Currently, to do that you have to write :&lt;br /&gt;
&lt;br /&gt;
Have a look at {{:Mymodule.html#TYPEthetype}this type}&lt;br /&gt;
&lt;br /&gt;
which relies on the way identifiers are generated (and is specific to one kind of output).</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4914</guid>
<author>dbuenzli &lt;dbuenzli@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4914#bugnotes</comments>
</item>
<item>
<title>0004922: Ocamlbuild recompiles too many files</title>
<link>http://caml.inria.fr/mantis/view.php?id=4922</link>
<description>When a compilation fails, Ocamlbuild does not correctly remembers some of the files it has successfully built. This is very tiresome on big builds, where the same files may need to be recompiled as long as the project has not been entirely rebuilt. The attached patch fixes this problem. (Notice that there are two completely independent bugs.)</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4922</guid>
<author>Boris Yakobowski &lt;Boris Yakobowski@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4922#bugnotes</comments>
</item>
<item>
<title>0004920: example of linking C main with OCaml runtime needs additional libraries</title>
<link>http://caml.inria.fr/mantis/view.php?id=4920</link>
<description>In the manual chapter &quot;Interfacing C with Objective Caml&quot;, subsection &quot;Advanced topic: callbacks from C to Caml&quot;, sub-subsection &quot;Embedding the Caml code in the C code&quot;:&lt;br /&gt;
&lt;br /&gt;
1. It's not necessary to include unix.cma in the ocamlopt command, or -lunix in the gcc command (unless required by the OCaml code, of course)&lt;br /&gt;
&lt;br /&gt;
2. It is necessary to add both &quot;-lm&quot; and &quot;-ldl&quot; at the end of the gcc command line.&lt;br /&gt;
&lt;br /&gt;
(on Linux, at least)</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4920</guid>
<author>ecc &lt;ecc@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4920#bugnotes</comments>
</item>
<item>
<title>0004919: Missing code_of_unix_error() in C interface of Unix module</title>
<link>http://caml.inria.fr/mantis/view.php?id=4919</link>
<description>The C interface to the Unix module provides a unix_error_of_code() to convert C errno numbers into OCaml Unix.error. It does not provide the reverse function though. In libfuse I have callbacks that can return a C errno number. The libfuse OCaml bindings then need a way to convert a Unix.error into a C errno number before returning it to libfuse. The attached patch adds the missing code_of_unix_error() function for this.</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4919</guid>
<author>goswin &lt;goswin@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4919#bugnotes</comments>
</item>
<item>
<title>0004909: int31 type for Bigarray</title>
<link>http://caml.inria.fr/mantis/view.php?id=4909</link>
<description>I currently have the problem that I want to read/write 31bit signed integer values to a Bigarray. The bigarray acts as a buffer that is stored on disk or restored from it from a C library.&lt;br /&gt;
&lt;br /&gt;
On a 32bit CPU I can just use (int, int, c_layout) Array1.t but on a 64bit CPU I need to use (int32, int32, c_layout) Array1.t. This means I need 2 flavours of the code depending on the number of bits the cpu has.&lt;br /&gt;
&lt;br /&gt;
It would be nice if there were a (int, int31_elt) kind in Bigarray allowing the use of int on 32bit and 64bit platforms.</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4909</guid>
<author>goswin &lt;goswin@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4909#bugnotes</comments>
</item>
<item>
<title>0004918: Inlining &amp; direct function application optimisation</title>
<link>http://caml.inria.fr/mantis/view.php?id=4918</link>
<description>ocamlopt does not recognise direct function applications which arise from inlining even trivial functions. For example,&lt;br /&gt;
&lt;br /&gt;
let id f = f&lt;br /&gt;
let rec f n = if n &lt;= 0 then 0 else n * f (n - 1)&lt;br /&gt;
&lt;br /&gt;
let _ = f 10&lt;br /&gt;
let _ = id f 20&lt;br /&gt;
&lt;br /&gt;
generates:&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
        mov     eax, 21&lt;br /&gt;
        call    _camlTest__f_60               % Direct call for f 10&lt;br /&gt;
L105:&lt;br /&gt;
        mov     ebx, DWORD PTR _camlTest+4&lt;br /&gt;
        mov     eax, 41&lt;br /&gt;
        mov     ecx, DWORD PTR [ebx]&lt;br /&gt;
        call    ecx                           % Indirect call to f 20&lt;br /&gt;
L106:&lt;br /&gt;
&lt;br /&gt;
The call to id is correctly inlined, but then the direct call is not recognised.&lt;br /&gt;
&lt;br /&gt;
See: ocaml/asmcomp/closure.ml</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4918</guid>
<author>viktorva &lt;viktorva@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4918#bugnotes</comments>
</item>
<item>
<title>0004679: Better module/namespace system</title>
<link>http://caml.inria.fr/mantis/view.php?id=4679</link>
<description>The module and/or file naming system for ocaml has some annoying restrictions that a modern language like ocaml shouldn't run it.&lt;br /&gt;
&lt;br /&gt;
E.g. today I was trying to create a packed module, and one of the modules to be packed into it has the same name as a module in the standard library, so I had to add a useless prefix to make it work.&lt;br /&gt;
&lt;br /&gt;
This is more silly considering that the module itself wouldn't actually be a top-level module, so there wouldn't be an actual naming conflict in the general case.&lt;br /&gt;
&lt;br /&gt;
I would like to see a real namespace system in ocaml rather than a tonne of top-level module names with a high risk of naming conflicts, and having to make sure one always comes up with unique module/file names. The packing approach is cumbersome.</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4679</guid>
<author>jessicah &lt;jessicah@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4679#bugnotes</comments>
</item>
<item>
<title>0004917: Make Graphics module use modern X fonts instead of X core fonts</title>
<link>http://caml.inria.fr/mantis/view.php?id=4917</link>
<description>X core fonts have been deprecated for many years.  Fedora are trying to identify pieces of software which still use X core fonts and could be changed to use modern X fonts (based on Xft and FontConfig).  The OCaml Graphics module is one such place.&lt;br /&gt;
&lt;br /&gt;
The attached patch changes the Graphics module to use modern X fonts.  The changes are relatively simple - changing calls such as XDrawString to use the Xft equivalent (XftDrawString8).&lt;br /&gt;
&lt;br /&gt;
One immediate advantage is that Graphics users will see anti-aliased fonts.&lt;br /&gt;
&lt;br /&gt;
Another advantage is that Graphics users can specify font names like &quot;Times-12&quot; instead of the massive and incomprehensible XLFD strings (&quot;-*-times-*-r-....&quot;)</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4917</guid>
<author>Richard Jones &lt;Richard Jones@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4917#bugnotes</comments>
</item>
<item>
<title>0004916: Flag for automatically constraining to unit types</title>
<link>http://caml.inria.fr/mantis/view.php?id=4916</link>
<description>This issue has already come up on the list a while ago, and we have also run into problems with that.  Consider the following code:&lt;br /&gt;
&lt;br /&gt;
  let equal f t1 t2 = f t1.a t2.a; f t1.b t2.b&lt;br /&gt;
&lt;br /&gt;
This should have been:&lt;br /&gt;
&lt;br /&gt;
  let equal f t1 t2 = f t1.a t2.a &amp;&amp; f t1.b t2.b&lt;br /&gt;
&lt;br /&gt;
Sadly, the compiler does not warn that the first case is not quite consistent with the signature where f is of type ('a -&gt; 'a -&gt; bool), because the return value is thrown away (treated as if it were of unit type).&lt;br /&gt;
&lt;br /&gt;
Would it be possible to add a flag to the compiler that would automatically constrain expressions to be of unit type if they are followed by a semicolon?  E.g.:&lt;br /&gt;
&lt;br /&gt;
    let equal f t1 t2 = (f t1.a t2.a : unit); f t1.b t2.b&lt;br /&gt;
&lt;br /&gt;
This would eliminate this class of errors by requiring users to explicitly ignore return values if they want to evaluate functions for side effects only.</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4916</guid>
<author>mottl &lt;mottl@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4916#bugnotes</comments>
</item>
<item>
<title>0004915: Add a syntax to include images or alternatively raw html</title>
<link>http://caml.inria.fr/mantis/view.php?id=4915</link>
<description>Everything is in the title. &lt;br /&gt;
&lt;br /&gt;
If raw html is considered, the syntax for raw latex could be extended in the style of the {!string} syntax. I.e. &lt;br /&gt;
&lt;br /&gt;
{% %} is sill raw latex, but {%kind: %} is raw for the backend &quot;kind&quot;.&lt;br /&gt;
&lt;br /&gt;
Best,&lt;br /&gt;
&lt;br /&gt;
Daniel</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4915</guid>
<author>dbuenzli &lt;dbuenzli@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4915#bugnotes</comments>
</item>
<item>
<title>0004906: $PWD not set  in Sys.command after Sys.chdir on Solaris</title>
<link>http://caml.inria.fr/mantis/view.php?id=4906</link>
<description>If you start a command with Sys.command on Solaris (not OpenSolaris), $PWD always has the same value it had at the start of the program, even after a Sys.chdir:&lt;br /&gt;
&lt;br /&gt;
        Objective Caml version 3.11.1&lt;br /&gt;
&lt;br /&gt;
# Sys.command &quot;echo $PWD&quot;;;&lt;br /&gt;
/home/fhars/godi32/bin&lt;br /&gt;
- : int = 0&lt;br /&gt;
# Sys.chdir &quot;/home/fhars&quot;;;&lt;br /&gt;
- : unit = ()&lt;br /&gt;
# Sys.command &quot;echo $PWD&quot;;;&lt;br /&gt;
/home/fhars/godi32/bin&lt;br /&gt;
- : int = 0&lt;br /&gt;
# Sys.getcwd ();;               &lt;br /&gt;
- : string = &quot;/home/fhars&quot;&lt;br /&gt;
&lt;br /&gt;
This at least breaks the build for godi.</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4906</guid>
<author>fhars &lt;fhars@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4906#bugnotes</comments>
</item>
<item>
<title>0004777: Scanf tests fail</title>
<link>http://caml.inria.fr/mantis/view.php?id=4777</link>
<description>I've noticed that scanf tests from CVS test/Moretest/tscanf.ml just fail:&lt;br /&gt;
&lt;br /&gt;
./tscanf.byt&lt;br /&gt;
0 1 2 3 4 5 6 7 8 9&lt;br /&gt;
&lt;br /&gt;
********* Test suit failed. ***********&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
********* Test number 9 failed ***********&lt;br /&gt;
Fatal error: exception End_of_file&lt;br /&gt;
Raised at file &quot;scanf.ml&quot;, line 159, characters 23-34&lt;br /&gt;
Called from file &quot;scanf.ml&quot;, line 766, characters 12-41&lt;br /&gt;
Called from file &quot;scanf.ml&quot;, line 1146, characters 17-35&lt;br /&gt;
Called from file &quot;scanf.ml&quot;, line 1252, characters 12-40&lt;br /&gt;
Re-raised at file &quot;scanf.ml&quot;, line 1063, characters 15-16&lt;br /&gt;
Called from file &quot;tscanf.ml&quot;, line 215, characters 2-33&lt;br /&gt;
Called from file &quot;tscanf.ml&quot;, line 220, characters 5-16&lt;br /&gt;
&lt;br /&gt;
Test &lt;a href=&quot;http://caml.inria.fr/mantis/view.php?id=9&quot;&gt;0000009&lt;/a&gt; fails and an exception happens in test &lt;a href=&quot;http://caml.inria.fr/mantis/view.php?id=10&quot;&gt;0000010&lt;/a&gt;. The latter can be simplified to the following:&lt;br /&gt;
&lt;br /&gt;
open Scanf&lt;br /&gt;
&lt;br /&gt;
let id x = x&lt;br /&gt;
&lt;br /&gt;
let _ =&lt;br /&gt;
  let unit s =&lt;br /&gt;
    let ib = Scanning.from_string s in&lt;br /&gt;
  Scanf.bscanf ib &quot;%S&quot; id in&lt;br /&gt;
  if not (unit &quot;\&quot;\n\\\n  a\n\\\nb\\\n\&quot;&quot; = &quot;\na\nb&quot;) then&lt;br /&gt;
  print_string &quot;failed!\n&quot;&lt;br /&gt;
&lt;br /&gt;
Is this expected behavior (and not updated test suite) or just bugs?</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4777</guid>
<author>db &lt;db@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4777#bugnotes</comments>
</item>
<item>
<title>0004913: ocamldoc html output is invalid for custom index files</title>
<link>http://caml.inria.fr/mantis/view.php?id=4913</link>
<description>when given the option -index, ocamldoc produce an index.html which is invalid: there are closing tags for &lt;body&gt; and &lt;html&gt;.&lt;br /&gt;
The fix is simple: in caml-3.11.1/ocamldoc/odoc_html.ml, in the method generate_index, just move the line 'bs b &quot;&lt;/body&gt;\n&lt;/html&gt;&quot;;' 3 lines downwards.</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4913</guid>
<author>laurent &lt;laurent@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4913#bugnotes</comments>
</item>
<item>
<title>0004675: Compiler fails to warn about pattern Top _ when Top is a 0-ary constructor</title>
<link>http://caml.inria.fr/mantis/view.php?id=4675</link>
<description># type t = Top | Base of int ;;&lt;br /&gt;
type t = Top | Base of int&lt;br /&gt;
# let f x = match x with Base _ -&gt; 0 | Top _ -&gt; 1 ;;&lt;br /&gt;
&lt;br /&gt;
Résultat obtenu :&lt;br /&gt;
val f : t -&gt; int = &lt;fun&gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu :&lt;br /&gt;
Error: The constructor Top expects 0 argument(s),&lt;br /&gt;
       but is here applied to 1 argument(s)</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4675</guid>
<author>Pascal Cuoq &lt;Pascal Cuoq@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4675#bugnotes</comments>
</item>
<item>
<title>0004911: weird behaviour of underscore in pattern matching</title>
<link>http://caml.inria.fr/mantis/view.php?id=4911</link>
<description>Hello,&lt;br /&gt;
&lt;br /&gt;
The following code compiles nicely with 3.11.&lt;br /&gt;
&lt;br /&gt;
type t = X&lt;br /&gt;
let f = function X _ -&gt; ()&lt;br /&gt;
&lt;br /&gt;
It looks like a bug.&lt;br /&gt;
&lt;br /&gt;
Regards,&lt;br /&gt;
--&lt;br /&gt;
Frédéric Besson</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4911</guid>
<author>fbesson &lt;fbesson@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4911#bugnotes</comments>
</item>
<item>
<title>0004873: .mltop and &quot;thread&quot; tag</title>
<link>http://caml.inria.fr/mantis/view.php?id=4873</link>
<description>'ocamlbuild target.top' ignores &quot;thread&quot; tag, and so one needs to manually specify missing options.&lt;br /&gt;
Consider:&lt;br /&gt;
&lt;br /&gt;
$ cat q.ml&lt;br /&gt;
let test () = Thread.delay 1.0&lt;br /&gt;
$ cat _tags &lt;br /&gt;
true: thread, use_unix&lt;br /&gt;
$ cat q.mltop &lt;br /&gt;
Q&lt;br /&gt;
$ ocamlbuild q.byte&lt;br /&gt;
Finished, 3 targets (0 cached) in 00:00:00.&lt;br /&gt;
$ ocamlbuild q.top&lt;br /&gt;
+ /usr/bin/ocamlmktop unix.cma q.cmo -o q.top&lt;br /&gt;
File &quot;_none_&quot;, line 1, characters 0-1:&lt;br /&gt;
Error: Error while linking q.cmo:&lt;br /&gt;
Reference to undefined global `Thread'&lt;br /&gt;
Command exited with code 2.&lt;br /&gt;
$ ocamlbuild -cflags -thread -lflags -thread -libs unix,threads q.top&lt;br /&gt;
Finished, 3 targets (2 cached) in 00:00:00.</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4873</guid>
<author>ygrek &lt;ygrek@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4873#bugnotes</comments>
</item>
<item>
<title>0004908: Requesting unsinged types</title>
<link>http://caml.inria.fr/mantis/view.php?id=4908</link>
<description>It would be nice if ocaml had types uint, uint32 and uin64. The later two should be trivial to add. The uint is more tricky but just an UInt module (like Int32) with compiler primitives would suffice for a start.</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4908</guid>
<author>goswin &lt;goswin@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4908#bugnotes</comments>
</item>
<item>
<title>0004896: ocamlbuild should pass -I to ocamldoc for external libraries</title>
<link>http://caml.inria.fr/mantis/view.php?id=4896</link>
<description>Looks like ocamlbuild doesn't pass include directories to ocamldoc when building documentation referencing external libraries.&lt;br /&gt;
&lt;br /&gt;
Workaround -- add the -I flag manually :&lt;br /&gt;
    flag [&quot;ocaml&quot;; &quot;doc&quot;; &quot;use_extLib&quot;] (S[A&quot;-I&quot;; A &quot;+extlib&quot;]);</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4896</guid>
<author>ygrek &lt;ygrek@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4896#bugnotes</comments>
</item>
<item>
<title>0004907: Type manifests do not support type variable substitutions</title>
<link>http://caml.inria.fr/mantis/view.php?id=4907</link>
<description>The following would seem like a perfectly legitimate thing to do:&lt;br /&gt;
&lt;br /&gt;
  type ('a, 'b) t = { a : 'a; b : 'b }&lt;br /&gt;
  type ('a, 'b) u = ('a, 'b option) t = { a : 'a; b : 'b option }&lt;br /&gt;
&lt;br /&gt;
Unfortunately, the compiler fails with:&lt;br /&gt;
&lt;br /&gt;
  File &quot;foo.ml&quot;, line 3, characters 5-63:&lt;br /&gt;
  Error: The variant or record definition does not match that of type&lt;br /&gt;
  ('a, 'b option) t&lt;br /&gt;
&lt;br /&gt;
This does not quite seem correct.&lt;br /&gt;
&lt;br /&gt;
This restriction makes it impossible to e.g. repeat a type definition in a more specialized way such that the preprocessor can exploit the extra syntactic representation to generate code more flexibly from the type definition.</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4907</guid>
<author>mottl &lt;mottl@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4907#bugnotes</comments>
</item>
<item>
<title>0004905: It takes a long time to compile deeply-nested polymorphic variant type declaration.</title>
<link>http://caml.inria.fr/mantis/view.php?id=4905</link>
<description>The following source (which contains only type declarations) takes a long time to be compiled.&lt;br /&gt;
&lt;br /&gt;
type 'a t01 = [ `c01 of 'a ]&lt;br /&gt;
type 'a t02 = [ 'a t01 | `c02 of 'a t02 ]&lt;br /&gt;
type 'a t03 = [ 'a t02 | `c03 of 'a t03 ]&lt;br /&gt;
type 'a t04 = [ 'a t03 | `c04 of 'a t04 ]&lt;br /&gt;
type 'a t05 = [ 'a t04 | `c05 of 'a t05 ]&lt;br /&gt;
type 'a t06 = [ 'a t05 | `c06 of 'a t06 ]&lt;br /&gt;
...&lt;br /&gt;
type 'a t16 = [ 'a t15 | `c16 of 'a t16 ]&lt;br /&gt;
&lt;br /&gt;
The compilation time is exponential to the number of declaration.&lt;br /&gt;
It takes twice time when adding one more declaration.&lt;br /&gt;
We have no problem &lt;br /&gt;
 - if we use normal variants instead of polymorphic variant, or&lt;br /&gt;
 - if we do not use type variable.</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4905</guid>
<author>ksk &lt;ksk@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4905#bugnotes</comments>
</item>
<item>
<title>0004904: Warn about repeated function arguments especially for optional arguments</title>
<link>http://caml.inria.fr/mantis/view.php?id=4904</link>
<description>If this feature is implemented, the warning should be on by default.&lt;br /&gt;
&lt;br /&gt;
# let f ?(a=0) b ?(a=0) c = a+b+c;;&lt;br /&gt;
val f : ?a:int -&gt; int -&gt; ?a:int -&gt; int -&gt; int = &lt;fun&gt;&lt;br /&gt;
# f ~a:7 1 2;;&lt;br /&gt;
- : int = 3</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4904</guid>
<author>lukstafi &lt;lukstafi@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4904#bugnotes</comments>
</item>
<item>
<title>0004903: Allow &quot;let module ... in&quot; in class definitions.</title>
<link>http://caml.inria.fr/mantis/view.php?id=4903</link>
<description>It would be useful to allow local binding of modules (let module M = ... in )&lt;br /&gt;
within class definitions:&lt;br /&gt;
&lt;br /&gt;
class o x =&lt;br /&gt;
  let module M = (val x : S) in&lt;br /&gt;
  ...</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4903</guid>
<author>frisch &lt;frisch@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4903#bugnotes</comments>
</item>
<item>
<title>0004899: Recursive module types</title>
<link>http://caml.inria.fr/mantis/view.php?id=4899</link>
<description>It is not possible to refer to a module type inside its definition, an Unbound_modtype error is thrown.</description>
<guid>http://caml.inria.fr/mantis/view.php?id=4899</guid>
<author>marc_defalco &lt;marc_defalco@example.com&gt;</author>
<comments>http://caml.inria.fr/mantis/view.php?id=4899#bugnotes</comments>
</item>
</channel>
</rss>
