[
    {
        "name": "Unique",
        "comment": "\nPure generation of unique identifiers in Elm.\n\n# Types\n@docs Id, Unique\n\n# Run\n@docs run\n\n# Introduction\n@docs return, unique\n\n# Sequencing\n@docs andThen, map, map2, map3, replicate, sequence\n\n",
        "unions": [
            {
                "name": "Id",
                "comment": " The type of an identifier. Identifiers are integers, but this is an opaque\ntype so that we cannot introduce them by accident. Equality and toString are\nsupported on `Id` values.\n",
                "args": [],
                "cases": []
            },
            {
                "name": "Unique",
                "comment": " A computation that consumes unique identifiers and produces a value of type\n`a`.\n",
                "args": [
                    "a"
                ],
                "cases": []
            }
        ],
        "aliases": [],
        "values": [
            {
                "name": "andThen",
                "comment": " Chain together two `Unique` computations. ",
                "type": "(a -> Unique b) -> Unique a -> Unique b"
            },
            {
                "name": "map",
                "comment": " Apply a function to the result of a `Unique` computation. ",
                "type": "(a -> b) -> Unique a -> Unique b"
            },
            {
                "name": "map2",
                "comment": " Apply a function to the result of two `Unique` computations. ",
                "type": "(a -> b -> c) -> Unique a -> Unique b -> Unique c"
            },
            {
                "name": "map3",
                "comment": " Apply a function to the result of three `Unique` computations. ",
                "type": "(a -> b -> c -> d) -> Unique a -> Unique b -> Unique c -> Unique d"
            },
            {
                "name": "replicate",
                "comment": " Repeatedly invoke a `Unique` computation, generating a list of results. ",
                "type": "Int -> Unique a -> Unique (List a)"
            },
            {
                "name": "return",
                "comment": " Return a constant value without consuming any IDs. ",
                "type": "a -> Unique a"
            },
            {
                "name": "run",
                "comment": " Run a computation that consumes unique IDs. Within one invocation of `run`,\nthe generated `Id` values are guaranteed to be unique. However, multiple\ninvocations of `run` will generate conflicting `Id`s. ",
                "type": "Unique a -> a"
            },
            {
                "name": "sequence",
                "comment": " Execute a list of `Unique` computations in order. ",
                "type": "List (Unique a) -> Unique (List a)"
            },
            {
                "name": "unique",
                "comment": " Generate a unique ID. ",
                "type": "Unique Id"
            }
        ],
        "binops": []
    }
]