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},
listBany
) → 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,
notSetValueValue?
) → 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},
notSetValueValue?
) → ()

Returns the first value in the list.

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

flatten

List.flatten(
list{ListOf<Value>},
depthnumber?
) → {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},
indexnumber,
notSetValueValue?
) → 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},
indexnumber
) → boolean

Returns true if the index exists within the List.

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

includes

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

Returns true if the value is found within the List.

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

indexOf

List.indexOf(
list{Value},
searchValueValue
) → 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},
indexnumber,
...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},
separatorstring?
) → 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},
notSetValueValue?
) → 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},
amountnumber?
) → {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,
initialReductionT
) → 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,
initialReductionT
) → 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},
indexnumber,
valueValue
) → {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},
amountnumber?
) → {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},
amountnumber
) → {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},
fromnumber?,
tonumber?
) → {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},
amountnumber
) → {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},
amountnumber
) → {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},
indexnumber,
updater(Value?) → Value,
notSetValueValue?
) → {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(
countnumber,
valueValue?
) → {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,
fromnever
) → 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,
fromnever?
) → 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},
indexnumber
) → {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"
    }
}