Я внедряю клон LINQ в Lua, но здесь это не слишком актуально, и я выполнил большинство функций (перечислимых / запрашиваемых, но не прекомпилятор), но не могу придумать разумного способа реализации OrderBy's ThenBy.
В настоящее время я сортирую один раз, затем помещаю в новые списки, а затем сортирую эти подсписки и, наконец, снова объединяю результаты, но это кажется очень расточительным и не элегантным, я уверен, что кто-то нашел разумный способ сделать это (лучше алгоритм), но я понятия не имею, что это такое. Любые подсказки относительно того, как эффективно реализовать OrderBy / Thenby?
Примечание: Надеемся, что язык и языковые конструкции здесь не актуальны, я ищу обобщенный алгоритм, точно так же как, скажем, двоичная сортировка может быть сделана на любом языке.
Редактировать: В настоящее время я работаю над LINQ to Object, поэтому любые идеи о том, как это будет сделано, в частности, будут великолепны. Я предполагаю, что OrberBy / ThenBy - это 2 вызова функций, а не один, но я могу ошибаться.