OCaml Weekly News

Previous Week Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of March 16 to 23, 2021.

Table of Contents

findlib-1.9.1

Gerd Stolpmann announced

a couple of installation problems slipped into findlib-1.9, mostly missing files in the release tarball, but also a FreeBSD incompatibility. For that reason, there is now findlib-1.9.1 fixing the problems (so far known, and I hope we caught them all).

Same link as before:

http://projects.camlcity.org/projects/findlib.html

Conformist 0.2.1

jerben announced

I am happy to announce the release of conformist 0.2.1.

Conformist deals with schema definition and validation. It supports decoding to bridge the gap between runtime types and static types without ppx.

type occupation =
  | Mathematician
  | Engineer

type user =
  { occupation : occupation
  ; email : string
  ; birthday : int * int * int
  ; nr_of_siblings : int
  ; comment : string option
  ; wants_premium : bool
  }

let user occupation email birthday nr_of_siblings comment wants_premium =
  { occupation; email; birthday; nr_of_siblings; comment; wants_premium }
;;

let occupation_decoder = function
  | "mathematician" -> Ok Mathematician
  | "engineer" -> Ok Engineer
  | _ -> Error "Unknown occupation provided"
;;

let occupation_encoder = function
  | Mathematician -> "mathematician"
  | Engineer -> "engineer"
;;

let user_schema =
  Conformist.(
    make
      Field.
        [ custom
            occupation_decoder
            occupation_encoder
            "occupation"
            ~meta:()
        ; string "email"
        ; date "birthday"
        ; int ~default:0 "nr_of_siblings"
        ; optional (string "comment")
        ; bool "wants_premium"
        ]
      user)
;;

  let input =
    [ "occupation", [ "engineer" ]
    ; "email", [ "test@example.com" ]
    ; "birthday", [ "2020-12-01" ]
    ; "nr_of_siblings", [ "3" ]
    ; "comment", [ "hello" ]
    ; "wants_premium", [ "true" ]
    ]

let user =
  Conformist.decode Schema.user_schema input

let validation_errors =
  Conformist.validate Schema.user_schema input

The user_schema and the user create function are guaranteed to be in sync at compile time.

Compiler Explorer now supports OCaml 4.12.0

Continuing this thread, Sora Morimoto announced

Today we deployed 4.12.0 flambda. It must already be available!

Annoucement of OFLAT, a web-based platform to support courses on Formal Languages and Automata Theory

Antonio Ravara announced

http://ctp.di.fct.unl.pt/FACTOR/OFLAT/

To support students’ autonomous work on topics related with Formal Languages and Automata Theory (FLAT), interactive tools that allow them to experiment with examples and solve exercises are very important - several studies demonstrate this.

There are applications with this aim. While some are impressively complete, but are mainly Desktop applications (like JFLAP), others that can be used via a web browser are under-developed. Moreover, these applications are often not fully interactive - illustrations or even step-by-step execution is key to understand the algorithms - and, due to the programming languages used, implement the concepts in a way quite distant from the textbook Mathematical definitions. Code that implements closely the definitions is also a relevant pedagogical tool.

With three concerns in mind - availability in mobile devices, interactive run of the algorithms (or at least presenting clear explanations), and code following closely the definitions - we developed OFLAT, a web-based tool to represent and illustrate graphically classical mechanisms and algorithms of Formal Languages and Automata Theory. It includes not only exercises evaluated automatically and providing feedback, but also allows students to create their own exercises. An integration with a grading platform like Learn-OCaml is underway.

The tool is implemented in OCaml and is organised in two parts: a library - OCamlFLAT - which concentrates the logic of FLAT concepts, and the interactive applicational part - OFLAT. To run on browsers, the application uses the OCaml to Javascript translator Js_of_OCaml. To implement the interactive graphics, it uses Cytoscape, a Javascript library for graphs. All code is available in the Git of the project: https://gitlab.com/releaselab/leaf/OCamlFlat, https://gitlab.com/releaselab/leaf/OFLAT.

The development of new functionalities is ongoing (we're now working more animations and on Context-Free Grammar and Pushdown Automata). Comments most welcome.

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.