firstElement :: Средний :: LastElement REGEX - PullRequest
0 голосов
/ 10 февраля 2011

Если я хочу проверить ввод, чтобы я мог сразу получить последний элемент, существует ли форма Regex, которую нужно сделать:

fun someFunction (firstElement :: MiddleOfList :: LastElement)

Так что я могу получить последний элемент

Ответы [ 2 ]

1 голос
/ 11 февраля 2011

Вы не можете сопоставить с шаблоном, чтобы найти последний или средний элемент в списке 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

Однако это займет время, линейное по отношению к длине списка,но нет асимтотически более быстрого способа использования списков, если вам нужен постоянный доступ ко времени, вам следует рассмотреть возможность использования массивов.

1 голос
/ 10 февраля 2011

Похоже, есть функция last для списков в структуре List;это то, что тебе нужно?

...