From 2a81fbac3178e649d03519f7b1b25e43d7850713 Mon Sep 17 00:00:00 2001 From: Siraaj Khandkar Date: Sun, 21 Dec 2014 03:25:00 -0500 Subject: [PATCH] Implement hope_list:map_slow/2 Which calls lists:reverse/1 on the result of hope_list:map_rev/2 --- src/hope.app.src | 2 +- src/hope_list.erl | 9 +++++++++ test/hope_list_SUITE.erl | 7 +++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/hope.app.src b/src/hope.app.src index eb6f442..64cce31 100644 --- a/src/hope.app.src +++ b/src/hope.app.src @@ -1,7 +1,7 @@ {application, hope, [ {description, "Higher Order Programming in Erlang"}, - {vsn, "1.5.0"}, + {vsn, "1.6.0"}, {registered, []}, {applications, [ kernel, diff --git a/src/hope_list.erl b/src/hope_list.erl index b93ad2d..aba9944 100644 --- a/src/hope_list.erl +++ b/src/hope_list.erl @@ -7,6 +7,7 @@ -export( [ unique_preserve_order/1 , map_rev/2 + , map_slow/2 ]). @@ -14,6 +15,14 @@ [A]. +%% @doc lists:reverse(map_rev(L, F)) +%% @end +-spec map_slow([A], fun((A) -> (B))) -> + [B]. +map_slow(Xs, F) -> + lists:reverse(map_rev(Xs, F)). + + %% @doc O(N), tail-recursive equivalent to lists:rev(lists:map(F, L)) %% @end -spec map_rev([A], fun((A) -> (B))) -> diff --git a/test/hope_list_SUITE.erl b/test/hope_list_SUITE.erl index f591e83..38d406a 100644 --- a/test/hope_list_SUITE.erl +++ b/test/hope_list_SUITE.erl @@ -13,6 +13,7 @@ [ t_unique_preserve_order/1 , t_hope_list_specs/1 , t_map_rev/1 + , t_map_slow/1 ]). @@ -33,6 +34,7 @@ groups() -> [ t_unique_preserve_order , t_hope_list_specs , t_map_rev + , t_map_slow ], Properties = [parallel], [{?GROUP, Properties, Tests}]. @@ -47,6 +49,11 @@ t_map_rev(_Cfg) -> [4, 3, 2] = hope_list:map_rev([1, 2, 3], F), [] = hope_list:map_rev([], F). +t_map_slow(_Cfg) -> + F = fun (N) -> N + 1 end, + [2, 3, 4] = hope_list:map_slow([1, 2, 3], F), + [] = hope_list:map_slow([], F). + t_unique_preserve_order(_Cfg) -> ?PROPTEST(prop_unique_preserve_order). -- 2.20.1