Вы не указываете тип list_estudantes
. Это выглядит из вашего кода, как будто это leitura list list
. Это потому, что вы запускаете List.iter
над этим значением, но на каждой итерации (обработанной функцией fun leitura_l -> ....
) вы сравниваете параметр с шаблонами списка.
Но почему-то я не думаю, что это правильно, поскольку это означало бы, что у каждого учащегося есть несколько leitura
записей.
Я подозреваю, что list_estudantes
- это просто список (не список списков), и что ваша внутренняя функция должна выглядеть примерно так:
fun leitura ->
printf "%-8s" leitura.nome
(* And so on *)
Единственное, чего не хватает, - это сортировка списка. Вы можете отсортировать список, используя List.sort
, где вы предоставляете функцию, которая сравнивает два значения типа leitura
.
Функция сравнения выглядит примерно так:
let my_compare a b =
if a.notaMax < b.NotaMax then -1
(* And so on *)
As @ Пробел указывает на то, что ваш код будет намного легче читать и понимать, если вы напишите отдельные функции для сортировки и печати списка.