[{"name":"SizedList","comment":" A list with at least one element\n\n@docs SizedList\n\n\n## Construction\n\n@docs empty, cons, singleton, repeat, range, fromList\n\n\n## Transform\n\n@docs map, indexedMap, foldl, foldr\n\n\n## Filtering\n\n@docs filter, filterMap\n\n\n## Combine\n\n@docs append, concat, concatMap, intersperse, map2, map3, map4, map5\n\n\n## Sort\n\n@docs sort, sortBy, sortWith\n\n\n## Deconstruct\n\n@docs isEmpty, head, tail, take, drop, partition, uncons, unzip\n\n\n## Utilities\n\n@docs length, all, any, minimum, maximum, sum, product, member, reverse, toList\n\n\n## Indexed operations\n\n@docs getAt, removeAt, updateAt\n\n\n## Unsafe operations\n\n@docs unsafeFromList\n\n","unions":[{"name":"SizedList","comment":" A list of a\\`s with at least 2 elements.\n\nMeta information can be associated to each segment pair.\n\n","args":["a"],"cases":[]}],"aliases":[],"values":[{"name":"all","comment":" Determine if all elements satisfy some test.\n\n    all (\\x -> modBy 2 == 0) (range 1 5) == False\n\n","type":"(a -> Basics.Bool) -> SizedList.SizedList a -> Basics.Bool"},{"name":"any","comment":" Determine if any elements satisfy some test.\n\n    any (\\x -> modBy 2 == 0) (range 1 5) == True\n\n","type":"(a -> Basics.Bool) -> SizedList.SizedList a -> Basics.Bool"},{"name":"append","comment":" Put two lists together.\n\n    append (range 1 3) (range 4 5) == range 1 5\n\n","type":"SizedList.SizedList a -> SizedList.SizedList a -> SizedList.SizedList a"},{"name":"concat","comment":" Concatenate a bunch of lists into a single list\n","type":"SizedList.SizedList (SizedList.SizedList a) -> SizedList.SizedList a"},{"name":"concatMap","comment":" Map a given function onto a list and flatten the resulting lists.\n\n    concatMap f xs == concat (map f xs)\n\n","type":"(a -> SizedList.SizedList b) -> SizedList.SizedList a -> SizedList.SizedList b"},{"name":"cons","comment":" Add an element to the front of a list.\n","type":"a -> SizedList.SizedList a -> SizedList.SizedList a"},{"name":"drop","comment":" Drop (at most) the first n elements.\n\nThe resulting list will have at least one element\n\n    drop 2 (range 1 5)\n        |> toList\n        == [ 3, 4, 5 ]\n\n","type":"Basics.Int -> SizedList.SizedList a -> SizedList.SizedList a"},{"name":"empty","comment":" Create a list with only one element\n","type":"SizedList.SizedList a"},{"name":"filter","comment":" Keep elements that satisfy the test.\n\nReturn a list, since result might be empty.\n\n","type":"(a -> Basics.Bool) -> SizedList.SizedList a -> SizedList.SizedList a"},{"name":"filterMap","comment":" Filter out certain values.\n\nReturn a list, since result might be empty.\n\n","type":"(a -> Maybe.Maybe b) -> SizedList.SizedList a -> SizedList.SizedList b"},{"name":"foldl","comment":" Reduce a list from the left.\n","type":"(a -> b -> b) -> b -> SizedList.SizedList a -> b"},{"name":"foldr","comment":" Reduce a list from the right.\n","type":"(a -> b -> b) -> b -> SizedList.SizedList a -> b"},{"name":"fromList","comment":" Try to create sequence from a list\n","type":"List.List a -> SizedList.SizedList a"},{"name":"getAt","comment":" Returns Just the element at the given index in the list, or Nothing if the index is out of range.\n\n    getAt 1 (range 1 5) == Just 2\n\n","type":"Basics.Int -> SizedList.SizedList a -> Maybe.Maybe a"},{"name":"head","comment":" Return the first element\n\n    head (range 1 5) == 1\n\n","type":"SizedList.SizedList a -> Maybe.Maybe a"},{"name":"indexedMap","comment":" Same as map but the function is also applied to the index of each element (starting at zero).\n","type":"(Basics.Int -> a -> b) -> SizedList.SizedList a -> SizedList.SizedList b"},{"name":"intersperse","comment":" Places the given value between all members of the given list.\n","type":"a -> SizedList.SizedList a -> SizedList.SizedList a"},{"name":"isEmpty","comment":" Always return False, since SizedList is never empty :)\n","type":"SizedList.SizedList a -> Basics.Bool"},{"name":"length","comment":" Determine the length of a list.\n\n    length (range 1 5) == 5\n\n","type":"SizedList.SizedList a -> Basics.Int"},{"name":"map","comment":" Apply a function to every element of a list.\n","type":"(a -> b) -> SizedList.SizedList a -> SizedList.SizedList b"},{"name":"map2","comment":" Apply a two argument function pairwise to elements of both lists\n","type":"(a -> b -> r) -> SizedList.SizedList a -> SizedList.SizedList b -> SizedList.SizedList r"},{"name":"map3","comment":" Apply a 3 argument function tuples of elements from all lists\n","type":"(a -> b -> c -> r) -> SizedList.SizedList a -> SizedList.SizedList b -> SizedList.SizedList c -> SizedList.SizedList r"},{"name":"map4","comment":" Apply a 4 argument function tuples of elements from all lists\n","type":"(a -> b -> c -> d -> r) -> SizedList.SizedList a -> SizedList.SizedList b -> SizedList.SizedList c -> SizedList.SizedList d -> SizedList.SizedList r"},{"name":"map5","comment":" Apply a 5 argument function tuples of elements from all lists\n","type":"(a -> b -> c -> d -> e -> r) -> SizedList.SizedList a -> SizedList.SizedList b -> SizedList.SizedList c -> SizedList.SizedList d -> SizedList.SizedList e -> SizedList.SizedList r"},{"name":"maximum","comment":" Find the maximum element in a non-empty list.\n\n    maximum (range 1 5) == 5\n\n","type":"SizedList.SizedList comparable -> Maybe.Maybe comparable"},{"name":"member","comment":" Figure out whether a list contains a value.\n\n    member 42 (range 1 3) == False\n\n","type":"a -> SizedList.SizedList a -> Basics.Bool"},{"name":"minimum","comment":" Find the minimum element in a non-empty list.\n\n    minimum (range 1 5) == 5\n\n","type":"SizedList.SizedList comparable -> Maybe.Maybe comparable"},{"name":"partition","comment":" Partition a list based on some test.\n\nThe first list contains all values that satisfy the test, and the second list contains all the value that do not.\n\n","type":"(a -> Basics.Bool) -> SizedList.SizedList a -> ( SizedList.SizedList a, SizedList.SizedList a )"},{"name":"product","comment":" Get the product of the list elements.\n","type":"SizedList.SizedList number -> number"},{"name":"range","comment":" Create list from a range of values.\n\nThe first value is guaranteed to appear in the list.\n\n","type":"Basics.Int -> Basics.Int -> SizedList.SizedList Basics.Int"},{"name":"removeAt","comment":" Remove the element at an index from a list.\n\nReturn the original list if the index is out of range or if the resulting list would be empty.\n\n    removeAt 2 negate (range 1 5)\n        |> toList\n        == [ 1, 2, 4, 5 ]\n\n","type":"Basics.Int -> SizedList.SizedList a -> SizedList.SizedList a"},{"name":"repeat","comment":" Create a list with n (at least 2) copies of a value\n","type":"Basics.Int -> a -> SizedList.SizedList a"},{"name":"reverse","comment":" Reverse a list.\n\n    reverse (range 1 3)\n        |> toList\n        == [ 5, 4, 3, 2, 1 ]\n\n","type":"SizedList.SizedList a -> SizedList.SizedList a"},{"name":"singleton","comment":" Create a list with only one element\n","type":"a -> SizedList.SizedList a"},{"name":"sort","comment":" Sort values from lowest to highest\n","type":"SizedList.SizedList comparable -> SizedList.SizedList comparable"},{"name":"sortBy","comment":" Sort values by a derived property.\n","type":"(a -> comparable) -> SizedList.SizedList a -> SizedList.SizedList a"},{"name":"sortWith","comment":" Sort values with a custom comparison function.\n\nThis is also the most general sort function, allowing you to define any other: sort == sortWith compare\n\n","type":"(a -> a -> Basics.Order) -> SizedList.SizedList a -> SizedList.SizedList a"},{"name":"sum","comment":" Get the sum of the list elements.\n\n    sum (range 1 5) == 1 + 2 + 3 + 4 + 5\n\n","type":"SizedList.SizedList number -> number"},{"name":"tail","comment":" Extract the rest of the list.\n\n    head (range 1 5) == [ 2, 3, 4, 5 ]\n\n","type":"SizedList.SizedList a -> Maybe.Maybe (SizedList.SizedList a)"},{"name":"take","comment":" Take (at most) the first n elements.\n\nThe number of elements n must be n >= 1, otherwise it returns the singleton list.\n\n    take 2 (range 1 5)\n        |> toList\n        == [ 1, 2 ]\n\nWARNING: differently from lists, `append (take n lst) (drop n lst)` do not always recover\nthe original list.\n\n","type":"Basics.Int -> SizedList.SizedList a -> SizedList.SizedList a"},{"name":"toList","comment":" Convert data to list\n","type":"SizedList.SizedList a -> List.List a"},{"name":"uncons","comment":" Deconstruct list into the head and tail parts\n\n    uncons (range 1 5)\n        == ( 1, [ 2, 3, 4, 5 ] )\n\n","type":"SizedList.SizedList a -> Maybe.Maybe ( a, SizedList.SizedList a )"},{"name":"unsafeFromList","comment":" Unsafe version of fromList.\n\n**WARNING:** Use it **only** when you know the list length for sure.\n\nUsing this function, we can wrap a regular list without scanning for its length, which\nis considerably faster. However, it can also create inconsistent objects with a reported size\nis different from the actual data length.\n\n","type":"Basics.Int -> List.List a -> SizedList.SizedList a"},{"name":"unzip","comment":" Decompose a list of tuples into a tuple of lists.\n\n    unzip (create ( \"a\", 1 ) [ ( \"b\", 2 ), ( \"c\", 3 ) ])\n        == ( SizedList \"a\" [ \"b\", \"c\" ], SizedList 1 [ 2, 3 ] )\n\n","type":"SizedList.SizedList ( a, b ) -> ( SizedList.SizedList a, SizedList.SizedList b )"},{"name":"updateAt","comment":" Update element at the given index\n\n    updateAt 2 negate (range 1 5)\n        |> toList\n        == [ 1, 2, -3, 4, 5 ]\n\n","type":"Basics.Int -> (a -> a) -> SizedList.SizedList a -> SizedList.SizedList a"}],"binops":[]}]