Single source of truth for PTC-Lisp function metadata.
Loads ordinary implemented functions from priv/functions.exs, Clojure
parity metadata from priv/function_audit.exs, and validated Java metadata
through PtcRunner.Lisp.Java.Surface. No runtime file I/O is performed.
The files are split because their change cadence differs:
functions.exs is touched when the language definition evolves, while
function_audit.exs is touched when triaging Clojure parity and
java_interop.exs owns the bounded Java compatibility surface.
Keeping them separate keeps each file in a more manageable size range
and avoids recompiling dependents when only audit metadata changes.
Usage
Registry.doc("filter")
#=> %{name: "filter", signatures: [...], ...}
Registry.builtins_by_category(:string)
#=> [:format, :name, :str, ...]
Registry.apropos("sort")
#=> [%{name: "sort", ...}, %{name: "sort-by", ...}]See also: PtcRunner.Lisp.Env, PtcRunner.Lisp.Analyze
Summary
Functions
Searches functions by a case-insensitive literal substring.
Returns env-dispatched builtin names for the given category.
Returns env-dispatched builtin names that are supported for the given compatibility namespace.
Returns a human-readable name for a category.
Returns all clojure.core audit entries.
Returns all clojure.set audit entries.
Returns all clojure.string audit entries.
Returns all clojure.walk audit entries.
Looks up documentation for a function by exact name.
Returns all implemented function entries.
Returns a curated Java audit including stable surface target/reference IDs.
Returns a curated Java compatibility audit by key.
Returns the available curated Java compatibility audit keys.
Returns all Java interop entries.
Returns all java.lang.Math audit entries.
Functions
Searches functions by a case-insensitive literal substring.
Canonical names, signatures (including qualified Java spellings), descriptions, notes, divergences, and sections are searchable. Results keep canonical registry names and a blank query matches nothing.
Examples
iex> results = PtcRunner.Lisp.Registry.apropos("sort")
iex> Enum.any?(results, & &1.name == "sort")
true
iex> results = PtcRunner.Lisp.Registry.apropos("interop")
iex> Enum.all?(results, & &1.section == "Interop")
true
Returns env-dispatched builtin names for the given category.
Examples
iex> :join in PtcRunner.Lisp.Registry.builtins_by_category(:string)
true
iex> :set in PtcRunner.Lisp.Registry.builtins_by_category(:set)
true
Returns env-dispatched builtin names that are supported for the given compatibility namespace.
Unlike builtins_by_category/1, this represents namespace membership rather
than presentation grouping. For example, clojure.core/str is valid even
though str is displayed in the String Functions section.
Returns a human-readable name for a category.
Examples
iex> PtcRunner.Lisp.Registry.category_name(:string)
"String"
iex> PtcRunner.Lisp.Registry.category_name(:core)
"Core"
@spec clojure_core_audit() :: [map()]
Returns all clojure.core audit entries.
Examples
iex> entries = PtcRunner.Lisp.Registry.clojure_core_audit()
iex> is_list(entries) and length(entries) > 400
true
@spec clojure_set_audit() :: [map()]
Returns all clojure.set audit entries.
Examples
iex> entries = PtcRunner.Lisp.Registry.clojure_set_audit()
iex> is_list(entries) and length(entries) > 8
true
@spec clojure_string_audit() :: [map()]
Returns all clojure.string audit entries.
Examples
iex> entries = PtcRunner.Lisp.Registry.clojure_string_audit()
iex> is_list(entries) and length(entries) > 15
true
@spec clojure_walk_audit() :: [map()]
Returns all clojure.walk audit entries.
Examples
iex> entries = PtcRunner.Lisp.Registry.clojure_walk_audit()
iex> is_list(entries) and length(entries) > 5
true
Looks up documentation for a function by exact name.
Handles namespace-qualified names (e.g., "LocalDate/parse" → "parse",
preserves closed Java names such as "System/currentTimeMillis", and maps
"java.time.Duration/between" → "Duration/between").
Examples
iex> entry = PtcRunner.Lisp.Registry.doc("filter")
iex> entry.name
"filter"
iex> entry = PtcRunner.Lisp.Registry.doc("LocalDate/parse")
iex> entry.name
"parse"
iex> entry = PtcRunner.Lisp.Registry.doc("java.time.Duration/between")
iex> entry.name
"Duration/between"
@spec implemented() :: [map()]
Returns all implemented function entries.
Examples
iex> entries = PtcRunner.Lisp.Registry.implemented()
iex> is_list(entries) and length(entries) > 100
true
Returns a curated Java audit including stable surface target/reference IDs.
Returns a curated Java compatibility audit by key.
@spec java_compat_audit_keys() :: [atom()]
Returns the available curated Java compatibility audit keys.
@spec java_interop() :: [map()]
Returns all Java interop entries.
Examples
iex> entries = PtcRunner.Lisp.Registry.java_interop()
iex> is_list(entries) and length(entries) > 5
true
@spec java_math_audit() :: [map()]
Returns all java.lang.Math audit entries.
Examples
iex> entries = PtcRunner.Lisp.Registry.java_math_audit()
iex> is_list(entries) and length(entries) > 30
true