Вы можете заменить ignore l
на ()
: он имеет тот же тип и делает то же самое (ничего).
Выражение в ветви else
должно иметь тот же тип, что и выражение в ветви then
, а тип выражения в ветви then
равен unit
.
Кроме того, существует сокращенная удобная конструкция для if condition then expression else ()
.Более короткая эквивалентная конструкция - if condition then expression
, которую вы можете использовать в своей программе:
let eq_class m i =
let column = m.(i)
and set = ref [] in
Array.iteri begin fun j l ->
if j = i || column.(j) && m.(j).(i) then
set := j :: !set
end column;
!set;;