Re: [Caml-list] OCaml 3.12.0+beta1

2010-06-24 Thread Florent Ouchet

Hello,

No problem so far with 3.12.0b1 but...

Damien Doligez a écrit :

- Record patterns of the form { lbl = pat; _ } to mark that not all
  labels are listed, purposefully.  (See new warning below.)
  
This modification heavily breaks backward compatibility with OCaml 3.11. 
You should provide some preprocessing scripts to strip these extra _.


Best Regards,

--
Florent Ouchet
PhD Student
CIS/VDS Team - TIMA Laboratory


___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


Re: [Caml-list] OCaml 3.12.0+beta1

2010-06-24 Thread Martin Jambon
Florent Ouchet wrote:
 Hello,
 
 No problem so far with 3.12.0b1 but...
 
 Damien Doligez a écrit :
 - Record patterns of the form { lbl = pat; _ } to mark that not all
   labels are listed, purposefully.  (See new warning below.)
   
 This modification heavily breaks backward compatibility with OCaml 3.11.
 You should provide some preprocessing scripts to strip these extra _.

I disagree.  The syntax is a new and optional feature.  Authors who want their
new code to compile with an earlier version of OCaml should simply avoid using
the new feature, as always.

Finally we'll be able to use pattern matching on records for real and it's
really cool.  That means we can use records where we used to prefer tuples,
typically on things like tree nodes.  It will make it easier to add fields
when the code evolves, compared to tuples.

Tuple version:

  let loc, _, _, name, _ = x in ...

Record version:

  let { loc; name; _ } = x in ...

Old record version:

  let { loc = loc; name = name } = x in ...



Martin

-- 
http://mjambon.com/

___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


Re: [Caml-list] OCaml 3.12.0+beta1

2010-06-24 Thread Florent . Ouchet

Martin Jambon martin.jam...@ens-lyon.org a écrit :
I disagree.  The syntax is a new and optional feature.  Authors who  
want their
new code to compile with an earlier version of OCaml should simply  
avoid using

the new feature, as always.


The 3.12 version number is just minor increment. It should keep  
backward compatibility with the 3.x branch as much as possible.



Finally we'll be able to use pattern matching on records for real and it's
really cool.  That means we can use records where we used to prefer tuples,
typically on things like tree nodes.  It will make it easier to add fields
when the code evolves, compared to tuples.


Yes, this feature is cool. We agree on this point. However not all  
systems will be updated to 3.12 as soon as the final version is out.  
Most users rely on their linux distribution ocaml (Debian stable is  
still stuck at 3.10 for instance).


For syntax sugar extensions, such as { loc; name; _ }, your don't use  
it conclusion can be understood. But for code stabilization syntax  
extensions, such as { ... ; _ }, it's an other story. Users stuck with  
more stable versions of the compiler should be able to use more stable  
versions of software compiled with it.


- Florent

___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


Re: [Caml-list] OCaml 3.12.0+beta1

2010-06-24 Thread Dmitry Bely
On Thu, Jun 24, 2010 at 10:59 PM,  florent.ouc...@imag.fr wrote:
 Martin Jambon martin.jam...@ens-lyon.org a écrit :

 I disagree.  The syntax is a new and optional feature.  Authors who want
 their
 new code to compile with an earlier version of OCaml should simply avoid
 using
 the new feature, as always.

 The 3.12 version number is just minor increment. It should keep backward
 compatibility with the 3.x branch as much as possible.

I'm sorry but where do you see a violation of backward compatibility?
Can you provide an example that compiles OK with Ocaml 3.11 and
generates an error with Ocaml 3.12?

- Dmitry Bely

___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


Re: [Caml-list] OCaml 3.12.0+beta1

2010-06-24 Thread Till Varoquaux
On Thu, Jun 24, 2010 at 2:59 PM,  florent.ouc...@imag.fr wrote:
 Martin Jambon martin.jam...@ens-lyon.org a écrit :

 I disagree.  The syntax is a new and optional feature.  Authors who want
 their
 new code to compile with an earlier version of OCaml should simply avoid
 using
 the new feature, as always.

 The 3.12 version number is just minor increment. It should keep backward
 compatibility with the 3.x branch as much as possible.

 Finally we'll be able to use pattern matching on records for real and it's
 really cool.  That means we can use records where we used to prefer
 tuples,
 typically on things like tree nodes.  It will make it easier to add fields
 when the code evolves, compared to tuples.

 Yes, this feature is cool. We agree on this point. However not all systems
 will be updated to 3.12 as soon as the final version is out. Most users rely
 on their linux distribution ocaml (Debian stable is still stuck at 3.10 for
 instance).

 For syntax sugar extensions, such as { loc; name; _ }, your don't use it
 conclusion can be understood. But for code stabilization syntax extensions,
 such as { ... ; _ }, it's an other story. Users stuck with more stable
 versions of the compiler should be able to use more stable versions of
 software compiled with it.

 - Florent

From wikipedia:

In the context of telecommunications and computing  a device or
technology is said to be backwards or downwards compatible if it can
work with input generated by an older device

Do you have an example of old code not being able to compile anymore
because of that change? If so you should probably fill in a bug
report.

As for forward compatibility (ie programs coded with 3.12 in mind
might not compile with 3.10) this is a price I am happy to pay in
order to have a language that's constantly improving. I think that
this is feeling that is shared by many.

And, last but nor least, older does not necessarily mean more stable.
You seem to use those interchangeably in your mail. Windows 3.11 is
old...

Till


 ___
 Caml-list mailing list. Subscription management:
 http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
 Archives: http://caml.inria.fr
 Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
 Bug reports: http://caml.inria.fr/bin/caml-bugs


___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


Re: [Caml-list] OCaml 3.12.0+beta1

2010-06-24 Thread Florent Ouchet

Till Varoquaux t...@pps.jussieu.fr a écrit :

As for forward compatibility (ie programs coded with 3.12 in mind
might not compile with 3.10) this is a price I am happy to pay in
order to have a language that's constantly improving. I think that
this is feeling that is shared by many.


ok all, it has to be considered as forward compatibility, speaking at  
ocaml point-of-view, this POV is likely the one most of you have.
However, at source POV (where OCaml is seen as a tool), this can be  
seen as backward compatibility: the source code we write could be  
backward compatible with older versions of OCaml. Anyway, I will stop  
here the terminology fight and use your POV...



And, last but nor least, older does not necessarily mean more stable.


...and I won't feed the troll too.


You seem to use those interchangeably in your mail. Windows 3.11 is
old...


This specific ( { ; _} ) forward compatibility with ocaml 3.12 is  
possible for a little cost. It's just about removing the extra  
underscore characters. Anyway if the preprocessing script does not  
come out of the ocaml 3.12 box, I will have to do it. Other developers  
may have to so as well.
Mainly because this coverage check is a must-do and because I do not  
want to force a general update to OCaml 3.12 when that can be avoided.  
The coverage check has to be done only once, at developer's side,  
using 3.12. Once the changes are done, stripped code can easily be  
compiled using older versions of OCaml, at user's side.


- Florent

___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


Re: [Caml-list] OCaml 3.12.0+beta1

2010-06-24 Thread Hezekiah M. Carty
On Thu, Jun 24, 2010 at 4:49 PM, Florent Ouchet florent.ouc...@imag.fr wrote:

 This specific ( { ; _} ) forward compatibility with ocaml 3.12 is possible
 for a little cost. It's just about removing the extra underscore characters.
 Anyway if the preprocessing script does not come out of the ocaml 3.12 box,
 I will have to do it. Other developers may have to so as well.
 Mainly because this coverage check is a must-do and because I do not want to
 force a general update to OCaml 3.12 when that can be avoided. The coverage
 check has to be done only once, at developer's side, using 3.12. Once the
 changes are done, stripped code can easily be compiled using older versions
 of OCaml, at user's side.


The trailing _ in a record match is not required.  It is allowed in
3.12, and in combination with an optional warning flag it can be used
to check for incomplete record matches.  Why is any preprocessing
needed?  If an application is written to require OCaml 3.12.x or
later, why would you expect it to compile with an earlier version?

How is this a bigger backward compatibility break than first-class
modules or the let open Module in syntax?

Hez

___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


Re: [Caml-list] OCaml 3.12.0+beta1

2010-06-24 Thread Florent Ouchet

Hezekiah M. Carty hca...@atmos.umd.edu a écrit :

The trailing _ in a record match is not required.  It is allowed in
3.12, and in combination with an optional warning flag it can be used
to check for incomplete record matches.  Why is any preprocessing
needed?  If an application is written to require OCaml 3.12.x or
later, why would you expect it to compile with an earlier version?


Software development is not your perfect and ideal world. Would you  
buy a brand new car because your current two-month-old car does not  
have seat belt reminders? New warnings are almost the only  
improvements I'm interested in 3.12.


Sometimes you have to support old compiler versions (this choice is  
not yours) and you need a complete confidence in all the thousands  
record pattern matchings of your application, some of them (maybe 30%)  
are intentionally left incomplete in order to keep the code as simple  
as possible.


Without preprocessing scripts, I will not be able to insert extra _  
for masking intentionally-left-incomplete pattern matchings. The  
compilation log will be polluted by hundred warnings (false-positive).  
Finally, the catch of the few remaining should-not-be-incomplete  
pattern matchings (true-positive) will be very hard.


Anyway, I'm running out of arguments and the problem is still there...  
I would have wasted less time in having the scripts setup than in  
arguing here.


--
Florent Ouchet
PhD Student, CIS/VDS Groups
TIMA Laboratory, Grenoble, France

___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


[Caml-list] Workshop on ML 2010 - Extended Submission Deadline

2010-06-24 Thread Matthew Fluet


In response to requests, the submission deadline has been extended by
one week until 2 July 2010.


 The 2010 ACM SIGPLAN Workshop on ML
  http://www.cs.rit.edu/~mtf/ml2010
  Baltimore, Maryland, United States
  Sunday, September 26, 2010
  co-located with ICFP 2010

 Call for Content (Extended Deadline)

ML is a family of programming languages that includes dialects known
as Standard ML, Objective Caml, and F#. The development of these
languages has inspired a large amount of computer science research,
both practical and theoretical. This workshop aims to provide a forum
to encourage discussion and research on ML and related technology
(higher-order, typed, or strict languages).

The format of the 2010 Workshop on ML will be different than that of
recent years, returning to a more informal model: a workshop with
presentations selected from submitted abstracts but without published
proceedings. We hope that this format will encourage the presentation
of more exciting (if unpolished) research and deliver a more lively
workshop atmosphere.


Invited Speaker
~~~

Luke Hoban (Microsoft) -- Bringing F# to Visual Studio 2010


Important Dates
~~~

Submission: 2 July, 2010 (extended)
Notification:   9 August, 2010


Format
~~

The workshop will consist of presentations by the participants,
selected from submitted abstracts. Participants are invited to submit
working drafts, source code, and/or extended abstracts for
distribution on the workshop homepage and to the attendees, but as the
workshop will have no formal proceedings, any contributions may be
submitted for publication to other venues. (See the SIGPLAN
republication policy for more details.)


Scope
~

We primarily seek research presentations on topics related to ML,
including (but not limited to):
 * applications: case studies, experience reports, pearls, etc.
 * extensions: higher forms of polymorphism, generic programming,
   objects, concurrency, distribution and mobility, semi-structured
   data handling, etc.
 * type systems: inference, effects, overloading, modules, contracts,
   specifications and assertions, dynamic typing, error reporting,
   etc.
 * implementation: compilers, interpreters, type checkers, partial
   evaluators, runtime systems, garbage collectors, etc.
 * environments: libraries, tools, editors, debuggers, cross-language
   interoperability, functional data structures, etc.
 * semantics: operational, denotational, program equivalence,
   parametricity, mechanization, etc.

Research presentations should describe new ideas, experimental
results, significant advances in ML-related projects, or informed
positions regarding proposals for next-generation ML-style
languages. We especially encourage presentations that describe work in
progress, that outline a future research agenda, or that encourage
lively discussion.

In addition to research presentations, we seek both Status Reports and
Demos that emphasize the practical application of ML research and
technology.

Status Reports: Status reports are intended as a way of informing
others in the ML community about the status of ML-related research or
implementation projects, as well as communicating insights gained from
such projects. Status reports need not present original research, but
should deliver new information. In the abstract submission, describe
the project and the specific technical content to be presented.

Demos: Live demonstrations or tutorials are intended to show new
developments, interesting prototypes, or work in progress, in the form
of tools, libraries, or application software built on or related to ML
technology. In the abstract submission (which need only be about half
a page), describe the demo and its technical content, and be sure to
include the demo's title, authors, collaborators, references, and
acknowledgments. A demonstration should take 10-15 minutes. The exact
time per demo will be decided based on the number of accepted
submissions. (Please note that you will need to provide all the
hardware and software required for your demo; the workshop organizers
are only able provide a projector.)


Submission Guidelines and Instructions
~~

Email submissions to mtf AT cs.rit.edu. Submissions should be at most
two pages, in PDF format, and printable on US Letter or A4 sized
paper. Persons for whom this poses a hardship should contact the
program chair. Submissions longer than a half a page should include a
paragraph synopsis suitable for inclusion in the workshop program.


Program Chair
~
Matthew Fluet   Rochester Institute of Technology

Program Committee
~
Kathleen Fisher ATT Labs Research
Adam GraniczIntelliFactory
Daan Leijen Microsoft Research
Johan NordlanderLulea University of Technology
Sungwoo Park   

Re: [Caml-list] OCaml 3.12.0+beta1

2010-06-24 Thread bluestorm
Wouldn't a simple sed s/; _ }/}/g suffice in practice ?
___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs