Implement function threading. 3.3.0
authorSiraaj Khandkar <siraaj@khandkar.net>
Wed, 6 May 2015 18:33:46 +0000 (14:33 -0400)
committerSiraaj Khandkar <siraaj@khandkar.net>
Wed, 6 May 2015 18:33:46 +0000 (14:33 -0400)
src/hope.app.src
src/hope_fun.erl
test/hope_fun_SUITE.erl

index 197db7c..45b460d 100644 (file)
@@ -1,7 +1,7 @@
 {application, hope,
  [
   {description, "Higher Order Programming in Erlang"},
-  {vsn, "3.2.0"},
+  {vsn, "3.3.0"},
   {registered, []},
   {applications, [
                   kernel,
index 96a39cd..df0d786 100644 (file)
@@ -6,6 +6,7 @@
     , compose/1  % alias for compose_right/1
     , compose_right/1
     , compose_left/1
+    , thread/2
     ]).
 
 -spec id(A) ->
@@ -41,6 +42,12 @@ compose_right(Fs) ->
 compose_left(Fs) ->
     compose_given_fold(Fs, fun lists:foldl/3).
 
+-spec thread([fun((A) -> B)], A) ->
+    B.
+thread(Fs, X) ->
+    F = compose_left(Fs),
+    F(X).
+
 
 %% ============================================================================
 
index 7b5051b..333c81f 100644 (file)
@@ -11,7 +11,7 @@
     [ t_specs/1
     , t_id/1
     , t_curry/1
-    , t_compose/1
+    , t_compose_and_thread/1
     ]).
 
 
@@ -31,7 +31,7 @@ groups() ->
         [ t_specs
         , t_id
         , t_curry
-        , t_compose
+        , t_compose_and_thread
         ],
     Properties = [parallel],
     [ {?GROUP, Properties, Tests}
@@ -66,11 +66,12 @@ t_curry(_Cfg) ->
     H  = H2(b),
     {a, b, c} = H(c).
 
-t_compose(_Cfg) ->
+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:compose_left  (lists:reverse(Fs) ))(a),
+    d =  hope_fun:thread        (lists:reverse(Fs),   a).
This page took 0.025118 seconds and 4 git commands to generate.