Вы не можете смешивать if и match так, вы должны либо использовать if после паттерна, как уже предлагалось, либо использовать охраняемую скороговорку как в:
let rec get_val x n =
match x with
[] -> -1
| h::_ when n=0 -> h
| _::t -> get_val t (n-1)
;;
обратите внимание также, что ocaml каррируется, и вы обычно не ставите скобки вокруг аргументов функции