[
    {
        "namespace": "ai",
        "name": "ai/*http-post*",
        "description": "HTTP POST seam. Rebind with `binding` in tests to inject a fake transport.\n  Tagged `^:dynamic` so concurrent tests rebinding it stay isolated per fiber.",
        "doc": "HTTP POST seam. Rebind with `binding` in tests to inject a fake transport.\n  Tagged `^:dynamic` so concurrent tests rebinding it stay isolated per fiber.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L24",
        "docUrl": "",
        "meta": {
            "doc": "HTTP POST seam. Rebind with `binding` in tests to inject a fake transport.\n  Tagged `^:dynamic` so concurrent tests rebinding it stay isolated per fiber.",
            "example": "(binding [*http-post* (fn [url opts] {:status 200 :body \"...\"})] ...)",
            "dynamic": true,
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "ai",
        "name": "ai/build-index",
        "description": "Builds a searchable index from a collection of text strings.\n\n  Embeds all texts and returns a vector of {:text, :embedding} maps\n  suitable for use with `nearest`.\n\n  Options are passed through to `embed`.",
        "doc": "```phel\n(build-index texts & [opts])\n```\nBuilds a searchable index from a collection of text strings.\n\n  Embeds all texts and returns a vector of {:text, :embedding} maps\n  suitable for use with `nearest`.\n\n  Options are passed through to `embed`.",
        "signatures": [
            "(build-index texts & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L706",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(build-index texts & [opts])\n```\nBuilds a searchable index from a collection of text strings.\n\n  Embeds all texts and returns a vector of {:text, :embedding} maps\n  suitable for use with `nearest`.\n\n  Options are passed through to `embed`.",
            "example": "(build-index [\"hello\" \"world\"])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[texts & __phel_4229]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/chat",
        "description": "Sends a chat completion request with a list of message maps.\n\n  Each message is a map with :role and :content keys.\n  Returns the assistant's text response as a string.\n\n  Accepts an optional options map:\n    :system     - System prompt string\n    :model      - Override the configured model\n    :max-tokens - Override the configured max tokens\n    :provider   - Override the configured provider\n    :timeout    - HTTP timeout in seconds\n    :base-url   - Override the API base URL\n    :api-key    - Override the configured API key",
        "doc": "```phel\n(chat messages & [{:keys [system], :as opts}])\n```\nSends a chat completion request with a list of message maps.\n\n  Each message is a map with :role and :content keys.\n  Returns the assistant's text response as a string.\n\n  Accepts an optional options map:\n    :system     - System prompt string\n    :model      - Override the configured model\n    :max-tokens - Override the configured max tokens\n    :provider   - Override the configured provider\n    :timeout    - HTTP timeout in seconds\n    :base-url   - Override the API base URL\n    :api-key    - Override the configured API key",
        "signatures": [
            "(chat messages & [{:keys [system], :as opts}])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L294",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(chat messages & [{:keys [system], :as opts}])\n```\nSends a chat completion request with a list of message maps.\n\n  Each message is a map with :role and :content keys.\n  Returns the assistant's text response as a string.\n\n  Accepts an optional options map:\n    :system     - System prompt string\n    :model      - Override the configured model\n    :max-tokens - Override the configured max tokens\n    :provider   - Override the configured provider\n    :timeout    - HTTP timeout in seconds\n    :base-url   - Override the API base URL\n    :api-key    - Override the configured API key",
            "example": "(chat [{:role \"user\" :content \"Hello!\"}])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[messages & __phel_4005]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/chat-with-history",
        "description": "Appends a new user message to an existing conversation history,\n  sends it, and returns the updated history with the assistant's response.\n\n  Useful for building multi-turn conversations.",
        "doc": "```phel\n(chat-with-history history user-message & [opts])\n```\nAppends a new user message to an existing conversation history,\n  sends it, and returns the updated history with the assistant's response.\n\n  Useful for building multi-turn conversations.",
        "signatures": [
            "(chat-with-history history user-message & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L330",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(chat-with-history history user-message & [opts])\n```\nAppends a new user message to an existing conversation history,\n  sends it, and returns the updated history with the assistant's response.\n\n  Useful for building multi-turn conversations.",
            "example": "(chat-with-history [{:role \"user\" :content \"Hi\"}\n                              {:role \"assistant\" :content \"Hello!\"}]\n                             \"How are you?\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[history user-message & __phel_4030]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/chat-with-tools",
        "description": "Sends a chat request with tool definitions.\n\n  Returns a map:\n    :text       - Assistant text content (may be nil if model only called tools)\n    :tool-calls - Vector of {:name :id :input} maps for any tool calls\n    :stop-reason - Provider-specific stop reason\n    :raw        - The full provider response body\n\n  Options map accepts the same keys as `chat`.",
        "doc": "```phel\n(chat-with-tools messages tools & [{:keys [system], :as opts}])\n```\nSends a chat request with tool definitions.\n\n  Returns a map:\n    :text       - Assistant text content (may be nil if model only called tools)\n    :tool-calls - Vector of {:name :id :input} maps for any tool calls\n    :stop-reason - Provider-specific stop reason\n    :raw        - The full provider response body\n\n  Options map accepts the same keys as `chat`.",
        "signatures": [
            "(chat-with-tools messages tools & [{:keys [system], :as opts}])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L494",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(chat-with-tools messages tools & [{:keys [system], :as opts}])\n```\nSends a chat request with tool definitions.\n\n  Returns a map:\n    :text       - Assistant text content (may be nil if model only called tools)\n    :tool-calls - Vector of {:name :id :input} maps for any tool calls\n    :stop-reason - Provider-specific stop reason\n    :raw        - The full provider response body\n\n  Options map accepts the same keys as `chat`.",
            "example": "(chat-with-tools [{:role \"user\" :content \"What's the weather?\"}]\n                             [(tool \"get-weather\" \"Gets weather\" {:city {:type \"string\"}})])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[messages tools & __phel_4102]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/complete",
        "description": "Sends a simple text completion request.\n\n  Takes a prompt string and returns the assistant's text response.\n  This is a convenience wrapper around `chat` for single-turn interactions.",
        "doc": "```phel\n(complete prompt & [opts])\n```\nSends a simple text completion request.\n\n  Takes a prompt string and returns the assistant's text response.\n  This is a convenience wrapper around `chat` for single-turn interactions.",
        "signatures": [
            "(complete prompt & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L320",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(complete prompt & [opts])\n```\nSends a simple text completion request.\n\n  Takes a prompt string and returns the assistant's text response.\n  This is a convenience wrapper around `chat` for single-turn interactions.",
            "example": "(complete \"Explain monads in one sentence\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[prompt & __phel_4022]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/config",
        "description": "Current AI configuration atom. Use `configure` to update.",
        "doc": "Current AI configuration atom. Use `configure` to update.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L19",
        "docUrl": "",
        "meta": {
            "doc": "Current AI configuration atom. Use `configure` to update.",
            "example": "@ai/config",
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "ai",
        "name": "ai/configure",
        "description": "Merges the given options into the AI configuration.\n\n  Supported keys:\n    :provider    - :anthropic (default), :openai, or :voyageai\n    :model       - Model name string\n    :max-tokens  - Maximum tokens in response\n    :api-key     - API key string (or set via env var)\n    :base-url    - Override the API base URL\n    :timeout     - HTTP timeout in seconds (default 120)\n    :max-retries - Retry attempts on 429/5xx (default 2)",
        "doc": "```phel\n(configure opts)\n```\nMerges the given options into the AI configuration.\n\n  Supported keys:\n    :provider    - :anthropic (default), :openai, or :voyageai\n    :model       - Model name string\n    :max-tokens  - Maximum tokens in response\n    :api-key     - API key string (or set via env var)\n    :base-url    - Override the API base URL\n    :timeout     - HTTP timeout in seconds (default 120)\n    :max-retries - Retry attempts on 429/5xx (default 2)",
        "signatures": [
            "(configure opts)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L30",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(configure opts)\n```\nMerges the given options into the AI configuration.\n\n  Supported keys:\n    :provider    - :anthropic (default), :openai, or :voyageai\n    :model       - Model name string\n    :max-tokens  - Maximum tokens in response\n    :api-key     - API key string (or set via env var)\n    :base-url    - Override the API base URL\n    :timeout     - HTTP timeout in seconds (default 120)\n    :max-retries - Retry attempts on 429/5xx (default 2)",
            "example": "(configure {:api-key \"sk-ant-...\" :model \"claude-sonnet-4-5\"})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[opts]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/cosine-similarity",
        "description": "Computes the cosine similarity between two numeric vectors.\n  Returns a float between -1.0 and 1.0, where 1.0 means identical direction.",
        "doc": "```phel\n(cosine-similarity a b)\n```\nComputes the cosine similarity between two numeric vectors.\n  Returns a float between -1.0 and 1.0, where 1.0 means identical direction.",
        "signatures": [
            "(cosine-similarity a b)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L627",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(cosine-similarity a b)\n```\nComputes the cosine similarity between two numeric vectors.\n  Returns a float between -1.0 and 1.0, where 1.0 means identical direction.",
            "example": "(cosine-similarity [1 0] [0 1]) ; => 0.0",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[a b]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/dot-product",
        "description": "Computes the dot product of two numeric vectors.",
        "doc": "```phel\n(dot-product a b)\n```\nComputes the dot product of two numeric vectors.",
        "signatures": [
            "(dot-product a b)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L611",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(dot-product a b)\n```\nComputes the dot product of two numeric vectors.",
            "example": "(dot-product [1 2 3] [4 5 6]) ; => 32",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[a b]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/embed",
        "description": "Generates embeddings for one or more text strings.\n\n  Returns a vector of embedding vectors (one per input text).\n  Uses OpenAI's text-embedding-3-small by default.\n\n  Options:\n    :model    - Override the embedding model name\n    :provider - :openai (default) or :voyageai",
        "doc": "```phel\n(embed texts & [{:keys [model provider], :or {provider :openai}}])\n```\nGenerates embeddings for one or more text strings.\n\n  Returns a vector of embedding vectors (one per input text).\n  Uses OpenAI's text-embedding-3-small by default.\n\n  Options:\n    :model    - Override the embedding model name\n    :provider - :openai (default) or :voyageai",
        "signatures": [
            "(embed texts & [{:keys [model provider], :or {provider :openai}}])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L664",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(embed texts & [{:keys [model provider], :or {provider :openai}}])\n```\nGenerates embeddings for one or more text strings.\n\n  Returns a vector of embedding vectors (one per input text).\n  Uses OpenAI's text-embedding-3-small by default.\n\n  Options:\n    :model    - Override the embedding model name\n    :provider - :openai (default) or :voyageai",
            "example": "(embed [\"hello world\"]) ; => [[0.123 -0.456 ...]]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[texts & __phel_4189]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/embed-one",
        "description": "Generates an embedding for a single text string.\n  Returns a single embedding vector.",
        "doc": "```phel\n(embed-one text & [opts])\n```\nGenerates an embedding for a single text string.\n  Returns a single embedding vector.",
        "signatures": [
            "(embed-one text & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L678",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(embed-one text & [opts])\n```\nGenerates an embedding for a single text string.\n  Returns a single embedding vector.",
            "example": "(embed-one \"hello world\") ; => [0.123 -0.456 ...]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[text & __phel_4204]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/extract",
        "description": "Extracts structured data from text using AI.\n\n  `schema` is a map of field names to type descriptions. Each key becomes\n  a field in the output, and each value tells the AI what to extract.\n\n  Returns a Phel map with the schema keys populated from the AI response.\n\n  Options:\n    :system     - Override the system prompt\n    :model      - Override the configured model\n    :max-tokens - Override the configured max tokens",
        "doc": "```phel\n(extract schema text & [opts])\n```\nExtracts structured data from text using AI.\n\n  `schema` is a map of field names to type descriptions. Each key becomes\n  a field in the output, and each value tells the AI what to extract.\n\n  Returns a Phel map with the schema keys populated from the AI response.\n\n  Options:\n    :system     - Override the system prompt\n    :model      - Override the configured model\n    :max-tokens - Override the configured max tokens",
        "signatures": [
            "(extract schema text & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L437",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(extract schema text & [opts])\n```\nExtracts structured data from text using AI.\n\n  `schema` is a map of field names to type descriptions. Each key becomes\n  a field in the output, and each value tells the AI what to extract.\n\n  Returns a Phel map with the schema keys populated from the AI response.\n\n  Options:\n    :system     - Override the system prompt\n    :model      - Override the configured model\n    :max-tokens - Override the configured max tokens",
            "example": "(extract {:name \"string\" :age \"integer\"} \"John is 30 years old\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[schema text & __phel_4084]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/extract-many",
        "description": "Extracts a list of structured items from text.\n\n  Similar to `extract`, but returns a vector of maps when the text\n  contains multiple items matching the schema.",
        "doc": "```phel\n(extract-many schema text & [opts])\n```\nExtracts a list of structured items from text.\n\n  Similar to `extract`, but returns a vector of maps when the text\n  contains multiple items matching the schema.",
        "signatures": [
            "(extract-many schema text & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L459",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(extract-many schema text & [opts])\n```\nExtracts a list of structured items from text.\n\n  Similar to `extract`, but returns a vector of maps when the text\n  contains multiple items matching the schema.",
            "example": "(extract-many {:name \"string\" :role \"string\"} \"Alice is CEO, Bob is CTO\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[schema text & __phel_4093]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/magnitude",
        "description": "Computes the magnitude (L2 norm) of a numeric vector.",
        "doc": "```phel\n(magnitude v)\n```\nComputes the magnitude (L2 norm) of a numeric vector.",
        "signatures": [
            "(magnitude v)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L620",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(magnitude v)\n```\nComputes the magnitude (L2 norm) of a numeric vector.",
            "example": "(magnitude [3 4]) ; => 5.0",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[v]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/nearest",
        "description": "Finds the k nearest items to a query embedding from an index.\n\n  `index` is a vector of {:text \"...\" :embedding [...]} maps.\n  Returns a vector of {:text, :embedding, :similarity} maps sorted\n  by descending similarity.",
        "doc": "```phel\n(nearest query-embedding index & [k])\n```\nFinds the k nearest items to a query embedding from an index.\n\n  `index` is a vector of {:text \"...\" :embedding [...]} maps.\n  Returns a vector of {:text, :embedding, :similarity} maps sorted\n  by descending similarity.",
        "signatures": [
            "(nearest query-embedding index & [k])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L690",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(nearest query-embedding index & [k])\n```\nFinds the k nearest items to a query embedding from an index.\n\n  `index` is a vector of {:text \"...\" :embedding [...]} maps.\n  Returns a vector of {:text, :embedding, :similarity} maps sorted\n  by descending similarity.",
            "example": "(nearest query-embedding index 5)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[query-embedding index & __phel_4213]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/run-tools",
        "description": "Drives a tool-calling loop: repeatedly sends `messages` with `tools`,\n  resolves any tool calls via `handlers`, and feeds the results back in\n  until the model returns a final text response (or `:max-turns` is hit).\n\n  - `messages`: initial conversation (vector of role/content maps)\n  - `tools`: tool definitions built with `tool`\n  - `handlers`: map of tool-name (string) -> fn taking the call's :input map\n                and returning a value (stringified into the tool result)\n  - `opts`: same keys as `chat-with-tools`, plus `:max-turns` (default 5)\n\n  Returns the assistant's final text. Throws if a tool name has no handler\n  or if `:max-turns` is reached without a final response. Anthropic-only;\n  OpenAI tool loops require a different message shape and are not handled.",
        "doc": "```phel\n(run-tools messages tools handlers & [opts])\n```\nDrives a tool-calling loop: repeatedly sends `messages` with `tools`,\n  resolves any tool calls via `handlers`, and feeds the results back in\n  until the model returns a final text response (or `:max-turns` is hit).\n\n  - `messages`: initial conversation (vector of role/content maps)\n  - `tools`: tool definitions built with `tool`\n  - `handlers`: map of tool-name (string) -> fn taking the call's :input map\n                and returning a value (stringified into the tool result)\n  - `opts`: same keys as `chat-with-tools`, plus `:max-turns` (default 5)\n\n  Returns the assistant's final text. Throws if a tool name has no handler\n  or if `:max-turns` is reached without a final response. Anthropic-only;\n  OpenAI tool loops require a different message shape and are not handled.",
        "signatures": [
            "(run-tools messages tools handlers & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L566",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(run-tools messages tools handlers & [opts])\n```\nDrives a tool-calling loop: repeatedly sends `messages` with `tools`,\n  resolves any tool calls via `handlers`, and feeds the results back in\n  until the model returns a final text response (or `:max-turns` is hit).\n\n  - `messages`: initial conversation (vector of role/content maps)\n  - `tools`: tool definitions built with `tool`\n  - `handlers`: map of tool-name (string) -> fn taking the call's :input map\n                and returning a value (stringified into the tool result)\n  - `opts`: same keys as `chat-with-tools`, plus `:max-turns` (default 5)\n\n  Returns the assistant's final text. Throws if a tool name has no handler\n  or if `:max-turns` is reached without a final response. Anthropic-only;\n  OpenAI tool loops require a different message shape and are not handled.",
            "example": "(run-tools [{:role \"user\" :content \"weather?\"}]\n                       [(tool \"get-weather\" \"...\" {:city \"string\"})]\n                       {\"get-weather\" (fn [args] \"72F\")})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": true,
            "arglists": "[messages tools handlers & __phel_4133]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/search",
        "description": "Semantic search: embeds a query and finds the k nearest matches\n  in a pre-built index.\n\n  Returns a vector of {:text, :embedding, :similarity} maps.",
        "doc": "```phel\n(search query index & [{:keys [k model provider], :or {k 5}}])\n```\nSemantic search: embeds a query and finds the k nearest matches\n  in a pre-built index.\n\n  Returns a vector of {:text, :embedding, :similarity} maps.",
        "signatures": [
            "(search query index & [{:keys [k model provider], :or {k 5}}])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L721",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(search query index & [{:keys [k model provider], :or {k 5}}])\n```\nSemantic search: embeds a query and finds the k nearest matches\n  in a pre-built index.\n\n  Returns a vector of {:text, :embedding, :similarity} maps.",
            "example": "(search \"greeting\" my-index 3)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[query index & __phel_4238]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/tool",
        "description": "Creates a tool definition map for use with `chat-with-tools`.\n\n  `tool-name` is a string identifier for the tool.\n  `description` describes what the tool does.\n  `input-schema` is a map of parameter names to JSON Schema type maps.\n\n  The returned map is provider-agnostic; `chat-with-tools` converts it to\n  the provider's native format.",
        "doc": "```phel\n(tool tool-name description input-schema)\n```\nCreates a tool definition map for use with `chat-with-tools`.\n\n  `tool-name` is a string identifier for the tool.\n  `description` describes what the tool does.\n  `input-schema` is a map of parameter names to JSON Schema type maps.\n\n  The returned map is provider-agnostic; `chat-with-tools` converts it to\n  the provider's native format.",
        "signatures": [
            "(tool tool-name description input-schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L478",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(tool tool-name description input-schema)\n```\nCreates a tool definition map for use with `chat-with-tools`.\n\n  `tool-name` is a string identifier for the tool.\n  `description` describes what the tool does.\n  `input-schema` is a map of parameter names to JSON Schema type maps.\n\n  The returned map is provider-agnostic; `chat-with-tools` converts it to\n  the provider's native format.",
            "example": "(tool \"get-weather\" \"Gets weather for a city\" {:location {:type \"string\"}})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[tool-name description input-schema]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/tool-calls",
        "description": "Extracts tool call requests from an AI response.\n\n  Accepts either a raw provider response body or a map produced by\n  `chat-with-tools`. Returns a vector of {:name :id :input} maps.",
        "doc": "```phel\n(tool-calls response)\n```\nExtracts tool call requests from an AI response.\n\n  Accepts either a raw provider response body or a map produced by\n  `chat-with-tools`. Returns a vector of {:name :id :input} maps.",
        "signatures": [
            "(tool-calls response)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L525",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(tool-calls response)\n```\nExtracts tool call requests from an AI response.\n\n  Accepts either a raw provider response body or a map produced by\n  `chat-with-tools`. Returns a vector of {:name :id :input} maps.",
            "example": "(tool-calls response)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[response]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/tool-result",
        "description": "Builds a tool-result message for the given provider.\n\n  `call-id` is the tool call id returned by the model.\n  `result` is the tool's output as a string (or value that will be stringified).\n\n  Optional `opts` can set :provider (defaults to current config).",
        "doc": "```phel\n(tool-result call-id result & [opts])\n```\nBuilds a tool-result message for the given provider.\n\n  `call-id` is the tool call id returned by the model.\n  `result` is the tool's output as a string (or value that will be stringified).\n\n  Optional `opts` can set :provider (defaults to current config).",
        "signatures": [
            "(tool-result call-id result & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L538",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(tool-result call-id result & [opts])\n```\nBuilds a tool-result message for the given provider.\n\n  `call-id` is the tool call id returned by the model.\n  `result` is the tool's output as a string (or value that will be stringified).\n\n  Optional `opts` can set :provider (defaults to current config).",
            "example": "(tool-result \"call_abc\" \"72F sunny\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[call-id result & __phel_4119]"
        }
    },
    {
        "namespace": "ai",
        "name": "ai/with-config",
        "description": "Temporarily merges `opts` into the global config for the duration of `body`,\n  then restores the previous config. Safer than `configure` for embedded use,\n  since it won't leave global state mutated when `body` throws.",
        "doc": "```phel\n(with-config opts & body)\n```\nTemporarily merges `opts` into the global config for the duration of `body`,\n  then restores the previous config. Safer than `configure` for embedded use,\n  since it won't leave global state mutated when `body` throws.",
        "signatures": [
            "(with-config opts & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/ai.phel#L46",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(with-config opts & body)\n```\nTemporarily merges `opts` into the global config for the duration of `body`,\n  then restores the previous config. Safer than `configure` for embedded use,\n  since it won't leave global state mutated when `body` throws.",
            "example": "(with-config {:provider :openai :model \"gpt-4o\"} (complete \"hi\"))",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[opts & body]"
        }
    },
    {
        "namespace": "async",
        "name": "async/delay",
        "description": "Suspends execution for `seconds`. Accepts any number (int, float, or\n  `Ratio`); sub-second precision such as `0.05` is supported.\n\n  At the top level this behaves like `php/sleep` / `php/usleep`: it\n  blocks the script for the given duration. Inside an `async`/`future`\n  body (or any AMPHP fiber context) it suspends the *fiber*, not the\n  whole process, so other concurrent fibers keep running and the\n  delay is cancellable via `future-cancel`.\n\n  `phel.async/delay` is **not** the Clojure `clojure.core/delay`. The\n  Clojure form returns a lazy thunk that caches the result of evaluating\n  `body` on first `deref`; Phel's version is a sleep primitive. They are\n  unrelated. Reach for `phel.async/delay` when you want to throttle, time\n  out, or compose with `future` / `pmap`; reach for `php/sleep` when you\n  just want a blocking pause and don't care about fiber semantics.",
        "doc": "```phel\n(delay seconds)\n```\nSuspends execution for `seconds`. Accepts any number (int, float, or\n  `Ratio`); sub-second precision such as `0.05` is supported.\n\n  At the top level this behaves like `php/sleep` / `php/usleep`: it\n  blocks the script for the given duration. Inside an `async`/`future`\n  body (or any AMPHP fiber context) it suspends the *fiber*, not the\n  whole process, so other concurrent fibers keep running and the\n  delay is cancellable via `future-cancel`.\n\n  `phel.async/delay` is **not** the Clojure `clojure.core/delay`. The\n  Clojure form returns a lazy thunk that caches the result of evaluating\n  `body` on first `deref`; Phel's version is a sleep primitive. They are\n  unrelated. Reach for `phel.async/delay` when you want to throttle, time\n  out, or compose with `future` / `pmap`; reach for `php/sleep` when you\n  just want a blocking pause and don't care about fiber semantics.",
        "signatures": [
            "(delay seconds)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/async.phel#L19",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(delay seconds)\n```\nSuspends execution for `seconds`. Accepts any number (int, float, or\n  `Ratio`); sub-second precision such as `0.05` is supported.\n\n  At the top level this behaves like `php/sleep` / `php/usleep`: it\n  blocks the script for the given duration. Inside an `async`/`future`\n  body (or any AMPHP fiber context) it suspends the *fiber*, not the\n  whole process, so other concurrent fibers keep running and the\n  delay is cancellable via `future-cancel`.\n\n  `phel.async/delay` is **not** the Clojure `clojure.core/delay`. The\n  Clojure form returns a lazy thunk that caches the result of evaluating\n  `body` on first `deref`; Phel's version is a sleep primitive. They are\n  unrelated. Reach for `phel.async/delay` when you want to throttle, time\n  out, or compose with `future` / `pmap`; reach for `php/sleep` when you\n  just want a blocking pause and don't care about fiber semantics.",
            "example": "(delay 0.5) ; suspends current fiber for 500ms\n  (async (delay 1.0) :done) ; => future that resolves after 1s\n  (delay (/ 1 1000)) ; ratio collapses to a float",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[seconds]"
        }
    },
    {
        "namespace": "base64",
        "name": "base64/decode",
        "description": "Decodes a Base64 string. Optional `strict?` flag validates characters.",
        "doc": "```phel\n(decode s & [strict?])\n```\nDecodes a Base64 string. Optional `strict?` flag validates characters.",
        "signatures": [
            "(decode s & [strict?])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/base64.phel#L10",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(decode s & [strict?])\n```\nDecodes a Base64 string. Optional `strict?` flag validates characters.",
            "example": "(decode \"SGVsbG8=\") ; => \"Hello\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[s & __phel_2549]"
        }
    },
    {
        "namespace": "base64",
        "name": "base64/decode-url",
        "description": "Decodes a URL-safe Base64 string. Adds padding automatically.",
        "doc": "```phel\n(decode-url s & [strict?])\n```\nDecodes a URL-safe Base64 string. Adds padding automatically.",
        "signatures": [
            "(decode-url s & [strict?])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/base64.phel#L25",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(decode-url s & [strict?])\n```\nDecodes a URL-safe Base64 string. Adds padding automatically.",
            "example": "(decode-url \"SGVsbG8\") ; => \"Hello\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[s & __phel_2559]"
        }
    },
    {
        "namespace": "base64",
        "name": "base64/encode",
        "description": "Encodes a string to Base64.",
        "doc": "```phel\n(encode s)\n```\nEncodes a string to Base64.",
        "signatures": [
            "(encode s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/base64.phel#L4",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(encode s)\n```\nEncodes a string to Base64.",
            "example": "(encode \"Hello\") ; => \"SGVsbG8=\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "base64",
        "name": "base64/encode-url",
        "description": "Encodes a string to URL-safe Base64 (no padding).",
        "doc": "```phel\n(encode-url s)\n```\nEncodes a string to URL-safe Base64 (no padding).",
        "signatures": [
            "(encode-url s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/base64.phel#L16",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(encode-url s)\n```\nEncodes a string to URL-safe Base64 (no padding).",
            "example": "(encode-url \"Hello\") ; => \"SGVsbG8\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/application",
        "description": "Build a Symfony `Application`.\n\n  Single-arity (preferred):\n    (application {:name \"mytool\"\n                  :version \"1.0.0\"\n                  :commands [...]\n                  :default  \"greet\"\n                  :auto-exit? false\n                  :before    on-before-fn   ; receives ConsoleCommandEvent\n                  :after     on-after-fn    ; receives ConsoleTerminateEvent\n                  :on-error  on-error-fn    ; receives ConsoleErrorEvent\n                  :on-signal {:sigint cleanup-fn :sigterm cleanup-fn}})\n\n  Two-arity convenience:\n    (application \"mytool\" [command-specs...])",
        "doc": "```phel\n(application name-or-spec & [commands])\n```\nBuild a Symfony `Application`.\n\n  Single-arity (preferred):\n    (application {:name \"mytool\"\n                  :version \"1.0.0\"\n                  :commands [...]\n                  :default  \"greet\"\n                  :auto-exit? false\n                  :before    on-before-fn   ; receives ConsoleCommandEvent\n                  :after     on-after-fn    ; receives ConsoleTerminateEvent\n                  :on-error  on-error-fn    ; receives ConsoleErrorEvent\n                  :on-signal {:sigint cleanup-fn :sigterm cleanup-fn}})\n\n  Two-arity convenience:\n    (application \"mytool\" [command-specs...])",
        "signatures": [
            "(application name-or-spec & [commands])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L403",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(application name-or-spec & [commands])\n```\nBuild a Symfony `Application`.\n\n  Single-arity (preferred):\n    (application {:name \"mytool\"\n                  :version \"1.0.0\"\n                  :commands [...]\n                  :default  \"greet\"\n                  :auto-exit? false\n                  :before    on-before-fn   ; receives ConsoleCommandEvent\n                  :after     on-after-fn    ; receives ConsoleTerminateEvent\n                  :on-error  on-error-fn    ; receives ConsoleErrorEvent\n                  :on-signal {:sigint cleanup-fn :sigterm cleanup-fn}})\n\n  Two-arity convenience:\n    (application \"mytool\" [command-specs...])",
            "see-also": {},
            "example": "(application {:name \"mytool\" :commands [spec]})",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[name-or-spec & __phel_2789]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/arg",
        "description": "Read (and coerce) an argument value by name.",
        "doc": "```phel\n(arg ctx name)\n```\nRead (and coerce) an argument value by name.",
        "signatures": [
            "(arg ctx name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L102",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(arg ctx name)\n```\nRead (and coerce) an argument value by name.",
            "see-also": {},
            "example": "(arg ctx \"port\") ; coerced when spec has :coerce :int",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx name]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/argv",
        "description": "Build an `ArgvInput` from a vector of string tokens. Positional args\n  and `--flag=value` are parsed just like a real shell command line.",
        "doc": "```phel\n(argv args)\n```\nBuild an `ArgvInput` from a vector of string tokens. Positional args\n  and `--flag=value` are parsed just like a real shell command line.",
        "signatures": [
            "(argv args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L458",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(argv args)\n```\nBuild an `ArgvInput` from a vector of string tokens. Positional args\n  and `--flag=value` are parsed just like a real shell command line.",
            "see-also": {},
            "example": "(argv [\"greet\" \"--loud\" \"alice\"])",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[args]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/argv-with-stdin",
        "description": "Like `argv` but also wires a STDIN stream so `ask`/`confirm`/`choice`\n  prompts can be tested with canned answers.",
        "doc": "```phel\n(argv-with-stdin args stdin-string)\n```\nLike `argv` but also wires a STDIN stream so `ask`/`confirm`/`choice`\n  prompts can be tested with canned answers.",
        "signatures": [
            "(argv-with-stdin args stdin-string)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L466",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(argv-with-stdin args stdin-string)\n```\nLike `argv` but also wires a STDIN stream so `ask`/`confirm`/`choice`\n  prompts can be tested with canned answers.",
            "example": "(argv-with-stdin [\"greet\"] \"alice\\n\")",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[args stdin-string]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/ask",
        "description": "Free-text prompt. `default` optional.",
        "doc": "```phel\n(ask ctx question & [default])\n```\nFree-text prompt. `default` optional.",
        "signatures": [
            "(ask ctx question & [default])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L167",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ask ctx question & [default])\n```\nFree-text prompt. `default` optional.",
            "see-also": {},
            "example": "(ask ctx \"Your name?\" \"alice\")",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[ctx question & __phel_2622]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/ask-hidden",
        "description": "Prompt without echoing (passwords).",
        "doc": "```phel\n(ask-hidden ctx question)\n```\nPrompt without echoing (passwords).",
        "signatures": [
            "(ask-hidden ctx question)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L174",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ask-hidden ctx question)\n```\nPrompt without echoing (passwords).",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx question]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/buffered-output",
        "description": "Build a `BufferedOutput` that captures writes into a string.",
        "doc": "```phel\n(buffered-output)\n```\nBuild a `BufferedOutput` that captures writes into a string.",
        "signatures": [
            "(buffered-output)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L478",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(buffered-output)\n```\nBuild a `BufferedOutput` that captures writes into a string.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/caution",
        "description": "Boxed caution message.",
        "doc": "```phel\n(caution ctx text)\n```\nBoxed caution message.",
        "signatures": [
            "(caution ctx text)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L164",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(caution ctx text)\n```\nBoxed caution message.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx text]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/choice",
        "description": "Single-choice prompt over a vector of options.",
        "doc": "```phel\n(choice ctx question choices & [default])\n```\nSingle-choice prompt over a vector of options.",
        "signatures": [
            "(choice ctx question choices & [default])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L186",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(choice ctx question choices & [default])\n```\nSingle-choice prompt over a vector of options.",
            "see-also": {},
            "example": "(choice ctx \"Env?\" [\"dev\" \"stg\" \"prod\"] \"dev\")",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": true,
            "arglists": "[ctx question choices & __phel_2644]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/command",
        "description": "Build a Symfony `Command` from a Phel spec map.\n\n  Spec keys:\n    :name     command name, e.g. \"build\" or \"app:build\"     (REQUIRED)\n    :doc      short description (shown in `list`)\n    :help     long help text (shown in `<cmd> --help`)\n    :aliases  vector of alternate names\n    :hidden?  true = hide from `list`\n    :args     vector of arg specs `{:name :mode :doc :default :coerce :complete}`\n    :opts     vector of option specs `{:name :short :mode :doc :default :coerce :complete}`\n    :run      handler `(fn [ctx] ...)` \u2014 ctx = {:input :output \u2026};\n              returns nil/0 for success, int for exit code.\n              Uncaught `Throwable` rendered as `<error>`, mapped to exit 1.\n\n  Modes     :required :optional :array (:args) + :none :negatable (:opts)\n  Coerce    :int :float :bool :keyword :edn\n  Complete  fn `(CompletionInput -> vector<string>)` for shell completion.",
        "doc": "```phel\n(command spec)\n```\nBuild a Symfony `Command` from a Phel spec map.\n\n  Spec keys:\n    :name     command name, e.g. \"build\" or \"app:build\"     (REQUIRED)\n    :doc      short description (shown in `list`)\n    :help     long help text (shown in `<cmd> --help`)\n    :aliases  vector of alternate names\n    :hidden?  true = hide from `list`\n    :args     vector of arg specs `{:name :mode :doc :default :coerce :complete}`\n    :opts     vector of option specs `{:name :short :mode :doc :default :coerce :complete}`\n    :run      handler `(fn [ctx] ...)` \u2014 ctx = {:input :output \u2026};\n              returns nil/0 for success, int for exit code.\n              Uncaught `Throwable` rendered as `<error>`, mapped to exit 1.\n\n  Modes     :required :optional :array (:args) + :none :negatable (:opts)\n  Coerce    :int :float :bool :keyword :edn\n  Complete  fn `(CompletionInput -> vector<string>)` for shell completion.",
        "signatures": [
            "(command spec)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L340",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(command spec)\n```\nBuild a Symfony `Command` from a Phel spec map.\n\n  Spec keys:\n    :name     command name, e.g. \"build\" or \"app:build\"     (REQUIRED)\n    :doc      short description (shown in `list`)\n    :help     long help text (shown in `<cmd> --help`)\n    :aliases  vector of alternate names\n    :hidden?  true = hide from `list`\n    :args     vector of arg specs `{:name :mode :doc :default :coerce :complete}`\n    :opts     vector of option specs `{:name :short :mode :doc :default :coerce :complete}`\n    :run      handler `(fn [ctx] ...)` \u2014 ctx = {:input :output \u2026};\n              returns nil/0 for success, int for exit code.\n              Uncaught `Throwable` rendered as `<error>`, mapped to exit 1.\n\n  Modes     :required :optional :array (:args) + :none :negatable (:opts)\n  Coerce    :int :float :bool :keyword :edn\n  Complete  fn `(CompletionInput -> vector<string>)` for shell completion.",
            "see-also": {},
            "example": "(command {:name \"greet\" :run (fn [ctx] (success ctx \"Hi!\"))})",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[spec]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/comment-line",
        "description": "Yellow comment line.",
        "doc": "```phel\n(comment-line ctx text)\n```\nYellow comment line.",
        "signatures": [
            "(comment-line ctx text)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L143",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(comment-line ctx text)\n```\nYellow comment line.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx text]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/confirm",
        "description": "Yes/no prompt. `default?` defaults to true.",
        "doc": "```phel\n(confirm ctx question & [default?])\n```\nYes/no prompt. `default?` defaults to true.",
        "signatures": [
            "(confirm ctx question & [default?])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L179",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(confirm ctx question & [default?])\n```\nYes/no prompt. `default?` defaults to true.",
            "see-also": {},
            "example": "(when (confirm ctx \"Deploy?\") ...)",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[ctx question & __phel_2634]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/debug",
        "description": "Write only when -vvv (debug).",
        "doc": "```phel\n(debug ctx text)\n```\nWrite only when -vvv (debug).",
        "signatures": [
            "(debug ctx text)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L137",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(debug ctx text)\n```\nWrite only when -vvv (debug).",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx text]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/error",
        "description": "Red error line.",
        "doc": "```phel\n(error ctx text)\n```\nRed error line.",
        "signatures": [
            "(error ctx text)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L144",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(error ctx text)\n```\nRed error line.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx text]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/info",
        "description": "Green info line.",
        "doc": "```phel\n(info ctx text)\n```\nGreen info line.",
        "signatures": [
            "(info ctx text)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L142",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(info ctx text)\n```\nGreen info line.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx text]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/info-v",
        "description": "Write only when -v or higher.",
        "doc": "```phel\n(info-v ctx text)\n```\nWrite only when -v or higher.",
        "signatures": [
            "(info-v ctx text)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L135",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(info-v ctx text)\n```\nWrite only when -v or higher.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx text]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/info-vv",
        "description": "Write only when -vv or higher.",
        "doc": "```phel\n(info-vv ctx text)\n```\nWrite only when -vv or higher.",
        "signatures": [
            "(info-vv ctx text)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L136",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(info-vv ctx text)\n```\nWrite only when -vv or higher.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx text]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/listing",
        "description": "Bulleted list of items.",
        "doc": "```phel\n(listing ctx items)\n```\nBulleted list of items.",
        "signatures": [
            "(listing ctx items)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L165",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(listing ctx items)\n```\nBulleted list of items.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx items]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/note",
        "description": "Boxed note.",
        "doc": "```phel\n(note ctx text)\n```\nBoxed note.",
        "signatures": [
            "(note ctx text)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L163",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(note ctx text)\n```\nBoxed note.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx text]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/null-output",
        "description": "Build a `NullOutput` that discards writes.",
        "doc": "```phel\n(null-output)\n```\nBuild a `NullOutput` that discards writes.",
        "signatures": [
            "(null-output)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L482",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(null-output)\n```\nBuild a `NullOutput` that discards writes.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/opt",
        "description": "Read (and coerce) an option value by name.",
        "doc": "```phel\n(opt ctx name)\n```\nRead (and coerce) an option value by name.",
        "signatures": [
            "(opt ctx name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L110",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(opt ctx name)\n```\nRead (and coerce) an option value by name.",
            "see-also": {},
            "example": "(opt ctx \"verbose\") ; true when --verbose present and :mode :none",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx name]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/output->string",
        "description": "Drain a `BufferedOutput` into a string.",
        "doc": "```phel\n(output->string output)\n```\nDrain a `BufferedOutput` into a string.",
        "signatures": [
            "(output->string output)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L486",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(output->string output)\n```\nDrain a `BufferedOutput` into a string.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[output]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/output-contains?",
        "description": "Test helper. Accepts a `BufferedOutput`, a string, or a map `{:out s}`.",
        "doc": "```phel\n(output-contains? output-or-result substr)\n```\nTest helper. Accepts a `BufferedOutput`, a string, or a map `{:out s}`.",
        "signatures": [
            "(output-contains? output-or-result substr)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L491",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(output-contains? output-or-result substr)\n```\nTest helper. Accepts a `BufferedOutput`, a string, or a map `{:out s}`.",
            "example": "(is (output-contains? res \"hello\"))",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[output-or-result substr]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/progress-advance",
        "description": "Advance by n.",
        "doc": "```phel\n(progress-advance bar & [n])\n```\nAdvance by n.",
        "signatures": [
            "(progress-advance bar & [n])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L251",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(progress-advance bar & [n])\n```\nAdvance by n.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[bar & __phel_2710]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/progress-bar",
        "description": "Create a `ProgressBar` bound to the context output.\n\n  Options:\n    `:max`    total steps (0 = indeterminate)\n    `:format` preset (:normal :verbose :very-verbose :debug :minimal) or custom string",
        "doc": "```phel\n(progress-bar ctx & [opts])\n```\nCreate a `ProgressBar` bound to the context output.\n\n  Options:\n    `:max`    total steps (0 = indeterminate)\n    `:format` preset (:normal :verbose :very-verbose :debug :minimal) or custom string",
        "signatures": [
            "(progress-bar ctx & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L236",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(progress-bar ctx & [opts])\n```\nCreate a `ProgressBar` bound to the context output.\n\n  Options:\n    `:max`    total steps (0 = indeterminate)\n    `:format` preset (:normal :verbose :very-verbose :debug :minimal) or custom string",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[ctx & __phel_2687]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/progress-finish",
        "description": "Finish + newline.",
        "doc": "```phel\n(progress-finish bar)\n```\nFinish + newline.",
        "signatures": [
            "(progress-finish bar)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L252",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(progress-finish bar)\n```\nFinish + newline.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[bar]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/progress-start",
        "description": "Start the bar.",
        "doc": "```phel\n(progress-start bar)\n```\nStart the bar.",
        "signatures": [
            "(progress-start bar)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L250",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(progress-start bar)\n```\nStart the bar.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[bar]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/run",
        "description": "Run an Application and return its exit code.\n\n  `(run app)`                reads $argv from process;\n  `(run app input)`          uses supplied `InputInterface`;\n  `(run app input output)`   also pipes output (for tests).",
        "doc": "```phel\n(run app & [input output])\n```\nRun an Application and return its exit code.\n\n  `(run app)`                reads $argv from process;\n  `(run app input)`          uses supplied `InputInterface`;\n  `(run app input output)`   also pipes output (for tests).",
        "signatures": [
            "(run app & [input output])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L440",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(run app & [input output])\n```\nRun an Application and return its exit code.\n\n  `(run app)`                reads $argv from process;\n  `(run app input)`          uses supplied `InputInterface`;\n  `(run app input output)`   also pipes output (for tests).",
            "see-also": {},
            "example": "(run (application \"t\" [spec]))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[app & __phel_2818]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/run-with-progress",
        "description": "Iterate `coll` and invoke `(step-fn item bar)` for each, handling\n  start / advance / finish automatically.",
        "doc": "```phel\n(run-with-progress ctx coll step-fn & [opts])\n```\nIterate `coll` and invoke `(step-fn item bar)` for each, handling\n  start / advance / finish automatically.",
        "signatures": [
            "(run-with-progress ctx coll step-fn & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L254",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(run-with-progress ctx coll step-fn & [opts])\n```\nIterate `coll` and invoke `(step-fn item bar)` for each, handling\n  start / advance / finish automatically.",
            "example": "(run-with-progress ctx files (fn [f _] (process f)))",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": true,
            "arglists": "[ctx coll step-fn & __phel_2724]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/section",
        "description": "Sub-heading.",
        "doc": "```phel\n(section ctx text)\n```\nSub-heading.",
        "signatures": [
            "(section ctx text)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L160",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(section ctx text)\n```\nSub-heading.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx text]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/stdin-lines",
        "description": "Return a vector of lines from STDIN (trailing `\\r\\n` stripped).\n  Useful for `cat data.txt | mytool`.",
        "doc": "```phel\n(stdin-lines)\n```\nReturn a vector of lines from STDIN (trailing `\\r\\n` stripped).\n  Useful for `cat data.txt | mytool`.",
        "signatures": [
            "(stdin-lines)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L270",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(stdin-lines)\n```\nReturn a vector of lines from STDIN (trailing `\\r\\n` stripped).\n  Useful for `cat data.txt | mytool`.",
            "example": "(for [l :in (stdin-lines) :when (not= l \"\")] l)",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/style",
        "description": "Return a cached `SymfonyStyle` bound to the context so successive\n  `ask`/`confirm`/progress calls share state.",
        "doc": "```phel\n(style ctx)\n```\nReturn a cached `SymfonyStyle` bound to the context so successive\n  `ask`/`confirm`/progress calls share state.",
        "signatures": [
            "(style ctx)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L150",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(style ctx)\n```\nReturn a cached `SymfonyStyle` bound to the context so successive\n  `ask`/`confirm`/progress calls share state.",
            "see-also": {},
            "example": "(-> (style ctx) (php/-> (success \"Done!\")))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ctx]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/success",
        "description": "Boxed success message.",
        "doc": "```phel\n(success ctx text)\n```\nBoxed success message.",
        "signatures": [
            "(success ctx text)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L161",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(success ctx text)\n```\nBoxed success message.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx text]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/table",
        "description": "Render an ASCII table.\n\n  Options:\n    `:style`  one of :default :borderless :compact :symfony :box :box-double :markdown\n    `:widths` vector of column widths",
        "doc": "```phel\n(table ctx headers rows & [opts])\n```\nRender an ASCII table.\n\n  Options:\n    `:style`  one of :default :borderless :compact :symfony :box :box-double :markdown\n    `:widths` vector of column widths",
        "signatures": [
            "(table ctx headers rows & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L206",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(table ctx headers rows & [opts])\n```\nRender an ASCII table.\n\n  Options:\n    `:style`  one of :default :borderless :compact :symfony :box :box-double :markdown\n    `:widths` vector of column widths",
            "see-also": {},
            "example": "(table ctx [\"id\" \"name\"] [[1 \"alice\"] [2 \"bob\"]])",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": true,
            "arglists": "[ctx headers rows & __phel_2654]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/title",
        "description": "Heavy heading.",
        "doc": "```phel\n(title ctx text)\n```\nHeavy heading.",
        "signatures": [
            "(title ctx text)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L159",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(title ctx text)\n```\nHeavy heading.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx text]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/warning",
        "description": "Boxed warning message.",
        "doc": "```phel\n(warning ctx text)\n```\nBoxed warning message.",
        "signatures": [
            "(warning ctx text)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L162",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(warning ctx text)\n```\nBoxed warning message.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx text]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/write",
        "description": "Write text without trailing newline.",
        "doc": "```phel\n(write ctx text)\n```\nWrite text without trailing newline.",
        "signatures": [
            "(write ctx text)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L125",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(write ctx text)\n```\nWrite text without trailing newline.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx text]"
        }
    },
    {
        "namespace": "cli",
        "name": "cli/writeln",
        "description": "Write a line.",
        "doc": "```phel\n(writeln ctx text)\n```\nWrite a line.",
        "signatures": [
            "(writeln ctx text)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/cli.phel#L118",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(writeln ctx text)\n```\nWrite a line.",
            "see-also": {},
            "example": "(writeln ctx \"ready\")",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ctx text]"
        }
    },
    {
        "namespace": "core",
        "name": "%",
        "description": "Alias for `rem`. Returns the truncated remainder of `dividend` /\n  `divisor`. Result has the same sign as `dividend`.",
        "doc": "```phel\n(% dividend divisor)\n```\nAlias for `rem`. Returns the truncated remainder of `dividend` /\n  `divisor`. Result has the same sign as `dividend`.",
        "signatures": [
            "(% dividend divisor)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L180",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(% dividend divisor)\n```\nAlias for `rem`. Returns the truncated remainder of `dividend` /\n  `divisor`. Result has the same sign as `dividend`.",
            "example": "(% 11 2) ; => 1",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[dividend divisor]"
        }
    },
    {
        "namespace": "core",
        "name": "*",
        "description": "Returns the product of all elements in `xs`. All elements in `xs` must be\nnumbers. If `xs` is empty, return 1.",
        "doc": "```phel\n(* & xs)\n```\nReturns the product of all elements in `xs`. All elements in `xs` must be\nnumbers. If `xs` is empty, return 1.",
        "signatures": [
            "(* & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L125",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(* & xs)\n```\nReturns the product of all elements in `xs`. All elements in `xs` must be\nnumbers. If `xs` is empty, return 1.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "*'",
        "description": "Auto-promoting variant of `*`. Integer results are returned as\n  `BigInt`; floats and rationals pass through unchanged.",
        "doc": "```phel\n(*' & xs)\n```\nAuto-promoting variant of `*`. Integer results are returned as\n  `BigInt`; floats and rationals pass through unchanged.",
        "signatures": [
            "(*' & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L231",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(*' & xs)\n```\nAuto-promoting variant of `*`. Integer results are returned as\n  `BigInt`; floats and rationals pass through unchanged.",
            "example": "(*' 2 3) ; => 6N",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "**",
        "description": "Return `a` to the power of `x`.",
        "doc": "```phel\n(** a x)\n```\nReturn `a` to the power of `x`.",
        "signatures": [
            "(** a x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L188",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(** a x)\n```\nReturn `a` to the power of `x`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[a x]"
        }
    },
    {
        "namespace": "core",
        "name": "*assert*",
        "description": "Controls whether `assert` expands to a runtime check. When logical\n  false at macroexpansion time, `assert` expands to nil and performs no\n  runtime check, matching Clojure's compile-time `*assert*` semantics.\n  Defaults to `true`. To disable globally, set the core binding before\n  compilation via PHP: `\\Phel::addDefinition(\"phel\\\\core\", \"*assert*\", false)`.",
        "doc": "Controls whether `assert` expands to a runtime check. When logical\n  false at macroexpansion time, `assert` expands to nil and performs no\n  runtime check, matching Clojure's compile-time `*assert*` semantics.\n  Defaults to `true`. To disable globally, set the core binding before\n  compilation via PHP: `\\Phel::addDefinition(\"phel\\\\core\", \"*assert*\", false)`.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core.phel#L21",
        "docUrl": "",
        "meta": {
            "doc": "Controls whether `assert` expands to a runtime check. When logical\n  false at macroexpansion time, `assert` expands to nil and performs no\n  runtime check, matching Clojure's compile-time `*assert*` semantics.\n  Defaults to `true`. To disable globally, set the core binding before\n  compilation via PHP: `\\Phel::addDefinition(\"phel\\\\core\", \"*assert*\", false)`.",
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "core",
        "name": "*build-mode*",
        "description": "",
        "doc": "",
        "signatures": [],
        "githubUrl": "",
        "docUrl": "",
        "meta": []
    },
    {
        "namespace": "core",
        "name": "*file*",
        "description": "Returns the path of the current source file.",
        "doc": "```phel\n*file*\n```\nReturns the path of the current source file.",
        "signatures": [
            "*file*"
        ],
        "githubUrl": "",
        "docUrl": "",
        "meta": {
            "example": "(println *file*) ; => \"/path/to/current/file.phel\""
        }
    },
    {
        "namespace": "core",
        "name": "*ns*",
        "description": "Returns the namespace in the current scope.",
        "doc": "```phel\n*ns*\n```\nReturns the namespace in the current scope.",
        "signatures": [
            "*ns*"
        ],
        "githubUrl": "",
        "docUrl": "",
        "meta": {
            "example": "(println *ns*) ; => \"my-app.core\""
        }
    },
    {
        "namespace": "core",
        "name": "*program*",
        "description": "The script path or namespace being executed.",
        "doc": "The script path or namespace being executed.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core.phel#L199",
        "docUrl": "",
        "meta": {
            "doc": "The script path or namespace being executed.",
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "core",
        "name": "+",
        "description": "Returns the sum of all elements in `xs`. All elements `xs` must be numbers.\n  If `xs` is empty, return 0.",
        "doc": "```phel\n(+ & xs)\n```\nReturns the sum of all elements in `xs`. All elements `xs` must be numbers.\n  If `xs` is empty, return 0.",
        "signatures": [
            "(+ & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L103",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(+ & xs)\n```\nReturns the sum of all elements in `xs`. All elements `xs` must be numbers.\n  If `xs` is empty, return 0.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "+'",
        "description": "Auto-promoting variant of `+`. Integer results are returned as\n  `BigInt` so callers get explicit promotion semantics; floats and\n  rationals pass through unchanged. Equivalent to `+` for overflow\n  protection (Phel's `+` already auto-promotes on overflow), kept for\n  `.cljc` interop.",
        "doc": "```phel\n(+' & xs)\n```\nAuto-promoting variant of `+`. Integer results are returned as\n  `BigInt` so callers get explicit promotion semantics; floats and\n  rationals pass through unchanged. Equivalent to `+` for overflow\n  protection (Phel's `+` already auto-promotes on overflow), kept for\n  `.cljc` interop.",
        "signatures": [
            "(+' & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L212",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(+' & xs)\n```\nAuto-promoting variant of `+`. Integer results are returned as\n  `BigInt` so callers get explicit promotion semantics; floats and\n  rationals pass through unchanged. Equivalent to `+` for overflow\n  protection (Phel's `+` already auto-promotes on overflow), kept for\n  `.cljc` interop.",
            "example": "(+' 1 2) ; => 3N",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "-",
        "description": "Returns the difference of all elements in `xs`. If `xs` is empty, return 0. If `xs`\n  has one element, return the negative value of that element.",
        "doc": "```phel\n(- & xs)\n```\nReturns the difference of all elements in `xs`. If `xs` is empty, return 0. If `xs`\n  has one element, return the negative value of that element.",
        "signatures": [
            "(- & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L114",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(- & xs)\n```\nReturns the difference of all elements in `xs`. If `xs` is empty, return 0. If `xs`\n  has one element, return the negative value of that element.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "-'",
        "description": "Auto-promoting variant of `-`. Integer results are returned as\n  `BigInt`; floats and rationals pass through unchanged.",
        "doc": "```phel\n(-' & xs)\n```\nAuto-promoting variant of `-`. Integer results are returned as\n  `BigInt`; floats and rationals pass through unchanged.",
        "signatures": [
            "(-' & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L223",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(-' & xs)\n```\nAuto-promoting variant of `-`. Integer results are returned as\n  `BigInt`; floats and rationals pass through unchanged.",
            "example": "(-' 5 2) ; => 3N",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "->",
        "description": "Threads the expr through the forms. Inserts `x` as the second item\n  in the first form, making a list of it if it is not a list already.\n  If there are more forms, insert the first form as the second item in\n  the second form, etc.",
        "doc": "```phel\n(-> x & forms)\n```\nThreads the expr through the forms. Inserts `x` as the second item\n  in the first form, making a list of it if it is not a list already.\n  If there are more forms, insert the first form as the second item in\n  the second form, etc.",
        "signatures": [
            "(-> x & forms)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L184",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(-> x & forms)\n```\nThreads the expr through the forms. Inserts `x` as the second item\n  in the first form, making a list of it if it is not a list already.\n  If there are more forms, insert the first form as the second item in\n  the second form, etc.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[x & forms]"
        }
    },
    {
        "namespace": "core",
        "name": "->>",
        "description": "Threads the expr through the forms. Inserts `x` as the\n  last item in the first form, making a list of it if it is not a\n  list already. If there are more forms, insert the first form as the\n  last item in the second form, etc.",
        "doc": "```phel\n(->> x & forms)\n```\nThreads the expr through the forms. Inserts `x` as the\n  last item in the first form, making a list of it if it is not a\n  list already. If there are more forms, insert the first form as the\n  last item in the second form, etc.",
        "signatures": [
            "(->> x & forms)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L200",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(->> x & forms)\n```\nThreads the expr through the forms. Inserts `x` as the\n  last item in the first form, making a list of it if it is not a\n  list already. If there are more forms, insert the first form as the\n  last item in the second form, etc.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[x & forms]"
        }
    },
    {
        "namespace": "core",
        "name": "->closure",
        "description": "Converts a Phel function to a PHP Closure.\n  Many PHP libraries (AMPHP, ReactPHP) type-hint `\\Closure` and reject\n  Phel's `AbstractFn` even though it is callable. This bridges the gap.",
        "doc": "```phel\n(->closure f)\n```\nConverts a Phel function to a PHP Closure.\n  Many PHP libraries (AMPHP, ReactPHP) type-hint `\\Closure` and reject\n  Phel's `AbstractFn` even though it is callable. This bridges the gap.",
        "signatures": [
            "(->closure f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/async.phel#L19",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(->closure f)\n```\nConverts a Phel function to a PHP Closure.\n  Many PHP libraries (AMPHP, ReactPHP) type-hint `\\Closure` and reject\n  Phel's `AbstractFn` even though it is callable. This bridges the gap.",
            "example": "(->closure (fn [x] (* x 2)))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[f]"
        }
    },
    {
        "namespace": "core",
        "name": "/",
        "description": "Returns the nominator divided by all the denominators. If `xs` is empty,\nreturns 1. If `xs` has one value, returns the reciprocal of x.\n\n  Integer division with a non-zero remainder returns a `Ratio`\n  (e.g. `(/ 1 2) => 1/2`). Use `(/ 1.0 2)` or `(double ...)` for float\n  division.",
        "doc": "```phel\n(/ & xs)\n```\nReturns the nominator divided by all the denominators. If `xs` is empty,\nreturns 1. If `xs` has one value, returns the reciprocal of x.\n\n  Integer division with a non-zero remainder returns a `Ratio`\n  (e.g. `(/ 1 2) => 1/2`). Use `(/ 1.0 2)` or `(double ...)` for float\n  division.",
        "signatures": [
            "(/ & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L136",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(/ & xs)\n```\nReturns the nominator divided by all the denominators. If `xs` is empty,\nreturns 1. If `xs` has one value, returns the reciprocal of x.\n\n  Integer division with a non-zero remainder returns a `Ratio`\n  (e.g. `(/ 1 2) => 1/2`). Use `(/ 1.0 2)` or `(double ...)` for float\n  division.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "<",
        "description": "Checks if each argument is strictly less than the following argument.",
        "doc": "```phel\n(< a & more)\n```\nChecks if each argument is strictly less than the following argument.",
        "signatures": [
            "(< a & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L186",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(< a & more)\n```\nChecks if each argument is strictly less than the following argument.",
            "example": "(< 1 2 3 4) ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[a & more]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "<=",
        "description": "Checks if each argument is less than or equal to the following argument. Returns a boolean.",
        "doc": "```phel\n(<= a & more)\n```\nChecks if each argument is less than or equal to the following argument. Returns a boolean.",
        "signatures": [
            "(<= a & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L197",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(<= a & more)\n```\nChecks if each argument is less than or equal to the following argument. Returns a boolean.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[a & more]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "<=>",
        "description": "Alias for the spaceship PHP operator in ascending order. Returns an int.\n  Dispatches on `Ratio` and `BigInt` so numeric ordering stays correct\n  for those types.",
        "doc": "```phel\n(<=> a b)\n```\nAlias for the spaceship PHP operator in ascending order. Returns an int.\n  Dispatches on `Ratio` and `BigInt` so numeric ordering stays correct\n  for those types.",
        "signatures": [
            "(<=> a b)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L228",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(<=> a b)\n```\nAlias for the spaceship PHP operator in ascending order. Returns an int.\n  Dispatches on `Ratio` and `BigInt` so numeric ordering stays correct\n  for those types.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[a b]"
        }
    },
    {
        "namespace": "core",
        "name": "=",
        "description": "Checks if all values are equal (value equality, not identity).",
        "doc": "```phel\n(= a & more)\n```\nChecks if all values are equal (value equality, not identity).",
        "signatures": [
            "(= a & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L104",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(= a & more)\n```\nChecks if all values are equal (value equality, not identity).",
            "example": "(= [1 2 3] [1 2 3]) ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[a & more]"
        }
    },
    {
        "namespace": "core",
        "name": "==",
        "description": "Numeric equality comparison. Returns true if all arguments have the same\n  numeric value regardless of type (e.g. int vs float); throws on non-numeric\n  arguments. Unlike `=`, which is value-and-type-strict, `==` treats `1` and\n  `1.0` as equal, matching Clojure's `clojure.core/==`.",
        "doc": "```phel\n(== a & more)\n```\nNumeric equality comparison. Returns true if all arguments have the same\n  numeric value regardless of type (e.g. int vs float); throws on non-numeric\n  arguments. Unlike `=`, which is value-and-type-strict, `==` treats `1` and\n  `1.0` as equal, matching Clojure's `clojure.core/==`.",
        "signatures": [
            "(== a & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L131",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(== a & more)\n```\nNumeric equality comparison. Returns true if all arguments have the same\n  numeric value regardless of type (e.g. int vs float); throws on non-numeric\n  arguments. Unlike `=`, which is value-and-type-strict, `==` treats `1` and\n  `1.0` as equal, matching Clojure's `clojure.core/==`.",
            "see-also": {},
            "example": "(== 1 1.0) ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[a & more]"
        }
    },
    {
        "namespace": "core",
        "name": ">",
        "description": "Checks if each argument is strictly greater than the following argument.",
        "doc": "```phel\n(> a & more)\n```\nChecks if each argument is strictly greater than the following argument.",
        "signatures": [
            "(> a & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L207",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(> a & more)\n```\nChecks if each argument is strictly greater than the following argument.",
            "example": "(> 4 3 2 1) ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[a & more]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": ">=",
        "description": "Checks if each argument is greater than or equal to the following argument. Returns a boolean.",
        "doc": "```phel\n(>= a & more)\n```\nChecks if each argument is greater than or equal to the following argument. Returns a boolean.",
        "signatures": [
            "(>= a & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L218",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(>= a & more)\n```\nChecks if each argument is greater than or equal to the following argument. Returns a boolean.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[a & more]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": ">=<",
        "description": "Alias for the spaceship PHP operator in descending order. Returns an int.",
        "doc": "```phel\n(>=< a b)\n```\nAlias for the spaceship PHP operator in descending order. Returns an int.",
        "signatures": [
            "(>=< a b)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L237",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(>=< a b)\n```\nAlias for the spaceship PHP operator in descending order. Returns an int.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[a b]"
        }
    },
    {
        "namespace": "core",
        "name": "NAN",
        "description": "Constant for Not a Number (NAN) values.",
        "doc": "Constant for Not a Number (NAN) values.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L99",
        "docUrl": "",
        "meta": {
            "doc": "Constant for Not a Number (NAN) values.",
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "core",
        "name": "NaN?",
        "description": "Checks if `x` is not a number. Alias for `nan?`, matching Clojure's `NaN?`.",
        "doc": "```phel\n(NaN? x)\n```\nChecks if `x` is not a number. Alias for `nan?`, matching Clojure's `NaN?`.",
        "signatures": [
            "(NaN? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L290",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(NaN? x)\n```\nChecks if `x` is not a number. Alias for `nan?`, matching Clojure's `NaN?`.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "abs",
        "description": "Returns the absolute value of `x`.\n  Throws `InvalidArgumentException` if `x` is not a number; PHP's\n  permissive `abs(null) => 0` / `abs(\"abc\")` coercions are rejected.",
        "doc": "```phel\n(abs x)\n```\nReturns the absolute value of `x`.\n  Throws `InvalidArgumentException` if `x` is not a number; PHP's\n  permissive `abs(null) => 0` / `abs(\"abc\")` coercions are rejected.",
        "signatures": [
            "(abs x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L303",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(abs x)\n```\nReturns the absolute value of `x`.\n  Throws `InvalidArgumentException` if `x` is not a number; PHP's\n  permissive `abs(null) => 0` / `abs(\"abc\")` coercions are rejected.",
            "example": "(abs -5) ; => 5",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "aclone",
        "description": "Returns a shallow copy of a PHP array. The returned array is a\n  distinct value \u2014 mutating the copy via `php/aset` does not affect the\n  original, and vice versa. Matches Clojure's `aclone` for `.cljc`\n  interop; raises `InvalidArgumentException` on non-array inputs since\n  Phel's persistent collections are already immutable and don't need\n  cloning.",
        "doc": "```phel\n(aclone arr)\n```\nReturns a shallow copy of a PHP array. The returned array is a\n  distinct value \u2014 mutating the copy via `php/aset` does not affect the\n  original, and vice versa. Matches Clojure's `aclone` for `.cljc`\n  interop; raises `InvalidArgumentException` on non-array inputs since\n  Phel's persistent collections are already immutable and don't need\n  cloning.",
        "signatures": [
            "(aclone arr)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/arrays.phel#L92",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(aclone arr)\n```\nReturns a shallow copy of a PHP array. The returned array is a\n  distinct value \u2014 mutating the copy via `php/aset` does not affect the\n  original, and vice versa. Matches Clojure's `aclone` for `.cljc`\n  interop; raises `InvalidArgumentException` on non-array inputs since\n  Phel's persistent collections are already immutable and don't need\n  cloning.",
            "example": "(aclone (object-array 3)) ; => a fresh PHP array [nil, nil, nil]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[arr]"
        }
    },
    {
        "namespace": "core",
        "name": "add-tap",
        "description": "Registers `f` as a tap. Every call to `tap>` invokes each registered tap\n  with the tapped value. Returns nil.",
        "doc": "```phel\n(add-tap f)\n```\nRegisters `f` as a tap. Every call to `tap>` invokes each registered tap\n  with the tapped value. Returns nil.",
        "signatures": [
            "(add-tap f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/tap.phel#L15",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(add-tap f)\n```\nRegisters `f` as a tap. Every call to `tap>` invokes each registered tap\n  with the tapped value. Returns nil.",
            "example": "(add-tap println)\n(tap> 42) ; prints 42",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[f]"
        }
    },
    {
        "namespace": "core",
        "name": "add-watch",
        "description": "Adds a watch function to a variable. The watch fn is called when the variable\n  changes with four arguments: key, ref, old-value, new-value.",
        "doc": "```phel\n(add-watch variable key f)\n```\nAdds a watch function to a variable. The watch fn is called when the variable\n  changes with four arguments: key, ref, old-value, new-value.",
        "signatures": [
            "(add-watch variable key f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L101",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(add-watch variable key f)\n```\nAdds a watch function to a variable. The watch fn is called when the variable\n  changes with four arguments: key, ref, old-value, new-value.",
            "example": "(add-watch my-var :logger (fn [key ref old new] (println old \"->\" new)))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[variable key f]"
        }
    },
    {
        "namespace": "core",
        "name": "aget",
        "description": "Returns the value at `index` in a PHP array. With multiple indices,\n   accesses nested arrays: `(aget arr i j)` is `(aget (aget arr i) j)`.\n   Matches Clojure's `aget` for `.cljc` interop.",
        "doc": "```phel\n(aget arr & indices)\n```\nReturns the value at `index` in a PHP array. With multiple indices,\n   accesses nested arrays: `(aget arr i j)` is `(aget (aget arr i) j)`.\n   Matches Clojure's `aget` for `.cljc` interop.",
        "signatures": [
            "(aget arr & indices)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/arrays.phel#L201",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(aget arr & indices)\n```\nReturns the value at `index` in a PHP array. With multiple indices,\n   accesses nested arrays: `(aget arr i j)` is `(aget (aget arr i) j)`.\n   Matches Clojure's `aget` for `.cljc` interop.",
            "example": "(aget (php/array 10 20 30) 1) ; => 20",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[arr & indices]"
        }
    },
    {
        "namespace": "core",
        "name": "alength",
        "description": "Returns the number of elements in a PHP array. Matches Clojure's\n  `alength` for `.cljc` interop; raises `InvalidArgumentException` on\n  non-array inputs (use `count` for collections).",
        "doc": "```phel\n(alength arr)\n```\nReturns the number of elements in a PHP array. Matches Clojure's\n  `alength` for `.cljc` interop; raises `InvalidArgumentException` on\n  non-array inputs (use `count` for collections).",
        "signatures": [
            "(alength arr)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/arrays.phel#L104",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(alength arr)\n```\nReturns the number of elements in a PHP array. Matches Clojure's\n  `alength` for `.cljc` interop; raises `InvalidArgumentException` on\n  non-array inputs (use `count` for collections).",
            "example": "(alength (int-array 3)) ; => 3",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[arr]",
            "tag": "int"
        }
    },
    {
        "namespace": "core",
        "name": "all?",
        "description": "Returns true if predicate is true for every element in collection, false otherwise.",
        "doc": "```phel\n(all? pred coll)\n```\nReturns true if predicate is true for every element in collection, false otherwise.",
        "signatures": [
            "(all? pred coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L246",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(all? pred coll)\n```\nReturns true if predicate is true for every element in collection, false otherwise.",
            "example": "(all? even? [2 4 6 8]) ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[pred coll]"
        }
    },
    {
        "namespace": "core",
        "name": "alter-meta!",
        "description": "Replaces the metadata on `r` with `(apply f current-meta args)`.\n  Works on `Var` handles (mutates per-var metadata, surviving subsequent\n  `def` redefinitions) and on atoms (mutates the atom's own meta map).\n  Returns the new metadata map.",
        "doc": "```phel\n(alter-meta! r f & args)\n```\nReplaces the metadata on `r` with `(apply f current-meta args)`.\n  Works on `Var` handles (mutates per-var metadata, surviving subsequent\n  `def` redefinitions) and on atoms (mutates the atom's own meta map).\n  Returns the new metadata map.",
        "signatures": [
            "(alter-meta! r f & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L161",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(alter-meta! r f & args)\n```\nReplaces the metadata on `r` with `(apply f current-meta args)`.\n  Works on `Var` handles (mutates per-var metadata, surviving subsequent\n  `def` redefinitions) and on atoms (mutates the atom's own meta map).\n  Returns the new metadata map.",
            "example": "(alter-meta! #'my-var assoc :tag :int)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[r f & args]"
        }
    },
    {
        "namespace": "core",
        "name": "alter-var-root",
        "description": "Replaces the root binding of `v` with `(apply f current-root args)`.\n  Returns the new root value. `v` must be a `Var`; pass an atom and you get a\n  clear error pointing at `swap!` instead.",
        "doc": "```phel\n(alter-var-root v f & args)\n```\nReplaces the root binding of `v` with `(apply f current-root args)`.\n  Returns the new root value. `v` must be a `Var`; pass an atom and you get a\n  clear error pointing at `swap!` instead.",
        "signatures": [
            "(alter-var-root v f & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L110",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(alter-var-root v f & args)\n```\nReplaces the root binding of `v` with `(apply f current-root args)`.\n  Returns the new root value. `v` must be a `Var`; pass an atom and you get a\n  clear error pointing at `swap!` instead.",
            "example": "(def counter 0)\n(alter-var-root #'counter inc) ; => 1",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[v f & args]"
        }
    },
    {
        "namespace": "core",
        "name": "ancestors",
        "description": "Returns the set of all transitive ancestors of tag, or nil.\n  When a hierarchy is provided, consults it; otherwise uses the global hierarchy.",
        "doc": "```phel\n(ancestors tag)\n(ancestors h tag)\n```\nReturns the set of all transitive ancestors of tag, or nil.\n  When a hierarchy is provided, consults it; otherwise uses the global hierarchy.",
        "signatures": [
            "(ancestors tag)",
            "(ancestors h tag)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L297",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ancestors tag)\n(ancestors h tag)\n```\nReturns the set of all transitive ancestors of tag, or nil.\n  When a hierarchy is provided, consults it; otherwise uses the global hierarchy.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([tag] [h tag])"
        }
    },
    {
        "namespace": "core",
        "name": "and",
        "description": "Evaluates expressions left to right, returning the first falsy value or the last value.",
        "doc": "```phel\n(and & args)\n```\nEvaluates expressions left to right, returning the first falsy value or the last value.",
        "signatures": [
            "(and & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L49",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(and & args)\n```\nEvaluates expressions left to right, returning the first falsy value or the last value.",
            "example": "(and true 1 \"hello\") ; => \"hello\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& args]"
        }
    },
    {
        "namespace": "core",
        "name": "any?",
        "description": "Returns true given any argument, including `nil` and `false`. Mirrors\n  Clojure's `clojure.core/any?` \u2014 useful as a default predicate in spec\n  / validation contexts where every value should be accepted.",
        "doc": "```phel\n(any? _)\n```\nReturns true given any argument, including `nil` and `false`. Mirrors\n  Clojure's `clojure.core/any?` \u2014 useful as a default predicate in spec\n  / validation contexts where every value should be accepted.",
        "signatures": [
            "(any? _)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L366",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(any? _)\n```\nReturns true given any argument, including `nil` and `false`. Mirrors\n  Clojure's `clojure.core/any?` \u2014 useful as a default predicate in spec\n  / validation contexts where every value should be accepted.",
            "example": "(any? nil) ; => true\n(any? 0) ; => true",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[__phel_409]"
        }
    },
    {
        "namespace": "core",
        "name": "apply",
        "description": "Calls the function with the given arguments. The last argument must be a list of values, which are passed as separate arguments, rather than a single list. Apply returns the result of the calling function.",
        "doc": "```phel\n(apply f expr*)\n```\nCalls the function with the given arguments. The last argument must be a list of values, which are passed as separate arguments, rather than a single list. Apply returns the result of the calling function.",
        "signatures": [
            "(apply f expr*)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/functions-and-recursion/#apply-functions",
        "meta": {
            "example": "(apply + [1 2 3]) ; => 6"
        }
    },
    {
        "namespace": "core",
        "name": "argv",
        "description": "Vector of user arguments passed to the script (excludes program name).\n  Use *program* to get the script path or namespace.",
        "doc": "Vector of user arguments passed to the script (excludes program name).\n  Use *program* to get the script path or namespace.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core.phel#L204",
        "docUrl": "",
        "meta": {
            "doc": "Vector of user arguments passed to the script (excludes program name).\n  Use *program* to get the script path or namespace.",
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "core",
        "name": "array-map",
        "description": "Constructs a map from the given key/value pairs. If any keys are\n  equal, later values replace earlier ones, as if by repeated `assoc`.\n  Phel has no distinct array-map type, so the result is the same\n  persistent map as `hash-map` \u2014 `array-map` exists for `.cljc` interop\n  with Clojure sources.",
        "doc": "Constructs a map from the given key/value pairs. If any keys are\n  equal, later values replace earlier ones, as if by repeated `assoc`.\n  Phel has no distinct array-map type, so the result is the same\n  persistent map as `hash-map` \u2014 `array-map` exists for `.cljc` interop\n  with Clojure sources.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core.phel#L59",
        "docUrl": "",
        "meta": {
            "doc": "Constructs a map from the given key/value pairs. If any keys are\n  equal, later values replace earlier ones, as if by repeated `assoc`.\n  Phel has no distinct array-map type, so the result is the same\n  persistent map as `hash-map` \u2014 `array-map` exists for `.cljc` interop\n  with Clojure sources.",
            "example": "(array-map :a 1 :b 2) ; => {:a 1 :b 2}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "as->",
        "description": "Binds `name` to `expr`, evaluates the first form in the lexical context\n  of that binding, then binds name to that result, repeating for each\n  successive form, returning the result of the last form.",
        "doc": "```phel\n(as-> expr name & forms)\n```\nBinds `name` to `expr`, evaluates the first form in the lexical context\n  of that binding, then binds name to that result, repeating for each\n  successive form, returning the result of the last form.",
        "signatures": [
            "(as-> expr name & forms)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L264",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(as-> expr name & forms)\n```\nBinds `name` to `expr`, evaluates the first form in the lexical context\n  of that binding, then binds name to that result, repeating for each\n  successive form, returning the result of the last form.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[expr name & forms]"
        }
    },
    {
        "namespace": "core",
        "name": "aset",
        "description": "Sets the value at `index` in a PHP array to `val`. Returns `val`.\n   With additional indices, navigates nested arrays before setting:\n   `(aset arr i j val)` sets index `j` in `(aget arr i)`.\n   Matches Clojure's `aset` for `.cljc` interop.\n   This is a macro because PHP arrays are value types; a function\n   wrapper would mutate a copy rather than the original.",
        "doc": "```phel\n(aset arr idx & more)\n```\nSets the value at `index` in a PHP array to `val`. Returns `val`.\n   With additional indices, navigates nested arrays before setting:\n   `(aset arr i j val)` sets index `j` in `(aget arr i)`.\n   Matches Clojure's `aset` for `.cljc` interop.\n   This is a macro because PHP arrays are value types; a function\n   wrapper would mutate a copy rather than the original.",
        "signatures": [
            "(aset arr idx & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/arrays.phel#L214",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(aset arr idx & more)\n```\nSets the value at `index` in a PHP array to `val`. Returns `val`.\n   With additional indices, navigates nested arrays before setting:\n   `(aset arr i j val)` sets index `j` in `(aget arr i)`.\n   Matches Clojure's `aset` for `.cljc` interop.\n   This is a macro because PHP arrays are value types; a function\n   wrapper would mutate a copy rather than the original.",
            "example": "(let [a (php/array 1 2 3)] (aset a 0 42) (aget a 0)) ; => 42",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[arr idx & more]"
        }
    },
    {
        "namespace": "core",
        "name": "assert",
        "description": "Throws an exception if expr is falsy. Optional message string.\n  Used for precondition checking in application code. When `*assert*`\n  is logical false at macroexpansion time, `assert` expands to nil and\n  performs no runtime check.",
        "doc": "```phel\n(assert expr & [message])\n```\nThrows an exception if expr is falsy. Optional message string.\n  Used for precondition checking in application code. When `*assert*`\n  is logical false at macroexpansion time, `assert` expands to nil and\n  performs no runtime check.",
        "signatures": [
            "(assert expr & [message])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L958",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(assert expr & [message])\n```\nThrows an exception if expr is falsy. Optional message string.\n  Used for precondition checking in application code. When `*assert*`\n  is logical false at macroexpansion time, `assert` expands to nil and\n  performs no runtime check.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[expr & __phel_2222]"
        }
    },
    {
        "namespace": "core",
        "name": "assoc",
        "description": "Associates one or more key-value pairs with a collection.\n  Additional key-value pairs beyond the first are applied in order.\n  Throws if an odd number of extra arguments is provided.",
        "doc": "```phel\n(assoc ds key value & more)\n```\nAssociates one or more key-value pairs with a collection.\n  Additional key-value pairs beyond the first are applied in order.\n  Throws if an odd number of extra arguments is provided.",
        "signatures": [
            "(assoc ds key value & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/sequences.phel#L250",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(assoc ds key value & more)\n```\nAssociates one or more key-value pairs with a collection.\n  Additional key-value pairs beyond the first are applied in order.\n  Throws if an odd number of extra arguments is provided.",
            "example": "(assoc {:a 1} :b 2) ; => {:a 1 :b 2}\n(assoc {:a 1} :b 2 :c 3) ; => {:a 1 :b 2 :c 3}",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": true,
            "arglists": "[ds key value & more]"
        }
    },
    {
        "namespace": "core",
        "name": "assoc!",
        "description": "Associates one or more key-value pairs with a transient collection,\n   mutating it in place. Works on transient hash-maps and transient vectors.\n   Variadic forms apply each `key-value` pair in order. A trailing key\n   without a value is associated with `nil`. Raises\n   `InvalidArgumentException` when `tcoll` is not a supported transient\n   collection. Matches Clojure's `assoc!` semantics.",
        "doc": "```phel\n(assoc! tcoll key value & more)\n```\nAssociates one or more key-value pairs with a transient collection,\n   mutating it in place. Works on transient hash-maps and transient vectors.\n   Variadic forms apply each `key-value` pair in order. A trailing key\n   without a value is associated with `nil`. Raises\n   `InvalidArgumentException` when `tcoll` is not a supported transient\n   collection. Matches Clojure's `assoc!` semantics.",
        "signatures": [
            "(assoc! tcoll key value & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transients.phel#L114",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(assoc! tcoll key value & more)\n```\nAssociates one or more key-value pairs with a transient collection,\n   mutating it in place. Works on transient hash-maps and transient vectors.\n   Variadic forms apply each `key-value` pair in order. A trailing key\n   without a value is associated with `nil`. Raises\n   `InvalidArgumentException` when `tcoll` is not a supported transient\n   collection. Matches Clojure's `assoc!` semantics.",
            "example": "(persistent! (assoc! (transient {}) :a 1 :b 2)) ; => {:a 1 :b 2}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": true,
            "arglists": "[tcoll key value & more]"
        }
    },
    {
        "namespace": "core",
        "name": "assoc-in",
        "description": "Associates a value in a nested data structure at the given path.\n\n  Creates intermediate maps if they don't exist.",
        "doc": "```phel\n(assoc-in ds [k & ks] v)\n```\nAssociates a value in a nested data structure at the given path.\n\n  Creates intermediate maps if they don't exist.",
        "signatures": [
            "(assoc-in ds [k & ks] v)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L301",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(assoc-in ds [k & ks] v)\n```\nAssociates a value in a nested data structure at the given path.\n\n  Creates intermediate maps if they don't exist.",
            "example": "(assoc-in {:a {:b 1}} [:a :c] 2) ; => {:a {:b 1 :c 2}}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[ds __phel_958 v]"
        }
    },
    {
        "namespace": "core",
        "name": "associative?",
        "description": "Returns true if `x` is an associative data structure, false otherwise.\n\n  Associative data structures include vectors, hash maps, structs, and PHP arrays\n  (both indexed and associative), matching Clojure's `Associative` protocol.",
        "doc": "```phel\n(associative? x)\n```\nReturns true if `x` is an associative data structure, false otherwise.\n\n  Associative data structures include vectors, hash maps, structs, and PHP arrays\n  (both indexed and associative), matching Clojure's `Associative` protocol.",
        "signatures": [
            "(associative? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L511",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(associative? x)\n```\nReturns true if `x` is an associative data structure, false otherwise.\n\n  Associative data structures include vectors, hash maps, structs, and PHP arrays\n  (both indexed and associative), matching Clojure's `Associative` protocol.",
            "example": "(associative? [1 2 3]) ; => true",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "async",
        "description": "Runs body asynchronously in a new fiber. Returns an Amp\\Future.\n\n  Captures the caller's dynamic bindings and reinstalls them inside\n  the fiber, so `binding`s established outside `async` are visible to\n  `body` (binding conveyance, as in Clojure's `future`).",
        "doc": "```phel\n(async & body)\n```\nRuns body asynchronously in a new fiber. Returns an Amp\\Future.\n\n  Captures the caller's dynamic bindings and reinstalls them inside\n  the fiber, so `binding`s established outside `async` are visible to\n  `body` (binding conveyance, as in Clojure's `future`).",
        "signatures": [
            "(async & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/async.phel#L27",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(async & body)\n```\nRuns body asynchronously in a new fiber. Returns an Amp\\Future.\n\n  Captures the caller's dynamic bindings and reinstalls them inside\n  the fiber, so `binding`s established outside `async` are visible to\n  `body` (binding conveyance, as in Clojure's `future`).",
            "example": "(async (do-something))",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& body]"
        }
    },
    {
        "namespace": "core",
        "name": "atom",
        "description": "Creates a new atom with the given value.\n\n  Atoms provide a way to manage mutable state. Use `reset!` to set a new value\n  and `swap!` to update based on the current value.\n\n  Optional `:meta` and `:validator` keyword arguments may follow the value in\n  any order. The validator is applied to the initial value when set.",
        "doc": "```phel\n(atom value & opts)\n```\nCreates a new atom with the given value.\n\n  Atoms provide a way to manage mutable state. Use `reset!` to set a new value\n  and `swap!` to update based on the current value.\n\n  Optional `:meta` and `:validator` keyword arguments may follow the value in\n  any order. The validator is applied to the initial value when set.",
        "signatures": [
            "(atom value & opts)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L22",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(atom value & opts)\n```\nCreates a new atom with the given value.\n\n  Atoms provide a way to manage mutable state. Use `reset!` to set a new value\n  and `swap!` to update based on the current value.\n\n  Optional `:meta` and `:validator` keyword arguments may follow the value in\n  any order. The validator is applied to the initial value when set.",
            "example": "(def counter (atom 0))\n(atom 0 :meta {:tag :counter} :validator number?)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[value & opts]"
        }
    },
    {
        "namespace": "core",
        "name": "atom?",
        "description": "Returns true if the given value is an atom.",
        "doc": "```phel\n(atom? x)\n```\nReturns true if the given value is an atom.",
        "signatures": [
            "(atom? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L40",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(atom? x)\n```\nReturns true if the given value is an atom.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "await",
        "description": "Blocks the current fiber until the Future resolves and returns its value.\n  Accepts either a raw `Amp\\Future` or a `Future` wrapper.",
        "doc": "```phel\n(await future)\n```\nBlocks the current fiber until the Future resolves and returns its value.\n  Accepts either a raw `Amp\\Future` or a `Future` wrapper.",
        "signatures": [
            "(await future)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/async.phel#L49",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(await future)\n```\nBlocks the current fiber until the Future resolves and returns its value.\n  Accepts either a raw `Amp\\Future` or a `Future` wrapper.",
            "example": "(await (async (+ 1 2)))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[future]"
        }
    },
    {
        "namespace": "core",
        "name": "await-all",
        "description": "Awaits all Futures in the given collection. Returns a vector of results.\n  Accepts a mix of raw `Amp\\Future` and `Future` wrappers.",
        "doc": "```phel\n(await-all futures)\n```\nAwaits all Futures in the given collection. Returns a vector of results.\n  Accepts a mix of raw `Amp\\Future` and `Future` wrappers.",
        "signatures": [
            "(await-all futures)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/async.phel#L57",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(await-all futures)\n```\nAwaits all Futures in the given collection. Returns a vector of results.\n  Accepts a mix of raw `Amp\\Future` and `Future` wrappers.",
            "example": "(await-all [(async 1) (async 2)])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[futures]"
        }
    },
    {
        "namespace": "core",
        "name": "await-any",
        "description": "Awaits the first Future to resolve. Returns its value.\n  Accepts a mix of raw `Amp\\Future` and `Future` wrappers.",
        "doc": "```phel\n(await-any futures)\n```\nAwaits the first Future to resolve. Returns its value.\n  Accepts a mix of raw `Amp\\Future` and `Future` wrappers.",
        "signatures": [
            "(await-any futures)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/async.phel#L67",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(await-any futures)\n```\nAwaits the first Future to resolve. Returns its value.\n  Accepts a mix of raw `Amp\\Future` and `Future` wrappers.",
            "example": "(await-any [(async 1) (async 2)])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[futures]"
        }
    },
    {
        "namespace": "core",
        "name": "bigdec",
        "description": "Coerces `x` to a `Phel\\Lang\\BigDecimal`. Accepts `BigDecimal` (returned\n  as-is), ints, floats (via the shortest round-trip decimal of the\n  float), `BigInt`, `Ratio` (computed via exact decimal division;\n  throws `ArithmeticError` when the expansion does not terminate,\n  matching `(bigdec 1/3)`), and numeric strings.",
        "doc": "```phel\n(bigdec x)\n```\nCoerces `x` to a `Phel\\Lang\\BigDecimal`. Accepts `BigDecimal` (returned\n  as-is), ints, floats (via the shortest round-trip decimal of the\n  float), `BigInt`, `Ratio` (computed via exact decimal division;\n  throws `ArithmeticError` when the expansion does not terminate,\n  matching `(bigdec 1/3)`), and numeric strings.",
        "signatures": [
            "(bigdec x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L561",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(bigdec x)\n```\nCoerces `x` to a `Phel\\Lang\\BigDecimal`. Accepts `BigDecimal` (returned\n  as-is), ints, floats (via the shortest round-trip decimal of the\n  float), `BigInt`, `Ratio` (computed via exact decimal division;\n  throws `ArithmeticError` when the expansion does not terminate,\n  matching `(bigdec 1/3)`), and numeric strings.",
            "example": "(bigdec 1.5) ; => 1.5M\n(bigdec 1/2) ; => 0.5M\n(bigdec \"3.14\") ; => 3.14M",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "bigdec?",
        "description": "Returns true when `x` is a `Phel\\Lang\\BigDecimal` value.",
        "doc": "```phel\n(bigdec? x)\n```\nReturns true when `x` is a `Phel\\Lang\\BigDecimal` value.",
        "signatures": [
            "(bigdec? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L547",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(bigdec? x)\n```\nReturns true when `x` is a `Phel\\Lang\\BigDecimal` value.",
            "example": "(bigdec? 1.5M) ; => true",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "bigint",
        "description": "Coerces `x` to a `Phel\\Lang\\BigInt`. Accepts ints, floats\n  (truncated toward zero, rejecting `NaN`/`Inf`), numeric strings, and\n  `BigInt` values.",
        "doc": "```phel\n(bigint x)\n```\nCoerces `x` to a `Phel\\Lang\\BigInt`. Accepts ints, floats\n  (truncated toward zero, rejecting `NaN`/`Inf`), numeric strings, and\n  `BigInt` values.",
        "signatures": [
            "(bigint x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L693",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(bigint x)\n```\nCoerces `x` to a `Phel\\Lang\\BigInt`. Accepts ints, floats\n  (truncated toward zero, rejecting `NaN`/`Inf`), numeric strings, and\n  `BigInt` values.",
            "example": "(bigint 42) ; => 42N\n(bigint 1.9) ; => 1N\n(bigint \"123\") ; => 123N",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "bigint?",
        "description": "Returns true when `x` is a `Phel\\Lang\\BigInt` value.",
        "doc": "```phel\n(bigint? x)\n```\nReturns true when `x` is a `Phel\\Lang\\BigInt` value.",
        "signatures": [
            "(bigint? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L540",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(bigint? x)\n```\nReturns true when `x` is a `Phel\\Lang\\BigInt` value.",
            "example": "(bigint? (php/:: \\Phel\\Lang\\BigInt (fromInt 1))) ; => true",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "biginteger",
        "description": "Alias for `bigint`. Coerces `x` to a `Phel\\Lang\\BigInt`.",
        "doc": "```phel\n(biginteger x)\n```\nAlias for `bigint`. Coerces `x` to a `Phel\\Lang\\BigInt`.",
        "signatures": [
            "(biginteger x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L709",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(biginteger x)\n```\nAlias for `bigint`. Coerces `x` to a `Phel\\Lang\\BigInt`.",
            "example": "(biginteger 42) ; => 42N",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "binding",
        "description": "Temporarily rebinds dynamic vars while executing `body`.\n\n  Each var in `bindings` must be tagged `^:dynamic` at its `def`. The\n  rebinding is fiber-local: concurrent fibers observe independent\n  values, and child futures (`future`, `async`, `future-fiber`)\n  inherit the bindings active at their creation.\n\n  Throws at runtime if any var in the bindings vector is not\n  `:dynamic`. To swap a non-dynamic var for the duration of an\n  expression (e.g. mocking in tests), use `with-redefs`.",
        "doc": "```phel\n(binding bindings & body)\n```\nTemporarily rebinds dynamic vars while executing `body`.\n\n  Each var in `bindings` must be tagged `^:dynamic` at its `def`. The\n  rebinding is fiber-local: concurrent fibers observe independent\n  values, and child futures (`future`, `async`, `future-fiber`)\n  inherit the bindings active at their creation.\n\n  Throws at runtime if any var in the bindings vector is not\n  `:dynamic`. To swap a non-dynamic var for the duration of an\n  expression (e.g. mocking in tests), use `with-redefs`.",
        "signatures": [
            "(binding bindings & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L405",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(binding bindings & body)\n```\nTemporarily rebinds dynamic vars while executing `body`.\n\n  Each var in `bindings` must be tagged `^:dynamic` at its `def`. The\n  rebinding is fiber-local: concurrent fibers observe independent\n  values, and child futures (`future`, `async`, `future-fiber`)\n  inherit the bindings active at their creation.\n\n  Throws at runtime if any var in the bindings vector is not\n  `:dynamic`. To swap a non-dynamic var for the duration of an\n  expression (e.g. mocking in tests), use `with-redefs`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[bindings & body]"
        }
    },
    {
        "namespace": "core",
        "name": "bit-and",
        "description": "Bitwise and.",
        "doc": "```phel\n(bit-and x y & args)\n```\nBitwise and.",
        "signatures": [
            "(bit-and x y & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L30",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(bit-and x y & args)\n```\nBitwise and.",
            "inline": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[x y & args]"
        }
    },
    {
        "namespace": "core",
        "name": "bit-clear",
        "description": "Clear bit an index `n`.",
        "doc": "```phel\n(bit-clear x n)\n```\nClear bit an index `n`.",
        "signatures": [
            "(bit-clear x n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L80",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(bit-clear x n)\n```\nClear bit an index `n`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[x n]"
        }
    },
    {
        "namespace": "core",
        "name": "bit-flip",
        "description": "Flip bit at index `n`.",
        "doc": "```phel\n(bit-flip x n)\n```\nFlip bit at index `n`.",
        "signatures": [
            "(bit-flip x n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L85",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(bit-flip x n)\n```\nFlip bit at index `n`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[x n]"
        }
    },
    {
        "namespace": "core",
        "name": "bit-not",
        "description": "Bitwise complement.",
        "doc": "```phel\n(bit-not x)\n```\nBitwise complement.",
        "signatures": [
            "(bit-not x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L54",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(bit-not x)\n```\nBitwise complement.",
            "inline": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "bit-or",
        "description": "Bitwise or.",
        "doc": "```phel\n(bit-or x y & args)\n```\nBitwise or.",
        "signatures": [
            "(bit-or x y & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L38",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(bit-or x y & args)\n```\nBitwise or.",
            "inline": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[x y & args]"
        }
    },
    {
        "namespace": "core",
        "name": "bit-set",
        "description": "Set bit an index `n`.",
        "doc": "```phel\n(bit-set x n)\n```\nSet bit an index `n`.",
        "signatures": [
            "(bit-set x n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L75",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(bit-set x n)\n```\nSet bit an index `n`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[x n]"
        }
    },
    {
        "namespace": "core",
        "name": "bit-shift-left",
        "description": "Bitwise shift left.",
        "doc": "```phel\n(bit-shift-left x n)\n```\nBitwise shift left.",
        "signatures": [
            "(bit-shift-left x n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L61",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(bit-shift-left x n)\n```\nBitwise shift left.",
            "inline": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[x n]"
        }
    },
    {
        "namespace": "core",
        "name": "bit-shift-right",
        "description": "Bitwise shift right.",
        "doc": "```phel\n(bit-shift-right x n)\n```\nBitwise shift right.",
        "signatures": [
            "(bit-shift-right x n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L68",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(bit-shift-right x n)\n```\nBitwise shift right.",
            "inline": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[x n]"
        }
    },
    {
        "namespace": "core",
        "name": "bit-test",
        "description": "Test bit at index `n`.",
        "doc": "```phel\n(bit-test x n)\n```\nTest bit at index `n`.",
        "signatures": [
            "(bit-test x n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L90",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(bit-test x n)\n```\nTest bit at index `n`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[x n]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "bit-xor",
        "description": "Bitwise xor.",
        "doc": "```phel\n(bit-xor x y & args)\n```\nBitwise xor.",
        "signatures": [
            "(bit-xor x y & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L46",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(bit-xor x y & args)\n```\nBitwise xor.",
            "inline": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[x y & args]"
        }
    },
    {
        "namespace": "core",
        "name": "boolean",
        "description": "Coerces `x` to a boolean. Returns `false` if `x` is `nil` or `false`,\n   `true` otherwise.",
        "doc": "```phel\n(boolean x)\n```\nCoerces `x` to a boolean. Returns `false` if `x` is `nil` or `false`,\n   `true` otherwise.",
        "signatures": [
            "(boolean x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L359",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(boolean x)\n```\nCoerces `x` to a boolean. Returns `false` if `x` is `nil` or `false`,\n   `true` otherwise.",
            "example": "(boolean nil) ; => false",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "boolean?",
        "description": "Returns true if `x` is a boolean, false otherwise.",
        "doc": "```phel\n(boolean? x)\n```\nReturns true if `x` is a boolean, false otherwise.",
        "signatures": [
            "(boolean? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L354",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(boolean? x)\n```\nReturns true if `x` is a boolean, false otherwise.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "bound?",
        "description": "Returns true when `v` has a current root binding in the namespace\n  registry. `v` must be a `Var`.",
        "doc": "```phel\n(bound? v)\n```\nReturns true when `v` has a current root binding in the namespace\n  registry. `v` must be a `Var`.",
        "signatures": [
            "(bound? v)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L122",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(bound? v)\n```\nReturns true when `v` has a current root binding in the namespace\n  registry. `v` must be a `Var`.",
            "example": "(bound? #'phel.core/map) ; => true",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[v]"
        }
    },
    {
        "namespace": "core",
        "name": "butlast",
        "description": "Returns all but the last item in `coll`. Returns `nil` when `coll` is\n  `nil` or has fewer than two items.",
        "doc": "```phel\n(butlast coll)\n```\nReturns all but the last item in `coll`. Returns `nil` when `coll` is\n  `nil` or has fewer than two items.",
        "signatures": [
            "(butlast coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L403",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(butlast coll)\n```\nReturns all but the last item in `coll`. Returns `nil` when `coll` is\n  `nil` or has fewer than two items.",
            "example": "(butlast [1 2 3 4]) ; => [1 2 3]\n(butlast [0]) ; => nil",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "byte",
        "description": "Coerces `x` to a signed 8-bit integer in the range `-128..127`.\n   Decimal values are truncated toward zero. `Ratio` and `BigInt`\n   values are accepted (truncate toward zero, then range-check). Values\n   outside the range or non-numeric inputs raise `InvalidArgumentException`.\n   Phel has no dedicated byte type, so the result is a plain PHP int.",
        "doc": "```phel\n(byte x)\n```\nCoerces `x` to a signed 8-bit integer in the range `-128..127`.\n   Decimal values are truncated toward zero. `Ratio` and `BigInt`\n   values are accepted (truncate toward zero, then range-check). Values\n   outside the range or non-numeric inputs raise `InvalidArgumentException`.\n   Phel has no dedicated byte type, so the result is a plain PHP int.",
        "signatures": [
            "(byte x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L379",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(byte x)\n```\nCoerces `x` to a signed 8-bit integer in the range `-128..127`.\n   Decimal values are truncated toward zero. `Ratio` and `BigInt`\n   values are accepted (truncate toward zero, then range-check). Values\n   outside the range or non-numeric inputs raise `InvalidArgumentException`.\n   Phel has no dedicated byte type, so the result is a plain PHP int.",
            "example": "(byte 127) ; => 127\n(byte 1.9) ; => 1\n(byte -128) ; => -128",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "canonical-ns",
        "description": "Returns the canonical (dot-separated) form of a namespace string.\n  Pass user-supplied namespace strings through this before any registry\n  lookup or write.",
        "doc": "```phel\n(canonical-ns ns-str)\n```\nReturns the canonical (dot-separated) form of a namespace string.\n  Pass user-supplied namespace strings through this before any registry\n  lookup or write.",
        "signatures": [
            "(canonical-ns ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/ns.phel#L17",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(canonical-ns ns-str)\n```\nReturns the canonical (dot-separated) form of a namespace string.\n  Pass user-supplied namespace strings through this before any registry\n  lookup or write.",
            "example": "(canonical-ns \"phel\\core\") ; => \"phel.core\"",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "core",
        "name": "case",
        "description": "Evaluates expression and matches it against constant test values, returning the associated result.",
        "doc": "```phel\n(case e & pairs)\n```\nEvaluates expression and matches it against constant test values, returning the associated result.",
        "signatures": [
            "(case e & pairs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/control.phel#L57",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(case e & pairs)\n```\nEvaluates expression and matches it against constant test values, returning the associated result.",
            "example": "(case x 1 \"one\" 2 \"two\" \"other\") ; => \"one\" (when x is 1)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[e & pairs]"
        }
    },
    {
        "namespace": "core",
        "name": "cat",
        "description": "A transducer that concatenates the contents of each input into the reduction.",
        "doc": "```phel\n(cat rf)\n```\nA transducer that concatenates the contents of each input into the reduction.",
        "signatures": [
            "(cat rf)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L963",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(cat rf)\n```\nA transducer that concatenates the contents of each input into the reduction.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[rf]"
        }
    },
    {
        "namespace": "core",
        "name": "catch",
        "description": "Handle exceptions thrown in a `try` block by matching on the provided exception type. The caught exception is bound to exception-name while evaluating the expressions.",
        "doc": "```phel\n(catch exception-type exception-name expr*)\n```\nHandle exceptions thrown in a `try` block by matching on the provided exception type. The caught exception is bound to `exception-name` while evaluating the expressions.",
        "signatures": [
            "(catch exception-type exception-name expr*)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/control-flow/#try-catch-and-finally",
        "meta": {
            "example": "(try (throw (php/new \\Exception \"error\")) (catch \\Exception e (php/-> e (getMessage))))"
        }
    },
    {
        "namespace": "core",
        "name": "ceil",
        "description": "Returns the smallest integer not less than `x`. Ints and `BigInt`\n  values are returned unchanged. Ratios collapse via ceiling division.\n  Floats route through PHP's `ceil`.",
        "doc": "```phel\n(ceil x)\n```\nReturns the smallest integer not less than `x`. Ints and `BigInt`\n  values are returned unchanged. Ratios collapse via ceiling division.\n  Floats route through PHP's `ceil`.",
        "signatures": [
            "(ceil x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L751",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ceil x)\n```\nReturns the smallest integer not less than `x`. Ints and `BigInt`\n  values are returned unchanged. Ratios collapse via ceiling division.\n  Floats route through PHP's `ceil`.",
            "example": "(ceil 1.2) ; => 2.0\n(ceil -1.7) ; => -1.0\n(ceil 7/3) ; => 3",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "char",
        "description": "Coerces `x` to a single-character string representing the given\n   Unicode code point. Accepts a non-negative integer (the code point,\n   converted via `mb_chr`) or a single-character string, which is\n   returned as-is. Phel has no dedicated char type \u2014 character literals\n   such as `\\A` are already single-character strings \u2014 so the result\n   is always a plain string. Matches Clojure's `char` for `.cljc`\n   interop; raises `InvalidArgumentException` on negative ints,\n   non-single-character strings, and all other inputs.",
        "doc": "```phel\n(char x)\n```\nCoerces `x` to a single-character string representing the given\n   Unicode code point. Accepts a non-negative integer (the code point,\n   converted via `mb_chr`) or a single-character string, which is\n   returned as-is. Phel has no dedicated char type \u2014 character literals\n   such as `\\A` are already single-character strings \u2014 so the result\n   is always a plain string. Matches Clojure's `char` for `.cljc`\n   interop; raises `InvalidArgumentException` on negative ints,\n   non-single-character strings, and all other inputs.",
        "signatures": [
            "(char x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L396",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(char x)\n```\nCoerces `x` to a single-character string representing the given\n   Unicode code point. Accepts a non-negative integer (the code point,\n   converted via `mb_chr`) or a single-character string, which is\n   returned as-is. Phel has no dedicated char type \u2014 character literals\n   such as `\\A` are already single-character strings \u2014 so the result\n   is always a plain string. Matches Clojure's `char` for `.cljc`\n   interop; raises `InvalidArgumentException` on negative ints,\n   non-single-character strings, and all other inputs.",
            "example": "(char 65) ; => \"A\"\n(char 32) ; => \" \"\n(char \\A) ; => \"A\"",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "char?",
        "description": "Returns true if `x` is a single-character string, false otherwise.\n   Phel has no dedicated character type \u2014 character literals such as\n   `\\A` are already single-character strings \u2014 so `char?` is true for\n   any string of length 1 (UTF-8 counted). Matches ClojureScript's\n   `char?` for `.cljc` interop; Clojure/JVM's `char?` tests for the\n   distinct `Character` type, which does not exist here.",
        "doc": "```phel\n(char? x)\n```\nReturns true if `x` is a single-character string, false otherwise.\n   Phel has no dedicated character type \u2014 character literals such as\n   `\\A` are already single-character strings \u2014 so `char?` is true for\n   any string of length 1 (UTF-8 counted). Matches ClojureScript's\n   `char?` for `.cljc` interop; Clojure/JVM's `char?` tests for the\n   distinct `Character` type, which does not exist here.",
        "signatures": [
            "(char? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L216",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(char? x)\n```\nReturns true if `x` is a single-character string, false otherwise.\n   Phel has no dedicated character type \u2014 character literals such as\n   `\\A` are already single-character strings \u2014 so `char?` is true for\n   any string of length 1 (UTF-8 counted). Matches ClojureScript's\n   `char?` for `.cljc` interop; Clojure/JVM's `char?` tests for the\n   distinct `Character` type, which does not exist here.",
            "example": "(char? \\A) ; => true\n(char? \"a\") ; => true\n(char? \"ab\") ; => false",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "class",
        "description": "Returns a `Phel\\Lang\\PhpClass` for `x`. With an object argument\n  returns the class of the object. With a string argument resolves the\n  named class or interface FQN. Throws `InvalidArgumentException` for\n  any other input.",
        "doc": "```phel\n(class x)\n```\nReturns a `Phel\\Lang\\PhpClass` for `x`. With an object argument\n  returns the class of the object. With a string argument resolves the\n  named class or interface FQN. Throws `InvalidArgumentException` for\n  any other input.",
        "signatures": [
            "(class x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L109",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(class x)\n```\nReturns a `Phel\\Lang\\PhpClass` for `x`. With an object argument\n  returns the class of the object. With a string argument resolves the\n  named class or interface FQN. Throws `InvalidArgumentException` for\n  any other input.",
            "example": "(class (php/new \\stdClass)) ; => stdClass",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "class-name",
        "description": "Returns the FQN string of `c` (a `Phel\\Lang\\PhpClass`). Leading\n  backslashes are not preserved (e.g. `\\stdClass` becomes `stdClass`).",
        "doc": "```phel\n(class-name c)\n```\nReturns the FQN string of `c` (a `Phel\\Lang\\PhpClass`). Leading\n  backslashes are not preserved (e.g. `\\stdClass` becomes `stdClass`).",
        "signatures": [
            "(class-name c)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L123",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(class-name c)\n```\nReturns the FQN string of `c` (a `Phel\\Lang\\PhpClass`). Leading\n  backslashes are not preserved (e.g. `\\stdClass` becomes `stdClass`).",
            "example": "(class-name (class \"stdClass\")) ; => \"stdClass\"",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[c]"
        }
    },
    {
        "namespace": "core",
        "name": "class?",
        "description": "Returns true if `x` is a `Phel\\Lang\\PhpClass` value.",
        "doc": "```phel\n(class? x)\n```\nReturns true if `x` is a `Phel\\Lang\\PhpClass` value.",
        "signatures": [
            "(class? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L102",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(class? x)\n```\nReturns true if `x` is a `Phel\\Lang\\PhpClass` value.",
            "example": "(class? (class (php/new \\stdClass))) ; => true",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "coerce-in",
        "description": "Returns `v` if it is in the range, or `min` if `v` is less than `min`, or `max` if `v` is greater than `max`.",
        "doc": "```phel\n(coerce-in v min max)\n```\nReturns `v` if it is in the range, or `min` if `v` is less than `min`, or `max` if `v` is greater than `max`.",
        "signatures": [
            "(coerce-in v min max)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L505",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(coerce-in v min max)\n```\nReturns `v` if it is in the range, or `min` if `v` is less than `min`, or `max` if `v` is greater than `max`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[v min max]"
        }
    },
    {
        "namespace": "core",
        "name": "coll?",
        "description": "Returns true if `x` is a persistent collection \u2014 vector, list, hash-map\n   (including sorted-map), struct, set (including sorted-set), or lazy-seq \u2014\n   and false otherwise. Strings, numbers, `nil`, booleans, keywords, symbols,\n   and plain PHP arrays are not considered collections, matching Clojure's\n   `IPersistentCollection` membership.",
        "doc": "```phel\n(coll? x)\n```\nReturns true if `x` is a persistent collection \u2014 vector, list, hash-map\n   (including sorted-map), struct, set (including sorted-set), or lazy-seq \u2014\n   and false otherwise. Strings, numbers, `nil`, booleans, keywords, symbols,\n   and plain PHP arrays are not considered collections, matching Clojure's\n   `IPersistentCollection` membership.",
        "signatures": [
            "(coll? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L535",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(coll? x)\n```\nReturns true if `x` is a persistent collection \u2014 vector, list, hash-map\n   (including sorted-map), struct, set (including sorted-set), or lazy-seq \u2014\n   and false otherwise. Strings, numbers, `nil`, booleans, keywords, symbols,\n   and plain PHP arrays are not considered collections, matching Clojure's\n   `IPersistentCollection` membership.",
            "example": "(coll? [1 2 3]) ; => true\n(coll? \"abc\") ; => false",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "comment",
        "description": "Ignores the body of the comment.",
        "doc": "```phel\n(comment &)\n```\nIgnores the body of the comment.",
        "signatures": [
            "(comment &)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/defs.phel#L144",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(comment &)\n```\nIgnores the body of the comment.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& __phel_120]"
        }
    },
    {
        "namespace": "core",
        "name": "comp",
        "description": "Takes a list of functions and returns a function that is the composition of those functions.",
        "doc": "```phel\n(comp & fs)\n```\nTakes a list of functions and returns a function that is the composition of those functions.",
        "signatures": [
            "(comp & fs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L79",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(comp & fs)\n```\nTakes a list of functions and returns a function that is the composition of those functions.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& fs]"
        }
    },
    {
        "namespace": "core",
        "name": "compact",
        "description": "Returns a lazy sequence with specified values removed from `coll`.\n  If no values are specified, removes nil values by default.",
        "doc": "```phel\n(compact coll & values)\n```\nReturns a lazy sequence with specified values removed from `coll`.\n  If no values are specified, removes nil values by default.",
        "signatures": [
            "(compact coll & values)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1253",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(compact coll & values)\n```\nReturns a lazy sequence with specified values removed from `coll`.\n  If no values are specified, removes nil values by default.",
            "example": "(compact [1 nil 2 nil 3]) ; => (1 2 3)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[coll & values]"
        }
    },
    {
        "namespace": "core",
        "name": "compare",
        "description": "Compares `x` and `y`, returning a negative\n  integer, zero, or a positive integer when `x` is less than, equal to, or\n  greater than `y`.\n\n  `nil` is less than every non-nil value and equal to itself. Throws\n  `InvalidArgumentException` when `x` and `y` come from mutually incomparable\n  categories (e.g. `(compare 1 [])`).",
        "doc": "```phel\n(compare x y)\n```\nCompares `x` and `y`, returning a negative\n  integer, zero, or a positive integer when `x` is less than, equal to, or\n  greater than `y`.\n\n  `nil` is less than every non-nil value and equal to itself. Throws\n  `InvalidArgumentException` when `x` and `y` come from mutually incomparable\n  categories (e.g. `(compare 1 [])`).",
        "signatures": [
            "(compare x y)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L422",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(compare x y)\n```\nCompares `x` and `y`, returning a negative\n  integer, zero, or a positive integer when `x` is less than, equal to, or\n  greater than `y`.\n\n  `nil` is less than every non-nil value and equal to itself. Throws\n  `InvalidArgumentException` when `x` and `y` come from mutually incomparable\n  categories (e.g. `(compare 1 [])`).",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[x y]"
        }
    },
    {
        "namespace": "core",
        "name": "compile",
        "description": "Returns the compiled PHP code string for the given form.",
        "doc": "```phel\n(compile form)\n```\nReturns the compiled PHP code string for the given form.",
        "signatures": [
            "(compile form)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L1002",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(compile form)\n```\nReturns the compiled PHP code string for the given form.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[form]"
        }
    },
    {
        "namespace": "core",
        "name": "complement",
        "description": "Returns a function that takes the same arguments as `f` and returns the opposite truth value.",
        "doc": "```phel\n(complement f)\n```\nReturns a function that takes the same arguments as `f` and returns the opposite truth value.",
        "signatures": [
            "(complement f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L102",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(complement f)\n```\nReturns a function that takes the same arguments as `f` and returns the opposite truth value.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[f]"
        }
    },
    {
        "namespace": "core",
        "name": "completing",
        "description": "Takes a reducing function `f` of 2 args and returns a fn suitable for transduce\n  by adding a 1-arity (completion) that calls `cf` (default: identity).",
        "doc": "```phel\n(completing f & args)\n```\nTakes a reducing function `f` of 2 args and returns a fn suitable for transduce\n  by adding a 1-arity (completion) that calls `cf` (default: identity).",
        "signatures": [
            "(completing f & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transducers.phel#L74",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(completing f & args)\n```\nTakes a reducing function `f` of 2 args and returns a fn suitable for transduce\n  by adding a 1-arity (completion) that calls `cf` (default: identity).",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[f & args]"
        }
    },
    {
        "namespace": "core",
        "name": "concat",
        "description": "Concatenates multiple collections into a lazy sequence.",
        "doc": "```phel\n(concat & colls)\n```\nConcatenates multiple collections into a lazy sequence.",
        "signatures": [
            "(concat & colls)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L949",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(concat & colls)\n```\nConcatenates multiple collections into a lazy sequence.",
            "example": "(concat [1 2] [3 4]) ; => (1 2 3 4)",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& colls]"
        }
    },
    {
        "namespace": "core",
        "name": "cond",
        "description": "Evaluates test/expression pairs, returning the first matching expression.",
        "doc": "```phel\n(cond & pairs)\n```\nEvaluates test/expression pairs, returning the first matching expression.",
        "signatures": [
            "(cond & pairs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/control.phel#L32",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(cond & pairs)\n```\nEvaluates test/expression pairs, returning the first matching expression.",
            "example": "(cond (< x 0) \"negative\" (> x 0) \"positive\" \"zero\") ; => \"negative\", \"positive\", or \"zero\" depending on x",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& pairs]"
        }
    },
    {
        "namespace": "core",
        "name": "cond->",
        "description": "Takes an expression and a set of test/form pairs. Threads `expr` (via `->`)\n  through each form for which the corresponding test expression is true.\n  Note that, unlike `cond` branching, `cond->` threading does not short-circuit\n  after the first true test expression.",
        "doc": "```phel\n(cond-> expr & clauses)\n```\nTakes an expression and a set of test/form pairs. Threads `expr` (via `->`)\n  through each form for which the corresponding test expression is true.\n  Note that, unlike `cond` branching, `cond->` threading does not short-circuit\n  after the first true test expression.",
        "signatures": [
            "(cond-> expr & clauses)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L288",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(cond-> expr & clauses)\n```\nTakes an expression and a set of test/form pairs. Threads `expr` (via `->`)\n  through each form for which the corresponding test expression is true.\n  Note that, unlike `cond` branching, `cond->` threading does not short-circuit\n  after the first true test expression.",
            "example": "(cond-> 1 true inc false (* 42) true (* 3)) ; => 6",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[expr & clauses]"
        }
    },
    {
        "namespace": "core",
        "name": "cond->>",
        "description": "Takes an expression and a set of test/form pairs. Threads `expr` (via `->>`)\n  through each form for which the corresponding test expression is true.\n  Note that, unlike `cond` branching, `cond->>` threading does not short-circuit\n  after the first true test expression.",
        "doc": "```phel\n(cond->> expr & clauses)\n```\nTakes an expression and a set of test/form pairs. Threads `expr` (via `->>`)\n  through each form for which the corresponding test expression is true.\n  Note that, unlike `cond` branching, `cond->>` threading does not short-circuit\n  after the first true test expression.",
        "signatures": [
            "(cond->> expr & clauses)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L305",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(cond->> expr & clauses)\n```\nTakes an expression and a set of test/form pairs. Threads `expr` (via `->>`)\n  through each form for which the corresponding test expression is true.\n  Note that, unlike `cond` branching, `cond->>` threading does not short-circuit\n  after the first true test expression.",
            "example": "(cond->> [1 2 3] true (map inc) false (filter odd?)) ; => [2 3 4]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[expr & clauses]"
        }
    },
    {
        "namespace": "core",
        "name": "condp",
        "description": "Takes a binary predicate, an expression, and a set of clauses.\n  Each clause takes the form of either:\n    test-expr result-expr\n    test-expr :>> result-fn\n  For each clause, (pred test-expr expr) is evaluated. If it returns\n  logical true, the clause is a match. If a binary clause is a match,\n  result-expr is returned. If a ternary clause with :>> is a match,\n  the result of (pred test-expr expr) is passed to result-fn and the\n  return value is the result. If no clause matches, the default value\n  is returned (if provided), otherwise an exception is thrown.",
        "doc": "```phel\n(condp pred expr & clauses)\n```\nTakes a binary predicate, an expression, and a set of clauses.\n  Each clause takes the form of either:\n    test-expr result-expr\n    test-expr :>> result-fn\n  For each clause, (pred test-expr expr) is evaluated. If it returns\n  logical true, the clause is a match. If a binary clause is a match,\n  result-expr is returned. If a ternary clause with :>> is a match,\n  the result of (pred test-expr expr) is passed to result-fn and the\n  return value is the result. If no clause matches, the default value\n  is returned (if provided), otherwise an exception is thrown.",
        "signatures": [
            "(condp pred expr & clauses)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/control.phel#L88",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(condp pred expr & clauses)\n```\nTakes a binary predicate, an expression, and a set of clauses.\n  Each clause takes the form of either:\n    test-expr result-expr\n    test-expr :>> result-fn\n  For each clause, (pred test-expr expr) is evaluated. If it returns\n  logical true, the clause is a match. If a binary clause is a match,\n  result-expr is returned. If a ternary clause with :>> is a match,\n  the result of (pred test-expr expr) is passed to result-fn and the\n  return value is the result. If no clause matches, the default value\n  is returned (if provided), otherwise an exception is thrown.",
            "example": "(condp = 1 1 \"one\" 2 \"two\" \"other\") ; => \"one\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[pred expr & clauses]"
        }
    },
    {
        "namespace": "core",
        "name": "conj",
        "description": "Returns a new collection with values added. Appends to vectors/sets, prepends to lists.",
        "doc": "```phel\n(conj)\n(conj coll)\n(conj coll value)\n(conj coll value & more)\n```\nReturns a new collection with values added. Appends to vectors/sets, prepends to lists.",
        "signatures": [
            "(conj)",
            "(conj coll)",
            "(conj coll value)",
            "(conj coll value & more)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/data-structures/#adding-elements-with-conj",
        "meta": {
            "example": "(conj [1 2] 3) ; => [1 2 3]"
        }
    },
    {
        "namespace": "core",
        "name": "conj!",
        "description": "Adds `value` to the transient collection `tcoll`, mutating it in place,\n   and returns `tcoll`. The 'addition' may happen at different 'places'\n   depending on the concrete transient type: transient vectors append at\n   the tail, transient hash-sets add the element (no-op if already\n   present), and transient hash-maps treat `value` as a `[key value]`\n   pair (or an associative collection of entries).\n   With zero arguments returns a new empty transient vector. With one\n   argument returns `tcoll` unchanged. Variadic forms reduce `conj!` over\n   the remaining values. Raises `InvalidArgumentException` when `tcoll`\n   is not a transient collection. Matches Clojure's `conj!` semantics.",
        "doc": "```phel\n(conj!)\n(conj! tcoll)\n(conj! tcoll value)\n(conj! tcoll value & more)\n```\nAdds `value` to the transient collection `tcoll`, mutating it in place,\n   and returns `tcoll`. The 'addition' may happen at different 'places'\n   depending on the concrete transient type: transient vectors append at\n   the tail, transient hash-sets add the element (no-op if already\n   present), and transient hash-maps treat `value` as a `[key value]`\n   pair (or an associative collection of entries).\n   With zero arguments returns a new empty transient vector. With one\n   argument returns `tcoll` unchanged. Variadic forms reduce `conj!` over\n   the remaining values. Raises `InvalidArgumentException` when `tcoll`\n   is not a transient collection. Matches Clojure's `conj!` semantics.",
        "signatures": [
            "(conj!)",
            "(conj! tcoll)",
            "(conj! tcoll value)",
            "(conj! tcoll value & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transients.phel#L82",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(conj!)\n(conj! tcoll)\n(conj! tcoll value)\n(conj! tcoll value & more)\n```\nAdds `value` to the transient collection `tcoll`, mutating it in place,\n   and returns `tcoll`. The 'addition' may happen at different 'places'\n   depending on the concrete transient type: transient vectors append at\n   the tail, transient hash-sets add the element (no-op if already\n   present), and transient hash-maps treat `value` as a `[key value]`\n   pair (or an associative collection of entries).\n   With zero arguments returns a new empty transient vector. With one\n   argument returns `tcoll` unchanged. Variadic forms reduce `conj!` over\n   the remaining values. Raises `InvalidArgumentException` when `tcoll`\n   is not a transient collection. Matches Clojure's `conj!` semantics.",
            "example": "(persistent (conj! (transient [1 2]) 3)) ; => [1 2 3]",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "max-arity": null,
            "arglists": "([] [tcoll] [tcoll value] [tcoll value & more])"
        }
    },
    {
        "namespace": "core",
        "name": "cons",
        "description": "Prepends an element to the beginning of a collection.",
        "doc": "```phel\n(cons x coll)\n```\nPrepends an element to the beginning of a collection.",
        "signatures": [
            "(cons x coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-basics.phel#L64",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(cons x coll)\n```\nPrepends an element to the beginning of a collection.",
            "example": "(cons 0 [1 2 3]) ; => [0 1 2 3]",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[x coll]"
        }
    },
    {
        "namespace": "core",
        "name": "constantly",
        "description": "Returns a function that always returns `x` and ignores any passed arguments.",
        "doc": "```phel\n(constantly x)\n```\nReturns a function that always returns `x` and ignores any passed arguments.",
        "signatures": [
            "(constantly x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L97",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(constantly x)\n```\nReturns a function that always returns `x` and ignores any passed arguments.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "contains-value?",
        "description": "Returns true if the value is present in the given collection, otherwise returns false.",
        "doc": "```phel\n(contains-value? coll val)\n```\nReturns true if the value is present in the given collection, otherwise returns false.",
        "signatures": [
            "(contains-value? coll val)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L820",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(contains-value? coll val)\n```\nReturns true if the value is present in the given collection, otherwise returns false.",
            "example": "(contains-value? {:a 1 :b 2} 2) ; => true",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[coll val]"
        }
    },
    {
        "namespace": "core",
        "name": "contains?",
        "description": "Returns true if key is present in collection (checks keys/indices, not values).",
        "doc": "```phel\n(contains? coll key)\n```\nReturns true if key is present in collection (checks keys/indices, not values).",
        "signatures": [
            "(contains? coll key)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L332",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(contains? coll key)\n```\nReturns true if key is present in collection (checks keys/indices, not values).",
            "example": "(contains? [10 20 30] 1) ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[coll key]"
        }
    },
    {
        "namespace": "core",
        "name": "count",
        "description": "Counts the number of elements in a sequence. Can be used on everything that implements the PHP Countable interface.\n\n  Works with lists, vectors, hash-maps, sets, strings, and PHP arrays.\n  Returns 0 for nil.",
        "doc": "```phel\n(count coll)\n```\nCounts the number of elements in a sequence. Can be used on everything that implements the PHP Countable interface.\n\n  Works with lists, vectors, hash-maps, sets, strings, and PHP arrays.\n  Returns 0 for nil.",
        "signatures": [
            "(count coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-basics.phel#L121",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(count coll)\n```\nCounts the number of elements in a sequence. Can be used on everything that implements the PHP Countable interface.\n\n  Works with lists, vectors, hash-maps, sets, strings, and PHP arrays.\n  Returns 0 for nil.",
            "example": "(count [1 2 3]) ; => 3",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "counted?",
        "description": "Returns true if `coll` can report its length in constant time \u2014 persistent\n   vectors, lists, hash-maps (including sorted-map), structs, and sets\n   (including sorted-set). Returns false for lazy sequences (counting them\n   requires realizing the whole sequence), strings, numbers, `nil`, and every\n   other non-counted type. Matches Clojure's `counted?` semantics, which\n   mirror the `clojure.lang.Counted` marker interface.",
        "doc": "```phel\n(counted? coll)\n```\nReturns true if `coll` can report its length in constant time \u2014 persistent\n   vectors, lists, hash-maps (including sorted-map), structs, and sets\n   (including sorted-set). Returns false for lazy sequences (counting them\n   requires realizing the whole sequence), strings, numbers, `nil`, and every\n   other non-counted type. Matches Clojure's `counted?` semantics, which\n   mirror the `clojure.lang.Counted` marker interface.",
        "signatures": [
            "(counted? coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L562",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(counted? coll)\n```\nReturns true if `coll` can report its length in constant time \u2014 persistent\n   vectors, lists, hash-maps (including sorted-map), structs, and sets\n   (including sorted-set). Returns false for lazy sequences (counting them\n   requires realizing the whole sequence), strings, numbers, `nil`, and every\n   other non-counted type. Matches Clojure's `counted?` semantics, which\n   mirror the `clojure.lang.Counted` marker interface.",
            "example": "(counted? [1 2 3]) ; => true\n(counted? (range)) ; => false",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "create-ns",
        "description": "Creates the given namespace if it does not already exist. Returns the\n  namespace name in display form. Existing namespaces are left untouched.",
        "doc": "```phel\n(create-ns ns-str)\n```\nCreates the given namespace if it does not already exist. Returns the\n  namespace name in display form. Existing namespaces are left untouched.",
        "signatures": [
            "(create-ns ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/ns.phel#L65",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(create-ns ns-str)\n```\nCreates the given namespace if it does not already exist. Returns the\n  namespace name in display form. Existing namespaces are left untouched.",
            "example": "(create-ns \"my-app.tmp\") ; => \"my-app.tmp\"",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "core",
        "name": "csv-seq",
        "description": "Returns a lazy sequence of rows from a CSV file.",
        "doc": "```phel\n(csv-seq filename)\n(csv-seq filename options)\n```\nReturns a lazy sequence of rows from a CSV file.",
        "signatures": [
            "(csv-seq filename)",
            "(csv-seq filename options)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L163",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(csv-seq filename)\n(csv-seq filename options)\n```\nReturns a lazy sequence of rows from a CSV file.",
            "example": "(take 10 (csv-seq \"data.csv\")) ; => [[\"col1\" \"col2\"] [\"val1\" \"val2\"] ...]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([filename] [filename options])"
        }
    },
    {
        "namespace": "core",
        "name": "cycle",
        "description": "Returns an infinite lazy sequence that cycles through the elements of\n  collection. Maps are iterated as `[key value]` pairs.",
        "doc": "```phel\n(cycle coll)\n```\nReturns an infinite lazy sequence that cycles through the elements of\n  collection. Maps are iterated as `[key value]` pairs.",
        "signatures": [
            "(cycle coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L939",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(cycle coll)\n```\nReturns an infinite lazy sequence that cycles through the elements of\n  collection. Maps are iterated as `[key value]` pairs.",
            "example": "(take 7 (cycle [1 2 3])) ; => (1 2 3 1 2 3 1)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "dec",
        "description": "Decrements `x` by one.",
        "doc": "```phel\n(dec x)\n```\nDecrements `x` by one.",
        "signatures": [
            "(dec x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L200",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(dec x)\n```\nDecrements `x` by one.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "dec'",
        "description": "Auto-promoting variant of `dec`. Integer results are returned as\n  `BigInt`; floats and rationals pass through unchanged.",
        "doc": "```phel\n(dec' x)\n```\nAuto-promoting variant of `dec`. Integer results are returned as\n  `BigInt`; floats and rationals pass through unchanged.",
        "signatures": [
            "(dec' x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L247",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(dec' x)\n```\nAuto-promoting variant of `dec`. Integer results are returned as\n  `BigInt`; floats and rationals pass through unchanged.",
            "example": "(dec' 1) ; => 0N",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "decimal?",
        "description": "Alias for `bigdec?`. Returns true when `x` is a `Phel\\Lang\\BigDecimal`.",
        "doc": "```phel\n(decimal? x)\n```\nAlias for `bigdec?`. Returns true when `x` is a `Phel\\Lang\\BigDecimal`.",
        "signatures": [
            "(decimal? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L554",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(decimal? x)\n```\nAlias for `bigdec?`. Returns true when `x` is a `Phel\\Lang\\BigDecimal`.",
            "example": "(decimal? 1.5M) ; => true",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "declare",
        "description": "Declare a global symbol before it is defined.",
        "doc": "Declare a global symbol before it is defined.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core.phel#L187",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "Declare a global symbol before it is defined.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[name]"
        }
    },
    {
        "namespace": "core",
        "name": "dedupe",
        "description": "Returns a lazy sequence with consecutive duplicate values removed in `coll`.\n  When called with no args, returns a transducer.",
        "doc": "```phel\n(dedupe & args)\n```\nReturns a lazy sequence with consecutive duplicate values removed in `coll`.\n  When called with no args, returns a transducer.",
        "signatures": [
            "(dedupe & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1211",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(dedupe & args)\n```\nReturns a lazy sequence with consecutive duplicate values removed in `coll`.\n  When called with no args, returns a transducer.",
            "example": "(dedupe [1 1 2 2 2 3 1 1]) ; => (1 2 3 1)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& args]"
        }
    },
    {
        "namespace": "core",
        "name": "deep-merge",
        "description": "Recursively merges data structures.",
        "doc": "```phel\n(deep-merge & args)\n```\nRecursively merges data structures.",
        "signatures": [
            "(deep-merge & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L286",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(deep-merge & args)\n```\nRecursively merges data structures.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& args]"
        }
    },
    {
        "namespace": "core",
        "name": "def",
        "description": "This special form binds a value to a global symbol.",
        "doc": "```phel\n(def name meta? value)\n```\nThis special form binds a value to a global symbol.",
        "signatures": [
            "(def name meta? value)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/global-and-local-bindings/#definition-def",
        "meta": {
            "example": "(def my-value 42)"
        }
    },
    {
        "namespace": "core",
        "name": "def-",
        "description": "Define a private value that will not be exported.",
        "doc": "Define a private value that will not be exported.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/defs.phel#L97",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "Define a private value that will not be exported.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[name value]"
        }
    },
    {
        "namespace": "core",
        "name": "defexception",
        "description": "Define a new exception.",
        "doc": "```phel\n(defexception name)\n```\nDefine a new exception.",
        "signatures": [
            "(defexception name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/defs.phel#L130",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(defexception name)\n```\nDefine a new exception.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[name]"
        }
    },
    {
        "namespace": "core",
        "name": "defexception*",
        "description": "Defines a new exception.",
        "doc": "```phel\n(defexception my-ex)\n```\nDefine a new exception.",
        "signatures": [
            "(defexception name)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/exceptions",
        "meta": {
            "example": "(defexception my-error)"
        }
    },
    {
        "namespace": "core",
        "name": "definterface",
        "description": "An interface in Phel defines an abstract set of functions. It is directly mapped to a PHP interface. An interface can be defined by using the definterface macro.",
        "doc": "```phel\n(definterface name & fns)\n```\nAn interface in Phel defines an abstract set of functions. It is directly mapped to a PHP interface. An interface can be defined by using the definterface macro.",
        "signatures": [
            "(definterface name & fns)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L24",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(definterface name & fns)\n```\nAn interface in Phel defines an abstract set of functions. It is directly mapped to a PHP interface. An interface can be defined by using the definterface macro.",
            "example": "(definterface name & fns)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[name & fns]"
        }
    },
    {
        "namespace": "core",
        "name": "definterface*",
        "description": "An interface in Phel defines an abstract set of functions. It is directly mapped to a PHP interface. An interface can be defined by using the definterface macro.",
        "doc": "```phel\n(definterface name & fns)\n```\nAn interface in Phel defines an abstract set of functions. It is directly mapped to a PHP interface. An interface can be defined by using the definterface macro.",
        "signatures": [
            "(definterface name & fns)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/interfaces/#defining-interfaces",
        "meta": {
            "example": "(definterface Greeter (greet [name]))"
        }
    },
    {
        "namespace": "core",
        "name": "defmacro",
        "description": "Define a macro.",
        "doc": "Define a macro.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/defs.phel#L102",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "Define a macro.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[name & fdecl]"
        }
    },
    {
        "namespace": "core",
        "name": "defmacro-",
        "description": "Define a private macro that will not be exported.",
        "doc": "```phel\n(defmacro- name & fdecl)\n```\nDefine a private macro that will not be exported.",
        "signatures": [
            "(defmacro- name & fdecl)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/defs.phel#L112",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(defmacro- name & fdecl)\n```\nDefine a private macro that will not be exported.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[name & fdecl]"
        }
    },
    {
        "namespace": "core",
        "name": "defmethod",
        "description": "Registers a method implementation for a multimethod.\n\n  `multi-name` is the name of the multimethod defined by `defmulti`.\n  When extending a multimethod from a different namespace, fully qualify\n  the multi-name (e.g. `phel\\test/assert-expr`) so the methods table is\n  resolved in the multimethod's home namespace.\n  `dispatch-val` is the value that triggers this method.\n  `args` and `body` define the function implementation.",
        "doc": "```phel\n(defmethod multi-name dispatch-val & fn-tail)\n```\nRegisters a method implementation for a multimethod.\n\n  `multi-name` is the name of the multimethod defined by `defmulti`.\n  When extending a multimethod from a different namespace, fully qualify\n  the multi-name (e.g. `phel\\test/assert-expr`) so the methods table is\n  resolved in the multimethod's home namespace.\n  `dispatch-val` is the value that triggers this method.\n  `args` and `body` define the function implementation.",
        "signatures": [
            "(defmethod multi-name dispatch-val & fn-tail)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L769",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(defmethod multi-name dispatch-val & fn-tail)\n```\nRegisters a method implementation for a multimethod.\n\n  `multi-name` is the name of the multimethod defined by `defmulti`.\n  When extending a multimethod from a different namespace, fully qualify\n  the multi-name (e.g. `phel\\test/assert-expr`) so the methods table is\n  resolved in the multimethod's home namespace.\n  `dispatch-val` is the value that triggers this method.\n  `args` and `body` define the function implementation.",
            "example": "(defmethod area :circle [{:radius r}] (* 3.14159 r r))",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[multi-name dispatch-val & fn-tail]"
        }
    },
    {
        "namespace": "core",
        "name": "defmulti",
        "description": "Defines a multimethod. `dispatch-fn` is called on the arguments to\n  produce a dispatch value, which is then used to select the appropriate\n  method registered via `defmethod`.\n\n  An optional docstring may be provided between `name` and `dispatch-fn`.\n\n  If no method matches the dispatch value, the `:default` method is used\n  (if defined), otherwise an error is thrown.",
        "doc": "```phel\n(defmulti name & args)\n```\nDefines a multimethod. `dispatch-fn` is called on the arguments to\n  produce a dispatch value, which is then used to select the appropriate\n  method registered via `defmethod`.\n\n  An optional docstring may be provided between `name` and `dispatch-fn`.\n\n  If no method matches the dispatch value, the `:default` method is used\n  (if defined), otherwise an error is thrown.",
        "signatures": [
            "(defmulti name & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L715",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(defmulti name & args)\n```\nDefines a multimethod. `dispatch-fn` is called on the arguments to\n  produce a dispatch value, which is then used to select the appropriate\n  method registered via `defmethod`.\n\n  An optional docstring may be provided between `name` and `dispatch-fn`.\n\n  If no method matches the dispatch value, the `:default` method is used\n  (if defined), otherwise an error is thrown.",
            "example": "(defmulti area \"Area of shape.\" :shape)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[name & args]"
        }
    },
    {
        "namespace": "core",
        "name": "defn",
        "description": "Define a new global function.",
        "doc": "Define a new global function.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/defs.phel#L92",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "Define a new global function.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[name & fdecl]"
        }
    },
    {
        "namespace": "core",
        "name": "defn-",
        "description": "Define a private function that will not be exported.",
        "doc": "```phel\n(defn- name & fdecl)\n```\nDefine a private function that will not be exported.",
        "signatures": [
            "(defn- name & fdecl)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/defs.phel#L107",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(defn- name & fdecl)\n```\nDefine a private function that will not be exported.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[name & fdecl]"
        }
    },
    {
        "namespace": "core",
        "name": "defprotocol",
        "description": "Defines a protocol with the given method signatures. Each method signature\n  is a list of (method-name [args]).\n\n  Creates a dispatching function for each method that dispatches on the type\n  of the first argument. Use `extend-type` to add implementations.\n\n  A `:default` type can be registered via `extend-type` as a fallback when\n  no specific type implementation is found.",
        "doc": "```phel\n(defprotocol protocol-name & method-specs)\n```\nDefines a protocol with the given method signatures. Each method signature\n  is a list of (method-name [args]).\n\n  Creates a dispatching function for each method that dispatches on the type\n  of the first argument. Use `extend-type` to add implementations.\n\n  A `:default` type can be registered via `extend-type` as a fallback when\n  no specific type implementation is found.",
        "signatures": [
            "(defprotocol protocol-name & method-specs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L414",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(defprotocol protocol-name & method-specs)\n```\nDefines a protocol with the given method signatures. Each method signature\n  is a list of (method-name [args]).\n\n  Creates a dispatching function for each method that dispatches on the type\n  of the first argument. Use `extend-type` to add implementations.\n\n  A `:default` type can be registered via `extend-type` as a fallback when\n  no specific type implementation is found.",
            "example": "(defprotocol Stringable (to-string [this]))",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[protocol-name & method-specs]"
        }
    },
    {
        "namespace": "core",
        "name": "defrecord",
        "description": "Defines a record type with the given fields, matching Clojure's `defrecord`.\n\n  Expands to a `defstruct` plus Clojure-style factory functions:\n  - `Name` \u2014 positional constructor (from `defstruct`)\n  - `Name?` \u2014 type predicate (from `defstruct`)\n  - `->Name` \u2014 positional factory, identical to `Name`\n  - `map->Name` \u2014 map factory that takes `{:field value ...}`\n\n  An optional tail of protocol/method forms is spliced into an `extend-type`\n  call, so inline protocol implementations work exactly like Clojure's\n  `defrecord` body. Only Phel protocols are supported in the inline tail;\n  PHP interface implementations remain on `defstruct`.",
        "doc": "```phel\n(defrecord name fields & impls)\n```\nDefines a record type with the given fields, matching Clojure's `defrecord`.\n\n  Expands to a `defstruct` plus Clojure-style factory functions:\n  - `Name` \u2014 positional constructor (from `defstruct`)\n  - `Name?` \u2014 type predicate (from `defstruct`)\n  - `->Name` \u2014 positional factory, identical to `Name`\n  - `map->Name` \u2014 map factory that takes `{:field value ...}`\n\n  An optional tail of protocol/method forms is spliced into an `extend-type`\n  call, so inline protocol implementations work exactly like Clojure's\n  `defrecord` body. Only Phel protocols are supported in the inline tail;\n  PHP interface implementations remain on `defstruct`.",
        "signatures": [
            "(defrecord name fields & impls)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L652",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(defrecord name fields & impls)\n```\nDefines a record type with the given fields, matching Clojure's `defrecord`.\n\n  Expands to a `defstruct` plus Clojure-style factory functions:\n  - `Name` \u2014 positional constructor (from `defstruct`)\n  - `Name?` \u2014 type predicate (from `defstruct`)\n  - `->Name` \u2014 positional factory, identical to `Name`\n  - `map->Name` \u2014 map factory that takes `{:field value ...}`\n\n  An optional tail of protocol/method forms is spliced into an `extend-type`\n  call, so inline protocol implementations work exactly like Clojure's\n  `defrecord` body. Only Phel protocols are supported in the inline tail;\n  PHP interface implementations remain on `defstruct`.",
            "example": "(defrecord Point [x y] Drawable (draw [this canvas] ...))",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[name fields & impls]"
        }
    },
    {
        "namespace": "core",
        "name": "defstruct",
        "description": "A Struct is a special kind of Map. It only supports a predefined number of keys and is associated to a global name. The Struct not only defines itself but also a predicate function.",
        "doc": "```phel\n(defstruct name keys & implementations)\n```\nA Struct is a special kind of Map. It only supports a predefined number of keys and is associated to a global name. The Struct not only defines itself but also a predicate function.",
        "signatures": [
            "(defstruct name keys & implementations)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/defs.phel#L117",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(defstruct name keys & implementations)\n```\nA Struct is a special kind of Map. It only supports a predefined number of keys and is associated to a global name. The Struct not only defines itself but also a predicate function.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[name keys & implementations]"
        }
    },
    {
        "namespace": "core",
        "name": "defstruct*",
        "description": "A Struct is a special kind of Map. It only supports a predefined number of keys and is associated to a global name. The Struct not only defines itself but also a predicate function.",
        "doc": "```phel\n(defstruct my-struct [a b c])\n```\nA Struct is a special kind of Map. It only supports a predefined number of keys and is associated to a global name. The Struct not only defines itself but also a predicate function.",
        "signatures": [
            "(defstruct name [keys*])"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/data-structures/#structs",
        "meta": {
            "example": "(defstruct point [x y])"
        }
    },
    {
        "namespace": "core",
        "name": "deftype",
        "description": "Defines a type with the given fields, matching Clojure's `deftype` syntax.\n\n  Expands to a `defstruct` plus a Clojure-style positional factory:\n  - `Name` \u2014 positional constructor (from `defstruct`)\n  - `Name?` \u2014 type predicate (from `defstruct`)\n  - `->Name` \u2014 positional factory, identical to `Name`\n\n  Unlike `defrecord`, no `map->Name` factory is generated.\n\n  An optional tail of protocol/method forms is spliced into an `extend-type`\n  call. Only Phel protocols are supported in the inline tail.\n\n  Deviation from Clojure: Phel's `deftype` shares the map-backed\n  `defstruct` infrastructure, so instances remain map-like (keys are\n  accessible via `get`). Clojure's `deftype` produces a non-map type;\n  if you need that semantic, use native PHP interop.",
        "doc": "```phel\n(deftype name fields & impls)\n```\nDefines a type with the given fields, matching Clojure's `deftype` syntax.\n\n  Expands to a `defstruct` plus a Clojure-style positional factory:\n  - `Name` \u2014 positional constructor (from `defstruct`)\n  - `Name?` \u2014 type predicate (from `defstruct`)\n  - `->Name` \u2014 positional factory, identical to `Name`\n\n  Unlike `defrecord`, no `map->Name` factory is generated.\n\n  An optional tail of protocol/method forms is spliced into an `extend-type`\n  call. Only Phel protocols are supported in the inline tail.\n\n  Deviation from Clojure: Phel's `deftype` shares the map-backed\n  `defstruct` infrastructure, so instances remain map-like (keys are\n  accessible via `get`). Clojure's `deftype` produces a non-map type;\n  if you need that semantic, use native PHP interop.",
        "signatures": [
            "(deftype name fields & impls)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L682",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(deftype name fields & impls)\n```\nDefines a type with the given fields, matching Clojure's `deftype` syntax.\n\n  Expands to a `defstruct` plus a Clojure-style positional factory:\n  - `Name` \u2014 positional constructor (from `defstruct`)\n  - `Name?` \u2014 type predicate (from `defstruct`)\n  - `->Name` \u2014 positional factory, identical to `Name`\n\n  Unlike `defrecord`, no `map->Name` factory is generated.\n\n  An optional tail of protocol/method forms is spliced into an `extend-type`\n  call. Only Phel protocols are supported in the inline tail.\n\n  Deviation from Clojure: Phel's `deftype` shares the map-backed\n  `defstruct` infrastructure, so instances remain map-like (keys are\n  accessible via `get`). Clojure's `deftype` produces a non-map type;\n  if you need that semantic, use native PHP interop.",
            "example": "(deftype PointT [x y] Drawable (draw [this canvas] ...))",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[name fields & impls]"
        }
    },
    {
        "namespace": "core",
        "name": "delay",
        "description": "Takes a body of expressions and yields a Delay object that will invoke the\n  body only the first time it is forced (via force or deref/@), caching the result.",
        "doc": "```phel\n(delay & body)\n```\nTakes a body of expressions and yields a Delay object that will invoke the\n  body only the first time it is forced (via force or deref/@), caching the result.",
        "signatures": [
            "(delay & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/lazy.phel#L12",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(delay & body)\n```\nTakes a body of expressions and yields a Delay object that will invoke the\n  body only the first time it is forced (via force or deref/@), caching the result.",
            "example": "(def d (delay (println \"computing\") 42))",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& body]"
        }
    },
    {
        "namespace": "core",
        "name": "delay?",
        "description": "Returns true if x is a Delay.",
        "doc": "```phel\n(delay? x)\n```\nReturns true if x is a Delay.",
        "signatures": [
            "(delay? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/lazy.phel#L29",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(delay? x)\n```\nReturns true if x is a Delay.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "deliver",
        "description": "Delivers `value` to `p` if it is still unrealized. Returns `p` on\n  first delivery, `nil` if `p` was already delivered.",
        "doc": "```phel\n(deliver p value)\n```\nDelivers `value` to `p` if it is still unrealized. Returns `p` on\n  first delivery, `nil` if `p` was already delivered.",
        "signatures": [
            "(deliver p value)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/async.phel#L151",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(deliver p value)\n```\nDelivers `value` to `p` if it is still unrealized. Returns `p` on\n  first delivery, `nil` if `p` was already delivered.",
            "example": "(deliver (promise) 7)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[p value]"
        }
    },
    {
        "namespace": "core",
        "name": "denominator",
        "description": "Returns the denominator of `r`. For rationals the denominator collapses\n  to a PHP int when it fits; integers and `BigInt` values report `1`.",
        "doc": "```phel\n(denominator r)\n```\nReturns the denominator of `r`. For rationals the denominator collapses\n  to a PHP int when it fits; integers and `BigInt` values report `1`.",
        "signatures": [
            "(denominator r)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L605",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(denominator r)\n```\nReturns the denominator of `r`. For rationals the denominator collapses\n  to a PHP int when it fits; integers and `BigInt` values report `1`.",
            "example": "(denominator 1/2) ; => 2\n(denominator 5) ; => 1",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[r]"
        }
    },
    {
        "namespace": "core",
        "name": "deref",
        "description": "Returns the current value inside an atom or var.\n\n  For atoms returns the current cell value; for `Var` instances returns the\n  current root binding from the namespace registry.\n\n  With three arguments, and when `variable` is a future or promise, blocks\n  for at most `timeout-ms` milliseconds waiting for it to resolve. If the\n  awaitable has not completed within the timeout, returns `timeout-val`.",
        "doc": "```phel\n(deref variable & args)\n```\nReturns the current value inside an atom or var.\n\n  For atoms returns the current cell value; for `Var` instances returns the\n  current root binding from the namespace registry.\n\n  With three arguments, and when `variable` is a future or promise, blocks\n  for at most `timeout-ms` milliseconds waiting for it to resolve. If the\n  awaitable has not completed within the timeout, returns `timeout-val`.",
        "signatures": [
            "(deref variable & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L59",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(deref variable & args)\n```\nReturns the current value inside an atom or var.\n\n  For atoms returns the current cell value; for `Var` instances returns the\n  current root binding from the namespace registry.\n\n  With three arguments, and when `variable` is a future or promise, blocks\n  for at most `timeout-ms` milliseconds waiting for it to resolve. If the\n  awaitable has not completed within the timeout, returns `timeout-val`.",
            "example": "(deref (atom 42)) ; => 42\n(deref #'phel.core/map) ; => <fn>",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[variable & args]"
        }
    },
    {
        "namespace": "core",
        "name": "derive",
        "description": "Establishes a parent/child relationship between child and parent keywords.\n  With two arguments, mutates the global hierarchy and returns nil.\n  With a hierarchy `h`, returns a new hierarchy with the relationship added;\n  the original hierarchy is not modified. Throws on cyclic derivation.",
        "doc": "```phel\n(derive child parent)\n(derive h child parent)\n```\nEstablishes a parent/child relationship between child and parent keywords.\n  With two arguments, mutates the global hierarchy and returns nil.\n  With a hierarchy `h`, returns a new hierarchy with the relationship added;\n  the original hierarchy is not modified. Throws on cyclic derivation.",
        "signatures": [
            "(derive child parent)",
            "(derive h child parent)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L230",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(derive child parent)\n(derive h child parent)\n```\nEstablishes a parent/child relationship between child and parent keywords.\n  With two arguments, mutates the global hierarchy and returns nil.\n  With a hierarchy `h`, returns a new hierarchy with the relationship added;\n  the original hierarchy is not modified. Throws on cyclic derivation.",
            "example": "(derive :square :shape)",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "max-arity": 3,
            "arglists": "([child parent] [h child parent])"
        }
    },
    {
        "namespace": "core",
        "name": "descendants",
        "description": "Returns the set of all descendants of tag, or nil.\n  Only `derive`-recorded relationships are walked: type inheritance\n  (PHP class hierarchy, protocol extensions) is not surfaced, matching\n  Clojure's contract.",
        "doc": "```phel\n(descendants tag)\n(descendants h tag)\n```\nReturns the set of all descendants of tag, or nil.\n  Only `derive`-recorded relationships are walked: type inheritance\n  (PHP class hierarchy, protocol extensions) is not surfaced, matching\n  Clojure's contract.",
        "signatures": [
            "(descendants tag)",
            "(descendants h tag)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L309",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(descendants tag)\n(descendants h tag)\n```\nReturns the set of all descendants of tag, or nil.\n  Only `derive`-recorded relationships are walked: type inheritance\n  (PHP class hierarchy, protocol extensions) is not surfaced, matching\n  Clojure's contract.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([tag] [h tag])"
        }
    },
    {
        "namespace": "core",
        "name": "difference",
        "description": "Difference between multiple sets into a new one.",
        "doc": "```phel\n(difference set & sets)\n```\nDifference between multiple sets into a new one.",
        "signatures": [
            "(difference set & sets)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L54",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(difference set & sets)\n```\nDifference between multiple sets into a new one.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[set & sets]"
        }
    },
    {
        "namespace": "core",
        "name": "disj",
        "description": "Returns a new set that does not contain the given key(s). Works on hash-sets and sorted-sets.\n  Removing a non-existent key is a no-op. Returns `nil` when called on `nil`.",
        "doc": "```phel\n(disj set)\n(disj set k)\n(disj set k & ks)\n```\nReturns a new set that does not contain the given key(s). Works on hash-sets and sorted-sets.\n  Removing a non-existent key is a no-op. Returns `nil` when called on `nil`.",
        "signatures": [
            "(disj set)",
            "(disj set k)",
            "(disj set k & ks)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L225",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(disj set)\n(disj set k)\n(disj set k & ks)\n```\nReturns a new set that does not contain the given key(s). Works on hash-sets and sorted-sets.\n  Removing a non-existent key is a no-op. Returns `nil` when called on `nil`.",
            "example": "(disj #{1 2 3} 2) ; => #{1 3}",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "max-arity": null,
            "arglists": "([set] [set k] [set k & ks])"
        }
    },
    {
        "namespace": "core",
        "name": "disj!",
        "description": "Removes one or more elements from a transient set, mutating it in place.\n   Raises `InvalidArgumentException` when `tcoll` is not a transient set.\n   Matches Clojure's `disj!` semantics.",
        "doc": "```phel\n(disj! tcoll)\n(disj! tcoll value)\n(disj! tcoll value & more)\n```\nRemoves one or more elements from a transient set, mutating it in place.\n   Raises `InvalidArgumentException` when `tcoll` is not a transient set.\n   Matches Clojure's `disj!` semantics.",
        "signatures": [
            "(disj! tcoll)",
            "(disj! tcoll value)",
            "(disj! tcoll value & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transients.phel#L166",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(disj! tcoll)\n(disj! tcoll value)\n(disj! tcoll value & more)\n```\nRemoves one or more elements from a transient set, mutating it in place.\n   Raises `InvalidArgumentException` when `tcoll` is not a transient set.\n   Matches Clojure's `disj!` semantics.",
            "example": "(persistent! (disj! (transient #{1 2 3}) 2)) ; => #{1 3}",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "max-arity": null,
            "arglists": "([tcoll] [tcoll value] [tcoll value & more])"
        }
    },
    {
        "namespace": "core",
        "name": "display-ns",
        "description": "Returns the display (dot-separated) form of a namespace string.\n  Equivalent to `canonical-ns`; kept as a separate name so call sites\n  read intent (display vs. canonicalize).",
        "doc": "```phel\n(display-ns ns-str)\n```\nReturns the display (dot-separated) form of a namespace string.\n  Equivalent to `canonical-ns`; kept as a separate name so call sites\n  read intent (display vs. canonicalize).",
        "signatures": [
            "(display-ns ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/ns.phel#L26",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(display-ns ns-str)\n```\nReturns the display (dot-separated) form of a namespace string.\n  Equivalent to `canonical-ns`; kept as a separate name so call sites\n  read intent (display vs. canonicalize).",
            "example": "(display-ns \"phel\\core\") ; => \"phel.core\"",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "core",
        "name": "dissoc",
        "description": "Returns `ds` without the given keys. With no keys returns `ds` unchanged.",
        "doc": "```phel\n(dissoc ds & ks)\n```\nReturns `ds` without the given keys. With no keys returns `ds` unchanged.",
        "signatures": [
            "(dissoc ds & ks)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/sequences.phel#L292",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(dissoc ds & ks)\n```\nReturns `ds` without the given keys. With no keys returns `ds` unchanged.",
            "example": "(dissoc {:a 1 :b 2} :b) ; => {:a 1}\n(dissoc {:a 1 :b 2 :c 3} :a :c) ; => {:b 2}",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[ds & ks]"
        }
    },
    {
        "namespace": "core",
        "name": "dissoc!",
        "description": "Dissociates one or more keys from a transient map, mutating it in place.\n   Raises `InvalidArgumentException` when `tcoll` is not a transient map.\n   Matches Clojure's `dissoc!` semantics.",
        "doc": "```phel\n(dissoc! tcoll)\n(dissoc! tcoll key)\n(dissoc! tcoll key & ks)\n```\nDissociates one or more keys from a transient map, mutating it in place.\n   Raises `InvalidArgumentException` when `tcoll` is not a transient map.\n   Matches Clojure's `dissoc!` semantics.",
        "signatures": [
            "(dissoc! tcoll)",
            "(dissoc! tcoll key)",
            "(dissoc! tcoll key & ks)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transients.phel#L145",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(dissoc! tcoll)\n(dissoc! tcoll key)\n(dissoc! tcoll key & ks)\n```\nDissociates one or more keys from a transient map, mutating it in place.\n   Raises `InvalidArgumentException` when `tcoll` is not a transient map.\n   Matches Clojure's `dissoc!` semantics.",
            "example": "(persistent! (dissoc! (transient {:a 1 :b 2}) :a)) ; => {:b 2}",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "max-arity": null,
            "arglists": "([tcoll] [tcoll key] [tcoll key & ks])"
        }
    },
    {
        "namespace": "core",
        "name": "dissoc-in",
        "description": "Dissociates a value from a nested data structure at the given path.",
        "doc": "```phel\n(dissoc-in ds [k & ks])\n```\nDissociates a value from a nested data structure at the given path.",
        "signatures": [
            "(dissoc-in ds [k & ks])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L336",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(dissoc-in ds [k & ks])\n```\nDissociates a value from a nested data structure at the given path.",
            "example": "(dissoc-in {:a {:b 1 :c 2}} [:a :b]) ; => {:a {:c 2}}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ds __phel_981]"
        }
    },
    {
        "namespace": "core",
        "name": "distinct",
        "description": "Returns a lazy sequence with duplicated values removed in `coll`.\n  When called with no args, returns a transducer.",
        "doc": "```phel\n(distinct & args)\n```\nReturns a lazy sequence with duplicated values removed in `coll`.\n  When called with no args, returns a transducer.",
        "signatures": [
            "(distinct & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L613",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(distinct & args)\n```\nReturns a lazy sequence with duplicated values removed in `coll`.\n  When called with no args, returns a transducer.",
            "example": "(distinct [1 2 1 3 2 4 3]) ; => (1 2 3 4)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& args]"
        }
    },
    {
        "namespace": "core",
        "name": "do",
        "description": "Evaluates the expressions in order and returns the value of the last expression. If no expression is given, nil is returned.",
        "doc": "```phel\n(do expr*)\n```\nEvaluates the expressions in order and returns the value of the last expression. If no expression is given, nil is returned.",
        "signatures": [
            "(do expr*)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/control-flow/#statements-do",
        "meta": {
            "example": "(do (println \"Hello\") (+ 1 2)) ; prints \"Hello\", returns 3"
        }
    },
    {
        "namespace": "core",
        "name": "doall",
        "description": "Forces realization of a lazy sequence and returns it as a vector.",
        "doc": "```phel\n(doall coll)\n```\nForces realization of a lazy sequence and returns it as a vector.",
        "signatures": [
            "(doall coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1063",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(doall coll)\n```\nForces realization of a lazy sequence and returns it as a vector.",
            "example": "(doall (map println [1 2 3])) ; => [nil nil nil]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "dofor",
        "description": "Repeatedly executes body for side effects with bindings and modifiers as\n  provided by for. Returns nil.",
        "doc": "```phel\n(dofor head & body)\n```\nRepeatedly executes body for side effects with bindings and modifiers as\n  provided by for. Returns nil.",
        "signatures": [
            "(dofor head & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L328",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(dofor head & body)\n```\nRepeatedly executes body for side effects with bindings and modifiers as\n  provided by for. Returns nil.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[head & body]"
        }
    },
    {
        "namespace": "core",
        "name": "dorun",
        "description": "Forces realization of a lazy sequence for side effects, returns nil.",
        "doc": "```phel\n(dorun coll)\n```\nForces realization of a lazy sequence for side effects, returns nil.",
        "signatures": [
            "(dorun coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1071",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(dorun coll)\n```\nForces realization of a lazy sequence for side effects, returns nil.",
            "example": "(dorun (map println [1 2 3])) ; => nil",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "doseq",
        "description": "Repeatedly executes body for side effects with Clojure-style bindings.\n  `(doseq [x coll] body)` runs `body` once per element of `coll`. When `coll`\n  is a map, each iteration sees a `[k v]` entry pair, so destructuring works\n  just like in Clojure: `(doseq [[k v] m] ...)`. Supports `:when`, `:while`,\n  and `:let` modifiers between bindings.",
        "doc": "```phel\n(doseq seq-exprs & body)\n```\nRepeatedly executes body for side effects with Clojure-style bindings.\n  `(doseq [x coll] body)` runs `body` once per element of `coll`. When `coll`\n  is a map, each iteration sees a `[k v]` entry pair, so destructuring works\n  just like in Clojure: `(doseq [[k v] m] ...)`. Supports `:when`, `:while`,\n  and `:let` modifiers between bindings.",
        "signatures": [
            "(doseq seq-exprs & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L382",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(doseq seq-exprs & body)\n```\nRepeatedly executes body for side effects with Clojure-style bindings.\n  `(doseq [x coll] body)` runs `body` once per element of `coll`. When `coll`\n  is a map, each iteration sees a `[k v]` entry pair, so destructuring works\n  just like in Clojure: `(doseq [[k v] m] ...)`. Supports `:when`, `:while`,\n  and `:let` modifiers between bindings.",
            "example": "(doseq [x [1 2 3]] (println x))\n(doseq [[k v] {:a 1 :b 2}] (println k v))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[seq-exprs & body]"
        }
    },
    {
        "namespace": "core",
        "name": "doseq-iterable",
        "description": "Internal helper used by the `doseq` macro expansion. Returns a value\n  suitable for Clojure-style iteration: maps are expanded to a sequence of\n  `[k v]` pair vectors so destructuring binds entries as in Clojure. Every\n  other value is returned unchanged.",
        "doc": "```phel\n(doseq-iterable coll)\n```\nInternal helper used by the `doseq` macro expansion. Returns a value\n  suitable for Clojure-style iteration: maps are expanded to a sequence of\n  `[k v]` pair vectors so destructuring binds entries as in Clojure. Every\n  other value is returned unchanged.",
        "signatures": [
            "(doseq-iterable coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L341",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(doseq-iterable coll)\n```\nInternal helper used by the `doseq` macro expansion. Returns a value\n  suitable for Clojure-style iteration: maps are expanded to a sequence of\n  `[k v]` pair vectors so destructuring binds entries as in Clojure. Every\n  other value is returned unchanged.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "dotimes",
        "description": "Evaluates body `n` times with `binding` bound to integers from 0 to n-1.\n  Returns nil.",
        "doc": "```phel\n(dotimes [binding n] & body)\n```\nEvaluates body `n` times with `binding` bound to integers from 0 to n-1.\n  Returns nil.",
        "signatures": [
            "(dotimes [binding n] & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/loops.phel#L17",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(dotimes [binding n] & body)\n```\nEvaluates body `n` times with `binding` bound to integers from 0 to n-1.\n  Returns nil.",
            "example": "(dotimes [i 5] (println i))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[__phel_2314 & body]"
        }
    },
    {
        "namespace": "core",
        "name": "doto",
        "description": "Evaluates x then calls all of the methods and functions with the\n  value of x supplied at the front of the given arguments. The forms\n  are evaluated in order. Returns x.",
        "doc": "```phel\n(doto x & forms)\n```\nEvaluates x then calls all of the methods and functions with the\n  value of x supplied at the front of the given arguments. The forms\n  are evaluated in order. Returns x.",
        "signatures": [
            "(doto x & forms)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L274",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(doto x & forms)\n```\nEvaluates x then calls all of the methods and functions with the\n  value of x supplied at the front of the given arguments. The forms\n  are evaluated in order. Returns x.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[x & forms]"
        }
    },
    {
        "namespace": "core",
        "name": "double",
        "description": "Coerces `x` to a double. In PHP there is no distinction between float and\n   double; both map to the same native PHP float type. Alias for `float`.",
        "doc": "```phel\n(double x)\n```\nCoerces `x` to a double. In PHP there is no distinction between float and\n   double; both map to the same native PHP float type. Alias for `float`.",
        "signatures": [
            "(double x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L346",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(double x)\n```\nCoerces `x` to a double. In PHP there is no distinction between float and\n   double; both map to the same native PHP float type. Alias for `float`.",
            "example": "(double 1) ; => 1.0",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "double-array",
        "description": "Creates a PHP array of doubles (same as float-array in PHP). Accepts the same\n  arities and semantics as `float-array`.",
        "doc": "```phel\n(double-array size-or-seq)\n(double-array size init-val-or-seq)\n```\nCreates a PHP array of doubles (same as float-array in PHP). Accepts the same\n  arities and semantics as `float-array`.",
        "signatures": [
            "(double-array size-or-seq)",
            "(double-array size init-val-or-seq)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/arrays.phel#L185",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(double-array size-or-seq)\n(double-array size init-val-or-seq)\n```\nCreates a PHP array of doubles (same as float-array in PHP). Accepts the same\n  arities and semantics as `float-array`.",
            "example": "(double-array 3) ; => PHP array [0.0, 0.0, 0.0]\n(double-array 4 1.5) ; => PHP array [1.5, 1.5, 1.5, 1.5]",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([size-or-seq] [size init-val-or-seq])"
        }
    },
    {
        "namespace": "core",
        "name": "double?",
        "description": "Returns true if `x` is a floating-point number, false otherwise.\n   Alias for `float?`, matching Clojure's `double?` naming. Since Phel\n   uses PHP floats (IEEE 754 doubles) there is no separate single-precision\n   float type.",
        "doc": "```phel\n(double? x)\n```\nReturns true if `x` is a floating-point number, false otherwise.\n   Alias for `float?`, matching Clojure's `double?` naming. Since Phel\n   uses PHP floats (IEEE 754 doubles) there is no separate single-precision\n   float type.",
        "signatures": [
            "(double? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L202",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(double? x)\n```\nReturns true if `x` is a floating-point number, false otherwise.\n   Alias for `float?`, matching Clojure's `double?` naming. Since Phel\n   uses PHP floats (IEEE 754 doubles) there is no separate single-precision\n   float type.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "drop",
        "description": "Drops the first `n` elements of `coll`. Returns a lazy sequence.\n  When called with n only, returns a transducer.",
        "doc": "```phel\n(drop n & args)\n```\nDrops the first `n` elements of `coll`. Returns a lazy sequence.\n  When called with n only, returns a transducer.",
        "signatures": [
            "(drop n & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L355",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(drop n & args)\n```\nDrops the first `n` elements of `coll`. Returns a lazy sequence.\n  When called with n only, returns a transducer.",
            "example": "(drop 2 [1 2 3 4 5]) ; => (3 4 5)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[n & args]"
        }
    },
    {
        "namespace": "core",
        "name": "drop-last",
        "description": "Drops the last `n` elements of `coll`. `n` defaults to `1` when omitted,\n   matching Clojure's `(drop-last coll)` single-arity form. Returns an empty\n   sequence when `coll` is `nil`. Works with any seqable collection including\n   lazy sequences and ranges.",
        "doc": "```phel\n(drop-last coll)\n(drop-last n coll)\n```\nDrops the last `n` elements of `coll`. `n` defaults to `1` when omitted,\n   matching Clojure's `(drop-last coll)` single-arity form. Returns an empty\n   sequence when `coll` is `nil`. Works with any seqable collection including\n   lazy sequences and ranges.",
        "signatures": [
            "(drop-last coll)",
            "(drop-last n coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L378",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(drop-last coll)\n(drop-last n coll)\n```\nDrops the last `n` elements of `coll`. `n` defaults to `1` when omitted,\n   matching Clojure's `(drop-last coll)` single-arity form. Returns an empty\n   sequence when `coll` is `nil`. Works with any seqable collection including\n   lazy sequences and ranges.",
            "example": "(drop-last [1 2 3 4 5]) ; => (1 2 3 4)\n(drop-last 2 [1 2 3 4 5]) ; => (1 2 3)\n(drop-last 5 nil) ; => ()",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([coll] [n coll])"
        }
    },
    {
        "namespace": "core",
        "name": "drop-while",
        "description": "Drops all elements at the front of `coll` where `(pred x)` is true. Returns a lazy sequence.\n  When called with pred only, returns a transducer.",
        "doc": "```phel\n(drop-while pred & args)\n```\nDrops all elements at the front of `coll` where `(pred x)` is true. Returns a lazy sequence.\n  When called with pred only, returns a transducer.",
        "signatures": [
            "(drop-while pred & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L412",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(drop-while pred & args)\n```\nDrops all elements at the front of `coll` where `(pred x)` is true. Returns a lazy sequence.\n  When called with pred only, returns a transducer.",
            "example": "(drop-while #(< % 5) [1 2 3 4 5 6 3 2 1]) ; => (5 6 3 2 1)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[pred & args]"
        }
    },
    {
        "namespace": "core",
        "name": "eduction",
        "description": "Returns a reducible/iterable applying transducers to `coll`. The last\n  argument is the source collection; preceding arguments are transducers\n  composed left-to-right. The transformation is re-run on each consumption\n  (no caching), so the result is safe to reduce or iterate multiple times.",
        "doc": "```phel\n(eduction & args)\n```\nReturns a reducible/iterable applying transducers to `coll`. The last\n  argument is the source collection; preceding arguments are transducers\n  composed left-to-right. The transformation is re-run on each consumption\n  (no caching), so the result is safe to reduce or iterate multiple times.",
        "signatures": [
            "(eduction & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1238",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(eduction & args)\n```\nReturns a reducible/iterable applying transducers to `coll`. The last\n  argument is the source collection; preceding arguments are transducers\n  composed left-to-right. The transformation is re-run on each consumption\n  (no caching), so the result is safe to reduce or iterate multiple times.",
            "example": "(reduce + (eduction (map inc) (filter odd?) [1 2 3 4])) ; => 8",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& args]"
        }
    },
    {
        "namespace": "core",
        "name": "empty",
        "description": "Returns an empty collection of the same category as `coll`, preserving\n  the original metadata, or nil if `coll` has no empty equivalent.",
        "doc": "```phel\n(empty coll)\n```\nReturns an empty collection of the same category as `coll`, preserving\n  the original metadata, or nil if `coll` has no empty equivalent.",
        "signatures": [
            "(empty coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L438",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(empty coll)\n```\nReturns an empty collection of the same category as `coll`, preserving\n  the original metadata, or nil if `coll` has no empty equivalent.",
            "example": "(empty [1 2 3]) ; => []\n(empty {:a 1}) ; => {}\n(empty (range 10)) ; => ()",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "empty?",
        "description": "Returns true if x would be 0, \"\" or empty collection, false otherwise.\n  Safe on infinite/lazy sequences: checks the first element instead of counting.",
        "doc": "```phel\n(empty? x)\n```\nReturns true if x would be 0, \"\" or empty collection, false otherwise.\n  Safe on infinite/lazy sequences: checks the first element instead of counting.",
        "signatures": [
            "(empty? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L420",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(empty? x)\n```\nReturns true if x would be 0, \"\" or empty collection, false otherwise.\n  Safe on infinite/lazy sequences: checks the first element instead of counting.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "eval",
        "description": "Evaluates a form and return the evaluated results.",
        "doc": "```phel\n(eval form)\n```\nEvaluates a form and return the evaluated results.",
        "signatures": [
            "(eval form)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L996",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(eval form)\n```\nEvaluates a form and return the evaluated results.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[form]"
        }
    },
    {
        "namespace": "core",
        "name": "even?",
        "description": "Checks if `x` is even.",
        "doc": "```phel\n(even? x)\n```\nChecks if `x` is even.",
        "signatures": [
            "(even? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L255",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(even? x)\n```\nChecks if `x` is even.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "every?",
        "description": "Returns true if predicate is true for every element in collection, false otherwise.\n  Alias for `all?`.",
        "doc": "```phel\n(every? pred coll)\n```\nReturns true if predicate is true for every element in collection, false otherwise.\n  Alias for `all?`.",
        "signatures": [
            "(every? pred coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L255",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(every? pred coll)\n```\nReturns true if predicate is true for every element in collection, false otherwise.\n  Alias for `all?`.",
            "example": "(every? even? [2 4 6 8]) ; => true",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[pred coll]"
        }
    },
    {
        "namespace": "core",
        "name": "ex-cause",
        "description": "Returns the cause of an exception, or nil.",
        "doc": "```phel\n(ex-cause ex)\n```\nReturns the cause of an exception, or nil.",
        "signatures": [
            "(ex-cause ex)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/exceptions.phel#L33",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ex-cause ex)\n```\nReturns the cause of an exception, or nil.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ex]"
        }
    },
    {
        "namespace": "core",
        "name": "ex-data",
        "description": "Returns the data map from an ex-info exception, or nil if not an ExceptionInfo.",
        "doc": "```phel\n(ex-data ex)\n```\nReturns the data map from an ex-info exception, or nil if not an ExceptionInfo.",
        "signatures": [
            "(ex-data ex)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/exceptions.phel#L20",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ex-data ex)\n```\nReturns the data map from an ex-info exception, or nil if not an ExceptionInfo.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ex]"
        }
    },
    {
        "namespace": "core",
        "name": "ex-info",
        "description": "Creates an exception with a message and a data map. Optionally takes a cause.",
        "doc": "```phel\n(ex-info msg data)\n(ex-info msg data cause)\n```\nCreates an exception with a message and a data map. Optionally takes a cause.",
        "signatures": [
            "(ex-info msg data)",
            "(ex-info msg data cause)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/exceptions.phel#L11",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ex-info msg data)\n(ex-info msg data cause)\n```\nCreates an exception with a message and a data map. Optionally takes a cause.",
            "example": "(throw (ex-info \"Invalid input\" {:field :email}))",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "max-arity": 3,
            "arglists": "([msg data] [msg data cause])"
        }
    },
    {
        "namespace": "core",
        "name": "ex-message",
        "description": "Returns the message of an exception.",
        "doc": "```phel\n(ex-message ex)\n```\nReturns the message of an exception.",
        "signatures": [
            "(ex-message ex)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/exceptions.phel#L27",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ex-message ex)\n```\nReturns the message of an exception.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ex]"
        }
    },
    {
        "namespace": "core",
        "name": "extend-protocol",
        "description": "Convenience macro that extends a single protocol to multiple types.\n  Alternates type-specs and method implementations.\n\n  Equivalent to multiple `extend-type` calls.",
        "doc": "```phel\n(extend-protocol protocol-name & specs)\n```\nConvenience macro that extends a single protocol to multiple types.\n  Alternates type-specs and method implementations.\n\n  Equivalent to multiple `extend-type` calls.",
        "signatures": [
            "(extend-protocol protocol-name & specs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L549",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(extend-protocol protocol-name & specs)\n```\nConvenience macro that extends a single protocol to multiple types.\n  Alternates type-specs and method implementations.\n\n  Equivalent to multiple `extend-type` calls.",
            "example": "(extend-protocol Describable\n  :string (describe [s] s)\n  :int (describe [n] (str n)))",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[protocol-name & specs]"
        }
    },
    {
        "namespace": "core",
        "name": "extend-type",
        "description": "Extends a type with protocol method implementations.\n\n  type-spec can be:\n  - `nil` for the nil type\n  - a type keyword matching what `type` returns: `:string`, `:int`, `:float`,\n    `:boolean`, `:keyword`, `:symbol`, `:vector`, `:list`, `:hash-map`, `:set`,\n    `:atom`, `:var`, `:function`, `:php/array`\n  - a symbol for struct names (resolved in current namespace)\n  - a string for explicit PHP class names (cross-namespace structs)\n\n  Note: `:struct` and `:php/object` cannot be used as type-specs because\n  protocol dispatch resolves these to their specific PHP class names.\n  Use a struct symbol or PHP class name string instead.",
        "doc": "```phel\n(extend-type type-spec & specs)\n```\nExtends a type with protocol method implementations.\n\n  type-spec can be:\n  - `nil` for the nil type\n  - a type keyword matching what `type` returns: `:string`, `:int`, `:float`,\n    `:boolean`, `:keyword`, `:symbol`, `:vector`, `:list`, `:hash-map`, `:set`,\n    `:atom`, `:var`, `:function`, `:php/array`\n  - a symbol for struct names (resolved in current namespace)\n  - a string for explicit PHP class names (cross-namespace structs)\n\n  Note: `:struct` and `:php/object` cannot be used as type-specs because\n  protocol dispatch resolves these to their specific PHP class names.\n  Use a struct symbol or PHP class name string instead.",
        "signatures": [
            "(extend-type type-spec & specs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L454",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(extend-type type-spec & specs)\n```\nExtends a type with protocol method implementations.\n\n  type-spec can be:\n  - `nil` for the nil type\n  - a type keyword matching what `type` returns: `:string`, `:int`, `:float`,\n    `:boolean`, `:keyword`, `:symbol`, `:vector`, `:list`, `:hash-map`, `:set`,\n    `:atom`, `:var`, `:function`, `:php/array`\n  - a symbol for struct names (resolved in current namespace)\n  - a string for explicit PHP class names (cross-namespace structs)\n\n  Note: `:struct` and `:php/object` cannot be used as type-specs because\n  protocol dispatch resolves these to their specific PHP class names.\n  Use a struct symbol or PHP class name string instead.",
            "example": "(extend-type :string Stringable (to-string [s] s))",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[type-spec & specs]"
        }
    },
    {
        "namespace": "core",
        "name": "extends?",
        "description": "Returns true if the given type-key has implementations for all methods\n  of the protocol. type-key should match what protocol-type-key returns.",
        "doc": "```phel\n(extends? protocol type-key)\n```\nReturns true if the given type-key has implementations for all methods\n  of the protocol. type-key should match what protocol-type-key returns.",
        "signatures": [
            "(extends? protocol type-key)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L538",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(extends? protocol type-key)\n```\nReturns true if the given type-key has implementations for all methods\n  of the protocol. type-key should match what protocol-type-key returns.",
            "example": "(extends? Stringable :string)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[protocol type-key]"
        }
    },
    {
        "namespace": "core",
        "name": "extreme",
        "description": "Returns the most extreme value in `args` based on the binary `order` function.",
        "doc": "```phel\n(extreme order args)\n```\nReturns the most extreme value in `args` based on the binary `order` function.",
        "signatures": [
            "(extreme order args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L450",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(extreme order args)\n```\nReturns the most extreme value in `args` based on the binary `order` function.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[order args]"
        }
    },
    {
        "namespace": "core",
        "name": "false?",
        "description": "Checks if value is exactly false (not just falsy).",
        "doc": "```phel\n(false? x)\n```\nChecks if value is exactly false (not just falsy).",
        "signatures": [
            "(false? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L314",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(false? x)\n```\nChecks if value is exactly false (not just falsy).",
            "example": "(false? nil) ; => false",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "ffirst",
        "description": "Same as `(first (first coll))`.",
        "doc": "```phel\n(ffirst coll)\n```\nSame as `(first (first coll))`.",
        "signatures": [
            "(ffirst coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-basics.phel#L77",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ffirst coll)\n```\nSame as `(first (first coll))`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "file-seq",
        "description": "Returns a lazy sequence of all files and directories in a directory tree.",
        "doc": "```phel\n(file-seq path)\n```\nReturns a lazy sequence of all files and directories in a directory tree.",
        "signatures": [
            "(file-seq path)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L137",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(file-seq path)\n```\nReturns a lazy sequence of all files and directories in a directory tree.",
            "example": "(filter #(php/str_ends_with % \".phel\") (file-seq \"src/\")) ; => [\"src/file1.phel\" \"src/file2.phel\" ...]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[path]"
        }
    },
    {
        "namespace": "core",
        "name": "filter",
        "description": "Returns a lazy sequence of elements where predicate returns true.\n  When called with pred only, returns a transducer.",
        "doc": "```phel\n(filter pred & args)\n```\nReturns a lazy sequence of elements where predicate returns true.\n  When called with pred only, returns a transducer.",
        "signatures": [
            "(filter pred & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L514",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(filter pred & args)\n```\nReturns a lazy sequence of elements where predicate returns true.\n  When called with pred only, returns a transducer.",
            "example": "(filter even? [1 2 3 4 5 6]) ; => (2 4 6)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[pred & args]"
        }
    },
    {
        "namespace": "core",
        "name": "finally",
        "description": "Evaluate expressions after the try body and all matching catches have completed. The finally block runs regardless of whether an exception was thrown.",
        "doc": "```phel\n(finally expr*)\n```\nEvaluate expressions after the try body and all matching catches have completed. The finally block runs regardless of whether an exception was thrown.",
        "signatures": [
            "(finally expr*)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/control-flow/#try-catch-and-finally",
        "meta": {
            "example": "(defn risky-operation [] (throw (php/new \\Exception \"Error!\")))\n(defn cleanup [] (println \"Cleanup!\"))\n(try (risky-operation) (catch \\Exception e nil) (finally (cleanup)))"
        }
    },
    {
        "namespace": "core",
        "name": "find",
        "description": "When called with a collection first, returns `[key value]` when `key` is present.\n  Otherwise returns the first item in `coll` where `(pred item)` evaluates to true.",
        "doc": "```phel\n(find pred-or-coll coll-or-key)\n```\nWhen called with a collection first, returns `[key value]` when `key` is present.\n  Otherwise returns the first item in `coll` where `(pred item)` evaluates to true.",
        "signatures": [
            "(find pred-or-coll coll-or-key)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L591",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(find pred-or-coll coll-or-key)\n```\nWhen called with a collection first, returns `[key value]` when `key` is present.\n  Otherwise returns the first item in `coll` where `(pred item)` evaluates to true.",
            "example": "(find {:a 1} :a) ; => [:a 1]\n(find #(> % 5) [1 2 3 6 7 8]) ; => 6",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[pred-or-coll coll-or-key]"
        }
    },
    {
        "namespace": "core",
        "name": "find-hierarchy-method",
        "description": "Finds the best matching method for dispatch-val using the global hierarchy.\n  Returns the method function or nil. Used internally by defmulti. When\n  multiple methods match and none is more specific, consults `prefers-map`\n  (built by `prefer-method`); if still ambiguous, throws.",
        "doc": "```phel\n(find-hierarchy-method methods dispatch-val)\n(find-hierarchy-method methods dispatch-val prefers-map)\n```\nFinds the best matching method for dispatch-val using the global hierarchy.\n  Returns the method function or nil. Used internally by defmulti. When\n  multiple methods match and none is more specific, consults `prefers-map`\n  (built by `prefer-method`); if still ambiguous, throws.",
        "signatures": [
            "(find-hierarchy-method methods dispatch-val)",
            "(find-hierarchy-method methods dispatch-val prefers-map)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L352",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(find-hierarchy-method methods dispatch-val)\n(find-hierarchy-method methods dispatch-val prefers-map)\n```\nFinds the best matching method for dispatch-val using the global hierarchy.\n  Returns the method function or nil. Used internally by defmulti. When\n  multiple methods match and none is more specific, consults `prefers-map`\n  (built by `prefer-method`); if still ambiguous, throws.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "max-arity": 3,
            "arglists": "([methods dispatch-val] [methods dispatch-val prefers-map])"
        }
    },
    {
        "namespace": "core",
        "name": "find-index",
        "description": "Returns the index of the first item in `coll` where `(pred item)` evaluates to true.",
        "doc": "```phel\n(find-index pred coll)\n```\nReturns the index of the first item in `coll` where `(pred item)` evaluates to true.",
        "signatures": [
            "(find-index pred coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L601",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(find-index pred coll)\n```\nReturns the index of the first item in `coll` where `(pred item)` evaluates to true.",
            "example": "(find-index #(> % 5) [1 2 3 6 7 8]) ; => 3",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[pred coll]"
        }
    },
    {
        "namespace": "core",
        "name": "find-ns",
        "description": "Returns the namespace name in display form if it is loaded, or nil if no\n  namespace of that name exists. Accepts dot or backslash separators on input.",
        "doc": "```phel\n(find-ns ns-str)\n```\nReturns the namespace name in display form if it is loaded, or nil if no\n  namespace of that name exists. Accepts dot or backslash separators on input.",
        "signatures": [
            "(find-ns ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/ns.phel#L55",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(find-ns ns-str)\n```\nReturns the namespace name in display form if it is loaded, or nil if no\n  namespace of that name exists. Accepts dot or backslash separators on input.",
            "example": "(find-ns \"phel.core\") ; => \"phel.core\"",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "core",
        "name": "find-var",
        "description": "Returns the `Var` named by the fully-qualified symbol, or nil if no\n  matching definition exists. Tries the symbol name verbatim first (matching\n  how `def` stores entries), then falls back to the encoded form (matching\n  how `intern` stores entries).",
        "doc": "```phel\n(find-var sym)\n```\nReturns the `Var` named by the fully-qualified symbol, or nil if no\n  matching definition exists. Tries the symbol name verbatim first (matching\n  how `def` stores entries), then falls back to the encoded form (matching\n  how `intern` stores entries).",
        "signatures": [
            "(find-var sym)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/ns.phel#L155",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(find-var sym)\n```\nReturns the `Var` named by the fully-qualified symbol, or nil if no\n  matching definition exists. Tries the symbol name verbatim first (matching\n  how `def` stores entries), then falls back to the encoded form (matching\n  how `intern` stores entries).",
            "example": "(find-var 'phel.core/map) ; => #'phel.core/map",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[sym]"
        }
    },
    {
        "namespace": "core",
        "name": "first",
        "description": "Returns the first element of a sequence, or nil if empty.\n\n  Maps are treated as a sequence of entries: `(first {:a 1})` returns a\n  typed `MapEntry` equal by value to `[:a 1]`. Strings are treated as\n  sequences of multibyte characters.",
        "doc": "Returns the first element of a sequence, or nil if empty.\n\n  Maps are treated as a sequence of entries: `(first {:a 1})` returns a\n  typed `MapEntry` equal by value to `[:a 1]`. Strings are treated as\n  sequences of multibyte characters.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core.phel#L146",
        "docUrl": "",
        "meta": {
            "doc": "Returns the first element of a sequence, or nil if empty.\n\n  Maps are treated as a sequence of entries: `(first {:a 1})` returns a\n  typed `MapEntry` equal by value to `[:a 1]`. Strings are treated as\n  sequences of multibyte characters.",
            "example": "(first [1 2 3]) ; => 1",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[xs]"
        }
    },
    {
        "namespace": "core",
        "name": "flatten",
        "description": "Flattens nested sequential structure into a lazy sequence of all leaf values.",
        "doc": "```phel\n(flatten coll)\n```\nFlattens nested sequential structure into a lazy sequence of all leaf values.",
        "signatures": [
            "(flatten coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L249",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(flatten coll)\n```\nFlattens nested sequential structure into a lazy sequence of all leaf values.",
            "example": "(flatten [[1 2] [3 [4 5]] 6]) ; => (1 2 3 4 5 6)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "float",
        "description": "Coerces `x` to a float. In PHP there is no distinction between float and\n   double; both map to the same native PHP float type. `Ratio`,\n   `BigInt`, and `BigDecimal` values collapse to their float value;\n   everything else delegates to PHP's `floatval`, so non-numeric strings\n   return `0.0` and `nil` returns `0.0`.",
        "doc": "```phel\n(float x)\n```\nCoerces `x` to a float. In PHP there is no distinction between float and\n   double; both map to the same native PHP float type. `Ratio`,\n   `BigInt`, and `BigDecimal` values collapse to their float value;\n   everything else delegates to PHP's `floatval`, so non-numeric strings\n   return `0.0` and `nil` returns `0.0`.",
        "signatures": [
            "(float x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L331",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(float x)\n```\nCoerces `x` to a float. In PHP there is no distinction between float and\n   double; both map to the same native PHP float type. `Ratio`,\n   `BigInt`, and `BigDecimal` values collapse to their float value;\n   everything else delegates to PHP's `floatval`, so non-numeric strings\n   return `0.0` and `nil` returns `0.0`.",
            "example": "(float 1) ; => 1.0\n(float 1/2) ; => 0.5",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "float-array",
        "description": "Creates a PHP array of floats. Accepts the same arities as `int-array`;\n  coerces elements to float via `floatval` and zero-pads with `0.0`.",
        "doc": "```phel\n(float-array size-or-seq)\n(float-array size init-val-or-seq)\n```\nCreates a PHP array of floats. Accepts the same arities as `int-array`;\n  coerces elements to float via `floatval` and zero-pads with `0.0`.",
        "signatures": [
            "(float-array size-or-seq)",
            "(float-array size init-val-or-seq)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/arrays.phel#L177",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(float-array size-or-seq)\n(float-array size init-val-or-seq)\n```\nCreates a PHP array of floats. Accepts the same arities as `int-array`;\n  coerces elements to float via `floatval` and zero-pads with `0.0`.",
            "example": "(float-array 3) ; => PHP array [0.0, 0.0, 0.0]\n(float-array 4 1.5) ; => PHP array [1.5, 1.5, 1.5, 1.5]",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([size-or-seq] [size init-val-or-seq])"
        }
    },
    {
        "namespace": "core",
        "name": "float?",
        "description": "Returns true if `x` is float point number, false otherwise.",
        "doc": "```phel\n(float? x)\n```\nReturns true if `x` is float point number, false otherwise.",
        "signatures": [
            "(float? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L133",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(float? x)\n```\nReturns true if `x` is float point number, false otherwise.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "floor",
        "description": "Returns the largest integer not greater than `x`. Ints and `BigInt`\n  values are returned unchanged. Ratios collapse via floor division.\n  Floats route through PHP's `floor`.",
        "doc": "```phel\n(floor x)\n```\nReturns the largest integer not greater than `x`. Ints and `BigInt`\n  values are returned unchanged. Ratios collapse via floor division.\n  Floats route through PHP's `floor`.",
        "signatures": [
            "(floor x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L734",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(floor x)\n```\nReturns the largest integer not greater than `x`. Ints and `BigInt`\n  values are returned unchanged. Ratios collapse via floor division.\n  Floats route through PHP's `floor`.",
            "example": "(floor 1.7) ; => 1.0\n(floor -1.2) ; => -2.0\n(floor 7/3) ; => 2",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "fn",
        "description": "Defines a function. A function consists of a list of parameters and a list of expression. The value of the last expression is returned as the result of the function. All other expression are only evaluated for side effects. If no expression is given, the function returns nil.",
        "doc": "```phel\n(fn [params*] expr*)\n```\nDefines a function. A function consists of a list of parameters and a list of expression. The value of the last expression is returned as the result of the function. All other expression are only evaluated for side effects. If no expression is given, the function returns nil.",
        "signatures": [
            "(fn [params*] expr*)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/functions-and-recursion/#anonymous-function-fn",
        "meta": {
            "example": "(fn [x y] (+ x y))"
        }
    },
    {
        "namespace": "core",
        "name": "fn?",
        "description": "Returns true if `x` is a function, false otherwise.",
        "doc": "```phel\n(fn? x)\n```\nReturns true if `x` is a function, false otherwise.",
        "signatures": [
            "(fn? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L283",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(fn? x)\n```\nReturns true if `x` is a function, false otherwise.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "fnext",
        "description": "Same as `(first (next coll))`.",
        "doc": "```phel\n(fnext coll)\n```\nSame as `(first (next coll))`.",
        "signatures": [
            "(fnext coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-basics.phel#L109",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(fnext coll)\n```\nSame as `(first (next coll))`.",
            "example": "(fnext [1 2 3]) ; => 2",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "fnil",
        "description": "Returns a function that replaces nil arguments with the provided defaults\n  before calling f. The number of defaults determines how many leading arguments\n  are nil-checked.",
        "doc": "```phel\n(fnil f & defaults)\n```\nReturns a function that replaces nil arguments with the provided defaults\n  before calling f. The number of defaults determines how many leading arguments\n  are nil-checked.",
        "signatures": [
            "(fnil f & defaults)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L140",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(fnil f & defaults)\n```\nReturns a function that replaces nil arguments with the provided defaults\n  before calling f. The number of defaults determines how many leading arguments\n  are nil-checked.",
            "example": "(let [safe-inc (fnil inc 0)] (safe-inc nil)) ; => 1",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[f & defaults]"
        }
    },
    {
        "namespace": "core",
        "name": "for",
        "description": "List comprehension. The head of the loop is a vector that contains a\n  sequence of bindings modifiers and options. A binding is a sequence of three\n  values `binding :verb expr`. Where `binding` is a binding as\n  in let and `:verb` is one of the following keywords:\n\n  * `:range` loop over a range by using the range function.\n  * `:in` loops over all values of a collection (including strings).\n  * `:keys` loops over all keys/indexes of a collection.\n  * `:pairs` loops over all key-value pairs of a collection.\n\n  After each loop binding, additional modifiers can be applied. Modifiers\n  have the form `:modifier argument`. The following modifiers are supported:\n\n  * `:while` breaks the loop if the expression is falsy.\n  * `:let` defines additional bindings.\n  * `:when` only evaluates the loop body if the condition is true.\n\n  Finally, additional options can be set:\n\n  * `:reduce [accumulator initial-value]` Instead of returning a list,\n     it reduces the values into `accumulator`. Initially `accumulator`\n     is bound to `initial-value`.",
        "doc": "```phel\n(for head & body)\n```\nList comprehension. The head of the loop is a vector that contains a\n  sequence of bindings modifiers and options. A binding is a sequence of three\n  values `binding :verb expr`. Where `binding` is a binding as\n  in let and `:verb` is one of the following keywords:\n\n  * `:range` loop over a range by using the range function.\n  * `:in` loops over all values of a collection (including strings).\n  * `:keys` loops over all keys/indexes of a collection.\n  * `:pairs` loops over all key-value pairs of a collection.\n\n  After each loop binding, additional modifiers can be applied. Modifiers\n  have the form `:modifier argument`. The following modifiers are supported:\n\n  * `:while` breaks the loop if the expression is falsy.\n  * `:let` defines additional bindings.\n  * `:when` only evaluates the loop body if the condition is true.\n\n  Finally, additional options can be set:\n\n  * `:reduce [accumulator initial-value]` Instead of returning a list,\n     it reduces the values into `accumulator`. Initially `accumulator`\n     is bound to `initial-value`.",
        "signatures": [
            "(for head & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L288",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(for head & body)\n```\nList comprehension. The head of the loop is a vector that contains a\n  sequence of bindings modifiers and options. A binding is a sequence of three\n  values `binding :verb expr`. Where `binding` is a binding as\n  in let and `:verb` is one of the following keywords:\n\n  * `:range` loop over a range by using the range function.\n  * `:in` loops over all values of a collection (including strings).\n  * `:keys` loops over all keys/indexes of a collection.\n  * `:pairs` loops over all key-value pairs of a collection.\n\n  After each loop binding, additional modifiers can be applied. Modifiers\n  have the form `:modifier argument`. The following modifiers are supported:\n\n  * `:while` breaks the loop if the expression is falsy.\n  * `:let` defines additional bindings.\n  * `:when` only evaluates the loop body if the condition is true.\n\n  Finally, additional options can be set:\n\n  * `:reduce [accumulator initial-value]` Instead of returning a list,\n     it reduces the values into `accumulator`. Initially `accumulator`\n     is bound to `initial-value`.",
            "example": "(for [x :in [1 2 3]] (* x 2)) ; => [2 4 6]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[head & body]"
        }
    },
    {
        "namespace": "core",
        "name": "force",
        "description": "If x is a Delay, forces it and returns its cached value. Otherwise returns x.",
        "doc": "```phel\n(force x)\n```\nIf x is a Delay, forces it and returns its cached value. Otherwise returns x.",
        "signatures": [
            "(force x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/lazy.phel#L20",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(force x)\n```\nIf x is a Delay, forces it and returns its cached value. Otherwise returns x.",
            "example": "(force (delay 42)) ; => 42",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "foreach",
        "description": "The foreach special form can be used to iterate over all kind of PHP datastructures. The return value of foreach is always nil. The loop special form should be preferred of the foreach special form whenever possible.",
        "doc": "```phel\n(foreach [value valueExpr] expr*)\n(foreach [key value valueExpr] expr*)\n```\nThe foreach special form can be used to iterate over all kind of PHP datastructures. The return value of foreach is always nil. The loop special form should be preferred of the foreach special form whenever possible.",
        "signatures": [
            "(foreach [value valueExpr] expr*)",
            "(foreach [key value valueExpr] expr*)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/control-flow/#foreach",
        "meta": {
            "example": "(foreach [x [1 2 3]] (println x))"
        }
    },
    {
        "namespace": "core",
        "name": "format",
        "description": "Returns a formatted string. See PHP's [sprintf](https://www.php.net/manual/en/function.sprintf.php) for more information.",
        "doc": "```phel\n(format fmt & xs)\n```\nReturns a formatted string. See PHP's [sprintf](https://www.php.net/manual/en/function.sprintf.php) for more information.",
        "signatures": [
            "(format fmt & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L57",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(format fmt & xs)\n```\nReturns a formatted string. See PHP's [sprintf](https://www.php.net/manual/en/function.sprintf.php) for more information.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[fmt & xs]"
        }
    },
    {
        "namespace": "core",
        "name": "frequencies",
        "description": "Returns a map from distinct items in `coll` to the number of times they appear.\n\n  Works with vectors, lists, sets, and strings.",
        "doc": "```phel\n(frequencies coll)\n```\nReturns a map from distinct items in `coll` to the number of times they appear.\n\n  Works with vectors, lists, sets, and strings.",
        "signatures": [
            "(frequencies coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L668",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(frequencies coll)\n```\nReturns a map from distinct items in `coll` to the number of times they appear.\n\n  Works with vectors, lists, sets, and strings.",
            "example": "(frequencies [:a :b :a :c :b :a]) ; => {:a 3 :b 2 :c 1}",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "full-name",
        "description": "Return the namespace and name string of a string, keyword or symbol.",
        "doc": "```phel\n(full-name x)\n```\nReturn the namespace and name string of a string, keyword or symbol.",
        "signatures": [
            "(full-name x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L982",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(full-name x)\n```\nReturn the namespace and name string of a string, keyword or symbol.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "function?",
        "description": "Returns true if `x` is a function, false otherwise.",
        "doc": "```phel\n(function? x)\n```\nReturns true if `x` is a function, false otherwise.",
        "signatures": [
            "(function? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L297",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(function? x)\n```\nReturns true if `x` is a function, false otherwise.",
            "deprecated": "0.32.0",
            "superseded-by": "fn?",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "future",
        "description": "Starts evaluating `body` asynchronously and returns a `Future`\n  that can be `deref`ed (blocks the current fiber until the value is\n  available) or checked with `realized?`.\n\n  Supports the 3-arg `(deref f timeout-ms timeout-val)` form for\n  time-bounded blocking, as well as `future-cancel`, `future-cancelled?`\n  and `future-done?` for lifecycle management.\n\n  Must be called from inside a fiber context (e.g. the AMPHP event\n  loop or an enclosing `async` block), because `deref` resolves via\n  AMPHP's fiber-based `await`.",
        "doc": "```phel\n(future & body)\n```\nStarts evaluating `body` asynchronously and returns a `Future`\n  that can be `deref`ed (blocks the current fiber until the value is\n  available) or checked with `realized?`.\n\n  Supports the 3-arg `(deref f timeout-ms timeout-val)` form for\n  time-bounded blocking, as well as `future-cancel`, `future-cancelled?`\n  and `future-done?` for lifecycle management.\n\n  Must be called from inside a fiber context (e.g. the AMPHP event\n  loop or an enclosing `async` block), because `deref` resolves via\n  AMPHP's fiber-based `await`.",
        "signatures": [
            "(future & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/futures.phel#L9",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(future & body)\n```\nStarts evaluating `body` asynchronously and returns a `Future`\n  that can be `deref`ed (blocks the current fiber until the value is\n  available) or checked with `realized?`.\n\n  Supports the 3-arg `(deref f timeout-ms timeout-val)` form for\n  time-bounded blocking, as well as `future-cancel`, `future-cancelled?`\n  and `future-done?` for lifecycle management.\n\n  Must be called from inside a fiber context (e.g. the AMPHP event\n  loop or an enclosing `async` block), because `deref` resolves via\n  AMPHP's fiber-based `await`.",
            "example": "(let [f (future (expensive-computation))] @f)",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& body]"
        }
    },
    {
        "namespace": "core",
        "name": "future-call",
        "description": "Invokes `f` (a zero-arg function) in a new fiber. Returns a\n  `PhelFiberFuture` you can `deref` or inspect with `future-done?`\n  and `future-cancel`.\n\n  Captures the caller's dynamic bindings and reinstalls them inside\n  the fiber before invoking `f`, so bindings are conveyed the same\n  way as with `future`/`async`.",
        "doc": "```phel\n(future-call f)\n```\nInvokes `f` (a zero-arg function) in a new fiber. Returns a\n  `PhelFiberFuture` you can `deref` or inspect with `future-done?`\n  and `future-cancel`.\n\n  Captures the caller's dynamic bindings and reinstalls them inside\n  the fiber before invoking `f`, so bindings are conveyed the same\n  way as with `future`/`async`.",
        "signatures": [
            "(future-call f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/async.phel#L159",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(future-call f)\n```\nInvokes `f` (a zero-arg function) in a new fiber. Returns a\n  `PhelFiberFuture` you can `deref` or inspect with `future-done?`\n  and `future-cancel`.\n\n  Captures the caller's dynamic bindings and reinstalls them inside\n  the fiber before invoking `f`, so bindings are conveyed the same\n  way as with `future`/`async`.",
            "example": "(future-call (fn [] 42))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[f]"
        }
    },
    {
        "namespace": "core",
        "name": "future-cancel",
        "description": "Signals the future's internal cancellation token, causing any pending\n  or subsequent `deref` call to raise `CancelledException` (or return the\n  timeout value for the 3-arg form). Due to AMPHP's cooperative fibers,\n  the body keeps running until its next cancellation checkpoint; from\n  the caller's perspective the future behaves as cancelled after this\n  returns.",
        "doc": "```phel\n(future-cancel f)\n```\nSignals the future's internal cancellation token, causing any pending\n  or subsequent `deref` call to raise `CancelledException` (or return the\n  timeout value for the 3-arg form). Due to AMPHP's cooperative fibers,\n  the body keeps running until its next cancellation checkpoint; from\n  the caller's perspective the future behaves as cancelled after this\n  returns.",
        "signatures": [
            "(future-cancel f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/async.phel#L96",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(future-cancel f)\n```\nSignals the future's internal cancellation token, causing any pending\n  or subsequent `deref` call to raise `CancelledException` (or return the\n  timeout value for the 3-arg form). Due to AMPHP's cooperative fibers,\n  the body keeps running until its next cancellation checkpoint; from\n  the caller's perspective the future behaves as cancelled after this\n  returns.",
            "example": "(future-cancel (future (expensive-call)))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[f]"
        }
    },
    {
        "namespace": "core",
        "name": "future-cancelled?",
        "description": "Returns `true` if `future-cancel` was called on `f`, `false` otherwise.",
        "doc": "```phel\n(future-cancelled? f)\n```\nReturns `true` if `future-cancel` was called on `f`, `false` otherwise.",
        "signatures": [
            "(future-cancelled? f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/async.phel#L108",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(future-cancelled? f)\n```\nReturns `true` if `future-cancel` was called on `f`, `false` otherwise.",
            "example": "(future-cancelled? f)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[f]"
        }
    },
    {
        "namespace": "core",
        "name": "future-done?",
        "description": "Returns `true` if the future is in a final state (completed, failed,\n  or cancelled).\n\n  Dispatches on type: for a `\\Phel\\Fiber\\Domain\\Future` (fiber-backed)\n  it calls `isDone`; for any other value it falls back to `realized?`.\n  This lets the same predicate serve both the AMPHP `Future` wrapper\n  and the cooperative fiber future.",
        "doc": "```phel\n(future-done? f)\n```\nReturns `true` if the future is in a final state (completed, failed,\n  or cancelled).\n\n  Dispatches on type: for a `\\Phel\\Fiber\\Domain\\Future` (fiber-backed)\n  it calls `isDone`; for any other value it falls back to `realized?`.\n  This lets the same predicate serve both the AMPHP `Future` wrapper\n  and the cooperative fiber future.",
        "signatures": [
            "(future-done? f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/async.phel#L115",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(future-done? f)\n```\nReturns `true` if the future is in a final state (completed, failed,\n  or cancelled).\n\n  Dispatches on type: for a `\\Phel\\Fiber\\Domain\\Future` (fiber-backed)\n  it calls `isDone`; for any other value it falls back to `realized?`.\n  This lets the same predicate serve both the AMPHP `Future` wrapper\n  and the cooperative fiber future.",
            "example": "(future-done? f)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[f]"
        }
    },
    {
        "namespace": "core",
        "name": "future-fiber",
        "description": "Runs `body` in a new fiber via the cooperative scheduler. Returns a\n  fiber-future that supports `deref`, `realized?`, `future-done?`, and\n  `future-cancel`. Works at the top level (no enclosing `async` block\n  required), in contrast to `future` which requires an AMPHP fiber\n  context.",
        "doc": "```phel\n(future-fiber & body)\n```\nRuns `body` in a new fiber via the cooperative scheduler. Returns a\n  fiber-future that supports `deref`, `realized?`, `future-done?`, and\n  `future-cancel`. Works at the top level (no enclosing `async` block\n  required), in contrast to `future` which requires an AMPHP fiber\n  context.",
        "signatures": [
            "(future-fiber & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/async.phel#L175",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(future-fiber & body)\n```\nRuns `body` in a new fiber via the cooperative scheduler. Returns a\n  fiber-future that supports `deref`, `realized?`, `future-done?`, and\n  `future-cancel`. Works at the top level (no enclosing `async` block\n  required), in contrast to `future` which requires an AMPHP fiber\n  context.",
            "example": "@(future-fiber (+ 1 2))",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& body]"
        }
    },
    {
        "namespace": "core",
        "name": "future?",
        "description": "Returns true if `x` is a fiber-future (from `future-call`/`future-fiber`)\n  or a `Future` (from the AMPHP-backed `future` macro).",
        "doc": "```phel\n(future? x)\n```\nReturns true if `x` is a fiber-future (from `future-call`/`future-fiber`)\n  or a `Future` (from the AMPHP-backed `future` macro).",
        "signatures": [
            "(future? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/async.phel#L186",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(future? x)\n```\nReturns true if `x` is a fiber-future (from `future-call`/`future-fiber`)\n  or a `Future` (from the AMPHP-backed `future` macro).",
            "example": "(future? (future-call (fn [] 1))) ; => true",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "gensym",
        "description": "Generates a new unique symbol.",
        "doc": "```phel\n(gensym)\n```\nGenerates a new unique symbol.",
        "signatures": [
            "(gensym)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/strings.phel#L80",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(gensym)\n```\nGenerates a new unique symbol.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "core",
        "name": "get",
        "description": "Gets the value at key in a collection. Returns default if not found.",
        "doc": "```phel\n(get ds k & [opt])\n```\nGets the value at key in a collection. Returns default if not found.",
        "signatures": [
            "(get ds k & [opt])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/sequences.phel#L77",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(get ds k & [opt])\n```\nGets the value at key in a collection. Returns default if not found.",
            "example": "(get {:a 1} :a) ; => 1",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[ds k & __phel_463]"
        }
    },
    {
        "namespace": "core",
        "name": "get-in",
        "description": "Accesses a value in a nested data structure via a sequence of keys.\n\n  Returns `opt` (default nil) when a key is missing mid-traversal.\n  When the path is nil or empty, returns `ds` as-is (which may be nil).",
        "doc": "```phel\n(get-in ds ks & [opt])\n```\nAccesses a value in a nested data structure via a sequence of keys.\n\n  Returns `opt` (default nil) when a key is missing mid-traversal.\n  When the path is nil or empty, returns `ds` as-is (which may be nil).",
        "signatures": [
            "(get-in ds ks & [opt])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L278",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(get-in ds ks & [opt])\n```\nAccesses a value in a nested data structure via a sequence of keys.\n\n  Returns `opt` (default nil) when a key is missing mid-traversal.\n  When the path is nil or empty, returns `ds` as-is (which may be nil).",
            "example": "(get-in {:a {:b {:c 42}}} [:a :b :c]) ; => 42",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[ds ks & __phel_942]"
        }
    },
    {
        "namespace": "core",
        "name": "get-validator",
        "description": "Returns the validator function of a variable, or nil.",
        "doc": "```phel\n(get-validator variable)\n```\nReturns the validator function of a variable, or nil.",
        "signatures": [
            "(get-validator variable)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L206",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(get-validator variable)\n```\nReturns the validator function of a variable, or nil.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[variable]"
        }
    },
    {
        "namespace": "core",
        "name": "group-by",
        "description": "Returns a map of the elements of coll keyed by the result of `f` on each element.",
        "doc": "```phel\n(group-by f coll)\n```\nReturns a map of the elements of coll keyed by the result of `f` on each element.",
        "signatures": [
            "(group-by f coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1095",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(group-by f coll)\n```\nReturns a map of the elements of coll keyed by the result of `f` on each element.",
            "example": "(group-by count [\"a\" \"bb\" \"c\" \"ddd\" \"ee\"]) ; => {1 [\"a\" \"c\"] 2 [\"bb\" \"ee\"] 3 [\"ddd\"]}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[f coll]"
        }
    },
    {
        "namespace": "core",
        "name": "hash-map",
        "description": "Creates a new hash map. If no argument is provided, an empty hash map is created. The number of parameters must be even.",
        "doc": "```phel\n(hash-map :a 1 :b 2) ; => {:a 1 :b 2}\n```\nCreates a new hash map. If no argument is provided, an empty hash map is created. The number of parameters must be even. Shortcut: {}",
        "signatures": [
            "(hash-map & xs)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/data-structures/#maps",
        "meta": {
            "example": "(hash-map :name \"Alice\" :age 30) ; => {:name \"Alice\" :age 30}"
        }
    },
    {
        "namespace": "core",
        "name": "hash-map?",
        "description": "Returns true if `x` is a hash map, false otherwise.",
        "doc": "```phel\n(hash-map? x)\n```\nReturns true if `x` is a hash map, false otherwise.",
        "signatures": [
            "(hash-map? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L315",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(hash-map? x)\n```\nReturns true if `x` is a hash map, false otherwise.",
            "deprecated": "0.32.0",
            "superseded-by": "map?",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "hash-set",
        "description": "Creates a new Set from the given arguments. Shortcut: #{}",
        "doc": "```phel\n(hash-set & xs)\n```\nCreates a new Set from the given arguments. Shortcut: #{}",
        "signatures": [
            "(hash-set & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/collections.phel#L15",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(hash-set & xs)\n```\nCreates a new Set from the given arguments. Shortcut: #{}",
            "example": "(hash-set 1 2 3) ; => #{1 2 3}",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "id",
        "description": "Checks if all values are identical. Same as `a === b` in PHP.",
        "doc": "```phel\n(id a & more)\n```\nChecks if all values are identical. Same as `a === b` in PHP.",
        "signatures": [
            "(id a & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L97",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(id a & more)\n```\nChecks if all values are identical. Same as `a === b` in PHP.",
            "deprecated": "0.32.0",
            "superseded-by": "identical?",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[a & more]"
        }
    },
    {
        "namespace": "core",
        "name": "ident?",
        "description": "Returns true if `x` is a symbol or keyword.",
        "doc": "```phel\n(ident? x)\n```\nReturns true if `x` is a symbol or keyword.",
        "signatures": [
            "(ident? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L239",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ident? x)\n```\nReturns true if `x` is a symbol or keyword.",
            "example": "(ident? 'x) ; => true\n(ident? :a) ; => true\n(ident? 42) ; => false",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "identical?",
        "description": "Checks if all values are identical. Same as `a === b` in PHP.",
        "doc": "```phel\n(identical? a & more)\n```\nChecks if all values are identical. Same as `a === b` in PHP.",
        "signatures": [
            "(identical? a & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L87",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(identical? a & more)\n```\nChecks if all values are identical. Same as `a === b` in PHP.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[a & more]"
        }
    },
    {
        "namespace": "core",
        "name": "identity",
        "description": "Returns its argument.",
        "doc": "```phel\n(identity x)\n```\nReturns its argument.",
        "signatures": [
            "(identity x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L393",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(identity x)\n```\nReturns its argument.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "if",
        "description": "A control flow structure. First evaluates test. If test evaluates to true, only the then form is evaluated and the result is returned. If test evaluates to false only the else form is evaluated and the result is returned. If no else form is given, nil will be returned.",
        "doc": "```phel\n(if test then else?)\n```\nA control flow structure. First evaluates test. If test evaluates to true, only the then form is evaluated and the result is returned. If test evaluates to false only the else form is evaluated and the result is returned. If no else form is given, nil will be returned.\n\nThe test evaluates to false if its value is false or equal to nil. Every other value evaluates to true. In sense of PHP this means (test != null && test !== false).",
        "signatures": [
            "(if test then else?)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/control-flow/#if",
        "meta": {
            "example": "(if (> x 0) \"positive\" \"non-positive\")"
        }
    },
    {
        "namespace": "core",
        "name": "if-let",
        "description": "If test is true, evaluates then with binding-form bound to the value of test,\n  if not, yields else",
        "doc": "```phel\n(if-let bindings then & [else])\n```\nIf test is true, evaluates then with binding-form bound to the value of test,\n  if not, yields else",
        "signatures": [
            "(if-let bindings then & [else])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L828",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(if-let bindings then & [else])\n```\nIf test is true, evaluates then with binding-form bound to the value of test,\n  if not, yields else",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[bindings then & __phel_2152]"
        }
    },
    {
        "namespace": "core",
        "name": "if-not",
        "description": "Evaluates then if test is false, else otherwise.",
        "doc": "```phel\n(if-not test then & [else])\n```\nEvaluates then if test is false, else otherwise.",
        "signatures": [
            "(if-not test then & [else])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/control.phel#L14",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(if-not test then & [else])\n```\nEvaluates then if test is false, else otherwise.",
            "example": "(if-not (< 5 3) \"not less\" \"less\") ; => \"not less\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[test then & __phel_195]"
        }
    },
    {
        "namespace": "core",
        "name": "if-some",
        "description": "Binds name to the value of test. If test is not nil, evaluates then with binding-form\n  bound to the value of test, if not, yields else. Unlike if-let, false and 0 are not\n  treated as falsy \u2014 only nil triggers the else branch.",
        "doc": "```phel\n(if-some bindings then & [else])\n```\nBinds name to the value of test. If test is not nil, evaluates then with binding-form\n  bound to the value of test, if not, yields else. Unlike if-let, false and 0 are not\n  treated as falsy \u2014 only nil triggers the else branch.",
        "signatures": [
            "(if-some bindings then & [else])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L868",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(if-some bindings then & [else])\n```\nBinds name to the value of test. If test is not nil, evaluates then with binding-form\n  bound to the value of test, if not, yields else. Unlike if-let, false and 0 are not\n  treated as falsy \u2014 only nil triggers the else branch.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[bindings then & __phel_2170]"
        }
    },
    {
        "namespace": "core",
        "name": "ifn?",
        "description": "Returns true if `x` can be invoked as a function.\n   This includes functions, keywords, maps, vectors, sets, and lists.",
        "doc": "```phel\n(ifn? x)\n```\nReturns true if `x` can be invoked as a function.\n   This includes functions, keywords, maps, vectors, sets, and lists.",
        "signatures": [
            "(ifn? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L288",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ifn? x)\n```\nReturns true if `x` can be invoked as a function.\n   This includes functions, keywords, maps, vectors, sets, and lists.",
            "example": "(ifn? inc) ; => true\n(ifn? :a) ; => true\n(ifn? {}) ; => true\n(ifn? 42) ; => false",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "inc",
        "description": "Increments `x` by one.",
        "doc": "```phel\n(inc x)\n```\nIncrements `x` by one.",
        "signatures": [
            "(inc x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L194",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(inc x)\n```\nIncrements `x` by one.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "inc'",
        "description": "Auto-promoting variant of `inc`. Integer results are returned as\n  `BigInt`; floats and rationals pass through unchanged.",
        "doc": "```phel\n(inc' x)\n```\nAuto-promoting variant of `inc`. Integer results are returned as\n  `BigInt`; floats and rationals pass through unchanged.",
        "signatures": [
            "(inc' x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L239",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(inc' x)\n```\nAuto-promoting variant of `inc`. Integer results are returned as\n  `BigInt`; floats and rationals pass through unchanged.",
            "example": "(inc' 1) ; => 2N",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "indexed?",
        "description": "Returns true if `x` is an indexed sequence, false otherwise.\n\n  Indexed sequences include lists, vectors, and indexed PHP arrays.",
        "doc": "```phel\n(indexed? x)\n```\nReturns true if `x` is an indexed sequence, false otherwise.\n\n  Indexed sequences include lists, vectors, and indexed PHP arrays.",
        "signatures": [
            "(indexed? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L501",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(indexed? x)\n```\nReturns true if `x` is an indexed sequence, false otherwise.\n\n  Indexed sequences include lists, vectors, and indexed PHP arrays.",
            "example": "(indexed? [1 2 3]) ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "inf?",
        "description": "Checks if `x` is infinite.",
        "doc": "```phel\n(inf? x)\n```\nChecks if `x` is infinite.",
        "signatures": [
            "(inf? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L296",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(inf? x)\n```\nChecks if `x` is infinite.",
            "example": "(inf? php/INF) ; => true",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "instance?",
        "description": "Returns true if `x` is an instance of class `c`, false otherwise.\n  Mirrors Clojure's `clojure.core/instance?` argument order (class first,\n  value second). `c` should be a literal class reference such as\n  `DateTime` or a `:use`d short name; for runtime class names use\n  `(php/is_a x class-name)`.",
        "doc": "```phel\n(instance? c x)\n```\nReturns true if `x` is an instance of class `c`, false otherwise.\n  Mirrors Clojure's `clojure.core/instance?` argument order (class first,\n  value second). `c` should be a literal class reference such as\n  `DateTime` or a `:use`d short name; for runtime class names use\n  `(php/is_a x class-name)`.",
        "signatures": [
            "(instance? c x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L375",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(instance? c x)\n```\nReturns true if `x` is an instance of class `c`, false otherwise.\n  Mirrors Clojure's `clojure.core/instance?` argument order (class first,\n  value second). `c` should be a literal class reference such as\n  `DateTime` or a `:use`d short name; for runtime class names use\n  `(php/is_a x class-name)`.",
            "example": "(instance? DateTime (php/new DateTime)) ; => true",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[c x]"
        }
    },
    {
        "namespace": "core",
        "name": "int",
        "description": "Coerces `x` to an integer. `Ratio` and `BigDecimal` values truncate\n   toward zero (`(int 1/10)` is `0`, `(int -1.1M)` is `-1`); `BigInt`\n   and `float` values collapse to their PHP int value or throw\n   `OverflowException` when outside the PHP int range (`NaN`/`Inf` floats\n   raise `InvalidArgumentException`). Numeric strings are parsed via PHP's\n   `intval`, and `nil` returns `0`.",
        "doc": "```phel\n(int x)\n```\nCoerces `x` to an integer. `Ratio` and `BigDecimal` values truncate\n   toward zero (`(int 1/10)` is `0`, `(int -1.1M)` is `-1`); `BigInt`\n   and `float` values collapse to their PHP int value or throw\n   `OverflowException` when outside the PHP int range (`NaN`/`Inf` floats\n   raise `InvalidArgumentException`). Numeric strings are parsed via PHP's\n   `intval`, and `nil` returns `0`.",
        "signatures": [
            "(int x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L314",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(int x)\n```\nCoerces `x` to an integer. `Ratio` and `BigDecimal` values truncate\n   toward zero (`(int 1/10)` is `0`, `(int -1.1M)` is `-1`); `BigInt`\n   and `float` values collapse to their PHP int value or throw\n   `OverflowException` when outside the PHP int range (`NaN`/`Inf` floats\n   raise `InvalidArgumentException`). Numeric strings are parsed via PHP's\n   `intval`, and `nil` returns `0`.",
            "example": "(int 1.9) ; => 1\n(int \"42\") ; => 42\n(int 1/10) ; => 0",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "int-array",
        "description": "Creates a PHP array of integers, matching Clojure's `clojure.core/int-array`.\n\n  - `(int-array size-or-seq)` \u2014 given a non-negative integer, fills with `0`;\n    given a sequence, coerces each element to int via `intval`.\n  - `(int-array size init-val-or-seq)` \u2014 when `init-val-or-seq` is a number, every\n    slot is filled with it (coerced to int). When it is a sequence, its elements\n    fill the prefix of the array (truncated to `size` if longer) and the remaining\n    slots are zero-padded.\n\n  PHP has no typed arrays, so the result is a plain PHP array.",
        "doc": "```phel\n(int-array size-or-seq)\n(int-array size init-val-or-seq)\n```\nCreates a PHP array of integers, matching Clojure's `clojure.core/int-array`.\n\n  - `(int-array size-or-seq)` \u2014 given a non-negative integer, fills with `0`;\n    given a sequence, coerces each element to int via `intval`.\n  - `(int-array size init-val-or-seq)` \u2014 when `init-val-or-seq` is a number, every\n    slot is filled with it (coerced to int). When it is a sequence, its elements\n    fill the prefix of the array (truncated to `size` if longer) and the remaining\n    slots are zero-padded.\n\n  PHP has no typed arrays, so the result is a plain PHP array.",
        "signatures": [
            "(int-array size-or-seq)",
            "(int-array size init-val-or-seq)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/arrays.phel#L153",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(int-array size-or-seq)\n(int-array size init-val-or-seq)\n```\nCreates a PHP array of integers, matching Clojure's `clojure.core/int-array`.\n\n  - `(int-array size-or-seq)` \u2014 given a non-negative integer, fills with `0`;\n    given a sequence, coerces each element to int via `intval`.\n  - `(int-array size init-val-or-seq)` \u2014 when `init-val-or-seq` is a number, every\n    slot is filled with it (coerced to int). When it is a sequence, its elements\n    fill the prefix of the array (truncated to `size` if longer) and the remaining\n    slots are zero-padded.\n\n  PHP has no typed arrays, so the result is a plain PHP array.",
            "example": "(int-array 3) ; => PHP array [0, 0, 0]\n(int-array [1.5 2.7]) ; => PHP array [1, 2]\n(int-array 4 7) ; => PHP array [7, 7, 7, 7]\n(int-array 5 [10 20]) ; => PHP array [10, 20, 0, 0, 0]",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([size-or-seq] [size init-val-or-seq])"
        }
    },
    {
        "namespace": "core",
        "name": "int?",
        "description": "Returns true if `x` is a fixed-precision PHP integer. `BigInt`\n   values return false; use `integer?` to accept either.",
        "doc": "```phel\n(int? x)\n```\nReturns true if `x` is a fixed-precision PHP integer. `BigInt`\n   values return false; use `integer?` to accept either.",
        "signatures": [
            "(int? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L146",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(int? x)\n```\nReturns true if `x` is a fixed-precision PHP integer. `BigInt`\n   values return false; use `integer?` to accept either.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "integer?",
        "description": "Returns true if `x` is a mathematical integer: a fixed-precision PHP\n   `int` or a `BigInt`.",
        "doc": "```phel\n(integer? x)\n```\nReturns true if `x` is a mathematical integer: a fixed-precision PHP\n   `int` or a `BigInt`.",
        "signatures": [
            "(integer? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L138",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(integer? x)\n```\nReturns true if `x` is a mathematical integer: a fixed-precision PHP\n   `int` or a `BigInt`.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "interleave",
        "description": "Returns a lazy sequence of the first item in each `colls`, then the\n  second item in each, until any one of the collections is exhausted.\n  Any remaining items in the other collections are ignored. Returns an\n  empty sequence when no collections are supplied or when any\n  collection is empty or `nil`. Maps are iterated as `[key value]`\n  pairs.",
        "doc": "```phel\n(interleave & colls)\n```\nReturns a lazy sequence of the first item in each `colls`, then the\n  second item in each, until any one of the collections is exhausted.\n  Any remaining items in the other collections are ignored. Returns an\n  empty sequence when no collections are supplied or when any\n  collection is empty or `nil`. Maps are iterated as `[key value]`\n  pairs.",
        "signatures": [
            "(interleave & colls)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1041",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(interleave & colls)\n```\nReturns a lazy sequence of the first item in each `colls`, then the\n  second item in each, until any one of the collections is exhausted.\n  Any remaining items in the other collections are ignored. Returns an\n  empty sequence when no collections are supplied or when any\n  collection is empty or `nil`. Maps are iterated as `[key value]`\n  pairs.",
            "example": "(interleave [1 2 3] [:a :b :c]) ; => (1 :a 2 :b 3 :c)\n(interleave [1 2 3] [:a :b]) ; => (1 :a 2 :b)",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& colls]"
        }
    },
    {
        "namespace": "core",
        "name": "intern",
        "description": "Finds or creates a definition named by name-str in namespace ns-str.\n  When a value is supplied, sets the root value to val (overwriting any\n  existing value). When no value is supplied, returns the existing\n  definition unchanged, or creates a new one with nil if none exists.\n  Auto-registers the namespace when creating a new definition; the\n  arity-2 form is a no-op when the definition already exists.\n  Returns the fully qualified symbol naming the definition (with the\n  namespace in display form).",
        "doc": "```phel\n(intern ns-str name-str & rest)\n```\nFinds or creates a definition named by name-str in namespace ns-str.\n  When a value is supplied, sets the root value to val (overwriting any\n  existing value). When no value is supplied, returns the existing\n  definition unchanged, or creates a new one with nil if none exists.\n  Auto-registers the namespace when creating a new definition; the\n  arity-2 form is a no-op when the definition already exists.\n  Returns the fully qualified symbol naming the definition (with the\n  namespace in display form).",
        "signatures": [
            "(intern ns-str name-str & rest)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/ns.phel#L98",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(intern ns-str name-str & rest)\n```\nFinds or creates a definition named by name-str in namespace ns-str.\n  When a value is supplied, sets the root value to val (overwriting any\n  existing value). When no value is supplied, returns the existing\n  definition unchanged, or creates a new one with nil if none exists.\n  Auto-registers the namespace when creating a new definition; the\n  arity-2 form is a no-op when the definition already exists.\n  Returns the fully qualified symbol naming the definition (with the\n  namespace in display form).",
            "example": "(intern \"user\" \"x\" 42) ; => user/x",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[ns-str name-str & rest]"
        }
    },
    {
        "namespace": "core",
        "name": "interpose",
        "description": "Returns elements separated by a separator. Returns a lazy sequence.\n  When called with sep only, returns a transducer.",
        "doc": "```phel\n(interpose sep & args)\n```\nReturns elements separated by a separator. Returns a lazy sequence.\n  When called with sep only, returns a transducer.",
        "signatures": [
            "(interpose sep & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L994",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(interpose sep & args)\n```\nReturns elements separated by a separator. Returns a lazy sequence.\n  When called with sep only, returns a transducer.",
            "example": "(interpose 0 [1 2 3]) ; => (1 0 2 0 3)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[sep & args]"
        }
    },
    {
        "namespace": "core",
        "name": "intersection",
        "description": "Intersect multiple sets into a new one.",
        "doc": "```phel\n(intersection set & sets)\n```\nIntersect multiple sets into a new one.",
        "signatures": [
            "(intersection set & sets)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L35",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(intersection set & sets)\n```\nIntersect multiple sets into a new one.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[set & sets]"
        }
    },
    {
        "namespace": "core",
        "name": "into",
        "description": "Returns `to` with all elements of `from` added.\n\n  When `from` is associative, it is treated as a sequence of key-value pairs.\n  Supports persistent and transient collections.",
        "doc": "```phel\n(into to & rest)\n```\nReturns `to` with all elements of `from` added.\n\n  When `from` is associative, it is treated as a sequence of key-value pairs.\n  Supports persistent and transient collections.",
        "signatures": [
            "(into to & rest)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L119",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(into to & rest)\n```\nReturns `to` with all elements of `from` added.\n\n  When `from` is associative, it is treated as a sequence of key-value pairs.\n  Supports persistent and transient collections.",
            "example": "(into [] '(1 2 3)) ; => [1 2 3]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[to & rest]"
        }
    },
    {
        "namespace": "core",
        "name": "into-array",
        "description": "Returns a PHP array containing the elements of `aseq`. Accepts any\n  collection (vector, list, set, map, PHP array) or `nil`, which yields\n  an empty PHP array. The optional `type` argument is accepted for\n  `.cljc` interop but has no runtime effect \u2014 PHP has no typed arrays,\n  so the result is always a plain PHP array. Use the dedicated coercion\n  helpers (`int-array`, `long-array`, `float-array`, `double-array`,\n  `short-array`) when element coercion is actually required.",
        "doc": "```phel\n(into-array aseq)\n(into-array _type aseq)\n```\nReturns a PHP array containing the elements of `aseq`. Accepts any\n  collection (vector, list, set, map, PHP array) or `nil`, which yields\n  an empty PHP array. The optional `type` argument is accepted for\n  `.cljc` interop but has no runtime effect \u2014 PHP has no typed arrays,\n  so the result is always a plain PHP array. Use the dedicated coercion\n  helpers (`int-array`, `long-array`, `float-array`, `double-array`,\n  `short-array`) when element coercion is actually required.",
        "signatures": [
            "(into-array aseq)",
            "(into-array _type aseq)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/arrays.phel#L71",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(into-array aseq)\n(into-array _type aseq)\n```\nReturns a PHP array containing the elements of `aseq`. Accepts any\n  collection (vector, list, set, map, PHP array) or `nil`, which yields\n  an empty PHP array. The optional `type` argument is accepted for\n  `.cljc` interop but has no runtime effect \u2014 PHP has no typed arrays,\n  so the result is always a plain PHP array. Use the dedicated coercion\n  helpers (`int-array`, `long-array`, `float-array`, `double-array`,\n  `short-array`) when element coercion is actually required.",
            "example": "(into-array [1 2 3]) ; => a PHP array [1, 2, 3]\n(into-array :Object [:a :b]) ; => a PHP array [:a, :b]",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([aseq] [_type aseq])"
        }
    },
    {
        "namespace": "core",
        "name": "invert",
        "description": "Returns a new map where the keys and values are swapped.\n\n  If map has duplicated values, some keys will be ignored.",
        "doc": "```phel\n(invert map)\n```\nReturns a new map where the keys and values are swapped.\n\n  If map has duplicated values, some keys will be ignored.",
        "signatures": [
            "(invert map)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1176",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(invert map)\n```\nReturns a new map where the keys and values are swapped.\n\n  If map has duplicated values, some keys will be ignored.",
            "example": "(invert {:a 1 :b 2 :c 3}) ; => {1 :a 2 :b 3 :c}",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[map]"
        }
    },
    {
        "namespace": "core",
        "name": "isa?",
        "description": "Returns true if child equals parent, or child is a descendant of parent.\n  When a hierarchy is provided, the check is performed against it; otherwise\n  the global hierarchy is used.",
        "doc": "```phel\n(isa? child parent)\n(isa? h child parent)\n```\nReturns true if child equals parent, or child is a descendant of parent.\n  When a hierarchy is provided, the check is performed against it; otherwise\n  the global hierarchy is used.",
        "signatures": [
            "(isa? child parent)",
            "(isa? h child parent)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L218",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(isa? child parent)\n(isa? h child parent)\n```\nReturns true if child equals parent, or child is a descendant of parent.\n  When a hierarchy is provided, the check is performed against it; otherwise\n  the global hierarchy is used.",
            "example": "(do (derive :square :shape) (isa? :square :shape)) ; => true",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "max-arity": 3,
            "arglists": "([child parent] [h child parent])"
        }
    },
    {
        "namespace": "core",
        "name": "iterate",
        "description": "Returns an infinite lazy sequence of x, (f x), (f (f x)), and so on.",
        "doc": "```phel\n(iterate f x)\n```\nReturns an infinite lazy sequence of x, (f x), (f (f x)), and so on.",
        "signatures": [
            "(iterate f x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L932",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(iterate f x)\n```\nReturns an infinite lazy sequence of x, (f x), (f (f x)), and so on.",
            "example": "(take 5 (iterate inc 0)) ; => (0 1 2 3 4)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[f x]"
        }
    },
    {
        "namespace": "core",
        "name": "iteration",
        "description": "Creates a lazy sequence from successive calls to `step`.\n  `step` is called with a key (starting with `:initk`) and returns a result.\n  `:kf` extracts the next key, `:vf` extracts the value from the result.\n  Terminates when the result is nil.\n\n  Options map keys:\n    :kf     \u2014 key function (default: identity)\n    :vf     \u2014 value function (default: identity)\n    :initk  \u2014 initial key (default: nil)",
        "doc": "```phel\n(iteration step opts)\n```\nCreates a lazy sequence from successive calls to `step`.\n  `step` is called with a key (starting with `:initk`) and returns a result.\n  `:kf` extracts the next key, `:vf` extracts the value from the result.\n  Terminates when the result is nil.\n\n  Options map keys:\n    :kf     \u2014 key function (default: identity)\n    :vf     \u2014 value function (default: identity)\n    :initk  \u2014 initial key (default: nil)",
        "signatures": [
            "(iteration step opts)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/lazy.phel#L37",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(iteration step opts)\n```\nCreates a lazy sequence from successive calls to `step`.\n  `step` is called with a key (starting with `:initk`) and returns a result.\n  `:kf` extracts the next key, `:vf` extracts the value from the result.\n  Terminates when the result is nil.\n\n  Options map keys:\n    :kf     \u2014 key function (default: identity)\n    :vf     \u2014 value function (default: identity)\n    :initk  \u2014 initial key (default: nil)",
            "example": "(iteration fetch-page {:kf :next-token :vf :items :initk nil})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[step opts]"
        }
    },
    {
        "namespace": "core",
        "name": "juxt",
        "description": "Takes a list of functions and returns a new function that is the juxtaposition of those functions.",
        "doc": "```phel\n(juxt & fs)\n```\nTakes a list of functions and returns a new function that is the juxtaposition of those functions.",
        "signatures": [
            "(juxt & fs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L123",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(juxt & fs)\n```\nTakes a list of functions and returns a new function that is the juxtaposition of those functions.",
            "example": "((juxt inc dec #(* % 2)) 10) => [11 9 20]",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& fs]"
        }
    },
    {
        "namespace": "core",
        "name": "keep",
        "description": "Returns a lazy sequence of non-nil results of applying function to elements.\n  When called with f only, returns a transducer.",
        "doc": "```phel\n(keep pred & args)\n```\nReturns a lazy sequence of non-nil results of applying function to elements.\n  When called with f only, returns a transducer.",
        "signatures": [
            "(keep pred & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L541",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(keep pred & args)\n```\nReturns a lazy sequence of non-nil results of applying function to elements.\n  When called with f only, returns a transducer.",
            "example": "(keep #(when (even? %) (* % %)) [1 2 3 4 5]) ; => (4 16)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[pred & args]"
        }
    },
    {
        "namespace": "core",
        "name": "keep-indexed",
        "description": "Returns a lazy sequence of non-nil results of `(pred i x)`.\n  When called with f only, returns a transducer.",
        "doc": "```phel\n(keep-indexed pred & args)\n```\nReturns a lazy sequence of non-nil results of `(pred i x)`.\n  When called with f only, returns a transducer.",
        "signatures": [
            "(keep-indexed pred & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L559",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(keep-indexed pred & args)\n```\nReturns a lazy sequence of non-nil results of `(pred i x)`.\n  When called with f only, returns a transducer.",
            "example": "(keep-indexed #(when (even? %1) %2) [\"a\" \"b\" \"c\" \"d\"]) ; => (\"a\" \"c\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[pred & args]"
        }
    },
    {
        "namespace": "core",
        "name": "key",
        "description": "Returns the key of a map entry. Accepts a typed\n  `Phel\\Lang\\Collections\\Map\\MapEntry` value or a 2-element vector\n  `[key value]` (the form Phel maps yield when iterated).",
        "doc": "```phel\n(key entry)\n```\nReturns the key of a map entry. Accepts a typed\n  `Phel\\Lang\\Collections\\Map\\MapEntry` value or a 2-element vector\n  `[key value]` (the form Phel maps yield when iterated).",
        "signatures": [
            "(key entry)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L706",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(key entry)\n```\nReturns the key of a map entry. Accepts a typed\n  `Phel\\Lang\\Collections\\Map\\MapEntry` value or a 2-element vector\n  `[key value]` (the form Phel maps yield when iterated).",
            "example": "(key (first (pairs {:a 1}))) ; => :a",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[entry]"
        }
    },
    {
        "namespace": "core",
        "name": "keys",
        "description": "Returns a sequence of all keys in a map, or `nil` when the map is `nil`\n  or empty.",
        "doc": "```phel\n(keys coll)\n```\nReturns a sequence of all keys in a map, or `nil` when the map is `nil`\n  or empty.",
        "signatures": [
            "(keys coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L681",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(keys coll)\n```\nReturns a sequence of all keys in a map, or `nil` when the map is `nil`\n  or empty.",
            "example": "(keys {:a 1 :b 2}) ; => (:a :b)\n(keys nil) ; => nil",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "keyword",
        "description": "Creates a new Keyword.\n\n  Arity-1 accepts a string, keyword, or symbol. Returns `nil` when `x` is `nil`.\n  If `x` is already a keyword, it is returned unchanged.\n\n  Arity-2 builds a namespaced keyword from the namespace and name parts; returns\n  `nil` when `name` is `nil`.",
        "doc": "```phel\n(keyword x)\n(keyword ns nm)\n```\nCreates a new Keyword.\n\n  Arity-1 accepts a string, keyword, or symbol. Returns `nil` when `x` is `nil`.\n  If `x` is already a keyword, it is returned unchanged.\n\n  Arity-2 builds a namespaced keyword from the namespace and name parts; returns\n  `nil` when `name` is `nil`.",
        "signatures": [
            "(keyword x)",
            "(keyword ns nm)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L60",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(keyword x)\n(keyword ns nm)\n```\nCreates a new Keyword.\n\n  Arity-1 accepts a string, keyword, or symbol. Returns `nil` when `x` is `nil`.\n  If `x` is already a keyword, it is returned unchanged.\n\n  Arity-2 builds a namespaced keyword from the namespace and name parts; returns\n  `nil` when `name` is `nil`.",
            "example": "(keyword \"name\") ; => :name\n(keyword :abc) ; => :abc\n(keyword \"ns\" \"name\") ; => :ns/name",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([x] [ns nm])"
        }
    },
    {
        "namespace": "core",
        "name": "keyword?",
        "description": "Returns true if `x` is a keyword, false otherwise.",
        "doc": "```phel\n(keyword? x)\n```\nReturns true if `x` is a keyword, false otherwise.",
        "signatures": [
            "(keyword? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L229",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(keyword? x)\n```\nReturns true if `x` is a keyword, false otherwise.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "kvs",
        "description": "Returns a vector of key-value pairs like `[k1 v1 k2 v2 k3 v3 ...]`.",
        "doc": "```phel\n(kvs coll)\n```\nReturns a vector of key-value pairs like `[k1 v1 k2 v2 k3 v3 ...]`.",
        "signatures": [
            "(kvs coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L744",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(kvs coll)\n```\nReturns a vector of key-value pairs like `[k1 v1 k2 v2 k3 v3 ...]`.",
            "example": "(kvs {:a 1 :b 2}) ; => [:a 1 :b 2]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "last",
        "description": "Returns the last element of `coll` or nil if `coll` is empty or nil.",
        "doc": "```phel\n(last coll)\n```\nReturns the last element of `coll` or nil if `coll` is empty or nil.",
        "signatures": [
            "(last coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L389",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(last coll)\n```\nReturns the last element of `coll` or nil if `coll` is empty or nil.",
            "example": "(last [1 2 3]) ; => 3",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "lazy-cat",
        "description": "Concatenates collections into a lazy sequence (expands to concat).",
        "doc": "```phel\n(lazy-cat & colls)\n```\nConcatenates collections into a lazy sequence (expands to concat).",
        "signatures": [
            "(lazy-cat & colls)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L926",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(lazy-cat & colls)\n```\nConcatenates collections into a lazy sequence (expands to concat).",
            "example": "(lazy-cat [1 2] [3 4]) ; => (1 2 3 4)",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& colls]"
        }
    },
    {
        "namespace": "core",
        "name": "lazy-seq",
        "description": "Creates a lazy sequence that evaluates the body only when accessed.",
        "doc": "```phel\n(lazy-seq & body)\n```\nCreates a lazy sequence that evaluates the body only when accessed.",
        "signatures": [
            "(lazy-seq & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L917",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(lazy-seq & body)\n```\nCreates a lazy sequence that evaluates the body only when accessed.",
            "example": "(lazy-seq (cons 1 (lazy-seq nil))) ; => (1)",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& body]"
        }
    },
    {
        "namespace": "core",
        "name": "lazy-seq?",
        "description": "Returns true if `x` is a lazy sequence, false otherwise.\n\n  Unlike `seq?`, this predicate is true only for lazy sequences, not for\n  realized lists. Use `seq?` if you want to accept either.",
        "doc": "```phel\n(lazy-seq? x)\n```\nReturns true if `x` is a lazy sequence, false otherwise.\n\n  Unlike `seq?`, this predicate is true only for lazy sequences, not for\n  realized lists. Use `seq?` if you want to accept either.",
        "signatures": [
            "(lazy-seq? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L410",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(lazy-seq? x)\n```\nReturns true if `x` is a lazy sequence, false otherwise.\n\n  Unlike `seq?`, this predicate is true only for lazy sequences, not for\n  realized lists. Use `seq?` if you want to accept either.",
            "example": "(lazy-seq? (map inc [1 2 3])) ; => true\n(lazy-seq? '(1 2 3))         ; => false\n(lazy-seq? [1 2 3])          ; => false",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "let",
        "description": "Creates a new lexical context with assignments defined in bindings. Afterwards the list of expressions is evaluated and the value of the last expression is returned. If no expression is given nil is returned.",
        "doc": "```phel\n(let [bindings*] expr*)\n```\nCreates a new lexical context with assignments defined in bindings. Afterwards the list of expressions is evaluated and the value of the last expression is returned. If no expression is given nil is returned.",
        "signatures": [
            "(let [bindings*] expr*)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/global-and-local-bindings/#local-bindings-let",
        "meta": {
            "example": "(let [x 1 y 2] (+ x y)) ; => 3"
        }
    },
    {
        "namespace": "core",
        "name": "letfn",
        "description": "Defines mutually recursive local functions.\n\n  bindings is a vector of function specs: (letfn [(f [params] body) (g [params] body)] expr)\n  All function names are in scope within all function bodies and the body expression,\n  enabling mutual recursion.",
        "doc": "```phel\n(letfn bindings & body)\n```\nDefines mutually recursive local functions.\n\n  bindings is a vector of function specs: (letfn [(f [params] body) (g [params] body)] expr)\n  All function names are in scope within all function bodies and the body expression,\n  enabling mutual recursion.",
        "signatures": [
            "(letfn bindings & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L920",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(letfn bindings & body)\n```\nDefines mutually recursive local functions.\n\n  bindings is a vector of function specs: (letfn [(f [params] body) (g [params] body)] expr)\n  All function names are in scope within all function bodies and the body expression,\n  enabling mutual recursion.",
            "example": "(letfn [(my-even? [n] (if (zero? n) true (my-odd? (dec n))))\n        (my-odd? [n] (if (zero? n) false (my-even? (dec n))))]\n  (my-even? 10))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[bindings & body]"
        }
    },
    {
        "namespace": "core",
        "name": "line-seq",
        "description": "Returns a lazy sequence of lines from a file.",
        "doc": "```phel\n(line-seq filename)\n```\nReturns a lazy sequence of lines from a file.",
        "signatures": [
            "(line-seq filename)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L125",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(line-seq filename)\n```\nReturns a lazy sequence of lines from a file.",
            "example": "(take 10 (line-seq \"large-file.txt\")) ; => [\"line1\" \"line2\" ...]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[filename]"
        }
    },
    {
        "namespace": "core",
        "name": "list",
        "description": "Creates a new list. If no argument is provided, an empty list is created.",
        "doc": "```phel\n(list 1 2 3) ; => '(1 2 3)\n```\nCreates a new list. If no argument is provided, an empty list is created. Shortcut: '()",
        "signatures": [
            "(list & xs)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/data-structures/#lists",
        "meta": {
            "example": "(list 1 2 3) ; => '(1 2 3)"
        }
    },
    {
        "namespace": "core",
        "name": "list?",
        "description": "Returns true if `x` is a list, false otherwise.\n  Returns false for the seq view of non-list collections produced by `seq`.",
        "doc": "```phel\n(list? x)\n```\nReturns true if `x` is a list, false otherwise.\n  Returns false for the seq view of non-list collections produced by `seq`.",
        "signatures": [
            "(list? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L340",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(list? x)\n```\nReturns true if `x` is a list, false otherwise.\n  Returns false for the seq view of non-list collections produced by `seq`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "load-file",
        "description": "Loads and evaluates a Phel source file. Reads the file content and\n  evaluates it using the compiler. Returns the result of the last\n  expression, or nil if the file cannot be read.",
        "doc": "```phel\n(load-file path)\n```\nLoads and evaluates a Phel source file. Reads the file content and\n  evaluates it using the compiler. Returns the result of the last\n  expression, or nil if the file cannot be read.",
        "signatures": [
            "(load-file path)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/ns.phel#L217",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(load-file path)\n```\nLoads and evaluates a Phel source file. Reads the file content and\n  evaluates it using the compiler. Returns the result of the last\n  expression, or nil if the file cannot be read.",
            "example": "(load-file \"src/my-module.phel\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[path]"
        }
    },
    {
        "namespace": "core",
        "name": "loaded-namespaces",
        "description": "Returns all namespaces currently loaded, in dot-separated display form.",
        "doc": "```phel\n(loaded-namespaces)\n```\nReturns all namespaces currently loaded, in dot-separated display form.",
        "signatures": [
            "(loaded-namespaces)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/ns.phel#L35",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(loaded-namespaces)\n```\nReturns all namespaces currently loaded, in dot-separated display form.",
            "example": "(loaded-namespaces) ; => [\"phel.core\" \"phel.repl\"]",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "core",
        "name": "long",
        "description": "Coerces `x` to a long integer. In PHP there is no distinction between int\n   and long; both map to the same native PHP int type. Alias for `int`.",
        "doc": "```phel\n(long x)\n```\nCoerces `x` to a long integer. In PHP there is no distinction between int\n   and long; both map to the same native PHP int type. Alias for `int`.",
        "signatures": [
            "(long x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L354",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(long x)\n```\nCoerces `x` to a long integer. In PHP there is no distinction between int\n   and long; both map to the same native PHP int type. Alias for `int`.",
            "example": "(long 1.9) ; => 1",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "long-array",
        "description": "Creates a PHP array of longs (same as int-array in PHP). Accepts the same\n  arities and semantics as `int-array`.",
        "doc": "```phel\n(long-array size-or-seq)\n(long-array size init-val-or-seq)\n```\nCreates a PHP array of longs (same as int-array in PHP). Accepts the same\n  arities and semantics as `int-array`.",
        "signatures": [
            "(long-array size-or-seq)",
            "(long-array size init-val-or-seq)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/arrays.phel#L169",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(long-array size-or-seq)\n(long-array size init-val-or-seq)\n```\nCreates a PHP array of longs (same as int-array in PHP). Accepts the same\n  arities and semantics as `int-array`.",
            "example": "(long-array 3) ; => PHP array [0, 0, 0]\n(long-array 4 7) ; => PHP array [7, 7, 7, 7]",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([size-or-seq] [size init-val-or-seq])"
        }
    },
    {
        "namespace": "core",
        "name": "loop",
        "description": "Creates a new lexical context with variables defined in bindings and defines a recursion point at the top of the loop.",
        "doc": "```phel\n(loop [bindings*] expr*)\n```\nCreates a new lexical context with variables defined in bindings and defines a recursion point at the top of the loop.",
        "signatures": [
            "(loop [bindings*] expr*)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/control-flow/#loop",
        "meta": {
            "example": "(loop [i 0] (if (< i 5) (do (println i) (recur (inc i)))))"
        }
    },
    {
        "namespace": "core",
        "name": "macroexpand",
        "description": "Recursively expands the given form until it is no longer a macro call.",
        "doc": "```phel\n(macroexpand form)\n```\nRecursively expands the given form until it is no longer a macro call.",
        "signatures": [
            "(macroexpand form)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/macroexpand.phel#L32",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(macroexpand form)\n```\nRecursively expands the given form until it is no longer a macro call.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[form]"
        }
    },
    {
        "namespace": "core",
        "name": "macroexpand-1",
        "description": "Expands the given form once if it is a macro call.",
        "doc": "```phel\n(macroexpand-1 form)\n```\nExpands the given form once if it is a macro call.",
        "signatures": [
            "(macroexpand-1 form)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/macroexpand.phel#L12",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(macroexpand-1 form)\n```\nExpands the given form once if it is a macro call.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[form]"
        }
    },
    {
        "namespace": "core",
        "name": "make-hierarchy",
        "description": "Creates a fresh, empty hierarchy.\n\n  Returns a map with `:parents`, `:descendants`, and `:ancestors` keys, each\n  holding an empty map. Matches Clojure's hierarchy shape so consumers can\n  destructure any of the three relationship views.",
        "doc": "```phel\n(make-hierarchy)\n```\nCreates a fresh, empty hierarchy.\n\n  Returns a map with `:parents`, `:descendants`, and `:ancestors` keys, each\n  holding an empty map. Matches Clojure's hierarchy shape so consumers can\n  destructure any of the three relationship views.",
        "signatures": [
            "(make-hierarchy)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L51",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(make-hierarchy)\n```\nCreates a fresh, empty hierarchy.\n\n  Returns a map with `:parents`, `:descendants`, and `:ancestors` keys, each\n  holding an empty map. Matches Clojure's hierarchy shape so consumers can\n  destructure any of the three relationship views.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "core",
        "name": "map",
        "description": "Returns a lazy sequence of the result of applying `f` to all of the first items in each coll,\n   followed by applying `f` to all the second items in each coll until anyone of the colls is exhausted.\n\n  When given a single collection, applies the function to each element.\n  With multiple collections, applies the function to corresponding elements from each collection,\n  stopping when the shortest collection is exhausted.",
        "doc": "```phel\n(map f & colls)\n```\nReturns a lazy sequence of the result of applying `f` to all of the first items in each coll,\n   followed by applying `f` to all the second items in each coll until anyone of the colls is exhausted.\n\n  When given a single collection, applies the function to each element.\n  With multiple collections, applies the function to corresponding elements from each collection,\n  stopping when the shortest collection is exhausted.",
        "signatures": [
            "(map f & colls)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L54",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(map f & colls)\n```\nReturns a lazy sequence of the result of applying `f` to all of the first items in each coll,\n   followed by applying `f` to all the second items in each coll until anyone of the colls is exhausted.\n\n  When given a single collection, applies the function to each element.\n  With multiple collections, applies the function to corresponding elements from each collection,\n  stopping when the shortest collection is exhausted.",
            "example": "(map inc [1 2 3]) ; => (2 3 4)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[f & colls]"
        }
    },
    {
        "namespace": "core",
        "name": "map-entry",
        "description": "Returns a typed `Phel\\Lang\\Collections\\Map\\MapEntry` for `k`/`v`.\n  Equal to the two-element vector `[k v]` so existing code that\n  destructures `[k v]` keeps working.",
        "doc": "```phel\n(map-entry k v)\n```\nReturns a typed `Phel\\Lang\\Collections\\Map\\MapEntry` for `k`/`v`.\n  Equal to the two-element vector `[k v]` so existing code that\n  destructures `[k v]` keeps working.",
        "signatures": [
            "(map-entry k v)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L697",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(map-entry k v)\n```\nReturns a typed `Phel\\Lang\\Collections\\Map\\MapEntry` for `k`/`v`.\n  Equal to the two-element vector `[k v]` so existing code that\n  destructures `[k v]` keeps working.",
            "example": "(map-entry :a 1) ; => [:a 1]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[k v]"
        }
    },
    {
        "namespace": "core",
        "name": "map-entry?",
        "description": "Returns true if `x` is a map entry. Accepts both the typed\n  `Phel\\Lang\\Collections\\Map\\MapEntry` value and any 2-element vector\n  (Phel maps still yield vectors when iterated).",
        "doc": "```phel\n(map-entry? x)\n```\nReturns true if `x` is a map entry. Accepts both the typed\n  `Phel\\Lang\\Collections\\Map\\MapEntry` value and any 2-element vector\n  (Phel maps still yield vectors when iterated).",
        "signatures": [
            "(map-entry? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L330",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(map-entry? x)\n```\nReturns true if `x` is a map entry. Accepts both the typed\n  `Phel\\Lang\\Collections\\Map\\MapEntry` value and any 2-element vector\n  (Phel maps still yield vectors when iterated).",
            "example": "(map-entry? [:a 1]) ; => true\n(map-entry? (map-entry :a 1)) ; => true\n(map-entry? [1 2 3]) ; => false",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "map-indexed",
        "description": "Maps a function over a collection with index. Returns a lazy sequence.\n\n  Applies `f` to each element in `xs`. `f` is a two-argument function where\n  the first argument is the index (0-based) and the second is the element itself.\n  Works with infinite sequences.",
        "doc": "```phel\n(map-indexed f coll)\n```\nMaps a function over a collection with index. Returns a lazy sequence.\n\n  Applies `f` to each element in `xs`. `f` is a two-argument function where\n  the first argument is the index (0-based) and the second is the element itself.\n  Works with infinite sequences.",
        "signatures": [
            "(map-indexed f coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1025",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(map-indexed f coll)\n```\nMaps a function over a collection with index. Returns a lazy sequence.\n\n  Applies `f` to each element in `xs`. `f` is a two-argument function where\n  the first argument is the index (0-based) and the second is the element itself.\n  Works with infinite sequences.",
            "example": "(map-indexed vector [:a :b :c]) ; => ([0 :a] [1 :b] [2 :c])",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[f coll]"
        }
    },
    {
        "namespace": "core",
        "name": "map?",
        "description": "Returns true if `x` is a hash map, false otherwise.",
        "doc": "```phel\n(map? x)\n```\nReturns true if `x` is a hash map, false otherwise.",
        "signatures": [
            "(map? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L309",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(map? x)\n```\nReturns true if `x` is a hash map, false otherwise.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "mapcat",
        "description": "Maps a function over one or more collections and concatenates the results.\n  Returns a lazy sequence. When called with `f` alone, returns a transducer.\n\n  With a single collection behaves like `(apply concat (map f coll))`. With\n  multiple collections, `f` is called with corresponding elements from each\n  (stopping when the shortest is exhausted) and the resulting sequences are\n  concatenated.",
        "doc": "```phel\n(mapcat f & args)\n```\nMaps a function over one or more collections and concatenates the results.\n  Returns a lazy sequence. When called with `f` alone, returns a transducer.\n\n  With a single collection behaves like `(apply concat (map f coll))`. With\n  multiple collections, `f` is called with corresponding elements from each\n  (stopping when the shortest is exhausted) and the resulting sequences are\n  concatenated.",
        "signatures": [
            "(mapcat f & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L970",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(mapcat f & args)\n```\nMaps a function over one or more collections and concatenates the results.\n  Returns a lazy sequence. When called with `f` alone, returns a transducer.\n\n  With a single collection behaves like `(apply concat (map f coll))`. With\n  multiple collections, `f` is called with corresponding elements from each\n  (stopping when the shortest is exhausted) and the resulting sequences are\n  concatenated.",
            "example": "(mapcat reverse [[1 2] [3 4]]) ; => (2 1 4 3)\n(mapcat list [:a :b :c] [1 2 3]) ; => (:a 1 :b 2 :c 3)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[f & args]"
        }
    },
    {
        "namespace": "core",
        "name": "max",
        "description": "Returns the maximum of all arguments. Returns `##NaN` whenever any\n  numeric argument is `##NaN`.",
        "doc": "```phel\n(max & numbers)\n```\nReturns the maximum of all arguments. Returns `##NaN` whenever any\n  numeric argument is `##NaN`.",
        "signatures": [
            "(max & numbers)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L468",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(max & numbers)\n```\nReturns the maximum of all arguments. Returns `##NaN` whenever any\n  numeric argument is `##NaN`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& numbers]"
        }
    },
    {
        "namespace": "core",
        "name": "max-key",
        "description": "Returns the arg for which (k arg) is largest. On ties, returns the latest argument.",
        "doc": "```phel\n(max-key k x & more)\n```\nReturns the arg for which (k arg) is largest. On ties, returns the latest argument.",
        "signatures": [
            "(max-key k x & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L491",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(max-key k x & more)\n```\nReturns the arg for which (k arg) is largest. On ties, returns the latest argument.",
            "example": "(max-key count \"bb\" \"aaa\" \"b\") ; => \"aaa\"",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[k x & more]"
        }
    },
    {
        "namespace": "core",
        "name": "mean",
        "description": "Returns the mean of `xs` as a float.",
        "doc": "```phel\n(mean xs)\n```\nReturns the mean of `xs` as a float.",
        "signatures": [
            "(mean xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L517",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(mean xs)\n```\nReturns the mean of `xs` as a float.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[xs]"
        }
    },
    {
        "namespace": "core",
        "name": "median",
        "description": "Returns the median of `xs`. With an even-sized collection the result is\n  the float average of the two middle elements.",
        "doc": "```phel\n(median xs)\n```\nReturns the median of `xs`. With an even-sized collection the result is\n  the float average of the two middle elements.",
        "signatures": [
            "(median xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L522",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(median xs)\n```\nReturns the median of `xs`. With an even-sized collection the result is\n  the float average of the two middle elements.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[xs]"
        }
    },
    {
        "namespace": "core",
        "name": "memoize",
        "description": "Returns a memoized version of the function `f`. The memoized function\n  caches the return value for each set of arguments.",
        "doc": "```phel\n(memoize f)\n```\nReturns a memoized version of the function `f`. The memoized function\n  caches the return value for each set of arguments.",
        "signatures": [
            "(memoize f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L159",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(memoize f)\n```\nReturns a memoized version of the function `f`. The memoized function\n  caches the return value for each set of arguments.",
            "example": "(defn fact [n]\n  (if (zero? n)\n    1\n    (* n (fact (dec n)))))\n(def fact-memo (memoize fact))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[f]"
        }
    },
    {
        "namespace": "core",
        "name": "memoize-lru",
        "description": "Returns a memoized version of the function `f` with an LRU (Least Recently Used)\n  cache limited to `max-size` entries. When the cache exceeds `max-size`, the\n  least recently used entry is evicted. This prevents unbounded memory growth\n  in long-running processes.\n\n  Without arguments, uses a default cache size of 128 entries.",
        "doc": "```phel\n(memoize-lru f)\n(memoize-lru f max-size)\n```\nReturns a memoized version of the function `f` with an LRU (Least Recently Used)\n  cache limited to `max-size` entries. When the cache exceeds `max-size`, the\n  least recently used entry is evicted. This prevents unbounded memory growth\n  in long-running processes.\n\n  Without arguments, uses a default cache size of 128 entries.",
        "signatures": [
            "(memoize-lru f)",
            "(memoize-lru f max-size)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L182",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(memoize-lru f)\n(memoize-lru f max-size)\n```\nReturns a memoized version of the function `f` with an LRU (Least Recently Used)\n  cache limited to `max-size` entries. When the cache exceeds `max-size`, the\n  least recently used entry is evicted. This prevents unbounded memory growth\n  in long-running processes.\n\n  Without arguments, uses a default cache size of 128 entries.",
            "example": "(defn fact [n]\n  (if (zero? n)\n    1\n    (* n (fact (dec n)))))\n(def fact-memo (memoize-lru fact 100))",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([f] [f max-size])"
        }
    },
    {
        "namespace": "core",
        "name": "merge",
        "description": "Merges multiple maps into one new map.\n\n  If a key appears in more than one collection, later values replace previous ones.",
        "doc": "```phel\n(merge)\n(merge map)\n(merge map & more)\n```\nMerges multiple maps into one new map.\n\n  If a key appears in more than one collection, later values replace previous ones.",
        "signatures": [
            "(merge)",
            "(merge map)",
            "(merge map & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1142",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(merge)\n(merge map)\n(merge map & more)\n```\nMerges multiple maps into one new map.\n\n  If a key appears in more than one collection, later values replace previous ones.",
            "example": "(merge {:a 1 :b 2} {:b 3 :c 4}) ; => {:a 1 :b 3 :c 4}",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "max-arity": null,
            "arglists": "([] [map] [map & more])"
        }
    },
    {
        "namespace": "core",
        "name": "merge-with",
        "description": "Merges multiple maps into one new map. If a key appears in more than one\n   collection, the result of `(f current-val next-val)` is used.",
        "doc": "```phel\n(merge-with f & hash-maps)\n```\nMerges multiple maps into one new map. If a key appears in more than one\n   collection, the result of `(f current-val next-val)` is used.",
        "signatures": [
            "(merge-with f & hash-maps)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L265",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(merge-with f & hash-maps)\n```\nMerges multiple maps into one new map. If a key appears in more than one\n   collection, the result of `(f current-val next-val)` is used.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[f & hash-maps]"
        }
    },
    {
        "namespace": "core",
        "name": "meta",
        "description": "Gets the metadata attached to a value.\n  For a quoted symbol (`(meta 'foo)`) the definition metadata registered via `def` is returned.\n  For any other expression the value is looked up at runtime and its `MetaInterface` metadata returned.",
        "doc": "Gets the metadata attached to a value.\n  For a quoted symbol (`(meta 'foo)`) the definition metadata registered via `def` is returned.\n  For any other expression the value is looked up at runtime and its `MetaInterface` metadata returned.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/meta.phel#L23",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "Gets the metadata attached to a value.\n  For a quoted symbol (`(meta 'foo)`) the definition metadata registered via `def` is returned.\n  For any other expression the value is looked up at runtime and its `MetaInterface` metadata returned.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[obj]"
        }
    },
    {
        "namespace": "core",
        "name": "min",
        "description": "Returns the minimum of all arguments. Returns `##NaN` whenever any\n  numeric argument is `##NaN`.",
        "doc": "```phel\n(min & numbers)\n```\nReturns the minimum of all arguments. Returns `##NaN` whenever any\n  numeric argument is `##NaN`.",
        "signatures": [
            "(min & numbers)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L459",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(min & numbers)\n```\nReturns the minimum of all arguments. Returns `##NaN` whenever any\n  numeric argument is `##NaN`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& numbers]"
        }
    },
    {
        "namespace": "core",
        "name": "min-key",
        "description": "Returns the arg for which (k arg) is smallest. On ties, returns the latest argument.",
        "doc": "```phel\n(min-key k x & more)\n```\nReturns the arg for which (k arg) is smallest. On ties, returns the latest argument.",
        "signatures": [
            "(min-key k x & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L477",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(min-key k x & more)\n```\nReturns the arg for which (k arg) is smallest. On ties, returns the latest argument.",
            "example": "(min-key count \"bb\" \"aaa\" \"b\") ; => \"b\"",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[k x & more]"
        }
    },
    {
        "namespace": "core",
        "name": "mod",
        "description": "Returns the floor remainder of `dividend` / `divisor`. The result has\n  the same sign as `divisor`. Differs from `rem` on mixed-sign operands:\n  `(mod -7 3) => 2` while `(rem -7 3) => -1`.",
        "doc": "```phel\n(mod dividend divisor)\n```\nReturns the floor remainder of `dividend` / `divisor`. The result has\n  the same sign as `divisor`. Differs from `rem` on mixed-sign operands:\n  `(mod -7 3) => 2` while `(rem -7 3) => -1`.",
        "signatures": [
            "(mod dividend divisor)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L170",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(mod dividend divisor)\n```\nReturns the floor remainder of `dividend` / `divisor`. The result has\n  the same sign as `divisor`. Differs from `rem` on mixed-sign operands:\n  `(mod -7 3) => 2` while `(rem -7 3) => -1`.",
            "example": "(mod 7 3) ; => 1\n(mod -7 3) ; => 2",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[dividend divisor]"
        }
    },
    {
        "namespace": "core",
        "name": "name",
        "description": "Returns the name string of a string, keyword or symbol.",
        "doc": "```phel\n(name x)\n```\nReturns the name string of a string, keyword or symbol.",
        "signatures": [
            "(name x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L972",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(name x)\n```\nReturns the name string of a string, keyword or symbol.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "namespace",
        "description": "Return the namespace string of a symbol or keyword. Nil if not present.",
        "doc": "```phel\n(namespace x)\n```\nReturn the namespace string of a symbol or keyword. Nil if not present.",
        "signatures": [
            "(namespace x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L977",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(namespace x)\n```\nReturn the namespace string of a symbol or keyword. Nil if not present.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "nan?",
        "description": "Checks if `x` is not a number.",
        "doc": "```phel\n(nan? x)\n```\nChecks if `x` is not a number.",
        "signatures": [
            "(nan? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L285",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(nan? x)\n```\nChecks if `x` is not a number.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "nat-int?",
        "description": "Returns true if `x` is a non-negative integer (zero or positive). Accepts\n  both fixed-precision PHP `int` and arbitrary-precision `BigInt` values.",
        "doc": "```phel\n(nat-int? x)\n```\nReturns true if `x` is a non-negative integer (zero or positive). Accepts\n  both fixed-precision PHP `int` and arbitrary-precision `BigInt` values.",
        "signatures": [
            "(nat-int? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L176",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(nat-int? x)\n```\nReturns true if `x` is a non-negative integer (zero or positive). Accepts\n  both fixed-precision PHP `int` and arbitrary-precision `BigInt` values.",
            "example": "(nat-int? 0) ; => true\n(nat-int? 1) ; => true\n(nat-int? (bigint 5)) ; => true",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "neg-int?",
        "description": "Returns true if `x` is a negative integer. Accepts both fixed-precision\n  PHP `int` and arbitrary-precision `BigInt` values.",
        "doc": "```phel\n(neg-int? x)\n```\nReturns true if `x` is a negative integer. Accepts both fixed-precision\n  PHP `int` and arbitrary-precision `BigInt` values.",
        "signatures": [
            "(neg-int? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L160",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(neg-int? x)\n```\nReturns true if `x` is a negative integer. Accepts both fixed-precision\n  PHP `int` and arbitrary-precision `BigInt` values.",
            "example": "(neg-int? -1) ; => true\n(neg-int? 0) ; => false\n(neg-int? (bigint -5)) ; => true",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "neg?",
        "description": "Checks if `x` is smaller than zero.",
        "doc": "```phel\n(neg? x)\n```\nChecks if `x` is smaller than zero.",
        "signatures": [
            "(neg? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L280",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(neg? x)\n```\nChecks if `x` is smaller than zero.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "next",
        "description": "Returns the sequence after the first element, or nil if empty.",
        "doc": "Returns the sequence after the first element, or nil if empty.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core.phel#L94",
        "docUrl": "",
        "meta": {
            "doc": "Returns the sequence after the first element, or nil if empty.",
            "example": "(next [1 2 3]) ; => [2 3]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[xs]"
        }
    },
    {
        "namespace": "core",
        "name": "nfirst",
        "description": "Same as `(next (first coll))`.",
        "doc": "```phel\n(nfirst coll)\n```\nSame as `(next (first coll))`.",
        "signatures": [
            "(nfirst coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-basics.phel#L104",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(nfirst coll)\n```\nSame as `(next (first coll))`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "nil?",
        "description": "Returns true if value is nil, false otherwise.",
        "doc": "```phel\n(nil? x)\n```\nReturns true if value is nil, false otherwise.",
        "signatures": [
            "(nil? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L320",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(nil? x)\n```\nReturns true if value is nil, false otherwise.",
            "example": "(nil? (get {:a 1} :b)) ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "nnext",
        "description": "Same as `(next (next coll))`.",
        "doc": "```phel\n(nnext coll)\n```\nSame as `(next (next coll))`.",
        "signatures": [
            "(nnext coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-basics.phel#L116",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(nnext coll)\n```\nSame as `(next (next coll))`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "not",
        "description": "Returns true if value is falsy (nil or false), false otherwise.",
        "doc": "```phel\n(not x)\n```\nReturns true if value is falsy (nil or false), false otherwise.",
        "signatures": [
            "(not x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L146",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(not x)\n```\nReturns true if value is falsy (nil or false), false otherwise.",
            "example": "(not nil) ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "not-any?",
        "description": "Returns true if `(pred x)` is logical false for every `x` in `coll`\n   or if `coll` is empty. Otherwise returns false.",
        "doc": "```phel\n(not-any? pred coll)\n```\nReturns true if `(pred x)` is logical false for every `x` in `coll`\n   or if `coll` is empty. Otherwise returns false.",
        "signatures": [
            "(not-any? pred coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L286",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(not-any? pred coll)\n```\nReturns true if `(pred x)` is logical false for every `x` in `coll`\n   or if `coll` is empty. Otherwise returns false.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[pred coll]"
        }
    },
    {
        "namespace": "core",
        "name": "not-empty",
        "description": "Returns `coll` if it contains elements, otherwise nil.",
        "doc": "```phel\n(not-empty coll)\n```\nReturns `coll` if it contains elements, otherwise nil.",
        "signatures": [
            "(not-empty coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L431",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(not-empty coll)\n```\nReturns `coll` if it contains elements, otherwise nil.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "not-every?",
        "description": "Returns false if `(pred x)` is logical true for every `x` in collection `coll`\n   or if `coll` is empty. Otherwise returns true.",
        "doc": "```phel\n(not-every? pred coll)\n```\nReturns false if `(pred x)` is logical true for every `x` in collection `coll`\n   or if `coll` is empty. Otherwise returns true.",
        "signatures": [
            "(not-every? pred coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L266",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(not-every? pred coll)\n```\nReturns false if `(pred x)` is logical true for every `x` in collection `coll`\n   or if `coll` is empty. Otherwise returns true.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[pred coll]"
        }
    },
    {
        "namespace": "core",
        "name": "not=",
        "description": "Checks if all values are unequal. Same as `a != b` in PHP.",
        "doc": "```phel\n(not= a & more)\n```\nChecks if all values are unequal. Same as `a != b` in PHP.",
        "signatures": [
            "(not= a & more)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L152",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(not= a & more)\n```\nChecks if all values are unequal. Same as `a != b` in PHP.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[a & more]"
        }
    },
    {
        "namespace": "core",
        "name": "ns",
        "description": "Defines the namespace for the current file and adds imports to the environment. Imports can either be uses or requires. The keyword :use is used to import PHP classes, the keyword :require is used to import Phel modules and the keyword :require-file is used to load php files.",
        "doc": "```phel\n(ns name imports*)\n```\nDefines the namespace for the current file and adds imports to the environment. Imports can either be uses or requires. The keyword `:use` is used to import PHP classes, the keyword `:require` is used to import Phel modules and the keyword `:require-file` is used to load php files.",
        "signatures": [
            "(ns name imports*)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/namespaces/#namespace-ns",
        "meta": {
            "example": "(ns my-app\\core (:require phel\\string :as str))"
        }
    },
    {
        "namespace": "core",
        "name": "ns-aliases",
        "description": "Returns a hash-map of {alias => namespace} for all require aliases in the\n  given namespace string. Target namespaces are returned in display form.",
        "doc": "```phel\n(ns-aliases ns-str)\n```\nReturns a hash-map of {alias => namespace} for all require aliases in the\n  given namespace string. Target namespaces are returned in display form.",
        "signatures": [
            "(ns-aliases ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/ns.phel#L191",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ns-aliases ns-str)\n```\nReturns a hash-map of {alias => namespace} for all require aliases in the\n  given namespace string. Target namespaces are returned in display form.",
            "example": "(ns-aliases *ns*) ; => {\"repl\" \"phel.repl\" ...}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "core",
        "name": "ns-interns",
        "description": "Returns a hash-map of {name => value} for every definition in the\n  given namespace, including private ones. Returns an empty map if the\n  namespace has no definitions.",
        "doc": "```phel\n(ns-interns ns-str)\n```\nReturns a hash-map of {name => value} for every definition in the\n  given namespace, including private ones. Returns an empty map if the\n  namespace has no definitions.",
        "signatures": [
            "(ns-interns ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/ns.phel#L84",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ns-interns ns-str)\n```\nReturns a hash-map of {name => value} for every definition in the\n  given namespace, including private ones. Returns an empty map if the\n  namespace has no definitions.",
            "example": "(ns-interns \"phel\\core\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "core",
        "name": "ns-publics",
        "description": "Returns a hash-map of {name => value} for all public definitions in the\n  given namespace string. Private definitions are excluded.",
        "doc": "```phel\n(ns-publics ns-str)\n```\nReturns a hash-map of {name => value} for all public definitions in the\n  given namespace string. Private definitions are excluded.",
        "signatures": [
            "(ns-publics ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/ns.phel#L175",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ns-publics ns-str)\n```\nReturns a hash-map of {name => value} for all public definitions in the\n  given namespace string. Private definitions are excluded.",
            "example": "(ns-publics \"phel\\core\") ; => {\"map\" <fn> \"filter\" <fn> ...}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "core",
        "name": "ns-refers",
        "description": "Returns a hash-map of {name => source-namespace} for all referred symbols\n  in the given namespace string. Source namespaces are returned in display form.",
        "doc": "```phel\n(ns-refers ns-str)\n```\nReturns a hash-map of {name => source-namespace} for all referred symbols\n  in the given namespace string. Source namespaces are returned in display form.",
        "signatures": [
            "(ns-refers ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/ns.phel#L204",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ns-refers ns-str)\n```\nReturns a hash-map of {name => source-namespace} for all referred symbols\n  in the given namespace string. Source namespaces are returned in display form.",
            "example": "(ns-refers *ns*) ; => {\"doc\" \"phel.repl\" ...}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "core",
        "name": "nth",
        "description": "Returns the value at `index` in `coll`. Throws an\n   OutOfBoundsException if the index is out of range and no\n   `not-found` value is supplied. For indexed collections (vectors,\n   strings) this is O(1); for sequences it is O(n).",
        "doc": "```phel\n(nth coll index)\n(nth coll index not-found)\n```\nReturns the value at `index` in `coll`. Throws an\n   OutOfBoundsException if the index is out of range and no\n   `not-found` value is supplied. For indexed collections (vectors,\n   strings) this is O(1); for sequences it is O(n).",
        "signatures": [
            "(nth coll index)",
            "(nth coll index not-found)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/sequences.phel#L126",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(nth coll index)\n(nth coll index not-found)\n```\nReturns the value at `index` in `coll`. Throws an\n   OutOfBoundsException if the index is out of range and no\n   `not-found` value is supplied. For indexed collections (vectors,\n   strings) this is O(1); for sequences it is O(n).",
            "example": "(nth [1 2 3] 1) ; => 2\n(nth [1 2 3] 5 :default) ; => :default",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "max-arity": 3,
            "arglists": "([coll index] [coll index not-found])"
        }
    },
    {
        "namespace": "core",
        "name": "nthnext",
        "description": "Returns the nth next of `coll`, `(seq coll)` when `n` is 0.\n   Returns nil if there are fewer than `n` elements remaining.",
        "doc": "```phel\n(nthnext coll n)\n```\nReturns the nth next of `coll`, `(seq coll)` when `n` is 0.\n   Returns nil if there are fewer than `n` elements remaining.",
        "signatures": [
            "(nthnext coll n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/sequences.phel#L192",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(nthnext coll n)\n```\nReturns the nth next of `coll`, `(seq coll)` when `n` is 0.\n   Returns nil if there are fewer than `n` elements remaining.",
            "example": "(nthnext [1 2 3 4 5] 2) ; => (3 4 5)\n(nthnext [1 2] 5) ; => nil",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[coll n]"
        }
    },
    {
        "namespace": "core",
        "name": "nthrest",
        "description": "Returns the nth rest of `coll`, `coll` when `n` is less than 1. Returns\n  an empty list once the collection is exhausted.",
        "doc": "```phel\n(nthrest coll n)\n```\nReturns the nth rest of `coll`, `coll` when `n` is less than 1. Returns\n  an empty list once the collection is exhausted.",
        "signatures": [
            "(nthrest coll n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/sequences.phel#L178",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(nthrest coll n)\n```\nReturns the nth rest of `coll`, `coll` when `n` is less than 1. Returns\n  an empty list once the collection is exhausted.",
            "example": "(nthrest [1 2 3 4 5] 2) ; => (3 4 5)\n(nthrest [1 2] 5) ; => ()\n(nthrest nil 0) ; => nil\n(nthrest nil 3) ; => ()",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[coll n]"
        }
    },
    {
        "namespace": "core",
        "name": "number?",
        "description": "Returns true if `x` is a number: int, float, `Ratio`, `BigInt`, or `BigDecimal`.",
        "doc": "```phel\n(number? x)\n```\nReturns true if `x` is a number: int, float, `Ratio`, `BigInt`, or `BigDecimal`.",
        "signatures": [
            "(number? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L184",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(number? x)\n```\nReturns true if `x` is a number: int, float, `Ratio`, `BigInt`, or `BigDecimal`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "numerator",
        "description": "Returns the numerator of `r`. For rationals the numerator collapses to a\n  PHP int when it fits; for plain ints and `BigInt` values `r` is returned\n  unchanged.",
        "doc": "```phel\n(numerator r)\n```\nReturns the numerator of `r`. For rationals the numerator collapses to a\n  PHP int when it fits; for plain ints and `BigInt` values `r` is returned\n  unchanged.",
        "signatures": [
            "(numerator r)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L583",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(numerator r)\n```\nReturns the numerator of `r`. For rationals the numerator collapses to a\n  PHP int when it fits; for plain ints and `BigInt` values `r` is returned\n  unchanged.",
            "example": "(numerator 1/2) ; => 1\n(numerator 5) ; => 5",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[r]"
        }
    },
    {
        "namespace": "core",
        "name": "object-array",
        "description": "Creates a PHP array of the given size initialized to `nil`, or a PHP\n  array containing the elements of the given sequence. Matches Clojure's\n  `object-array` for `.cljc` interop \u2014 in Phel the result is a plain PHP\n  array (accessible via `php/aget`/`php/aset`) since PHP has no typed\n  array distinction.",
        "doc": "```phel\n(object-array size-or-seq)\n```\nCreates a PHP array of the given size initialized to `nil`, or a PHP\n  array containing the elements of the given sequence. Matches Clojure's\n  `object-array` for `.cljc` interop \u2014 in Phel the result is a plain PHP\n  array (accessible via `php/aget`/`php/aset`) since PHP has no typed\n  array distinction.",
        "signatures": [
            "(object-array size-or-seq)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/arrays.phel#L42",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(object-array size-or-seq)\n```\nCreates a PHP array of the given size initialized to `nil`, or a PHP\n  array containing the elements of the given sequence. Matches Clojure's\n  `object-array` for `.cljc` interop \u2014 in Phel the result is a plain PHP\n  array (accessible via `php/aget`/`php/aset`) since PHP has no typed\n  array distinction.",
            "example": "(object-array 3) ; => a PHP array [nil, nil, nil]\n(object-array [1 2 3]) ; => a PHP array [1, 2, 3]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[size-or-seq]"
        }
    },
    {
        "namespace": "core",
        "name": "odd?",
        "description": "Checks if `x` is odd.",
        "doc": "```phel\n(odd? x)\n```\nChecks if `x` is odd.",
        "signatures": [
            "(odd? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L260",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(odd? x)\n```\nChecks if `x` is odd.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "one?",
        "description": "Checks if `x` is one.",
        "doc": "```phel\n(one? x)\n```\nChecks if `x` is one.",
        "signatures": [
            "(one? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L270",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(one? x)\n```\nChecks if `x` is one.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "or",
        "description": "Evaluates expressions left to right, returning the first truthy value or the last value.",
        "doc": "```phel\n(or & args)\n```\nEvaluates expressions left to right, returning the first truthy value or the last value.",
        "signatures": [
            "(or & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L38",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(or & args)\n```\nEvaluates expressions left to right, returning the first truthy value or the last value.",
            "example": "(or false nil 42 100) ; => 42",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& args]"
        }
    },
    {
        "namespace": "core",
        "name": "pairs",
        "description": "Gets the pairs of an associative data structure.",
        "doc": "```phel\n(pairs coll)\n```\nGets the pairs of an associative data structure.",
        "signatures": [
            "(pairs coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L736",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(pairs coll)\n```\nGets the pairs of an associative data structure.",
            "example": "(pairs {:a 1 :b 2}) ; => ([:a 1] [:b 2])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "parents",
        "description": "Returns the set of immediate parents of tag, or nil.\n  When a hierarchy is provided, consults it; otherwise uses the global hierarchy.",
        "doc": "```phel\n(parents tag)\n(parents h tag)\n```\nReturns the set of immediate parents of tag, or nil.\n  When a hierarchy is provided, consults it; otherwise uses the global hierarchy.",
        "signatures": [
            "(parents tag)",
            "(parents h tag)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L285",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(parents tag)\n(parents h tag)\n```\nReturns the set of immediate parents of tag, or nil.\n  When a hierarchy is provided, consults it; otherwise uses the global hierarchy.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([tag] [h tag])"
        }
    },
    {
        "namespace": "core",
        "name": "parse-boolean",
        "description": "Parses a string as a boolean. Returns `true` for the exact string\n  `\"true\"`, `false` for `\"false\"`, and `nil` for any other input.\n  The match is case-sensitive and does not tolerate surrounding\n  whitespace.",
        "doc": "```phel\n(parse-boolean s)\n```\nParses a string as a boolean. Returns `true` for the exact string\n  `\"true\"`, `false` for `\"false\"`, and `nil` for any other input.\n  The match is case-sensitive and does not tolerate surrounding\n  whitespace.",
        "signatures": [
            "(parse-boolean s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/parsing.phel#L36",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(parse-boolean s)\n```\nParses a string as a boolean. Returns `true` for the exact string\n  `\"true\"`, `false` for `\"false\"`, and `nil` for any other input.\n  The match is case-sensitive and does not tolerate surrounding\n  whitespace.",
            "example": "(parse-boolean \"true\") ; => true\n(parse-boolean \"True\") ; => nil",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "core",
        "name": "parse-double",
        "description": "Parses a string as a float. Returns `nil` for non-numeric input or for\n  inputs that are not strings. Accepts `Infinity`, `-Infinity`, and `NaN`\n  alongside regular decimal and scientific notation.",
        "doc": "```phel\n(parse-double s)\n```\nParses a string as a float. Returns `nil` for non-numeric input or for\n  inputs that are not strings. Accepts `Infinity`, `-Infinity`, and `NaN`\n  alongside regular decimal and scientific notation.",
        "signatures": [
            "(parse-double s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/parsing.phel#L20",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(parse-double s)\n```\nParses a string as a float. Returns `nil` for non-numeric input or for\n  inputs that are not strings. Accepts `Infinity`, `-Infinity`, and `NaN`\n  alongside regular decimal and scientific notation.",
            "example": "(parse-double \"3.14\") ; => 3.14\n(parse-double \"Infinity\") ; => INF",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "core",
        "name": "parse-long",
        "description": "Parses a string as an integer. Returns nil if parsing fails.",
        "doc": "```phel\n(parse-long s)\n```\nParses a string as an integer. Returns nil if parsing fails.",
        "signatures": [
            "(parse-long s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/parsing.phel#L10",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(parse-long s)\n```\nParses a string as an integer. Returns nil if parsing fails.",
            "example": "(parse-long \"123\") ; => 123",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "core",
        "name": "parse-uuid",
        "description": "Parses `s` as a canonical UUID string and returns a `Phel\\Lang\\UUID`\n  value, or nil if `s` is not a valid canonical UUID. Already-typed\n  `UUID` values pass through unchanged.",
        "doc": "```phel\n(parse-uuid s)\n```\nParses `s` as a canonical UUID string and returns a `Phel\\Lang\\UUID`\n  value, or nil if `s` is not a valid canonical UUID. Already-typed\n  `UUID` values pass through unchanged.",
        "signatures": [
            "(parse-uuid s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/uuid.phel#L29",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(parse-uuid s)\n```\nParses `s` as a canonical UUID string and returns a `Phel\\Lang\\UUID`\n  value, or nil if `s` is not a valid canonical UUID. Already-typed\n  `UUID` values pass through unchanged.",
            "example": "(parse-uuid \"550E8400-E29B-41D4-A716-446655440000\")\n  ; => #uuid \"550e8400-e29b-41d4-a716-446655440000\"",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "core",
        "name": "partial",
        "description": "Takes a function `f` and fewer than normal arguments of `f` and returns a function\n  that a variable number of additional arguments. When call `f` will be called\n  with `args` and the additional arguments.",
        "doc": "```phel\n(partial f & args)\n```\nTakes a function `f` and fewer than normal arguments of `f` and returns a function\n  that a variable number of additional arguments. When call `f` will be called\n  with `args` and the additional arguments.",
        "signatures": [
            "(partial f & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L133",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(partial f & args)\n```\nTakes a function `f` and fewer than normal arguments of `f` and returns a function\n  that a variable number of additional arguments. When call `f` will be called\n  with `args` and the additional arguments.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[f & args]"
        }
    },
    {
        "namespace": "core",
        "name": "partition",
        "description": "Partitions collection into chunks of size n, dropping incomplete final partition.",
        "doc": "```phel\n(partition n coll)\n```\nPartitions collection into chunks of size n, dropping incomplete final partition.",
        "signatures": [
            "(partition n coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1266",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(partition n coll)\n```\nPartitions collection into chunks of size n, dropping incomplete final partition.",
            "example": "(partition 3 [1 2 3 4 5 6 7]) ; => ([1 2 3] [4 5 6])",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[n coll]"
        }
    },
    {
        "namespace": "core",
        "name": "partition-all",
        "description": "Partitions collection into chunks of size n, including incomplete final partition.",
        "doc": "```phel\n(partition-all n coll)\n```\nPartitions collection into chunks of size n, including incomplete final partition.",
        "signatures": [
            "(partition-all n coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1278",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(partition-all n coll)\n```\nPartitions collection into chunks of size n, including incomplete final partition.",
            "example": "(partition-all 3 [1 2 3 4 5 6 7]) ; => ([1 2 3] [4 5 6] [7])",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[n coll]"
        }
    },
    {
        "namespace": "core",
        "name": "partition-by",
        "description": "Returns a lazy sequence of partitions. Applies `f` to each value in `coll`, splitting them each time the return value changes.",
        "doc": "```phel\n(partition-by f coll)\n```\nReturns a lazy sequence of partitions. Applies `f` to each value in `coll`, splitting them each time the return value changes.",
        "signatures": [
            "(partition-by f coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1201",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(partition-by f coll)\n```\nReturns a lazy sequence of partitions. Applies `f` to each value in `coll`, splitting them each time the return value changes.",
            "example": "(partition-by #(< % 3) [1 2 3 4 5 1 2]) ; => [[1 2] [3 4 5] [1 2]]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[f coll]"
        }
    },
    {
        "namespace": "core",
        "name": "peek",
        "description": "Returns the head of a vector / PHP array (the last element) or the\n  head of a list / lazy sequence / queue (the first element). Returns nil\n  if `coll` is empty or nil.",
        "doc": "```phel\n(peek coll)\n```\nReturns the head of a vector / PHP array (the last element) or the\n  head of a list / lazy sequence / queue (the first element). Returns nil\n  if `coll` is empty or nil.",
        "signatures": [
            "(peek coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/sequences.phel#L26",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(peek coll)\n```\nReturns the head of a vector / PHP array (the last element) or the\n  head of a list / lazy sequence / queue (the first element). Returns nil\n  if `coll` is empty or nil.",
            "example": "(peek [1 2 3]) ; => 3\n(peek '(:a :b :c)) ; => :a",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "persistent",
        "description": "Converts a transient collection back to a persistent collection.",
        "doc": "```phel\n(persistent coll)\n```\nConverts a transient collection back to a persistent collection.",
        "signatures": [
            "(persistent coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transients.phel#L28",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(persistent coll)\n```\nConverts a transient collection back to a persistent collection.",
            "example": "(def t (transient {}))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "persistent!",
        "description": "Converts a transient collection back to a persistent collection.\n   Alias for `persistent`, matching Clojure's `persistent!` naming.",
        "doc": "```phel\n(persistent! coll)\n```\nConverts a transient collection back to a persistent collection.\n   Alias for `persistent`, matching Clojure's `persistent!` naming.",
        "signatures": [
            "(persistent! coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transients.phel#L35",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(persistent! coll)\n```\nConverts a transient collection back to a persistent collection.\n   Alias for `persistent`, matching Clojure's `persistent!` naming.",
            "example": "(persistent! (conj! (transient []) 1 2 3)) ; => [1 2 3]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "phel->php",
        "description": "Recursively converts a Phel data structure to a PHP array.",
        "doc": "```phel\n(phel->php x)\n```\nRecursively converts a Phel data structure to a PHP array.",
        "signatures": [
            "(phel->php x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L766",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(phel->php x)\n```\nRecursively converts a Phel data structure to a PHP array.",
            "example": "(phel->php {:a [1 2 3] :b {:c 4}}) ; => (PHP array [\"a\" => [1, 2, 3], \"b\" => [\"c\" => 4]])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "php->phel",
        "description": "Recursively converts a PHP array to Phel data structures.\n\n  Indexed PHP arrays become vectors, associative PHP arrays become maps.",
        "doc": "```phel\n(php->phel x)\n```\nRecursively converts a PHP array to Phel data structures.\n\n  Indexed PHP arrays become vectors, associative PHP arrays become maps.",
        "signatures": [
            "(php->phel x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L798",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(php->phel x)\n```\nRecursively converts a PHP array to Phel data structures.\n\n  Indexed PHP arrays become vectors, associative PHP arrays become maps.",
            "example": "(php->phel (php-associative-array \"a\" 1 \"b\" 2)) ; => {\"a\" 1 \"b\" 2}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "php-array-to-map",
        "description": "Converts a PHP Array to a Phel map.",
        "doc": "```phel\n(php-array-to-map arr)\n```\nConverts a PHP Array to a Phel map.",
        "signatures": [
            "(php-array-to-map arr)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L755",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(php-array-to-map arr)\n```\nConverts a PHP Array to a Phel map.",
            "example": "(php-array-to-map (php-associative-array \"a\" 1 \"b\" 2)) ; => {\"a\" 1 \"b\" 2}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[arr]"
        }
    },
    {
        "namespace": "core",
        "name": "php-array?",
        "description": "Returns true if `x` is a PHP Array, false otherwise.",
        "doc": "```phel\n(php-array? x)\n```\nReturns true if `x` is a PHP Array, false otherwise.",
        "signatures": [
            "(php-array? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L386",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(php-array? x)\n```\nReturns true if `x` is a PHP Array, false otherwise.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "php-associative-array",
        "description": "Creates a PHP associative array from key-value pairs.\n\n  Arguments:\n    Key-value pairs (must be even number of arguments)",
        "doc": "```phel\n(php-associative-array & xs)\n```\nCreates a PHP associative array from key-value pairs.\n\n  Arguments:\n    Key-value pairs (must be even number of arguments)",
        "signatures": [
            "(php-associative-array & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/arrays.phel#L24",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(php-associative-array & xs)\n```\nCreates a PHP associative array from key-value pairs.\n\n  Arguments:\n    Key-value pairs (must be even number of arguments)",
            "example": "(php-associative-array \"name\" \"Alice\" \"age\" 30) ; => (PHP array [\"name\" => \"Alice\", \"age\" => 30])",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "php-indexed-array",
        "description": "Creates a PHP indexed array from the given values.",
        "doc": "```phel\n(php-indexed-array & xs)\n```\nCreates a PHP indexed array from the given values.",
        "signatures": [
            "(php-indexed-array & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/arrays.phel#L18",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(php-indexed-array & xs)\n```\nCreates a PHP indexed array from the given values.",
            "example": "(php-indexed-array 1 2 3) ; => (PHP array [1, 2, 3])",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "php-object?",
        "description": "Returns true if `x` is a PHP object, false otherwise.",
        "doc": "```phel\n(php-object? x)\n```\nReturns true if `x` is a PHP object, false otherwise.",
        "signatures": [
            "(php-object? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L396",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(php-object? x)\n```\nReturns true if `x` is a PHP object, false otherwise.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "php-resource?",
        "description": "Returns true if `x` is a PHP resource, false otherwise.",
        "doc": "```phel\n(php-resource? x)\n```\nReturns true if `x` is a PHP resource, false otherwise.",
        "signatures": [
            "(php-resource? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L391",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(php-resource? x)\n```\nReturns true if `x` is a PHP resource, false otherwise.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "pmap",
        "description": "Like `map`, but applies `f` to elements concurrently via fibers.\n\n  Returns a vector of results in the original order. With multiple\n  collections, applies `f` to corresponding elements from each collection,\n  stopping when the shortest collection is exhausted.\n\n  PHP fibers are cooperative on a single thread, so `pmap` overlaps\n  IO-bound work (HTTP, DB, file IO) but does not parallelize CPU-bound\n  computations across cores \u2014 unlike `clojure.core/pmap`, which uses a\n  thread pool. ClojureScript and Basilisp follow the same single-threaded\n  model.",
        "doc": "```phel\n(pmap f & colls)\n```\nLike `map`, but applies `f` to elements concurrently via fibers.\n\n  Returns a vector of results in the original order. With multiple\n  collections, applies `f` to corresponding elements from each collection,\n  stopping when the shortest collection is exhausted.\n\n  PHP fibers are cooperative on a single thread, so `pmap` overlaps\n  IO-bound work (HTTP, DB, file IO) but does not parallelize CPU-bound\n  computations across cores \u2014 unlike `clojure.core/pmap`, which uses a\n  thread pool. ClojureScript and Basilisp follow the same single-threaded\n  model.",
        "signatures": [
            "(pmap f & colls)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/async.phel#L76",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(pmap f & colls)\n```\nLike `map`, but applies `f` to elements concurrently via fibers.\n\n  Returns a vector of results in the original order. With multiple\n  collections, applies `f` to corresponding elements from each collection,\n  stopping when the shortest collection is exhausted.\n\n  PHP fibers are cooperative on a single thread, so `pmap` overlaps\n  IO-bound work (HTTP, DB, file IO) but does not parallelize CPU-bound\n  computations across cores \u2014 unlike `clojure.core/pmap`, which uses a\n  thread pool. ClojureScript and Basilisp follow the same single-threaded\n  model.",
            "example": "(pmap inc [1 2 3]) ; => [2 3 4]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[f & colls]"
        }
    },
    {
        "namespace": "core",
        "name": "pop",
        "description": "Removes the last element of a collection. Returns nil for nil.",
        "doc": "```phel\n(pop coll)\n```\nRemoves the last element of a collection. Returns nil for nil.",
        "signatures": [
            "(pop coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/sequences.phel#L68",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(pop coll)\n```\nRemoves the last element of a collection. Returns nil for nil.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "pop!",
        "description": "Removes the last element from a transient vector, mutating it in place.\n   Raises `InvalidArgumentException` when `tcoll` is not a transient vector.\n   Matches Clojure's `pop!` semantics.",
        "doc": "```phel\n(pop! tcoll)\n```\nRemoves the last element from a transient vector, mutating it in place.\n   Raises `InvalidArgumentException` when `tcoll` is not a transient vector.\n   Matches Clojure's `pop!` semantics.",
        "signatures": [
            "(pop! tcoll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transients.phel#L177",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(pop! tcoll)\n```\nRemoves the last element from a transient vector, mutating it in place.\n   Raises `InvalidArgumentException` when `tcoll` is not a transient vector.\n   Matches Clojure's `pop!` semantics.",
            "example": "(persistent! (pop! (transient [1 2 3]))) ; => [1 2]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[tcoll]"
        }
    },
    {
        "namespace": "core",
        "name": "pos-int?",
        "description": "Returns true if `x` is a positive integer (greater than zero). Accepts both\n  fixed-precision PHP `int` and arbitrary-precision `BigInt` values.",
        "doc": "```phel\n(pos-int? x)\n```\nReturns true if `x` is a positive integer (greater than zero). Accepts both\n  fixed-precision PHP `int` and arbitrary-precision `BigInt` values.",
        "signatures": [
            "(pos-int? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L168",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(pos-int? x)\n```\nReturns true if `x` is a positive integer (greater than zero). Accepts both\n  fixed-precision PHP `int` and arbitrary-precision `BigInt` values.",
            "example": "(pos-int? 1) ; => true\n(pos-int? 0) ; => false\n(pos-int? (bigint 5)) ; => true",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "pos?",
        "description": "Checks if `x` is greater than zero.",
        "doc": "```phel\n(pos? x)\n```\nChecks if `x` is greater than zero.",
        "signatures": [
            "(pos? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L275",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(pos? x)\n```\nChecks if `x` is greater than zero.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "prefer-method",
        "description": "Causes the multimethod to prefer matches of `dispatch-val-x` over\n  `dispatch-val-y` when there is an ambiguity (both match via the hierarchy\n  and neither is more specific). Preferences are transitive.\n\n  Throws if the new preference would create a cycle, i.e. `y` is already\n  (transitively) preferred over `x`.",
        "doc": "```phel\n(prefer-method multi-name dispatch-val-x dispatch-val-y)\n```\nCauses the multimethod to prefer matches of `dispatch-val-x` over\n  `dispatch-val-y` when there is an ambiguity (both match via the hierarchy\n  and neither is more specific). Preferences are transitive.\n\n  Throws if the new preference would create a cycle, i.e. `y` is already\n  (transitively) preferred over `x`.",
        "signatures": [
            "(prefer-method multi-name dispatch-val-x dispatch-val-y)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L786",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(prefer-method multi-name dispatch-val-x dispatch-val-y)\n```\nCauses the multimethod to prefer matches of `dispatch-val-x` over\n  `dispatch-val-y` when there is an ambiguity (both match via the hierarchy\n  and neither is more specific). Preferences are transitive.\n\n  Throws if the new preference would create a cycle, i.e. `y` is already\n  (transitively) preferred over `x`.",
            "example": "(prefer-method draw :drawable :shape)",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[multi-name dispatch-val-x dispatch-val-y]"
        }
    },
    {
        "namespace": "core",
        "name": "prefers",
        "description": "Returns the preference map for a multimethod (built by `prefer-method`).\n  Keys are dispatch values; values are sets of dispatch values they are\n  preferred over (directly; preference is transitive when consulted).",
        "doc": "```phel\n(prefers multi-name)\n```\nReturns the preference map for a multimethod (built by `prefer-method`).\n  Keys are dispatch values; values are sets of dispatch values they are\n  preferred over (directly; preference is transitive when consulted).",
        "signatures": [
            "(prefers multi-name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L815",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(prefers multi-name)\n```\nReturns the preference map for a multimethod (built by `prefer-method`).\n  Keys are dispatch values; values are sets of dispatch values they are\n  preferred over (directly; preference is transitive when consulted).",
            "example": "(prefers draw)",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[multi-name]"
        }
    },
    {
        "namespace": "core",
        "name": "prefers?",
        "description": "Returns true if dispatch value `x` is preferred over `y` in `prefers-map`,\n  considering transitive preferences. Used by multimethod dispatch when\n  multiple methods match and the hierarchy does not pick a unique winner.",
        "doc": "```phel\n(prefers? prefers-map x y)\n```\nReturns true if dispatch value `x` is preferred over `y` in `prefers-map`,\n  considering transitive preferences. Used by multimethod dispatch when\n  multiple methods match and the hierarchy does not pick a unique winner.",
        "signatures": [
            "(prefers? prefers-map x y)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L330",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(prefers? prefers-map x y)\n```\nReturns true if dispatch value `x` is preferred over `y` in `prefers-map`,\n  considering transitive preferences. Used by multimethod dispatch when\n  multiple methods match and the hierarchy does not pick a unique winner.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[prefers-map x y]"
        }
    },
    {
        "namespace": "core",
        "name": "print",
        "description": "Prints the given values to the default output stream. Returns nil.",
        "doc": "```phel\n(print & xs)\n```\nPrints the given values to the default output stream. Returns nil.",
        "signatures": [
            "(print & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L44",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(print & xs)\n```\nPrints the given values to the default output stream. Returns nil.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "print-str",
        "description": "Same as print. But instead of writing it to an output stream, the resulting string is returned.",
        "doc": "```phel\n(print-str & xs)\n```\nSame as print. But instead of writing it to an output stream, the resulting string is returned.",
        "signatures": [
            "(print-str & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L30",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(print-str & xs)\n```\nSame as print. But instead of writing it to an output stream, the resulting string is returned.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "printf",
        "description": "Output a formatted string. See PHP's [printf](https://www.php.net/manual/en/function.printf.php) for more information.",
        "doc": "```phel\n(printf fmt & xs)\n```\nOutput a formatted string. See PHP's [printf](https://www.php.net/manual/en/function.printf.php) for more information.",
        "signatures": [
            "(printf fmt & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L62",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(printf fmt & xs)\n```\nOutput a formatted string. See PHP's [printf](https://www.php.net/manual/en/function.printf.php) for more information.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[fmt & xs]"
        }
    },
    {
        "namespace": "core",
        "name": "println",
        "description": "Same as print followed by a newline.",
        "doc": "```phel\n(println & xs)\n```\nSame as print followed by a newline.",
        "signatures": [
            "(println & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L50",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(println & xs)\n```\nSame as print followed by a newline.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "promise",
        "description": "Returns a new unrealized promise. Deliver a value with `(deliver p v)`\n  and read it back with `@p` (or `(deref p)`).\n\n  Once delivered the value is frozen; subsequent `deliver` calls are\n  no-ops. `deref` on an unrealized promise blocks: from inside a fiber\n  it suspends cooperatively, from the top level it drains the scheduler\n  ready queue and sleeps briefly between checks.",
        "doc": "```phel\n(promise)\n```\nReturns a new unrealized promise. Deliver a value with `(deliver p v)`\n  and read it back with `@p` (or `(deref p)`).\n\n  Once delivered the value is frozen; subsequent `deliver` calls are\n  no-ops. `deref` on an unrealized promise blocks: from inside a fiber\n  it suspends cooperatively, from the top level it drains the scheduler\n  ready queue and sleeps briefly between checks.",
        "signatures": [
            "(promise)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/async.phel#L138",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(promise)\n```\nReturns a new unrealized promise. Deliver a value with `(deliver p v)`\n  and read it back with `@p` (or `(deref p)`).\n\n  Once delivered the value is frozen; subsequent `deliver` calls are\n  no-ops. `deref` on an unrealized promise blocks: from inside a fiber\n  it suspends cooperatively, from the top level it drains the scheduler\n  ready queue and sleeps briefly between checks.",
            "example": "(let [p (promise)] (deliver p 42) @p) ; => 42",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "core",
        "name": "protocol-type-key",
        "description": "Returns the dispatch key for protocol dispatch. Returns a type keyword\n  for primitive types, or the PHP class name string for objects/structs.\n\n  Optimized to avoid the full `type` cond chain: checks scalars first\n  (most common in tight loops), then objects.",
        "doc": "```phel\n(protocol-type-key x)\n```\nReturns the dispatch key for protocol dispatch. Returns a type keyword\n  for primitive types, or the PHP class name string for objects/structs.\n\n  Optimized to avoid the full `type` cond chain: checks scalars first\n  (most common in tight loops), then objects.",
        "signatures": [
            "(protocol-type-key x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L393",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(protocol-type-key x)\n```\nReturns the dispatch key for protocol dispatch. Returns a type keyword\n  for primitive types, or the PHP class name string for objects/structs.\n\n  Optimized to avoid the full `type` cond chain: checks scalars first\n  (most common in tight loops), then objects.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "push",
        "description": "Inserts `x` at the end of the sequence `coll`.",
        "doc": "```phel\n(push coll x)\n```\nInserts `x` at the end of the sequence `coll`.",
        "signatures": [
            "(push coll x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/sequences.phel#L52",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(push coll x)\n```\nInserts `x` at the end of the sequence `coll`.",
            "deprecated": "0.25.0",
            "superseded-by": "conj",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[coll x]"
        }
    },
    {
        "namespace": "core",
        "name": "put",
        "description": "Puts `value` mapped to `key` on the datastructure `ds`. Returns `ds`.",
        "doc": "```phel\n(put ds key value)\n```\nPuts `value` mapped to `key` on the datastructure `ds`. Returns `ds`.",
        "signatures": [
            "(put ds key value)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/sequences.phel#L267",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(put ds key value)\n```\nPuts `value` mapped to `key` on the datastructure `ds`. Returns `ds`.",
            "deprecated": "0.25.0",
            "superseded-by": "assoc",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[ds key value]"
        }
    },
    {
        "namespace": "core",
        "name": "put-in",
        "description": "Puts a value into a nested data structure.",
        "doc": "```phel\n(put-in ds ks v)\n```\nPuts a value into a nested data structure.",
        "signatures": [
            "(put-in ds ks v)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L312",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(put-in ds ks v)\n```\nPuts a value into a nested data structure.",
            "deprecated": "0.25.0",
            "superseded-by": "assoc-in",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[ds ks v]"
        }
    },
    {
        "namespace": "core",
        "name": "queue",
        "description": "Creates a persistent FIFO queue. With no arguments returns an empty\n  queue; with arguments returns a queue with the values pushed in order so\n  that the first argument is at the front.",
        "doc": "Creates a persistent FIFO queue. With no arguments returns an empty\n  queue; with arguments returns a queue with the values pushed in order so\n  that the first argument is at the front.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core.phel#L45",
        "docUrl": "",
        "meta": {
            "doc": "Creates a persistent FIFO queue. With no arguments returns an empty\n  queue; with arguments returns a queue with the values pushed in order so\n  that the first argument is at the front.",
            "example": "(queue 1 2 3) ; => first 1, then 2, then 3",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "queue?",
        "description": "Returns true if `x` is a `Phel\\Lang\\Collections\\Queue\\PersistentQueue` value.",
        "doc": "```phel\n(queue? x)\n```\nReturns true if `x` is a `Phel\\Lang\\Collections\\Queue\\PersistentQueue` value.",
        "signatures": [
            "(queue? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L347",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(queue? x)\n```\nReturns true if `x` is a `Phel\\Lang\\Collections\\Queue\\PersistentQueue` value.",
            "example": "(queue? (queue 1 2 3)) ; => true",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "quot",
        "description": "Returns the truncated integer quotient of `dividend` / `divisor`.\n  Truncates toward zero. Throws `\\DivisionByZeroError` when `divisor`\n  is zero.",
        "doc": "```phel\n(quot dividend divisor)\n```\nReturns the truncated integer quotient of `dividend` / `divisor`.\n  Truncates toward zero. Throws `\\DivisionByZeroError` when `divisor`\n  is zero.",
        "signatures": [
            "(quot dividend divisor)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L151",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(quot dividend divisor)\n```\nReturns the truncated integer quotient of `dividend` / `divisor`.\n  Truncates toward zero. Throws `\\DivisionByZeroError` when `divisor`\n  is zero.",
            "example": "(quot 7 3) ; => 2\n(quot -7 3) ; => -2",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[dividend divisor]"
        }
    },
    {
        "namespace": "core",
        "name": "quote",
        "description": "Returns the unevaluated form.",
        "doc": "```phel\n(quote form)\n```\nReturns the unevaluated form.",
        "signatures": [
            "(quote form)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/macros/#quote",
        "meta": {
            "example": "(quote (+ 1 2)) ; => '(+ 1 2)"
        }
    },
    {
        "namespace": "core",
        "name": "rand",
        "description": "Without arguments, returns a random number in `[0, 1)`. With one\n  argument `n`, returns a random number in `[0, n)`.",
        "doc": "```phel\n(rand)\n(rand n)\n```\nWithout arguments, returns a random number in `[0, 1)`. With one\n  argument `n`, returns a random number in `[0, n)`.",
        "signatures": [
            "(rand)",
            "(rand n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L429",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rand)\n(rand n)\n```\nWithout arguments, returns a random number in `[0, 1)`. With one\n  argument `n`, returns a random number in `[0, n)`.",
            "example": "(rand) ; => 0.42\n(rand 100) ; => 73.2",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "max-arity": 1,
            "arglists": "([] [n])"
        }
    },
    {
        "namespace": "core",
        "name": "rand-int",
        "description": "Returns a random number between 0 and `n`.",
        "doc": "```phel\n(rand-int n)\n```\nReturns a random number between 0 and `n`.",
        "signatures": [
            "(rand-int n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L439",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rand-int n)\n```\nReturns a random number between 0 and `n`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[n]",
            "tag": "int"
        }
    },
    {
        "namespace": "core",
        "name": "rand-nth",
        "description": "Returns a random item from xs.",
        "doc": "```phel\n(rand-nth xs)\n```\nReturns a random item from xs.",
        "signatures": [
            "(rand-nth xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L444",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rand-nth xs)\n```\nReturns a random item from xs.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[xs]"
        }
    },
    {
        "namespace": "core",
        "name": "random-uuid",
        "description": "Returns a random version 4 UUID as a `Phel\\Lang\\UUID` value.",
        "doc": "```phel\n(random-uuid)\n```\nReturns a random version 4 UUID as a `Phel\\Lang\\UUID` value.",
        "signatures": [
            "(random-uuid)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/uuid.phel#L22",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(random-uuid)\n```\nReturns a random version 4 UUID as a `Phel\\Lang\\UUID` value.",
            "example": "(random-uuid) ; => #uuid \"550e8400-e29b-41d4-a716-446655440000\"",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "core",
        "name": "range",
        "description": "Creates a lazy sequence of numbers. With no arguments returns an infinite\n  sequence starting at 0. With one argument returns (0..n). With two (start..end).\n  With three (start..end step). Note: the infinite sequence is bounded by PHP_INT_MAX.",
        "doc": "```phel\n(range & args)\n```\nCreates a lazy sequence of numbers. With no arguments returns an infinite\n  sequence starting at 0. With one argument returns (0..n). With two (start..end).\n  With three (start..end step). Note: the infinite sequence is bounded by PHP_INT_MAX.",
        "signatures": [
            "(range & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L225",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(range & args)\n```\nCreates a lazy sequence of numbers. With no arguments returns an infinite\n  sequence starting at 0. With one argument returns (0..n). With two (start..end).\n  With three (start..end step). Note: the infinite sequence is bounded by PHP_INT_MAX.",
            "example": "(range 5) ; => (0 1 2 3 4)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& args]"
        }
    },
    {
        "namespace": "core",
        "name": "ratio?",
        "description": "Returns true if `x` is a `Ratio` value. Integer-valued rationals\n  auto-collapse to `int`/`BigInt` at construction time, so `(ratio? 2/2)`\n  is `false`.",
        "doc": "```phel\n(ratio? x)\n```\nReturns true if `x` is a `Ratio` value. Integer-valued rationals\n  auto-collapse to `int`/`BigInt` at construction time, so `(ratio? 2/2)`\n  is `false`.",
        "signatures": [
            "(ratio? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L193",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ratio? x)\n```\nReturns true if `x` is a `Ratio` value. Integer-valued rationals\n  auto-collapse to `int`/`BigInt` at construction time, so `(ratio? 2/2)`\n  is `false`.",
            "example": "(ratio? 1/2) ; => true\n(ratio? 0.5) ; => false",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "rationalize",
        "description": "Converts `x` to a `Ratio`. Floats use the shortest decimal expansion\n  that round-trips back to the same float, so `(rationalize 0.1)` is `1/10`\n  rather than the float-noise denominator. Ints, `BigInt`, and\n  integer-valued `BigDecimal` values become `n/1` and auto-collapse, so\n  they are returned as the integer value. `BigDecimal` with a fractional\n  part rationalizes through its canonical decimal form.",
        "doc": "```phel\n(rationalize x)\n```\nConverts `x` to a `Ratio`. Floats use the shortest decimal expansion\n  that round-trips back to the same float, so `(rationalize 0.1)` is `1/10`\n  rather than the float-noise denominator. Ints, `BigInt`, and\n  integer-valued `BigDecimal` values become `n/1` and auto-collapse, so\n  they are returned as the integer value. `BigDecimal` with a fractional\n  part rationalizes through its canonical decimal form.",
        "signatures": [
            "(rationalize x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L673",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rationalize x)\n```\nConverts `x` to a `Ratio`. Floats use the shortest decimal expansion\n  that round-trips back to the same float, so `(rationalize 0.1)` is `1/10`\n  rather than the float-noise denominator. Ints, `BigInt`, and\n  integer-valued `BigDecimal` values become `n/1` and auto-collapse, so\n  they are returned as the integer value. `BigDecimal` with a fractional\n  part rationalizes through its canonical decimal form.",
            "example": "(rationalize 0.5) ; => 1/2\n(rationalize 3) ; => 3\n(rationalize 1M) ; => 1",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "re-find",
        "description": "Returns the first match of pattern in string, or nil if no match.\n  If the pattern has groups, returns a vector of [full-match group1 group2 ...].",
        "doc": "```phel\n(re-find re s)\n```\nReturns the first match of pattern in string, or nil if no match.\n  If the pattern has groups, returns a vector of [full-match group1 group2 ...].",
        "signatures": [
            "(re-find re s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L351",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(re-find re s)\n```\nReturns the first match of pattern in string, or nil if no match.\n  If the pattern has groups, returns a vector of [full-match group1 group2 ...].",
            "example": "(re-find #\"\\d+\" \"abc123def\") ; => \"123\"",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[re s]"
        }
    },
    {
        "namespace": "core",
        "name": "re-matches",
        "description": "Returns the match, if any, of string to pattern. If the pattern has groups,\n  returns a vector of [full-match group1 group2 ...]. Returns nil if no match.\n  Unlike re-find, the entire string must match.",
        "doc": "```phel\n(re-matches re s)\n```\nReturns the match, if any, of string to pattern. If the pattern has groups,\n  returns a vector of [full-match group1 group2 ...]. Returns nil if no match.\n  Unlike re-find, the entire string must match.",
        "signatures": [
            "(re-matches re s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L365",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(re-matches re s)\n```\nReturns the match, if any, of string to pattern. If the pattern has groups,\n  returns a vector of [full-match group1 group2 ...]. Returns nil if no match.\n  Unlike re-find, the entire string must match.",
            "example": "(re-matches #\"(\\d+)-(\\d+)\" \"12-34\") ; => [\"12-34\" \"12\" \"34\"]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[re s]"
        }
    },
    {
        "namespace": "core",
        "name": "re-pattern",
        "description": "Returns a PCRE pattern string from `s`. If `s` is already delimited,\n  returns it as-is. Otherwise wraps in `/` delimiters.",
        "doc": "```phel\n(re-pattern s)\n```\nReturns a PCRE pattern string from `s`. If `s` is already delimited,\n  returns it as-is. Otherwise wraps in `/` delimiters.",
        "signatures": [
            "(re-pattern s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L326",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(re-pattern s)\n```\nReturns a PCRE pattern string from `s`. If `s` is already delimited,\n  returns it as-is. Otherwise wraps in `/` delimiters.",
            "example": "(re-pattern \"\\\\d+\") ; => \"/\\\\d+/\"",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "core",
        "name": "re-seq",
        "description": "Returns a sequence of successive matches of pattern in string.",
        "doc": "```phel\n(re-seq re s)\n```\nReturns a sequence of successive matches of pattern in string.",
        "signatures": [
            "(re-seq re s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L339",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(re-seq re s)\n```\nReturns a sequence of successive matches of pattern in string.",
            "example": "(re-seq #\"\\d+\" \"a1b2c3\") ; => [\"1\" \"2\" \"3\"]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[re s]"
        }
    },
    {
        "namespace": "core",
        "name": "read-file-lazy",
        "description": "Returns a lazy sequence of byte chunks from a file.",
        "doc": "```phel\n(read-file-lazy filename)\n(read-file-lazy filename chunk-size)\n```\nReturns a lazy sequence of byte chunks from a file.",
        "signatures": [
            "(read-file-lazy filename)",
            "(read-file-lazy filename chunk-size)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L149",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(read-file-lazy filename)\n(read-file-lazy filename chunk-size)\n```\nReturns a lazy sequence of byte chunks from a file.",
            "example": "(take 5 (read-file-lazy \"large-file.bin\" 1024)) ; => [\"chunk1\" \"chunk2\" ...]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([filename] [filename chunk-size])"
        }
    },
    {
        "namespace": "core",
        "name": "read-string",
        "description": "Reads the first phel expression from the string s.",
        "doc": "```phel\n(read-string s)\n```\nReads the first phel expression from the string s.",
        "signatures": [
            "(read-string s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L987",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(read-string s)\n```\nReads the first phel expression from the string s.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "core",
        "name": "realized?",
        "description": "Returns true if a lazy sequence, delay, promise, or future has been realized, false otherwise.",
        "doc": "```phel\n(realized? coll)\n```\nReturns true if a lazy sequence, delay, promise, or future has been realized, false otherwise.",
        "signatures": [
            "(realized? coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1081",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(realized? coll)\n```\nReturns true if a lazy sequence, delay, promise, or future has been realized, false otherwise.",
            "example": "(realized? (take 5 (iterate inc 1))) ; => false",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "recur",
        "description": "Internally recur is implemented as a PHP while loop and therefore prevents the Maximum function nesting level errors.",
        "doc": "```phel\n(recur expr*)\n```\nInternally recur is implemented as a PHP while loop and therefore prevents the Maximum function nesting level errors.",
        "signatures": [
            "(recur expr*)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/functions-and-recursion/#recursion",
        "meta": {
            "example": "(loop [n 5 acc 1] (if (<= n 1) acc (recur (dec n) (* acc n))))"
        }
    },
    {
        "namespace": "core",
        "name": "reduce",
        "description": "Reduces collection to a single value by repeatedly applying function to accumulator and elements.\n  Respects early termination via `(reduced val)`.",
        "doc": "```phel\n(reduce f & args)\n```\nReduces collection to a single value by repeatedly applying function to accumulator and elements.\n  Respects early termination via `(reduced val)`.",
        "signatures": [
            "(reduce f & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transducers.phel#L50",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(reduce f & args)\n```\nReduces collection to a single value by repeatedly applying function to accumulator and elements.\n  Respects early termination via `(reduced val)`.",
            "example": "(reduce + [1 2 3 4]) ; => 10",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[f & args]"
        }
    },
    {
        "namespace": "core",
        "name": "reduced",
        "description": "Wraps `x` in a Reduced, signaling early termination from reduce/transduce.",
        "doc": "```phel\n(reduced x)\n```\nWraps `x` in a Reduced, signaling early termination from reduce/transduce.",
        "signatures": [
            "(reduced x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transducers.phel#L18",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(reduced x)\n```\nWraps `x` in a Reduced, signaling early termination from reduce/transduce.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "reduced?",
        "description": "Returns true if `x` is a Reduced value.",
        "doc": "```phel\n(reduced? x)\n```\nReturns true if `x` is a Reduced value.",
        "signatures": [
            "(reduced? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transducers.phel#L24",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(reduced? x)\n```\nReturns true if `x` is a Reduced value.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "register-protocol-implementor!",
        "description": "Records that `type-key` implements the protocol identified by both\n  `protocol-value` (the `defprotocol` map) and `protocol-tag` (its FQN\n  string). Called from `extend-type`'s expansion.",
        "doc": "```phel\n(register-protocol-implementor! type-key protocol-value protocol-tag)\n```\nRecords that `type-key` implements the protocol identified by both\n  `protocol-value` (the `defprotocol` map) and `protocol-tag` (its FQN\n  string). Called from `extend-type`'s expansion.",
        "signatures": [
            "(register-protocol-implementor! type-key protocol-value protocol-tag)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L104",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(register-protocol-implementor! type-key protocol-value protocol-tag)\n```\nRecords that `type-key` implements the protocol identified by both\n  `protocol-value` (the `defprotocol` map) and `protocol-tag` (its FQN\n  string). Called from `extend-type`'s expansion.",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[type-key protocol-value protocol-tag]"
        }
    },
    {
        "namespace": "core",
        "name": "reify",
        "description": "Creates an anonymous object implementing one or more protocols.\n  Method bodies close over local bindings. Each instance carries its\n  own captured state, so reify works correctly inside loops.\n\n  Syntax:\n    (reify\n      ProtocolName\n      (method-name [this arg1] body)\n      AnotherProtocol\n      (another-method [this] body))",
        "doc": "```phel\n(reify & specs)\n```\nCreates an anonymous object implementing one or more protocols.\n  Method bodies close over local bindings. Each instance carries its\n  own captured state, so reify works correctly inside loops.\n\n  Syntax:\n    (reify\n      ProtocolName\n      (method-name [this arg1] body)\n      AnotherProtocol\n      (another-method [this] body))",
        "signatures": [
            "(reify & specs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L579",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(reify & specs)\n```\nCreates an anonymous object implementing one or more protocols.\n  Method bodies close over local bindings. Each instance carries its\n  own captured state, so reify works correctly inside loops.\n\n  Syntax:\n    (reify\n      ProtocolName\n      (method-name [this arg1] body)\n      AnotherProtocol\n      (another-method [this] body))",
            "example": "(reify Speakable (speak [this] \"hello\"))",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& specs]"
        }
    },
    {
        "namespace": "core",
        "name": "rem",
        "description": "Returns the truncated remainder of `dividend` / `divisor`. The result\n  has the same sign as `dividend` (matches PHP's `%`).",
        "doc": "```phel\n(rem dividend divisor)\n```\nReturns the truncated remainder of `dividend` / `divisor`. The result\n  has the same sign as `dividend` (matches PHP's `%`).",
        "signatures": [
            "(rem dividend divisor)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L161",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rem dividend divisor)\n```\nReturns the truncated remainder of `dividend` / `divisor`. The result\n  has the same sign as `dividend` (matches PHP's `%`).",
            "example": "(rem 7 3) ; => 1\n(rem -7 3) ; => -1",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[dividend divisor]"
        }
    },
    {
        "namespace": "core",
        "name": "remove",
        "description": "Returns a lazy sequence of elements where predicate returns false.\n   Opposite of filter. When called with pred only, returns a transducer.",
        "doc": "```phel\n(remove pred & args)\n```\nReturns a lazy sequence of elements where predicate returns false.\n   Opposite of filter. When called with pred only, returns a transducer.",
        "signatures": [
            "(remove pred & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L530",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(remove pred & args)\n```\nReturns a lazy sequence of elements where predicate returns false.\n   Opposite of filter. When called with pred only, returns a transducer.",
            "example": "(remove even? [1 2 3 4 5 6]) ; => (1 3 5)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[pred & args]"
        }
    },
    {
        "namespace": "core",
        "name": "remove-ns",
        "description": "Removes the namespace and all of its definitions from the registry.\n  Use with caution. Returns nil.",
        "doc": "```phel\n(remove-ns ns-str)\n```\nRemoves the namespace and all of its definitions from the registry.\n  Use with caution. Returns nil.",
        "signatures": [
            "(remove-ns ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/ns.phel#L75",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(remove-ns ns-str)\n```\nRemoves the namespace and all of its definitions from the registry.\n  Use with caution. Returns nil.",
            "example": "(remove-ns \"my-app\\tmp\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "core",
        "name": "remove-tap",
        "description": "Removes `f` from the tap set. Returns nil.",
        "doc": "```phel\n(remove-tap f)\n```\nRemoves `f` from the tap set. Returns nil.",
        "signatures": [
            "(remove-tap f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/tap.phel#L24",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(remove-tap f)\n```\nRemoves `f` from the tap set. Returns nil.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[f]"
        }
    },
    {
        "namespace": "core",
        "name": "remove-watch",
        "description": "Removes a watch function from a variable by key.",
        "doc": "```phel\n(remove-watch variable key)\n```\nRemoves a watch function from a variable by key.",
        "signatures": [
            "(remove-watch variable key)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L189",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(remove-watch variable key)\n```\nRemoves a watch function from a variable by key.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[variable key]"
        }
    },
    {
        "namespace": "core",
        "name": "rename-keys",
        "description": "Returns the map with keys renamed according to kmap.\n  Keys not present in kmap are left unchanged.",
        "doc": "```phel\n(rename-keys m kmap)\n```\nReturns the map with keys renamed according to kmap.\n  Keys not present in kmap are left unchanged.",
        "signatures": [
            "(rename-keys m kmap)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1165",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rename-keys m kmap)\n```\nReturns the map with keys renamed according to kmap.\n  Keys not present in kmap are left unchanged.",
            "example": "(rename-keys {:a 1 :b 2 :c 3} {:a :x :b :y}) ; => {:x 1 :y 2 :c 3}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[m kmap]"
        }
    },
    {
        "namespace": "core",
        "name": "repeat",
        "description": "Returns a vector of length n where every element is x.\n\n  With one argument returns an infinite lazy sequence of x.",
        "doc": "```phel\n(repeat a & rest)\n```\nReturns a vector of length n where every element is x.\n\n  With one argument returns an infinite lazy sequence of x.",
        "signatures": [
            "(repeat a & rest)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L891",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(repeat a & rest)\n```\nReturns a vector of length n where every element is x.\n\n  With one argument returns an infinite lazy sequence of x.",
            "example": "(repeat 3 :a) ; => [:a :a :a]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[a & rest]"
        }
    },
    {
        "namespace": "core",
        "name": "repeatedly",
        "description": "Returns a vector of length n with values produced by repeatedly calling f.\n\n  With one argument returns an infinite lazy sequence of calls to f.",
        "doc": "```phel\n(repeatedly a & rest)\n```\nReturns a vector of length n with values produced by repeatedly calling f.\n\n  With one argument returns an infinite lazy sequence of calls to f.",
        "signatures": [
            "(repeatedly a & rest)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L903",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(repeatedly a & rest)\n```\nReturns a vector of length n with values produced by repeatedly calling f.\n\n  With one argument returns an infinite lazy sequence of calls to f.",
            "example": "(repeatedly 3 rand) ; => [0.234 0.892 0.456] (random values)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[a & rest]"
        }
    },
    {
        "namespace": "core",
        "name": "reset!",
        "description": "Sets a new value on the given atom. Returns the new value.",
        "doc": "```phel\n(reset! variable value)\n```\nSets a new value on the given atom. Returns the new value.",
        "signatures": [
            "(reset! variable value)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L52",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(reset! variable value)\n```\nSets a new value on the given atom. Returns the new value.",
            "example": "(def x (atom 10))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[variable value]"
        }
    },
    {
        "namespace": "core",
        "name": "reset-meta!",
        "description": "Installs `meta-map` as the metadata on `r`, replacing any prior metadata.\n  Works on `Var` handles and on atoms. Returns the installed map.",
        "doc": "```phel\n(reset-meta! r meta-map)\n```\nInstalls `meta-map` as the metadata on `r`, replacing any prior metadata.\n  Works on `Var` handles and on atoms. Returns the installed map.",
        "signatures": [
            "(reset-meta! r meta-map)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L177",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(reset-meta! r meta-map)\n```\nInstalls `meta-map` as the metadata on `r`, replacing any prior metadata.\n  Works on `Var` handles and on atoms. Returns the installed map.",
            "example": "(reset-meta! #'my-var {:tag :int})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[r meta-map]"
        }
    },
    {
        "namespace": "core",
        "name": "resolve",
        "description": "Resolves the given symbol in the current environment and returns a resolved Symbol with the absolute namespace or nil if it cannot be resolved.",
        "doc": "```phel\n(resolve sym)\n```\nResolves the given symbol in the current environment and returns a resolved Symbol with the absolute namespace or nil if it cannot be resolved.",
        "signatures": [
            "(resolve sym)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L1014",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(resolve sym)\n```\nResolves the given symbol in the current environment and returns a resolved Symbol with the absolute namespace or nil if it cannot be resolved.",
            "example": "(resolve 'map) ; => phel\\core/map",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[sym]"
        }
    },
    {
        "namespace": "core",
        "name": "rest",
        "description": "Returns the sequence after the first element, or empty sequence if none.",
        "doc": "```phel\n(rest coll)\n```\nReturns the sequence after the first element, or empty sequence if none.",
        "signatures": [
            "(rest coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-basics.phel#L88",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rest coll)\n```\nReturns the sequence after the first element, or empty sequence if none.",
            "example": "(rest [1 2 3]) ; => [2 3]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "reverse",
        "description": "Reverses the order of the elements in the given sequence.",
        "doc": "```phel\n(reverse coll)\n```\nReverses the order of the elements in the given sequence.",
        "signatures": [
            "(reverse coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L634",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(reverse coll)\n```\nReverses the order of the elements in the given sequence.",
            "example": "(reverse [1 2 3 4]) ; => [4 3 2 1]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "reversible?",
        "description": "Returns true if `coll` can be reverse-iterated in constant time.\n  Currently this is true for vectors, sorted-maps, and sorted-sets.",
        "doc": "```phel\n(reversible? coll)\n```\nReturns true if `coll` can be reverse-iterated in constant time.\n  Currently this is true for vectors, sorted-maps, and sorted-sets.",
        "signatures": [
            "(reversible? coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L645",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(reversible? coll)\n```\nReturns true if `coll` can be reverse-iterated in constant time.\n  Currently this is true for vectors, sorted-maps, and sorted-sets.",
            "example": "(reversible? [1 2 3]) ; => true",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "round",
        "description": "Rounds `x` to the nearest integer using PHP's `round` (half away from\n  zero). Ints and `BigInt` values are returned unchanged. Ratios\n  and floats return floats.",
        "doc": "```phel\n(round x)\n```\nRounds `x` to the nearest integer using PHP's `round` (half away from\n  zero). Ints and `BigInt` values are returned unchanged. Ratios\n  and floats return floats.",
        "signatures": [
            "(round x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L768",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(round x)\n```\nRounds `x` to the nearest integer using PHP's `round` (half away from\n  zero). Ints and `BigInt` values are returned unchanged. Ratios\n  and floats return floats.",
            "example": "(round 1.5) ; => 2.0\n(round -1.5) ; => -2.0\n(round 5) ; => 5",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "rseq",
        "description": "Returns, in constant time, a sequence of the items in `rev` in reverse\n  order. `rev` must be reversible (a vector, sorted-map, or sorted-set);\n  otherwise an exception is thrown. For sorted-maps, returns reversed `[key value]` pairs.\n  Returns nil if `rev` is empty.",
        "doc": "```phel\n(rseq rev)\n```\nReturns, in constant time, a sequence of the items in `rev` in reverse\n  order. `rev` must be reversible (a vector, sorted-map, or sorted-set);\n  otherwise an exception is thrown. For sorted-maps, returns reversed `[key value]` pairs.\n  Returns nil if `rev` is empty.",
        "signatures": [
            "(rseq rev)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L654",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rseq rev)\n```\nReturns, in constant time, a sequence of the items in `rev` in reverse\n  order. `rev` must be reversible (a vector, sorted-map, or sorted-set);\n  otherwise an exception is thrown. For sorted-maps, returns reversed `[key value]` pairs.\n  Returns nil if `rev` is empty.",
            "example": "(rseq [1 2 3]) ; => (3 2 1)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[rev]"
        }
    },
    {
        "namespace": "core",
        "name": "run!",
        "description": "Calls `(f x)` for each element in `coll` for side effects. Returns nil.",
        "doc": "```phel\n(run! f coll)\n```\nCalls `(f x)` for each element in `coll` for side effects. Returns nil.",
        "signatures": [
            "(run! f coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/loops.phel#L9",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(run! f coll)\n```\nCalls `(f x)` for each element in `coll` for side effects. Returns nil.",
            "example": "(run! println [1 2 3])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[f coll]"
        }
    },
    {
        "namespace": "core",
        "name": "satisfies?",
        "description": "Returns true if x's type implements all methods of the given protocol.",
        "doc": "```phel\n(satisfies? protocol x)\n```\nReturns true if x's type implements all methods of the given protocol.",
        "signatures": [
            "(satisfies? protocol x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L527",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(satisfies? protocol x)\n```\nReturns true if x's type implements all methods of the given protocol.",
            "example": "(satisfies? Stringable \"hello\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[protocol x]"
        }
    },
    {
        "namespace": "core",
        "name": "second",
        "description": "Returns the second element of a sequence, or nil if not present.",
        "doc": "```phel\n(second coll)\n```\nReturns the second element of a sequence, or nil if not present.",
        "signatures": [
            "(second coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-basics.phel#L82",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(second coll)\n```\nReturns the second element of a sequence, or nil if not present.",
            "example": "(second [1 2 3]) ; => 2",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "select-keys",
        "description": "Returns a new map including key value pairs from `m` selected with keys `ks`.",
        "doc": "```phel\n(select-keys m ks)\n```\nReturns a new map including key value pairs from `m` selected with keys `ks`.",
        "signatures": [
            "(select-keys m ks)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1151",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(select-keys m ks)\n```\nReturns a new map including key value pairs from `m` selected with keys `ks`.",
            "example": "(select-keys {:a 1 :b 2 :c 3} [:a :c]) ; => {:a 1 :c 3}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[m ks]"
        }
    },
    {
        "namespace": "core",
        "name": "seq",
        "description": "Returns a seq on the collection. Strings are converted to a vector of characters.\n  Other non-empty collections (vectors, sets, sorted-maps, sorted-sets, PHP arrays)\n  are converted to a non-list seq. Returns nil if `coll` is empty or nil.\n\n  This function is useful for explicitly converting strings to sequences of characters,\n  enabling sequence operations like map, filter, and frequencies.",
        "doc": "```phel\n(seq coll)\n```\nReturns a seq on the collection. Strings are converted to a vector of characters.\n  Other non-empty collections (vectors, sets, sorted-maps, sorted-sets, PHP arrays)\n  are converted to a non-list seq. Returns nil if `coll` is empty or nil.\n\n  This function is useful for explicitly converting strings to sequences of characters,\n  enabling sequence operations like map, filter, and frequencies.",
        "signatures": [
            "(seq coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L465",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(seq coll)\n```\nReturns a seq on the collection. Strings are converted to a vector of characters.\n  Other non-empty collections (vectors, sets, sorted-maps, sorted-sets, PHP arrays)\n  are converted to a non-list seq. Returns nil if `coll` is empty or nil.\n\n  This function is useful for explicitly converting strings to sequences of characters,\n  enabling sequence operations like map, filter, and frequencies.",
            "example": "(seq \"hello\") ; => [\"h\" \"e\" \"l\" \"l\" \"o\"]\n(seq [1 2 3]) ; => (1 2 3)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "seq?",
        "description": "Returns true if `x` is a seq (a list, a lazy sequence, or a realized\n  `Cons` cell returned by `(next some-lazy-seq)`).",
        "doc": "```phel\n(seq? x)\n```\nReturns true if `x` is a seq (a list, a lazy sequence, or a realized\n  `Cons` cell returned by `(next some-lazy-seq)`).",
        "signatures": [
            "(seq? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L401",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(seq? x)\n```\nReturns true if `x` is a seq (a list, a lazy sequence, or a realized\n  `Cons` cell returned by `(next some-lazy-seq)`).",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "seqable?",
        "description": "Returns true if `(seq x)` is supported: collections (vectors, lists,\n   maps, sets, structs), lazy sequences, strings, PHP arrays, and nil.\n   Returns false for numbers, booleans, keywords, symbols, and other types.",
        "doc": "```phel\n(seqable? x)\n```\nReturns true if `(seq x)` is supported: collections (vectors, lists,\n   maps, sets, structs), lazy sequences, strings, PHP arrays, and nil.\n   Returns false for numbers, booleans, keywords, symbols, and other types.",
        "signatures": [
            "(seqable? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L550",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(seqable? x)\n```\nReturns true if `(seq x)` is supported: collections (vectors, lists,\n   maps, sets, structs), lazy sequences, strings, PHP arrays, and nil.\n   Returns false for numbers, booleans, keywords, symbols, and other types.",
            "example": "(seqable? [1 2]) ; => true\n(seqable? 42) ; => false",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "sequence",
        "description": "Applies transducer `xform` to `coll`, returning a vector of results.",
        "doc": "```phel\n(sequence xform coll)\n```\nApplies transducer `xform` to `coll`, returning a vector of results.",
        "signatures": [
            "(sequence xform coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1231",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(sequence xform coll)\n```\nApplies transducer `xform` to `coll`, returning a vector of results.",
            "example": "(sequence (comp (filter even?) (map inc)) [1 2 3 4 5]) ; => [3 5]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[xform coll]"
        }
    },
    {
        "namespace": "core",
        "name": "sequential?",
        "description": "Returns true if `x` is a sequential collection (vector, list, or lazy\n   sequence), false otherwise. Sequential collections maintain insertion\n   order and support indexed or linear access. Maps, sets, and structs\n   are not sequential, matching Clojure's `Sequential` marker.",
        "doc": "```phel\n(sequential? x)\n```\nReturns true if `x` is a sequential collection (vector, list, or lazy\n   sequence), false otherwise. Sequential collections maintain insertion\n   order and support indexed or linear access. Maps, sets, and structs\n   are not sequential, matching Clojure's `Sequential` marker.",
        "signatures": [
            "(sequential? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L523",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(sequential? x)\n```\nReturns true if `x` is a sequential collection (vector, list, or lazy\n   sequence), false otherwise. Sequential collections maintain insertion\n   order and support indexed or linear access. Maps, sets, and structs\n   are not sequential, matching Clojure's `Sequential` marker.",
            "example": "(sequential? [1 2 3]) ; => true\n(sequential? {:a 1}) ; => false",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "set",
        "description": "Coerces a collection to a set. Returns a set containing the distinct elements of `coll`.\n  For creating sets from arguments, use `hash-set`.",
        "doc": "```phel\n(set coll)\n```\nCoerces a collection to a set. Returns a set containing the distinct elements of `coll`.\n  For creating sets from arguments, use `hash-set`.",
        "signatures": [
            "(set coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L245",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(set coll)\n```\nCoerces a collection to a set. Returns a set containing the distinct elements of `coll`.\n  For creating sets from arguments, use `hash-set`.",
            "example": "(set [1 2 3 2 1]) ; => #{1 2 3}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "set-meta!",
        "description": "Sets the metadata to a given object.",
        "doc": "Sets the metadata to a given object.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/meta.phel#L70",
        "docUrl": "",
        "meta": {
            "doc": "Sets the metadata to a given object.",
            "deprecated": "0.32.0",
            "superseded-by": "with-meta",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[obj meta]"
        }
    },
    {
        "namespace": "core",
        "name": "set-validator!",
        "description": "Sets a validator function on a variable. The validator is called before any\n  state change with the proposed new value. If it returns a falsy value, an\n  exception is thrown and the state is not changed. Pass nil to remove.",
        "doc": "```phel\n(set-validator! variable f)\n```\nSets a validator function on a variable. The validator is called before any\n  state change with the proposed new value. If it returns a falsy value, an\n  exception is thrown and the state is not changed. Pass nil to remove.",
        "signatures": [
            "(set-validator! variable f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L196",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(set-validator! variable f)\n```\nSets a validator function on a variable. The validator is called before any\n  state change with the proposed new value. If it returns a falsy value, an\n  exception is thrown and the state is not changed. Pass nil to remove.",
            "example": "(set-validator! my-var pos?)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[variable f]"
        }
    },
    {
        "namespace": "core",
        "name": "set-var",
        "description": "Variables provide a way to manage mutable state that can be updated with `set!` and `swap!`. Each variable contains a single value. To create a variable use the var function.",
        "doc": "```phel\n(var value)\n```\nVariables provide a way to manage mutable state that can be updated with `set!` and `swap!`. Each variable contains a single value. To create a variable use the var function.",
        "signatures": [
            "(var value)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/global-and-local-bindings/#variables",
        "meta": {
            "example": "(def counter (var 0))"
        }
    },
    {
        "namespace": "core",
        "name": "set?",
        "description": "Returns true if `x` is a set, false otherwise.",
        "doc": "```phel\n(set? x)\n```\nReturns true if `x` is a set, false otherwise.",
        "signatures": [
            "(set? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L577",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(set? x)\n```\nReturns true if `x` is a set, false otherwise.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "short",
        "description": "Coerces `x` to a signed 16-bit integer in the range `-32768..32767`.\n   Decimal values are truncated toward zero. `Ratio` and `BigInt`\n   values are accepted (truncate toward zero, then range-check). Values\n   outside the range or non-numeric inputs raise `InvalidArgumentException`.\n   Phel has no dedicated short type, so the result is a plain PHP int.",
        "doc": "```phel\n(short x)\n```\nCoerces `x` to a signed 16-bit integer in the range `-32768..32767`.\n   Decimal values are truncated toward zero. `Ratio` and `BigInt`\n   values are accepted (truncate toward zero, then range-check). Values\n   outside the range or non-numeric inputs raise `InvalidArgumentException`.\n   Phel has no dedicated short type, so the result is a plain PHP int.",
        "signatures": [
            "(short x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L362",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(short x)\n```\nCoerces `x` to a signed 16-bit integer in the range `-32768..32767`.\n   Decimal values are truncated toward zero. `Ratio` and `BigInt`\n   values are accepted (truncate toward zero, then range-check). Values\n   outside the range or non-numeric inputs raise `InvalidArgumentException`.\n   Phel has no dedicated short type, so the result is a plain PHP int.",
            "example": "(short 32767) ; => 32767\n(short 1.9) ; => 1\n(short -32768) ; => -32768",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "short-array",
        "description": "Creates a PHP array of shorts (16-bit integers). Accepts the same arities\n  and semantics as `int-array`.",
        "doc": "```phel\n(short-array size-or-seq)\n(short-array size init-val-or-seq)\n```\nCreates a PHP array of shorts (16-bit integers). Accepts the same arities\n  and semantics as `int-array`.",
        "signatures": [
            "(short-array size-or-seq)",
            "(short-array size init-val-or-seq)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/arrays.phel#L193",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(short-array size-or-seq)\n(short-array size init-val-or-seq)\n```\nCreates a PHP array of shorts (16-bit integers). Accepts the same arities\n  and semantics as `int-array`.",
            "example": "(short-array 3) ; => PHP array [0, 0, 0]\n(short-array 4 7) ; => PHP array [7, 7, 7, 7]",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([size-or-seq] [size init-val-or-seq])"
        }
    },
    {
        "namespace": "core",
        "name": "shuffle",
        "description": "Returns a random permutation of coll.",
        "doc": "```phel\n(shuffle coll)\n```\nReturns a random permutation of coll.",
        "signatures": [
            "(shuffle coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L883",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(shuffle coll)\n```\nReturns a random permutation of coll.",
            "example": "(shuffle [1 2 3 4 5]) ; => [3 1 5 2 4] (random order)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "simple-ident?",
        "description": "Returns true if `x` is a symbol or keyword without a namespace.",
        "doc": "```phel\n(simple-ident? x)\n```\nReturns true if `x` is a symbol or keyword without a namespace.",
        "signatures": [
            "(simple-ident? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L258",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(simple-ident? x)\n```\nReturns true if `x` is a symbol or keyword without a namespace.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "simple-keyword?",
        "description": "Returns true if `x` is a keyword without a namespace.",
        "doc": "```phel\n(simple-keyword? x)\n```\nReturns true if `x` is a keyword without a namespace.",
        "signatures": [
            "(simple-keyword? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L252",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(simple-keyword? x)\n```\nReturns true if `x` is a keyword without a namespace.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "simple-symbol?",
        "description": "Returns true if `x` is a symbol without a namespace.",
        "doc": "```phel\n(simple-symbol? x)\n```\nReturns true if `x` is a symbol without a namespace.",
        "signatures": [
            "(simple-symbol? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L246",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(simple-symbol? x)\n```\nReturns true if `x` is a symbol without a namespace.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "slice",
        "description": "Extracts a slice of `coll` starting at `offset` with optional `length`.",
        "doc": "```phel\n(slice coll & [offset & [length]])\n```\nExtracts a slice of `coll` starting at `offset` with optional `length`.",
        "signatures": [
            "(slice coll & [offset & [length]])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L236",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(slice coll & [offset & [length]])\n```\nExtracts a slice of `coll` starting at `offset` with optional `length`.",
            "example": "(slice [1 2 3 4 5] 1 3) ; => [2 3 4]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[coll & __phel_890]"
        }
    },
    {
        "namespace": "core",
        "name": "slurp",
        "description": "Reads entire file or URL into a string.",
        "doc": "```phel\n(slurp path & [opts])\n```\nReads entire file or URL into a string.",
        "signatures": [
            "(slurp path & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L81",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(slurp path & [opts])\n```\nReads entire file or URL into a string.",
            "example": "(slurp \"file.txt\") ; => \"file contents\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[path & __phel_1622]"
        }
    },
    {
        "namespace": "core",
        "name": "some",
        "description": "Returns the first truthy value of applying predicate to elements, or nil if none found.",
        "doc": "```phel\n(some pred coll)\n```\nReturns the first truthy value of applying predicate to elements, or nil if none found.",
        "signatures": [
            "(some pred coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L292",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(some pred coll)\n```\nReturns the first truthy value of applying predicate to elements, or nil if none found.",
            "example": "(some #(when (> % 10) %) [5 15 8]) ; => 15",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[pred coll]"
        }
    },
    {
        "namespace": "core",
        "name": "some->",
        "description": "Threads `x` through the forms like `->` but stops when a form returns `nil`.",
        "doc": "```phel\n(some-> x & forms)\n```\nThreads `x` through the forms like `->` but stops when a form returns `nil`.",
        "signatures": [
            "(some-> x & forms)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L216",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(some-> x & forms)\n```\nThreads `x` through the forms like `->` but stops when a form returns `nil`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[x & forms]"
        }
    },
    {
        "namespace": "core",
        "name": "some->>",
        "description": "Threads `x` through the forms like `->>` but stops when a form returns `nil`.",
        "doc": "```phel\n(some->> x & forms)\n```\nThreads `x` through the forms like `->>` but stops when a form returns `nil`.",
        "signatures": [
            "(some->> x & forms)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L240",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(some->> x & forms)\n```\nThreads `x` through the forms like `->>` but stops when a form returns `nil`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[x & forms]"
        }
    },
    {
        "namespace": "core",
        "name": "some-fn",
        "description": "Takes a variadic set of predicates and returns a function `f` that,\n   when called with any number of arguments, returns the first logical\n   true value produced by applying any of the composing predicates to\n   any of its arguments, and `false` when none match. The returned\n   function short-circuits on the first truthy result: arguments after\n   it are not inspected, and predicates after it are not tried.\n   Predicates are consulted in the order supplied; for a given\n   predicate, arguments are consulted left-to-right.",
        "doc": "```phel\n(some-fn p & ps)\n```\nTakes a variadic set of predicates and returns a function `f` that,\n   when called with any number of arguments, returns the first logical\n   true value produced by applying any of the composing predicates to\n   any of its arguments, and `false` when none match. The returned\n   function short-circuits on the first truthy result: arguments after\n   it are not inspected, and predicates after it are not tried.\n   Predicates are consulted in the order supplied; for a given\n   predicate, arguments are consulted left-to-right.",
        "signatures": [
            "(some-fn p & ps)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L107",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(some-fn p & ps)\n```\nTakes a variadic set of predicates and returns a function `f` that,\n   when called with any number of arguments, returns the first logical\n   true value produced by applying any of the composing predicates to\n   any of its arguments, and `false` when none match. The returned\n   function short-circuits on the first truthy result: arguments after\n   it are not inspected, and predicates after it are not tried.\n   Predicates are consulted in the order supplied; for a given\n   predicate, arguments are consulted left-to-right.",
            "example": "((some-fn even? nil?) 1 2) ; => true\n((some-fn pos? even?) -3 -1) ; => false",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[p & ps]"
        }
    },
    {
        "namespace": "core",
        "name": "some?",
        "description": "With 1 arg, returns true if `x` is not nil (Clojure semantics).\n   With 2 args, returns true if `pred` is true for at least one element in `coll`.",
        "doc": "```phel\n(some? x)\n(some? pred coll)\n```\nWith 1 arg, returns true if `x` is not nil (Clojure semantics).\n   With 2 args, returns true if `pred` is true for at least one element in `coll`.",
        "signatures": [
            "(some? x)",
            "(some? pred coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L275",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(some? x)\n(some? pred coll)\n```\nWith 1 arg, returns true if `x` is not nil (Clojure semantics).\n   With 2 args, returns true if `pred` is true for at least one element in `coll`.",
            "example": "(some? 1) ; => true\n(some? even? [1 3 5 6 7]) ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([x] [pred coll])"
        }
    },
    {
        "namespace": "core",
        "name": "sort",
        "description": "Returns a sorted vector. If no comparator is supplied compare is used.",
        "doc": "```phel\n(sort coll)\n(sort a b)\n```\nReturns a sorted vector. If no comparator is supplied compare is used.",
        "signatures": [
            "(sort coll)",
            "(sort a b)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L859",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(sort coll)\n(sort a b)\n```\nReturns a sorted vector. If no comparator is supplied compare is used.",
            "example": "(sort [3 1 4 1 5 9 2 6]) ; => [1 1 2 3 4 5 6 9]\n(sort (fn [a b] (compare b a)) [1 2 3]) ; => [3 2 1]",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([coll] [a b])"
        }
    },
    {
        "namespace": "core",
        "name": "sort-by",
        "description": "Returns a sorted vector where the sort order is determined by comparing `(keyfn item)`.\n\n  If no comparator is supplied compare is used.",
        "doc": "```phel\n(sort-by keyfn coll)\n(sort-by keyfn comp-or-coll coll-or-comp)\n```\nReturns a sorted vector where the sort order is determined by comparing `(keyfn item)`.\n\n  If no comparator is supplied compare is used.",
        "signatures": [
            "(sort-by keyfn coll)",
            "(sort-by keyfn comp-or-coll coll-or-comp)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L870",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(sort-by keyfn coll)\n(sort-by keyfn comp-or-coll coll-or-comp)\n```\nReturns a sorted vector where the sort order is determined by comparing `(keyfn item)`.\n\n  If no comparator is supplied compare is used.",
            "example": "(sort-by count [\"aaa\" \"c\" \"bb\"]) ; => [\"c\" \"bb\" \"aaa\"]\n(sort-by count compare [\"aaa\" \"c\" \"bb\"]) ; => [\"c\" \"bb\" \"aaa\"]",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "max-arity": 3,
            "arglists": "([keyfn coll] [keyfn comp-or-coll coll-or-comp])"
        }
    },
    {
        "namespace": "core",
        "name": "sorted-map",
        "description": "Creates a new sorted map. Keys are in natural sorted order.\n  The number of parameters must be even.",
        "doc": "```phel\n(sorted-map & xs)\n```\nCreates a new sorted map. Keys are in natural sorted order.\n  The number of parameters must be even.",
        "signatures": [
            "(sorted-map & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/collections.phel#L21",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(sorted-map & xs)\n```\nCreates a new sorted map. Keys are in natural sorted order.\n  The number of parameters must be even.",
            "example": "(sorted-map :c 3 :a 1 :b 2) ; keys iterate as :a :b :c",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "sorted-map-by",
        "description": "Creates a new sorted map using the given comparator for key ordering.\n  The comparator takes two arguments and returns a negative integer,\n  zero, or a positive integer.",
        "doc": "```phel\n(sorted-map-by comp & xs)\n```\nCreates a new sorted map using the given comparator for key ordering.\n  The comparator takes two arguments and returns a negative integer,\n  zero, or a positive integer.",
        "signatures": [
            "(sorted-map-by comp & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/collections.phel#L29",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(sorted-map-by comp & xs)\n```\nCreates a new sorted map using the given comparator for key ordering.\n  The comparator takes two arguments and returns a negative integer,\n  zero, or a positive integer.",
            "example": "(sorted-map-by (fn [a b] (compare b a)) :a 1 :b 2) ; keys iterate as :b :a",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[comp & xs]"
        }
    },
    {
        "namespace": "core",
        "name": "sorted-set",
        "description": "Creates a new sorted set. Elements are in natural sorted order.",
        "doc": "```phel\n(sorted-set & xs)\n```\nCreates a new sorted set. Elements are in natural sorted order.",
        "signatures": [
            "(sorted-set & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/collections.phel#L38",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(sorted-set & xs)\n```\nCreates a new sorted set. Elements are in natural sorted order.",
            "example": "(sorted-set 3 1 2) ; iterates as 1 2 3",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "core",
        "name": "sorted-set-by",
        "description": "Creates a new sorted set using the given comparator for element ordering.",
        "doc": "```phel\n(sorted-set-by comp & xs)\n```\nCreates a new sorted set using the given comparator for element ordering.",
        "signatures": [
            "(sorted-set-by comp & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/collections.phel#L45",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(sorted-set-by comp & xs)\n```\nCreates a new sorted set using the given comparator for element ordering.",
            "example": "(sorted-set-by (fn [a b] (compare b a)) 3 1 2) ; iterates as 3 2 1",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[comp & xs]"
        }
    },
    {
        "namespace": "core",
        "name": "sorted?",
        "description": "Returns true if `coll` is a sorted collection (sorted-map or sorted-set), false otherwise.",
        "doc": "```phel\n(sorted? coll)\n```\nReturns true if `coll` is a sorted collection (sorted-map or sorted-set), false otherwise.",
        "signatures": [
            "(sorted? coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L582",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(sorted? coll)\n```\nReturns true if `coll` is a sorted collection (sorted-map or sorted-set), false otherwise.",
            "example": "(sorted? (sorted-set 1 2 3)) ; => true",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "special-symbol?",
        "description": "Returns true if `s` names a special form.",
        "doc": "```phel\n(special-symbol? s)\n```\nReturns true if `s` names a special form.",
        "signatures": [
            "(special-symbol? s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L276",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(special-symbol? s)\n```\nReturns true if `s` names a special form.",
            "example": "(special-symbol? 'def) ; => true\n(special-symbol? 'map) ; => false",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "core",
        "name": "spit",
        "description": "Writes data to file, returning number of bytest that were written or `nil`\n  on failure. Accepts `opts` map for overriding default PHP file_put_contents\n  arguments, as example to append to file use `{:flags php/FILE_APPEND}`.\n\n  See PHP's [file_put_contents](https://www.php.net/manual/en/function.file-put-contents.php) for more information.",
        "doc": "```phel\n(spit filename data & [opts])\n```\nWrites data to file, returning number of bytest that were written or `nil`\n  on failure. Accepts `opts` map for overriding default PHP file_put_contents\n  arguments, as example to append to file use `{:flags php/FILE_APPEND}`.\n\n  See PHP's [file_put_contents](https://www.php.net/manual/en/function.file-put-contents.php) for more information.",
        "signatures": [
            "(spit filename data & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L109",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(spit filename data & [opts])\n```\nWrites data to file, returning number of bytest that were written or `nil`\n  on failure. Accepts `opts` map for overriding default PHP file_put_contents\n  arguments, as example to append to file use `{:flags php/FILE_APPEND}`.\n\n  See PHP's [file_put_contents](https://www.php.net/manual/en/function.file-put-contents.php) for more information.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[filename data & __phel_1647]"
        }
    },
    {
        "namespace": "core",
        "name": "split-at",
        "description": "Returns a vector of `[(take n coll) (drop n coll)]`.",
        "doc": "```phel\n(split-at n coll)\n```\nReturns a vector of `[(take n coll) (drop n coll)]`.",
        "signatures": [
            "(split-at n coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1187",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(split-at n coll)\n```\nReturns a vector of `[(take n coll) (drop n coll)]`.",
            "example": "(split-at 2 [1 2 3 4 5]) ; => [[1 2] [3 4 5]]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[n coll]"
        }
    },
    {
        "namespace": "core",
        "name": "split-with",
        "description": "Returns a vector of `[(take-while pred coll) (drop-while pred coll)]`.",
        "doc": "```phel\n(split-with f coll)\n```\nReturns a vector of `[(take-while pred coll) (drop-while pred coll)]`.",
        "signatures": [
            "(split-with f coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1194",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(split-with f coll)\n```\nReturns a vector of `[(take-while pred coll) (drop-while pred coll)]`.",
            "example": "(split-with #(< % 4) [1 2 3 4 5 6]) ; => [[1 2 3] [4 5 6]]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[f coll]"
        }
    },
    {
        "namespace": "core",
        "name": "sqrt",
        "description": "Returns the square root of `x` as a float. Negative inputs return\n  `##NaN` (matches PHP's `sqrt`).",
        "doc": "```phel\n(sqrt x)\n```\nReturns the square root of `x` as a float. Negative inputs return\n  `##NaN` (matches PHP's `sqrt`).",
        "signatures": [
            "(sqrt x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L781",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(sqrt x)\n```\nReturns the square root of `x` as a float. Negative inputs return\n  `##NaN` (matches PHP's `sqrt`).",
            "example": "(sqrt 9) ; => 3.0\n(sqrt 2) ; => 1.4142135623730951",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "str",
        "description": "Creates a string by concatenating values together. If no arguments are\nprovided an empty string is returned. Nil is represented as an empty string.\nBooleans are represented as \"true\" or \"false\" (matching Clojure semantics).\nOtherwise, it tries to call `__toString`.",
        "doc": "```phel\n(str & args)\n```\nCreates a string by concatenating values together. If no arguments are\nprovided an empty string is returned. Nil is represented as an empty string.\nBooleans are represented as \"true\" or \"false\" (matching Clojure semantics).\nOtherwise, it tries to call `__toString`.",
        "signatures": [
            "(str & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/strings.phel#L110",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(str & args)\n```\nCreates a string by concatenating values together. If no arguments are\nprovided an empty string is returned. Nil is represented as an empty string.\nBooleans are represented as \"true\" or \"false\" (matching Clojure semantics).\nOtherwise, it tries to call `__toString`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& args]"
        }
    },
    {
        "namespace": "core",
        "name": "str-contains?",
        "description": "Returns true if str contains s.",
        "doc": "```phel\n(str-contains? str s)\n```\nReturns true if str contains s.",
        "signatures": [
            "(str-contains? str s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L326",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(str-contains? str s)\n```\nReturns true if str contains s.",
            "deprecated": "Use phel\\string\\contains?",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[str s]"
        }
    },
    {
        "namespace": "core",
        "name": "string?",
        "description": "Returns true if `x` is a string, false otherwise.",
        "doc": "```phel\n(string? x)\n```\nReturns true if `x` is a string, false otherwise.",
        "signatures": [
            "(string? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L211",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(string? x)\n```\nReturns true if `x` is a string, false otherwise.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "struct?",
        "description": "Returns true if `x` is a struct, false otherwise.",
        "doc": "```phel\n(struct? x)\n```\nReturns true if `x` is a struct, false otherwise.",
        "signatures": [
            "(struct? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L304",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(struct? x)\n```\nReturns true if `x` is a struct, false otherwise.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "subset?",
        "description": "Returns true if `s1` is a subset of `s2`, i.e. every element in `s1` is also in `s2`.",
        "doc": "```phel\n(subset? s1 s2)\n```\nReturns true if `s1` is a subset of `s2`, i.e. every element in `s1` is also in `s2`.",
        "signatures": [
            "(subset? s1 s2)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L64",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(subset? s1 s2)\n```\nReturns true if `s1` is a subset of `s2`, i.e. every element in `s1` is also in `s2`.",
            "example": "(subset? (hash-set 1 2) (hash-set 1 2 3)) ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[s1 s2]"
        }
    },
    {
        "namespace": "core",
        "name": "sum",
        "description": "Returns the sum of all elements is `xs`.",
        "doc": "```phel\n(sum xs)\n```\nReturns the sum of all elements is `xs`.",
        "signatures": [
            "(sum xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L512",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(sum xs)\n```\nReturns the sum of all elements is `xs`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[xs]"
        }
    },
    {
        "namespace": "core",
        "name": "superset?",
        "description": "Returns true if `s1` is a superset of `s2`, i.e. every element in `s2` is also in `s1`.",
        "doc": "```phel\n(superset? s1 s2)\n```\nReturns true if `s1` is a superset of `s2`, i.e. every element in `s2` is also in `s1`.",
        "signatures": [
            "(superset? s1 s2)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L76",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(superset? s1 s2)\n```\nReturns true if `s1` is a superset of `s2`, i.e. every element in `s2` is also in `s1`.",
            "example": "(superset? (hash-set 1 2 3) (hash-set 1 2)) ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[s1 s2]"
        }
    },
    {
        "namespace": "core",
        "name": "swap!",
        "description": "Atomically swaps the value of the atom to `(apply f current-value args)`.\n\n  Returns the new value after the swap.",
        "doc": "```phel\n(swap! variable f & args)\n```\nAtomically swaps the value of the atom to `(apply f current-value args)`.\n\n  Returns the new value after the swap.",
        "signatures": [
            "(swap! variable f & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L86",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(swap! variable f & args)\n```\nAtomically swaps the value of the atom to `(apply f current-value args)`.\n\n  Returns the new value after the swap.",
            "example": "(def counter (atom 0))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[variable f & args]"
        }
    },
    {
        "namespace": "core",
        "name": "symbol",
        "description": "Returns a new symbol for the given name with an optional namespace.\n\n  With one argument, creates a symbol without namespace. Accepts a\n  string, a keyword, another symbol, or a `Var` (in which case the\n  result is a fully qualified symbol naming the var). With two\n  arguments, creates a symbol in the given namespace; a `nil`\n  namespace yields a symbol without a namespace.\n\n  Throws `InvalidArgumentException` for any other input (including\n  functions, numbers, and collections).",
        "doc": "```phel\n(symbol name-or-ns & [name])\n```\nReturns a new symbol for the given name with an optional namespace.\n\n  With one argument, creates a symbol without namespace. Accepts a\n  string, a keyword, another symbol, or a `Var` (in which case the\n  result is a fully qualified symbol naming the var). With two\n  arguments, creates a symbol in the given namespace; a `nil`\n  namespace yields a symbol without a namespace.\n\n  Throws `InvalidArgumentException` for any other input (including\n  functions, numbers, and collections).",
        "signatures": [
            "(symbol name-or-ns & [name])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/strings.phel#L47",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(symbol name-or-ns & [name])\n```\nReturns a new symbol for the given name with an optional namespace.\n\n  With one argument, creates a symbol without namespace. Accepts a\n  string, a keyword, another symbol, or a `Var` (in which case the\n  result is a fully qualified symbol naming the var). With two\n  arguments, creates a symbol in the given namespace; a `nil`\n  namespace yields a symbol without a namespace.\n\n  Throws `InvalidArgumentException` for any other input (including\n  functions, numbers, and collections).",
            "example": "(symbol \"foo\") ; => foo\n(symbol :abc) ; => abc\n(symbol nil \"foo\") ; => foo\n(symbol #'phel.core/+) ; => phel.core/+",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[name-or-ns & __phel_123]"
        }
    },
    {
        "namespace": "core",
        "name": "symbol?",
        "description": "Returns true if `x` is a symbol, false otherwise.",
        "doc": "```phel\n(symbol? x)\n```\nReturns true if `x` is a symbol, false otherwise.",
        "signatures": [
            "(symbol? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L234",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(symbol? x)\n```\nReturns true if `x` is a symbol, false otherwise.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "symmetric-difference",
        "description": "Symmetric difference between multiple sets into a new one.",
        "doc": "```phel\n(symmetric-difference set & sets)\n```\nSymmetric difference between multiple sets into a new one.",
        "signatures": [
            "(symmetric-difference set & sets)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L59",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(symmetric-difference set & sets)\n```\nSymmetric difference between multiple sets into a new one.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[set & sets]"
        }
    },
    {
        "namespace": "core",
        "name": "take",
        "description": "Takes the first `n` elements of `coll`.\n  When called with n only, returns a transducer.",
        "doc": "```phel\n(take n & args)\n```\nTakes the first `n` elements of `coll`.\n  When called with n only, returns a transducer.",
        "signatures": [
            "(take n & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L432",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(take n & args)\n```\nTakes the first `n` elements of `coll`.\n  When called with n only, returns a transducer.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[n & args]"
        }
    },
    {
        "namespace": "core",
        "name": "take-last",
        "description": "Takes the last `n` elements of `coll`.",
        "doc": "```phel\n(take-last n coll)\n```\nTakes the last `n` elements of `coll`.",
        "signatures": [
            "(take-last n coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L463",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(take-last n coll)\n```\nTakes the last `n` elements of `coll`.",
            "example": "(take-last 3 [1 2 3 4 5]) ; => [3 4 5]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[n coll]"
        }
    },
    {
        "namespace": "core",
        "name": "take-nth",
        "description": "Returns every nth item in `coll`. Returns a lazy sequence.\n  When called with n only, returns a transducer.",
        "doc": "```phel\n(take-nth n & args)\n```\nReturns every nth item in `coll`. Returns a lazy sequence.\n  When called with n only, returns a transducer.",
        "signatures": [
            "(take-nth n & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L492",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(take-nth n & args)\n```\nReturns every nth item in `coll`. Returns a lazy sequence.\n  When called with n only, returns a transducer.",
            "example": "(take-nth 2 [0 1 2 3 4 5 6 7 8]) ; => (0 2 4 6 8)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[n & args]"
        }
    },
    {
        "namespace": "core",
        "name": "take-while",
        "description": "Takes all elements at the front of `coll` where `(pred x)` is true. Returns a lazy sequence.\n  When called with pred only, returns a transducer.",
        "doc": "```phel\n(take-while pred & args)\n```\nTakes all elements at the front of `coll` where `(pred x)` is true. Returns a lazy sequence.\n  When called with pred only, returns a transducer.",
        "signatures": [
            "(take-while pred & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L475",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(take-while pred & args)\n```\nTakes all elements at the front of `coll` where `(pred x)` is true. Returns a lazy sequence.\n  When called with pred only, returns a transducer.",
            "example": "(take-while #(< % 5) [1 2 3 4 5 6 3 2 1]) ; => (1 2 3 4)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[pred & args]"
        }
    },
    {
        "namespace": "core",
        "name": "tap>",
        "description": "Sends `x` to every registered tap. Exceptions thrown by individual taps are\n  swallowed so one misbehaving tap does not affect the others. Returns true.",
        "doc": "```phel\n(tap> x)\n```\nSends `x` to every registered tap. Exceptions thrown by individual taps are\n  swallowed so one misbehaving tap does not affect the others. Returns true.",
        "signatures": [
            "(tap> x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/tap.phel#L31",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(tap> x)\n```\nSends `x` to every registered tap. Exceptions thrown by individual taps are\n  swallowed so one misbehaving tap does not affect the others. Returns true.",
            "example": "(add-tap println)\n(tap> {:event :login :user \"alice\"})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "thread-bound?",
        "description": "Returns true when a fiber-local `binding` (or `with-bindings`) frame\n  currently overrides the value of `v` on the calling fiber.",
        "doc": "```phel\n(thread-bound? v)\n```\nReturns true when a fiber-local `binding` (or `with-bindings`) frame\n  currently overrides the value of `v` on the calling fiber.",
        "signatures": [
            "(thread-bound? v)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L134",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(thread-bound? v)\n```\nReturns true when a fiber-local `binding` (or `with-bindings`) frame\n  currently overrides the value of `v` on the calling fiber.",
            "example": "(binding [*foo* 1] (thread-bound? #'*foo*)) ; => true",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[v]"
        }
    },
    {
        "namespace": "core",
        "name": "throw",
        "description": "Throw an exception.",
        "doc": "```phel\n(throw exception)\n```\nThrow an exception.",
        "signatures": [
            "(throw exception)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/control-flow/#try-catch-and-finally",
        "meta": {
            "example": "(throw (php/new \\InvalidArgumentException \"Invalid input\"))"
        }
    },
    {
        "namespace": "core",
        "name": "time",
        "description": "Evaluates expr and prints the time it took. Returns the value of expr.",
        "doc": "```phel\n(time expr)\n```\nEvaluates expr and prints the time it took. Returns the value of expr.",
        "signatures": [
            "(time expr)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L950",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(time expr)\n```\nEvaluates expr and prints the time it took. Returns the value of expr.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[expr]"
        }
    },
    {
        "namespace": "core",
        "name": "to-array",
        "description": "Returns a PHP array containing the elements of `coll`. Accepts any\n  collection (vector, list, set, map, PHP array) or `nil`, which yields\n  an empty PHP array. Matches Clojure's `to-array` for `.cljc` interop \u2014\n  in Phel the result is a plain PHP array since PHP has no `Object[]`.",
        "doc": "```phel\n(to-array coll)\n```\nReturns a PHP array containing the elements of `coll`. Accepts any\n  collection (vector, list, set, map, PHP array) or `nil`, which yields\n  an empty PHP array. Matches Clojure's `to-array` for `.cljc` interop \u2014\n  in Phel the result is a plain PHP array since PHP has no `Object[]`.",
        "signatures": [
            "(to-array coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/arrays.phel#L59",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(to-array coll)\n```\nReturns a PHP array containing the elements of `coll`. Accepts any\n  collection (vector, list, set, map, PHP array) or `nil`, which yields\n  an empty PHP array. Matches Clojure's `to-array` for `.cljc` interop \u2014\n  in Phel the result is a plain PHP array since PHP has no `Object[]`.",
            "example": "(to-array [1 2 3]) ; => a PHP array [1, 2, 3]\n(to-array nil) ; => a PHP array []",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "to-php-array",
        "description": "Creates a PHP Array from a sequential data structure.",
        "doc": "Creates a PHP Array from a sequential data structure.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/defs.phel#L22",
        "docUrl": "",
        "meta": {
            "doc": "Creates a PHP Array from a sequential data structure.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "transduce",
        "description": "Reduce with a transformation of `f` (xf). If init is not supplied,\n  `(f)` will be called to produce it. `f` should be a reducing function\n  that returns the initial value when called with no arguments.",
        "doc": "```phel\n(transduce xform f & args)\n```\nReduce with a transformation of `f` (xf). If init is not supplied,\n  `(f)` will be called to produce it. `f` should be a reducing function\n  that returns the initial value when called with no arguments.",
        "signatures": [
            "(transduce xform f & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transducers.phel#L86",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(transduce xform f & args)\n```\nReduce with a transformation of `f` (xf). If init is not supplied,\n  `(f)` will be called to produce it. `f` should be a reducing function\n  that returns the initial value when called with no arguments.",
            "example": "(transduce (map inc) + [1 2 3]) ; => 9",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[xform f & args]"
        }
    },
    {
        "namespace": "core",
        "name": "transient",
        "description": "Converts a persistent collection to a transient collection for efficient updates.\n\n  Transient collections provide faster performance for multiple sequential updates.\n  Use `persistent` to convert back.",
        "doc": "```phel\n(transient coll)\n```\nConverts a persistent collection to a transient collection for efficient updates.\n\n  Transient collections provide faster performance for multiple sequential updates.\n  Use `persistent` to convert back.",
        "signatures": [
            "(transient coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transients.phel#L18",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(transient coll)\n```\nConverts a persistent collection to a transient collection for efficient updates.\n\n  Transient collections provide faster performance for multiple sequential updates.\n  Use `persistent` to convert back.",
            "example": "(def t (transient []))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "tree-seq",
        "description": "Returns a vector of the nodes in the tree, via a depth-first walk.\n  branch? is a function with one argument that returns true if the given node\n  has children.\n  children must be a function with one argument that returns the children of the node.\n  root the root node of the tree.",
        "doc": "```phel\n(tree-seq branch? children root)\n```\nReturns a vector of the nodes in the tree, via a depth-first walk.\n  branch? is a function with one argument that returns true if the given node\n  has children.\n  children must be a function with one argument that returns the children of the node.\n  root the root node of the tree.",
        "signatures": [
            "(tree-seq branch? children root)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L231",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(tree-seq branch? children root)\n```\nReturns a vector of the nodes in the tree, via a depth-first walk.\n  branch? is a function with one argument that returns true if the given node\n  has children.\n  children must be a function with one argument that returns the children of the node.\n  root the root node of the tree.",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[branch? children root]"
        }
    },
    {
        "namespace": "core",
        "name": "true?",
        "description": "Checks if value is exactly true (not just truthy).",
        "doc": "```phel\n(true? x)\n```\nChecks if value is exactly true (not just truthy).",
        "signatures": [
            "(true? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L303",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(true? x)\n```\nChecks if value is exactly true (not just truthy).",
            "example": "(true? 1) ; => false",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "truthy?",
        "description": "Checks if `x` is truthy. Same as `x == true` in PHP.",
        "doc": "```phel\n(truthy? x)\n```\nChecks if `x` is truthy. Same as `x == true` in PHP.",
        "signatures": [
            "(truthy? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/booleans.phel#L309",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(truthy? x)\n```\nChecks if `x` is truthy. Same as `x == true` in PHP.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "try",
        "description": "All expressions are evaluated and if no exception is thrown the value of the last expression is returned. If an exception occurs and a matching catch-clause is provided, its expression is evaluated and the value is returned. If no matching catch-clause can be found the exception is propagated out of the function. Before returning normally or abnormally the optionally finally-clause is evaluated.",
        "doc": "```phel\n(try expr* catch-clause* finally-clause?)\n```\nAll expressions are evaluated and if no exception is thrown the value of the last expression is returned. If an exception occurs and a matching catch-clause is provided, its expression is evaluated and the value is returned. If no matching catch-clause can be found the exception is propagated out of the function. Before returning normally or abnormally the optionally finally-clause is evaluated.",
        "signatures": [
            "(try expr* catch-clause* finally-clause?)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/control-flow/#try-catch-and-finally",
        "meta": {
            "example": "(try (/ 1 0) (catch \\Exception e \"error\"))"
        }
    },
    {
        "namespace": "core",
        "name": "type",
        "description": "Returns the type of `x`. The following types can be returned:\n\n* `:vector`\n* `:list`\n* `:struct`\n* `:hash-map`\n* `:map-entry`\n* `:set`\n* `:keyword`\n* `:symbol`\n* `:atom`\n* `:var`\n* `:int`\n* `:float`\n* `:ratio`\n* `:bigint`\n* `:bigdec`\n* `:uuid`\n* `:php/class`\n* `:queue`\n* `:string`\n* `:nil`\n* `:boolean`\n* `:function`\n* `:php/array`\n* `:php/resource`\n* `:php/object`\n* `:unknown`",
        "doc": "```phel\n(type x)\n```\nReturns the type of `x`. The following types can be returned:\n\n* `:vector`\n* `:list`\n* `:struct`\n* `:hash-map`\n* `:map-entry`\n* `:set`\n* `:keyword`\n* `:symbol`\n* `:atom`\n* `:var`\n* `:int`\n* `:float`\n* `:ratio`\n* `:bigint`\n* `:bigdec`\n* `:uuid`\n* `:php/class`\n* `:queue`\n* `:string`\n* `:nil`\n* `:boolean`\n* `:function`\n* `:php/array`\n* `:php/resource`\n* `:php/object`\n* `:unknown`",
        "signatures": [
            "(type x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L39",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(type x)\n```\nReturns the type of `x`. The following types can be returned:\n\n* `:vector`\n* `:list`\n* `:struct`\n* `:hash-map`\n* `:map-entry`\n* `:set`\n* `:keyword`\n* `:symbol`\n* `:atom`\n* `:var`\n* `:int`\n* `:float`\n* `:ratio`\n* `:bigint`\n* `:bigdec`\n* `:uuid`\n* `:php/class`\n* `:queue`\n* `:string`\n* `:nil`\n* `:boolean`\n* `:function`\n* `:php/array`\n* `:php/resource`\n* `:php/object`\n* `:unknown`",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "underive",
        "description": "Removes a parent/child relationship.\n  With two arguments, mutates the global hierarchy and returns nil.\n  With a hierarchy `h`, returns a new hierarchy without the relationship;\n  the original is unchanged.",
        "doc": "```phel\n(underive child parent)\n(underive h child parent)\n```\nRemoves a parent/child relationship.\n  With two arguments, mutates the global hierarchy and returns nil.\n  With a hierarchy `h`, returns a new hierarchy without the relationship;\n  the original is unchanged.",
        "signatures": [
            "(underive child parent)",
            "(underive h child parent)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L258",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(underive child parent)\n(underive h child parent)\n```\nRemoves a parent/child relationship.\n  With two arguments, mutates the global hierarchy and returns nil.\n  With a hierarchy `h`, returns a new hierarchy without the relationship;\n  the original is unchanged.",
            "example": "(underive :square :shape)",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "max-arity": 3,
            "arglists": "([child parent] [h child parent])"
        }
    },
    {
        "namespace": "core",
        "name": "union",
        "description": "Union multiple sets into a new one.",
        "doc": "```phel\n(union & sets)\n```\nUnion multiple sets into a new one.",
        "signatures": [
            "(union & sets)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L16",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(union & sets)\n```\nUnion multiple sets into a new one.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& sets]"
        }
    },
    {
        "namespace": "core",
        "name": "unquote",
        "description": "Values that should be evaluated in a macro are marked with the unquote function. Shortcut: ,",
        "doc": "```phel\n(unquote my-sym) ; Evaluates to my-sym\n,my-sym          ; Shorthand for (same as above)\n```\nValues that should be evaluated in a macro are marked with the unquote function. Shortcut: `,`",
        "signatures": [
            "(unquote expr)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/macros/#quasiquote",
        "meta": {
            "example": "`(+ 1 ,(+ 2 3)) ; => (+ 1 5)"
        }
    },
    {
        "namespace": "core",
        "name": "unquote-splicing",
        "description": "Values that should be evaluated in a macro are marked with the unquote function. Shortcut: ,@",
        "doc": "```phel\n(unquote-splicing my-sym) ; Evaluates to my-sym\n,@my-sym                  ; Shorthand for (same as above)\n```\nValues that should be evaluated in a macro are marked with the unquote function. Shortcut: `,@`",
        "signatures": [
            "(unquote-splicing expr)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/macros/#quasiquote",
        "meta": {
            "example": "`(+ ,@[1 2 3]) ; => (+ 1 2 3)"
        }
    },
    {
        "namespace": "core",
        "name": "unreduced",
        "description": "If `x` is Reduced, returns the unwrapped value; otherwise returns `x`.",
        "doc": "```phel\n(unreduced x)\n```\nIf `x` is Reduced, returns the unwrapped value; otherwise returns `x`.",
        "signatures": [
            "(unreduced x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transducers.phel#L30",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(unreduced x)\n```\nIf `x` is Reduced, returns the unwrapped value; otherwise returns `x`.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "unset",
        "description": "Returns `ds` without `key`.",
        "doc": "```phel\n(unset ds key)\n```\nReturns `ds` without `key`.",
        "signatures": [
            "(unset ds key)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/sequences.phel#L302",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(unset ds key)\n```\nReturns `ds` without `key`.",
            "deprecated": "0.25.0",
            "superseded-by": "dissoc",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ds key]"
        }
    },
    {
        "namespace": "core",
        "name": "unset-in",
        "description": "Removes a value from a nested data structure.",
        "doc": "```phel\n(unset-in ds ks)\n```\nRemoves a value from a nested data structure.",
        "signatures": [
            "(unset-in ds ks)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L348",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(unset-in ds ks)\n```\nRemoves a value from a nested data structure.",
            "deprecated": "0.25.0",
            "superseded-by": "dissoc-in",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ds ks]"
        }
    },
    {
        "namespace": "core",
        "name": "update",
        "description": "Updates a value in a datastructure by applying `f` to the current value.",
        "doc": "```phel\n(update ds k f & args)\n```\nUpdates a value in a datastructure by applying `f` to the current value.",
        "signatures": [
            "(update ds k f & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L319",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(update ds k f & args)\n```\nUpdates a value in a datastructure by applying `f` to the current value.",
            "example": "(update {:count 5} :count inc) ; => {:count 6}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": true,
            "arglists": "[ds k f & args]"
        }
    },
    {
        "namespace": "core",
        "name": "update-in",
        "description": "Updates a value in a nested data structure by applying `f` to the value at path.",
        "doc": "```phel\n(update-in ds [k & ks] f & args)\n```\nUpdates a value in a nested data structure by applying `f` to the value at path.",
        "signatures": [
            "(update-in ds [k & ks] f & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L326",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(update-in ds [k & ks] f & args)\n```\nUpdates a value in a nested data structure by applying `f` to the value at path.",
            "example": "(update-in {:a {:b 5}} [:a :b] inc) ; => {:a {:b 6}}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": true,
            "arglists": "[ds __phel_969 f & args]"
        }
    },
    {
        "namespace": "core",
        "name": "update-keys",
        "description": "Returns a map with `f` applied to each key.",
        "doc": "```phel\n(update-keys m f)\n```\nReturns a map with `f` applied to each key.",
        "signatures": [
            "(update-keys m f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L297",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(update-keys m f)\n```\nReturns a map with `f` applied to each key.",
            "example": "(update-keys {:a 1 :b 2} name) ; => {\"a\" 1 \"b\" 2}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[m f]"
        }
    },
    {
        "namespace": "core",
        "name": "update-vals",
        "description": "Returns a map with `f` applied to each value.",
        "doc": "```phel\n(update-vals m f)\n```\nReturns a map with `f` applied to each value.",
        "signatures": [
            "(update-vals m f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/fns-sets.phel#L307",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(update-vals m f)\n```\nReturns a map with `f` applied to each value.",
            "example": "(update-vals {:a 1 :b 2} inc) ; => {:a 2 :b 3}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[m f]"
        }
    },
    {
        "namespace": "core",
        "name": "uuid-nil?",
        "description": "Returns true if `x` is the nil UUID (all zeros), false otherwise.",
        "doc": "```phel\n(uuid-nil? x)\n```\nReturns true if `x` is the nil UUID (all zeros), false otherwise.",
        "signatures": [
            "(uuid-nil? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/uuid.phel#L54",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(uuid-nil? x)\n```\nReturns true if `x` is the nil UUID (all zeros), false otherwise.",
            "example": "(uuid-nil? #uuid \"00000000-0000-0000-0000-000000000000\") ; => true",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "uuid-variant",
        "description": "Returns a keyword describing the variant field of UUID `x`: `:ncs`,\n  `:rfc-4122`, `:microsoft`, or `:reserved`. Returns nil if `x` is not a\n  `UUID` value.",
        "doc": "```phel\n(uuid-variant x)\n```\nReturns a keyword describing the variant field of UUID `x`: `:ncs`,\n  `:rfc-4122`, `:microsoft`, or `:reserved`. Returns nil if `x` is not a\n  `UUID` value.",
        "signatures": [
            "(uuid-variant x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/uuid.phel#L71",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(uuid-variant x)\n```\nReturns a keyword describing the variant field of UUID `x`: `:ncs`,\n  `:rfc-4122`, `:microsoft`, or `:reserved`. Returns nil if `x` is not a\n  `UUID` value.",
            "example": "(uuid-variant #uuid \"550e8400-e29b-41d4-a716-446655440000\") ; => :rfc-4122",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "uuid-version",
        "description": "Returns the version digit (1-5) encoded in UUID `x`, or nil if `x` is\n  not a `UUID` value.",
        "doc": "```phel\n(uuid-version x)\n```\nReturns the version digit (1-5) encoded in UUID `x`, or nil if `x` is\n  not a `UUID` value.",
        "signatures": [
            "(uuid-version x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/uuid.phel#L62",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(uuid-version x)\n```\nReturns the version digit (1-5) encoded in UUID `x`, or nil if `x` is\n  not a `UUID` value.",
            "example": "(uuid-version #uuid \"550e8400-e29b-41d4-a716-446655440000\") ; => 4",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "uuid=",
        "description": "Returns true if `a` and `b` are `Phel\\Lang\\UUID` values with the\n  same canonical form. Strings (or anything else) are rejected even if\n  their textual content would match \u2014 coerce with `parse-uuid` first.",
        "doc": "```phel\n(uuid= a b)\n```\nReturns true if `a` and `b` are `Phel\\Lang\\UUID` values with the\n  same canonical form. Strings (or anything else) are rejected even if\n  their textual content would match \u2014 coerce with `parse-uuid` first.",
        "signatures": [
            "(uuid= a b)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/uuid.phel#L44",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(uuid= a b)\n```\nReturns true if `a` and `b` are `Phel\\Lang\\UUID` values with the\n  same canonical form. Strings (or anything else) are rejected even if\n  their textual content would match \u2014 coerce with `parse-uuid` first.",
            "example": "(uuid= #uuid \"550e8400-e29b-41d4-a716-446655440000\"\n         #uuid \"550E8400-E29B-41D4-A716-446655440000\") ; => true",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[a b]"
        }
    },
    {
        "namespace": "core",
        "name": "uuid?",
        "description": "Returns true if `x` is a `Phel\\Lang\\UUID` value, false otherwise.\n  Canonical UUID strings are rejected \u2014 wrap them with `parse-uuid` (or\n  the `#uuid \"...\"` literal) to obtain a typed value.",
        "doc": "```phel\n(uuid? x)\n```\nReturns true if `x` is a `Phel\\Lang\\UUID` value, false otherwise.\n  Canonical UUID strings are rejected \u2014 wrap them with `parse-uuid` (or\n  the `#uuid \"...\"` literal) to obtain a typed value.",
        "signatures": [
            "(uuid? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/uuid.phel#L13",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(uuid? x)\n```\nReturns true if `x` is a `Phel\\Lang\\UUID` value, false otherwise.\n  Canonical UUID strings are rejected \u2014 wrap them with `parse-uuid` (or\n  the `#uuid \"...\"` literal) to obtain a typed value.",
            "example": "(uuid? #uuid \"550e8400-e29b-41d4-a716-446655440000\") ; => true",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "val",
        "description": "Returns the value of a map entry. Accepts a typed\n  `Phel\\Lang\\Collections\\Map\\MapEntry` value or a 2-element vector\n  `[key value]`.",
        "doc": "```phel\n(val entry)\n```\nReturns the value of a map entry. Accepts a typed\n  `Phel\\Lang\\Collections\\Map\\MapEntry` value or a 2-element vector\n  `[key value]`.",
        "signatures": [
            "(val entry)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L717",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(val entry)\n```\nReturns the value of a map entry. Accepts a typed\n  `Phel\\Lang\\Collections\\Map\\MapEntry` value or a 2-element vector\n  `[key value]`.",
            "example": "(val (first (pairs {:a 1}))) ; => 1",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[entry]"
        }
    },
    {
        "namespace": "core",
        "name": "vals",
        "description": "Returns a sequence of all values in a map, or `nil` when the map is `nil`\n  or empty.",
        "doc": "```phel\n(vals coll)\n```\nReturns a sequence of all values in a map, or `nil` when the map is `nil`\n  or empty.",
        "signatures": [
            "(vals coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L689",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(vals coll)\n```\nReturns a sequence of all values in a map, or `nil` when the map is `nil`\n  or empty.",
            "example": "(vals {:a 1 :b 2}) ; => (1 2)\n(vals nil) ; => nil",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "values",
        "description": "Returns a sequence of all values in a map.",
        "doc": "```phel\n(values coll)\n```\nReturns a sequence of all values in a map.",
        "signatures": [
            "(values coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L728",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(values coll)\n```\nReturns a sequence of all values in a map.",
            "deprecated": "0.32.0",
            "superseded-by": "vals",
            "example": "(values {:a 1 :b 2}) ; => (1 2)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "var-get",
        "description": "Resolves the value bound to a `Var` or to a fully-qualified symbol.\n\n  Accepts a `Var` instance (typically from `(var sym)` or `#'sym`) and\n  returns its current root value. Accepts a fully-qualified symbol and\n  reads the matching definition from the registry; tries the symbol name\n  verbatim first, then the encoded form, so it pairs with both `def` and\n  `intern`.\n\n  With one argument, returns nil when the symbol is not defined. With two\n  arguments, returns `not-found` instead, which lets callers disambiguate a\n  stored nil from a missing definition. Returns `not-found` for non-symbol\n  or unqualified inputs.",
        "doc": "```phel\n(var-get x)\n(var-get x not-found)\n```\nResolves the value bound to a `Var` or to a fully-qualified symbol.\n\n  Accepts a `Var` instance (typically from `(var sym)` or `#'sym`) and\n  returns its current root value. Accepts a fully-qualified symbol and\n  reads the matching definition from the registry; tries the symbol name\n  verbatim first, then the encoded form, so it pairs with both `def` and\n  `intern`.\n\n  With one argument, returns nil when the symbol is not defined. With two\n  arguments, returns `not-found` instead, which lets callers disambiguate a\n  stored nil from a missing definition. Returns `not-found` for non-symbol\n  or unqualified inputs.",
        "signatures": [
            "(var-get x)",
            "(var-get x not-found)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/ns.phel#L120",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(var-get x)\n(var-get x not-found)\n```\nResolves the value bound to a `Var` or to a fully-qualified symbol.\n\n  Accepts a `Var` instance (typically from `(var sym)` or `#'sym`) and\n  returns its current root value. Accepts a fully-qualified symbol and\n  reads the matching definition from the registry; tries the symbol name\n  verbatim first, then the encoded form, so it pairs with both `def` and\n  `intern`.\n\n  With one argument, returns nil when the symbol is not defined. With two\n  arguments, returns `not-found` instead, which lets callers disambiguate a\n  stored nil from a missing definition. Returns `not-found` for non-symbol\n  or unqualified inputs.",
            "example": "(var-get #'phel.core/map) ; => <fn>\n(var-get (intern \"user\" \"x\" 42)) ; => 42\n(var-get 'user/missing ::none) ; => ::none",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([x] [x not-found])"
        }
    },
    {
        "namespace": "core",
        "name": "var-set",
        "description": "Sets the value of the topmost active fiber-local binding frame for\n  `v` to `val`. Throws when no `binding` (or `with-bindings`) frame is\n  currently overriding `v`. Returns `val`.",
        "doc": "```phel\n(var-set v val)\n```\nSets the value of the topmost active fiber-local binding frame for\n  `v` to `val`. Throws when no `binding` (or `with-bindings`) frame is\n  currently overriding `v`. Returns `val`.",
        "signatures": [
            "(var-set v val)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L147",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(var-set v val)\n```\nSets the value of the topmost active fiber-local binding frame for\n  `v` to `val`. Throws when no `binding` (or `with-bindings`) frame is\n  currently overriding `v`. Returns `val`.",
            "example": "(def ^:dynamic *x* 0)\n(binding [*x* 1] (var-set #'*x* 2) *x*) ; => 2",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[v val]"
        }
    },
    {
        "namespace": "core",
        "name": "var?",
        "description": "Returns true if the given value is a `Var`, the first-class handle to a\n  global definition produced by `(var sym)` and `#'sym`.",
        "doc": "```phel\n(var? x)\n```\nReturns true if the given value is a `Var`, the first-class handle to a\n  global definition produced by `(var sym)` and `#'sym`.",
        "signatures": [
            "(var? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/atoms.phel#L45",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(var? x)\n```\nReturns true if the given value is a `Var`, the first-class handle to a\n  global definition produced by `(var sym)` and `#'sym`.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "vary-meta",
        "description": "Returns an object with (apply f (meta obj) args) as its new metadata.",
        "doc": "Returns an object with (apply f (meta obj) args) as its new metadata.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/meta.phel#L77",
        "docUrl": "",
        "meta": {
            "doc": "Returns an object with (apply f (meta obj) args) as its new metadata.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[obj f & args]"
        }
    },
    {
        "namespace": "core",
        "name": "vec",
        "description": "Coerces a collection to a vector. For hash-maps and structs, entries\n  are returned as 2-element `[key value]` vectors, matching Clojure.",
        "doc": "```phel\n(vec coll)\n```\nCoerces a collection to a vector. For hash-maps and structs, entries\n  are returned as 2-element `[key value]` vectors, matching Clojure.",
        "signatures": [
            "(vec coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L257",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(vec coll)\n```\nCoerces a collection to a vector. For hash-maps and structs, entries\n  are returned as 2-element `[key value]` vectors, matching Clojure.",
            "example": "(vec {:a 1 :b 2}) ; => [[:a 1] [:b 2]]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "core",
        "name": "vector",
        "description": "Creates a new vector. If no argument is provided, an empty vector is created.",
        "doc": "```phel\n(vector 1 2 3) ; => [1 2 3]\n```\nCreates a new vector. If no argument is provided, an empty vector is created. Shortcut: []",
        "signatures": [
            "(vector & xs)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/data-structures/#vectors",
        "meta": {
            "example": "(vector 1 2 3) ; => [1 2 3]"
        }
    },
    {
        "namespace": "core",
        "name": "vector?",
        "description": "Returns true if `x` is a vector. Map entries returned by iterating a\n  hash map (`(first {:a 1})`) are vector-shaped two-element values, so\n  this predicate also accepts the typed `MapEntry`.",
        "doc": "```phel\n(vector? x)\n```\nReturns true if `x` is a vector. Map entries returned by iterating a\n  hash map (`(first {:a 1})`) are vector-shaped two-element values, so\n  this predicate also accepts the typed `MapEntry`.",
        "signatures": [
            "(vector? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/predicates.phel#L322",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(vector? x)\n```\nReturns true if `x` is a vector. Map entries returned by iterating a\n  hash map (`(first {:a 1})`) are vector-shaped two-element values, so\n  this predicate also accepts the typed `MapEntry`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "volatile!",
        "description": "Creates a volatile mutable reference with initial value `val`.\n  Use for transducer state that needs fast mutation without watches.",
        "doc": "```phel\n(volatile! val)\n```\nCreates a volatile mutable reference with initial value `val`.\n  Use for transducer state that needs fast mutation without watches.",
        "signatures": [
            "(volatile! val)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transducers.phel#L103",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(volatile! val)\n```\nCreates a volatile mutable reference with initial value `val`.\n  Use for transducer state that needs fast mutation without watches.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[val]"
        }
    },
    {
        "namespace": "core",
        "name": "volatile?",
        "description": "Returns true if `x` is a Volatile.",
        "doc": "```phel\n(volatile? x)\n```\nReturns true if `x` is a Volatile.",
        "signatures": [
            "(volatile? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transducers.phel#L123",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(volatile? x)\n```\nReturns true if `x` is a Volatile.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]",
            "tag": "bool"
        }
    },
    {
        "namespace": "core",
        "name": "vreset!",
        "description": "Sets the value of volatile `vol` to `val`. Returns `val`.",
        "doc": "```phel\n(vreset! vol val)\n```\nSets the value of volatile `vol` to `val`. Returns `val`.",
        "signatures": [
            "(vreset! vol val)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transducers.phel#L110",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(vreset! vol val)\n```\nSets the value of volatile `vol` to `val`. Returns `val`.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[vol val]"
        }
    },
    {
        "namespace": "core",
        "name": "vswap!",
        "description": "Applies `f` to the current value of volatile `vol` plus `args`,\n  and sets the new value. Returns the new value.",
        "doc": "```phel\n(vswap! vol f & args)\n```\nApplies `f` to the current value of volatile `vol` plus `args`,\n  and sets the new value. Returns the new value.",
        "signatures": [
            "(vswap! vol f & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/transducers.phel#L116",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(vswap! vol f & args)\n```\nApplies `f` to the current value of volatile `vol` plus `args`,\n  and sets the new value. Returns the new value.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[vol f & args]"
        }
    },
    {
        "namespace": "core",
        "name": "when",
        "description": "Evaluates body if test is true, otherwise returns nil.",
        "doc": "```phel\n(when test & body)\n```\nEvaluates body if test is true, otherwise returns nil.",
        "signatures": [
            "(when test & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/control.phel#L20",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(when test & body)\n```\nEvaluates body if test is true, otherwise returns nil.",
            "example": "(when (> 10 5) \"greater\") ; => \"greater\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[test & body]"
        }
    },
    {
        "namespace": "core",
        "name": "when-first",
        "description": "Binds name to the first element of coll. When the collection is non-empty\n  (first returns non-nil), evaluates body with the binding.",
        "doc": "```phel\n(when-first bindings & body)\n```\nBinds name to the first element of coll. When the collection is non-empty\n  (first returns non-nil), evaluates body with the binding.",
        "signatures": [
            "(when-first bindings & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L899",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(when-first bindings & body)\n```\nBinds name to the first element of coll. When the collection is non-empty\n  (first returns non-nil), evaluates body with the binding.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[bindings & body]"
        }
    },
    {
        "namespace": "core",
        "name": "when-let",
        "description": "When test is true, evaluates body with binding-form bound to the value of test",
        "doc": "```phel\n(when-let bindings & body)\n```\nWhen test is true, evaluates body with binding-form bound to the value of test",
        "signatures": [
            "(when-let bindings & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L849",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(when-let bindings & body)\n```\nWhen test is true, evaluates body with binding-form bound to the value of test",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[bindings & body]"
        }
    },
    {
        "namespace": "core",
        "name": "when-not",
        "description": "Evaluates body if test is false, otherwise returns nil.",
        "doc": "```phel\n(when-not test & body)\n```\nEvaluates body if test is false, otherwise returns nil.",
        "signatures": [
            "(when-not test & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/control.phel#L26",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(when-not test & body)\n```\nEvaluates body if test is false, otherwise returns nil.",
            "example": "(when-not (empty? [1 2 3]) \"has items\") ; => \"has items\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[test & body]"
        }
    },
    {
        "namespace": "core",
        "name": "when-some",
        "description": "Binds name to the value of test. When test is not nil, evaluates body with\n  binding-form bound to the value of test. Unlike when-let, false and 0 are not\n  treated as falsy \u2014 only nil causes the body to be skipped.",
        "doc": "```phel\n(when-some bindings & body)\n```\nBinds name to the value of test. When test is not nil, evaluates body with\n  binding-form bound to the value of test. Unlike when-let, false and 0 are not\n  treated as falsy \u2014 only nil causes the body to be skipped.",
        "signatures": [
            "(when-some bindings & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/protocols.phel#L891",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(when-some bindings & body)\n```\nBinds name to the value of test. When test is not nil, evaluates body with\n  binding-form bound to the value of test. Unlike when-let, false and 0 are not\n  treated as falsy \u2014 only nil causes the body to be skipped.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[bindings & body]"
        }
    },
    {
        "namespace": "core",
        "name": "with-bindings",
        "description": "Like `binding` but takes a map of `Var -> value` instead of a binding\n  vector. Same dynamic-only enforcement: throws when any key resolves\n  to a non-dynamic var.",
        "doc": "```phel\n(with-bindings m & body)\n```\nLike `binding` but takes a map of `Var -> value` instead of a binding\n  vector. Same dynamic-only enforcement: throws when any key resolves\n  to a non-dynamic var.",
        "signatures": [
            "(with-bindings m & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L432",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(with-bindings m & body)\n```\nLike `binding` but takes a map of `Var -> value` instead of a binding\n  vector. Same dynamic-only enforcement: throws when any key resolves\n  to a non-dynamic var.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[m & body]"
        }
    },
    {
        "namespace": "core",
        "name": "with-meta",
        "description": "Returns `obj` with the given metadata `meta` attached.",
        "doc": "Returns `obj` with the given metadata `meta` attached.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/meta.phel#L64",
        "docUrl": "",
        "meta": {
            "doc": "Returns `obj` with the given metadata `meta` attached.",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[obj meta]"
        }
    },
    {
        "namespace": "core",
        "name": "with-output-buffer",
        "description": "Everything that is printed inside the body will be stored in a buffer.\n   The result of the buffer is returned.",
        "doc": "```phel\n(with-output-buffer & body)\n```\nEverything that is printed inside the body will be stored in a buffer.\n   The result of the buffer is returned.",
        "signatures": [
            "(with-output-buffer & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L18",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(with-output-buffer & body)\n```\nEverything that is printed inside the body will be stored in a buffer.\n   The result of the buffer is returned.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& body]"
        }
    },
    {
        "namespace": "core",
        "name": "with-redefs",
        "description": "Temporarily replaces the root values of vars while executing `body`.\n\n  Accepts any var, dynamic or not. The previous root values are\n  captured before `body` runs and restored on exit, including when\n  `body` throws. The replacement is process-global: every fiber sees\n  the new root for the duration of the body, which makes this a\n  convenient mocking primitive for tests but unsafe for concurrent\n  production code. Use `binding` for fiber-local rebinding of\n  `^:dynamic` vars.",
        "doc": "```phel\n(with-redefs bindings & body)\n```\nTemporarily replaces the root values of vars while executing `body`.\n\n  Accepts any var, dynamic or not. The previous root values are\n  captured before `body` runs and restored on exit, including when\n  `body` throws. The replacement is process-global: every fiber sees\n  the new root for the duration of the body, which makes this a\n  convenient mocking primitive for tests but unsafe for concurrent\n  production code. Use `binding` for fiber-local rebinding of\n  `^:dynamic` vars.",
        "signatures": [
            "(with-redefs bindings & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/io.phel#L419",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(with-redefs bindings & body)\n```\nTemporarily replaces the root values of vars while executing `body`.\n\n  Accepts any var, dynamic or not. The previous root values are\n  captured before `body` runs and restored on exit, including when\n  `body` throws. The replacement is process-global: every fiber sees\n  the new root for the duration of the body, which makes this a\n  convenient mocking primitive for tests but unsafe for concurrent\n  production code. Use `binding` for fiber-local rebinding of\n  `^:dynamic` vars.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[bindings & body]"
        }
    },
    {
        "namespace": "core",
        "name": "zero?",
        "description": "Checks if `x` is zero.",
        "doc": "```phel\n(zero? x)\n```\nChecks if `x` is zero.",
        "signatures": [
            "(zero? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/math.phel#L265",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(zero? x)\n```\nChecks if `x` is zero.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "core",
        "name": "zipcoll",
        "description": "Creates a map from two sequential data structures. Returns a new map.",
        "doc": "```phel\n(zipcoll a b)\n```\nCreates a map from two sequential data structures. Returns a new map.",
        "signatures": [
            "(zipcoll a b)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1128",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(zipcoll a b)\n```\nCreates a map from two sequential data structures. Returns a new map.",
            "example": "(zipcoll [:a :b :c] [1 2 3]) ; => {:a 1 :b 2 :c 3}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[a b]"
        }
    },
    {
        "namespace": "core",
        "name": "zipmap",
        "description": "Returns a new map with the keys mapped to the corresponding values.\n\n  Stops when the shorter of `keys` or `vals` is exhausted.\n  Works safely with infinite lazy sequences.",
        "doc": "```phel\n(zipmap keys vals)\n```\nReturns a new map with the keys mapped to the corresponding values.\n\n  Stops when the shorter of `keys` or `vals` is exhausted.\n  Works safely with infinite lazy sequences.",
        "signatures": [
            "(zipmap keys vals)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/core/seq-fns.phel#L1113",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(zipmap keys vals)\n```\nReturns a new map with the keys mapped to the corresponding values.\n\n  Stops when the shorter of `keys` or `vals` is exhausted.\n  Works safely with infinite lazy sequences.",
            "example": "(zipmap [:a :b :c] [1 2 3]) ; => {:a 1 :b 2 :c 3}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[keys vals]"
        }
    },
    {
        "namespace": "html",
        "name": "html/doctype",
        "description": "Returns an HTML doctype declaration.",
        "doc": "```phel\n(doctype type)\n```\nReturns an HTML doctype declaration.",
        "signatures": [
            "(doctype type)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/html.phel#L167",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(doctype type)\n```\nReturns an HTML doctype declaration.",
            "example": "(doctype :html5) ; => \"<!DOCTYPE html>\\n\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[type]"
        }
    },
    {
        "namespace": "html",
        "name": "html/escape-html",
        "description": "Escapes HTML special characters to prevent XSS.",
        "doc": "```phel\n(escape-html s)\n```\nEscapes HTML special characters to prevent XSS.",
        "signatures": [
            "(escape-html s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/html.phel#L6",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(escape-html s)\n```\nEscapes HTML special characters to prevent XSS.",
            "example": "(escape-html \"<div>\") ; => \"&lt;div&gt;\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "html",
        "name": "html/html",
        "description": "Compiles Phel vectors to HTML strings.",
        "doc": "```phel\n(html & content)\n```\nCompiles Phel vectors to HTML strings.",
        "signatures": [
            "(html & content)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/html.phel#L152",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(html & content)\n```\nCompiles Phel vectors to HTML strings.",
            "example": "(html [:div \"Hello\"]) ; => \"<div>Hello</div>\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& content]"
        }
    },
    {
        "namespace": "html",
        "name": "html/raw-string",
        "description": "Creates a new raw-string struct.",
        "doc": "```phel\n(raw-string s)\n```\nCreates a new raw-string struct.",
        "signatures": [
            "(raw-string s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/html.phel#L4",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(raw-string s)\n```\nCreates a new raw-string struct.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "html",
        "name": "html/raw-string?",
        "description": "Checks if `x` is an instance of the raw-string struct.",
        "doc": "```phel\n(raw-string? x)\n```\nChecks if `x` is an instance of the raw-string struct.",
        "signatures": [
            "(raw-string? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/html.phel#L4",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(raw-string? x)\n```\nChecks if `x` is an instance of the raw-string struct.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "http",
        "name": "http/emit-response",
        "description": "Emits the response by sending headers and outputting the body.",
        "doc": "```phel\n(emit-response response)\n```\nEmits the response by sending headers and outputting the body.",
        "signatures": [
            "(emit-response response)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L394",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(emit-response response)\n```\nEmits the response by sending headers and outputting the body.",
            "example": "(emit-response (response-from-string \"Hello World\")) ; => nil",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[response]"
        }
    },
    {
        "namespace": "http",
        "name": "http/files-from-globals",
        "description": "Extracts the files from `$_FILES` and normalizes them to a map of \"uploaded-file\".",
        "doc": "```phel\n(files-from-globals & [files])\n```\nExtracts the files from `$_FILES` and normalizes them to a map of \"uploaded-file\".",
        "signatures": [
            "(files-from-globals & [files])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L145",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(files-from-globals & [files])\n```\nExtracts the files from `$_FILES` and normalizes them to a map of \"uploaded-file\".",
            "example": "(files-from-globals) ; => {:avatar (uploaded-file \"/tmp/phpYzdqkD\" 1024 0 \"photo.jpg\" \"image/jpeg\")}",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& __phel_3150]"
        }
    },
    {
        "namespace": "http",
        "name": "http/headers-from-server",
        "description": "Extracts all headers from the `$_SERVER` variable.",
        "doc": "```phel\n(headers-from-server & [server])\n```\nExtracts all headers from the `$_SERVER` variable.",
        "signatures": [
            "(headers-from-server & [server])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L155",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(headers-from-server & [server])\n```\nExtracts all headers from the `$_SERVER` variable.",
            "example": "(headers-from-server) ; => {:host \"example.com\" :content-type \"application/json\"}",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& __phel_3160]"
        }
    },
    {
        "namespace": "http",
        "name": "http/request",
        "description": "Creates a new request struct.",
        "doc": "```phel\n(request method uri headers parsed-body query-params cookie-params server-params uploaded-files version attributes)\n```\nCreates a new request struct.",
        "signatures": [
            "(request method uri headers parsed-body query-params cookie-params server-params uploaded-files version attributes)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L180",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(request method uri headers parsed-body query-params cookie-params server-params uploaded-files version attributes)\n```\nCreates a new request struct.",
            "start-location": {},
            "end-location": {},
            "min-arity": 10,
            "is-variadic": false,
            "arglists": "[method uri headers parsed-body query-params cookie-params server-params uploaded-files version attributes]"
        }
    },
    {
        "namespace": "http",
        "name": "http/request-from-globals",
        "description": "Extracts a request from `$_SERVER`, `$_GET`, `$_POST`, `$_COOKIE` and `$_FILES`.",
        "doc": "```phel\n(request-from-globals)\n```\nExtracts a request from `$_SERVER`, `$_GET`, `$_POST`, `$_COOKIE` and `$_FILES`.",
        "signatures": [
            "(request-from-globals)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L234",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(request-from-globals)\n```\nExtracts a request from `$_SERVER`, `$_GET`, `$_POST`, `$_COOKIE` and `$_FILES`.",
            "example": "(request-from-globals) ; => (request \"GET\" (uri ...) {...} nil {...} {...} {...} {...} \"1.1\" {})",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "http",
        "name": "http/request-from-globals-args",
        "description": "Extracts a request from args.",
        "doc": "```phel\n(request-from-globals-args server get-parameter post-parameter cookies files)\n```\nExtracts a request from args.",
        "signatures": [
            "(request-from-globals-args server get-parameter post-parameter cookies files)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L211",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(request-from-globals-args server get-parameter post-parameter cookies files)\n```\nExtracts a request from args.",
            "example": "(request-from-globals-args php/$_SERVER php/$_GET php/$_POST php/$_COOKIE php/$_FILES) ; => (request \"GET\" (uri ...) {...} nil {...} {...} {...} {...} \"1.1\" {})",
            "start-location": {},
            "end-location": {},
            "min-arity": 5,
            "is-variadic": false,
            "arglists": "[server get-parameter post-parameter cookies files]"
        }
    },
    {
        "namespace": "http",
        "name": "http/request-from-map",
        "description": "Creates a request struct from a map with optional keys :method, :uri, :headers, etc.",
        "doc": "```phel\n(request-from-map {:method method, :version version, :uri uri, :headers headers, :parsed-body parsed-body, :query-params query-params, :cookie-params cookie-params, :server-params server-params, :uploaded-files uploaded-files, :attributes attributes})\n```\nCreates a request struct from a map with optional keys :method, :uri, :headers, etc.",
        "signatures": [
            "(request-from-map {:method method, :version version, :uri uri, :headers headers, :parsed-body parsed-body, :query-params query-params, :cookie-params cookie-params, :server-params server-params, :uploaded-files uploaded-files, :attributes attributes})"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L240",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(request-from-map {:method method, :version version, :uri uri, :headers headers, :parsed-body parsed-body, :query-params query-params, :cookie-params cookie-params, :server-params server-params, :uploaded-files uploaded-files, :attributes attributes})\n```\nCreates a request struct from a map with optional keys :method, :uri, :headers, etc.",
            "example": "(request-from-map {:method \"POST\" :uri \"https://api.example.com/users\"}) ; => (request \"POST\" (uri ...) {} nil {} {} {} [] \"1.1\" {})",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[__phel_3219]"
        }
    },
    {
        "namespace": "http",
        "name": "http/request?",
        "description": "Checks if `x` is an instance of the request struct.",
        "doc": "```phel\n(request? x)\n```\nChecks if `x` is an instance of the request struct.",
        "signatures": [
            "(request? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L180",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(request? x)\n```\nChecks if `x` is an instance of the request struct.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "http",
        "name": "http/response",
        "description": "Creates a new response struct.",
        "doc": "```phel\n(response status headers body version reason)\n```\nCreates a new response struct.",
        "signatures": [
            "(response status headers body version reason)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L273",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(response status headers body version reason)\n```\nCreates a new response struct.",
            "start-location": {},
            "end-location": {},
            "min-arity": 5,
            "is-variadic": false,
            "arglists": "[status headers body version reason]"
        }
    },
    {
        "namespace": "http",
        "name": "http/response-from-map",
        "description": "Creates a response struct from a map with optional keys :status, :headers, :body, :version, and :reason.",
        "doc": "```phel\n(response-from-map {:status status, :headers headers, :body body, :version version, :reason reason})\n```\nCreates a response struct from a map with optional keys :status, :headers, :body, :version, and :reason.",
        "signatures": [
            "(response-from-map {:status status, :headers headers, :body body, :version version, :reason reason})"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L338",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(response-from-map {:status status, :headers headers, :body body, :version version, :reason reason})\n```\nCreates a response struct from a map with optional keys :status, :headers, :body, :version, and :reason.",
            "example": "(response-from-map {:status 200 :body \"Hello World\"}) ; => (response 200 {} \"Hello World\" \"1.1\" \"OK\")",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[__phel_3268]"
        }
    },
    {
        "namespace": "http",
        "name": "http/response-from-string",
        "description": "Create a response from a string.",
        "doc": "```phel\n(response-from-string s)\n```\nCreate a response from a string.",
        "signatures": [
            "(response-from-string s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L349",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(response-from-string s)\n```\nCreate a response from a string.",
            "example": "(response-from-string \"Hello World\") ; => (response 200 {} \"Hello World\" \"1.1\" \"OK\")",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "http",
        "name": "http/response?",
        "description": "Checks if `x` is an instance of the response struct.",
        "doc": "```phel\n(response? x)\n```\nChecks if `x` is an instance of the response struct.",
        "signatures": [
            "(response? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L273",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(response? x)\n```\nChecks if `x` is an instance of the response struct.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "http",
        "name": "http/uploaded-file",
        "description": "Creates a new uploaded-file struct.",
        "doc": "```phel\n(uploaded-file tmp-file size error-status client-filename client-media-type)\n```\nCreates a new uploaded-file struct.",
        "signatures": [
            "(uploaded-file tmp-file size error-status client-filename client-media-type)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L105",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(uploaded-file tmp-file size error-status client-filename client-media-type)\n```\nCreates a new uploaded-file struct.",
            "start-location": {},
            "end-location": {},
            "min-arity": 5,
            "is-variadic": false,
            "arglists": "[tmp-file size error-status client-filename client-media-type]"
        }
    },
    {
        "namespace": "http",
        "name": "http/uploaded-file?",
        "description": "Checks if `x` is an instance of the uploaded-file struct.",
        "doc": "```phel\n(uploaded-file? x)\n```\nChecks if `x` is an instance of the uploaded-file struct.",
        "signatures": [
            "(uploaded-file? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L105",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(uploaded-file? x)\n```\nChecks if `x` is an instance of the uploaded-file struct.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "http",
        "name": "http/uri",
        "description": "Creates a new uri struct.",
        "doc": "```phel\n(uri scheme userinfo host port path query fragment)\n```\nCreates a new uri struct.",
        "signatures": [
            "(uri scheme userinfo host port path query fragment)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L9",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(uri scheme userinfo host port path query fragment)\n```\nCreates a new uri struct.",
            "start-location": {},
            "end-location": {},
            "min-arity": 7,
            "is-variadic": false,
            "arglists": "[scheme userinfo host port path query fragment]"
        }
    },
    {
        "namespace": "http",
        "name": "http/uri-from-globals",
        "description": "Extracts the URI from the `$_SERVER` variable.",
        "doc": "```phel\n(uri-from-globals & [server])\n```\nExtracts the URI from the `$_SERVER` variable.",
        "signatures": [
            "(uri-from-globals & [server])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L53",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(uri-from-globals & [server])\n```\nExtracts the URI from the `$_SERVER` variable.",
            "example": "(uri-from-globals) ; => (uri \"https\" nil \"example.com\" 443 \"/path\" \"foo=bar\" nil)",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& __phel_3098]"
        }
    },
    {
        "namespace": "http",
        "name": "http/uri-from-string",
        "description": "Create a uri struct from a string.",
        "doc": "```phel\n(uri-from-string url)\n```\nCreate a uri struct from a string.",
        "signatures": [
            "(uri-from-string url)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L77",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(uri-from-string url)\n```\nCreate a uri struct from a string.",
            "example": "(uri-from-string \"https://example.com/path?foo=bar\") ; => (uri \"https\" nil \"example.com\" nil \"/path\" \"foo=bar\" nil)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[url]"
        }
    },
    {
        "namespace": "http",
        "name": "http/uri?",
        "description": "Checks if `x` is an instance of the uri struct.",
        "doc": "```phel\n(uri? x)\n```\nChecks if `x` is an instance of the uri struct.",
        "signatures": [
            "(uri? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http.phel#L9",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(uri? x)\n```\nChecks if `x` is an instance of the uri struct.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "http_client",
        "name": "http_client/delete",
        "description": "Makes a DELETE request. Returns an http/response struct.",
        "doc": "```phel\n(delete url & [opts])\n```\nMakes a DELETE request. Returns an http/response struct.",
        "signatures": [
            "(delete url & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http-client.phel#L128",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(delete url & [opts])\n```\nMakes a DELETE request. Returns an http/response struct.",
            "example": "(delete \"https://api.example.com/1\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[url & __phel_3879]"
        }
    },
    {
        "namespace": "http_client",
        "name": "http_client/get",
        "description": "Makes a GET request. Returns an http/response struct.",
        "doc": "```phel\n(get url & [opts])\n```\nMakes a GET request. Returns an http/response struct.",
        "signatures": [
            "(get url & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http-client.phel#L104",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(get url & [opts])\n```\nMakes a GET request. Returns an http/response struct.",
            "example": "(get \"https://example.com\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[url & __phel_3855]"
        }
    },
    {
        "namespace": "http_client",
        "name": "http_client/head",
        "description": "Makes a HEAD request. Returns an http/response struct.",
        "doc": "```phel\n(head url & [opts])\n```\nMakes a HEAD request. Returns an http/response struct.",
        "signatures": [
            "(head url & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http-client.phel#L144",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(head url & [opts])\n```\nMakes a HEAD request. Returns an http/response struct.",
            "example": "(head \"https://example.com\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[url & __phel_3895]"
        }
    },
    {
        "namespace": "http_client",
        "name": "http_client/patch",
        "description": "Makes a PATCH request. Returns an http/response struct.",
        "doc": "```phel\n(patch url & [opts])\n```\nMakes a PATCH request. Returns an http/response struct.",
        "signatures": [
            "(patch url & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http-client.phel#L136",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(patch url & [opts])\n```\nMakes a PATCH request. Returns an http/response struct.",
            "example": "(patch \"https://api.example.com/1\" {:json {:name \"Charlie\"}})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[url & __phel_3887]"
        }
    },
    {
        "namespace": "http_client",
        "name": "http_client/post",
        "description": "Makes a POST request. Returns an http/response struct.",
        "doc": "```phel\n(post url & [opts])\n```\nMakes a POST request. Returns an http/response struct.",
        "signatures": [
            "(post url & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http-client.phel#L112",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(post url & [opts])\n```\nMakes a POST request. Returns an http/response struct.",
            "example": "(post \"https://api.example.com\" {:json {:name \"Alice\"}})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[url & __phel_3863]"
        }
    },
    {
        "namespace": "http_client",
        "name": "http_client/put",
        "description": "Makes a PUT request. Returns an http/response struct.",
        "doc": "```phel\n(put url & [opts])\n```\nMakes a PUT request. Returns an http/response struct.",
        "signatures": [
            "(put url & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http-client.phel#L120",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(put url & [opts])\n```\nMakes a PUT request. Returns an http/response struct.",
            "example": "(put \"https://api.example.com/1\" {:json {:name \"Bob\"}})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[url & __phel_3871]"
        }
    },
    {
        "namespace": "http_client",
        "name": "http_client/request",
        "description": "Makes an HTTP request. Returns an http/response struct.",
        "doc": "```phel\n(request method url & [{:headers headers, :body body, :json json-body, :query-params query-params, :timeout timeout, :follow-redirects follow-redirects, :verify-ssl verify-ssl}])\n```\nMakes an HTTP request. Returns an http/response struct.",
        "signatures": [
            "(request method url & [{:headers headers, :body body, :json json-body, :query-params query-params, :timeout timeout, :follow-redirects follow-redirects, :verify-ssl verify-ssl}])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/http-client.phel#L69",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(request method url & [{:headers headers, :body body, :json json-body, :query-params query-params, :timeout timeout, :follow-redirects follow-redirects, :verify-ssl verify-ssl}])\n```\nMakes an HTTP request. Returns an http/response struct.",
            "example": "(request :get \"https://example.com\" {:headers {:accept \"application/json\"}})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[method url & __phel_3809]"
        }
    },
    {
        "namespace": "json",
        "name": "json/decode",
        "description": "Decodes a JSON string to a Phel value.",
        "doc": "```phel\n(decode json & [{:flags flags, :depth depth}])\n```\nDecodes a JSON string to a Phel value.",
        "signatures": [
            "(decode json & [{:flags flags, :depth depth}])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/json.phel#L55",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(decode json & [{:flags flags, :depth depth}])\n```\nDecodes a JSON string to a Phel value.",
            "example": "(decode \"{\\\"name\\\":\\\"Alice\\\"}\") ; => {:name \"Alice\"}",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[json & __phel_3397]"
        }
    },
    {
        "namespace": "json",
        "name": "json/decode-value",
        "description": "Converts a JSON value to Phel format.",
        "doc": "```phel\n(decode-value x)\n```\nConverts a JSON value to Phel format.",
        "signatures": [
            "(decode-value x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/json.phel#L43",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(decode-value x)\n```\nConverts a JSON value to Phel format.",
            "example": "(decode-value [1 2 3]) ; => [1 2 3]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "json",
        "name": "json/encode",
        "description": "Encodes a Phel value to a JSON string.",
        "doc": "```phel\n(encode value & [{:flags flags, :depth depth}])\n```\nEncodes a Phel value to a JSON string.",
        "signatures": [
            "(encode value & [{:flags flags, :depth depth}])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/json.phel#L31",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(encode value & [{:flags flags, :depth depth}])\n```\nEncodes a Phel value to a JSON string.",
            "example": "(encode {:name \"Alice\"}) ; => \"{\\\"name\\\":\\\"Alice\\\"}\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[value & __phel_3368]"
        }
    },
    {
        "namespace": "json",
        "name": "json/encode-value",
        "description": "Converts a Phel value to JSON-compatible format.",
        "doc": "```phel\n(encode-value x)\n```\nConverts a Phel value to JSON-compatible format.",
        "signatures": [
            "(encode-value x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/json.phel#L20",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(encode-value x)\n```\nConverts a Phel value to JSON-compatible format.",
            "example": "(encode-value :name) ; => \"name\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "json",
        "name": "json/valid-key?",
        "description": "Checks if a value can be used as a JSON key.",
        "doc": "```phel\n(valid-key? v)\n```\nChecks if a value can be used as a JSON key.",
        "signatures": [
            "(valid-key? v)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/json.phel#L4",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(valid-key? v)\n```\nChecks if a value can be used as a JSON key.",
            "example": "(valid-key? :name) ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[v]",
            "tag": "bool"
        }
    },
    {
        "namespace": "match",
        "name": "match/match",
        "description": "Pattern matching over a vector of targets.",
        "doc": "```phel\n(match targets & body)\n```\nPattern matching over a vector of targets.",
        "signatures": [
            "(match targets & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/match.phel#L287",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(match targets & body)\n```\nPattern matching over a vector of targets.",
            "see-also": {},
            "end-location": {},
            "example": "(match [x y] [0 _] :zero-x [_ 0] :zero-y [a b] [:both a b])",
            "start-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[targets & body]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/call-count",
        "description": "Returns the number of times the mock was called.",
        "doc": "```phel\n(call-count mock-fn)\n```\nReturns the number of times the mock was called.",
        "signatures": [
            "(call-count mock-fn)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L106",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(call-count mock-fn)\n```\nReturns the number of times the mock was called.",
            "example": "(def my-mock (mock :result))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[mock-fn]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/called-once?",
        "description": "Returns true if the mock was called exactly once.",
        "doc": "```phel\n(called-once? mock-fn)\n```\nReturns true if the mock was called exactly once.",
        "signatures": [
            "(called-once? mock-fn)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L125",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(called-once? mock-fn)\n```\nReturns true if the mock was called exactly once.",
            "example": "(def my-mock (mock :result))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[mock-fn]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/called-times?",
        "description": "Returns true if the mock was called exactly n times.",
        "doc": "```phel\n(called-times? mock-fn n)\n```\nReturns true if the mock was called exactly n times.",
        "signatures": [
            "(called-times? mock-fn n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L131",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(called-times? mock-fn n)\n```\nReturns true if the mock was called exactly n times.",
            "example": "(def my-mock (mock :result))",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[mock-fn n]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/called-with?",
        "description": "Returns true if the mock was called with the exact arguments.",
        "doc": "```phel\n(called-with? mock-fn & expected-args)\n```\nReturns true if the mock was called with the exact arguments.",
        "signatures": [
            "(called-with? mock-fn & expected-args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L118",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(called-with? mock-fn & expected-args)\n```\nReturns true if the mock was called with the exact arguments.",
            "example": "(def my-mock (mock :result))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[mock-fn & expected-args]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/called?",
        "description": "Returns true if the mock was called at least once.",
        "doc": "```phel\n(called? mock-fn)\n```\nReturns true if the mock was called at least once.",
        "signatures": [
            "(called? mock-fn)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L112",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(called? mock-fn)\n```\nReturns true if the mock was called at least once.",
            "example": "(def my-mock (mock :result))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[mock-fn]",
            "tag": "bool"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/calls",
        "description": "Returns a list of all argument lists the mock was called with.",
        "doc": "```phel\n(calls mock-fn)\n```\nReturns a list of all argument lists the mock was called with.",
        "signatures": [
            "(calls mock-fn)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L97",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(calls mock-fn)\n```\nReturns a list of all argument lists the mock was called with.",
            "example": "(def my-mock (mock :result))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[mock-fn]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/clear-all-mocks!",
        "description": "Clears the entire mock registry.\n  Useful for cleanup between test suites in long-running processes.",
        "doc": "```phel\n(clear-all-mocks!)\n```\nClears the entire mock registry.\n  Useful for cleanup between test suites in long-running processes.",
        "signatures": [
            "(clear-all-mocks!)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L168",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(clear-all-mocks!)\n```\nClears the entire mock registry.\n  Useful for cleanup between test suites in long-running processes.",
            "example": "(clear-all-mocks!) ; All mocks removed from registry",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/first-call",
        "description": "Returns the arguments from the first call.",
        "doc": "```phel\n(first-call mock-fn)\n```\nReturns the arguments from the first call.",
        "signatures": [
            "(first-call mock-fn)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L149",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(first-call mock-fn)\n```\nReturns the arguments from the first call.",
            "example": "(def my-mock (mock :result))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[mock-fn]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/last-call",
        "description": "Returns the arguments from the most recent call.",
        "doc": "```phel\n(last-call mock-fn)\n```\nReturns the arguments from the most recent call.",
        "signatures": [
            "(last-call mock-fn)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L143",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(last-call mock-fn)\n```\nReturns the arguments from the most recent call.",
            "example": "(def my-mock (mock :result))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[mock-fn]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/mock",
        "description": "Creates a mock function that returns a fixed value and tracks all calls.",
        "doc": "```phel\n(mock return-value)\n```\nCreates a mock function that returns a fixed value and tracks all calls.",
        "signatures": [
            "(mock return-value)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L29",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(mock return-value)\n```\nCreates a mock function that returns a fixed value and tracks all calls.",
            "example": "(def my-mock (mock :return-value))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[return-value]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/mock-fn",
        "description": "Creates a mock function with custom behavior that tracks all calls.",
        "doc": "```phel\n(mock-fn f)\n```\nCreates a mock function with custom behavior that tracks all calls.",
        "signatures": [
            "(mock-fn f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L40",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(mock-fn f)\n```\nCreates a mock function with custom behavior that tracks all calls.",
            "example": "(def my-mock (mock-fn (fn [x] (* x 2))))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[f]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/mock-returning",
        "description": "Creates a mock that returns different values for consecutive calls.\n  After exhausting values, returns the last value.",
        "doc": "```phel\n(mock-returning values)\n```\nCreates a mock that returns different values for consecutive calls.\n  After exhausting values, returns the last value.",
        "signatures": [
            "(mock-returning values)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L57",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(mock-returning values)\n```\nCreates a mock that returns different values for consecutive calls.\n  After exhausting values, returns the last value.",
            "example": "(def my-mock (mock-returning [1 2 3]))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[values]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/mock-throwing",
        "description": "Creates a mock that throws an exception when called.",
        "doc": "```phel\n(mock-throwing exception)\n```\nCreates a mock that throws an exception when called.",
        "signatures": [
            "(mock-throwing exception)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L77",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(mock-throwing exception)\n```\nCreates a mock that throws an exception when called.",
            "example": "(def my-mock (mock-throwing (php/new \\RuntimeException \"API unavailable\")))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[exception]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/mock?",
        "description": "Returns true if the function is a mock.",
        "doc": "```phel\n(mock? f)\n```\nReturns true if the function is a mock.",
        "signatures": [
            "(mock? f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L92",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(mock? f)\n```\nReturns true if the function is a mock.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[f]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/never-called?",
        "description": "Returns true if the mock was never called.",
        "doc": "```phel\n(never-called? mock-fn)\n```\nReturns true if the mock was never called.",
        "signatures": [
            "(never-called? mock-fn)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L137",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(never-called? mock-fn)\n```\nReturns true if the mock was never called.",
            "example": "(def my-mock (mock :result))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[mock-fn]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/reset-mock!",
        "description": "Resets the call history of a mock without removing it from the registry.\n  The mock can continue to be used and track new calls.",
        "doc": "```phel\n(reset-mock! mock-fn)\n```\nResets the call history of a mock without removing it from the registry.\n  The mock can continue to be used and track new calls.",
        "signatures": [
            "(reset-mock! mock-fn)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L155",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(reset-mock! mock-fn)\n```\nResets the call history of a mock without removing it from the registry.\n  The mock can continue to be used and track new calls.",
            "example": "(def my-mock (mock :result))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[mock-fn]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/spy",
        "description": "Wraps an existing function to track calls while preserving original behavior.",
        "doc": "```phel\n(spy f)\n```\nWraps an existing function to track calls while preserving original behavior.",
        "signatures": [
            "(spy f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L51",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(spy f)\n```\nWraps an existing function to track calls while preserving original behavior.",
            "example": "(def original-fn (fn [x] (* x 2)))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[f]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/with-mock-wrapper",
        "description": "Like with-mocks but for wrapped mocks (interop scenarios).\n  Automatically resets the underlying mock even when wrapped in an adapter function.\n\n  Usage:\n    ```phel\n    (with-mock-wrapper [fn-symbol underlying-mock wrapper-fn]\n      body...)\n    ```\n\n  Multiple wrappers:\n    ```phel\n    (with-mock-wrapper [service-a mock-a (fn [x] (mock-a (inc x)))\n                        service-b mock-b (fn [y] (mock-b (dec y)))]\n      ...)\n    ```",
        "doc": "```phel\n(with-mock-wrapper bindings & body)\n```\nLike with-mocks but for wrapped mocks (interop scenarios).\n  Automatically resets the underlying mock even when wrapped in an adapter function.\n\n  Usage:\n    ```phel\n    (with-mock-wrapper [fn-symbol underlying-mock wrapper-fn]\n      body...)\n    ```\n\n  Multiple wrappers:\n    ```phel\n    (with-mock-wrapper [service-a mock-a (fn [x] (mock-a (inc x)))\n                        service-b mock-b (fn [y] (mock-b (dec y)))]\n      ...)\n    ```",
        "signatures": [
            "(with-mock-wrapper bindings & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L215",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(with-mock-wrapper bindings & body)\n```\nLike with-mocks but for wrapped mocks (interop scenarios).\n  Automatically resets the underlying mock even when wrapped in an adapter function.\n\n  Usage:\n    ```phel\n    (with-mock-wrapper [fn-symbol underlying-mock wrapper-fn]\n      body...)\n    ```\n\n  Multiple wrappers:\n    ```phel\n    (with-mock-wrapper [service-a mock-a (fn [x] (mock-a (inc x)))\n                        service-b mock-b (fn [y] (mock-b (dec y)))]\n      ...)\n    ```",
            "example": "(with-mock-wrapper [http mock-http identity] (http \"test\"))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[bindings & body]"
        }
    },
    {
        "namespace": "mock",
        "name": "mock/with-mocks",
        "description": "Temporarily replaces functions with mocks using `with-redefs`.\n  Automatically resets mocks after the body executes.\n\n  Works with inline mock creation:\n    ```phel\n    (with-mocks [http-get (mock {:status 200})]\n      (http-get)\n      ;; Mock is automatically reset after this block)\n    ```\n\n  Also works with pre-defined mocks:\n    ```phel\n    (let [my-mock (mock :result)]\n      (with-mocks [some-fn my-mock]\n        (some-fn)))\n    ```\n\n  If you need to wrap the mock in a function (e.g., to adapt arguments),\n  you'll need to manually reset:\n    ```phel\n    (with-mocks [some-fn (fn [& args] (my-mock (transform args)))]\n      (some-fn)\n      (reset-mock! my-mock))\n    ```",
        "doc": "```phel\n(with-mocks bindings & body)\n```\nTemporarily replaces functions with mocks using `with-redefs`.\n  Automatically resets mocks after the body executes.\n\n  Works with inline mock creation:\n    ```phel\n    (with-mocks [http-get (mock {:status 200})]\n      (http-get)\n      ;; Mock is automatically reset after this block)\n    ```\n\n  Also works with pre-defined mocks:\n    ```phel\n    (let [my-mock (mock :result)]\n      (with-mocks [some-fn my-mock]\n        (some-fn)))\n    ```\n\n  If you need to wrap the mock in a function (e.g., to adapt arguments),\n  you'll need to manually reset:\n    ```phel\n    (with-mocks [some-fn (fn [& args] (my-mock (transform args)))]\n      (some-fn)\n      (reset-mock! my-mock))\n    ```",
        "signatures": [
            "(with-mocks bindings & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/mock.phel#L179",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(with-mocks bindings & body)\n```\nTemporarily replaces functions with mocks using `with-redefs`.\n  Automatically resets mocks after the body executes.\n\n  Works with inline mock creation:\n    ```phel\n    (with-mocks [http-get (mock {:status 200})]\n      (http-get)\n      ;; Mock is automatically reset after this block)\n    ```\n\n  Also works with pre-defined mocks:\n    ```phel\n    (let [my-mock (mock :result)]\n      (with-mocks [some-fn my-mock]\n        (some-fn)))\n    ```\n\n  If you need to wrap the mock in a function (e.g., to adapt arguments),\n  you'll need to manually reset:\n    ```phel\n    (with-mocks [some-fn (fn [& args] (my-mock (transform args)))]\n      (some-fn)\n      (reset-mock! my-mock))\n    ```",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[bindings & body]"
        }
    },
    {
        "namespace": "php",
        "name": "php/->",
        "description": "Access to an object property or result of chained calls.",
        "doc": "```phel\n(php/-> object call*)\n(php/:: class call*)\n```\nAccess to an object property or result of chained calls.",
        "signatures": [
            "(php/-> object call*)",
            "(php/:: class call*)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/php-interop/#php-set-object-properties",
        "meta": {
            "example": "(php/-> date (format \"Y-m-d\"))"
        }
    },
    {
        "namespace": "php",
        "name": "php/::",
        "description": "Calls a static method or property from a PHP class. Both method-name and property must be symbols and cannot be an evaluated value.",
        "doc": "```phel\n(php/:: class (method-name expr*))\n(php/:: class call*)\n```\nCalls a static method or property from a PHP class. Both method-name and property must be symbols and cannot be an evaluated value.",
        "signatures": [
            "(php/:: class (method-name expr*))",
            "(php/:: class call*)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/php-interop/#php-static-method-and-property-call",
        "meta": {
            "example": "(php/:: DateTime (createFromFormat \"Y-m-d\" \"2024-01-01\"))"
        }
    },
    {
        "namespace": "php",
        "name": "php/aget",
        "description": "Equivalent to PHP's `arr[index] ?? null`.",
        "doc": "```phel\n(php/aget arr index)\n```\nEquivalent to PHP's `arr[index] ?? null`.",
        "signatures": [
            "(php/aget arr index)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/php-interop/#get-php-array-value",
        "meta": {
            "example": "(php/aget (php/array \"a\" \"b\" \"c\") 1) ; => \"b\""
        }
    },
    {
        "namespace": "php",
        "name": "php/aget-in",
        "description": "Equivalent to PHP's `arr[k1][k2][k...] ?? null`.",
        "doc": "```phel\n(php/aget-in arr ks)\n```\nEquivalent to PHP's `arr[k1][k2][k...] ?? null`.",
        "signatures": [
            "(php/aget-in arr ks)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/php-interop/#get-php-array-value",
        "meta": {
            "example": "(php/aget-in nested-arr [\"users\" 0 \"name\"])"
        }
    },
    {
        "namespace": "php",
        "name": "php/apush",
        "description": "Equivalent to PHP's arr[] = value.",
        "doc": "```phel\n(php/apush arr value)\n```\nEquivalent to PHP's `arr[] = value`.",
        "signatures": [
            "(php/apush arr value)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/php-interop/#append-php-array-value",
        "meta": {
            "example": "(php/apush arr \"new-item\")"
        }
    },
    {
        "namespace": "php",
        "name": "php/apush-in",
        "description": "Equivalent to PHP's `arr[k1][k2][k...][] = value`.",
        "doc": "```phel\n(php/apush-in arr ks value)\n```\nEquivalent to PHP's `arr[k1][k2][k...][] = value`.",
        "signatures": [
            "(php/apush-in arr ks value)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/php-interop/#append-php-array-value",
        "meta": {
            "example": "(php/apush-in arr [\"users\"] {:name \"Bob\"})"
        }
    },
    {
        "namespace": "php",
        "name": "php/aset",
        "description": "Equivalent to PHP's `arr[index] = value`.",
        "doc": "```phel\n(php/aset arr index value)\n```\nEquivalent to PHP's `arr[index] = value`.",
        "signatures": [
            "(php/aset arr index value)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/php-interop/#set-php-array-value",
        "meta": {
            "example": "(php/aset arr 0 \"new-value\")"
        }
    },
    {
        "namespace": "php",
        "name": "php/aset-in",
        "description": "Equivalent to PHP's `arr[k1][k2][k...] = value`.",
        "doc": "```phel\n(php/aset-in arr ks value)\n```\nEquivalent to PHP's `arr[k1][k2][k...] = value`.",
        "signatures": [
            "(php/aset-in arr ks value)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/php-interop/#set-php-array-value",
        "meta": {
            "example": "(php/aset-in arr [\"users\" 0 \"name\"] \"Alice\")"
        }
    },
    {
        "namespace": "php",
        "name": "php/aunset",
        "description": "Equivalent to PHP's `unset(arr[index])`.",
        "doc": "```phel\n(php/aunset arr index)\n```\nEquivalent to PHP's `unset(arr[index])`.",
        "signatures": [
            "(php/aunset arr index)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/php-interop/#unset-php-array-value",
        "meta": {
            "example": "(php/aunset arr \"key-to-remove\")"
        }
    },
    {
        "namespace": "php",
        "name": "php/aunset-in",
        "description": "Equivalent to PHP's `unset(arr[k1][k2][k...])`.",
        "doc": "```phel\n(php/aunset-in arr ks)\n```\nEquivalent to PHP's `unset(arr[k1][k2][k...])`.",
        "signatures": [
            "(php/aunset-in arr ks)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/php-interop/#unset-php-array-value",
        "meta": {
            "example": "(php/aunset-in arr [\"users\" 0])"
        }
    },
    {
        "namespace": "php",
        "name": "php/new",
        "description": "Evaluates expr and creates a new PHP class using the arguments. The instance of the class is returned.",
        "doc": "```phel\n(php/new expr args*)\n```\nEvaluates expr and creates a new PHP class using the arguments. The instance of the class is returned.",
        "signatures": [
            "(php/new expr args*)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/php-interop/#php-class-instantiation",
        "meta": {
            "example": "(php/new DateTime \"2024-01-01\")"
        }
    },
    {
        "namespace": "php",
        "name": "php/oset",
        "description": "Use `php/oset` to set a value to a class/object property.",
        "doc": "```phel\n(php/oset (php/-> object property) value)\n(php/oset (php/:: class property) value)\n```\nUse `php/oset` to set a value to a class/object property.",
        "signatures": [
            "(php/oset (php/-> object property) value)",
            "(php/oset (php/:: class property) value)"
        ],
        "githubUrl": "",
        "docUrl": "/documentation/php-interop/#php-set-object-properties",
        "meta": {
            "example": "(php/oset (php/-> obj name) \"Alice\")"
        }
    },
    {
        "namespace": "pprint",
        "name": "pprint/pprint",
        "description": "Pretty-print a data structure to stdout with line breaks and indentation.",
        "doc": "```phel\n(pprint form & [width])\n```\nPretty-print a data structure to stdout with line breaks and indentation.",
        "signatures": [
            "(pprint form & [width])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/pprint.phel#L92",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(pprint form & [width])\n```\nPretty-print a data structure to stdout with line breaks and indentation.",
            "see-also": {},
            "example": "(pprint {:a [1 2 3] :b {:c 4 :d 5}})",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[form & __phel_3772]"
        }
    },
    {
        "namespace": "pprint",
        "name": "pprint/pprint-str",
        "description": "Pretty-print a data structure to a string with line breaks and indentation.",
        "doc": "```phel\n(pprint-str form & [width])\n```\nPretty-print a data structure to a string with line breaks and indentation.",
        "signatures": [
            "(pprint-str form & [width])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/pprint.phel#L83",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(pprint-str form & [width])\n```\nPretty-print a data structure to a string with line breaks and indentation.",
            "see-also": {},
            "example": "(pprint-str {:a [1 2 3] :b {:c 4 :d 5}})",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[form & __phel_3761]"
        }
    },
    {
        "namespace": "reader",
        "name": "reader/register-tag",
        "description": "Registers a handler for reader tag `tag-name` (a string without the\n  leading `#`). The handler `f` is a 1-arg function receiving the\n  already-read form value and returning the value that should replace\n  the tagged literal.\n\n  Re-registering an existing tag overwrites the previous handler.",
        "doc": "```phel\n(register-tag tag-name f)\n```\nRegisters a handler for reader tag `tag-name` (a string without the\n  leading `#`). The handler `f` is a 1-arg function receiving the\n  already-read form value and returning the value that should replace\n  the tagged literal.\n\n  Re-registering an existing tag overwrites the previous handler.",
        "signatures": [
            "(register-tag tag-name f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/reader.phel#L19",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(register-tag tag-name f)\n```\nRegisters a handler for reader tag `tag-name` (a string without the\n  leading `#`). The handler `f` is a 1-arg function receiving the\n  already-read form value and returning the value that should replace\n  the tagged literal.\n\n  Re-registering an existing tag overwrites the previous handler.",
            "example": "(register-tag \"date\" my-ns/parse-date)\n  ; later: #date \"2026-04-20\" => (my-ns/parse-date \"2026-04-20\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[tag-name f]"
        }
    },
    {
        "namespace": "reader",
        "name": "reader/registered-tags",
        "description": "Returns a sorted vector of the currently registered reader tag\n  names.",
        "doc": "```phel\n(registered-tags)\n```\nReturns a sorted vector of the currently registered reader tag\n  names.",
        "signatures": [
            "(registered-tags)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/reader.phel#L50",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(registered-tags)\n```\nReturns a sorted vector of the currently registered reader tag\n  names.",
            "example": "(registered-tags) ; => [\"inst\" \"regex\" \"uuid\"]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "reader",
        "name": "reader/tag-registered?",
        "description": "Returns true if a handler is registered for reader tag `tag-name`.",
        "doc": "```phel\n(tag-registered? tag-name)\n```\nReturns true if a handler is registered for reader tag `tag-name`.",
        "signatures": [
            "(tag-registered? tag-name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/reader.phel#L33",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(tag-registered? tag-name)\n```\nReturns true if a handler is registered for reader tag `tag-name`.",
            "example": "(tag-registered? \"inst\") ; => true",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[tag-name]"
        }
    },
    {
        "namespace": "reader",
        "name": "reader/unregister-tag",
        "description": "Removes any handler registered for reader tag `tag-name`. Built-in\n  tags can be unregistered but are re-installed on the next reader\n  bootstrap.",
        "doc": "```phel\n(unregister-tag tag-name)\n```\nRemoves any handler registered for reader tag `tag-name`. Built-in\n  tags can be unregistered but are re-installed on the next reader\n  bootstrap.",
        "signatures": [
            "(unregister-tag tag-name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/reader.phel#L40",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(unregister-tag tag-name)\n```\nRemoves any handler registered for reader tag `tag-name`. Built-in\n  tags can be unregistered but are re-installed on the next reader\n  bootstrap.",
            "example": "(unregister-tag \"date\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[tag-name]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/apropos",
        "description": "Returns a vector of symbols whose name contains the given search string.\n  Searches across all loaded namespaces.",
        "doc": "```phel\n(apropos search)\n```\nReturns a vector of symbols whose name contains the given search string.\n  Searches across all loaded namespaces.",
        "signatures": [
            "(apropos search)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L306",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(apropos search)\n```\nReturns a vector of symbols whose name contains the given search string.\n  Searches across all loaded namespaces.",
            "example": "(apropos \"map\") ; => [phel.core/flat-map phel.core/map ...]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[search]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/build-facade",
        "description": "",
        "doc": "",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L17",
        "docUrl": "",
        "meta": {
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "repl",
        "name": "repl/compile-str",
        "description": "Compiles a Phel expression string to PHP code.",
        "doc": "```phel\n(compile-str s)\n```\nCompiles a Phel expression string to PHP code.",
        "signatures": [
            "(compile-str s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L199",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(compile-str s)\n```\nCompiles a Phel expression string to PHP code.",
            "example": "(compile-str \"(+ 1 2)\") ; => \"(1 + 2)\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/create-ns",
        "description": "Creates the given namespace if it does not already exist. Returns the\n  namespace name in display form. Existing namespaces are left untouched.",
        "doc": "```phel\n(create-ns ns-str)\n```\nCreates the given namespace if it does not already exist. Returns the\n  namespace name in display form. Existing namespaces are left untouched.",
        "signatures": [
            "(create-ns ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L393",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(create-ns ns-str)\n```\nCreates the given namespace if it does not already exist. Returns the\n  namespace name in display form. Existing namespaces are left untouched.",
            "example": "(create-ns \"my-app.tmp\") ; => \"my-app.tmp\"",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/dir",
        "description": "Prints all public definitions in the given namespace symbol or string.\n\n  Returns nil. Prints one name per line, sorted alphabetically.",
        "doc": "```phel\n(dir ns)\n```\nPrints all public definitions in the given namespace symbol or string.\n\n  Returns nil. Prints one name per line, sorted alphabetically.",
        "signatures": [
            "(dir ns)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L296",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(dir ns)\n```\nPrints all public definitions in the given namespace symbol or string.\n\n  Returns nil. Prints one name per line, sorted alphabetically.",
            "example": "(dir phel\\string)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/doc",
        "description": "Prints the documentation for the given symbol.",
        "doc": "```phel\n(doc sym)\n```\nPrints the documentation for the given symbol.",
        "signatures": [
            "(doc sym)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L82",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(doc sym)\n```\nPrints the documentation for the given symbol.",
            "example": "(doc map)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[sym]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/embed-ns",
        "description": "Builds a searchable index of public functions in a namespace.",
        "doc": "```phel\n(embed-ns ns-str & [opts])\n```\nBuilds a searchable index of public functions in a namespace.",
        "signatures": [
            "(embed-ns ns-str & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L703",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(embed-ns ns-str & [opts])\n```\nBuilds a searchable index of public functions in a namespace.",
            "example": "(embed-ns \"phel\\core\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[ns-str & __phel_5240]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/eval-capturing",
        "description": "Evaluates a string of Phel code while capturing stdout. Returns a hash-map\n  with :value (the result), :out (captured stdout), :success (boolean), and\n  :error (error message or nil).\n\n  Useful for nREPL and other tooling that needs to separate printed output from\n  return values.",
        "doc": "```phel\n(eval-capturing code-str)\n```\nEvaluates a string of Phel code while capturing stdout. Returns a hash-map\n  with :value (the result), :out (captured stdout), :success (boolean), and\n  :error (error message or nil).\n\n  Useful for nREPL and other tooling that needs to separate printed output from\n  return values.",
        "signatures": [
            "(eval-capturing code-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L507",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(eval-capturing code-str)\n```\nEvaluates a string of Phel code while capturing stdout. Returns a hash-map\n  with :value (the result), :out (captured stdout), :success (boolean), and\n  :error (error message or nil).\n\n  Useful for nREPL and other tooling that needs to separate printed output from\n  return values.",
            "example": "(eval-capturing \"(do (println \\\"hello\\\") 42)\") ; => {:value 42 :out \"hello\\n\" :success true :error nil}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[code-str]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/eval-str",
        "description": "Evaluates a string of Phel code and returns the result.\n  If the string contains multiple expressions, returns the result of the last one.",
        "doc": "```phel\n(eval-str s)\n```\nEvaluates a string of Phel code and returns the result.\n  If the string contains multiple expressions, returns the result of the last one.",
        "signatures": [
            "(eval-str s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L208",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(eval-str s)\n```\nEvaluates a string of Phel code and returns the result.\n  If the string contains multiple expressions, returns the result of the last one.",
            "example": "(eval-str \"(+ 1 2)\") ; => 3",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/explain",
        "description": "Explains a Phel expression using AI and REPL introspection.",
        "doc": "```phel\n(explain code-str)\n```\nExplains a Phel expression using AI and REPL introspection.",
        "signatures": [
            "(explain code-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L623",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(explain code-str)\n```\nExplains a Phel expression using AI and REPL introspection.",
            "example": "(explain \"(map inc [1 2 3])\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[code-str]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/explain-sym",
        "description": "Explains a symbol using AI with source code and docs as context.",
        "doc": "```phel\n(explain-sym sym)\n```\nExplains a symbol using AI with source code and docs as context.",
        "signatures": [
            "(explain-sym sym)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L644",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(explain-sym sym)\n```\nExplains a symbol using AI with source code and docs as context.",
            "example": "(explain-sym map)",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[sym]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/find-fn",
        "description": "Searches for functions whose name or docstring contains the search string.\n  Returns a vector of maps with :ns, :name, :doc, :private, :min-arity, :max-arity, :is-variadic.",
        "doc": "```phel\n(find-fn search)\n```\nSearches for functions whose name or docstring contains the search string.\n  Returns a vector of maps with :ns, :name, :doc, :private, :min-arity, :max-arity, :is-variadic.",
        "signatures": [
            "(find-fn search)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L325",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(find-fn search)\n```\nSearches for functions whose name or docstring contains the search string.\n  Returns a vector of maps with :ns, :name, :doc, :private, :min-arity, :max-arity, :is-variadic.",
            "example": "(find-fn \"map\") ; => [{:ns \"phel.core\" :name \"map\" ...} ...]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[search]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/find-ns",
        "description": "Returns the namespace name in display form if it is loaded, or nil if no\n  namespace of that name exists. Accepts dot or backslash separators on input.",
        "doc": "```phel\n(find-ns ns-str)\n```\nReturns the namespace name in display form if it is loaded, or nil if no\n  namespace of that name exists. Accepts dot or backslash separators on input.",
        "signatures": [
            "(find-ns ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L383",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(find-ns ns-str)\n```\nReturns the namespace name in display form if it is loaded, or nil if no\n  namespace of that name exists. Accepts dot or backslash separators on input.",
            "example": "(find-ns \"phel.core\") ; => \"phel.core\"",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/fix",
        "description": "Suggests a fix for Phel code that produced an error.",
        "doc": "```phel\n(fix code-str error-msg)\n```\nSuggests a fix for Phel code that produced an error.",
        "signatures": [
            "(fix code-str error-msg)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L672",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(fix code-str error-msg)\n```\nSuggests a fix for Phel code that produced an error.",
            "example": "(fix \"(+ 1 \\\"a\\\")\" \"Cannot add string to integer\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[code-str error-msg]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/get-source-code",
        "description": "Returns the source code of the definition identified by namespace and name\n  strings, or nil if the source file cannot be found or metadata is missing.",
        "doc": "```phel\n(get-source-code ns-str name-str)\n```\nReturns the source code of the definition identified by namespace and name\n  strings, or nil if the source file cannot be found or metadata is missing.",
        "signatures": [
            "(get-source-code ns-str name-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L357",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(get-source-code ns-str name-str)\n```\nReturns the source code of the definition identified by namespace and name\n  strings, or nil if the source file cannot be found or metadata is missing.",
            "example": "(get-source-code \"phel\\core\" \"map\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ns-str name-str]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/get-symbol-info",
        "description": "Returns a hash-map of structured metadata for the definition identified by\n  namespace and name strings. Returns nil if no such definition exists.\n\n  Keys: :doc, :file, :line, :column, :end-line, :end-column, :private,\n        :deprecated, :min-arity, :max-arity, :is-variadic, :ns, :name",
        "doc": "```phel\n(get-symbol-info ns-str name-str)\n```\nReturns a hash-map of structured metadata for the definition identified by\n  namespace and name strings. Returns nil if no such definition exists.\n\n  Keys: :doc, :file, :line, :column, :end-line, :end-column, :private,\n        :deprecated, :min-arity, :max-arity, :is-variadic, :ns, :name",
        "signatures": [
            "(get-symbol-info ns-str name-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L236",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(get-symbol-info ns-str name-str)\n```\nReturns a hash-map of structured metadata for the definition identified by\n  namespace and name strings. Returns nil if no such definition exists.\n\n  Keys: :doc, :file, :line, :column, :end-line, :end-column, :private,\n        :deprecated, :min-arity, :max-arity, :is-variadic, :ns, :name",
            "example": "(get-symbol-info \"phel\\core\" \"map\")",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[ns-str name-str]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/intern",
        "description": "Finds or creates a definition named by name-str in namespace ns-str,\n  setting its root value to val when supplied (defaults to nil). The\n  namespace is auto-registered by the underlying `addDefinition` call.\n  Returns the fully qualified symbol (with the namespace in display form).",
        "doc": "```phel\n(intern ns-str name-str & rest)\n```\nFinds or creates a definition named by name-str in namespace ns-str,\n  setting its root value to val when supplied (defaults to nil). The\n  namespace is auto-registered by the underlying `addDefinition` call.\n  Returns the fully qualified symbol (with the namespace in display form).",
        "signatures": [
            "(intern ns-str name-str & rest)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L412",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(intern ns-str name-str & rest)\n```\nFinds or creates a definition named by name-str in namespace ns-str,\n  setting its root value to val when supplied (defaults to nil). The\n  namespace is auto-registered by the underlying `addDefinition` call.\n  Returns the fully qualified symbol (with the namespace in display form).",
            "example": "(intern \"user\" \"x\" 42) ; => user/x",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[ns-str name-str & rest]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/load-file",
        "description": "Loads and evaluates a Phel source file in the current REPL session.\n  Reads the file content and evaluates it using the compiler, preserving\n  the current REPL namespace context. Returns the result of the last expression.",
        "doc": "```phel\n(load-file path)\n```\nLoads and evaluates a Phel source file in the current REPL session.\n  Reads the file content and evaluates it using the compiler, preserving\n  the current REPL namespace context. Returns the result of the last expression.",
        "signatures": [
            "(load-file path)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L218",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(load-file path)\n```\nLoads and evaluates a Phel source file in the current REPL session.\n  Reads the file content and evaluates it using the compiler, preserving\n  the current REPL namespace context. Returns the result of the last expression.",
            "example": "(load-file \"src/my-module.phel\")",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[path]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/loaded-namespaces",
        "description": "Returns all namespaces currently loaded in the REPL, in dot-separated\n  display form.",
        "doc": "```phel\n(loaded-namespaces)\n```\nReturns all namespaces currently loaded in the REPL, in dot-separated\n  display form.",
        "signatures": [
            "(loaded-namespaces)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L24",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(loaded-namespaces)\n```\nReturns all namespaces currently loaded in the REPL, in dot-separated\n  display form.",
            "example": "(loaded-namespaces) ; => [\"phel.core\" \"phel.repl\"]",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/macroexpand",
        "description": "Recursively expands the given form until it is no longer a macro call.\n  The form must be quoted to prevent evaluation, matching Clojure semantics.",
        "doc": "```phel\n(macroexpand form)\n```\nRecursively expands the given form until it is no longer a macro call.\n  The form must be quoted to prevent evaluation, matching Clojure semantics.",
        "signatures": [
            "(macroexpand form)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L583",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(macroexpand form)\n```\nRecursively expands the given form until it is no longer a macro call.\n  The form must be quoted to prevent evaluation, matching Clojure semantics.",
            "example": "(macroexpand '(when true 1 2))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[form]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/macroexpand-1",
        "description": "Expands the given form once if it is a macro call. The form must be\n  quoted to prevent evaluation, matching Clojure semantics.",
        "doc": "```phel\n(macroexpand-1 form)\n```\nExpands the given form once if it is a macro call. The form must be\n  quoted to prevent evaluation, matching Clojure semantics.",
        "signatures": [
            "(macroexpand-1 form)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L575",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(macroexpand-1 form)\n```\nExpands the given form once if it is a macro call. The form must be\n  quoted to prevent evaluation, matching Clojure semantics.",
            "example": "(macroexpand-1 '(when true 1 2))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[form]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/macroexpand-1-form",
        "description": "Expands the given form once if it is a macro call.\n  Takes a quoted form and returns the expanded form, or the original\n  form unchanged if it is not a macro call. Uses the CompilerFacade\n  to perform the expansion without going through analyze+emit.",
        "doc": "```phel\n(macroexpand-1-form form)\n```\nExpands the given form once if it is a macro call.\n  Takes a quoted form and returns the expanded form, or the original\n  form unchanged if it is not a macro call. Uses the CompilerFacade\n  to perform the expansion without going through analyze+emit.",
        "signatures": [
            "(macroexpand-1-form form)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L554",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(macroexpand-1-form form)\n```\nExpands the given form once if it is a macro call.\n  Takes a quoted form and returns the expanded form, or the original\n  form unchanged if it is not a macro call. Uses the CompilerFacade\n  to perform the expansion without going through analyze+emit.",
            "example": "(macroexpand-1-form '(defn foo [x] x))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[form]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/macroexpand-form",
        "description": "Recursively expands the given form until it is no longer a macro call.\n  Takes a quoted form and returns the fully expanded form. Uses the\n  CompilerFacade to perform the expansion without going through analyze+emit.",
        "doc": "```phel\n(macroexpand-form form)\n```\nRecursively expands the given form until it is no longer a macro call.\n  Takes a quoted form and returns the fully expanded form. Uses the\n  CompilerFacade to perform the expansion without going through analyze+emit.",
        "signatures": [
            "(macroexpand-form form)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L565",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(macroexpand-form form)\n```\nRecursively expands the given form until it is no longer a macro call.\n  Takes a quoted form and returns the fully expanded form. Uses the\n  CompilerFacade to perform the expansion without going through analyze+emit.",
            "example": "(macroexpand-form '(defn foo [x] x))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[form]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/ns-aliases",
        "description": "Returns a hash-map of {alias => namespace} for all require aliases in the\n  given namespace string. Target namespaces are returned in display form.",
        "doc": "```phel\n(ns-aliases ns-str)\n```\nReturns a hash-map of {alias => namespace} for all require aliases in the\n  given namespace string. Target namespaces are returned in display form.",
        "signatures": [
            "(ns-aliases ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L457",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ns-aliases ns-str)\n```\nReturns a hash-map of {alias => namespace} for all require aliases in the\n  given namespace string. Target namespaces are returned in display form.",
            "example": "(ns-aliases *ns*) ; => {\"repl\" \"phel.repl\" ...}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/ns-interns",
        "description": "Returns a hash-map of {name => value} for every definition in the\n  given namespace, including private ones. Returns an empty map if the\n  namespace has no definitions.",
        "doc": "```phel\n(ns-interns ns-str)\n```\nReturns a hash-map of {name => value} for every definition in the\n  given namespace, including private ones. Returns an empty map if the\n  namespace has no definitions.",
        "signatures": [
            "(ns-interns ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L427",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ns-interns ns-str)\n```\nReturns a hash-map of {name => value} for every definition in the\n  given namespace, including private ones. Returns an empty map if the\n  namespace has no definitions.",
            "example": "(ns-interns \"phel\\core\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/ns-list",
        "description": "Returns a sorted vector of all loaded namespace names in display form.",
        "doc": "```phel\n(ns-list)\n```\nReturns a sorted vector of all loaded namespace names in display form.",
        "signatures": [
            "(ns-list)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L36",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ns-list)\n```\nReturns a sorted vector of all loaded namespace names in display form.",
            "example": "(ns-list) ; => [\"phel.core\" \"phel.repl\" ...]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/ns-publics",
        "description": "Returns a hash-map of {name => value} for all public definitions in the\n  given namespace string. Private definitions are excluded.",
        "doc": "```phel\n(ns-publics ns-str)\n```\nReturns a hash-map of {name => value} for all public definitions in the\n  given namespace string. Private definitions are excluded.",
        "signatures": [
            "(ns-publics ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L441",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ns-publics ns-str)\n```\nReturns a hash-map of {name => value} for all public definitions in the\n  given namespace string. Private definitions are excluded.",
            "example": "(ns-publics \"phel\\core\") ; => {\"map\" <fn> \"filter\" <fn> ...}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/ns-refers",
        "description": "Returns a hash-map of {name => source-namespace} for all referred symbols\n  in the given namespace string. Source namespaces are returned in display form.",
        "doc": "```phel\n(ns-refers ns-str)\n```\nReturns a hash-map of {name => source-namespace} for all referred symbols\n  in the given namespace string. Source namespaces are returned in display form.",
        "signatures": [
            "(ns-refers ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L470",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ns-refers ns-str)\n```\nReturns a hash-map of {name => source-namespace} for all referred symbols\n  in the given namespace string. Source namespaces are returned in display form.",
            "example": "(ns-refers *ns*) ; => {\"doc\" \"phel.repl\" ...}",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/print-colorful",
        "description": "Prints arguments with colored output.",
        "doc": "```phel\n(print-colorful & xs)\n```\nPrints arguments with colored output.",
        "signatures": [
            "(print-colorful & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L184",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(print-colorful & xs)\n```\nPrints arguments with colored output.",
            "example": "(print-colorful [1 2 3])",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/println-colorful",
        "description": "Prints arguments with colored output followed by a newline.",
        "doc": "```phel\n(println-colorful & xs)\n```\nPrints arguments with colored output followed by a newline.",
        "signatures": [
            "(println-colorful & xs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L191",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(println-colorful & xs)\n```\nPrints arguments with colored output followed by a newline.",
            "example": "(println-colorful [1 2 3])",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& xs]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/remove-ns",
        "description": "Removes the namespace and all of its definitions from the registry.\n  Use with caution. Returns nil.",
        "doc": "```phel\n(remove-ns ns-str)\n```\nRemoves the namespace and all of its definitions from the registry.\n  Use with caution. Returns nil.",
        "signatures": [
            "(remove-ns ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L403",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(remove-ns ns-str)\n```\nRemoves the namespace and all of its definitions from the registry.\n  Use with caution. Returns nil.",
            "example": "(remove-ns \"my-app.tmp\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/require",
        "description": "Requires a Phel module into the environment.\n  Accepts both the flat form and the Clojure-compatible vector form:\n    (require 'phel\\string :as str)\n    (require '[phel\\string :as str])\n    (require '[phel\\string :as str :refer [blank?]])",
        "doc": "```phel\n(require sym & args)\n```\nRequires a Phel module into the environment.\n  Accepts both the flat form and the Clojure-compatible vector form:\n    (require 'phel\\string :as str)\n    (require '[phel\\string :as str])\n    (require '[phel\\string :as str :refer [blank?]])",
        "signatures": [
            "(require sym & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L138",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(require sym & args)\n```\nRequires a Phel module into the environment.\n  Accepts both the flat form and the Clojure-compatible vector form:\n    (require 'phel\\string :as str)\n    (require '[phel\\string :as str])\n    (require '[phel\\string :as str :refer [blank?]])",
            "example": "(require '[phel\\string :as str]) ; => phel\\string",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[sym & args]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/review",
        "description": "Gets an AI code review for Phel code.",
        "doc": "```phel\n(review code-str)\n```\nGets an AI code review for Phel code.",
        "signatures": [
            "(review code-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L688",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(review code-str)\n```\nGets an AI code review for Phel code.",
            "example": "(review \"(defn add [a b] (+ a b))\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[code-str]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/search-doc",
        "description": "Searches docstrings across all loaded namespaces for the given string.\n  Prints matching function names and their documentation.",
        "doc": "```phel\n(search-doc search)\n```\nSearches docstrings across all loaded namespaces for the given string.\n  Prints matching function names and their documentation.",
        "signatures": [
            "(search-doc search)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L483",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(search-doc search)\n```\nSearches docstrings across all loaded namespaces for the given string.\n  Prints matching function names and their documentation.",
            "example": "(search-doc \"reduce\")",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[search]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/search-ns",
        "description": "Searches a namespace index for functions matching a query.",
        "doc": "```phel\n(search-ns query ns-index & [{:k k, :model model, :provider provider}])\n```\nSearches a namespace index for functions matching a query.",
        "signatures": [
            "(search-ns query ns-index & [{:k k, :model model, :provider provider}])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L728",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(search-ns query ns-index & [{:k k, :model model, :provider provider}])\n```\nSearches a namespace index for functions matching a query.",
            "example": "(search-ns \"transform collections\" my-ns-index 5)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[query ns-index & __phel_5273]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/source",
        "description": "Returns the source code of the given symbol as a string, or nil if unavailable.",
        "doc": "```phel\n(source sym)\n```\nReturns the source code of the given symbol as a string, or nil if unavailable.",
        "signatures": [
            "(source sym)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L374",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(source sym)\n```\nReturns the source code of the given symbol as a string, or nil if unavailable.",
            "example": "(source map)",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[sym]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/suggest",
        "description": "Get AI-suggested Phel code for a natural language description.",
        "doc": "```phel\n(suggest description)\n```\nGet AI-suggested Phel code for a natural language description.",
        "signatures": [
            "(suggest description)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L657",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(suggest description)\n```\nGet AI-suggested Phel code for a natural language description.",
            "example": "(suggest \"filter even numbers from a vector\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[description]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/symbol-info",
        "description": "Returns a hash-map of structured metadata for the given symbol, or nil if\n  the symbol cannot be resolved.\n\n  Keys: :doc, :file, :line, :column, :end-line, :end-column, :private,\n        :deprecated, :min-arity, :max-arity, :is-variadic, :ns, :name",
        "doc": "```phel\n(symbol-info sym)\n```\nReturns a hash-map of structured metadata for the given symbol, or nil if\n  the symbol cannot be resolved.\n\n  Keys: :doc, :file, :line, :column, :end-line, :end-column, :private,\n        :deprecated, :min-arity, :max-arity, :is-variadic, :ns, :name",
        "signatures": [
            "(symbol-info sym)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L266",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(symbol-info sym)\n```\nReturns a hash-map of structured metadata for the given symbol, or nil if\n  the symbol cannot be resolved.\n\n  Keys: :doc, :file, :line, :column, :end-line, :end-column, :private,\n        :deprecated, :min-arity, :max-arity, :is-variadic, :ns, :name",
            "example": "(symbol-info map) ; => {:doc \"...\" :ns \"phel\\core\" :name \"map\" ...}",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[sym]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/test-ns",
        "description": "Runs all tests in a given namespace from the REPL.\n  Requires the namespace if not already loaded, finds all deftest definitions,\n  runs them, prints results, and returns a hash-map with :pass, :fail, and :error counts.\n  Preserves outer test state so it can be safely called during a test run.",
        "doc": "```phel\n(test-ns ns-str)\n```\nRuns all tests in a given namespace from the REPL.\n  Requires the namespace if not already loaded, finds all deftest definitions,\n  runs them, prints results, and returns a hash-map with :pass, :fail, and :error counts.\n  Preserves outer test state so it can be safely called during a test run.",
        "signatures": [
            "(test-ns ns-str)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L534",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(test-ns ns-str)\n```\nRuns all tests in a given namespace from the REPL.\n  Requires the namespace if not already loaded, finds all deftest definitions,\n  runs them, prints results, and returns a hash-map with :pass, :fail, and :error counts.\n  Preserves outer test state so it can be safely called during a test run.",
            "example": "(test-ns \"phel-test\\test\\core\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[ns-str]"
        }
    },
    {
        "namespace": "repl",
        "name": "repl/use",
        "description": "Adds a use statement to the environment.",
        "doc": "```phel\n(use sym & args)\n```\nAdds a use statement to the environment.",
        "signatures": [
            "(use sym & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/repl.phel#L160",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(use sym & args)\n```\nAdds a use statement to the environment.",
            "example": "(use DateTime :as DT) ; => DateTime",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[sym & args]"
        }
    },
    {
        "namespace": "router",
        "name": "router/CompiledSymfonyRouter",
        "description": "Creates a new CompiledSymfonyRouter struct.",
        "doc": "```phel\n(CompiledSymfonyRouter normalized-routes matcher generator indexed-routes)\n```\nCreates a new CompiledSymfonyRouter struct.",
        "signatures": [
            "(CompiledSymfonyRouter normalized-routes matcher generator indexed-routes)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/router.phel#L221",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(CompiledSymfonyRouter normalized-routes matcher generator indexed-routes)\n```\nCreates a new CompiledSymfonyRouter struct.",
            "start-location": {},
            "end-location": {},
            "min-arity": 4,
            "is-variadic": false,
            "arglists": "[normalized-routes matcher generator indexed-routes]"
        }
    },
    {
        "namespace": "router",
        "name": "router/CompiledSymfonyRouter?",
        "description": "Checks if `x` is an instance of the CompiledSymfonyRouter struct.",
        "doc": "```phel\n(CompiledSymfonyRouter? x)\n```\nChecks if `x` is an instance of the CompiledSymfonyRouter struct.",
        "signatures": [
            "(CompiledSymfonyRouter? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/router.phel#L221",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(CompiledSymfonyRouter? x)\n```\nChecks if `x` is an instance of the CompiledSymfonyRouter struct.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "router",
        "name": "router/SymfonyRouter",
        "description": "Creates a new SymfonyRouter struct.",
        "doc": "```phel\n(SymfonyRouter normalized-routes route-collection matcher generator)\n```\nCreates a new SymfonyRouter struct.",
        "signatures": [
            "(SymfonyRouter normalized-routes route-collection matcher generator)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/router.phel#L179",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(SymfonyRouter normalized-routes route-collection matcher generator)\n```\nCreates a new SymfonyRouter struct.",
            "start-location": {},
            "end-location": {},
            "min-arity": 4,
            "is-variadic": false,
            "arglists": "[normalized-routes route-collection matcher generator]"
        }
    },
    {
        "namespace": "router",
        "name": "router/SymfonyRouter?",
        "description": "Checks if `x` is an instance of the SymfonyRouter struct.",
        "doc": "```phel\n(SymfonyRouter? x)\n```\nChecks if `x` is an instance of the SymfonyRouter struct.",
        "signatures": [
            "(SymfonyRouter? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/router.phel#L179",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(SymfonyRouter? x)\n```\nChecks if `x` is an instance of the SymfonyRouter struct.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "router",
        "name": "router/compiled-router",
        "description": "Like `router` but performs Symfony's route compilation at macro-expansion\n  time. The resulting router uses Symfony's `CompiledUrlMatcher`/`Generator`\n  which are ~3x faster than their dynamic counterparts for large route\n  tables.\n\n  Because compilation runs during macro expansion, `raw-routes` must be a\n  literal vector at the call site \u2014 it cannot be built from runtime values.\n  Use `router` if your routes are dynamic.",
        "doc": "```phel\n(compiled-router raw-routes & [options])\n```\nLike `router` but performs Symfony's route compilation at macro-expansion\n  time. The resulting router uses Symfony's `CompiledUrlMatcher`/`Generator`\n  which are ~3x faster than their dynamic counterparts for large route\n  tables.\n\n  Because compilation runs during macro expansion, `raw-routes` must be a\n  literal vector at the call site \u2014 it cannot be built from runtime values.\n  Use `router` if your routes are dynamic.",
        "signatures": [
            "(compiled-router raw-routes & [options])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/router.phel#L231",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(compiled-router raw-routes & [options])\n```\nLike `router` but performs Symfony's route compilation at macro-expansion\n  time. The resulting router uses Symfony's `CompiledUrlMatcher`/`Generator`\n  which are ~3x faster than their dynamic counterparts for large route\n  tables.\n\n  Because compilation runs during macro expansion, `raw-routes` must be a\n  literal vector at the call site \u2014 it cannot be built from runtime values.\n  Use `router` if your routes are dynamic.",
            "example": "(compiled-router [[\"/ping\" {:get {:handler pong}}]])",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[raw-routes & __phel_5506]"
        }
    },
    {
        "namespace": "router",
        "name": "router/flatten-routes",
        "description": "Flattens nested routes to a vector of `[path data]` tuples.\n\n  Parent paths are concatenated with their children's paths and parent data\n  maps are deep-merged into their children's data. `path-prefix` and\n  `common-data` are merged into every route and let you mount a subtree under\n  a prefix or share data across all routes.",
        "doc": "```phel\n(flatten-routes raw-routes path-prefix common-data)\n```\nFlattens nested routes to a vector of `[path data]` tuples.\n\n  Parent paths are concatenated with their children's paths and parent data\n  maps are deep-merged into their children's data. `path-prefix` and\n  `common-data` are merged into every route and let you mount a subtree under\n  a prefix or share data across all routes.",
        "signatures": [
            "(flatten-routes raw-routes path-prefix common-data)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/router.phel#L39",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(flatten-routes raw-routes path-prefix common-data)\n```\nFlattens nested routes to a vector of `[path data]` tuples.\n\n  Parent paths are concatenated with their children's paths and parent data\n  maps are deep-merged into their children's data. `path-prefix` and\n  `common-data` are merged into every route and let you mount a subtree under\n  a prefix or share data across all routes.",
            "example": "(flatten-routes [\"/api\" {:middleware [:auth]}\n                 [\"/ping\" {:handler :ping}]] \"\" {})\n; => [[\"/api/ping\" {:middleware [:auth] :handler :ping}]]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[raw-routes path-prefix common-data]"
        }
    },
    {
        "namespace": "router",
        "name": "router/generate",
        "description": "Generate a url for a route",
        "doc": "```phel\n(generate this route-name parameter)\n```\nGenerate a url for a route",
        "signatures": [
            "(generate this route-name parameter)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/router.phel#L118",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(generate this route-name parameter)\n```\nGenerate a url for a route",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[this route-name parameter]"
        }
    },
    {
        "namespace": "router",
        "name": "router/handler",
        "description": "Builds a `request -> response` function from a router.\n\n  Matching flow per request:\n\n  1. Resolve the request's path via `match-by-path`.\n  2. Look up the handler for the request method in the precompiled dispatch\n     table, falling back to the route's method-agnostic `:handler`.\n  3. Invoke the handler with the request enriched with `[:attributes :match]`\n     and `[:attributes :route-data]`. A `nil` response triggers the\n     `:not-acceptable` handler.\n\n  Options:\n\n  | key                   | description |\n  | ----------------------|-------------|\n  | `:middleware`         | global middleware applied to every matched route\n  | `:default-handler`    | fallback used for any 404/405/406 case not covered by a specific override\n  | `:not-found`          | handler invoked when no route matches (HTTP 404)\n  | `:method-not-allowed` | handler invoked when the path matches but no handler exists for the request method (HTTP 405)\n  | `:not-acceptable`     | handler invoked when a matched handler returns `nil` (HTTP 406)\n\n  Dispatch is precompiled at handler construction time, so per-request work\n  is reduced to two hash-map lookups.",
        "doc": "```phel\n(handler router & [options])\n```\nBuilds a `request -> response` function from a router.\n\n  Matching flow per request:\n\n  1. Resolve the request's path via `match-by-path`.\n  2. Look up the handler for the request method in the precompiled dispatch\n     table, falling back to the route's method-agnostic `:handler`.\n  3. Invoke the handler with the request enriched with `[:attributes :match]`\n     and `[:attributes :route-data]`. A `nil` response triggers the\n     `:not-acceptable` handler.\n\n  Options:\n\n  | key                   | description |\n  | ----------------------|-------------|\n  | `:middleware`         | global middleware applied to every matched route\n  | `:default-handler`    | fallback used for any 404/405/406 case not covered by a specific override\n  | `:not-found`          | handler invoked when no route matches (HTTP 404)\n  | `:method-not-allowed` | handler invoked when the path matches but no handler exists for the request method (HTTP 405)\n  | `:not-acceptable`     | handler invoked when a matched handler returns `nil` (HTTP 406)\n\n  Dispatch is precompiled at handler construction time, so per-request work\n  is reduced to two hash-map lookups.",
        "signatures": [
            "(handler router & [options])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/router.phel#L260",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(handler router & [options])\n```\nBuilds a `request -> response` function from a router.\n\n  Matching flow per request:\n\n  1. Resolve the request's path via `match-by-path`.\n  2. Look up the handler for the request method in the precompiled dispatch\n     table, falling back to the route's method-agnostic `:handler`.\n  3. Invoke the handler with the request enriched with `[:attributes :match]`\n     and `[:attributes :route-data]`. A `nil` response triggers the\n     `:not-acceptable` handler.\n\n  Options:\n\n  | key                   | description |\n  | ----------------------|-------------|\n  | `:middleware`         | global middleware applied to every matched route\n  | `:default-handler`    | fallback used for any 404/405/406 case not covered by a specific override\n  | `:not-found`          | handler invoked when no route matches (HTTP 404)\n  | `:method-not-allowed` | handler invoked when the path matches but no handler exists for the request method (HTTP 405)\n  | `:not-acceptable`     | handler invoked when a matched handler returns `nil` (HTTP 406)\n\n  Dispatch is precompiled at handler construction time, so per-request work\n  is reduced to two hash-map lookups.",
            "example": "(handler (router [[\"/ping\" {:get {:handler pong}}]])\n         {:middleware [logging-mw]\n          :not-found  (fn [_] {:status 404 :body \"nope\"})})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[router & __phel_5539]"
        }
    },
    {
        "namespace": "router",
        "name": "router/match-by-name",
        "description": "Matches a route given a route name. Returns nil if route can't be found.",
        "doc": "```phel\n(match-by-name this route-name)\n```\nMatches a route given a route name. Returns nil if route can't be found.",
        "signatures": [
            "(match-by-name this route-name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/router.phel#L118",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(match-by-name this route-name)\n```\nMatches a route given a route name. Returns nil if route can't be found.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[this route-name]"
        }
    },
    {
        "namespace": "router",
        "name": "router/match-by-path",
        "description": "Matches a route given a path. Returns nil if path doesn't match.",
        "doc": "```phel\n(match-by-path this path)\n```\nMatches a route given a path. Returns nil if path doesn't match.",
        "signatures": [
            "(match-by-path this path)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/router.phel#L118",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(match-by-path this path)\n```\nMatches a route given a path. Returns nil if path doesn't match.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[this path]"
        }
    },
    {
        "namespace": "router",
        "name": "router/router",
        "description": "Builds a dynamic `Router` from a nested route tree.\n\n  Routes are described as `[path data children*]` where `data` is an optional\n  hash-map. Children inherit their parent's path prefix and have parent data\n  deep-merged into their own. `data` may contain:\n\n  - `:handler` \u2014 a 1-arg `request -> response` function (matches any method)\n  - `:middleware` \u2014 a vector of `(fn [handler request])` wrappers\n  - `:name` \u2014 a keyword used for URL generation via `match-by-name` / `generate`\n  - method keys (`:get`, `:post`, \u2026) \u2014 nested maps with their own `:handler`\n    and `:middleware` that apply only for that HTTP method\n\n  `options` accepts `:path` (prefix prepended to every route) and `:data`\n  (merged into every route's data).",
        "doc": "```phel\n(router raw-routes & [options])\n```\nBuilds a dynamic `Router` from a nested route tree.\n\n  Routes are described as `[path data children*]` where `data` is an optional\n  hash-map. Children inherit their parent's path prefix and have parent data\n  deep-merged into their own. `data` may contain:\n\n  - `:handler` \u2014 a 1-arg `request -> response` function (matches any method)\n  - `:middleware` \u2014 a vector of `(fn [handler request])` wrappers\n  - `:name` \u2014 a keyword used for URL generation via `match-by-name` / `generate`\n  - method keys (`:get`, `:post`, \u2026) \u2014 nested maps with their own `:handler`\n    and `:middleware` that apply only for that HTTP method\n\n  `options` accepts `:path` (prefix prepended to every route) and `:data`\n  (merged into every route's data).",
        "signatures": [
            "(router raw-routes & [options])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/router.phel#L195",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(router raw-routes & [options])\n```\nBuilds a dynamic `Router` from a nested route tree.\n\n  Routes are described as `[path data children*]` where `data` is an optional\n  hash-map. Children inherit their parent's path prefix and have parent data\n  deep-merged into their own. `data` may contain:\n\n  - `:handler` \u2014 a 1-arg `request -> response` function (matches any method)\n  - `:middleware` \u2014 a vector of `(fn [handler request])` wrappers\n  - `:name` \u2014 a keyword used for URL generation via `match-by-name` / `generate`\n  - method keys (`:get`, `:post`, \u2026) \u2014 nested maps with their own `:handler`\n    and `:middleware` that apply only for that HTTP method\n\n  `options` accepts `:path` (prefix prepended to every route) and `:data`\n  (merged into every route's data).",
            "example": "(router [[\"/ping\" {:get {:handler pong}}]])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[raw-routes & __phel_5478]"
        }
    },
    {
        "namespace": "router",
        "name": "router/routes",
        "description": "Returns all registered routes as a vector of [path data] tuples.",
        "doc": "```phel\n(routes this)\n```\nReturns all registered routes as a vector of [path data] tuples.",
        "signatures": [
            "(routes this)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/router.phel#L118",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(routes this)\n```\nReturns all registered routes as a vector of [path data] tuples.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[this]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/coerce",
        "description": "Walks `schema` and coerces string-shaped input into schema-required\n  types. Idempotent for already-typed values.",
        "doc": "```phel\n(coerce schema value)\n```\nWalks `schema` and coerces string-shaped input into schema-required\n  types. Idempotent for already-typed values.",
        "signatures": [
            "(coerce schema value)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L84",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(coerce schema value)\n```\nWalks `schema` and coerces string-shaped input into schema-required\n  types. Idempotent for already-typed values.",
            "example": "(coerce :int \"42\") ; => 42",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[schema value]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/conform",
        "description": "Coerces `value` against `schema`. Returns the coerced value on\n  success, otherwise `:phel.schema/invalid`.",
        "doc": "```phel\n(conform schema value)\n```\nCoerces `value` against `schema`. Returns the coerced value on\n  success, otherwise `:phel.schema/invalid`.",
        "signatures": [
            "(conform schema value)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L92",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(conform schema value)\n```\nCoerces `value` against `schema`. Returns the coerced value on\n  success, otherwise `:phel.schema/invalid`.",
            "example": "(conform :int \"42\") ; => 42",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[schema value]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/deref-ref",
        "description": "Returns the schema registered under `name`, or `nil`.",
        "doc": "```phel\n(deref-ref name)\n```\nReturns the schema registered under `name`, or `nil`.",
        "signatures": [
            "(deref-ref name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L138",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(deref-ref name)\n```\nReturns the schema registered under `name`, or `nil`.",
            "example": "(deref-ref :email)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[name]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/explain",
        "description": "Returns `nil` when `value` conforms to `schema`. On mismatch returns\n  `{:schema schema :value value :errors [...]}` with one error per\n  violation, each carrying `:path`, `:in`, `:schema`, `:value`, `:type`.",
        "doc": "```phel\n(explain schema value)\n```\nReturns `nil` when `value` conforms to `schema`. On mismatch returns\n  `{:schema schema :value value :errors [...]}` with one error per\n  violation, each carrying `:path`, `:in`, `:schema`, `:value`, `:type`.",
        "signatures": [
            "(explain schema value)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L67",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(explain schema value)\n```\nReturns `nil` when `value` conforms to `schema`. On mismatch returns\n  `{:schema schema :value value :errors [...]}` with one error per\n  violation, each carrying `:path`, `:in`, `:schema`, `:value`, `:type`.",
            "example": "(explain :int :oops)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[schema value]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/generate",
        "description": "Generates a single value conforming to `schema`. Accepts `:size` and\n  `:seed` options.",
        "doc": "```phel\n(generate schema)\n(generate schema opts)\n```\nGenerates a single value conforming to `schema`. Accepts `:size` and\n  `:seed` options.",
        "signatures": [
            "(generate schema)",
            "(generate schema opts)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L105",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(generate schema)\n(generate schema opts)\n```\nGenerates a single value conforming to `schema`. Accepts `:size` and\n  `:seed` options.",
            "example": "(generate :int)",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([schema] [schema opts])"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/human-readable-explain",
        "description": "Renders an `explain` result as a multi-line human string. Returns\n  `nil` for a `nil` input.",
        "doc": "```phel\n(human-readable-explain result)\n```\nRenders an `explain` result as a multi-line human string. Returns\n  `nil` for a `nil` input.",
        "signatures": [
            "(human-readable-explain result)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L76",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(human-readable-explain result)\n```\nRenders an `explain` result as a multi-line human string. Returns\n  `nil` for a `nil` input.",
            "example": "(human-readable-explain (explain :int :oops))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[result]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/instrument!",
        "description": "Registers `f` wrapped with `schema` under `name`. Returns the wrapped\n  function. The original is preserved so `unstrument!` can restore it.",
        "doc": "```phel\n(instrument! name f schema)\n```\nRegisters `f` wrapped with `schema` under `name`. Returns the wrapped\n  function. The original is preserved so `unstrument!` can restore it.",
        "signatures": [
            "(instrument! name f schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L193",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(instrument! name f schema)\n```\nRegisters `f` wrapped with `schema` under `name`. Returns the wrapped\n  function. The original is preserved so `unstrument!` can restore it.",
            "example": "(instrument! :add add [:=> [:int :int] :int])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[name f schema]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/instrumented?",
        "description": "Returns `true` if `name` is currently instrumented.",
        "doc": "```phel\n(instrumented? name)\n```\nReturns `true` if `name` is currently instrumented.",
        "signatures": [
            "(instrumented? name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L208",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(instrumented? name)\n```\nReturns `true` if `name` is currently instrumented.",
            "example": "(instrumented? :add)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[name]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/invalid-marker",
        "description": "Sentinel returned by `conform` when a value cannot be made to fit a\n  schema.",
        "doc": "Sentinel returned by `conform` when a value cannot be made to fit a\n  schema.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L100",
        "docUrl": "",
        "meta": {
            "doc": "Sentinel returned by `conform` when a value cannot be made to fit a\n  schema.",
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "schema",
        "name": "schema/register!",
        "description": "Registers `schema` under `name` in the global schema registry.",
        "doc": "```phel\n(register! name schema)\n```\nRegisters `schema` under `name` in the global schema registry.",
        "signatures": [
            "(register! name schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L124",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(register! name schema)\n```\nRegisters `schema` under `name` in the global schema registry.",
            "example": "(register! :email [:and :string [:re \"/@/\"]])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[name schema]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/registered?",
        "description": "Returns `true` if a schema is registered under `name`.",
        "doc": "```phel\n(registered? name)\n```\nReturns `true` if a schema is registered under `name`.",
        "signatures": [
            "(registered? name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L144",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(registered? name)\n```\nReturns `true` if a schema is registered under `name`.",
            "example": "(registered? :email)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[name]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/schema->gen",
        "description": "Returns the `phel\\test\\gen` generator associated with `schema`.",
        "doc": "```phel\n(schema->gen schema)\n```\nReturns the `phel\\test\\gen` generator associated with `schema`.",
        "signatures": [
            "(schema->gen schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L113",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(schema->gen schema)\n```\nReturns the `phel\\test\\gen` generator associated with `schema`.",
            "example": "(schema->gen :int)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[schema]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/schema-args",
        "description": "Returns the positional arguments of `schema` (children past the head\n  and optional options map).",
        "doc": "```phel\n(schema-args schema)\n```\nReturns the positional arguments of `schema` (children past the head\n  and optional options map).",
        "signatures": [
            "(schema-args schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L43",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(schema-args schema)\n```\nReturns the positional arguments of `schema` (children past the head\n  and optional options map).",
            "example": "(schema-args [:vector :int]) ; => [:int]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[schema]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/schema-check?",
        "description": "Returns `true` when runtime validation performed by the instrument\n  helpers is currently enabled.",
        "doc": "```phel\n(schema-check?)\n```\nReturns `true` when runtime validation performed by the instrument\n  helpers is currently enabled.",
        "signatures": [
            "(schema-check?)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L154",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(schema-check?)\n```\nReturns `true` when runtime validation performed by the instrument\n  helpers is currently enabled.",
            "example": "(schema-check?) ; => true",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/schema-head",
        "description": "Returns the dispatch head (kind keyword) of `schema`.",
        "doc": "```phel\n(schema-head schema)\n```\nReturns the dispatch head (kind keyword) of `schema`.",
        "signatures": [
            "(schema-head schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L37",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(schema-head schema)\n```\nReturns the dispatch head (kind keyword) of `schema`.",
            "example": "(schema-head [:vector :int]) ; => :vector",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[schema]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/schema-options",
        "description": "Returns the options map of `schema` or `{}`.",
        "doc": "```phel\n(schema-options schema)\n```\nReturns the options map of `schema` or `{}`.",
        "signatures": [
            "(schema-options schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L50",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(schema-options schema)\n```\nReturns the options map of `schema` or `{}`.",
            "example": "(schema-options [:map {:closed true} [:k :int]]) ; => {:closed true}",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[schema]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/schema?",
        "description": "Returns `true` if `x` has the shape of a schema value.",
        "doc": "```phel\n(schema? x)\n```\nReturns `true` if `x` has the shape of a schema value.",
        "signatures": [
            "(schema? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L31",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(schema? x)\n```\nReturns `true` if `x` has the shape of a schema value.",
            "example": "(schema? :int) ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/set-schema-check!",
        "description": "Enables (`true`) or disables (`false`) runtime validation. Returns\n  the new value.",
        "doc": "```phel\n(set-schema-check! enabled?)\n```\nEnables (`true`) or disables (`false`) runtime validation. Returns\n  the new value.",
        "signatures": [
            "(set-schema-check! enabled?)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L162",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(set-schema-check! enabled?)\n```\nEnables (`true`) or disables (`false`) runtime validation. Returns\n  the new value.",
            "example": "(set-schema-check! false)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[enabled?]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/unregister!",
        "description": "Removes the schema bound to `name`. Returns `nil`.",
        "doc": "```phel\n(unregister! name)\n```\nRemoves the schema bound to `name`. Returns `nil`.",
        "signatures": [
            "(unregister! name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L131",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(unregister! name)\n```\nRemoves the schema bound to `name`. Returns `nil`.",
            "example": "(unregister! :email)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[name]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/unstrument!",
        "description": "Removes the instrumentation registered under `name` and returns the\n  original, unwrapped function (or `nil` if no entry).",
        "doc": "```phel\n(unstrument! name)\n```\nRemoves the instrumentation registered under `name` and returns the\n  original, unwrapped function (or `nil` if no entry).",
        "signatures": [
            "(unstrument! name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L201",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(unstrument! name)\n```\nRemoves the instrumentation registered under `name` and returns the\n  original, unwrapped function (or `nil` if no entry).",
            "example": "(unstrument! :add)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[name]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/validate",
        "description": "Returns `true` if `value` conforms to `schema`, otherwise `false`.",
        "doc": "```phel\n(validate schema value)\n```\nReturns `true` if `value` conforms to `schema`, otherwise `false`.",
        "signatures": [
            "(validate schema value)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L60",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(validate schema value)\n```\nReturns `true` if `value` conforms to `schema`, otherwise `false`.",
            "example": "(validate :int 1) ; => true",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[schema value]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/with-schema-check",
        "description": "Invokes zero-arg thunk `f` with runtime validation forced to\n  `enabled?`. The previous value is restored on return or exception.",
        "doc": "```phel\n(with-schema-check enabled? f)\n```\nInvokes zero-arg thunk `f` with runtime validation forced to\n  `enabled?`. The previous value is restored on return or exception.",
        "signatures": [
            "(with-schema-check enabled? f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L170",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(with-schema-check enabled? f)\n```\nInvokes zero-arg thunk `f` with runtime validation forced to\n  `enabled?`. The previous value is restored on return or exception.",
            "example": "(with-schema-check false (fn [] (risky-fn)))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[enabled? f]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/wrap-with-function-schema",
        "description": "Wraps `f` with the `[:=> args ret]` function schema.",
        "doc": "```phel\n(wrap-with-function-schema f schema)\n```\nWraps `f` with the `[:=> args ret]` function schema.",
        "signatures": [
            "(wrap-with-function-schema f schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L186",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(wrap-with-function-schema f schema)\n```\nWraps `f` with the `[:=> args ret]` function schema.",
            "example": "(wrap-with-function-schema add [:=> [:int :int] :int])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[f schema]"
        }
    },
    {
        "namespace": "schema",
        "name": "schema/wrap-with-schema",
        "description": "Wraps `f` so calls validate arguments and return values against the\n  supplied schemas.",
        "doc": "```phel\n(wrap-with-schema f arg-schema return-schema)\n```\nWraps `f` so calls validate arguments and return values against the\n  supplied schemas.",
        "signatures": [
            "(wrap-with-schema f arg-schema return-schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema.phel#L178",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(wrap-with-schema f arg-schema return-schema)\n```\nWraps `f` so calls validate arguments and return values against the\n  supplied schemas.",
            "example": "(wrap-with-schema add [:int :int] :int)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[f arg-schema return-schema]"
        }
    },
    {
        "namespace": "schema.coercer",
        "name": "schema.coercer/coerce",
        "description": "Walks `schema` and returns `value` with string-typed inputs coerced\n  into their schema-required types. Already-typed values pass through.\n  Unknown or untranslatable values are returned unchanged so validation\n  can report the real failure.",
        "doc": "```phel\n(coerce schema value)\n```\nWalks `schema` and returns `value` with string-typed inputs coerced\n  into their schema-required types. Already-typed values pass through.\n  Unknown or untranslatable values are returned unchanged so validation\n  can report the real failure.",
        "signatures": [
            "(coerce schema value)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/coercer.phel#L201",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(coerce schema value)\n```\nWalks `schema` and returns `value` with string-typed inputs coerced\n  into their schema-required types. Already-typed values pass through.\n  Unknown or untranslatable values are returned unchanged so validation\n  can report the real failure.",
            "example": "(coerce :int \"42\") ; => 42",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[schema value]"
        }
    },
    {
        "namespace": "schema.coercer",
        "name": "schema.coercer/conform",
        "description": "Coerces `value` against `schema`. Returns the coerced value if it\n  then validates, otherwise the invalid marker `:phel.schema/invalid`.",
        "doc": "```phel\n(conform schema value)\n```\nCoerces `value` against `schema`. Returns the coerced value if it\n  then validates, otherwise the invalid marker `:phel.schema/invalid`.",
        "signatures": [
            "(conform schema value)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/coercer.phel#L214",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(conform schema value)\n```\nCoerces `value` against `schema`. Returns the coerced value if it\n  then validates, otherwise the invalid marker `:phel.schema/invalid`.",
            "example": "(conform :int \"42\") ; => 42",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[schema value]"
        }
    },
    {
        "namespace": "schema.coercer",
        "name": "schema.coercer/invalid-marker",
        "description": "",
        "doc": "",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/coercer.phel#L16",
        "docUrl": "",
        "meta": {
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "schema.explainer",
        "name": "schema.explainer/explain",
        "description": "Returns `nil` if `value` conforms to `schema`, otherwise a map\n  describing the violations.",
        "doc": "```phel\n(explain schema value)\n```\nReturns `nil` if `value` conforms to `schema`, otherwise a map\n  describing the violations.",
        "signatures": [
            "(explain schema value)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/explainer.phel#L216",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(explain schema value)\n```\nReturns `nil` if `value` conforms to `schema`, otherwise a map\n  describing the violations.",
            "example": "(explain :int :oops)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[schema value]"
        }
    },
    {
        "namespace": "schema.explainer",
        "name": "schema.explainer/human-readable-explain",
        "description": "Renders an explain result as a multi-line human string suitable for\n  REPL or CI output. Returns `nil` for a `nil` result.",
        "doc": "```phel\n(human-readable-explain result)\n```\nRenders an explain result as a multi-line human string suitable for\n  REPL or CI output. Returns `nil` for a `nil` result.",
        "signatures": [
            "(human-readable-explain result)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/explainer.phel#L237",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(human-readable-explain result)\n```\nRenders an explain result as a multi-line human string suitable for\n  REPL or CI output. Returns `nil` for a `nil` result.",
            "example": "(human-readable-explain (explain :int :oops))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[result]"
        }
    },
    {
        "namespace": "schema.generator",
        "name": "schema.generator/generate",
        "description": "Generates one random value conforming to `schema`. Accepts the same\n  `:size` and `:seed` options as `phel\\test\\gen/generate`.",
        "doc": "```phel\n(generate schema)\n(generate schema opts)\n```\nGenerates one random value conforming to `schema`. Accepts the same\n  `:size` and `:seed` options as `phel\\test\\gen/generate`.",
        "signatures": [
            "(generate schema)",
            "(generate schema opts)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/generator.phel#L186",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(generate schema)\n(generate schema opts)\n```\nGenerates one random value conforming to `schema`. Accepts the same\n  `:size` and `:seed` options as `phel\\test\\gen/generate`.",
            "example": "(generate :int)",
            "see-also": {},
            "end-location": {},
            "start-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([schema] [schema opts])"
        }
    },
    {
        "namespace": "schema.generator",
        "name": "schema.generator/schema->gen",
        "description": "Returns a `phel\\test\\gen` generator for `schema`. Honours a\n  `{:gen <gen>}` override in the schema options when present.",
        "doc": "```phel\n(schema->gen schema)\n```\nReturns a `phel\\test\\gen` generator for `schema`. Honours a\n  `{:gen <gen>}` override in the schema options when present.",
        "signatures": [
            "(schema->gen schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/generator.phel#L169",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(schema->gen schema)\n```\nReturns a `phel\\test\\gen` generator for `schema`. Honours a\n  `{:gen <gen>}` override in the schema options when present.",
            "example": "(schema->gen [:int])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[schema]"
        }
    },
    {
        "namespace": "schema.instrument",
        "name": "schema.instrument/clear-instrumented!",
        "description": "Removes every instrumentation entry. Returns `nil`.",
        "doc": "```phel\n(clear-instrumented!)\n```\nRemoves every instrumentation entry. Returns `nil`.",
        "signatures": [
            "(clear-instrumented!)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/instrument.phel#L165",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(clear-instrumented!)\n```\nRemoves every instrumentation entry. Returns `nil`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "schema.instrument",
        "name": "schema.instrument/function-schema?",
        "description": "Returns `true` if `schema` is a function schema of the shape\n  `[:=> args-schema return-schema]`.",
        "doc": "```phel\n(function-schema? schema)\n```\nReturns `true` if `schema` is a function schema of the shape\n  `[:=> args-schema return-schema]`.",
        "signatures": [
            "(function-schema? schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/instrument.phel#L62",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(function-schema? schema)\n```\nReturns `true` if `schema` is a function schema of the shape\n  `[:=> args-schema return-schema]`.",
            "example": "(function-schema? [:=> [:int] :int])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[schema]"
        }
    },
    {
        "namespace": "schema.instrument",
        "name": "schema.instrument/instrument!",
        "description": "Registers `f` under `name` (any key) wrapped with `schema`. Returns\n  the wrapped fn. Subsequent calls to `unstrument!` with the same name\n  can restore the original via `(instrumented-original name)`.",
        "doc": "```phel\n(instrument! name f schema)\n```\nRegisters `f` under `name` (any key) wrapped with `schema`. Returns\n  the wrapped fn. Subsequent calls to `unstrument!` with the same name\n  can restore the original via `(instrumented-original name)`.",
        "signatures": [
            "(instrument! name f schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/instrument.phel#L130",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(instrument! name f schema)\n```\nRegisters `f` under `name` (any key) wrapped with `schema`. Returns\n  the wrapped fn. Subsequent calls to `unstrument!` with the same name\n  can restore the original via `(instrumented-original name)`.",
            "example": "(def add* (instrument! :add add [:=> [:int :int] :int]))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[name f schema]"
        }
    },
    {
        "namespace": "schema.instrument",
        "name": "schema.instrument/instrumented-original",
        "description": "Returns the original, unwrapped function associated with `name`, or\n  `nil` if no instrumentation is registered under `name`.",
        "doc": "```phel\n(instrumented-original name)\n```\nReturns the original, unwrapped function associated with `name`, or\n  `nil` if no instrumentation is registered under `name`.",
        "signatures": [
            "(instrumented-original name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/instrument.phel#L157",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(instrumented-original name)\n```\nReturns the original, unwrapped function associated with `name`, or\n  `nil` if no instrumentation is registered under `name`.",
            "example": "(instrumented-original :add)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[name]"
        }
    },
    {
        "namespace": "schema.instrument",
        "name": "schema.instrument/instrumented?",
        "description": "Returns `true` if `name` currently has an instrumentation entry.",
        "doc": "```phel\n(instrumented? name)\n```\nReturns `true` if `name` currently has an instrumentation entry.",
        "signatures": [
            "(instrumented? name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/instrument.phel#L151",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(instrumented? name)\n```\nReturns `true` if `name` currently has an instrumentation entry.",
            "example": "(instrumented? :add)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[name]"
        }
    },
    {
        "namespace": "schema.instrument",
        "name": "schema.instrument/schema-check?",
        "description": "Returns `true` when runtime validation is enabled.",
        "doc": "```phel\n(schema-check?)\n```\nReturns `true` when runtime validation is enabled.",
        "signatures": [
            "(schema-check?)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/instrument.phel#L27",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(schema-check?)\n```\nReturns `true` when runtime validation is enabled.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "schema.instrument",
        "name": "schema.instrument/schema?",
        "description": "Returns `true` if `x` has the shape of a schema value (a keyword or a\n  vector whose head is a keyword, including the `:=>` function marker).",
        "doc": "```phel\n(schema? x)\n```\nReturns `true` if `x` has the shape of a schema value (a keyword or a\n  vector whose head is a keyword, including the `:=>` function marker).",
        "signatures": [
            "(schema? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/instrument.phel#L51",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(schema? x)\n```\nReturns `true` if `x` has the shape of a schema value (a keyword or a\n  vector whose head is a keyword, including the `:=>` function marker).",
            "example": "(schema? :int) ; => true",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "schema.instrument",
        "name": "schema.instrument/set-schema-check!",
        "description": "Enables (`true`) or disables (`false`) runtime validation performed by\n  `wrap-with-schema`/`instrument!`. Returns the new value.",
        "doc": "```phel\n(set-schema-check! enabled?)\n```\nEnables (`true`) or disables (`false`) runtime validation performed by\n  `wrap-with-schema`/`instrument!`. Returns the new value.",
        "signatures": [
            "(set-schema-check! enabled?)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/instrument.phel#L32",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(set-schema-check! enabled?)\n```\nEnables (`true`) or disables (`false`) runtime validation performed by\n  `wrap-with-schema`/`instrument!`. Returns the new value.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[enabled?]"
        }
    },
    {
        "namespace": "schema.instrument",
        "name": "schema.instrument/unstrument!",
        "description": "Unregisters the instrumentation bound to `name` and returns the\n  original (unwrapped) function if present, otherwise `nil`.",
        "doc": "```phel\n(unstrument! name)\n```\nUnregisters the instrumentation bound to `name` and returns the\n  original (unwrapped) function if present, otherwise `nil`.",
        "signatures": [
            "(unstrument! name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/instrument.phel#L141",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(unstrument! name)\n```\nUnregisters the instrumentation bound to `name` and returns the\n  original (unwrapped) function if present, otherwise `nil`.",
            "example": "(unstrument! :add)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[name]"
        }
    },
    {
        "namespace": "schema.instrument",
        "name": "schema.instrument/with-schema-check",
        "description": "Runs thunk `f` with runtime validation set to `enabled?`, restoring\n  the previous value even if `f` throws.",
        "doc": "```phel\n(with-schema-check enabled? f)\n```\nRuns thunk `f` with runtime validation set to `enabled?`, restoring\n  the previous value even if `f` throws.",
        "signatures": [
            "(with-schema-check enabled? f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/instrument.phel#L38",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(with-schema-check enabled? f)\n```\nRuns thunk `f` with runtime validation set to `enabled?`, restoring\n  the previous value even if `f` throws.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[enabled? f]"
        }
    },
    {
        "namespace": "schema.instrument",
        "name": "schema.instrument/wrap-with-function-schema",
        "description": "Convenience: accepts a `[:=> args-schema return-schema]` schema vector\n  and returns `f` wrapped accordingly.",
        "doc": "```phel\n(wrap-with-function-schema f schema)\n```\nConvenience: accepts a `[:=> args-schema return-schema]` schema vector\n  and returns `f` wrapped accordingly.",
        "signatures": [
            "(wrap-with-function-schema f schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/instrument.phel#L118",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(wrap-with-function-schema f schema)\n```\nConvenience: accepts a `[:=> args-schema return-schema]` schema vector\n  and returns `f` wrapped accordingly.",
            "example": "(wrap-with-function-schema add [:=> [:int :int] :int])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[f schema]"
        }
    },
    {
        "namespace": "schema.instrument",
        "name": "schema.instrument/wrap-with-schema",
        "description": "Wraps `f` so each call validates its arguments against `arg-schema`\n  (a vector of per-arg schemas) and its return value against\n  `return-schema`. When `schema-check?` returns `false` at call time\n  the wrapper short-circuits and invokes `f` directly, skipping\n  validation on both sides.",
        "doc": "```phel\n(wrap-with-schema f arg-schema return-schema)\n```\nWraps `f` so each call validates its arguments against `arg-schema`\n  (a vector of per-arg schemas) and its return value against\n  `return-schema`. When `schema-check?` returns `false` at call time\n  the wrapper short-circuits and invokes `f` directly, skipping\n  validation on both sides.",
        "signatures": [
            "(wrap-with-schema f arg-schema return-schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/instrument.phel#L100",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(wrap-with-schema f arg-schema return-schema)\n```\nWraps `f` so each call validates its arguments against `arg-schema`\n  (a vector of per-arg schemas) and its return value against\n  `return-schema`. When `schema-check?` returns `false` at call time\n  the wrapper short-circuits and invokes `f` directly, skipping\n  validation on both sides.",
            "example": "(wrap-with-schema add [:int :int] :int)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[f arg-schema return-schema]"
        }
    },
    {
        "namespace": "schema.registry",
        "name": "schema.registry/clear!",
        "description": "Removes every user-registered schema. Returns `nil`.",
        "doc": "```phel\n(clear!)\n```\nRemoves every user-registered schema. Returns `nil`.",
        "signatures": [
            "(clear!)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/registry.phel#L52",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(clear!)\n```\nRemoves every user-registered schema. Returns `nil`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "schema.registry",
        "name": "schema.registry/deref-ref",
        "description": "Returns the schema registered under `name`, or `nil` if no schema is\n  registered with that name.",
        "doc": "```phel\n(deref-ref name)\n```\nReturns the schema registered under `name`, or `nil` if no schema is\n  registered with that name.",
        "signatures": [
            "(deref-ref name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/registry.phel#L31",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(deref-ref name)\n```\nReturns the schema registered under `name`, or `nil` if no schema is\n  registered with that name.",
            "example": "(deref-ref :email)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[name]"
        }
    },
    {
        "namespace": "schema.registry",
        "name": "schema.registry/register!",
        "description": "Registers `schema` under `name` (usually a keyword). Overwrites any\n  previous entry. Returns the registered schema.",
        "doc": "```phel\n(register! name schema)\n```\nRegisters `schema` under `name` (usually a keyword). Overwrites any\n  previous entry. Returns the registered schema.",
        "signatures": [
            "(register! name schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/registry.phel#L14",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(register! name schema)\n```\nRegisters `schema` under `name` (usually a keyword). Overwrites any\n  previous entry. Returns the registered schema.",
            "example": "(register! :email [:and :string [:re #\"@\"]])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[name schema]"
        }
    },
    {
        "namespace": "schema.registry",
        "name": "schema.registry/registered?",
        "description": "Returns `true` if a schema is registered under `name`.",
        "doc": "```phel\n(registered? name)\n```\nReturns `true` if a schema is registered under `name`.",
        "signatures": [
            "(registered? name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/registry.phel#L39",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(registered? name)\n```\nReturns `true` if a schema is registered under `name`.",
            "example": "(registered? :email) ; => true/false",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[name]"
        }
    },
    {
        "namespace": "schema.registry",
        "name": "schema.registry/registry-snapshot",
        "description": "Returns the current registry as a plain map. Intended for inspection\n  and testing.",
        "doc": "```phel\n(registry-snapshot)\n```\nReturns the current registry as a plain map. Intended for inspection\n  and testing.",
        "signatures": [
            "(registry-snapshot)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/registry.phel#L46",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(registry-snapshot)\n```\nReturns the current registry as a plain map. Intended for inspection\n  and testing.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "schema.registry",
        "name": "schema.registry/unregister!",
        "description": "Removes the schema bound to `name`. Returns `nil`.",
        "doc": "```phel\n(unregister! name)\n```\nRemoves the schema bound to `name`. Returns `nil`.",
        "signatures": [
            "(unregister! name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/registry.phel#L23",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(unregister! name)\n```\nRemoves the schema bound to `name`. Returns `nil`.",
            "example": "(unregister! :email)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[name]"
        }
    },
    {
        "namespace": "schema.validator",
        "name": "schema.validator/map-entry-optional?",
        "description": "Returns `true` when a `[:map ...]` entry is declared with\n  `{:optional true}`.",
        "doc": "```phel\n(map-entry-optional? entry)\n```\nReturns `true` when a `[:map ...]` entry is declared with\n  `{:optional true}`.",
        "signatures": [
            "(map-entry-optional? entry)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/validator.phel#L209",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(map-entry-optional? entry)\n```\nReturns `true` when a `[:map ...]` entry is declared with\n  `{:optional true}`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[entry]"
        }
    },
    {
        "namespace": "schema.validator",
        "name": "schema.validator/map-entry-options",
        "description": "Options map for a `[:map ...]` entry `[key opts? schema]`. Returns an\n  empty map when the entry has no options position.",
        "doc": "```phel\n(map-entry-options entry)\n```\nOptions map for a `[:map ...]` entry `[key opts? schema]`. Returns an\n  empty map when the entry has no options position.",
        "signatures": [
            "(map-entry-options entry)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/validator.phel#L193",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(map-entry-options entry)\n```\nOptions map for a `[:map ...]` entry `[key opts? schema]`. Returns an\n  empty map when the entry has no options position.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[entry]"
        }
    },
    {
        "namespace": "schema.validator",
        "name": "schema.validator/map-entry-schema",
        "description": "Inner schema of a `[:map ...]` entry, skipping the options map when\n  present.",
        "doc": "```phel\n(map-entry-schema entry)\n```\nInner schema of a `[:map ...]` entry, skipping the options map when\n  present.",
        "signatures": [
            "(map-entry-schema entry)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/validator.phel#L201",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(map-entry-schema entry)\n```\nInner schema of a `[:map ...]` entry, skipping the options map when\n  present.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[entry]"
        }
    },
    {
        "namespace": "schema.validator",
        "name": "schema.validator/resolve-or-default",
        "description": "Like `resolve-or-throw`, but returns `default` when `head` is not\n  registered instead of throwing. Used by `coerce` where unknown heads\n  are intentionally passed through unchanged for downstream validation\n  to flag.",
        "doc": "```phel\n(resolve-or-default head f default)\n```\nLike `resolve-or-throw`, but returns `default` when `head` is not\n  registered instead of throwing. Used by `coerce` where unknown heads\n  are intentionally passed through unchanged for downstream validation\n  to flag.",
        "signatures": [
            "(resolve-or-default head f default)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/validator.phel#L39",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(resolve-or-default head f default)\n```\nLike `resolve-or-throw`, but returns `default` when `head` is not\n  registered instead of throwing. Used by `coerce` where unknown heads\n  are intentionally passed through unchanged for downstream validation\n  to flag.",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[head f default]"
        }
    },
    {
        "namespace": "schema.validator",
        "name": "schema.validator/resolve-or-throw",
        "description": "Resolves an unknown head by looking it up in the registry. When\n  `head` names a registered schema, invokes `f` with the registered\n  schema; otherwise throws an `InvalidArgumentException` mentioning\n  `label` (e.g. `\"unknown schema kind\"` or `\"no generator for schema kind\"`).\n\n  Every head-dispatching caller uses this so the error shape is\n  consistent across validator/explainer/coercer/generator.",
        "doc": "```phel\n(resolve-or-throw label head f)\n```\nResolves an unknown head by looking it up in the registry. When\n  `head` names a registered schema, invokes `f` with the registered\n  schema; otherwise throws an `InvalidArgumentException` mentioning\n  `label` (e.g. `\"unknown schema kind\"` or `\"no generator for schema kind\"`).\n\n  Every head-dispatching caller uses this so the error shape is\n  consistent across validator/explainer/coercer/generator.",
        "signatures": [
            "(resolve-or-throw label head f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/validator.phel#L25",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(resolve-or-throw label head f)\n```\nResolves an unknown head by looking it up in the registry. When\n  `head` names a registered schema, invokes `f` with the registered\n  schema; otherwise throws an `InvalidArgumentException` mentioning\n  `label` (e.g. `\"unknown schema kind\"` or `\"no generator for schema kind\"`).\n\n  Every head-dispatching caller uses this so the error shape is\n  consistent across validator/explainer/coercer/generator.",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[label head f]"
        }
    },
    {
        "namespace": "schema.validator",
        "name": "schema.validator/schema-args",
        "description": "Returns the positional arguments of `schema` (children past the\n  head and optional options map).",
        "doc": "```phel\n(schema-args schema)\n```\nReturns the positional arguments of `schema` (children past the\n  head and optional options map).",
        "signatures": [
            "(schema-args schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/validator.phel#L73",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(schema-args schema)\n```\nReturns the positional arguments of `schema` (children past the\n  head and optional options map).",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[schema]"
        }
    },
    {
        "namespace": "schema.validator",
        "name": "schema.validator/schema-head",
        "description": "Returns the head (kind keyword) of `schema`. Keyword schemas are\n  their own head; vector schemas use their first element.",
        "doc": "```phel\n(schema-head schema)\n```\nReturns the head (kind keyword) of `schema`. Keyword schemas are\n  their own head; vector schemas use their first element.",
        "signatures": [
            "(schema-head schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/validator.phel#L53",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(schema-head schema)\n```\nReturns the head (kind keyword) of `schema`. Keyword schemas are\n  their own head; vector schemas use their first element.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[schema]"
        }
    },
    {
        "namespace": "schema.validator",
        "name": "schema.validator/schema-options",
        "description": "Returns the options map of `schema` or `{}` if none.",
        "doc": "```phel\n(schema-options schema)\n```\nReturns the options map of `schema` or `{}` if none.",
        "signatures": [
            "(schema-options schema)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/validator.phel#L83",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(schema-options schema)\n```\nReturns the options map of `schema` or `{}` if none.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[schema]"
        }
    },
    {
        "namespace": "schema.validator",
        "name": "schema.validator/valid?",
        "description": "Returns `true` if `value` conforms to `schema`, otherwise `false`.",
        "doc": "```phel\n(valid? schema value)\n```\nReturns `true` if `value` conforms to `schema`, otherwise `false`.",
        "signatures": [
            "(valid? schema value)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/schema/validator.phel#L313",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(valid? schema value)\n```\nReturns `true` if `value` conforms to `schema`, otherwise `false`.",
            "example": "(valid? :int 1) ; => true",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[schema value]"
        }
    },
    {
        "namespace": "string",
        "name": "string/blank?",
        "description": "True if s is nil, empty, or contains only whitespace. Non-breaking\n  separators (`U+00A0`, `U+2007`, `U+202F`) are not treated as whitespace.",
        "doc": "```phel\n(blank? s)\n```\nTrue if s is nil, empty, or contains only whitespace. Non-breaking\n  separators (`U+00A0`, `U+2007`, `U+202F`) are not treated as whitespace.",
        "signatures": [
            "(blank? s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L136",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(blank? s)\n```\nTrue if s is nil, empty, or contains only whitespace. Non-breaking\n  separators (`U+00A0`, `U+2007`, `U+202F`) are not treated as whitespace.",
            "example": "(blank? \"   \") ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "string",
        "name": "string/capitalize",
        "description": "Converts first character to upper-case and all other characters to lower-case.",
        "doc": "```phel\n(capitalize s)\n```\nConverts first character to upper-case and all other characters to lower-case.",
        "signatures": [
            "(capitalize s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L97",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(capitalize s)\n```\nConverts first character to upper-case and all other characters to lower-case.",
            "example": "(capitalize \"hELLO wORLD\") ; => \"Hello world\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "string",
        "name": "string/chars",
        "description": "Returns a vector of characters from string s.\n\n  This is a convenience function for converting strings to character sequences.\n  Properly handles multibyte UTF-8 characters.",
        "doc": "```phel\n(chars s)\n```\nReturns a vector of characters from string s.\n\n  This is a convenience function for converting strings to character sequences.\n  Properly handles multibyte UTF-8 characters.",
        "signatures": [
            "(chars s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L11",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(chars s)\n```\nReturns a vector of characters from string s.\n\n  This is a convenience function for converting strings to character sequences.\n  Properly handles multibyte UTF-8 characters.",
            "example": "(chars \"hello\") ; => [\"h\" \"e\" \"l\" \"l\" \"o\"]",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "string",
        "name": "string/contains?",
        "description": "True if s contains substr.",
        "doc": "```phel\n(contains? s substr)\n```\nTrue if s contains substr.",
        "signatures": [
            "(contains? s substr)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L159",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(contains? s substr)\n```\nTrue if s contains substr.",
            "example": "(contains? \"hello world\" \"lo wo\") ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[s substr]"
        }
    },
    {
        "namespace": "string",
        "name": "string/ends-with?",
        "description": "True if s ends with substr.",
        "doc": "```phel\n(ends-with? s substr)\n```\nTrue if s ends with substr.",
        "signatures": [
            "(ends-with? s substr)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L153",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ends-with? s substr)\n```\nTrue if s ends with substr.",
            "example": "(ends-with? \"hello world\" \"world\") ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[s substr]"
        }
    },
    {
        "namespace": "string",
        "name": "string/escape",
        "description": "Returns a new string with each character escaped according to cmap.",
        "doc": "```phel\n(escape s cmap)\n```\nReturns a new string with each character escaped according to cmap.",
        "signatures": [
            "(escape s cmap)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L177",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(escape s cmap)\n```\nReturns a new string with each character escaped according to cmap.",
            "example": "(escape \"hello\" {\"h\" \"H\" \"o\" \"O\"}) ; => \"HellO\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[s cmap]"
        }
    },
    {
        "namespace": "string",
        "name": "string/includes?",
        "description": "True if s includes substr.",
        "doc": "```phel\n(includes? s substr)\n```\nTrue if s includes substr.",
        "signatures": [
            "(includes? s substr)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L165",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(includes? s substr)\n```\nTrue if s includes substr.",
            "example": "(includes? \"hello world\" \"world\") ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[s substr]"
        }
    },
    {
        "namespace": "string",
        "name": "string/index-of",
        "description": "Returns the index of value in s, or nil if not found.",
        "doc": "```phel\n(index-of s value & [from-index])\n```\nReturns the index of value in s, or nil if not found.",
        "signatures": [
            "(index-of s value & [from-index])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L185",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(index-of s value & [from-index])\n```\nReturns the index of value in s, or nil if not found.",
            "example": "(index-of \"hello world\" \"world\") ; => 6",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[s value & __phel_2485]"
        }
    },
    {
        "namespace": "string",
        "name": "string/join",
        "description": "Returns a string of all elements in coll, separated by an optional separator.",
        "doc": "```phel\n(join separator & [coll])\n```\nReturns a string of all elements in coll, separated by an optional separator.",
        "signatures": [
            "(join separator & [coll])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L21",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(join separator & [coll])\n```\nReturns a string of all elements in coll, separated by an optional separator.",
            "example": "(join \", \" [\"apple\" \"banana\" \"cherry\"]) ; => \"apple, banana, cherry\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[separator & __phel_2430]"
        }
    },
    {
        "namespace": "string",
        "name": "string/last-index-of",
        "description": "Returns the last index of value in s, or nil if not found.",
        "doc": "```phel\n(last-index-of s value & [from-index])\n```\nReturns the last index of value in s, or nil if not found.",
        "signatures": [
            "(last-index-of s value & [from-index])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L200",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(last-index-of s value & [from-index])\n```\nReturns the last index of value in s, or nil if not found.",
            "example": "(last-index-of \"hello world world\" \"world\") ; => 12",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[s value & __phel_2500]"
        }
    },
    {
        "namespace": "string",
        "name": "string/lower-case",
        "description": "Converts string to all lower-case.",
        "doc": "```phel\n(lower-case s)\n```\nConverts string to all lower-case.",
        "signatures": [
            "(lower-case s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L106",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(lower-case s)\n```\nConverts string to all lower-case.",
            "example": "(lower-case \"HELLO World\") ; => \"hello world\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]",
            "tag": "string"
        }
    },
    {
        "namespace": "string",
        "name": "string/pad-both",
        "description": "Returns a string padded on both sides to length len.",
        "doc": "```phel\n(pad-both s len & [pad-str])\n```\nReturns a string padded on both sides to length len.",
        "signatures": [
            "(pad-both s len & [pad-str])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L241",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(pad-both s len & [pad-str])\n```\nReturns a string padded on both sides to length len.",
            "example": "(pad-both \"hello\" 11) ; => \"   hello   \"",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[s len & __phel_2539]"
        }
    },
    {
        "namespace": "string",
        "name": "string/pad-left",
        "description": "Returns a string padded on the left side to length len.",
        "doc": "```phel\n(pad-left s len & [pad-str])\n```\nReturns a string padded on the left side to length len.",
        "signatures": [
            "(pad-left s len & [pad-str])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L229",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(pad-left s len & [pad-str])\n```\nReturns a string padded on the left side to length len.",
            "example": "(pad-left \"hello\" 10) ; => \"     hello\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[s len & __phel_2519]"
        }
    },
    {
        "namespace": "string",
        "name": "string/pad-right",
        "description": "Returns a string padded on the right side to length len.",
        "doc": "```phel\n(pad-right s len & [pad-str])\n```\nReturns a string padded on the right side to length len.",
        "signatures": [
            "(pad-right s len & [pad-str])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L235",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(pad-right s len & [pad-str])\n```\nReturns a string padded on the right side to length len.",
            "example": "(pad-right \"hello\" 10) ; => \"hello     \"",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[s len & __phel_2529]"
        }
    },
    {
        "namespace": "string",
        "name": "string/re-quote-replacement",
        "description": "Escapes special characters in a replacement string for literal use.",
        "doc": "```phel\n(re-quote-replacement replacement)\n```\nEscapes special characters in a replacement string for literal use.",
        "signatures": [
            "(re-quote-replacement replacement)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L171",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(re-quote-replacement replacement)\n```\nEscapes special characters in a replacement string for literal use.",
            "example": "(re-quote-replacement \"$1.00\") ; => \"\\$1.00\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[replacement]"
        }
    },
    {
        "namespace": "string",
        "name": "string/repeat",
        "description": "Returns a string containing n copies of s.",
        "doc": "```phel\n(repeat s n)\n```\nReturns a string containing n copies of s.",
        "signatures": [
            "(repeat s n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L45",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(repeat s n)\n```\nReturns a string containing n copies of s.",
            "example": "(repeat \"ha\" 3) ; => \"hahaha\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[s n]"
        }
    },
    {
        "namespace": "string",
        "name": "string/replace",
        "description": "Replaces all instances of match with replacement in s.",
        "doc": "```phel\n(replace s match replacement)\n```\nReplaces all instances of match with replacement in s.",
        "signatures": [
            "(replace s match replacement)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L63",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(replace s match replacement)\n```\nReplaces all instances of match with replacement in s.",
            "example": "(replace \"hello world\" \"world\" \"there\") ; => \"hello there\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[s match replacement]"
        }
    },
    {
        "namespace": "string",
        "name": "string/replace-first",
        "description": "Replaces the first instance of match with replacement in s.",
        "doc": "```phel\n(replace-first s match replacement)\n```\nReplaces the first instance of match with replacement in s.",
        "signatures": [
            "(replace-first s match replacement)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L74",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(replace-first s match replacement)\n```\nReplaces the first instance of match with replacement in s.",
            "example": "(replace-first \"hello world world\" \"world\" \"there\") ; => \"hello there world\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[s match replacement]"
        }
    },
    {
        "namespace": "string",
        "name": "string/reverse",
        "description": "Returns s with its characters reversed.",
        "doc": "```phel\n(reverse s)\n```\nReturns s with its characters reversed.",
        "signatures": [
            "(reverse s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L38",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(reverse s)\n```\nReturns s with its characters reversed.",
            "example": "(reverse \"hello\") ; => \"olleh\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "string",
        "name": "string/split",
        "description": "Splits string on a regular expression, returning a vector of parts.",
        "doc": "```phel\n(split s re & [limit])\n```\nSplits string on a regular expression, returning a vector of parts.",
        "signatures": [
            "(split s re & [limit])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L5",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(split s re & [limit])\n```\nSplits string on a regular expression, returning a vector of parts.",
            "example": "(split \"hello world foo bar\" #\"\\s+\") ; => [\"hello\" \"world\" \"foo\" \"bar\"]",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[s re & __phel_2420]"
        }
    },
    {
        "namespace": "string",
        "name": "string/split-lines",
        "description": "Splits s on \\n or \\r\\n. Trailing empty lines are not returned.",
        "doc": "```phel\n(split-lines s)\n```\nSplits s on \\n or \\r\\n. Trailing empty lines are not returned.",
        "signatures": [
            "(split-lines s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L223",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(split-lines s)\n```\nSplits s on \\n or \\r\\n. Trailing empty lines are not returned.",
            "example": "(split-lines \"hello\\nworld\\ntest\") ; => [\"hello\" \"world\" \"test\"]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "string",
        "name": "string/starts-with?",
        "description": "True if s starts with substr.",
        "doc": "```phel\n(starts-with? s substr)\n```\nTrue if s starts with substr.",
        "signatures": [
            "(starts-with? s substr)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L147",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(starts-with? s substr)\n```\nTrue if s starts with substr.",
            "example": "(starts-with? \"hello world\" \"hello\") ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[s substr]"
        }
    },
    {
        "namespace": "string",
        "name": "string/subs",
        "description": "Returns the substring of s from start (inclusive) to end (exclusive).",
        "doc": "```phel\n(subs s start & [end])\n```\nReturns the substring of s from start (inclusive) to end (exclusive).",
        "signatures": [
            "(subs s start & [end])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L28",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(subs s start & [end])\n```\nReturns the substring of s from start (inclusive) to end (exclusive).",
            "example": "(subs \"hello world\" 0 5) ; => \"hello\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[s start & __phel_2450]"
        }
    },
    {
        "namespace": "string",
        "name": "string/trim",
        "description": "Removes whitespace from both ends of string.",
        "doc": "```phel\n(trim s)\n```\nRemoves whitespace from both ends of string.",
        "signatures": [
            "(trim s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L118",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(trim s)\n```\nRemoves whitespace from both ends of string.",
            "example": "(trim \"  hello  \") ; => \"hello\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "string",
        "name": "string/trim-newline",
        "description": "Removes all trailing newline or return characters from string.",
        "doc": "```phel\n(trim-newline s)\n```\nRemoves all trailing newline or return characters from string.",
        "signatures": [
            "(trim-newline s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L85",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(trim-newline s)\n```\nRemoves all trailing newline or return characters from string.",
            "example": "(trim-newline \"hello\\n\\n\") ; => \"hello\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "string",
        "name": "string/triml",
        "description": "Removes whitespace from the left side of string.",
        "doc": "```phel\n(triml s)\n```\nRemoves whitespace from the left side of string.",
        "signatures": [
            "(triml s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L124",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(triml s)\n```\nRemoves whitespace from the left side of string.",
            "example": "(triml \"  hello  \") ; => \"hello  \"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "string",
        "name": "string/trimr",
        "description": "Removes whitespace from the right side of string.",
        "doc": "```phel\n(trimr s)\n```\nRemoves whitespace from the right side of string.",
        "signatures": [
            "(trimr s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L130",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(trimr s)\n```\nRemoves whitespace from the right side of string.",
            "example": "(trimr \"  hello  \") ; => \"  hello\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]"
        }
    },
    {
        "namespace": "string",
        "name": "string/upper-case",
        "description": "Converts string to all upper-case.",
        "doc": "```phel\n(upper-case s)\n```\nConverts string to all upper-case.",
        "signatures": [
            "(upper-case s)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/string.phel#L112",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(upper-case s)\n```\nConverts string to all upper-case.",
            "example": "(upper-case \"hello World\") ; => \"HELLO WORLD\"",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[s]",
            "tag": "string"
        }
    },
    {
        "namespace": "test",
        "name": "test/*testing-contexts*",
        "description": "Stack of testing context strings, most recent first.",
        "doc": "Stack of testing context strings, most recent first.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L21",
        "docUrl": "",
        "meta": {
            "doc": "Stack of testing context strings, most recent first.",
            "dynamic": true,
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "test",
        "name": "test/add-reporter!",
        "description": "Appends `reporter-fn` to the active reporter set. Returns the updated\n  reporter list.",
        "doc": "```phel\n(add-reporter! reporter-fn)\n```\nAppends `reporter-fn` to the active reporter set. Returns the updated\n  reporter list.",
        "signatures": [
            "(add-reporter! reporter-fn)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L53",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(add-reporter! reporter-fn)\n```\nAppends `reporter-fn` to the active reporter set. Returns the updated\n  reporter list.",
            "example": "(add-reporter! tap-reporter)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[reporter-fn]"
        }
    },
    {
        "namespace": "test",
        "name": "test/are",
        "description": "Checks multiple assertions with a template expression.\n  `argv` is a vector of template variables, `expr` is the assertion template,\n  and the remaining `args` are partitioned by `(count argv)` to fill the template.\n  Template variables are substituted lexically at macro-expansion time, so\n  literal collection cells (e.g. `()`, `[]`, `{}`) are preserved as data and\n  are not evaluated as code.",
        "doc": "```phel\n(are argv expr & args)\n```\nChecks multiple assertions with a template expression.\n  `argv` is a vector of template variables, `expr` is the assertion template,\n  and the remaining `args` are partitioned by `(count argv)` to fill the template.\n  Template variables are substituted lexically at macro-expansion time, so\n  literal collection cells (e.g. `()`, `[]`, `{}`) are preserved as data and\n  are not evaluated as code.",
        "signatures": [
            "(are argv expr & args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L446",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(are argv expr & args)\n```\nChecks multiple assertions with a template expression.\n  `argv` is a vector of template variables, `expr` is the assertion template,\n  and the remaining `args` are partitioned by `(count argv)` to fill the template.\n  Template variables are substituted lexically at macro-expansion time, so\n  literal collection cells (e.g. `()`, `[]`, `{}`) are preserved as data and\n  are not evaluated as code.",
            "see-also": {},
            "end-location": {},
            "example": "(are [x y] (= x y)\n  2 (+ 1 1)\n  4 (* 2 2))",
            "start-location": {},
            "min-arity": 2,
            "is-variadic": true,
            "arglists": "[argv expr & args]"
        }
    },
    {
        "namespace": "test",
        "name": "test/assert-expr",
        "description": "",
        "doc": "```phel\n(assert-expr & __phel_4389)\n```\n",
        "signatures": [
            "(assert-expr & __phel_4389)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L330",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(assert-expr & __phel_4389)\n```\n",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& __phel_4389]"
        }
    },
    {
        "namespace": "test",
        "name": "test/assert-expr-methods",
        "description": "",
        "doc": "",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L330",
        "docUrl": "",
        "meta": {
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "test",
        "name": "test/assert-expr-prefers",
        "description": "",
        "doc": "",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L330",
        "docUrl": "",
        "meta": {
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "test",
        "name": "test/clear-reporters!",
        "description": "Removes every registered reporter. Returns an empty vector.",
        "doc": "```phel\n(clear-reporters!)\n```\nRemoves every registered reporter. Returns an empty vector.",
        "signatures": [
            "(clear-reporters!)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L61",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(clear-reporters!)\n```\nRemoves every registered reporter. Returns an empty vector.",
            "example": "(clear-reporters!)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "test",
        "name": "test/deftest",
        "description": "Defines a test function.\n\n  Metadata attached to `test-name` is forwarded to the defined function\n  so selectors can inspect it at runtime. `^:integration` (shorthand\n  for `{:integration true}`) and `^{:tags [:integration :slow]}`\n  multi-tag maps are both honoured.",
        "doc": "```phel\n(deftest test-name & body)\n```\nDefines a test function.\n\n  Metadata attached to `test-name` is forwarded to the defined function\n  so selectors can inspect it at runtime. `^:integration` (shorthand\n  for `{:integration true}`) and `^{:tags [:integration :slow]}`\n  multi-tag maps are both honoured.",
        "signatures": [
            "(deftest test-name & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L391",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(deftest test-name & body)\n```\nDefines a test function.\n\n  Metadata attached to `test-name` is forwarded to the defined function\n  so selectors can inspect it at runtime. `^:integration` (shorthand\n  for `{:integration true}`) and `^{:tags [:integration :slow]}`\n  multi-tag maps are both honoured.",
            "example": "(deftest test-add)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[test-name & body]"
        }
    },
    {
        "namespace": "test",
        "name": "test/do-report",
        "description": "Add file and line information to a test result and call report.\n  If you are writing a custom assert-expr method, call this function\n  to pass test results to report.",
        "doc": "```phel\n(do-report m)\n```\nAdd file and line information to a test result and call report.\n  If you are writing a custom assert-expr method, call this function\n  to pass test results to report.",
        "signatures": [
            "(do-report m)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L189",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(do-report m)\n```\nAdd file and line information to a test result and call report.\n  If you are writing a custom assert-expr method, call this function\n  to pass test results to report.",
            "see-also": {},
            "example": "(do-report {:state :pass :type :any :message \"ok\"})",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[m]"
        }
    },
    {
        "namespace": "test",
        "name": "test/get-failed-tests",
        "description": "Returns the names (`ns/test-name`) of tests that failed or errored\n  in the last run. Used by `--parallel` orchestration to aggregate\n  last-failed lists across worker processes.",
        "doc": "```phel\n(get-failed-tests)\n```\nReturns the names (`ns/test-name`) of tests that failed or errored\n  in the last run. Used by `--parallel` orchestration to aggregate\n  last-failed lists across worker processes.",
        "signatures": [
            "(get-failed-tests)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L1484",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(get-failed-tests)\n```\nReturns the names (`ns/test-name`) of tests that failed or errored\n  in the last run. Used by `--parallel` orchestration to aggregate\n  last-failed lists across worker processes.",
            "example": "(get-failed-tests) ; => [\"my-app/foo-test\"]",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "test",
        "name": "test/get-reporters",
        "description": "Returns the currently registered reporter functions as a vector.",
        "doc": "```phel\n(get-reporters)\n```\nReturns the currently registered reporter functions as a vector.",
        "signatures": [
            "(get-reporters)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L68",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(get-reporters)\n```\nReturns the currently registered reporter functions as a vector.",
            "example": "(get-reporters)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "test",
        "name": "test/get-stats",
        "description": "Returns the current test statistics as a hash-map with :failed and :counts keys.",
        "doc": "```phel\n(get-stats)\n```\nReturns the current test statistics as a hash-map with :failed and :counts keys.",
        "signatures": [
            "(get-stats)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L1472",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(get-stats)\n```\nReturns the current test statistics as a hash-map with :failed and :counts keys.",
            "example": "(get-stats) ; => {:failed [] :counts {:failed 0 :error 0 :pass 0 :total 0}}",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "test",
        "name": "test/is",
        "description": "Asserts that an expression is true.",
        "doc": "```phel\n(is form & [message])\n```\nAsserts that an expression is true.",
        "signatures": [
            "(is form & [message])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L373",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(is form & [message])\n```\nAsserts that an expression is true.",
            "example": "(is (= 4 (+ 2 2)))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[form & __phel_4414]"
        }
    },
    {
        "namespace": "test",
        "name": "test/print-summary",
        "description": "Emits the `:summary` event to the active reporter set.\n  Kept for backwards compatibility; prefer letting `run-tests` emit the\n  event at the end of the run.",
        "doc": "```phel\n(print-summary)\n```\nEmits the `:summary` event to the active reporter set.\n  Kept for backwards compatibility; prefer letting `run-tests` emit the\n  event at the end of the run.",
        "signatures": [
            "(print-summary)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L1095",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(print-summary)\n```\nEmits the `:summary` event to the active reporter set.\n  Kept for backwards compatibility; prefer letting `run-tests` emit the\n  event at the end of the run.",
            "example": "(print-summary)",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "test",
        "name": "test/register-reporter!",
        "description": "Registers a custom reporter function under `name` (keyword or\n  keyword-castable string). Returns `name`.",
        "doc": "```phel\n(register-reporter! name reporter-fn)\n```\nRegisters a custom reporter function under `name` (keyword or\n  keyword-castable string). Returns `name`.",
        "signatures": [
            "(register-reporter! name reporter-fn)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L1062",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(register-reporter! name reporter-fn)\n```\nRegisters a custom reporter function under `name` (keyword or\n  keyword-castable string). Returns `name`.",
            "example": "(register-reporter! :my-reporter (fn [event] ...))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[name reporter-fn]"
        }
    },
    {
        "namespace": "test",
        "name": "test/report",
        "description": "Records a test-framework event and dispatches it to the active\n  reporters. `data` must contain a `:type` key (`:pass`, `:failed`,\n  `:error`, `:begin-test-ns`, `:end-test-ns`, `:begin-test-run`,\n  `:summary`, or a user-defined event). The default methods for\n  assertion outcomes update the internal stats and invoke every\n  registered reporter. Other event types flow straight through to the\n  reporter set. Extend by registering\n  `(defmethod report :custom-type [event] ...)`.",
        "doc": "```phel\n(report & __phel_4331)\n```\nRecords a test-framework event and dispatches it to the active\n  reporters. `data` must contain a `:type` key (`:pass`, `:failed`,\n  `:error`, `:begin-test-ns`, `:end-test-ns`, `:begin-test-run`,\n  `:summary`, or a user-defined event). The default methods for\n  assertion outcomes update the internal stats and invoke every\n  registered reporter. Other event types flow straight through to the\n  reporter set. Extend by registering\n  `(defmethod report :custom-type [event] ...)`.",
        "signatures": [
            "(report & __phel_4331)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L128",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(report & __phel_4331)\n```\nRecords a test-framework event and dispatches it to the active\n  reporters. `data` must contain a `:type` key (`:pass`, `:failed`,\n  `:error`, `:begin-test-ns`, `:end-test-ns`, `:begin-test-run`,\n  `:summary`, or a user-defined event). The default methods for\n  assertion outcomes update the internal stats and invoke every\n  registered reporter. Other event types flow straight through to the\n  reporter set. Extend by registering\n  `(defmethod report :custom-type [event] ...)`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& __phel_4331]"
        }
    },
    {
        "namespace": "test",
        "name": "test/report-methods",
        "description": "",
        "doc": "",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L128",
        "docUrl": "",
        "meta": {
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "test",
        "name": "test/report-prefers",
        "description": "",
        "doc": "",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L128",
        "docUrl": "",
        "meta": {
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "test",
        "name": "test/reset-stats",
        "description": "Resets the test statistics to their initial state.\n  Call this before running a new batch of tests to get fresh results.",
        "doc": "```phel\n(reset-stats)\n```\nResets the test statistics to their initial state.\n  Call this before running a new batch of tests to get fresh results.",
        "signatures": [
            "(reset-stats)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L1458",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(reset-stats)\n```\nResets the test statistics to their initial state.\n  Call this before running a new batch of tests to get fresh results.",
            "example": "(reset-stats)",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "test",
        "name": "test/resolve-reporter",
        "description": "Returns the reporter function registered for `name` (keyword or\n  string). Checks user-registered reporters before the built-in set.\n  Returns `nil` if the name is unknown.",
        "doc": "```phel\n(resolve-reporter name)\n```\nReturns the reporter function registered for `name` (keyword or\n  string). Checks user-registered reporters before the built-in set.\n  Returns `nil` if the name is unknown.",
        "signatures": [
            "(resolve-reporter name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L1051",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(resolve-reporter name)\n```\nReturns the reporter function registered for `name` (keyword or\n  string). Checks user-registered reporters before the built-in set.\n  Returns `nil` if the name is unknown.",
            "see-also": {},
            "example": "(resolve-reporter :junit-xml)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[name]"
        }
    },
    {
        "namespace": "test",
        "name": "test/restore-stats",
        "description": "Restores test statistics from a previously saved state.",
        "doc": "```phel\n(restore-stats saved)\n```\nRestores test statistics from a previously saved state.",
        "signatures": [
            "(restore-stats saved)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L1478",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(restore-stats saved)\n```\nRestores test statistics from a previously saved state.",
            "example": "(restore-stats saved)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[saved]"
        }
    },
    {
        "namespace": "test",
        "name": "test/run-tests",
        "description": "Runs all tests in the given namespaces. When `:list-only` is true,\n  prints the discovered tests and skips execution.\n\n  Recognized option keys include `:filter`, `:filters`, `:include`,\n  `:exclude`, `:ns-patterns`, `:fail-fast`, `:stack-trace`, `:reporters`,\n  `:junit-output`, `:list-only`, `:only-tests`, `:last-failed-file`,\n  `:slowest`, `:repeat` (run the selected tests N times), `:seed`\n  (integer seed for the order RNG), and `:random-order` (shuffle tests\n  per namespace).",
        "doc": "```phel\n(run-tests options & namespaces)\n```\nRuns all tests in the given namespaces. When `:list-only` is true,\n  prints the discovered tests and skips execution.\n\n  Recognized option keys include `:filter`, `:filters`, `:include`,\n  `:exclude`, `:ns-patterns`, `:fail-fast`, `:stack-trace`, `:reporters`,\n  `:junit-output`, `:list-only`, `:only-tests`, `:last-failed-file`,\n  `:slowest`, `:repeat` (run the selected tests N times), `:seed`\n  (integer seed for the order RNG), and `:random-order` (shuffle tests\n  per namespace).",
        "signatures": [
            "(run-tests options & namespaces)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L1439",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(run-tests options & namespaces)\n```\nRuns all tests in the given namespaces. When `:list-only` is true,\n  prints the discovered tests and skips execution.\n\n  Recognized option keys include `:filter`, `:filters`, `:include`,\n  `:exclude`, `:ns-patterns`, `:fail-fast`, `:stack-trace`, `:reporters`,\n  `:junit-output`, `:list-only`, `:only-tests`, `:last-failed-file`,\n  `:slowest`, `:repeat` (run the selected tests N times), `:seed`\n  (integer seed for the order RNG), and `:random-order` (shuffle tests\n  per namespace).",
            "example": "(run-tests {} 'my-app\\test)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[options & namespaces]"
        }
    },
    {
        "namespace": "test",
        "name": "test/set-junit-output!",
        "description": "Configures the output path the JUnit reporter writes to. When `nil`,\n  the XML is printed to stdout.",
        "doc": "```phel\n(set-junit-output! path)\n```\nConfigures the output path the JUnit reporter writes to. When `nil`,\n  the XML is printed to stdout.",
        "signatures": [
            "(set-junit-output! path)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L1025",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(set-junit-output! path)\n```\nConfigures the output path the JUnit reporter writes to. When `nil`,\n  the XML is printed to stdout.",
            "example": "(set-junit-output! \"build/junit.xml\")",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[path]"
        }
    },
    {
        "namespace": "test",
        "name": "test/set-reporters!",
        "description": "Replaces the active reporter set with `reporters` (a sequence of\n  single-argument functions). Returns the new reporter list.",
        "doc": "```phel\n(set-reporters! reporters)\n```\nReplaces the active reporter set with `reporters` (a sequence of\n  single-argument functions). Returns the new reporter list.",
        "signatures": [
            "(set-reporters! reporters)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L45",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(set-reporters! reporters)\n```\nReplaces the active reporter set with `reporters` (a sequence of\n  single-argument functions). Returns the new reporter list.",
            "example": "(set-reporters! [my-reporter-fn])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[reporters]"
        }
    },
    {
        "namespace": "test",
        "name": "test/successful?",
        "description": "Checks if all tests passed.",
        "doc": "```phel\n(successful?)\n```\nChecks if all tests passed.",
        "signatures": [
            "(successful?)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L1465",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(successful?)\n```\nChecks if all tests passed.",
            "example": "(successful?) # => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": false,
            "arglists": "[]"
        }
    },
    {
        "namespace": "test",
        "name": "test/testing",
        "description": "Adds a testing context string. Used inside deftest to describe a group of assertions.\n  The context string is prepended to failure messages for better diagnostics.",
        "doc": "```phel\n(testing context & body)\n```\nAdds a testing context string. Used inside deftest to describe a group of assertions.\n  The context string is prepended to failure messages for better diagnostics.",
        "signatures": [
            "(testing context & body)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L411",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(testing context & body)\n```\nAdds a testing context string. Used inside deftest to describe a group of assertions.\n  The context string is prepended to failure messages for better diagnostics.",
            "example": "(deftest test-math\n  (testing \"addition\"\n    (is (= 2 (+ 1 1)))))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[context & body]"
        }
    },
    {
        "namespace": "test",
        "name": "test/use-fixtures",
        "description": "Registers fixture functions for the current namespace.\n\n  `fixture-type` is either `:each` (wraps every individual test) or\n  `:once` (wraps the whole run in a single function). Each fixture is\n  a function of one argument \u2014 a thunk `(fn [])` representing the tests\n  to run \u2014 and is expected to invoke that thunk somewhere in its body.\n\n  Calling `use-fixtures` with no fixture functions removes all fixtures\n  of that type previously registered on the namespace.",
        "doc": "```phel\n(use-fixtures fixture-type & fns)\n```\nRegisters fixture functions for the current namespace.\n\n  `fixture-type` is either `:each` (wraps every individual test) or\n  `:once` (wraps the whole run in a single function). Each fixture is\n  a function of one argument \u2014 a thunk `(fn [])` representing the tests\n  to run \u2014 and is expected to invoke that thunk somewhere in its body.\n\n  Calling `use-fixtures` with no fixture functions removes all fixtures\n  of that type previously registered on the namespace.",
        "signatures": [
            "(use-fixtures fixture-type & fns)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test.phel#L1124",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(use-fixtures fixture-type & fns)\n```\nRegisters fixture functions for the current namespace.\n\n  `fixture-type` is either `:each` (wraps every individual test) or\n  `:once` (wraps the whole run in a single function). Each fixture is\n  a function of one argument \u2014 a thunk `(fn [])` representing the tests\n  to run \u2014 and is expected to invoke that thunk somewhere in its body.\n\n  Calling `use-fixtures` with no fixture functions removes all fixtures\n  of that type previously registered on the namespace.",
            "example": "(use-fixtures :once (fn [t] (setup) (t) (teardown)))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[fixture-type & fns]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/boolean",
        "description": "Generator of booleans.",
        "doc": "Generator of booleans.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L63",
        "docUrl": "",
        "meta": {
            "doc": "Generator of booleans.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[_size]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/char",
        "description": "Generator of printable ASCII characters (space through `~`).",
        "doc": "Generator of printable ASCII characters (space through `~`).",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L112",
        "docUrl": "",
        "meta": {
            "doc": "Generator of printable ASCII characters (space through `~`).",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[_size]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/char-alpha",
        "description": "Generator of ASCII letters.",
        "doc": "Generator of ASCII letters.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L116",
        "docUrl": "",
        "meta": {
            "doc": "Generator of ASCII letters.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[_size]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/char-alphanumeric",
        "description": "Generator of ASCII letters and digits.",
        "doc": "Generator of ASCII letters and digits.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L120",
        "docUrl": "",
        "meta": {
            "doc": "Generator of ASCII letters and digits.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[_size]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/choose",
        "description": "Generator of integers in the closed interval `[lo hi]`.",
        "doc": "```phel\n(choose lo hi)\n```\nGenerator of integers in the closed interval `[lo hi]`.",
        "signatures": [
            "(choose lo hi)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L85",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(choose lo hi)\n```\nGenerator of integers in the closed interval `[lo hi]`.",
            "example": "((choose 1 6) 100) ; => 1..6",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[lo hi]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/default-num-tests",
        "description": "Number of trials `quick-check` runs by default.",
        "doc": "Number of trials `quick-check` runs by default.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L35",
        "docUrl": "",
        "meta": {
            "doc": "Number of trials `quick-check` runs by default.",
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/default-size",
        "description": "Magnitude used when no `:size` option is supplied.",
        "doc": "Magnitude used when no `:size` option is supplied.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L31",
        "docUrl": "",
        "meta": {
            "doc": "Magnitude used when no `:size` option is supplied.",
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/defspec",
        "description": "Defines a property test. The generated `deftest` runs `quick-check`\n  and asserts the result is `:pass`. `options` is a hash-map accepting\n  `:num-tests`, `:size`, `:seed` and `:shrink?`.\n\n  Attach `^:no-shrink` metadata to the name to skip shrinking on\n  failure. The `test-name` symbol's metadata is also forwarded to the\n  underlying `deftest`, so tag-based selectors apply as usual.\n\n  On failure a `:defspec-failed` event is sent to the reporter set\n  before the surrounding `is` assertion records a `:failed` event.\n  Reporters that want rich shrink information can subscribe to it; the\n  built-in reporters keep rendering their usual failure summary.\n\n  Shape: `(defspec name options args-gen property)`.",
        "doc": "```phel\n(defspec name options args-gen property)\n```\nDefines a property test. The generated `deftest` runs `quick-check`\n  and asserts the result is `:pass`. `options` is a hash-map accepting\n  `:num-tests`, `:size`, `:seed` and `:shrink?`.\n\n  Attach `^:no-shrink` metadata to the name to skip shrinking on\n  failure. The `test-name` symbol's metadata is also forwarded to the\n  underlying `deftest`, so tag-based selectors apply as usual.\n\n  On failure a `:defspec-failed` event is sent to the reporter set\n  before the surrounding `is` assertion records a `:failed` event.\n  Reporters that want rich shrink information can subscribe to it; the\n  built-in reporters keep rendering their usual failure summary.\n\n  Shape: `(defspec name options args-gen property)`.",
        "signatures": [
            "(defspec name options args-gen property)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L444",
        "docUrl": "",
        "meta": {
            "macro": true,
            "doc": "```phel\n(defspec name options args-gen property)\n```\nDefines a property test. The generated `deftest` runs `quick-check`\n  and asserts the result is `:pass`. `options` is a hash-map accepting\n  `:num-tests`, `:size`, `:seed` and `:shrink?`.\n\n  Attach `^:no-shrink` metadata to the name to skip shrinking on\n  failure. The `test-name` symbol's metadata is also forwarded to the\n  underlying `deftest`, so tag-based selectors apply as usual.\n\n  On failure a `:defspec-failed` event is sent to the reporter set\n  before the surrounding `is` assertion records a `:failed` event.\n  Reporters that want rich shrink information can subscribe to it; the\n  built-in reporters keep rendering their usual failure summary.\n\n  Shape: `(defspec name options args-gen property)`.",
            "example": "(defspec addition-commutes {:num-tests 200}\n              (tuple int int)\n              (fn [a b] (= (+ a b) (+ b a))))",
            "start-location": {},
            "end-location": {},
            "min-arity": 4,
            "is-variadic": false,
            "arglists": "[name options args-gen property]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/elements",
        "description": "Generator that picks a random element from `coll`.",
        "doc": "```phel\n(elements coll)\n```\nGenerator that picks a random element from `coll`.",
        "signatures": [
            "(elements coll)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L215",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(elements coll)\n```\nGenerator that picks a random element from `coll`.",
            "example": "((elements [:a :b :c]) 100) ; => :a, :b or :c",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[coll]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/float",
        "description": "Generator of floats in `[0, 1)`.",
        "doc": "Generator of floats in `[0, 1)`.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L81",
        "docUrl": "",
        "meta": {
            "doc": "Generator of floats in `[0, 1)`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[_size]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/fmap",
        "description": "Returns a generator that applies `f` to values produced by `g`.",
        "doc": "```phel\n(fmap f g)\n```\nReturns a generator that applies `f` to values produced by `g`.",
        "signatures": [
            "(fmap f g)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L181",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(fmap f g)\n```\nReturns a generator that applies `f` to values produced by `g`.",
            "example": "((fmap inc (return 1)) 100) ; => 2",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[f g]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/frequency",
        "description": "Generator that picks one of the `[weight gen]` pairs with probability\n  proportional to weight.",
        "doc": "```phel\n(frequency pairs)\n```\nGenerator that picks one of the `[weight gen]` pairs with probability\n  proportional to weight.",
        "signatures": [
            "(frequency pairs)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L235",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(frequency pairs)\n```\nGenerator that picks one of the `[weight gen]` pairs with probability\n  proportional to weight.",
            "example": "((frequency [[9 (return :a)] [1 (return :b)]]) 100)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[pairs]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/generate",
        "description": "Runs `g` once and returns a single value. Accepts `:size` and `:seed`.",
        "doc": "```phel\n(generate g)\n(generate g {:size size, :seed seed})\n```\nRuns `g` once and returns a single value. Accepts `:size` and `:seed`.",
        "signatures": [
            "(generate g)",
            "(generate g {:size size, :seed seed})"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L316",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(generate g)\n(generate g {:size size, :seed seed})\n```\nRuns `g` once and returns a single value. Accepts `:size` and `:seed`.",
            "example": "(generate int) ; => 42",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 2,
            "arglists": "([g] [g __phel_6253])"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/int",
        "description": "Generator of integers in `[-size, size]`.",
        "doc": "Generator of integers in `[-size, size]`.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L71",
        "docUrl": "",
        "meta": {
            "doc": "Generator of integers in `[-size, size]`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[size]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/keyword",
        "description": "Generator of keywords with alphabetic names, length in `[1, max(1, size)]`.",
        "doc": "Generator of keywords with alphabetic names, length in `[1, max(1, size)]`.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L163",
        "docUrl": "",
        "meta": {
            "doc": "Generator of keywords with alphabetic names, length in `[1, max(1, size)]`.",
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/large-int",
        "description": "Generator of arbitrary PHP-range integers.",
        "doc": "Generator of arbitrary PHP-range integers.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L77",
        "docUrl": "",
        "meta": {
            "doc": "Generator of arbitrary PHP-range integers.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[_size]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/list-of",
        "description": "Generator of lists whose elements come from `g`. Length in `[0, size]`.",
        "doc": "```phel\n(list-of g)\n```\nGenerator of lists whose elements come from `g`. Length in `[0, size]`.",
        "signatures": [
            "(list-of g)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L284",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(list-of g)\n```\nGenerator of lists whose elements come from `g`. Length in `[0, size]`.",
            "example": "((list-of int) 3) ; => (-1 2 0)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[g]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/map-of",
        "description": "Generator of hash-maps with keys from `kg` and values from `vg`. Number of\n  entries is in `[0, size]`.",
        "doc": "```phel\n(map-of kg vg)\n```\nGenerator of hash-maps with keys from `kg` and values from `vg`. Number of\n  entries is in `[0, size]`.",
        "signatures": [
            "(map-of kg vg)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L291",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(map-of kg vg)\n```\nGenerator of hash-maps with keys from `kg` and values from `vg`. Number of\n  entries is in `[0, size]`.",
            "example": "((map-of keyword int) 2) ; => {:a 1 :b -3}",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[kg vg]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/nat",
        "description": "Generator of non-negative integers in `[0, size]`.",
        "doc": "Generator of non-negative integers in `[0, size]`.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L67",
        "docUrl": "",
        "meta": {
            "doc": "Generator of non-negative integers in `[0, size]`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[size]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/one-of",
        "description": "Generator that selects uniformly from `gens` and runs the chosen one.",
        "doc": "```phel\n(one-of gens)\n```\nGenerator that selects uniformly from `gens` and runs the chosen one.",
        "signatures": [
            "(one-of gens)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L225",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(one-of gens)\n```\nGenerator that selects uniformly from `gens` and runs the chosen one.",
            "example": "((one-of [int boolean]) 100)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[gens]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/quick-check",
        "description": "Runs `property` for `num-tests` trials, drawing each trial's arguments from\n  `args-gen` (a generator returning a vector of arguments). Returns a hash-map\n  with `:result` (`:pass`, `:failed`, or `:error`), `:num-tests`, and the\n  effective `:seed` for replay. On failure/error the failing `:args` (and\n  `:exception`) are also included.\n\n  Options:\n  - `:size` (default 100): magnitude passed to the generator.\n  - `:seed` (default: fresh per-run): PRNG seed.\n  - `:shrink?` (default: true): when true, a failing trial is shrunk to\n    a minimal counterexample; the resulting map carries `:shrunk-args`,\n    `:original-args` and `:shrink-steps`.",
        "doc": "```phel\n(quick-check num-tests args-gen property)\n(quick-check num-tests args-gen property {:size size, :seed seed, :shrink? shrink?})\n```\nRuns `property` for `num-tests` trials, drawing each trial's arguments from\n  `args-gen` (a generator returning a vector of arguments). Returns a hash-map\n  with `:result` (`:pass`, `:failed`, or `:error`), `:num-tests`, and the\n  effective `:seed` for replay. On failure/error the failing `:args` (and\n  `:exception`) are also included.\n\n  Options:\n  - `:size` (default 100): magnitude passed to the generator.\n  - `:seed` (default: fresh per-run): PRNG seed.\n  - `:shrink?` (default: true): when true, a failing trial is shrunk to\n    a minimal counterexample; the resulting map carries `:shrunk-args`,\n    `:original-args` and `:shrink-steps`.",
        "signatures": [
            "(quick-check num-tests args-gen property)",
            "(quick-check num-tests args-gen property {:size size, :seed seed, :shrink? shrink?})"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L376",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(quick-check num-tests args-gen property)\n(quick-check num-tests args-gen property {:size size, :seed seed, :shrink? shrink?})\n```\nRuns `property` for `num-tests` trials, drawing each trial's arguments from\n  `args-gen` (a generator returning a vector of arguments). Returns a hash-map\n  with `:result` (`:pass`, `:failed`, or `:error`), `:num-tests`, and the\n  effective `:seed` for replay. On failure/error the failing `:args` (and\n  `:exception`) are also included.\n\n  Options:\n  - `:size` (default 100): magnitude passed to the generator.\n  - `:seed` (default: fresh per-run): PRNG seed.\n  - `:shrink?` (default: true): when true, a failing trial is shrunk to\n    a minimal counterexample; the resulting map carries `:shrunk-args`,\n    `:original-args` and `:shrink-steps`.",
            "example": "(quick-check 50 (tuple int int) (fn [a b] (= (+ a b) (+ b a))))",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "max-arity": 4,
            "arglists": "([num-tests args-gen property] [num-tests args-gen property __phel_6292])"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/resize",
        "description": "Returns a generator equivalent to `g` but with `size` forced to `n`.",
        "doc": "```phel\n(resize n g)\n```\nReturns a generator equivalent to `g` but with `size` forced to `n`.",
        "signatures": [
            "(resize n g)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L209",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(resize n g)\n```\nReturns a generator equivalent to `g` but with `size` forced to `n`.",
            "example": "((resize 5 nat) 1000) ; => value in [0, 5]",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[n g]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/return",
        "description": "Generator that always yields `x`.",
        "doc": "```phel\n(return x)\n```\nGenerator that always yields `x`.",
        "signatures": [
            "(return x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L175",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(return x)\n```\nGenerator that always yields `x`.",
            "example": "((return 42) 100) ; => 42",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/sample",
        "description": "Runs `g` `num-samples` times (default 10) and returns a vector of values.\n  Accepts `:size` and `:seed`.",
        "doc": "```phel\n(sample g)\n(sample g num-samples)\n(sample g num-samples {:size size, :seed seed})\n```\nRuns `g` `num-samples` times (default 10) and returns a vector of values.\n  Accepts `:size` and `:seed`.",
        "signatures": [
            "(sample g)",
            "(sample g num-samples)",
            "(sample g num-samples {:size size, :seed seed})"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L324",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(sample g)\n(sample g num-samples)\n(sample g num-samples {:size size, :seed seed})\n```\nRuns `g` `num-samples` times (default 10) and returns a vector of values.\n  Accepts `:size` and `:seed`.",
            "example": "(sample int 5) ; => [3 -7 0 1 -2]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 3,
            "arglists": "([g] [g num-samples] [g num-samples __phel_6264])"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/set-of",
        "description": "Generator of hash-sets with elements from `g`. Cardinality in `[0, size]`.",
        "doc": "```phel\n(set-of g)\n```\nGenerator of hash-sets with elements from `g`. Cardinality in `[0, size]`.",
        "signatures": [
            "(set-of g)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L302",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(set-of g)\n```\nGenerator of hash-sets with elements from `g`. Cardinality in `[0, size]`.",
            "example": "((set-of nat) 3) ; => (set 1 2 3)",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[g]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/sized",
        "description": "Builds a generator from a function `f` of `size`. The returned generator\n  forwards its `size` into `f`, which must yield another generator that is\n  then invoked with the same size.",
        "doc": "```phel\n(sized f)\n```\nBuilds a generator from a function `f` of `size`. The returned generator\n  forwards its `size` into `f`, which must yield another generator that is\n  then invoked with the same size.",
        "signatures": [
            "(sized f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L201",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(sized f)\n```\nBuilds a generator from a function `f` of `size`. The returned generator\n  forwards its `size` into `f`, which must yield another generator that is\n  then invoked with the same size.",
            "example": "(sized (fn [n] (return n)))",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[f]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/spec-failure-message",
        "description": "Renders the human-readable failure message for a `defspec` outcome\n  map. Includes the shrink summary when the trial's arguments were\n  shrunk to a smaller counterexample.",
        "doc": "```phel\n(spec-failure-message name-str res)\n```\nRenders the human-readable failure message for a `defspec` outcome\n  map. Includes the shrink summary when the trial's arguments were\n  shrunk to a smaller counterexample.",
        "signatures": [
            "(spec-failure-message name-str res)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L400",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(spec-failure-message name-str res)\n```\nRenders the human-readable failure message for a `defspec` outcome\n  map. Includes the shrink summary when the trial's arguments were\n  shrunk to a smaller counterexample.",
            "example": "(spec-failure-message \"my-spec\" {:result :failed ...})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[name-str res]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/string",
        "description": "Generator of printable ASCII strings, length in `[0, size]`.",
        "doc": "Generator of printable ASCII strings, length in `[0, size]`.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L135",
        "docUrl": "",
        "meta": {
            "doc": "Generator of printable ASCII strings, length in `[0, size]`.",
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/string-alpha",
        "description": "Generator of ASCII alphabetic strings, length in `[0, size]`.",
        "doc": "Generator of ASCII alphabetic strings, length in `[0, size]`.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L139",
        "docUrl": "",
        "meta": {
            "doc": "Generator of ASCII alphabetic strings, length in `[0, size]`.",
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/string-alphanumeric",
        "description": "Generator of ASCII alphanumeric strings, length in `[0, size]`.",
        "doc": "Generator of ASCII alphanumeric strings, length in `[0, size]`.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L143",
        "docUrl": "",
        "meta": {
            "doc": "Generator of ASCII alphanumeric strings, length in `[0, size]`.",
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/such-that",
        "description": "Generator yielding only values from `g` that satisfy `pred`. Retries up to\n  `max-tries` (default 100) before throwing.",
        "doc": "```phel\n(such-that pred g)\n(such-that pred g max-tries)\n```\nGenerator yielding only values from `g` that satisfy `pred`. Retries up to\n  `max-tries` (default 100) before throwing.",
        "signatures": [
            "(such-that pred g)",
            "(such-that pred g max-tries)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L187",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(such-that pred g)\n(such-that pred g max-tries)\n```\nGenerator yielding only values from `g` that satisfy `pred`. Retries up to\n  `max-tries` (default 100) before throwing.",
            "example": "((such-that even? nat) 100)",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "max-arity": 3,
            "arglists": "([pred g] [pred g max-tries])"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/symbol",
        "description": "Generator of symbols with alphabetic names, length in `[1, max(1, size)]`.",
        "doc": "Generator of symbols with alphabetic names, length in `[1, max(1, size)]`.",
        "signatures": [],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L167",
        "docUrl": "",
        "meta": {
            "doc": "Generator of symbols with alphabetic names, length in `[1, max(1, size)]`.",
            "start-location": {},
            "end-location": {}
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/tuple",
        "description": "Generator of a fixed-length vector produced by running each of the given\n  generators in order. Accepts either a vector of generators or variadic\n  generator arguments.",
        "doc": "```phel\n(tuple & gens)\n```\nGenerator of a fixed-length vector produced by running each of the given\n  generators in order. Accepts either a vector of generators or variadic\n  generator arguments.",
        "signatures": [
            "(tuple & gens)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L255",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(tuple & gens)\n```\nGenerator of a fixed-length vector produced by running each of the given\n  generators in order. Accepts either a vector of generators or variadic\n  generator arguments.",
            "example": "((tuple int boolean) 10) ; => [3 true]",
            "start-location": {},
            "end-location": {},
            "min-arity": 0,
            "is-variadic": true,
            "arglists": "[& gens]"
        }
    },
    {
        "namespace": "test.gen",
        "name": "test.gen/vector-of",
        "description": "Generator of vectors. Length is `[0, size]` with one arg, exactly `n` with\n  `(vector-of g n)`, or `[lo, hi]` with `(vector-of g lo hi)`.",
        "doc": "```phel\n(vector-of g)\n(vector-of g n)\n(vector-of g lo hi)\n```\nGenerator of vectors. Length is `[0, size]` with one arg, exactly `n` with\n  `(vector-of g n)`, or `[lo, hi]` with `(vector-of g lo hi)`.",
        "signatures": [
            "(vector-of g)",
            "(vector-of g n)",
            "(vector-of g lo hi)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/gen.phel#L270",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(vector-of g)\n(vector-of g n)\n(vector-of g lo hi)\n```\nGenerator of vectors. Length is `[0, size]` with one arg, exactly `n` with\n  `(vector-of g n)`, or `[lo, hi]` with `(vector-of g lo hi)`.",
            "example": "((vector-of int) 3) ; => [-1 2 0]",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "max-arity": 3,
            "arglists": "([g] [g n] [g lo hi])"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/int-rose-tree",
        "description": "Rose tree for an integer `n` that shrinks toward zero.",
        "doc": "```phel\n(int-rose-tree n)\n```\nRose tree for an integer `n` that shrinks toward zero.",
        "signatures": [
            "(int-rose-tree n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L225",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(int-rose-tree n)\n```\nRose tree for an integer `n` that shrinks toward zero.",
            "example": "(int-rose-tree 10)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[n]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/int-rose-tree-towards",
        "description": "Rose tree for `n` whose children shrink strictly toward `target`.",
        "doc": "```phel\n(int-rose-tree-towards target n)\n```\nRose tree for `n` whose children shrink strictly toward `target`.",
        "signatures": [
            "(int-rose-tree-towards target n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L232",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(int-rose-tree-towards target n)\n```\nRose tree for `n` whose children shrink strictly toward `target`.",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[target n]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/rose-bind",
        "description": "Monadic bind. `f` takes a value and returns a rose tree; the resulting\n  tree combines the shrinks of `t` (each fed through `f`) with the\n  shrinks produced by `f` on the root.",
        "doc": "```phel\n(rose-bind t f)\n```\nMonadic bind. `f` takes a value and returns a rose tree; the resulting\n  tree combines the shrinks of `t` (each fed through `f`) with the\n  shrinks produced by `f` on the root.",
        "signatures": [
            "(rose-bind t f)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L109",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rose-bind t f)\n```\nMonadic bind. `f` takes a value and returns a rose tree; the resulting\n  tree combines the shrinks of `t` (each fed through `f`) with the\n  shrinks produced by `f` on the root.",
            "example": "(rose-bind (rose-pure 1) (fn [n] (rose-pure (inc n))))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[t f]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/rose-children",
        "description": "Returns the lazy sequence of immediate child rose trees.",
        "doc": "```phel\n(rose-children t)\n```\nReturns the lazy sequence of immediate child rose trees.",
        "signatures": [
            "(rose-children t)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L74",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rose-children t)\n```\nReturns the lazy sequence of immediate child rose trees.",
            "example": "(rose-children (rose-pure 1)) ; => ()",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[t]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/rose-filter",
        "description": "Returns the subtree consisting only of nodes whose value satisfies\n  `pred`. Children that fail `pred` are pruned. If the root fails\n  `pred`, returns `nil` (caller is responsible for handling).",
        "doc": "```phel\n(rose-filter pred t)\n```\nReturns the subtree consisting only of nodes whose value satisfies\n  `pred`. Children that fail `pred` are pruned. If the root fails\n  `pred`, returns `nil` (caller is responsible for handling).",
        "signatures": [
            "(rose-filter pred t)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L125",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rose-filter pred t)\n```\nReturns the subtree consisting only of nodes whose value satisfies\n  `pred`. Children that fail `pred` are pruned. If the root fails\n  `pred`, returns `nil` (caller is responsible for handling).",
            "example": "(rose-filter pos? (rose-pure 1))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[pred t]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/rose-fmap",
        "description": "Applies `f` to every value in rose tree `t` (the root and, lazily,\n  every descendant).",
        "doc": "```phel\n(rose-fmap f t)\n```\nApplies `f` to every value in rose tree `t` (the root and, lazily,\n  every descendant).",
        "signatures": [
            "(rose-fmap f t)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L99",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rose-fmap f t)\n```\nApplies `f` to every value in rose tree `t` (the root and, lazily,\n  every descendant).",
            "example": "(rose-fmap inc (rose-pure 1)) ; root = 2",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[f t]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/rose-join",
        "description": "Flattens a rose tree of rose trees into a single rose tree.",
        "doc": "```phel\n(rose-join t)\n```\nFlattens a rose tree of rose trees into a single rose tree.",
        "signatures": [
            "(rose-join t)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L138",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rose-join t)\n```\nFlattens a rose tree of rose trees into a single rose tree.",
            "example": "(rose-join (rose-pure (rose-pure 1)))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[t]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/rose-map",
        "description": "Rose tree for a hash-map. `entry-trees` is a vector of rose trees of\n  `[k v]` pairs. Shrinks by removing entries and by shrinking each\n  pair in place.",
        "doc": "```phel\n(rose-map entry-trees)\n```\nRose tree for a hash-map. `entry-trees` is a vector of rose trees of\n  `[k v]` pairs. Shrinks by removing entries and by shrinking each\n  pair in place.",
        "signatures": [
            "(rose-map entry-trees)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L313",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rose-map entry-trees)\n```\nRose tree for a hash-map. `entry-trees` is a vector of rose trees of\n  `[k v]` pairs. Shrinks by removing entries and by shrinking each\n  pair in place.",
            "example": "(rose-map [...])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[entry-trees]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/rose-pure",
        "description": "Leaf rose tree: value `x` with no shrink candidates.",
        "doc": "```phel\n(rose-pure x)\n```\nLeaf rose tree: value `x` with no shrink candidates.",
        "signatures": [
            "(rose-pure x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L52",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rose-pure x)\n```\nLeaf rose tree: value `x` with no shrink candidates.",
            "example": "(rose-pure 42)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/rose-root",
        "description": "Returns the root value of rose tree `t`.",
        "doc": "```phel\n(rose-root t)\n```\nReturns the root value of rose tree `t`.",
        "signatures": [
            "(rose-root t)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L67",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rose-root t)\n```\nReturns the root value of rose tree `t`.",
            "example": "(rose-root (rose-pure 42)) ; => 42",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[t]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/rose-shrinks",
        "description": "Alias for `rose-children`: the lazy sequence of immediate smaller\n  variants of the current root.",
        "doc": "```phel\n(rose-shrinks t)\n```\nAlias for `rose-children`: the lazy sequence of immediate smaller\n  variants of the current root.",
        "signatures": [
            "(rose-shrinks t)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L81",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rose-shrinks t)\n```\nAlias for `rose-children`: the lazy sequence of immediate smaller\n  variants of the current root.",
            "example": "(rose-shrinks (rose-pure 1)) ; => ()",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[t]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/rose-string",
        "description": "Rose tree for a string whose elements are char rose trees.",
        "doc": "```phel\n(rose-string char-trees)\n```\nRose tree for a string whose elements are char rose trees.",
        "signatures": [
            "(rose-string char-trees)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L296",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rose-string char-trees)\n```\nRose tree for a string whose elements are char rose trees.",
            "example": "(rose-string [(rose-pure \" \")])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[char-trees]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/rose-tree",
        "description": "Rose tree constructor. `children` should be a lazy sequence of rose\n  trees (or any seqable value).",
        "doc": "```phel\n(rose-tree root children)\n```\nRose tree constructor. `children` should be a lazy sequence of rose\n  trees (or any seqable value).",
        "signatures": [
            "(rose-tree root children)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L59",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rose-tree root children)\n```\nRose tree constructor. `children` should be a lazy sequence of rose\n  trees (or any seqable value).",
            "example": "(rose-tree 1 (list (rose-pure 0)))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[root children]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/rose-vector",
        "description": "Rose tree for a vector whose children are built from the rose trees\n  of its elements. Shrinks by removing elements and by shrinking each\n  element in place.",
        "doc": "```phel\n(rose-vector element-trees)\n```\nRose tree for a vector whose children are built from the rose trees\n  of its elements. Shrinks by removing elements and by shrinking each\n  element in place.",
        "signatures": [
            "(rose-vector element-trees)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L266",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rose-vector element-trees)\n```\nRose tree for a vector whose children are built from the rose trees\n  of its elements. Shrinks by removing elements and by shrinking each\n  element in place.",
            "example": "(rose-vector [(int-rose-tree 3) (int-rose-tree 5)])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[element-trees]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/rose-vector-lax",
        "description": "Like `rose-vector` but preserves original length; only shrinks each\n  element in place (no removal).",
        "doc": "```phel\n(rose-vector-lax element-trees)\n```\nLike `rose-vector` but preserves original length; only shrinks each\n  element in place (no removal).",
        "signatures": [
            "(rose-vector-lax element-trees)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L281",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rose-vector-lax element-trees)\n```\nLike `rose-vector` but preserves original length; only shrinks each\n  element in place (no removal).",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[element-trees]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/rose-zip",
        "description": "Takes a vector of rose trees and returns a rose tree whose root is\n  the vector of roots and whose children shrink one position at a time.",
        "doc": "```phel\n(rose-zip trees)\n```\nTakes a vector of rose trees and returns a rose tree whose root is\n  the vector of roots and whose children shrink one position at a time.",
        "signatures": [
            "(rose-zip trees)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L170",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rose-zip trees)\n```\nTakes a vector of rose trees and returns a rose tree whose root is\n  the vector of roots and whose children shrink one position at a time.",
            "example": "(rose-zip [(rose-pure 1) (rose-pure 2)])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[trees]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/rose?",
        "description": "Returns `true` if `x` looks like a rose tree.",
        "doc": "```phel\n(rose? x)\n```\nReturns `true` if `x` looks like a rose tree.",
        "signatures": [
            "(rose? x)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L89",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(rose? x)\n```\nReturns `true` if `x` looks like a rose tree.",
            "example": "(rose? (rose-pure 1)) ; => true",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[x]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/shrink-int",
        "description": "Shrink strategy toward zero: halving steps (`n/2`, `n/4`, \u2026) and then\n  decrement toward zero.",
        "doc": "```phel\n(shrink-int n)\n```\nShrink strategy toward zero: halving steps (`n/2`, `n/4`, \u2026) and then\n  decrement toward zero.",
        "signatures": [
            "(shrink-int n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L211",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(shrink-int n)\n```\nShrink strategy toward zero: halving steps (`n/2`, `n/4`, \u2026) and then\n  decrement toward zero.",
            "example": "(shrink-int 8)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[n]"
        }
    },
    {
        "namespace": "test.rose",
        "name": "test.rose/shrink-int-towards",
        "description": "Returns a seq of integer candidates strictly closer to `target` than\n  `n`. Yields the target first, then halving steps.",
        "doc": "```phel\n(shrink-int-towards target n)\n```\nReturns a seq of integer candidates strictly closer to `target` than\n  `n`. Yields the target first, then halving steps.",
        "signatures": [
            "(shrink-int-towards target n)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/rose.phel#L191",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(shrink-int-towards target n)\n```\nReturns a seq of integer candidates strictly closer to `target` than\n  `n`. Yields the target first, then halving steps.",
            "example": "(shrink-int-towards 0 10) ; => (0 5 7 8 9)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[target n]"
        }
    },
    {
        "namespace": "test.selector",
        "name": "test.selector/has-selectors?",
        "description": "Returns `true` when `options` contains at least one non-empty\n  selector key.",
        "doc": "```phel\n(has-selectors? options)\n```\nReturns `true` when `options` contains at least one non-empty\n  selector key.",
        "signatures": [
            "(has-selectors? options)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/selector.phel#L225",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(has-selectors? options)\n```\nReturns `true` when `options` contains at least one non-empty\n  selector key.",
            "example": "(has-selectors? {:include [:integration]})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[options]"
        }
    },
    {
        "namespace": "test.selector",
        "name": "test.selector/has-tag?",
        "description": "Returns `true` when `meta` carries `tag` (a keyword or a string\n  treated as a keyword). Single-keyword metadata (`^:integration`) and\n  map-based multi-tag metadata (`^{:tags [:integration :slow]}`) both\n  match.",
        "doc": "```phel\n(has-tag? meta tag)\n```\nReturns `true` when `meta` carries `tag` (a keyword or a string\n  treated as a keyword). Single-keyword metadata (`^:integration`) and\n  map-based multi-tag metadata (`^{:tags [:integration :slow]}`) both\n  match.",
        "signatures": [
            "(has-tag? meta tag)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/selector.phel#L57",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(has-tag? meta tag)\n```\nReturns `true` when `meta` carries `tag` (a keyword or a string\n  treated as a keyword). Single-keyword metadata (`^:integration`) and\n  map-based multi-tag metadata (`^{:tags [:integration :slow]}`) both\n  match.",
            "example": "(has-tag? {:integration true} :integration)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[meta tag]"
        }
    },
    {
        "namespace": "test.selector",
        "name": "test.selector/keep-test?",
        "description": "Returns `true` when the test described by `meta` and `ns-name`\n  should be run under `options`. `options` is a map that may carry any\n  of `:include`, `:exclude`, `:ns-patterns`, `:filters`. Selectors that\n  are absent or empty impose no restriction; specified selectors are\n  AND'd together.",
        "doc": "```phel\n(keep-test? options ns-name meta)\n```\nReturns `true` when the test described by `meta` and `ns-name`\n  should be run under `options`. `options` is a map that may carry any\n  of `:include`, `:exclude`, `:ns-patterns`, `:filters`. Selectors that\n  are absent or empty impose no restriction; specified selectors are\n  AND'd together.",
        "signatures": [
            "(keep-test? options ns-name meta)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/selector.phel#L204",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(keep-test? options ns-name meta)\n```\nReturns `true` when the test described by `meta` and `ns-name`\n  should be run under `options`. `options` is a map that may carry any\n  of `:include`, `:exclude`, `:ns-patterns`, `:filters`. Selectors that\n  are absent or empty impose no restriction; specified selectors are\n  AND'd together.",
            "example": "(keep-test? {:include [:integration]} \"my.ns\" {:integration true :test-name \"t\"})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[options ns-name meta]"
        }
    },
    {
        "namespace": "test.selector",
        "name": "test.selector/matches-exclude?",
        "description": "Returns `true` when any tag in `excludes` is truthy on `meta`. An\n  empty or nil `excludes` vector always returns `false` (nothing\n  excluded).",
        "doc": "```phel\n(matches-exclude? excludes meta)\n```\nReturns `true` when any tag in `excludes` is truthy on `meta`. An\n  empty or nil `excludes` vector always returns `false` (nothing\n  excluded).",
        "signatures": [
            "(matches-exclude? excludes meta)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/selector.phel#L85",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(matches-exclude? excludes meta)\n```\nReturns `true` when any tag in `excludes` is truthy on `meta`. An\n  empty or nil `excludes` vector always returns `false` (nothing\n  excluded).",
            "example": "(matches-exclude? [:slow] {:slow true})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[excludes meta]"
        }
    },
    {
        "namespace": "test.selector",
        "name": "test.selector/matches-filter?",
        "description": "Returns `true` when `patterns` is empty (no restriction) or when any\n  entry in `patterns` matches `test-name`.",
        "doc": "```phel\n(matches-filter? patterns test-name)\n```\nReturns `true` when `patterns` is empty (no restriction) or when any\n  entry in `patterns` matches `test-name`.",
        "signatures": [
            "(matches-filter? patterns test-name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/selector.phel#L191",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(matches-filter? patterns test-name)\n```\nReturns `true` when `patterns` is empty (no restriction) or when any\n  entry in `patterns` matches `test-name`.",
            "example": "(matches-filter? [\"add-\"] \"test-add-one\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[patterns test-name]"
        }
    },
    {
        "namespace": "test.selector",
        "name": "test.selector/matches-include?",
        "description": "Returns `true` when `includes` is empty (no restriction) or when any\n  tag in `includes` is truthy on `meta`.",
        "doc": "```phel\n(matches-include? includes meta)\n```\nReturns `true` when `includes` is empty (no restriction) or when any\n  tag in `includes` is truthy on `meta`.",
        "signatures": [
            "(matches-include? includes meta)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/selector.phel#L76",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(matches-include? includes meta)\n```\nReturns `true` when `includes` is empty (no restriction) or when any\n  tag in `includes` is truthy on `meta`.",
            "example": "(matches-include? [:integration] {:integration true})",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[includes meta]"
        }
    },
    {
        "namespace": "test.selector",
        "name": "test.selector/matches-ns?",
        "description": "Returns `true` when `patterns` is empty (no restriction) or when any\n  glob in `patterns` matches `ns-name`.",
        "doc": "```phel\n(matches-ns? patterns ns-name)\n```\nReturns `true` when `patterns` is empty (no restriction) or when any\n  glob in `patterns` matches `ns-name`.",
        "signatures": [
            "(matches-ns? patterns ns-name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/selector.phel#L156",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(matches-ns? patterns ns-name)\n```\nReturns `true` when `patterns` is empty (no restriction) or when any\n  glob in `patterns` matches `ns-name`.",
            "example": "(matches-ns? [\"phel.http.*\"] \"phel.http.client\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[patterns ns-name]"
        }
    },
    {
        "namespace": "test.selector",
        "name": "test.selector/name-matches?",
        "description": "Returns `true` when `pattern` (a PCRE `/.../` string or a plain\n  substring) matches `test-name`.",
        "doc": "```phel\n(name-matches? pattern test-name)\n```\nReturns `true` when `pattern` (a PCRE `/.../` string or a plain\n  substring) matches `test-name`.",
        "signatures": [
            "(name-matches? pattern test-name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/selector.phel#L181",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(name-matches? pattern test-name)\n```\nReturns `true` when `pattern` (a PCRE `/.../` string or a plain\n  substring) matches `test-name`.",
            "example": "(name-matches? \"add-\" \"test-add-one\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[pattern test-name]"
        }
    },
    {
        "namespace": "test.selector",
        "name": "test.selector/ns-matches?",
        "description": "Returns `true` when `ns-name` matches the glob `pattern`. Supports\n  `*` (single segment) and `**` (any run). Backslash-separated\n  namespaces (`phel\\http\\client`) are treated as dotted\n  (`phel.http.client`) so globs stay portable.",
        "doc": "```phel\n(ns-matches? pattern ns-name)\n```\nReturns `true` when `ns-name` matches the glob `pattern`. Supports\n  `*` (single segment) and `**` (any run). Backslash-separated\n  namespaces (`phel\\http\\client`) are treated as dotted\n  (`phel.http.client`) so globs stay portable.",
        "signatures": [
            "(ns-matches? pattern ns-name)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/selector.phel#L143",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(ns-matches? pattern ns-name)\n```\nReturns `true` when `ns-name` matches the glob `pattern`. Supports\n  `*` (single segment) and `**` (any run). Backslash-separated\n  namespaces (`phel\\http\\client`) are treated as dotted\n  (`phel.http.client`) so globs stay portable.",
            "example": "(ns-matches? \"phel.http.*\" \"phel\\\\http\\\\client\")",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[pattern ns-name]"
        }
    },
    {
        "namespace": "test.shrink",
        "name": "test.shrink/args->rose",
        "description": "Rose tree whose root is `args` and children shrink each positional\n  argument in place using its value-based shrinker. Arguments are\n  never dropped (they are function parameters, not collection\n  elements).",
        "doc": "```phel\n(args->rose args)\n```\nRose tree whose root is `args` and children shrink each positional\n  argument in place using its value-based shrinker. Arguments are\n  never dropped (they are function parameters, not collection\n  elements).",
        "signatures": [
            "(args->rose args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/shrink.phel#L108",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(args->rose args)\n```\nRose tree whose root is `args` and children shrink each positional\n  argument in place using its value-based shrinker. Arguments are\n  never dropped (they are function parameters, not collection\n  elements).",
            "example": "(args->rose [10])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[args]"
        }
    },
    {
        "namespace": "test.shrink",
        "name": "test.shrink/shrink",
        "description": "Walks rose tree `tree` depth-first, greedily descending into any\n  child whose root still fails `pred`. Returns\n  `{:smallest v :shrink-steps n :tree final-tree}`.",
        "doc": "```phel\n(shrink pred tree)\n```\nWalks rose tree `tree` depth-first, greedily descending into any\n  child whose root still fails `pred`. Returns\n  `{:smallest v :shrink-steps n :tree final-tree}`.",
        "signatures": [
            "(shrink pred tree)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/shrink.phel#L89",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(shrink pred tree)\n```\nWalks rose tree `tree` depth-first, greedily descending into any\n  child whose root still fails `pred`. Returns\n  `{:smallest v :shrink-steps n :tree final-tree}`.",
            "example": "(shrink pred (value->rose failing-value))",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[pred tree]"
        }
    },
    {
        "namespace": "test.shrink",
        "name": "test.shrink/shrink-args",
        "description": "Shrinks a failing args vector using `property`. Returns\n  `{:smallest args :shrink-steps n}` where `args` is the smallest args\n  vector that still makes `property` fail.",
        "doc": "```phel\n(shrink-args property args)\n```\nShrinks a failing args vector using `property`. Returns\n  `{:smallest args :shrink-steps n}` where `args` is the smallest args\n  vector that still makes `property` fail.",
        "signatures": [
            "(shrink-args property args)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/shrink.phel#L119",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(shrink-args property args)\n```\nShrinks a failing args vector using `property`. Returns\n  `{:smallest args :shrink-steps n}` where `args` is the smallest args\n  vector that still makes `property` fail.",
            "example": "(shrink-args property [10])",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[property args]"
        }
    },
    {
        "namespace": "test.shrink",
        "name": "test.shrink/value->rose",
        "description": "Builds a rose tree for `v` using the built-in shrink strategy that\n  matches its runtime type. Integers shrink toward zero; strings,\n  vectors, lists, hash-maps and sets shrink by element removal plus\n  recursive element shrinks; everything else is a leaf.",
        "doc": "```phel\n(value->rose v)\n```\nBuilds a rose tree for `v` using the built-in shrink strategy that\n  matches its runtime type. Integers shrink toward zero; strings,\n  vectors, lists, hash-maps and sets shrink by element removal plus\n  recursive element shrinks; everything else is a leaf.",
        "signatures": [
            "(value->rose v)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/test/shrink.phel#L49",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(value->rose v)\n```\nBuilds a rose tree for `v` using the built-in shrink strategy that\n  matches its runtime type. Integers shrink toward zero; strings,\n  vectors, lists, hash-maps and sets shrink by element removal plus\n  recursive element shrinks; everything else is a leaf.",
            "example": "(value->rose 10)",
            "see-also": {},
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[v]"
        }
    },
    {
        "namespace": "walk",
        "name": "walk/keywordize-keys",
        "description": "Convert string map keys to keywords, recursively.",
        "doc": "```phel\n(keywordize-keys m)\n```\nConvert string map keys to keywords, recursively.",
        "signatures": [
            "(keywordize-keys m)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/walk.phel#L66",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(keywordize-keys m)\n```\nConvert string map keys to keywords, recursively.",
            "see-also": {},
            "example": "(keywordize-keys {\"name\" \"phel\"}) ; => {:name \"phel\"}",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[m]"
        }
    },
    {
        "namespace": "walk",
        "name": "walk/postwalk",
        "description": "Bottom-up tree walk \u2014 applies f after recursing into children.",
        "doc": "```phel\n(postwalk f form)\n```\nBottom-up tree walk \u2014 applies f after recursing into children.",
        "signatures": [
            "(postwalk f form)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/walk.phel#L29",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(postwalk f form)\n```\nBottom-up tree walk \u2014 applies f after recursing into children.",
            "see-also": {},
            "example": "(postwalk inc [1 [2 3]]) ; => [2 [3 4]]",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[f form]"
        }
    },
    {
        "namespace": "walk",
        "name": "walk/postwalk-replace",
        "description": "Replace values bottom-up using a substitution map.",
        "doc": "```phel\n(postwalk-replace smap form)\n```\nReplace values bottom-up using a substitution map.",
        "signatures": [
            "(postwalk-replace smap form)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/walk.phel#L48",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(postwalk-replace smap form)\n```\nReplace values bottom-up using a substitution map.",
            "see-also": {},
            "example": "(postwalk-replace {:a :b} [:a :c]) ; => [:b :c]",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[smap form]"
        }
    },
    {
        "namespace": "walk",
        "name": "walk/prewalk",
        "description": "Top-down tree walk \u2014 applies f before recursing into children.",
        "doc": "```phel\n(prewalk f form)\n```\nTop-down tree walk \u2014 applies f before recursing into children.",
        "signatures": [
            "(prewalk f form)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/walk.phel#L39",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(prewalk f form)\n```\nTop-down tree walk \u2014 applies f before recursing into children.",
            "see-also": {},
            "example": "(prewalk identity [1 [2 3]]) ; => [1 [2 3]]",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[f form]"
        }
    },
    {
        "namespace": "walk",
        "name": "walk/prewalk-replace",
        "description": "Replace values top-down using a substitution map.",
        "doc": "```phel\n(prewalk-replace smap form)\n```\nReplace values top-down using a substitution map.",
        "signatures": [
            "(prewalk-replace smap form)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/walk.phel#L57",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(prewalk-replace smap form)\n```\nReplace values top-down using a substitution map.",
            "see-also": {},
            "example": "(prewalk-replace {:a :b} [:a :c]) ; => [:b :c]",
            "start-location": {},
            "end-location": {},
            "min-arity": 2,
            "is-variadic": false,
            "arglists": "[smap form]"
        }
    },
    {
        "namespace": "walk",
        "name": "walk/stringify-keys",
        "description": "Convert keyword map keys to strings, recursively.",
        "doc": "```phel\n(stringify-keys m)\n```\nConvert keyword map keys to strings, recursively.",
        "signatures": [
            "(stringify-keys m)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/walk.phel#L81",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(stringify-keys m)\n```\nConvert keyword map keys to strings, recursively.",
            "see-also": {},
            "example": "(stringify-keys {:name \"phel\"}) ; => {\"name\" \"phel\"}",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[m]"
        }
    },
    {
        "namespace": "walk",
        "name": "walk/walk",
        "description": "Generic tree walker for nested data structures.",
        "doc": "```phel\n(walk inner outer form)\n```\nGeneric tree walker for nested data structures.",
        "signatures": [
            "(walk inner outer form)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/walk.phel#L4",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(walk inner outer form)\n```\nGeneric tree walker for nested data structures.",
            "see-also": {},
            "example": "(walk inc identity [1 2 3]) ; => [2 3 4]",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[inner outer form]"
        }
    },
    {
        "namespace": "watch",
        "name": "watch/clear-on-reload",
        "description": "Removes every hook registered for `namespace`.",
        "doc": "```phel\n(clear-on-reload namespace)\n```\nRemoves every hook registered for `namespace`.",
        "signatures": [
            "(clear-on-reload namespace)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/watch.phel#L18",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(clear-on-reload namespace)\n```\nRemoves every hook registered for `namespace`.",
            "example": "(clear-on-reload \"my-app\\core\")",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[namespace]"
        }
    },
    {
        "namespace": "watch",
        "name": "watch/register-on-reload",
        "description": "Registers a zero-arg function to run every time `namespace` is\n  reloaded by the watcher. Replaces any previously registered hook\n  with the same `name`.",
        "doc": "```phel\n(register-on-reload namespace name hook-fn)\n```\nRegisters a zero-arg function to run every time `namespace` is\n  reloaded by the watcher. Replaces any previously registered hook\n  with the same `name`.",
        "signatures": [
            "(register-on-reload namespace name hook-fn)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/watch.phel#L7",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(register-on-reload namespace name hook-fn)\n```\nRegisters a zero-arg function to run every time `namespace` is\n  reloaded by the watcher. Replaces any previously registered hook\n  with the same `name`.",
            "example": "(register-on-reload \"my-app\\core\" :refresh (fn [] (println \"reloaded\")))",
            "start-location": {},
            "end-location": {},
            "min-arity": 3,
            "is-variadic": false,
            "arglists": "[namespace name hook-fn]"
        }
    },
    {
        "namespace": "watch",
        "name": "watch/run-on-reload-hooks",
        "description": "Executes every hook registered for `namespace`. Returns the\n  number of hooks that fired.",
        "doc": "```phel\n(run-on-reload-hooks namespace)\n```\nExecutes every hook registered for `namespace`. Returns the\n  number of hooks that fired.",
        "signatures": [
            "(run-on-reload-hooks namespace)"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/watch.phel#L24",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(run-on-reload-hooks namespace)\n```\nExecutes every hook registered for `namespace`. Returns the\n  number of hooks that fired.",
            "example": "(run-on-reload-hooks \"my-app\\core\")",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": false,
            "arglists": "[namespace]"
        }
    },
    {
        "namespace": "watch",
        "name": "watch/watch!",
        "description": "Starts the file watcher on the given vector of paths. Blocks until\n  the watcher is stopped (e.g. Ctrl+C). Reloads changed namespaces in\n  dependency order and runs any hooks registered with `register-on-reload`.",
        "doc": "```phel\n(watch! paths & [opts])\n```\nStarts the file watcher on the given vector of paths. Blocks until\n  the watcher is stopped (e.g. Ctrl+C). Reloads changed namespaces in\n  dependency order and runs any hooks registered with `register-on-reload`.",
        "signatures": [
            "(watch! paths & [opts])"
        ],
        "githubUrl": "https://github.com/phel-lang/phel-lang/blob/v0.39.0/src/phel/watch.phel#L36",
        "docUrl": "",
        "meta": {
            "doc": "```phel\n(watch! paths & [opts])\n```\nStarts the file watcher on the given vector of paths. Blocks until\n  the watcher is stopped (e.g. Ctrl+C). Reloads changed namespaces in\n  dependency order and runs any hooks registered with `register-on-reload`.",
            "example": "(watch! [\"src/\" \"tests/\"])",
            "start-location": {},
            "end-location": {},
            "min-arity": 1,
            "is-variadic": true,
            "arglists": "[paths & __phel_6513]"
        }
    }
]