Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -module(nils).
- -export([
- filter_out_nils/1,
- filter_out_nils_from_list/1,
- filter_out_nils_from_tuple/1,
- extract_first_elements/1
- ]).
- extract_first_elements(Data) when is_list(Data) ->
- lists:map(fun extract_first_non_tuple_element/1, Data).
- extract_first_non_tuple_element({})-> {};
- extract_first_non_tuple_element(Data) when is_tuple(Data)->
- case element(1, Data) of
- First when is_tuple(First) -> extract_first_non_tuple_element(First);
- Other -> Other
- end.
- filter_out_nils(Data) when is_list(Data) ->
- Result1 = filter_out_nils_from_list(Data),
- lists:map(fun filter_out_nils_from_tuple/1, Result1).
- filter_out_nils_from_list(Data) when is_list(Data) ->
- Pred = fun(Element) -> Element /= nil end,
- lists:filter(Pred, Data).
- filter_out_nils_from_tuple(Data) when is_tuple(Data) ->
- TList = tuple_to_list(Data),
- Fun = fun(Element, Acc) ->
- case Element of
- nil -> Acc;
- Tuple when is_tuple(Tuple) -> Acc ++ [filter_out_nils_from_tuple(Tuple)];
- Other -> Acc ++ [Other]
- end
- end,
- Result = lists:foldl(Fun, [], TList),
- list_to_tuple(Result).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement