I have the following function : 

```
let extract n l =
    let rec aux acc pro = function
         |[]   -> acc
         |a::b -> if (List.length pro) = n then aux (pro::acc) [] (a::b) else aux acc (a::pro) b; aux acc (pro) b
    in aux [] [] l

```

As you can see in my pattern matching at the second test's case I am calling two times the function. Is it possible ? 

So it is possible to have this kind of function : 

```
let rec some_function = function
   | [] ->[]
   | a::b -> some_function b; some_function b (*so I am calling two times the function in a single test*)

```

I am asking this question because here I have the following warning : 

```
File "main.ml", line 4, characters 48-72:
Warning 10: this expression should have type unit.

```

So there is a problem at the exact place I called two times my recursive function. 
It might be because I am using `;` but in this case how could I seperate these two calls ? 

Thank you !