Current section
Files
Jump to
Current section
Files
src/funtil.erl
-module(funtil).
-compile([no_auto_import, nowarn_unused_vars]).
-export([void/1, never/1, fix/1, fix2/1, fix3/1]).
-export_type([never/0]).
-opaque never() :: {just_one_more, never()}.
-spec void(any()) -> nil.
void(_) ->
nil.
-spec never(never()) -> any().
never(Val) ->
case Val of
{just_one_more, X} ->
never(X)
end.
-spec fix(fun((fun((EXL) -> EXO), EXL) -> EXO)) -> fun((EXL) -> EXO).
fix(F) ->
fun(X) -> F(fix(F), X) end.
-spec fix2(fun((fun((EXP, EXQ) -> EXU), EXP, EXQ) -> EXU)) -> fun((EXP, EXQ) -> EXU).
fix2(F) ->
fun(X, Y) -> F(fix2(F), X, Y) end.
-spec fix3(fun((fun((EXV, EXW, EXX) -> EYC), EXV, EXW, EXX) -> EYC)) -> fun((EXV, EXW, EXX) -> EYC).
fix3(F) ->
fun(X, Y, Z) -> F(fix3(F), X, Y, Z) end.