Lindsey Kuper | 1 Jul 04:20 2016

ICFP 2016 Student Research Competition: Call for Submissions

                         CALL FOR SUBMISSIONS

                           SRC at ICFP 2016
                             Nara, Japan
                         18-24 September 2016

                         Co-located with the
    International Conference on Functional Programming (ICFP 2016)

Student Research Competition

This year ICFP will host a Student Research Competition where
undergraduate and postgraduate students can present posters. The SRC
at ICFP 2016 consists of three rounds:

* Extended abstract round. All students are encouraged to submit an
  extended abstract of up to 800 words outlining their research.

* Poster session. Based on the abstracts, a panel of judges will
  select the most promising entrants to participate in the poster
  session which will take place at ICFP. Students who make it to this
  round will be eligible for some travel support to attend the
  conference. In the poster session, students will have the
  opportunity to present their work to the judges, who will select
  three finalists in each category (graduate/undergraduate) to advance
(Continue reading)

Lindsey Kuper | 1 Jul 04:12 2016

Deadline extended: Commercial Users of Functional Programming Call For Tutorials

The 2016 Commercial Users of Functional Programming (CUFP) call for
tutorials have passed the initial deadlines, but we have more seat for

CUFP tutorial is a good opportunity if you have some idea you want to
spread to the real world, say, your favorite programming language
(Clojure, Erlang, F#, F*, Haskell, ML, OCaml, Scala, Scheme...),
concepts (e.g. Lens, Liquid-Haskell, Proof Assistance, ...),
applications (Web, high-performance computing, finance...,) tools and
techniques (QuickCheck, Elm, ...), or theories.

If you are interested, we kindly invite you to submit a proposal for
the Call For Tutorials from here: , before July 3rd.

If you have any questions, please do not hesitate to contact us:

Roman Gonzalez: roman <at>
Takayuki Muranushi: muranushi <at>

best regards,



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

(Continue reading)

Soegtrop, Michael | 30 Jun 18:28 2016

How to define a module type for NAxioms.NAxiomsSig + Orders.UsualOrderedTypeFull + ... effectively?

Dear Coq Users,


the file Coq.NArith.BinNat contains this definition:


Module N

<: NAxiomsSig

<: UsualOrderedTypeFull

<: UsualDecidableTypeFull

<: TotalOrder.


I wonder if there is an effective way to define a Module Type with the same interface as the 4 module types given above combined? Just chaining them with <+ like this:


Module Type NatInt :=


  <+ Orders.UsualOrderedTypeFull

  <+ Equalities.UsualDecidableTypeFull

  <+ Orders.TotalOrder.


fails, because all of them contain a type t. The only way I see is to include e.g. UsualOrderedTypeFull is to include all its components as shown in this image:



the colored boxes are module type functors, the white ones module types including a type t. Blue are functions, red are specifications, the darker ones contain definitions/lemmas, the light ones contain parameters/axioms.


Is there a smart way of doing this without essentially copying the definition of UsualOrderedTypeFull, UsualDecidableTypeFull and TotalOrder?


Should I create Module Type functors matching all the white boxes above?


Best regards,



Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0,
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

Christoph Höger | 30 Jun 14:11 2016

[qcheck] shrinking counterexamples on exception

Dear all,

I am running property based tests using qcheck on some transformation
code. The tests fail with an exception (which is somewhat expected) but
I cannot easily debug the problem since the counterexample is still
quite large. In case of a violated assertion, shrinking works just fine.
I am running the test using

QCheck.Test.check_exn mytest

is there a test-runner that shrinks a counterexample in case of an



Christoph Höger

Technische Universität Berlin
Fakultät IV - Elektrotechnik und Informatik
Übersetzerbau und Programmiersprachen

Sekr. TEL12-2, Ernst-Reuter-Platz 7, 10587 Berlin

Tel.: +49 (30) 314-24890
E-Mail: christoph.hoeger <at>


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

Dean Thompson | 30 Jun 12:01 2016

how to encourage adoption of OCaml?

A few years ago, with over 30 years of programming experience including 15 years primarily in Java, I
decided I needed a new “home” programming language. I then spent a frustrating few years studying
what’s out there. I have felt like a man without a country. I developed fairly serious crushes on Scala
and then on Haskell, but after a few serious dates with them I moved on. I have read deeply about many, many more.

I have converged on OCaml. It is a beautiful language and a highly practical functional language. Although
infrastructure such as compilers, editor/IDE support, and libraries are on the minimal side, the
essentials are all there and are lovingly maintained. Although the community is small, it is smart,
friendly, and engaged. Some amazing technology is available or work-in-progress (such as js_of_ocaml
and Mirage).

But this feels like a fragile new home unless we can build a bigger community! For one thing, if our community
shrinks much, it may no longer be viable. Also, while I love 1,000 packages on opam, I want 100,000!

As a newcomer to the community, I have to say that there are daunting barriers to a potential new user
considering OCaml for a new project. If you like starting on a new programming language with a book, as I do,
you likely start with Real World OCaml. That book is very inspiring! But then when you try to move from RWO
to, well, using OCaml in the real world, you discover that there is no consensus on Core as a standard
library, and that Camlp4 is deprecated.

It appears to me that if, instead, you come to OCaml as a potential new user through, there are
other barriers. It is hard for me to judge because I came through RWO, but it appears to me that the lack of
consensus on standard library comes up pretty quickly. I’m more of a language manual guy than a tutorial
guy, so I quickly notice that, although the OCaml language manual is well written, has a lovely
introductory flow, and has great examples, it fairly quickly gets into terse description of language
constructs while providing limited help to a beginner in developing intuition for the language as a whole
and how best to use it.

This is one man’s experience and one man’s opinions. Do others on this list feel the ramp to OCaml
adoption is smoother than my impression suggests? Who here is excited about making OCaml approachable to
newcomers? Where is the main ongoing work on this? Who are the main leaders from this perspective?

Dean Thompson


Caml-list mailing list.  Subscription management and archives:
Beginner's list:
Bug reports:
Todd McDonald | 29 Jun 18:05 2016

CFP: 6th Software Security, Protection, and Reverse Engineering Workshop (SSPREW)



6th Software Security, Protection, and Reverse Engineering Workshop (SSPREW)

Hilton Los Angeles/Universal City, Los Angeles, CA

December 5-6, 2016

Collocated with ACSAC 2016





The 6th Software Security, Protection, and Reverse Engineering Workshop is now a consolidated workshop that merges into one venue the Program Protection and Reverse Engineering Workshop (PPREW) and the Software Security and Protection Workshop (SSP), which both started in 2011.  Software security is a discipline that lies at the crossroads of security, cryptography, networks, software engineering, computer architecture, operating systems, and compiler design. Program protection and reverse engineering techniques both find their practical use in malware research and analysis as well as legitimate protection schemes for intellectual property and commercial software.   The joint workshop will focus on how to protect software from tampering, reverse engineering, and piracy. Strongly encouraged are proposals of new, speculative ideas; evaluations of new or known techniques in practical settings; and discussions of emerging threats and problems in metrics, tools, and procedures for evaluating tamperproofing, watermarking, obfuscation, birthmarking, and protection algorithms in general. Likewise, reverse engineering of low-level constructs such as machine code or gate-level circuit definitions through static and dynamic analysis is geared to recover higher levels of abstract information to determine a program’s function as well as to classify it with existing similar code (which is typically malicious).  Both program protection and reverse engineering techniques are utilized for legitimate and illegal purposes.  Theoretically, protection is seen as impossible in the general case but the promise of mathematically based transformations with rigorous cryptographic properties is an area of active interest.  Given enough time and resources, reverse engineering and de-obfuscation is assumed to be achievable.


Important Deadlines:

•  Submission: Aug. 28, 2016

•  Notification of Acceptance: Oct. 3, 2016

•  Camera-ready: Nov. 12, 2016

•  Workshop: Dec. 5-6, 2016


Topics of interest include, but are not limited to the following.

•  Security modelling

•  Protection metrics and measurements

•  Obfuscation / Deobfuscation

•  Tamper-proofing

•  Watermarking / Digital fingerprinting

•  Reverse engineering tools and techniques

•  Program / circuit slicing

•  Information hiding and discovery

•  Hardware-based protections

•  Source code analysis / program understanding

•  Forensic analysis and protections

•  Virtualization for protection and/or analysis

•  New cutting-edge protection technologies

•  Diversity metrics and measurements

•  Man-at-the-end (MATE) attack technologies

•  MATE characterization

•  Theoretic Analysis Frameworks:

    -- Abstract Interpretation

    -- Term Rewriting Systems

    -- Machine Learning

    -- Large Scale Boolean Matching

    -- Homomorphic Encryption

•  User interface design for controlling protection

•  Static/dynamic analysis techniques

•  Moving target and active cyber defense

•  Protection profiling, verification, and evaluation


SSPREW will provide a discussion forum for researchers that are exploring theoretical definitions and frameworks, implementing and using practical methods and empirical studies, and those developing new tools or techniques in this unique area of security. The workshop has historically provided exchange of ideas and support for cooperative relationships among researchers in industry, academia, and government.

Submission Guidelines:  Original, unpublished manuscripts of up to 12-pages including figures and references must follow the ACM SIG proceedings format. Papers will be published through ACM International Conference Proceedings Series (ICPS) and available in the ACM Digital Library.


Submission is through EasyChair: 

See workshop website ( for more details.


Program Co-Chairs:

Mila Dalla Preda, Univ of Verona, Italy

Natalia Stakhanova, Univ of New Brunswick, Canada


General Workshop Chair:

J. Todd McDonald, Univ of South Alabama, USA


Slim Kallel | 29 Jun 14:14 2016

CFP - Special Issue on Adaptive and Reconfigurable Distributed Systems (Elsevier CAEE, Impact Factor: 1.084)

CALL FOR PAPERS: Elsevier Computers and Electrical Engineering (CAEE)
Impact Factor: 1.084 (5-Year Impact Factor: 1.103)

Special Issue on Adaptive and Reconfigurable Distributed Systems

The focal concerns are Service-oriented and component-based software systems, applications and architectures addressing adaptation and reconfiguration issues. Different investigation topics are involved, such as: CBSE, SOA, Functional and Non Functional (NF) requirements (QoS, performance, resilience), monitoring, diagnosis, decision and execution of adaptation and reconfiguration. Different research axes are covered: concepts, methods, techniques, and tools to design, develop, deploy and manage adaptive and reconfigurable software systems. 

The concept of adaptive and reconfigurable software systems has been introduced in order to describe architectures, which exhibit such properties. An adaptive and reconfigurable software system can repair itself if any execution problems occur, in order to successfully complete its own execution, while respecting functional and NF agreements. In the design of an adaptive and reconfigurable software system, several aspects have to be considered. For instance, the system should be able to predict or to detect degradations and failures as soon as possible and to enact suitable recovery actions. Moreover, different NF requirements service levels might be considered in order to complete the execution in case of failure.

========== TOPICS
For this special issue, contributions are devoted to adaptive and reconfigurable distributed systems. Specifically, the relevant topics include:
- Distributed and centralized solutions for the diagnosis and repair of software systems
- Design for the diagnosability and repairability
-  Monitoring simple and composite architectures, components and services
- Semantic (or analytic) architectural and behavioral models for monitoring, planning and deployment of software systems
- Dynamic reconfiguration of software systems architectures
- Software architecture design and validation for complex systems
- Scalability management in software systems architectures
- Collaborative planning and decision-making
- Collaborative technologies for ensuring autonomic properties
- Predictive management of adaptability.

− August 31, 2016 Full paper submission due 
− November 30, 2016 First round notification 
− January 31, 2017 Revised submission due 
− March 31, 2017 Paper acceptance decision 
− August 2017: Publication

Unpublished manuscripts or extended versions of the papers that have been published in related conference proceedings are welcome. All submissions must be original and not currently under review for publication elsewhere. All submitted papers will be peer reviewed using the normal standards of CAEE. By submitting a paper to this issue, the authors agree to referee one paper (if asked) within the time frame of the special issue.

Authors should submit their papers through the Elsevier Editorial System web site ( using the Article Type "SI-ards”.

========== GUEST EDITORS
Dr. Slim Kallel, ReDCAD, University of Sfax, Tunisia (MGE), Slim.kallel <at>
Prof. Khalil Drira, CNRS-LAAS & University of Toulouse, France, khalil <at>
Prof. Mohamed Jmaiel, ReDCAD, University of Sfax, Tunisia, Mohamed.jmaiel <at>
Soegtrop, Michael | 25 Jun 16:09 2016

Flexdll circular dependency fix uses system provided flexdll.h [was: opam-cross-windows]

Dear David,

I just managed now to test the flexdll dependency fix in 4.03.0 you mentioned in your post from March 15th:

>  1. Ensure FlexDLL sources are in flexdll/ in the OCaml build tree
>	1a. If you're building from a git clone, issue git submodule update --init
>	1b. If you're building from a sources tarball, issue git clone >
> 2. Follow usual configuration steps in config/
> 3. make -f Makefile.nt flexdll world opt opt.opt install

It is much better than it was, but I think there is still a minor flaw in it. When compiling byterun/win32.c
(from asmrun) in the make opt phase, it doesn't find flexdll.h because gcc doesn't have an -I ../flexdll.
If I copy flexdll.h to a system include directory it works fine. Is it possible that you had a flexdll.h
somewhere and the build took it from there rather than from the flexdll subfolder when you tried this?

Also I think specific versions of OCaml should copy specific versions of flexdll. A git clone of the trunk
version might lead to unexpected effects in the future and it might be hard to reconstruct older OCaml
versions later.

Best regards,

Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0,
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928


Caml-list mailing list.  Subscription management and archives:
Beginner's list:
Bug reports:
Soegtrop, Michael | 25 Jun 15:57 2016

Building ocamlbuild with opam fails after opam switch <version>

Dear OCaml Users,


Opam works fine for me with the system installed OCaml, but after an opam switch I cannot build ocamlbuild or any package depending on it any more.


Building ocamlbuild fails because it explicitly checks if there is already a system installed ocamlbuild:


# ERROR: Preinstalled ocamlbuild detected at /usr/local/lib/ocaml/ocamlbuild

# Installation aborted; if you want to bypass this safety check, pass CHECK_IF_PREINSTALLED=false to make

# make: *** [Makefile:333: check-if-preinstalled] Error 2


Of cause I can just follow this advice and remove this check, but I wonder how others handle this.


Best regards,




Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0,
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

whitequark | 25 Jun 00:58 2016

[ANN] ppx_deriving 4.0, ppx_deriving_yojson 3.0, ppx_deriving_protobuf 2.5


I'm glad to announce new releases of ppx_deriving, ppx_deriving_protobuf
and ppx_deriving_yojson. They are already available via OPAM.


ppx_deriving 4.0

   * Show, eq, ord, map, iter, fold: add support for `Result.result`.
   * Ppx_deriving.Arg: use Result.result instead of polymorphic variants.
   * Ppx_deriving.sanitize: parameterize over an opened module.
   * Add support for `[ <at>  <at> deriving]` in module type declarations.
   * Add support for loading findlib packages instead of just files in
   * Treat types explicitly qualified with Pervasives also as builtin.
   * Compatibility with statically linked ppx drivers.

ppx_deriving_protobuf 2.5

   * Compatibility with statically linked ppx drivers.

ppx_deriving_yojson 3.0

   * Use Result.result in generated code.
   * OCaml 4.03 compatibility.
   * Compatibility with statically linked ppx drivers.



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


typing question: universal type variable in class type

Dear all,
When we wrote bindings for promise, we want to express things (simplified ) like below:

class type ['b] promise = object
method then_ : 'a . ('b -> 'a promise) -> 'a promise

It is not expressible in OCaml, The universal type variable 'a can not be generalized, I tried this too:

type 'b promise = < then_ : 'a . ('b -> 'a u) -> 'a u >

It does not work either, thanks -- Hongbo