[{"name":"A","comment":" Functions for navigating deeply-hierarchical nested values with optional properties.\n\nThe `A` module is specialized to operating on values that are _not_ a `Maybe a`, but contain accessors that are \"and-then-able\".\n\n    import A\n    import Q\n\n    type alias User =\n        { profile : Maybe { name : Maybe String, id : Int }\n\n\n    toUserName : User -> Maybe String\n    toUserName =\n        A.qq .profile .name\n\n    toUserId : User -> Maybe Int\n    toUserId =\n        A.qq .profile (Q.j .id)\n\n@docs qq, qqq, qqqq, qqqqq, qqqqqq, qqqqqqq, qqqqqqqq, qqqqqqqqq, qqqqqqqqqq, qqqqqqqqqqq\n\n@docs q4, q5, q6, q7, q8, q9, q10, q11\n\n","unions":[],"aliases":[],"values":[{"name":"q10","comment":" Same as `A.qqqqqqqqqq`, just easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> (i -> Maybe.Maybe j) -> (j -> Maybe.Maybe k) -> a -> Maybe.Maybe k"},{"name":"q11","comment":" Same as `A.qqqqqqqqqqq`, just easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> (i -> Maybe.Maybe j) -> (j -> Maybe.Maybe k) -> (k -> Maybe.Maybe l) -> a -> Maybe.Maybe l"},{"name":"q4","comment":" Same as `A.qqqq`, just easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> a -> Maybe.Maybe e"},{"name":"q5","comment":" Same as `A.qqqqq`, just easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> a -> Maybe.Maybe f"},{"name":"q6","comment":" Same as `A.qqqqqq`, just easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> a -> Maybe.Maybe g"},{"name":"q7","comment":" Same as `A.qqqqqqq`, just easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> a -> Maybe.Maybe h"},{"name":"q8","comment":" Same as `A.qqqqqqqq`, just easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> a -> Maybe.Maybe i"},{"name":"q9","comment":" Same as `A.qqqqqqqqq`, just easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> (i -> Maybe.Maybe j) -> a -> Maybe.Maybe j"},{"name":"qq","comment":" Apply two \"and-then-able\" functions in order to a value.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> a -> Maybe.Maybe c"},{"name":"qqq","comment":" Apply three \"and-then-able\" functions in order to a value.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> a -> Maybe.Maybe d"},{"name":"qqqq","comment":" Apply four \"and-then-able\" functions in order to a value.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> a -> Maybe.Maybe e"},{"name":"qqqqq","comment":" Apply five \"and-then-able\" functions in order to a value.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> a -> Maybe.Maybe f"},{"name":"qqqqqq","comment":" Apply six \"and-then-able\" functions in order to a value.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> a -> Maybe.Maybe g"},{"name":"qqqqqqq","comment":" Apply seven \"and-then-able\" functions in order to a value.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> a -> Maybe.Maybe h"},{"name":"qqqqqqqq","comment":" Apply eight \"and-then-able\" functions in order to a value.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> a -> Maybe.Maybe i"},{"name":"qqqqqqqqq","comment":" Apply nine \"and-then-able\" functions in order to a value.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> (i -> Maybe.Maybe j) -> a -> Maybe.Maybe j"},{"name":"qqqqqqqqqq","comment":" Apply ten \"and-then-able\" functions in order to a value.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> (i -> Maybe.Maybe j) -> (j -> Maybe.Maybe k) -> a -> Maybe.Maybe k"},{"name":"qqqqqqqqqqq","comment":" Apply eleven \"and-then-able\" functions in order to a value.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> (i -> Maybe.Maybe j) -> (j -> Maybe.Maybe k) -> (k -> Maybe.Maybe l) -> a -> Maybe.Maybe l"}],"binops":[]},{"name":"Q","comment":" Combinators for navigating deeply-hierarchical nested values with optional properties.\n\nThe `Q` module is specialized to operating on values that are a `Maybe a`.\n\n    import Dict\n    import Q\n    import Time\n\n    type alias User =\n        { profile :\n            Maybe\n                { authProvider : Maybe String\n                , signInHistory :\n                    Result (List Time.Posix) (List Time.Posix)\n                }\n        }\n\n    users : Dict.Dict Int User\n    users =\n        Dict.fromList []\n\n    toAuthProvider : Int -> Maybe String\n    toAuthProvider i =\n        Q.qq .profile .authProvider <| Dict.get i users\n\n    toLastSignInSuccess : Int -> Maybe Time.Posix\n    toLastSignInSuccess i =\n        Q.qqq .profile (Q.ope .signInHistory) List.head <|\n            Dict.get i users\n\n@docs j, ope, nope\n\n@docs q, qq, qqq, qqqq, qqqqq, qqqqqq, qqqqqqq, qqqqqqqq, qqqqqqqqq, qqqqqqqqqq, qqqqqqqqqqq\n\n@docs q4, q5, q6, q7, q8, q9, q10, q11\n\n","unions":[],"aliases":[],"values":[{"name":"j","comment":" Lift an accessor function `a -> b` to a \"q\" (i.e., `a -> Maybe b`).\n\n    name : Maybe String\n    name =\n        qqq .user .profile (j .name) <|\n            Just\n                { user =\n                    Just\n                        { profile = { name = \"John\" } }\n                }\n\n","type":"(a -> b) -> a -> Maybe.Maybe b"},{"name":"nope","comment":" For when you need to scooch right past a _success_.\n\n    -- Get the error message if sign in failed\n    qq .profile (nope .signInHistory) user == Just \"rate limited\"\n\n","type":"(a -> Result.Result x b) -> a -> Maybe.Maybe x"},{"name":"ope","comment":" For when you need to scooch right past an error (because you can't dip it in ranch).\n\n    toLastSignInSuccess : Int -> Maybe Time.Posix\n    toLastSignInSuccess i =\n        qqq .profile (ope .signInHistory) List.head <|\n            Dict.get i users\n\n","type":"(a -> Result.Result x b) -> a -> Maybe.Maybe b"},{"name":"q","comment":" It's literally just `Maybe.andThen`.\n","type":"(a -> Maybe.Maybe b) -> Maybe.Maybe a -> Maybe.Maybe b"},{"name":"q10","comment":" Same as `Q.qqqqqqqqqq`, just easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> (i -> Maybe.Maybe j) -> (j -> Maybe.Maybe k) -> Maybe.Maybe a -> Maybe.Maybe k"},{"name":"q11","comment":" Same as `Q.qqqqqqqqqqq`, just easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> (i -> Maybe.Maybe j) -> (j -> Maybe.Maybe k) -> (k -> Maybe.Maybe l) -> Maybe.Maybe a -> Maybe.Maybe l"},{"name":"q4","comment":" Same as `Q.qqqq`, just easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> Maybe.Maybe a -> Maybe.Maybe e"},{"name":"q5","comment":" Same as `Q.qqqqq`, jsut easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> Maybe.Maybe a -> Maybe.Maybe f"},{"name":"q6","comment":" Same as `Q.qqqqqq`, just easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> Maybe.Maybe a -> Maybe.Maybe g"},{"name":"q7","comment":" Same as `Q.qqqqqqq`, just easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> Maybe.Maybe a -> Maybe.Maybe h"},{"name":"q8","comment":" Same as `Q.qqqqqqqq`, just easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> Maybe.Maybe a -> Maybe.Maybe i"},{"name":"q9","comment":" Same as `Q.qqqqqqqqq`, just easier to read.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> (i -> Maybe.Maybe j) -> Maybe.Maybe a -> Maybe.Maybe j"},{"name":"qq","comment":" Apply two \"and-then-able\" functions in order to a `Maybe a`.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> Maybe.Maybe a -> Maybe.Maybe c"},{"name":"qqq","comment":" Apply three \"and-then-able\" functions in order to a `Maybe a`.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> Maybe.Maybe a -> Maybe.Maybe d"},{"name":"qqqq","comment":" Apply four \"and-then-able\" functions in order to a `Maybe a`.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> Maybe.Maybe a -> Maybe.Maybe e"},{"name":"qqqqq","comment":" Apply five \"and-then-able\" functions in order to a `Maybe a`.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> Maybe.Maybe a -> Maybe.Maybe f"},{"name":"qqqqqq","comment":" Apply six \"and-then-able\" functions in order to a `Maybe a`.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> Maybe.Maybe a -> Maybe.Maybe g"},{"name":"qqqqqqq","comment":" Apply seven \"and-then-able\" functions in order to a `Maybe a`.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> Maybe.Maybe a -> Maybe.Maybe h"},{"name":"qqqqqqqq","comment":" Apply eight \"and-then-able\" functions in order to a `Maybe a`.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> Maybe.Maybe a -> Maybe.Maybe i"},{"name":"qqqqqqqqq","comment":" Apply nine \"and-then-able\" functions in order to a `Maybe a`.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> (i -> Maybe.Maybe j) -> Maybe.Maybe a -> Maybe.Maybe j"},{"name":"qqqqqqqqqq","comment":" Apply ten \"and-then-able\" functions in order to a `Maybe a`.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> (i -> Maybe.Maybe j) -> (j -> Maybe.Maybe k) -> Maybe.Maybe a -> Maybe.Maybe k"},{"name":"qqqqqqqqqqq","comment":" Apply eleven \"and-then-able\" functions in order to a `Maybe a`.\n","type":"(a -> Maybe.Maybe b) -> (b -> Maybe.Maybe c) -> (c -> Maybe.Maybe d) -> (d -> Maybe.Maybe e) -> (e -> Maybe.Maybe f) -> (f -> Maybe.Maybe g) -> (g -> Maybe.Maybe h) -> (h -> Maybe.Maybe i) -> (i -> Maybe.Maybe j) -> (j -> Maybe.Maybe k) -> (k -> Maybe.Maybe l) -> Maybe.Maybe a -> Maybe.Maybe l"}],"binops":[]},{"name":"S","comment":" The \"S\" is for \"spread\".\n\nAs in, \"spread\" some argument with _n_ maps over an _n_-ary function.\n\n`S` is actually kind of cool, and some people may find it genuinely useful. Look at this:\n\n    type alias Permission =\n        { canLogIn : Bool\n        , canSendInvite : Bool\n        , canReadActivityLogs : Bool\n        , canTeleport : Bool\n        }\n\n    isAdmin : Permission -> Bool\n    isAdmin =\n        S.s4 (\\a b c d -> List.all [ a, b, c ] || d)\n            .canLogIn\n            .canSendInvite\n            .canReadActivityLogs\n            .canTeleport\n\nMaybe, that is not the _greatest_ example - but sometimes we need to use one value as an input\nto more than one intermediate value, and then operate on those intermediate values within the same\nscope - you can do that with `S`.\n\n@docs s2, s3, s4, s5, s6, s7, s8, s9, s10, s11\n\n","unions":[],"aliases":[],"values":[{"name":"s10","comment":" Spread the same arg with 10 maps over a ten-arg function.\n","type":"(b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l) -> (a -> b) -> (a -> c) -> (a -> d) -> (a -> e) -> (a -> f) -> (a -> g) -> (a -> h) -> (a -> i) -> (a -> j) -> (a -> k) -> a -> l"},{"name":"s11","comment":" Spread the same arg with 11 maps over an eleven-arg function.\n","type":"(b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m) -> (a -> b) -> (a -> c) -> (a -> d) -> (a -> e) -> (a -> f) -> (a -> g) -> (a -> h) -> (a -> i) -> (a -> j) -> (a -> k) -> (a -> l) -> a -> m"},{"name":"s2","comment":" Spread the same arg with 2 maps over a two-arg function.\n","type":"(b -> c -> d) -> (a -> b) -> (a -> c) -> a -> d"},{"name":"s3","comment":" Spread the same arg with 3 maps over a three-arg function.\n","type":"(b -> c -> d -> e) -> (a -> b) -> (a -> c) -> (a -> d) -> a -> e"},{"name":"s4","comment":" Spread the same arg with 4 maps over a four-arg function.\n","type":"(b -> c -> d -> e -> f) -> (a -> b) -> (a -> c) -> (a -> d) -> (a -> e) -> a -> f"},{"name":"s5","comment":" Spread the same arg with 5 maps over a five-arg function.\n","type":"(b -> c -> d -> e -> f -> g) -> (a -> b) -> (a -> c) -> (a -> d) -> (a -> e) -> (a -> f) -> a -> g"},{"name":"s6","comment":" Spread the same arg with 6 maps over a six-arg function.\n","type":"(b -> c -> d -> e -> f -> g -> h) -> (a -> b) -> (a -> c) -> (a -> d) -> (a -> e) -> (a -> f) -> (a -> g) -> a -> h"},{"name":"s7","comment":" Spread the same arg with 7 maps over a seven-arg function.\n","type":"(b -> c -> d -> e -> f -> g -> h -> i) -> (a -> b) -> (a -> c) -> (a -> d) -> (a -> e) -> (a -> f) -> (a -> g) -> (a -> h) -> a -> i"},{"name":"s8","comment":" Spread the same arg with 8 maps over an eight-arg function.\n","type":"(b -> c -> d -> e -> f -> g -> h -> i -> j) -> (a -> b) -> (a -> c) -> (a -> d) -> (a -> e) -> (a -> f) -> (a -> g) -> (a -> h) -> (a -> i) -> a -> j"},{"name":"s9","comment":" Spread the same arg with 9 maps over a nine-arg function.\n","type":"(b -> c -> d -> e -> f -> g -> h -> i -> j -> k) -> (a -> b) -> (a -> c) -> (a -> d) -> (a -> e) -> (a -> f) -> (a -> g) -> (a -> h) -> (a -> i) -> (a -> j) -> a -> k"}],"binops":[]}]