Christoph Höger | 20 Aug 14:59 2014

recursive values of abstract types, aka Batteries ParserCo

Hi all,

I wanted to parse a small lambda-calculus in OCaml and had batteries
already as a dependency. Batteries comes with ParserCo, a small parser
combinator library. Since I did not want to complicate things further,
I decided to stick with it and avoid any parser generator. Using a
monadic combinator library for a scannerless parser should be a
relatively simple exercise, right?

Unfortunately, it seems that ParserCo only exposes an abstract type:

type ('a, 'b, 'c) t

which is, of course, a function:

type ('a, 'b, 'c) t = ('a, 'c) Source.t -> ('a, 'b, 'c) result

This prevents me from defining any recursive parsers, since OCaml
won't let me let-rec a value of an abstract function type. I cannot do
eta-expansion, because the type is abstract, and I also do not have a
type constructor at hand.

How does one handle such cases in OCaml? Does this really mean, you
cannot have recursive values of abstract function types?



(Continue reading)

Michael Sperber | 20 Aug 14:14 2014

Commercial Users of Functional Programming at ICFP 2014, Gothenburg, Sep 4-6



Commercial Users of Functional Programming (CUFP) 2014 at ICFP 2014; 
Gothenburg, Sweden, Sep 4-6.



Functional programming has been at the forefront of a new generation 
of programming technologies: Companies employing functional 
programming use it to enable more effective, robust, and flexible 
software development. 

The annual CUFP workshop is designed to serve the growing community of 
commercial users of functional programming: Practitioners meet and 
collaborate; language designers and users can share ideas about the 
future of their languages; experts share their expertise on practical 
functional programming. 

CUFP 2014 begins with two days of tutorials by top-notch 
language experts including advanced tutorials on special topics,
followed by a day of talks about industrial applications of 
functional programming.

More information about CUFP 2014 is available on the CUFP web site at 
(Continue reading)

Daniel Bünzli | 19 Aug 22:23 2014

-vmthread and -thread flags


Having a cursory look at the compiler sources, it seems that these flags simply include the directory with
the corresponding backend[x]a library [1]

Is this the only effect of these flags in the compiler ? That is am I right thinking that this is just: 

-thread = -I+threads
-vmthread = -I+vmthreads

and that's all ? 

If that's the case shouldn't we maybe deprecate these flags, they seem to be the source of problems with
ocamlfind which has special code paths for dealing them which has all sorts of strange effects. 





Caml-list mailing list.  Subscription management and archives:
Beginner's list:
Bug reports:

becker.nils | 19 Aug 10:34 2014

using React for -- reactions


i am looking for performance advice in the context of an event driven
simulation using in a nutshell: can a React-based simulation
scheme be made similarly fast as an imperative scheme which mutates
arrays in-place? is there a run-time cost for large dependency graphs?


i am exploring doing a Gillespie-type simulation for a network of
chemical reactions using React. here is how it looks. there are N
species and R possible reactions between them. each chemical species has
an associated molecule number signal. each reaction has an associated
event. the event triggers updates of the number signals of the
reaction's input and output species; this is implemented using
and S.accum. the waiting time to the next reaction event of any of the R
reactions is a (random) function of the molecule numbers of its inputs;
after the molecule numbers are updated, the waiting times for all
affected reactions are updated using E.merge. the waiting times for
future events are managed in a separate heap. to initiate the next
update step, the earliest scheduled waiting time is popped from the
heap, and the associated reaction event is started.

reactions are relatively sparse, ie. the number of reactions R=O(N),
where N could be from 1e1 to 1e4 or so. so, in each update step only a
small number <10 of dependent molecule numbers and waiting times need to
be updated, even for large systems. in other words, the React-managed
dependency graph is wide (N) but not tall (relatively short dependecy
chains, see above), and it has some lateral connections. (side note, it would
be helpful to be able to output the graph somehow for debugging purposes)
(Continue reading)

Hugo Herbelin | 18 Aug 17:58 2014

2nd CFP Post-proceedings TYPES 2014 Types for Proofs and Programs (open call)

2nd call for papers: Types for Proofs and Programs,
    post-proceedings of TYPES 2014 (open call)

TYPES is a major forum for the presentation of research on all aspects
of type theory and its applications. The post-proceedings of TYPES
2014, which was held May 12-15 in Paris, are open to everyone, also
those who did not participate in the conference. We would like to
invite all researchers that study type systems to share their results
concerning type-based theorem proving environments or type-based
formal modelling, in particular we welcome submissions on any topic in
the following list:

 - Foundations of type theory and constructive mathematics
 - Applications of type theory
 - Dependently-typed programming
 - Industrial uses of type theory technology
 - Meta-theoretic studies of type systems
 - Proof-assistants and proof technology
 - Automation in computer-assisted reasoning
 - Links between type theory and functional programming
 - Formalising mathematics using type theory. 

Important dates

Abstract submission deadline:   1 September 2014
Paper submission deadline:      8 September 2014
Notification of acceptance:    15 February  2015

(Continue reading)

Thomas Braibant | 18 Aug 16:42 2014

Unix file descriptors vs. in/out channels

Hi list,

[summary] I would like to open a file in read-write mode, and use it
(mainly) to stream a big data-structure in it and (sometime) reading
the content of this data-structure.

[problem] I am a bit puzzled w.r.t. the interplay between Pervasives
functions that operate on in/out channels and the Unix function that
operate on file descriptors. From the documentation, I assume that it
is not possible to close an (input) channel that was created using
Unix.in_channel_of_descr without closing the associated file
descriptor. Therefore, I assume that I cannot use
Unix.in_channel_of_descr and Unix.out_channel_of_descr more that once
for my file-descriptor (because otherwise, these channels would not be
reclaimed). But, is is safe to use both kind of channels?

Btw, while playing with this problem, I found the following strange
behavior: if I uncomment the second line in debug (see below), I can
read data from the input channel, while if the debug line is comment,
reading from the channel yields an End_of_file exception. Is this

let debug msg i o =
  Printf.printf "[%s] posi:%i poso:%o\n%!" msg (pos_in i) (pos_out o);
  (* Printf.printf "[%s] leni:%i leno:%o\n%!" msg (in_channel_length
i) (out_channel_length o);*)

let test =
  let open Unix in
(Continue reading)

Dario Teixeira | 18 Aug 13:26 2014

[ANN] Camlhighlight 3.0


I'm happy to announce release 3.0 of Camlhighlight [1], a library offering
syntax highlighting and pretty-printing facilities for displaying code samples
in Ocsigen applications. The library works by interfacing with the library
portion of GNU Source-highlight [2], a popular application supporting the
most common programming and markup languages.

This version features a smaller dependency set, now requiring Tyxml instead of
also depending on Eliom.  However, full compatibility with Eliom applications
is maintained (please see the examples shipped in the tarball).

The package should be hitting the OPAM repository soon.  Eliom users should
beware that Camlhighlight requires Tyxml >= 3.2, whereas Eliom 4.0.0 requires
Tyxml < 3.2.  Therefore, should you want to use Camlhighlight in an Eliom
application, you are advised to install the development version of Eliom
(please see for instructions regarding Ocsigen's
development repo for OPAM).

Best regards,
Dario Teixeira



Caml-list mailing list.  Subscription management and archives:
Beginner's list:
Bug reports:
(Continue reading)

Kristin Yvonne Rozier | 16 Aug 07:23 2014

[fm-announcements] Call for Highlights: Aerospace America Intelligent Systems Year In Review


Please consider submitting a highlight about your work! It is only 150 
words and it would really help to call attention to the important role 
of formal methods in the future of aerospace!


                       Call for Highlights

             Intelligent Systems 2014 Year In Review
                   Aerospace America magazine

                   Due date: August 25, 2014 (firm)

This is a call for submissions for the "Year In Review" December, 2014 
issue of Aerospace America magazine. We are looking for summaries of 
interesting aerospace applications of intelligent systems, of 
approximately 150 words in length, with an accompanying graphic if 
possible. Each highlight will be integrated within an overall narrative, 
so key organizations/affiliations should be identified within the text 
to enable proper credit to be given; including a URL for further 
information on your work is required. The AIAA Intelligent Systems 
Technical Committee will select, from among all submissions received, 
six that will be highlighted in the year-end issue of Aerospace America 

(Continue reading)

caml-list-request | 15 Aug 10:39 2014

Reminder of your subscription to caml-list

Your are subscriber of list caml-list <at> with  email gclci-caml-
list <at>

Everything about this list:

mailto:sympa_inria <at>

Cristian Andrei Gherghina | 15 Aug 07:10 2014

APLAS 2014: Call for Posters and Demos

​(Apologies for multiple copies.)

                 Call for Posters and Demos: APLAS 2014

      12th Asian Symposium on Programming Languages and Systems
                          November 17-19, 2014

      Submission due: 15 September 2014 (Monday), 23:59 GMT
        Notification: 22 September 2014 (Monday)


APLAS aims to stimulate programming language research by providing a
forum for the presentation of latest results and the exchange of ideas
in programming languages and systems.  APLAS is based in Asia, but is
an international forum that serves the worldwide programming language

APLAS is sponsored by the Asian Association for Foundation of Software
(AAFS) founded by Asian researchers in cooperation with many researchers
from Europe and the USA.  Past APLAS symposiums were successfully held
in Melbourne ('13), Kyoto ('12), Kenting ('11), Shanghai ('10), Seoul
('09), Bangalore ('08), Singapore ('07), Sydney ('06), Tsukuba ('05),
Taipei ('04) and Beijing ('03) after three informal workshops.

APLAS 2014 will include a poster and demo session during the
conference. The poster session aims to give students, researchers and 
professionals an opportunity to present technical materials to the research
community, and to get responses from other students, researchers and 
professionals in the field.


Poster and demo contributions are sought in all areas of programming
languages and systems, including the following topics:

- semantics, logics, foundational theory;
- design of languages, type systems and foundational calculi;
- domain-specific languages;
- compilers, interpreters, abstract machines;
- program derivation, synthesis and transformation;
- program analysis, verification, model-checking;
- logic, constraint, probabilistic and quantum programming;
- software security;
- concurrency and parallelism;
- tools and environments for programming and implementation.


Each presenter should submit a 1-2 page abstract in PDF via the submission
web page, , by 15 September
 2014 (Monday), 23:59 GMT. 

The abstract should include the title, style of the presentation (poster only
or poster plus demo), author(s), affiliation(s) and summary of the work. 
Abstracts must be written in English using the Springer LNCS format. 
We will announce the accepted presentations on 22 September 2014. We hope to 
accommodate every presentation, but may restrict them (based on relevance and 
interest to the community) due to space constraints. The format of the poster
will be announced later.


Submission due: 15 September 2014 (Monday), 23:59 GMT
Notification: 22 September 2014 (Monday)
Conference: 17-19 November 2014 (Monday-Wednesday)

  Poster chair: Cristian Gherghina (SUTD, Singapore)
  Email: cristian_gherghina <at>

This email may contain confidential and/or proprietary information that is exempt from disclosure under applicable law and is intended for receipt and use solely by the addressee(s) named above. If you are not the intended recipient, you are notified that any use, dissemination, distribution, or copying of this email, or any attachment, is strictly prohibited. Please delete the email immediately and inform the sender. Thank You

Daniel Bünzli | 14 Aug 16:29 2014

[ANN] tgls 0.8.2


Since OpenGL 4.5 was announced on monday, I'd like to announce the release of tgls 0.8.2 which should be
available shortly in opam.

It now provides support to program with OpenGL 4.5 and OpenGL ES 3.1. Full release notes:

Tgls is a set of independent OCaml libraries providing thin bindings to OpenGL Libraries. It has support
for core OpenGL 3.{2,3} and 4.{0,1,2,3,4,5} and OpenGL ES 2 and 3.{0,1}.

Home page:



P.S. The functions were not tested. There are 106 new entry points in OpenGL
4.5 and 68 in OpenGL ES 3.1.


Caml-list mailing list.  Subscription management and archives:
Beginner's list:
Bug reports: