Вы не можете сопоставить с шаблоном, чтобы найти последний или средний элемент в списке SML.
Список SML - это связанный список, что означает, что если вы хотите найти элемент x, вы должны сначала посетить все элементыперед ним.
Однако вы можете использовать библиотечные функции, чтобы найти средний элемент способом, подобным следующему:
fun someFunction list =
let
val (first, middle, last) = (hd list, List.nth (list, (length list) div 2), List.last list)
in
(* your code here *)
end
Однако это займет время, линейное по отношению к длине списка,но нет асимтотически более быстрого способа использования списков, если вам нужен постоянный доступ ко времени, вам следует рассмотреть возможность использования массивов.