A lot of algorithms like lazy sort() can be also classified as adapters since it wraps the original range and allows to access the elements of the range in a particular order. The only reason why take() was in range.adapter is that take() is trivial - it doesn't change the order of elements but can turn an infinite range into finite one. This distinction between trivial and non-trivial algorithms isn't absolutely clear. So let us put all algorithms and any adapters that change the range iteration in some way into "algorithm" package to avoid any confusion later. - range.adapter is renamed into algorithm.iteration - range.adapter is deprecated - Added missing imports for take() and takeExactly() - takeExactly() doesn't wrap ranges that have slicing anymore - Voldemort structs for take() takeExactly() are now static
20 lines
762 B
D
20 lines
762 B
D
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
/**
|
|
* Collection of generic algorithms.
|
|
*
|
|
* Copyright: Eugene Wissner 2017-2018.
|
|
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
|
|
* Mozilla Public License, v. 2.0).
|
|
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)
|
|
* Source: $(LINK2 https://github.com/caraus-ecms/tanya/blob/master/source/tanya/algorithm/package.d,
|
|
* tanya/algorithm/package.d)
|
|
*/
|
|
module tanya.algorithm;
|
|
|
|
public import tanya.algorithm.comparison;
|
|
public import tanya.algorithm.iteration;
|
|
public import tanya.algorithm.mutation;
|