Home

Dhall

Dhall is a statically typed, pure functional configuration language designed to be a safe, maintainable alternative to conventional formats such as JSON and YAML. It emphasizes reproducibility and safety by being total and strongly normalizing, so configuration evaluation is deterministic and terminates.

The language provides a compact core with constructs for records, unions, lists, options, and higher‑order functions.

Dhall's type system includes primitive types such as Bool and Text, along with composite types like lists,

Dhall is designed to be non‑Turing complete and strongly normalizing, guaranteeing termination and referential transparency. It

Tooling for Dhall includes an official reference implementation and several language bindings. The command line tool

Dhall has been adopted in infrastructure as code and configuration management to enable modular, reusable, and

Configurations
are
assembled
from
reusable
components
via
an
import
system
that
can
pull
in
local
files
or
remote
resources,
with
implementation‑dependent
support
for
caching
and
integrity
verification.
records,
and
optional
values.
Type
inference
is
supported,
but
explicit
annotations
are
common
for
clarity.
The
language
avoids
side
effects
and
I/O
during
evaluation;
imports
are
resolved
first,
after
which
a
normal
form
is
produced.
aims
to
prevent
unexpected
runtime
errors
in
deployment
pipelines
by
catching
errors
at
configuration
time
rather
than
at
runtime.
dhall
can
type-check,
normalize,
and
format
expressions,
and
there
are
converters
that
translate
Dhall
to
JSON
or
YAML
for
downstream
systems.
versioned
configurations
across
environments.
It
is
maintained
as
an
open‑source
project
with
multiple
implementations
and
an
active
ecosystem
of
libraries
and
tooling.