-module(fused@internal@queue). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/fused/internal/queue.gleam"). -export([new/0, push/2, pop/1]). -export_type([queue/1]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC(false). -opaque queue(FYK) :: {queue, list(FYK), list(FYK)}. -file("src/fused/internal/queue.gleam", 7). ?DOC(false). -spec new() -> queue(any()). new() -> {queue, [], []}. -file("src/fused/internal/queue.gleam", 11). ?DOC(false). -spec push(queue(FYN), FYN) -> queue(FYN). push(Queue, X) -> {queue, Push, Pop} = Queue, Push@1 = [X | Push], {queue, Push@1, Pop}. -file("src/fused/internal/queue.gleam", 17). ?DOC(false). -spec pop(queue(FYQ)) -> {ok, {FYQ, queue(FYQ)}} | {error, nil}. pop(Queue) -> case Queue of {queue, [X], []} -> {ok, {X, {queue, [], []}}}; {queue, Push, [X@1 | Pop]} -> {ok, {X@1, {queue, Push, Pop}}}; {queue, [], []} -> {error, nil}; {queue, Push@1, []} -> _pipe = {queue, [], lists:reverse(Push@1)}, pop(_pipe) end.