-module(gleam@function). -compile(no_auto_import). -export([compose/2, curry2/1, curry3/1, curry4/1, curry5/1, curry6/1, flip/1, identity/1, rescue/1]). -export_type([exception/0]). -type exception() :: {exited, gleam@dynamic:dynamic()} | {thrown, gleam@dynamic:dynamic()} | {errored, gleam@dynamic:dynamic()}. -spec compose(fun((GLT) -> GLU), fun((GLU) -> GLV)) -> fun((GLT) -> GLV). compose(Fun1, Fun2) -> fun(A) -> Fun2(Fun1(A)) end. -spec curry2(fun((GLW, GLX) -> GLY)) -> fun((GLW) -> fun((GLX) -> GLY)). curry2(Fun) -> fun(A) -> fun(B) -> Fun(A, B) end end. -spec curry3(fun((GMA, GMB, GMC) -> GMD)) -> fun((GMA) -> fun((GMB) -> fun((GMC) -> GMD))). curry3(Fun) -> fun(A) -> fun(B) -> fun(C) -> Fun(A, B, C) end end end. -spec curry4(fun((GMF, GMG, GMH, GMI) -> GMJ)) -> fun((GMF) -> fun((GMG) -> fun((GMH) -> fun((GMI) -> GMJ)))). curry4(Fun) -> fun(A) -> fun(B) -> fun(C) -> fun(D) -> Fun(A, B, C, D) end end end end. -spec curry5(fun((GML, GMM, GMN, GMO, GMP) -> GMQ)) -> fun((GML) -> fun((GMM) -> fun((GMN) -> fun((GMO) -> fun((GMP) -> GMQ))))). curry5(Fun) -> fun(A) -> fun(B) -> fun(C) -> fun(D) -> fun(E) -> Fun(A, B, C, D, E) end end end end end. -spec curry6(fun((GMS, GMT, GMU, GMV, GMW, GMX) -> GMY)) -> fun((GMS) -> fun((GMT) -> fun((GMU) -> fun((GMV) -> fun((GMW) -> fun((GMX) -> GMY)))))). curry6(Fun) -> fun(A) -> fun(B) -> fun(C) -> fun(D) -> fun(E) -> fun(F) -> Fun(A, B, C, D, E, F) end end end end end end. -spec flip(fun((GNA, GNB) -> GNC)) -> fun((GNB, GNA) -> GNC). flip(Fun) -> fun(B, A) -> Fun(A, B) end. -spec identity(GND) -> GND. identity(X) -> X. -spec rescue(fun(() -> GNE)) -> {ok, GNE} | {error, exception()}. rescue(A) -> gleam_stdlib:rescue(A).