Skip to content

Instantly share code, notes, and snippets.

@pppillai
Last active May 13, 2020 19:23
Show Gist options
  • Save pppillai/853e1483323a8d2b7190f2646ef4005d to your computer and use it in GitHub Desktop.
Save pppillai/853e1483323a8d2b7190f2646ef4005d to your computer and use it in GitHub Desktop.
-module(take).
-export([take/2, test_take/0]).
% Define a function take that takes the first N elements from a list. Here are some examples of take in action:
% take(0,"hello") = []
% take(4,"hello") = "hell"
% take(5,"hello") = "hello"
% take(9,"hello") = "hello"
-spec take(non_neg_integer(), [T]) -> [T].
-spec take_worker(non_neg_integer(), non_neg_integer(), [T], [T]) -> [T].
take(Max, L) ->
take_worker(0, Max, L, []).
% lists:reverse(take_worker(0, Max, L, [])).
take_worker(Min, Min, _L, Result) ->
Result;
take_worker(Min, Max, [H|T], Result) ->
take_worker(Min + 1, Max, T, Result ++ [H]).
% take_worker(Min + 1, Max, T, [H|Result]).
test_take() ->
take(0, "Pradeep") == [],
take(1, "P") == "P",
take(2, "Pr") == "Pr",
success.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment