Library
Module
Module type
Parameter
Class
Class type
dune files are the main part of Dune. They are used to describe libraries, executables, tests, and everything Dune needs to know about.
dune files are the main part of Dune. They are used to describe libraries, executables, tests, and everything Dune needs to know about.
The official documentation is on the Dune website.
Many Dune expressions have a list of strings as arguments. For example, the SYM.libraries
expression declares the list of libraries that an executable needs. Use one of the following variants to tell the expression interpreter how to process your string argument:
`S "something"
is a literal string`Split "something1 something2 ..."
is zero or more strings split by whitespace (roughly speaking). The formal splitting algorithm follows the Lexical conventions of s-expression for identifying atoms in a list.All the expressions below are equivalent:
(libraries [`S "lib1"; `S "lib2"; `S "lib3"])
(libraries [`Split "lib1 lib2 lib3"])
(libraries [`S "lib1"; `Split "lib2 lib3"])
Why use `Split
? Besides saving a bit of typing for long lists, a `Split
is the right choice when your interpreter supports parameterized strings. For example, if you were using the "dkml-dune-dsl-show"
interpreter and configured it with a JSON parameter file, you could use `Split "{{#libraries}} {{library}} {{/libraries}}"
and the "dkml-dune-dsl-show"
interpreter would:
libraries
JSON array from the JSON parameter file into a space separated list of libraries`Split
would then split the space separated list of libraries into the individual libraries.module type SYM = sig ... end
The module type for an embedded domain specific language (eDSL) that describes a Dune file.