Here is the latest OCaml Weekly News, for the week of February 06 to 13, 2018.
Archive: https://discuss.ocaml.org/t/catching-type-error-in-toplevel/1538/1Weng 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).
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2018-02/msg00013.htmlFrancois 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.
Archive: https://discuss.ocaml.org/t/which-xml-libraries-do-you-recommend/1535/4Anton 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.
Archive: https://discuss.ocaml.org/t/ann-containers-2-0/1552/1Simon 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.
Archive: https://discuss.ocaml.org/t/exceptions-vs-option/1559/3Didier 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.
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/
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.