$ dhall-c/api

The C API

The interpreter core as a callable C library.

API surface

// src/dhall.h

The interpreter exposes a clean C API over the de Bruijn core: parse_source (lex+parse), infer_type (bidirectional typecheck), normalize (eager, step-sound), and the serialize.c writers (JSON/TOML/YAML). All allocation flows through the arena.

#include dhall.h

// parse + typecheck + normalize a source string
DhallError err;
Term t = parse_source(src, &err);
Term ty = infer_type(t, &err);
Term nf = normalize(t);

The same core, compiled to wasm, is what powers the <dhall-playground> in your browser (via src/wasm.c and the LSP in src/lsp.c).

Language server

// dhall-lsp.com · JSON-RPC 2.0 over stdio

A Language Server Protocol server gives editors live diagnostics and hover types, reusing the interpreter core for everything it reports. dhake dhall-lsp.com builds it; dhake test-lsp runs the end-to-end checks.