Search code examples
erlang

How to return the number of elements?


I have to write a function that takes a list of integers as a parameter & returns the number of integers from the list that are less than 1. What I have so far is a function that just returns how many integers in the list. I am not sure where/if I'm supposed to put a if statement and counter to only return how many integers are less than 1.

-export([num/1]).

num([]) -> 0 ;
num(L) -> num(L,0).

num([],Len) -> Len;
num([_|T],Len) ->
    num(T,Len+1).

Solution

  • Your code is almost there. Key skill to learn: guard

    -export([num/1]).
    
    num([]) -> 0;
    num(NUMS) ->
            num(NUMS, 0).
    
    num([H|L], Count) when H < 1 ->  %% use of guard
            num(L, Count+1);
    num([_|L], Count) ->
            num(L, Count);
    num([], Count) ->
            Count.