<feed xmlns='http://www.w3.org/2005/Atom'>
<title>TypeAsValue/src/function, branch master</title>
<subtitle>C++ compile time computation library using types as values and templates as functions</subtitle>
<link rel='alternate' type='text/html' href='http://code.kummerlaender.eu/TypeAsValue/'/>
<entry>
<title>Changed `tav::Apply` implementation selection to template alias</title>
<updated>2015-03-07T15:14:11+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2015-03-07T15:14:11+00:00</published>
<link rel='alternate' type='text/html' href='http://code.kummerlaender.eu/TypeAsValue/commit/?id=cb2a79cd818fbfa50e7bdebd090e681a0073f9d5'/>
<id>cb2a79cd818fbfa50e7bdebd090e681a0073f9d5</id>
<content type='text'>
* there is no reason to differ from the rest of the library and use inheritance in this instance
* added link to blog article on the _Scheme metaphor_ to `README.md`
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* there is no reason to differ from the rest of the library and use inheritance in this instance
* added link to blog article on the _Scheme metaphor_ to `README.md`
</pre>
</div>
</content>
</entry>
<entry>
<title>Replaced `utility::defer_eval` with placeholder-less `Apply`</title>
<updated>2015-02-24T15:51:37+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2015-02-24T15:51:37+00:00</published>
<link rel='alternate' type='text/html' href='http://code.kummerlaender.eu/TypeAsValue/commit/?id=a3a0d6a1fa880b324576bb073637e021c57b0e65'/>
<id>a3a0d6a1fa880b324576bb073637e021c57b0e65</id>
<content type='text'>
* usage of `Apply` sans placeholders was already possible and as such duplicated `utility::defer_eval`
* renamed `apply_none`'s type alias from to `type` to enable combining it with `Eval`
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* usage of `Apply` sans placeholders was already possible and as such duplicated `utility::defer_eval`
* renamed `apply_none`'s type alias from to `type` to enable combining it with `Eval`
</pre>
</div>
</content>
</entry>
<entry>
<title>Moved `Apply`'s placeholder into separate detail header</title>
<updated>2015-02-19T20:07:57+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2015-02-19T20:07:57+00:00</published>
<link rel='alternate' type='text/html' href='http://code.kummerlaender.eu/TypeAsValue/commit/?id=397264a5e0046d9c84d8de41b9683ae695c516e0'/>
<id>397264a5e0046d9c84d8de41b9683ae695c516e0</id>
<content type='text'>
* separate actual `Apply` specializations in `detail/apply.h` from placeholder details
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* separate actual `Apply` specializations in `detail/apply.h` from placeholder details
</pre>
</div>
</content>
</entry>
<entry>
<title>Introduced `Branch` and `Else` pair aliases for usage in `Cond`</title>
<updated>2015-02-19T18:18:48+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2015-02-19T18:18:48+00:00</published>
<link rel='alternate' type='text/html' href='http://code.kummerlaender.eu/TypeAsValue/commit/?id=a07999f7436802f15fc21bebd083006c9e681638'/>
<id>a07999f7436802f15fc21bebd083006c9e681638</id>
<content type='text'>
* pure _syntax sugar_ to improve readability of `Cond` conditionals
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* pure _syntax sugar_ to improve readability of `Cond` conditionals
</pre>
</div>
</content>
</entry>
<entry>
<title>Unified `Iota` and `MakeList` using nested structure generator</title>
<updated>2015-02-16T16:35:38+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2015-02-16T16:35:38+00:00</published>
<link rel='alternate' type='text/html' href='http://code.kummerlaender.eu/TypeAsValue/commit/?id=f81cd736e00c28cf24412a4099bae08ff2e6c493'/>
<id>f81cd736e00c28cf24412a4099bae08ff2e6c493</id>
<content type='text'>
* `detail::generate_nested_structure` offers a higher order nested structure constructor for procedural list generation
* renamed `Fold` implementation details
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* `detail::generate_nested_structure` offers a higher order nested structure constructor for procedural list generation
* renamed `Fold` implementation details
</pre>
</div>
</content>
</entry>
<entry>
<title>Simplified `List`, `Length` and `Reverse` implementations</title>
<updated>2015-02-16T13:03:53+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2015-02-16T13:03:53+00:00</published>
<link rel='alternate' type='text/html' href='http://code.kummerlaender.eu/TypeAsValue/commit/?id=324988569183e38e9c5e42318571693a6fcd9569'/>
<id>324988569183e38e9c5e42318571693a6fcd9569</id>
<content type='text'>
* continuation of 8e49cc6
* list constructor was generalized to a _variadic fold_
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* continuation of 8e49cc6
* list constructor was generalized to a _variadic fold_
</pre>
</div>
</content>
</entry>
<entry>
<title>Moved class-based implementations into `detail` namespace</title>
<updated>2015-02-15T13:07:50+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2015-02-15T13:07:50+00:00</published>
<link rel='alternate' type='text/html' href='http://code.kummerlaender.eu/TypeAsValue/commit/?id=46e174935b122c0da4b51532a7f683a512eeaf65'/>
<id>46e174935b122c0da4b51532a7f683a512eeaf65</id>
<content type='text'>
* 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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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
</pre>
</div>
</content>
</entry>
<entry>
<title>Introduced `Eval` function evaluation helper</title>
<updated>2015-02-14T09:43:49+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2015-02-14T09:43:49+00:00</published>
<link rel='alternate' type='text/html' href='http://code.kummerlaender.eu/TypeAsValue/commit/?id=e24f25ada7e8f48dc35cb235e045a4324bccb4f2'/>
<id>e24f25ada7e8f48dc35cb235e045a4324bccb4f2</id>
<content type='text'>
* replaces `typename *::type` constructs with `Eval` applications
* aims to further unify function evaluation
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* replaces `typename *::type` constructs with `Eval` applications
* aims to further unify function evaluation
</pre>
</div>
</content>
</entry>
<entry>
<title>Renamed `Apply`'s template alias to `function`</title>
<updated>2015-02-13T20:54:48+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2015-02-13T20:54:48+00:00</published>
<link rel='alternate' type='text/html' href='http://code.kummerlaender.eu/TypeAsValue/commit/?id=73680466149c7aad21de558b7acc11dfa05183d2'/>
<id>73680466149c7aad21de558b7acc11dfa05183d2</id>
<content type='text'>
* `type` is used to represent evaluation of a template
* accessing the `function` doesn't evaluate it as it is the template itself
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* `type` is used to represent evaluation of a template
* accessing the `function` doesn't evaluate it as it is the template itself
</pre>
</div>
</content>
</entry>
<entry>
<title>Implemented `Cond` conditional</title>
<updated>2015-02-12T13:32:33+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2015-02-12T13:32:33+00:00</published>
<link rel='alternate' type='text/html' href='http://code.kummerlaender.eu/TypeAsValue/commit/?id=246cb31c1e20cdcc21a6a607de4b0095c71315d6'/>
<id>246cb31c1e20cdcc21a6a607de4b0095c71315d6</id>
<content type='text'>
* returns the `CDR` of the first true `CAR` in a given list of pairs
* reimplemented `Apply` base class selection in terms of `Cond`
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* returns the `CDR` of the first true `CAR` in a given list of pairs
* reimplemented `Apply` base class selection in terms of `Cond`
</pre>
</div>
</content>
</entry>
<entry>
<title>Revamped partial function application</title>
<updated>2015-02-12T09:16:54+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2015-02-12T09:16:54+00:00</published>
<link rel='alternate' type='text/html' href='http://code.kummerlaender.eu/TypeAsValue/commit/?id=ad27a79a2e6bc380e68ec77ae961917a9fb402d3'/>
<id>ad27a79a2e6bc380e68ec77ae961917a9fb402d3</id>
<content type='text'>
* 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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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
</pre>
</div>
</content>
</entry>
<entry>
<title>Redefined `Length` in terms of `Apply` and `Fold`</title>
<updated>2015-01-26T18:19:45+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2015-01-26T18:19:45+00:00</published>
<link rel='alternate' type='text/html' href='http://code.kummerlaender.eu/TypeAsValue/commit/?id=27b991ea23f71093b274b3ff1692c47274eb4d1d'/>
<id>27b991ea23f71093b274b3ff1692c47274eb4d1d</id>
<content type='text'>
* this function illustrates the use case `Apply` is currently intended for
* moved `Take` and `Nth` into separate files to resolve header resolution conflicts
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* this function illustrates the use case `Apply` is currently intended for
* moved `Take` and `Nth` into separate files to resolve header resolution conflicts
</pre>
</div>
</content>
</entry>
<entry>
<title>Added pair and triple aliae for the variadic `Apply` type</title>
<updated>2015-01-26T17:54:59+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2015-01-26T17:54:59+00:00</published>
<link rel='alternate' type='text/html' href='http://code.kummerlaender.eu/TypeAsValue/commit/?id=7ce93ff513a993b8b46fbb401b232d6f557b948b'/>
<id>7ce93ff513a993b8b46fbb401b232d6f557b948b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Implemented partial function application prototype</title>
<updated>2015-01-25T19:35:38+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2015-01-25T19:35:38+00:00</published>
<link rel='alternate' type='text/html' href='http://code.kummerlaender.eu/TypeAsValue/commit/?id=8b6de4c8c89d31c5d0e16548767ef21f242aadd1'/>
<id>8b6de4c8c89d31c5d0e16548767ef21f242aadd1</id>
<content type='text'>
* function `Apply` enables partial supply of the template parameters of a given _function_
** unsupplied parameters may be marked by _placeholders_, i.e. approach is similar to `std::bind`
** returns a template type taking the remaining, unsupplied parameters of the partially applied _function_
* this is a prototype in the sense, that neither full application using `Apply` or partial application of higher order functions is currently supported
** e.g. a `single_type` alias type declaration is required as the variadic template `template&lt;typename...&gt;` doesn't directly map to `template&lt;typename&gt;`
* appropriate test cases document current feature set
* the goal is to enable a concise defintion of _lambda-like_ expressions for easy specialization of e.g. functors provided to higher order functions
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* function `Apply` enables partial supply of the template parameters of a given _function_
** unsupplied parameters may be marked by _placeholders_, i.e. approach is similar to `std::bind`
** returns a template type taking the remaining, unsupplied parameters of the partially applied _function_
* this is a prototype in the sense, that neither full application using `Apply` or partial application of higher order functions is currently supported
** e.g. a `single_type` alias type declaration is required as the variadic template `template&lt;typename...&gt;` doesn't directly map to `template&lt;typename&gt;`
* appropriate test cases document current feature set
* the goal is to enable a concise defintion of _lambda-like_ expressions for easy specialization of e.g. functors provided to higher order functions
</pre>
</div>
</content>
</entry>
</feed>
