+
+t_curry(_Cfg) ->
+ Single = fun (X) -> X end,
+ Double = fun (X, Y) -> {X, Y} end,
+ Triple = fun (X, Y, Z) -> {X, Y, Z} end,
+
+ F = hope_fun:curry(Single),
+ a = F(a),
+
+ G1 = hope_fun:curry(Double),
+ G = G1(a),
+ {a, b} = G(b),
+
+ H1 = hope_fun:curry(Triple),
+ H2 = H1(a),
+ H = H2(b),
+ {a, b, c} = H(c).
+
+t_compose_and_thread(_Cfg) ->
+ A2B = fun (a) -> b end,
+ B2C = fun (b) -> c end,
+ C2D = fun (c) -> d end,
+ Fs = [C2D, B2C, A2B],
+ d = (hope_fun:compose ( Fs ))(a),
+ d = (hope_fun:compose_right ( Fs ))(a),
+ d = (hope_fun:compose_left (lists:reverse(Fs) ))(a),
+ d = hope_fun:thread (lists:reverse(Fs), a).