Нихрена не понял, но очень интересно. Повторяю.
Если честно сортировать, потом брать первый элемент то время будет минимум O(n*logn).
В ленивом языке это возможно, так как все выполнение отложено, вопрос в том что там внутри если для начала нужно разобрать весь массив как в случае с merge sort а потом собрать заново, то O(N) не получиться для случая head(sort(list))