Я хочу написать функцию в Ocaml, которая задала список четверки и четверку (x, y, z, f), возвращает список, содержащий кортежи (x ', y', z ', g) такие, что x = x' или y = y 'или z = z' (это целые числа). Вот моя первая попыткаВложенное совпадение шаблонов в Ocaml
let rec constrained_by c list =
match s with
| []-> []
| hd :: tl ->
begin
let Cell(x,y,r,_)= c in (*warning*)
begin
match hd with
| Cell(x,_,_,Some(_))-> hd::constrained_by c tl
| Cell(_, y, _,Some(_)) -> hd::constrained_by c tl
| Cell(_, _, r,Some(_)) -> hd::constrained_by c tl
| _ -> constrained_by c tl
end
end
Проблема: когда он вызывается, он возвращает исходный список, независимо от того, какой четвёрки мы сопоставляем. Кроме того, проблема в том, что он возвращает предупреждение о том, что x, y, r в строке (предупреждение) не используются.