[
    {
        "name": "DList",
        "comment": " A representation of lists with an efficient append operation. This is\nparticularly useful for efficient logging and pretty printing, where repeatedly\nappending lists quickly becomes too expensive. Internally, `DList` is a\nfunction that prepends elements to its parameter. Thus the `append` operation\nis just function composition. Ultimately, a `DList` is converted to a regular\n`List` by applying the function to the empty list.\n\nSome limitations of the `DList` representation are:\n\n  - We cannot ask for the length of a `DList` without converting it to a\n    regular list.\n\n  - We cannot test equality on `DList`s without converting them.\n\n@docs DList, toList\n\n# Construction\n@docs empty, singleton, cons, snoc, append, fromList\n\n# Processing\n@docs concat, foldr, intersperse, map\n\n",
        "unions": [
            {
                "name": "DList",
                "comment": " A difference list containing elements of type `a`. ",
                "args": [
                    "a"
                ],
                "cases": []
            }
        ],
        "aliases": [],
        "values": [
            {
                "name": "append",
                "comment": " Concatenate two lists. ",
                "type": "DList a -> DList a -> DList a"
            },
            {
                "name": "concat",
                "comment": " Concatenate a list of difference lists. ",
                "type": "List (DList a) -> DList a"
            },
            {
                "name": "cons",
                "comment": " Prepend an element onto the front of the list. ",
                "type": "a -> DList a -> DList a"
            },
            {
                "name": "empty",
                "comment": " The empty list. ",
                "type": "DList a"
            },
            {
                "name": "foldr",
                "comment": " Iterate through a `DList`. ",
                "type": "(a -> b -> b) -> b -> DList a -> b"
            },
            {
                "name": "fromList",
                "comment": " Convert a regular Elm `List` to a difference list. ",
                "type": "List a -> DList a"
            },
            {
                "name": "intersperse",
                "comment": " Intersperse the contents of a `DList` between other lists. ",
                "type": "DList a -> List (DList a) -> DList a"
            },
            {
                "name": "map",
                "comment": " Apply a function to each element, accumulating the results as a `DList`. ",
                "type": "(a -> b) -> DList a -> DList b"
            },
            {
                "name": "singleton",
                "comment": " Construct a list containing one element. ",
                "type": "a -> DList a"
            },
            {
                "name": "snoc",
                "comment": " Add an element onto the back of the list. O(1) just like `append`. ",
                "type": "DList a -> a -> DList a"
            },
            {
                "name": "toList",
                "comment": " Convert to a regular Elm `List` by applying the underlying function\n    representation. ",
                "type": "DList a -> List a"
            }
        ],
        "binops": []
    }
]