-module(gleam@function). -compile(no_auto_import). -export([compose/2, curry2/1, curry3/1, curry4/1, curry5/1, curry6/1, flip/1, identity/1]). -spec compose(fun((GE) -> GF), fun((GF) -> GG)) -> fun((GE) -> GG). compose(Fun1, Fun2) -> fun(A) -> Fun2(Fun1(A)) end. -spec curry2(fun((GH, GI) -> GJ)) -> fun((GH) -> fun((GI) -> GJ)). curry2(Fun) -> fun(A) -> fun(B) -> Fun(A, B) end end. -spec curry3(fun((GL, GM, GN) -> GO)) -> fun((GL) -> fun((GM) -> fun((GN) -> GO))). curry3(Fun) -> fun(A) -> fun(B) -> fun(C) -> Fun(A, B, C) end end end. -spec curry4(fun((GQ, GR, GS, GT) -> GU)) -> fun((GQ) -> fun((GR) -> fun((GS) -> fun((GT) -> GU)))). curry4(Fun) -> fun(A) -> fun(B) -> fun(C) -> fun(D) -> Fun(A, B, C, D) end end end end. -spec curry5(fun((GW, GX, GY, GZ, HA) -> HB)) -> fun((GW) -> fun((GX) -> fun((GY) -> fun((GZ) -> fun((HA) -> HB))))). 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((HD, HE, HF, HG, HH, HI) -> HJ)) -> fun((HD) -> fun((HE) -> fun((HF) -> fun((HG) -> fun((HH) -> fun((HI) -> HJ)))))). 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((HL, HM) -> HN)) -> fun((HM, HL) -> HN). flip(Fun) -> fun(B, A) -> Fun(A, B) end. -spec identity(HO) -> HO. identity(X) -> X.