Hello ,

I’m a beginner in OCaml and i already know how to use normal recursive functions .

I was reading a postcode , here is it :

```
let rec eval2 a val_a b val_b = function
| Var x -> if x = a then val_a
else if x = b then val_b
else failwith "The expression contains an invalid variable"
| Not e -> not(eval2 a val_a b val_b e)
| And(e1, e2) -> eval2 a val_a b val_b e1 && eval2 a val_a b val_b e2
| Or(e1, e2) -> eval2 a val_a b val_b e1 || eval2 a val_a b val_b e2
let table2 a b expr =
[(true, true, eval2 a true b true expr);
(true, false, eval2 a true b false expr);
(false, true, eval2 a false b true expr);
(false, false, eval2 a false b false expr) ];;
```

and I didn’t understand the syntax of the first line because i’m used to use match arg with , but there it’s kind of function matching and i didn’t got it .

I searched for similar topics but i didn’t found one .

Can someone tell me what this syntax means or just leave me a link that explains the use of let rec *** = function .

Thanks