-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((FMZ) -> FNA), fun((FNA) -> FNB)) -> fun((FMZ) -> FNB). compose(Fun1, Fun2) -> fun(A) -> Fun2(Fun1(A)) end. -spec curry2(fun((FNC, FND) -> FNE)) -> fun((FNC) -> fun((FND) -> FNE)). curry2(Fun) -> fun(A) -> fun(B) -> Fun(A, B) end end. -spec curry3(fun((FNG, FNH, FNI) -> FNJ)) -> fun((FNG) -> fun((FNH) -> fun((FNI) -> FNJ))). curry3(Fun) -> fun(A) -> fun(B) -> fun(C) -> Fun(A, B, C) end end end. -spec curry4(fun((FNL, FNM, FNN, FNO) -> FNP)) -> fun((FNL) -> fun((FNM) -> fun((FNN) -> fun((FNO) -> FNP)))). curry4(Fun) -> fun(A) -> fun(B) -> fun(C) -> fun(D) -> Fun(A, B, C, D) end end end end. -spec curry5(fun((FNR, FNS, FNT, FNU, FNV) -> FNW)) -> fun((FNR) -> fun((FNS) -> fun((FNT) -> fun((FNU) -> fun((FNV) -> FNW))))). 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((FNY, FNZ, FOA, FOB, FOC, FOD) -> FOE)) -> fun((FNY) -> fun((FNZ) -> fun((FOA) -> fun((FOB) -> fun((FOC) -> fun((FOD) -> FOE)))))). 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((FOG, FOH) -> FOI)) -> fun((FOH, FOG) -> FOI). flip(Fun) -> fun(B, A) -> Fun(A, B) end. -spec identity(FOJ) -> FOJ. identity(X) -> X. -spec rescue(fun(() -> FOK)) -> {ok, FOK} | {error, exception()}. rescue(A) -> gleam_stdlib:rescue(A).