Hello
Here is the latest OCaml Weekly News, for the week of November 10 to 17, 2015.
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2015-11/msg00067.html
Continuing the thread from last week, Simon Cruanes announced:
I also have a weight-balanced tree implementation (quite experimental,
but there are tests), in containers.data: `CCWBTree`
(http://cedeela.fr/~simon/software/containers/CCWBTree.S.html).
It should provide all the operations you ask for in O(log(n)), and takes
a total order as a parameter.
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2015-11/msg00075.html
Christoph Höger announced:
ppx_deriving_morphism is a plugin for ppx_deriving that attempts to
automatically generate folder and mapper objects in the style of the
ast_mapper from the compiler libs.
This should help compiler-writers and anyone else dealing with
cumbersome recursive functions where most lines are only syntactic
noise (free variables, substitution). The goal is to have
implementations that are convenient to use and extend via the record
update syntax.
A mapper is an object that provides a map routine for each type in the
annotated group of type-definitions.
A ('a,'b) map_routine is a function mapper -> 'a -> 'b
A 'a folder is an object that provides ('a, t) fold_routine for each
type t in the annotated group of type-definitions.
A ('a,'b) fold_routine is a function folder -> 'b -> 'a -> 'a
For each variant-type in the group, a dispatcher and for each variant
a map/fold_routine is generated, so folding and mapping can be
selective for each variant.
Please feel encouraged to test and contribute. The plugin is largely
incomplete but I have only time and motivation to implement what fits
my needs or is useful for several other people. Any kind of feedback
is also appreciated.
https://github.com/choeger/ppx_deriving_morphism/
The package has just arrived on opam.
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2015-11/msg00111.html
Anton Bachin announced:
I would like to announce the release of Lambda Soup, a library for
manipulating HTML documents with CSS selector support. In brief, it
allows expressions such as
(* Print all links. *)
read_file “index.html" |> parse
$$ "a[href]"
|> iter (fun a -> a |> R.attribute "href" |> print_endline)
and
(* Add ids to all <h2> tags. *)
read_channel stdin |> parse
$$ "h2"
|> iter (fun h2 -> h2 |> set_attribute "id" (R.leaf_text h2))
|> write_channel stdout
The library is based on a set of lazy node traversals (to parents,
children, siblings, etc.). The CSS syntax maps onto these. Types are
used to distinguish HTML node classes (such as text, element, and
document) and reduce the need for error-checking.
The library can be found here:
https://github.com/aantron/lambda-soup
and the associated documentation is at
http://aantron.github.io/lambda-soup
OCaml, as an impure functional language with terse syntax, seems very
well-suited to this kind of work. I currently have Lambda Soup
postprocessing its own ocamldoc documentation, and I found this
postprocessor more pleasant to write and maintain than the equivalent
program using Python's Beautiful Soup would have been.
There is some discussion of implementing a new lax HTML(5) parser. This
may be the next thing I will do. Any comments on this, and on Lambda
Soup, are welcome.
Lambda Soup is in OPAM as package "lambdasoup".
Here is a sneak peek at some potential future features of the Ocaml
compiler, discussed by their implementers in these Github Pull Requests.
make ocamlnat build again
https://github.com/ocaml/ocaml/pull/269
Make backtraces aware of inlining
https://github.com/ocaml/ocaml/pull/247
toplevel: add optional editline support
https://github.com/ocaml/ocaml/pull/241
Thanks to Alp Mestan, we now include in the OCaml Weekly News the links to the
recent posts from the ocamlcore planet blog at http://planet.ocaml.org/.
Erik de Castro Lopo: Forgive me Curry and Howard for I have Sinned.
http://www.mega-nerd.com/erikd/Blog/CodeHacking/forgive_me.html
Coq: Coq 8.5 beta 3 is out!
https://coq.inria.fr/news/126.html
Functional Jobs: Software Engineer - Functional Programmer - Erlang at Change Healthcare (Full-time)
https://functionaljobs.com/jobs/8866-software-engineer-functional-programmer-erlang-at-change-healthcare
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.