aboutsummaryrefslogtreecommitdiff
path: root/src/list/operation/higher/sort.h
AgeCommit message (Collapse)Author
2015-02-26Enabled `Concatenate` to concatenate a variadic pack of listsAdrian Kummerlaender
* analogously to arbitrary list count concatenation in Scheme's `append` ** implemented for `Concatenate` instead as it fits better with the structure between `Append` and `Concatenate`
2015-02-16Renamed `detail::Sort` to `detail::quick_sort`Adrian Kummerlaender
* opens up the possibility of implementing different sort algorithms in this library * removed now unnecessary namespace prefixes
2015-02-16Simplified `List`, `Length` and `Reverse` implementationsAdrian Kummerlaender
* continuation of 8e49cc6 * list constructor was generalized to a _variadic fold_
2015-02-15Moved class-based implementations into `detail` namespaceAdrian Kummerlaender
* while class templates enable e.g. hiding implementation details they also require evaluation via `Eval` ** this clutters up the actual logic and is now hidden behind aliae that perform the evaluation
2015-02-14Introduced `Eval` function evaluation helperAdrian Kummerlaender
* replaces `typename *::type` constructs with `Eval` applications * aims to further unify function evaluation
2015-02-13Renamed `Apply`'s template alias to `function`Adrian Kummerlaender
* `type` is used to represent evaluation of a template * accessing the `function` doesn't evaluate it as it is the template itself
2015-02-12Revamped partial function applicationAdrian Kummerlaender
* moved internals into separate header i.e. the `detail` namespace relating to `Apply` * implemented automatic alias selection by implementing aliae of the basic variadic `type` template alias in different base classes ** variadic partial application is implemented in `detail::apply_variadic` *** `detail::apply_single` and `detail::apply_pair` define aliae to `detail::apply_variadic`'s `type` template alias *** both restricted aliae derive from `detail::apply_variadic` ** `Apply` derives from any of the aliae defining base classes depending on the count of placeholders as determined by `detail::count_placeholders` *** `Apply` is guaranteed to always be derived from `detail::apply_variadic` one way or the other * changed functions, test cases and examples depending on `Apply` accordingly ** `Length` had to be reimplemented without `Apply` as it doesn't allow usage of aliae expecting a different count of arguments anymore *** this is a advantage in the sense that core functionality of _TypeAsValue_ now doesn't depend on this complex partial application implementation anymore *** such functionality may be reimplemented separately from `Apply` * removed unnecessary `tav` namespace prefixes
2015-02-10Moved `Sort` list index deletion into `DeleteNth` functionAdrian Kummerlaender
* as it is commonly required functionality and as such should be provided by this library
2015-02-09Updated `Sort` to make use of `Partition` for splitting at pivotAdrian Kummerlaender
* added further test cases for `Sort` as well as `Nth` aliae
2015-02-08Implemented higher order `Sort` list operationAdrian Kummerlaender
* _Quicksort_ is the algorithm of choice ** it lends itself quite well to the _TypeAsValue_ approach because of its recursive nature ** this required implementation of a `Drop` counterpart to `Take` * the middle item of a given list is selected as the _pivot_ element * the `List` list contructor had to be expanded to allow `void` arguments inside its variadic parameter pack * added appropriate test cases