Мне нужно найти как минимум список кортежей, но я хочу только вернуть минимум snd
элемент кортежей, а не весь кортеж. К сожалению, у меня есть следующая ошибка в следующем коде, и я не знаю, почему. Л аргументом является список кортежей (float * float)
Как найти минимальный список кортежей
let rec minRight l = match l with
| [] -> raise (Arg.Bad "minRight: empty list")
| [x]-> x
| (_,y)::xs -> min y (minRight xs)
Ошибка:
| (_,y)::xs -> min y (minRight xs)
Error: This expression has type 'a but an expression was expected of type
'b * 'a
Спасибо заранее.
Хорошо, я думаю, что это проблема, я удаляю эту строку и, наконец, компилирует: D – user2236919
Не удаляйте эту line, функция не будет обрабатывать список из списков длины один. В первом случае это исключало бы исключение. Вместо этого перепишите его '| [_, y] -> y'. (PS: не забывайте поднимать все ответы, которые были полезны). – jrouquie
Спасибо! Решение: let rec minRight l = совпадение l с | [] -> raise (Arg.Bad "minRight: empty list") | [(x, y)] -> y | (_, y) :: xs -> min y (minRight xs) – user2236919