aboutsummaryrefslogtreecommitdiff
path: root/src/conditional
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-25Added `Cond` branch condition assertionAdrian Kummerlaender
* improves error messages in case no branch condition resolves to `true`
2015-02-19Introduced `Branch` and `Else` pair aliases for usage in `Cond`Adrian Kummerlaender
* pure _syntax sugar_ to improve readability of `Cond` conditionals
2015-02-19Added missing `Cond` dependency headersAdrian Kummerlaender
2015-02-19Reimplemented `Find` in terms of `ListIndex`Adrian Kummerlaender
* `ListIndex` already implements the necessary partial template specializations for finding elements matching a predicate * reimplemented `Cond` using `detail::find_variadic` as `Find` depends on `Apply` which in turn depends on `Cond` ** it is useful if core functionality such as the branched conditional `Cond` do not require higher order functionality such as `Find` *** otherwise one can not use core functionality in the implementation of higher order functionality * introduced `utility::predicate_guard` helper template ** checks a given value using a predicate and only forwards the value to the guarded function if this check is successful ** if check is unsuccessful it returns a surrogate value simmilar to `utility::predicate_assurance`
2015-02-15Simplified `Cond`, `Cons` and `Map` implementationsAdrian Kummerlaender
* continuation of 8e49cc6f8f
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-12Implemented `Cond` conditionalAdrian Kummerlaender
* returns the `CDR` of the first true `CAR` in a given list of pairs * reimplemented `Apply` base class selection in terms of `Cond`
2015-02-05Defer `If` template resolution analogously to other functionsAdrian Kummerlaender
* all other functions sans `Cons` are resolved when the respective member `*::type` is instantiated * this was changed soely to increase coherence
2015-01-17Implemented `Length` functionAdrian Kummerlaender
* as its name implies this function returns the length of a given _Cons_ structure * result type is `Size<Length>` which wraps `std::size_t` to match the `sizeof` operator
2015-01-16Implemented `tav::If` as `std::conditional` wrapperAdrian Kummerlaender