Skip to main content

List

Handles list-like operations.

Lists are ordered tables with numeric indices.

Functions​

butLast​

List.butLast(list: {Value}) → {Value}

Returns a List containing all entires except the last.

Equivalent to slice(1, -1). See List.slice for more information.

List.butLast({ 1, 2, 3 })
-- { 1, 2 }

concat​

List.concat(...: {Value}) → {Value}

Returns a List of the same type concatenated to given arguments.

List.concat({ "a", "b", "c" }, { "d", "e", "f" })
-- { "a", "b", "c", "d", "e", "f" }

count​

List.count(
list: {Value},
predicate: ((
Value,
number
) → boolean)?
) → number

Returns the number of entries that match the predicate. If the predicate is not given, all entries will be considered a match.

List.count({ "a", "b", "c" })
-- 3

List.count({ "a", "b", "c" }, function(value)
	return value == "b"
end)
-- 1

equals​

List.equals(
listA: {Value},
listB: any
) → boolean

Returns true if both Lists have value equality.

local list1 = { "a", "b", "c" }
local list2 = { "a", "b", "c" }

List.equals(list1, list2)
-- true

every​

List.every(
list: {Value},
predicate: (
Value,
number
) → boolean
) → boolean

Returns true if predicate returns true for all entries in the list.

List.every({ "a", "b", "c" }, function(value, key)
	return string.lower(value) == value
end)
-- true

filter​

List.filter(
list: {Value},
predicate: (
Value,
number
) → boolean
) → {Value}

Returns a new List of only entries for which the predicate function returns true.

List.filter({ 1, 2, 3, 4 }, function(value, key)
	return value % 2 == 0
end)
-- { 2, 4 }

filterNot​

List.filterNot(
list: {Value},
predicate: (
Value,
number
) → boolean
) → {Value}

Returns a new List of only entries for which the predicate function returns false.

List.filterNot({ 1, 2, 3, 4 }, function(value, index)
	return value % 2 == 0
end)
-- { 1, 3 }

find​

List.find(
list: {Value},
predicate: (
Value,
number
) → boolean,
notSetValue: Value?
) → Value?

Returns the first value for which the predicate returns true.

List.find({ "a", "B", "c" }, function(value, key)
	return value == string.upper(v)
end)
-- "B"

findIndex​

List.findIndex(
list: {Value},
predicate: (
Value,
number
) → boolean
) → number?

Returns the first index for which the predicate returns true.

List.findIndex({ "a", "B", "c" }, function(value, index)
	return value == string.upper(v)
end)
-- 2

findPair​

List.findPair(
list: {Value},
predicate: (
Value,
number
) → boolean
) → (
number?,
Value?
)

Returns the first [index, value] pair for which the predicate returns true.

List.findPair({ "a", "B", "c" }, function(value, index)
	return value == string.upper(v)
end)
-- ( 2, "B" )

first​

List.first(
list: {Value},
notSetValue: Value?
) → ()

Returns the first value in the list.

List.first({ "a", "b", "c" })
-- "a"

flatten​

List.flatten(
list: {ListOf<Value>},
depth: number?
) → {ListOf<Value>}

Returns a flattened list in the same index-order as each Value would appear.

List.flatten({
	"foo",
	{
		"bar",
		"baz",
	},
	{
		"bar",
		"baz",
	},
	"quz",
})
-- { "foo", "bar", "baz", "bar", "baz", "quz" }

forEach​

List.forEach(
list: {Value},
sideEffect: (
Value,
number
) → boolean
) → number

While the List is iterated, the sideEffect is executed for every entry. If any call of the sideEffect returns false, the iteration will stop.

Returns the number of entries iterated (including the last iteration which returned false).

List.forEach({ 1, 10, -20, 30 }, function(value, index)
	return value > 0
end)
-- 3

get​

List.get(
list: {Value},
index: number,
notSetValue: Value?
) → Value?

Returns the value at the given index, otherwise returns notSetValue if the given value is not found.

If index is negative, the index will start from the last value.

List.get({ "a", "b", "c" }, 3)
-- "c"

List.get({ "a", "b", "c" }, -1)
-- "c"

List.get({ "a", "b", "c" }, 100, "default")
-- "default"

has​

List.has(
list: {Value},
index: number
) → boolean

Returns true if the index exists within the List.

List.has({ "a", "b", "c" }, 2)
-- true

includes​

List.includes(
list: {Value},
query: Value
) → boolean

Returns true if the value is found within the List.

List.includes({ "a", "b", "c" }, "b")
-- true

indexOf​

List.indexOf(
list: {Value},
searchValue: Value
) → number?

Returns the index of the value if found within the List, otherwise returns nil.

List.indexOf({ "a", "b", "c" }, "b")
-- 2

insert​

List.insert(
list: {Value},
index: number,
...: Value
) → {Value}

Inserts values given starting from the given index, pushing existing values towards the end.

The inserted value will be clamped to the beginning or end of the List if the given index is out of bounds.

List.insert({ "a", "b", "c" }, 2, "X", "Y", "Z")
-- { "a", "X", "Y", "Z", "b", "c" }

joinAsString​

List.joinAsString(
list: {Value},
separator: string?
) → string

Joins values together as a string, inserting a separator between each.

The default separator is ",".

List.joinAsString({ "a", "b", "c" }, ", ")
-- "a, b, c"

last​

List.last(
list: {Value},
notSetValue: Value?
) → Value?

Returns the last value in the List.

Returns notSetValue if the List is empty.

List.last({ "a", "b", "c" })
-- "c"

List.last({ }, "default")
-- "default"

map​

List.map(
list: {Value},
mapper: (
Value,
number
) → (
NewValue,
number?
)
) → {NewValue}

Returns a List with values passed through a mapper function.

Returning a second value in the mapper function will reassign the index.

If mapper returns nil, the entry will be filtered.

List.map({ 1, 2, 3 }, function(value, index)
	return value * 10
end)
-- { 10, 20, 30 }

max​

List.max(
list: {Value},
comparator: ((
Value,
Value
) → boolean)?
) → (
Value,
number?
)

Returns the maximum value in this List. If any values are comparatively equivalent, the first one found will be returned.

The comparator is used in the same way as table.sort. If it is not provided, the default comparator is >.

List.max({ 10, 200, 30 })
-- ( 200, 2 )

List.max({ child, teen, adult }, function(personA, personB)
	return personA.age > personB.age
end)
-- ( adult, 3 )

merge​

List.merge(...: {any}) → {any}

Returns a merged result of all given Lists.

If Freeze.None is a value assigned to an index, it will delete that index from the resulting List.

List.merge({ 10, nil, 30 }, { nil, 20, nil })
-- { 10, 20, 30 }

List.merge({ "a", "b", "c" }, { "x" }, { nil, "y", Freeze.None })
-- { "x", "y" }

min​

List.min(
list: {Value},
comparator: ((
Value,
Value
) → boolean)?
) → (
Value,
number?
)

Returns the minimum value in this List. If any values are comparatively equivalent, the first one found will be returned.

The comparator is used in the same way as table.sort. If it is not provided, the default comparator is >.

List.min({ 10, 200, 30 })
-- 10

List.min({ child, teen, adult }, function(personA, personB)
	return personA.age > personB.age
end)
-- child

pop​

List.pop(
list: {Value},
amount: number?
) → {Value}

Returns a List excluding the last index of this List.

This will repeat multiple times if given the optional amount argument and will always pop at least once.

List.pop({ 10, 20, 30 })
-- { 10, 20 }

List.pop({ 10, 20, 30 }, 2)
-- { 10 }

push​

List.push(
list: {Value},
...: Value
) → {Value}

Returns a List with the provided values appended at the end of the List.

List.push({ 10, 20, 30 }, 40, 50, 60)
-- { 10, 20, 30, 40, 50, 60 }

reduce​

List.reduce(
list: {Value},
reducer: (
T,
Value,
number
) → T,
initialReduction: T
) → T

Returns the final reduced result by iterating the List and calling the reducer for every entry and passing along the reduced value.

List.reduce({ 10, 20, 30 }, function(reduction, value)
	return reduction + value
end, 0)
-- 60

reduceRight​

List.reduceRight(
list: {Value},
reducer: (
T,
Value,
number
) → T,
initialReduction: T
) → T

Returns the final reduced result by iterating the list in reverse (from the right side) and calling the reducer for every entry and passing along the reduced value.

List.reduceRight({ "a", "b", "c" }, function(reduction, value)
	return reduction .. value
end, "")
-- "cba"

remove​

List.remove(
list: {Value},
...: number
) → {Value}

Returns a List which excludes this index. Values at indices above index are shifted down by 1 to fill the position.

index may be a negative number, which indexes back from the end of the list. list.remove(-1) removes the last item in the list.

If the given given results in an index that is out of bounds, it will return the original list with no changes.

List.remove({ "a", "b", "c", "d" }, 3)
-- { "a", "b", "d" }

removeValue​

List.removeValue(
list: {Value},
...: Value
) → {Value}

Returns a List having removed all entries with the given value.

If no values are present, it will return the original List with no changes.

List.removeValue({ "a", "b", "c" }, "a")
-- { "b", "c" }

rest​

List.rest(list: {Value}) → {Value}

Returns a List containing all entries except the first.

Equivalent to slice(2). See List.slice for more information.

List.rest({ "a", "b", "c" })
-- { "b", "c" }

reverse​

List.reverse(list: {Value}) → {Value}

Returns a List in reverse order.

List.reverse({ "a", "b", "c" })
-- { "c", "b", "a" }

set​

List.set(
list: {Value},
index: number,
value: Value
) → {Value}

Returns a List which includes value at index. If index already exists, it will be replaced.

Returns the original List if no changes were made.

List.set({"a", "b", "c"}, 1, "A")
-- { "A", "b", "c" }

shift​

List.shift(
list: {Value},
amount: number?
) → {Value}

Returns a List excluding the first index in this List, shifting all other values to a lower index.

If amount is not provided, it will default to 1. Passing an amount greater than the length of the given List will result in an empty List.

List.shift({ "a", "b", "c" })
-- { "b", "c" }

skip​

List.skip(
list: {Value},
amount: number
) → {Value}

Returns a List which excludes the first amount of entries.

List.skip({ "a", "b", "c", "d" }, 2)
-- { "c", "d" }

slice​

List.slice(
list: {Value},
from: number?,
to: number?
) → {Value}

Returns a List that includes the range [from, to).

If from is negative, it is offset from the end of the list. slice(-2) returns a list of the last two entries. If it is not provided, the new list will begin at the first entry.

If to is negative, it is offset from the end of the list. slice(1, -1) returns a list of everything but the last entry. If it is not provided, the new list will continue through the end of the list.

List.slice({ "a", "b", "c" }, 2)
-- { "b", "c" }

List.slice({ "a", "b", "c" }, -1)
-- { "c" }

List.slice({ "a", "b", "c" }, 1, -1)
-- { "a", "b" }

some​

List.some(
list: {Value},
predicate: (
Value,
number
) → boolean
) → boolean

Returns true if predicate returns true for any entry in the List.

List.some({ 1, 2, 3 }, function(value, index)
	return value % 2 == 0
end)
-- true

sort​

List.sort(
list: {Value},
comparator: ((
Value,
Value
) → boolean)?
) → ()

Returns a List which includes the same entries, sorted by using a comparator.

If a comparator is not provided, a default comparator uses < and >.

List.sort({ 4, 2, 1, 3 })
-- { 1, 2, 3, 4 }

take​

List.take(
list: {Value},
amount: number
) → {Value}

Returns a List which includes the first amount of entires.

List.take({ "a", "b", "c", "d" }, 2)
-- { "a", "b" }

takeLast​

List.takeLast(
list: {Value},
amount: number
) → {Value}

Returns a List which includes the last amount of entires.

List.takeLast({ "a", "b", "c" }, 2)
-- { "b", "c" }

unshift​

List.unshift(
list: {Value},
...: Value
) → {Value}

Returns a List with the provided values prepended, shifting other values ahead to higher indices.

List.unshift({ "b", "c" }, "a")
-- { "a", "b", "c" }

update​

List.update(
list: {Value},
index: number,
updater: (Value?) → Value,
notSetValue: Value?
) → {Value}

Returns a List with the entry at index updated to the result of updater.

If the entry does not exist, updater will be given notSetValue or nil.

List.update({ "a", "b", "c" }, 2, function(value)
	return string.rep(value, 5)
end)
-- { "a", "bbbbb", "c" }

List.update({ "a", "b", "c" }, 4, function(value)
	return string.rep(value, 5)
end, "d")
-- { "a", "b", "c", "ddddd" }

zip​

List.zip(...: {Value}) → {{Value}}

Returns a List with all lists given "zipped" together. The length of the List is the length of the shortest provided list.

List.zip({ "a", "b", "c" }, { "x", "y", "z" })
-- { { "a", "x" }, { "b", "y" }, { "c", "z" } }

List.zip({ alice, bertram, charlie }, { alexander, betty, candice, dennis })
-- { { alice, alexander }, { bertram, betty }, { charlie, candice } }
-- Note: dennis is omitted and not paired.

append​

deprecated in v0.0.4
</>
This was deprecated in v0.0.4

Use [List.push] instead.

List.append(
list: {Value},
...: Value
) → {Value}

create​

deprecated in v0.0.4
</>
This was deprecated in v0.0.4

Use [table.create] instead.

List.create(
count: number,
value: Value?
) → {Value}

findWhere​

deprecated in v0.0.4
</>
This was deprecated in v0.0.4

Use [List.find] instead.

List.findWhere(
list: {Value},
predicate: (
Value,
number
) → boolean,
from: never
) → Value?

findWhereLast​

deprecated in v0.0.4
</>
This was deprecated in v0.0.4

Use [List.reverse] and then [List.find] instead.

List.findWhereLast(
list: {Value},
predicate: (
Value,
number
) → boolean,
from: never?
) → Value?

join​

deprecated in v0.0.4
</>
This was deprecated in v0.0.4

Use [List.merge] instead.

List.join(...: {any}) → {any}

removeIndex​

deprecated in v0.0.4
</>
This was deprecated in v0.0.4

Use [List.remove] instead.

List.removeIndex(
list: {Value},
index: number
) → {Value}

removeIndices​

deprecated in v0.0.4
</>
This was deprecated in v0.0.4

Use [List.remove] instead.

List.removeIndices(
list: {Value},
...: number
) → {Value}

removeValues​

deprecated in v0.0.4
</>
This was deprecated in v0.0.4

Use [List.removeValue] instead.

List.removeValues(
list: {Value},
...: Value
) → {Value}
Show raw api
{
    "functions": [
        {
            "name": "butLast",
            "desc": "Returns a List containing all entires except the last.\n\nEquivalent to `slice(1, -1)`. See [List.slice] for more information.\n\n```lua\nList.butLast({ 1, 2, 3 })\n-- { 1, 2 }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 16,
                "path": "source/List/butLast.lua"
            }
        },
        {
            "name": "append",
            "desc": "",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "...",
                    "desc": "",
                    "lua_type": "Value"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "deprecated": {
                "version": "v0.0.4",
                "desc": "Use [List.push] instead."
            },
            "source": {
                "line": 9,
                "path": "source/List/compat/append.lua"
            }
        },
        {
            "name": "create",
            "desc": "",
            "params": [
                {
                    "name": "count",
                    "desc": "",
                    "lua_type": "number"
                },
                {
                    "name": "value",
                    "desc": "",
                    "lua_type": "Value?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "deprecated": {
                "version": "v0.0.4",
                "desc": "Use [table.create] instead."
            },
            "source": {
                "line": 8,
                "path": "source/List/compat/create.lua"
            }
        },
        {
            "name": "findWhere",
            "desc": "",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "predicate",
                    "desc": "",
                    "lua_type": "(Value, number) -> boolean"
                },
                {
                    "name": "from",
                    "desc": "",
                    "lua_type": "never"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Value?\n"
                }
            ],
            "function_type": "static",
            "deprecated": {
                "version": "v0.0.4",
                "desc": "Use [List.find] instead."
            },
            "source": {
                "line": 9,
                "path": "source/List/compat/findWhere.lua"
            }
        },
        {
            "name": "findWhereLast",
            "desc": "",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "predicate",
                    "desc": "",
                    "lua_type": "(Value, number) -> boolean"
                },
                {
                    "name": "from",
                    "desc": "",
                    "lua_type": "never?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Value?\n"
                }
            ],
            "function_type": "static",
            "deprecated": {
                "version": "v0.0.4",
                "desc": "Use [List.reverse] and then [List.find] instead."
            },
            "source": {
                "line": 10,
                "path": "source/List/compat/findWhereLast.lua"
            }
        },
        {
            "name": "join",
            "desc": "",
            "params": [
                {
                    "name": "...",
                    "desc": "",
                    "lua_type": "{ any }"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ any }\n"
                }
            ],
            "function_type": "static",
            "deprecated": {
                "version": "v0.0.4",
                "desc": "Use [List.merge] instead."
            },
            "source": {
                "line": 9,
                "path": "source/List/compat/join.lua"
            }
        },
        {
            "name": "removeIndex",
            "desc": "",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "index",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "deprecated": {
                "version": "v0.0.4",
                "desc": "Use [List.remove] instead."
            },
            "source": {
                "line": 9,
                "path": "source/List/compat/removeIndex.lua"
            }
        },
        {
            "name": "removeIndices",
            "desc": "",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "...",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "deprecated": {
                "version": "v0.0.4",
                "desc": "Use [List.remove] instead."
            },
            "source": {
                "line": 9,
                "path": "source/List/compat/removeIndices.lua"
            }
        },
        {
            "name": "removeValues",
            "desc": "",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "...",
                    "desc": "",
                    "lua_type": "Value"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "deprecated": {
                "version": "v0.0.4",
                "desc": "Use [List.removeValue] instead."
            },
            "source": {
                "line": 9,
                "path": "source/List/compat/removeValues.lua"
            }
        },
        {
            "name": "concat",
            "desc": "Returns a List of the same type concatenated to given arguments.\n\n```lua\nList.concat({ \"a\", \"b\", \"c\" }, { \"d\", \"e\", \"f\" })\n-- { \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" }\n```",
            "params": [
                {
                    "name": "...",
                    "desc": "",
                    "lua_type": "{ Value }"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 15,
                "path": "source/List/concat.lua"
            }
        },
        {
            "name": "count",
            "desc": "Returns the number of entries that match the `predicate`.\nIf the `predicate` is not given, all entries will be considered a match.\n\n```lua\nList.count({ \"a\", \"b\", \"c\" })\n-- 3\n\nList.count({ \"a\", \"b\", \"c\" }, function(value)\n\treturn value == \"b\"\nend)\n-- 1\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "predicate",
                    "desc": "",
                    "lua_type": "((Value, number) -> boolean)?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 20,
                "path": "source/List/count.lua"
            }
        },
        {
            "name": "equals",
            "desc": "Returns true if both Lists have value equality.\n\n```lua\nlocal list1 = { \"a\", \"b\", \"c\" }\nlocal list2 = { \"a\", \"b\", \"c\" }\n\nList.equals(list1, list2)\n-- true\n```",
            "params": [
                {
                    "name": "listA",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "listB",
                    "desc": "",
                    "lua_type": "any"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 17,
                "path": "source/List/equals.lua"
            }
        },
        {
            "name": "every",
            "desc": "Returns true if `predicate` returns true for all entries in the list.\n\n```lua\nList.every({ \"a\", \"b\", \"c\" }, function(value, key)\n\treturn string.lower(value) == value\nend)\n-- true\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "predicate",
                    "desc": "",
                    "lua_type": "(Value, number) -> boolean"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 15,
                "path": "source/List/every.lua"
            }
        },
        {
            "name": "filter",
            "desc": "Returns a new List of only entries for which the `predicate` function returns true.\n\n```lua\nList.filter({ 1, 2, 3, 4 }, function(value, key)\n\treturn value % 2 == 0\nend)\n-- { 2, 4 }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "predicate",
                    "desc": "",
                    "lua_type": "(Value, number) -> boolean"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 15,
                "path": "source/List/filter.lua"
            }
        },
        {
            "name": "filterNot",
            "desc": "Returns a new List of only entries for which the `predicate` function returns false.\n\n```lua\nList.filterNot({ 1, 2, 3, 4 }, function(value, index)\n\treturn value % 2 == 0\nend)\n-- { 1, 3 }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "predicate",
                    "desc": "",
                    "lua_type": "(Value, number) -> boolean"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 16,
                "path": "source/List/filterNot.lua"
            }
        },
        {
            "name": "find",
            "desc": "Returns the first value for which the `predicate` returns true.\n\n```lua\nList.find({ \"a\", \"B\", \"c\" }, function(value, key)\n\treturn value == string.upper(v)\nend)\n-- \"B\"\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "predicate",
                    "desc": "",
                    "lua_type": "(Value, number) -> boolean"
                },
                {
                    "name": "notSetValue",
                    "desc": "",
                    "lua_type": "Value?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Value?\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 16,
                "path": "source/List/find.lua"
            }
        },
        {
            "name": "findIndex",
            "desc": "Returns the first index for which the `predicate` returns true.\n\n```lua\nList.findIndex({ \"a\", \"B\", \"c\" }, function(value, index)\n\treturn value == string.upper(v)\nend)\n-- 2\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "predicate",
                    "desc": "",
                    "lua_type": "(Value, number) -> boolean"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number?\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 16,
                "path": "source/List/findIndex.lua"
            }
        },
        {
            "name": "findPair",
            "desc": "Returns the first [index, value] pair for which the `predicate` returns true.\n\n```lua\nList.findPair({ \"a\", \"B\", \"c\" }, function(value, index)\n\treturn value == string.upper(v)\nend)\n-- ( 2, \"B\" )\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "predicate",
                    "desc": "",
                    "lua_type": "(Value, number) -> boolean"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number?"
                },
                {
                    "desc": "",
                    "lua_type": "Value?"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 16,
                "path": "source/List/findPair.lua"
            }
        },
        {
            "name": "first",
            "desc": "Returns the first value in the list.\n\n```lua\nList.first({ \"a\", \"b\", \"c\" })\n-- \"a\"\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "notSetValue",
                    "desc": "",
                    "lua_type": "Value?"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 14,
                "path": "source/List/first.lua"
            }
        },
        {
            "name": "flatten",
            "desc": "Returns a flattened list in the same index-order as each Value would appear.\n\n```lua\nList.flatten({\n\t\"foo\",\n\t{\n\t\t\"bar\",\n\t\t\"baz\",\n\t},\n\t{\n\t\t\"bar\",\n\t\t\"baz\",\n\t},\n\t\"quz\",\n})\n-- { \"foo\", \"bar\", \"baz\", \"bar\", \"baz\", \"quz\" }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ ListOf<Value> }"
                },
                {
                    "name": "depth",
                    "desc": "",
                    "lua_type": "number?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ ListOf<Value> }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 27,
                "path": "source/List/flatten.lua"
            }
        },
        {
            "name": "forEach",
            "desc": "While the List is iterated, the `sideEffect` is executed for every entry.\nIf any call of the `sideEffect` returns `false`, the iteration will stop.\n\nReturns the number of entries iterated (including the last iteration which returned false).\n\n```lua\nList.forEach({ 1, 10, -20, 30 }, function(value, index)\n\treturn value > 0\nend)\n-- 3\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "sideEffect",
                    "desc": "",
                    "lua_type": "(Value, number) -> boolean"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 18,
                "path": "source/List/forEach.lua"
            }
        },
        {
            "name": "get",
            "desc": "Returns the value at the given index, otherwise returns `notSetValue` if the given value is not found.\n\nIf `index` is negative, the index will start from the last value.\n\n```lua\nList.get({ \"a\", \"b\", \"c\" }, 3)\n-- \"c\"\n\nList.get({ \"a\", \"b\", \"c\" }, -1)\n-- \"c\"\n\nList.get({ \"a\", \"b\", \"c\" }, 100, \"default\")\n-- \"default\"\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "index",
                    "desc": "",
                    "lua_type": "number"
                },
                {
                    "name": "notSetValue",
                    "desc": "",
                    "lua_type": "Value?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Value?\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 20,
                "path": "source/List/get.lua"
            }
        },
        {
            "name": "has",
            "desc": "Returns true if the `index` exists within the List.\n\n```lua\nList.has({ \"a\", \"b\", \"c\" }, 2)\n-- true\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "index",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 12,
                "path": "source/List/has.lua"
            }
        },
        {
            "name": "includes",
            "desc": "Returns true if the `value` is found within the List.\n\n```lua\nList.includes({ \"a\", \"b\", \"c\" }, \"b\")\n-- true\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "query",
                    "desc": "",
                    "lua_type": "Value"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 13,
                "path": "source/List/includes.lua"
            }
        },
        {
            "name": "indexOf",
            "desc": "Returns the index of the `value` if found within the List, otherwise returns nil.\n\n```lua\nList.indexOf({ \"a\", \"b\", \"c\" }, \"b\")\n-- 2\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "searchValue",
                    "desc": "",
                    "lua_type": "Value"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number?\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 14,
                "path": "source/List/indexOf.lua"
            }
        },
        {
            "name": "insert",
            "desc": "Inserts `values` given starting from the given `index`, pushing existing values towards the end.\n\nThe inserted `value` will be clamped to the beginning or end of the List if the given `index` is out of bounds.\n\n```lua\nList.insert({ \"a\", \"b\", \"c\" }, 2, \"X\", \"Y\", \"Z\")\n-- { \"a\", \"X\", \"Y\", \"Z\", \"b\", \"c\" }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "index",
                    "desc": "",
                    "lua_type": "number"
                },
                {
                    "name": "...",
                    "desc": "",
                    "lua_type": "Value"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 15,
                "path": "source/List/insert.lua"
            }
        },
        {
            "name": "joinAsString",
            "desc": "Joins values together as a string, inserting a separator between each.\n\nThe default separator is `\",\"`.\n\n```lua\nList.joinAsString({ \"a\", \"b\", \"c\" }, \", \")\n-- \"a, b, c\"\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "separator",
                    "desc": "",
                    "lua_type": "string?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "string\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 14,
                "path": "source/List/joinAsString.lua"
            }
        },
        {
            "name": "last",
            "desc": "Returns the last value in the List.\n\nReturns `notSetValue` if the List is empty.\n\n```lua\nList.last({ \"a\", \"b\", \"c\" })\n-- \"c\"\n\nList.last({ }, \"default\")\n-- \"default\"\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "notSetValue",
                    "desc": "",
                    "lua_type": "Value?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Value?\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 19,
                "path": "source/List/last.lua"
            }
        },
        {
            "name": "map",
            "desc": "Returns a List with values passed through a `mapper` function.\n\nReturning a second `value` in the mapper function will reassign the index.\n\nIf `mapper` returns nil, the entry will be filtered.\n\n```lua\nList.map({ 1, 2, 3 }, function(value, index)\n\treturn value * 10\nend)\n-- { 10, 20, 30 }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "mapper",
                    "desc": "",
                    "lua_type": "(Value, number) -> (NewValue, number?)"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ NewValue }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 21,
                "path": "source/List/map.lua"
            }
        },
        {
            "name": "max",
            "desc": "Returns the maximum value in this List.\nIf any values are comparatively equivalent, the first one found will be returned.\n\nThe `comparator` is used in the same way as `table.sort`. If it is not provided, the default comparator is `>`.\n\n```lua\nList.max({ 10, 200, 30 })\n-- ( 200, 2 )\n\nList.max({ child, teen, adult }, function(personA, personB)\n\treturn personA.age > personB.age\nend)\n-- ( adult, 3 )\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "comparator",
                    "desc": "",
                    "lua_type": "((Value, Value) -> boolean)?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Value"
                },
                {
                    "desc": "",
                    "lua_type": "number?"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 22,
                "path": "source/List/max.lua"
            }
        },
        {
            "name": "merge",
            "desc": "Returns a merged result of all given Lists.\n\nIf `Freeze.None` is a value assigned to an index, it will delete that index from the resulting List.\n\n```lua\nList.merge({ 10, nil, 30 }, { nil, 20, nil })\n-- { 10, 20, 30 }\n\nList.merge({ \"a\", \"b\", \"c\" }, { \"x\" }, { nil, \"y\", Freeze.None })\n-- { \"x\", \"y\" }\n```",
            "params": [
                {
                    "name": "...",
                    "desc": "",
                    "lua_type": "{ any }"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ any }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 20,
                "path": "source/List/merge.lua"
            }
        },
        {
            "name": "min",
            "desc": "Returns the minimum value in this List.\nIf any values are comparatively equivalent, the first one found will be returned.\n\nThe `comparator` is used in the same way as `table.sort`. If it is not provided, the default comparator is `>`.\n\n```lua\nList.min({ 10, 200, 30 })\n-- 10\n\nList.min({ child, teen, adult }, function(personA, personB)\n\treturn personA.age > personB.age\nend)\n-- child\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "comparator",
                    "desc": "",
                    "lua_type": "((Value, Value) -> boolean)?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Value"
                },
                {
                    "desc": "",
                    "lua_type": "number?"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 21,
                "path": "source/List/min.lua"
            }
        },
        {
            "name": "pop",
            "desc": "Returns a List excluding the last `index` of this List.\n\nThis will repeat multiple times if given the optional `amount` argument and will always pop at least once.\n\n\n```lua\nList.pop({ 10, 20, 30 })\n-- { 10, 20 }\n\nList.pop({ 10, 20, 30 }, 2)\n-- { 10 }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "amount",
                    "desc": "",
                    "lua_type": "number?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 19,
                "path": "source/List/pop.lua"
            }
        },
        {
            "name": "push",
            "desc": "Returns a List with the provided `values` appended at the end of the List.\n\n```lua\nList.push({ 10, 20, 30 }, 40, 50, 60)\n-- { 10, 20, 30, 40, 50, 60 }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "...",
                    "desc": "",
                    "lua_type": "Value"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 13,
                "path": "source/List/push.lua"
            }
        },
        {
            "name": "reduce",
            "desc": "Returns the final reduced result by iterating the List and calling the `reducer` for every entry\nand passing along the reduced value.\n\n```lua\nList.reduce({ 10, 20, 30 }, function(reduction, value)\n\treturn reduction + value\nend, 0)\n-- 60\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "reducer",
                    "desc": "",
                    "lua_type": "(T, Value, number) -> T"
                },
                {
                    "name": "initialReduction",
                    "desc": "",
                    "lua_type": "T"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "T\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 17,
                "path": "source/List/reduce.lua"
            }
        },
        {
            "name": "reduceRight",
            "desc": "Returns the final reduced result by iterating the list in reverse (from the right side) and calling the `reducer` for every entry\nand passing along the reduced value.\n\n```lua\nList.reduceRight({ \"a\", \"b\", \"c\" }, function(reduction, value)\n\treturn reduction .. value\nend, \"\")\n-- \"cba\"\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "reducer",
                    "desc": "",
                    "lua_type": "(T, Value, number) -> T"
                },
                {
                    "name": "initialReduction",
                    "desc": "",
                    "lua_type": "T"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "T\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 17,
                "path": "source/List/reduceRight.lua"
            }
        },
        {
            "name": "remove",
            "desc": "Returns a List which excludes this `index`. Values at indices above `index` are shifted down by 1 to fill the position.\n\n`index` may be a negative number, which indexes back from the end of the list.\n`list.remove(-1)` removes the last item in the list.\n\nIf the given `given` results in an index that is out of bounds, it will return the original list with no changes.\n\n```lua\nList.remove({ \"a\", \"b\", \"c\", \"d\" }, 3)\n-- { \"a\", \"b\", \"d\" }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "...",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 43,
                "path": "source/List/remove.lua"
            }
        },
        {
            "name": "removeValue",
            "desc": "Returns a List having removed all entries with the given `value`.\n\nIf no values are present, it will return the original List with no changes.\n\n```lua\nList.removeValue({ \"a\", \"b\", \"c\" }, \"a\")\n-- { \"b\", \"c\" }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "...",
                    "desc": "",
                    "lua_type": "Value"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 34,
                "path": "source/List/removeValue.lua"
            }
        },
        {
            "name": "rest",
            "desc": "Returns a List containing all entries except the first.\n\nEquivalent to `slice(2)`. See [List.slice] for more information.\n\n```lua\nList.rest({ \"a\", \"b\", \"c\" })\n-- { \"b\", \"c\" }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 17,
                "path": "source/List/rest.lua"
            }
        },
        {
            "name": "reverse",
            "desc": "Returns a List in reverse order.\n\n```lua\nList.reverse({ \"a\", \"b\", \"c\" })\n-- { \"c\", \"b\", \"a\" }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 13,
                "path": "source/List/reverse.lua"
            }
        },
        {
            "name": "set",
            "desc": "Returns a List which includes `value` at `index`.\nIf `index` already exists, it will be replaced.\n\nReturns the original List if no changes were made.\n\n```lua\nList.set({\"a\", \"b\", \"c\"}, 1, \"A\")\n-- { \"A\", \"b\", \"c\" }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "index",
                    "desc": "",
                    "lua_type": "number"
                },
                {
                    "name": "value",
                    "desc": "",
                    "lua_type": "Value"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 16,
                "path": "source/List/set.lua"
            }
        },
        {
            "name": "shift",
            "desc": "Returns a List excluding the first index in this `List`, shifting all other values to a lower index.\n\nIf `amount` is not provided, it will default to 1.\nPassing an `amount` greater than the length of the given `List` will result in an empty List.\n\n```lua\nList.shift({ \"a\", \"b\", \"c\" })\n-- { \"b\", \"c\" }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "amount",
                    "desc": "",
                    "lua_type": "number?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 16,
                "path": "source/List/shift.lua"
            }
        },
        {
            "name": "skip",
            "desc": "Returns a List which excludes the first `amount` of entries.\n\n```lua\nList.skip({ \"a\", \"b\", \"c\", \"d\" }, 2)\n-- { \"c\", \"d\" }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "amount",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 14,
                "path": "source/List/skip.lua"
            }
        },
        {
            "name": "slice",
            "desc": "Returns a List that includes the range `[from, to)`.\n\nIf `from` is negative, it is offset from the end of the list.\n`slice(-2)` returns a list of the last two entries.\nIf it is not provided, the new list will begin at the first entry.\n\nIf `to` is negative, it is offset from the end of the list.\n`slice(1, -1)` returns a list of everything but the last entry.\nIf it is not provided, the new list will continue through the end of the list.\n\n```lua\nList.slice({ \"a\", \"b\", \"c\" }, 2)\n-- { \"b\", \"c\" }\n\nList.slice({ \"a\", \"b\", \"c\" }, -1)\n-- { \"c\" }\n\nList.slice({ \"a\", \"b\", \"c\" }, 1, -1)\n-- { \"a\", \"b\" }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "from",
                    "desc": "",
                    "lua_type": "number?"
                },
                {
                    "name": "to",
                    "desc": "",
                    "lua_type": "number?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 28,
                "path": "source/List/slice.lua"
            }
        },
        {
            "name": "some",
            "desc": "Returns true if `predicate` returns true for any entry in the List.\n\n```lua\nList.some({ 1, 2, 3 }, function(value, index)\n\treturn value % 2 == 0\nend)\n-- true\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "predicate",
                    "desc": "",
                    "lua_type": "(Value, number) -> boolean"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 15,
                "path": "source/List/some.lua"
            }
        },
        {
            "name": "sort",
            "desc": "Returns a List which includes the same entries, sorted by using a `comparator`.\n\nIf a `comparator` is not provided, a default comparator uses `<` and `>`.\n\n```lua\nList.sort({ 4, 2, 1, 3 })\n-- { 1, 2, 3, 4 }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "comparator",
                    "desc": "",
                    "lua_type": "((Value, Value) -> boolean)?"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 15,
                "path": "source/List/sort.lua"
            }
        },
        {
            "name": "take",
            "desc": "Returns a List which includes the first `amount` of entires.\n\n```lua\nList.take({ \"a\", \"b\", \"c\", \"d\" }, 2)\n-- { \"a\", \"b\" }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "amount",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 14,
                "path": "source/List/take.lua"
            }
        },
        {
            "name": "takeLast",
            "desc": "Returns a List which includes the last `amount` of entires.\n\n```lua\nList.takeLast({ \"a\", \"b\", \"c\" }, 2)\n-- { \"b\", \"c\" }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "amount",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 13,
                "path": "source/List/takeLast.lua"
            }
        },
        {
            "name": "toSet",
            "desc": "Returns a Set from the given List.",
            "params": [],
            "returns": [],
            "function_type": "static",
            "ignore": true,
            "source": {
                "line": 10,
                "path": "source/List/toSet.lua"
            }
        },
        {
            "name": "unshift",
            "desc": "Returns a List with the provided `values` prepended, shifting other values ahead to higher indices.\n\n```lua\nList.unshift({ \"b\", \"c\" }, \"a\")\n-- { \"a\", \"b\", \"c\" }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "...",
                    "desc": "",
                    "lua_type": "Value"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 13,
                "path": "source/List/unshift.lua"
            }
        },
        {
            "name": "update",
            "desc": "Returns a List with the entry at `index` updated to the result of `updater`.\n\nIf the entry does not exist, `updater` will be given `notSetValue` or nil.\n\n```lua\nList.update({ \"a\", \"b\", \"c\" }, 2, function(value)\n\treturn string.rep(value, 5)\nend)\n-- { \"a\", \"bbbbb\", \"c\" }\n\nList.update({ \"a\", \"b\", \"c\" }, 4, function(value)\n\treturn string.rep(value, 5)\nend, \"d\")\n-- { \"a\", \"b\", \"c\", \"ddddd\" }\n```",
            "params": [
                {
                    "name": "list",
                    "desc": "",
                    "lua_type": "{ Value }"
                },
                {
                    "name": "index",
                    "desc": "",
                    "lua_type": "number"
                },
                {
                    "name": "updater",
                    "desc": "",
                    "lua_type": "(Value?) -> Value"
                },
                {
                    "name": "notSetValue",
                    "desc": "",
                    "lua_type": "Value?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Value }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 23,
                "path": "source/List/update.lua"
            }
        },
        {
            "name": "updateIn",
            "desc": "Returns a new list with the entry at `keyPath` updated to the result of `updater`.\n\nIf any entry does not exist along `keyPath`, an empty map will be created in its place.\nIf the final entry does not exist, `updater` will be given `notSetValue` or nil.\n\n```lua\nList.updateIn({ \"a\", \"b\", { \"c\", \"d\" } }, { 4, 1 }, function(value)\n\treturn string.rep(value, 5)\nend)\n-- { \"a\", \"b\", { \"ccccc\", \"e\" } }\n\nList.updateIn({ \"a\", \"b\", { \"c\", \"d\" } }, { 4, 3, 1 }, function(value)\n\treturn string.rep(value, 5)\nend, \"e\")\n-- { \"a\", \"b\", { \"c\", \"d\", { \"eeeee\" } } }\n```",
            "params": [],
            "returns": [],
            "function_type": "static",
            "ignore": true,
            "source": {
                "line": 28,
                "path": "source/List/updateIn.lua"
            }
        },
        {
            "name": "zip",
            "desc": "Returns a List with all lists given \"zipped\" together.\nThe length of the List is the length of the shortest provided `list`.\n\n```lua\nList.zip({ \"a\", \"b\", \"c\" }, { \"x\", \"y\", \"z\" })\n-- { { \"a\", \"x\" }, { \"b\", \"y\" }, { \"c\", \"z\" } }\n\nList.zip({ alice, bertram, charlie }, { alexander, betty, candice, dennis })\n-- { { alice, alexander }, { bertram, betty }, { charlie, candice } }\n-- Note: dennis is omitted and not paired.\n```",
            "params": [
                {
                    "name": "...",
                    "desc": "",
                    "lua_type": "{ Value }"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ { Value } }\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 18,
                "path": "source/List/zip.lua"
            }
        }
    ],
    "properties": [],
    "types": [],
    "name": "List",
    "desc": "Handles list-like operations.\n\n[`Lists`](../api/List) are ordered tables with numeric indices.",
    "source": {
        "line": 9,
        "path": "source/List/init.lua"
    }
}