So I have defined my own type as such:

```
type test = Empty
| Int of int
| Str of string
| List of test list;;

```

I am trying to iterate through the list and evaluate each head but I can't seem to make it work.

```
type evalRes = Next /* | other matches just ignore this. It's needed for something else */;;
let rec eval (test:test) : (evalRes) = match test with
| Int i -> /* do int stuff */; Next
| Str s ->  /* string stuff */; Next
| List(stmt1::tail) -> eval stmt1;;

```

I know that will only evaluate the first one. How can I get it to evaluate the rest of the list? And my type test is going to have more cases to match on, this is just a basic test.