utilizza tuple come parametri come questo non è comune in OCaml. Di solito si usa accattivarsi e definire la funzione in questo modo:
let get_nth list n = ...
Ciò avrebbe la firma 'a list -> int -> 'a
. Nota anche che qui hai un parametro 'a
, il che significa che non esiste un vero motivo per limitare la tua funzione agli int solo.
Ora diamo un'occhiata al problema. Se vuoi ottenere l'elemento zeroth, quale sarebbe la tua funzione?
let get_nth list 0 = List.head list (* this is not actually valid in OCaml *)
ora se si dispone di una funzione per ottenere l'elemento n-esimo da un elenco di elementi m (NB n> m), come hai potuto utilizzare tale funzione per costruire un'altra funzione che ottiene il n + 1 ° elemento da un lista di m + 1 elementi? Lasciate che la funzione di n + 1 elementi essere get_nth'
let get_nth' list n' = get_nth (List.tail list) (n'-1)
Ora tutto quello che dovete fare è quello di combinare le due cose e si è fatto. Lascerò l'ultima parte a te.
Se segui questo consiglio, otterrai qualcosa che è più complicato di quanto debba essere. Tuttavia è più facile capire cosa sta succedendo in questo modo.
Questo sembra davvero un problema di compiti a casa. Sarebbe utile se mostrassi del codice che hai provato che non funziona come speravi. –