aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-01-19Replaced Google-Test with `static_assert` based test casesAdrian Kummerlaender
* as everything this library does happens during compile time it can be checked using standard language features ** i.e. `static_assert` already offers everything needed for test cases in this situation
2015-01-19Moved `Odd` helper into math operation headerAdrian Kummerlaender
* it may be useful for more than test cases
2015-01-19Implemented `Filter` in terms of `Fold`Adrian Kummerlaender
* as its name implies this _function_ only returns elements which evaluate to _true_ when passed to a given _function_ ** this marks the moment where _TypeAsValue_ supports something _ConstList_ does not, i.e. primary goal is achieved *** namely returning different types depending on the actual _values_ of a _Cons_ structure * added appropriate test case
2015-01-18Implemented `Reverse` function in terms of `Fold`Adrian Kummerlaender
2015-01-18Implemented `Map` in terms of `Fold`Adrian Kummerlaender
* as its name implies this _function_ applies a given _function_ to each element of a _Cons_ structure * added appropriate test case
2015-01-18Reimplemented `Length` function in terms of `Fold`Adrian Kummerlaender
* this removes the need for maintaining a partial overload of `Length` * the recursive traversion of the _Cons_ structure is now implemented by `Fold` instead of needlessly duplicating it
2015-01-18Implemented higher order function `fold`Adrian Kummerlaender
* applies a given _function_ to each _Cons_ starting with a initial value * added appropriate test case
2015-01-17Replaced `If` based `Nth` implementation with partial specializationsAdrian Kummerlaender
* partial specializations offer control over lazy type instantiation ** `If` is currently only a `std::conditional` wrapper and requires further refinement to be really useful for this kind of use case
2015-01-17Implemented `Take` functionAdrian Kummerlaender
* as its name implies this function _takes_ a maximum of _Count_ elements of a list * added appropriate test case
2015-01-17Implemented `Nth` functionAdrian Kummerlaender
* as its name implies this function returns the _nth_ value of a given _Cons_ structure * added appropriate test case
2015-01-17Extracted list operations into separate _operation_ headersAdrian Kummerlaender
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-17Added Scheme representation to test cases as a kind of documentationAdrian Kummerlaender
2015-01-16Implemented recursive `Concatenate` _Cons_ constructorAdrian Kummerlaender
* concatenates two given _Cons_ based lists into a single one
2015-01-16Implemented basic `Cons` value type and `List` constructorAdrian Kummerlaender
* `Cons` is a straigth forward type _pair_ containing `car` and `cdr` typedefs ** they may be accessed using `Car` and `Cdr` helper template aliases ** there is no enforcement of _Cons_ structure and type equality whatsoever *** i.e. similar to Scheme and different from how it is implemented in _ConstList_ * `List` is a recursive variadic helper template for constructing `Cons` value types ** simplifies _Cons_ construction and may be expanded to offer type deduction and built upon to enforce type equality * added appropriate test cases
2015-01-16Capitalized math operations to fit naming schemeAdrian Kummerlaender
2015-01-16Implemented `tav::If` as `std::conditional` wrapperAdrian Kummerlaender
2015-01-16Redefined function template structs as template aliasesAdrian Kummerlaender
2015-01-15Extracted basic math operations into separate headerAdrian Kummerlaender
2015-01-15Removed unnecessary restrictions of the standard operator rulesAdrian Kummerlaender
2015-01-15Completed basic math operators and fixed their result typeAdrian Kummerlaender
* the result type now depends on the `decltype` of the performed operation
2015-01-15Added basic value type alias and math operationsAdrian Kummerlaender
2015-01-15Initial project structureAdrian Kummerlaender