-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((EPZ) -> EQA), fun((EQA) -> EQB)) -> fun((EPZ) -> EQB). compose(Fun1, Fun2) -> fun(A) -> Fun2(Fun1(A)) end. -spec curry2(fun((EQC, EQD) -> EQE)) -> fun((EQC) -> fun((EQD) -> EQE)). curry2(Fun) -> fun(A) -> fun(B) -> Fun(A, B) end end. -spec curry3(fun((EQG, EQH, EQI) -> EQJ)) -> fun((EQG) -> fun((EQH) -> fun((EQI) -> EQJ))). curry3(Fun) -> fun(A) -> fun(B) -> fun(C) -> Fun(A, B, C) end end end. -spec curry4(fun((EQL, EQM, EQN, EQO) -> EQP)) -> fun((EQL) -> fun((EQM) -> fun((EQN) -> fun((EQO) -> EQP)))). curry4(Fun) -> fun(A) -> fun(B) -> fun(C) -> fun(D) -> Fun(A, B, C, D) end end end end. -spec curry5(fun((EQR, EQS, EQT, EQU, EQV) -> EQW)) -> fun((EQR) -> fun((EQS) -> fun((EQT) -> fun((EQU) -> fun((EQV) -> EQW))))). 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((EQY, EQZ, ERA, ERB, ERC, ERD) -> ERE)) -> fun((EQY) -> fun((EQZ) -> fun((ERA) -> fun((ERB) -> fun((ERC) -> fun((ERD) -> ERE)))))). 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((ERG, ERH) -> ERI)) -> fun((ERH, ERG) -> ERI). flip(Fun) -> fun(B, A) -> Fun(A, B) end. -spec identity(ERJ) -> ERJ. identity(X) -> X. -spec rescue(fun(() -> ERK)) -> {ok, ERK} | {error, exception()}. rescue(A) -> gleam_stdlib:rescue(A).