Previous week Up Next week

Hello

Here is the latest OCaml Weekly News, for the week of February 06 to 13, 2018.

  1. Catching type error in toplevel
  2. first release of bst: a bisector tree implementation
  3. Which XML libraries do you recommend?
  4. containers 2.0
  5. Exceptions vs Option
  6. Other OCaml News

Catching type error in toplevel

Archive: https://discuss.ocaml.org/t/catching-type-error-in-toplevel/1538/1

Weng Shiwei asked:
I am working on a grading script to grade students' submission. The general idea
currently is loading a submission file in toplevel and running testcases on many
functions in that submission file.

I choose toplevel is due to some functions in submission may have type error.
Saying one function in submission accepts only one argument but in fact it needs
two arguments. If I try compiling the submission together with grading code,
type error will stop the whole compiling. However, if I run it in toplevel, only
this testcases fail, and the following testcases can still run, which may give
them partial credits.

This is the background. My questions is:

- 1. Is it possible to catch type error in toplevel? If I could this, I can give
better feedback

- 2. Could some test framework like OUnit help? I admit using toplevel is
somewhat hacking. The tricky part is I have to be enough tolerable to submission
files.
      
Gabriel Radanne replied:
You might want to look at the work done for the OCaml MOOC:
- ICFP
[paper](https://dl.acm.org/ft_gateway.cfm?id=3110248&ftid=1902061&dwn=1&CFID=5521532&CFTOKEN=75e77e9352adafe6-3CA9280E-FBD1-3243-FB03B2D0A9C845A7)
and [video](https://www.youtube.com/watch?v=eVGvDqA_3u8)
- Hosted version and sources: https://try.ocamlpro.com/fun-demo/

They do precisely what you describe (and quite a bit more, in fact).
      

first release of bst: a bisector tree implementation

Archive: https://sympa.inria.fr/sympa/arc/caml-list/2018-02/msg00013.html

Francois BERENGER announced:
A bisector tree allows to do fast but exact nearest neighbor searches in
any space provided that you have a metric (function) to measure the
distance between any two points in that space.

It also allows proximity queries, as in "all points within distance d
from my query point".

Cf. this article for details: "A Data Structure and an Algorithm for the
Nearest Point Problem"; Iraj Kalaranti and Gerard McDonald.
ieeexplore.ieee.org/iel5/32/35936/01703102.pdf

The code is here:
https://github.com/UnixJunkie/bisec-tree

It might interest users of vantage point trees (minivpt, and vpt in
opam), kd-trees and such.
I think bst should be faster than vpt in most use cases.

It should appear in opam shortly.
      

Which XML libraries do you recommend?

Archive: https://discuss.ocaml.org/t/which-xml-libraries-do-you-recommend/1535/4

Anton Bachin continued this thread:
For completeness, there is also
[Markup.ml](https://github.com/aantron/markup.ml). It is focused on HTML5, but
it also includes an XML parser with the same interface.

I would recommend xmlm for most use cases.
      

containers 2.0

Archive: https://discuss.ocaml.org/t/ann-containers-2-0/1552/1

Simon Cruanes announced:
I'm happy to announce that Containers 2.0 is released and should land on opam
shortly.

There were some improvements since the last
[announce](https://discuss.ocaml.org/t/ann-containers-2-0-alpha1/1454). The new
changelog is
[there](https://github.com/c-cube/ocaml-containers/blob/6b9f39d2240b22a82a2167dee7d27c169ba530a6/CHANGELOG.adoc).
However, the core of the changes is that dangerous polymorphic operators are
hidden after `open Containers`, and are not relied upon anymore.

There is a [migration
guide](https://github.com/c-cube/ocaml-containers/blob/f78ee1bf92e9de4ae71ea2e506d7c576229654ff/README.adoc#migration-guide)
for updating your code to 2.0. In short, `open Pervasives` following `open
Containers` might ease the transition; printing functions are all named `pp`;
and some optional arguments are now mandatory.
      

Exceptions vs Option

Archive: https://discuss.ocaml.org/t/exceptions-vs-option/1559/3

Didier Wenzek said:
This recent post on
[`r/ocaml`](https://www.reddit.com/r/ocaml/comments/7x4m0e/composable_error_handling_in_ocaml/)
explores 4 ways to handle errors in OCaml. An interesting reading.
      

Other OCaml News

From the ocamlcore planet blog:
Here are links from many OCaml blogs aggregated at OCaml Planet,
http://ocaml.org/community/planet/.

OCamlPro’s Liquidity-lang demo at JFLA2018 – a smart-contract design language
 http://www.ocamlpro.com/2018/02/08/liquidity-smart-contract-deploy-live-demo-on-tezos-alphanet-jfla2018/
      

Old cwn

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.

If you also wish to receive it every week by mail, you may subscribe online.


Alan Schmitt