Language coverage

What of Elm this implementation understands — the surface language, the standard library, and where the support lives. The README has the at-a-glance table; this page is the detailed reference. For *which backend* runs each construct see the backends guide; for the bundled non-core libraries see the libraries reference.

Legend: ✅ supported · ⚠️ partial (notes) · ❌ not implemented.

Surface language

ConstructStatusNotes
Module header, exposing (..) / explicit, port moduledotted module names (Url.Parser) too
Imports: import M, as, exposing, qualified namesimport-aware unqualified resolution
Custom types (type), type aliases (type alias)record aliases also define a constructor function
type / type alias inside a leta superset of stock Elm; constructors scope to the rest of the let
Type annotations on declarations and let bindingschecked by Hindley–Milner inference
Int / Float / String / Char literals, multi-line strings
Lists, tuples, unit, records
Record access r.f, update `{ r \f = v }, accessor .f`access is row-polymorphic (looked up by field)
if, let … in, lambdas, curried & partial application
case … of patterns: var, wildcard, literal (Int/String/Char), ctor, tuple, list, cons, record, alias (as)exhaustiveness-checked
Operators with the elm/core fixity table; layout / offside rule
User/package-defined infix operators ((+++) a b = …)non-standard in app code, but they run here
Ports (Cmd/Sub ports)
GLSL shader literals `[glsl\… \]`⚠️lexed/parsed; rendered by the JS/WebGL backend
Debug.todo / Debug.log / Debug.toString

Standard library

Modules the type checker knows (Signatures) and the runtime implements (Prelude for the interpreters, kernel.js / dom.js for the JS backend). The two are kept in lock-step by a coverage guard in both directions.

ModuleStatusNotes
Basicsarithmetic, comparison, modBy/remainderBy, toPolar/fromPolar, clamp, trig, …
Listthe usual map/filter/fold/sort family; (++) concatenation
Stringincl. toList/fromList/cons/uncons, split/join, toInt/toFloat
ChartoCode/fromCode, case, isDigit/isAlpha/…, plus isSpace/isPunctuation/isControl
Maybe, Resultmap/andThen/withDefault, map2…
Tuple
Dict, Set
Arraylist-backed
Json.Decode / Json.Encodedecoders run against a real JSON parser
Random, Time, Task, Processdeterministic under the headless driver
Httpget/post/request, header, emptyBody/stringBody/jsonBody, expectString/expectJson/expectWhatever, the Error constructors
Browsersandbox/element/document/application (the last runs headlessly with a synthetic Url/Key)
Browser.Dom⚠️getViewport/getElement return fixed boxes headlessly; focus/blur/setViewport are JS-backend effects
Browser.Events, Browser.Navigationsubscriptions/keys; navigation is a no-op headlessly
Url, Url.Parser, Url.Parser.Querya typed URL router (bundled library)
Html / Html.Attributes / Html.Events, Svgvirtual DOM, rendered to HTML headlessly and to the real DOM by the JS backend
WebGL, Math.Vector*, Math.Matrix4⚠️computed for real by the JS backend; opaque/headless in the interpreter
Bitwise32-bit, matching elm/core and JS
Bytes / Bytes.Encode / Bytes.Decodecompact list-of-bytes library (every backend)

Beyond stock Elm

A few deliberate supersets and extras:

Not implemented