From 11926172c3d49730d6922fcb41edc7feef4f7f45 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Sat, 7 Mar 2015 16:10:11 +0100 Subject: Updated _TypeAsValue_ source links to point to a specific commit * added link to blog article to _TypeAsValue_ page --- ...e_as_a_metaphor_for_template_metaprogramming.md | 31 +++++++++++----------- pages/projects/type_as_value.md | 9 ++++--- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/articles/2015-03-06_using_scheme_as_a_metaphor_for_template_metaprogramming.md b/articles/2015-03-06_using_scheme_as_a_metaphor_for_template_metaprogramming.md index 436db77..bd14983 100644 --- a/articles/2015-03-06_using_scheme_as_a_metaphor_for_template_metaprogramming.md +++ b/articles/2015-03-06_using_scheme_as_a_metaphor_for_template_metaprogramming.md @@ -232,22 +232,23 @@ Finally I want to reference the [Boost MPL] library which supports everything an [ConstList]: /page/const_list/ [TypeAsValue]: /page/type_as_value/ [SRFI-1]: http://srfi.schemers.org/srfi-1/srfi-1.html -[`std::integral_constant`]: http://en.cppreference.com/w/cpp/types/integral_constant -[`std::bind`]: http://en.cppreference.com/w/cpp/utility/functional/bind -[`tav::Filter`]: https://github.com/KnairdA/TypeAsValue/blob/master/src/list/operation/higher/filter.h -[`tav::Any`]: https://github.com/KnairdA/TypeAsValue/blob/master/src/list/operation/higher/query.h -[`tav::Every`]: https://github.com/KnairdA/TypeAsValue/blob/master/src/list/operation/higher/query.h -[`tav::Fold`]: https://github.com/KnairdA/TypeAsValue/blob/master/src/list/operation/higher/fold.h -[`tav::Sort`]: https://github.com/KnairdA/TypeAsValue/blob/master/src/list/operation/higher/sort.h -[`tav::Apply`]: https://github.com/KnairdA/TypeAsValue/blob/master/src/function/apply.h -[`tav::detail::placeholder`]: https://github.com/KnairdA/TypeAsValue/blob/master/src/function/detail/placeholder.h -[`tav::And`]: https://github.com/KnairdA/TypeAsValue/blob/master/src/operation/logic.h -[`tav::Eval`]: https://github.com/KnairdA/TypeAsValue/blob/master/src/type.h -[`tav::Pair`]: https://github.com/KnairdA/TypeAsValue/blob/master/src/pair.h -[`tav::Cons`]: https://github.com/KnairdA/TypeAsValue/blob/master/src/list/cons.h -[`tav::List`]: https://github.com/KnairdA/TypeAsValue/blob/master/src/list/list.h -[`tav::Cond`]: https://github.com/KnairdA/TypeAsValue/blob/master/src/conditional/cond.h [example applications]: https://github.com/KnairdA/TypeAsValue/tree/master/example [Boost MPL]: http://www.boost.org/doc/libs/1_57_0/libs/mpl/doc/index.html [Github]: https://github.com/KnairdA/TypeAsValue/ [cgit]: http://code.kummerlaender.eu/TypeAsValue/ + +[`std::integral_constant`]: http://en.cppreference.com/w/cpp/types/integral_constant +[`std::bind`]: http://en.cppreference.com/w/cpp/utility/functional/bind +[`tav::Filter`]: https://github.com/KnairdA/TypeAsValue/blob/299781bccc5c7d1b212198b5a9a55ee9447603c5/src/list/operation/higher/filter.h +[`tav::Any`]: https://github.com/KnairdA/TypeAsValue/blob/299781bccc5c7d1b212198b5a9a55ee9447603c5/src/list/operation/higher/query.h +[`tav::Every`]: https://github.com/KnairdA/TypeAsValue/blob/299781bccc5c7d1b212198b5a9a55ee9447603c5/src/list/operation/higher/query.h +[`tav::Fold`]: https://github.com/KnairdA/TypeAsValue/blob/299781bccc5c7d1b212198b5a9a55ee9447603c5/src/list/operation/higher/fold.h +[`tav::Sort`]: https://github.com/KnairdA/TypeAsValue/blob/299781bccc5c7d1b212198b5a9a55ee9447603c5/src/list/operation/higher/sort.h +[`tav::Apply`]: https://github.com/KnairdA/TypeAsValue/blob/299781bccc5c7d1b212198b5a9a55ee9447603c5/src/function/apply.h +[`tav::detail::placeholder`]: https://github.com/KnairdA/TypeAsValue/blob/299781bccc5c7d1b212198b5a9a55ee9447603c5/src/function/detail/placeholder.h +[`tav::And`]: https://github.com/KnairdA/TypeAsValue/blob/299781bccc5c7d1b212198b5a9a55ee9447603c5/src/operation/logic.h +[`tav::Eval`]: https://github.com/KnairdA/TypeAsValue/blob/299781bccc5c7d1b212198b5a9a55ee9447603c5/src/type.h +[`tav::Pair`]: https://github.com/KnairdA/TypeAsValue/blob/299781bccc5c7d1b212198b5a9a55ee9447603c5/src/pair.h +[`tav::Cons`]: https://github.com/KnairdA/TypeAsValue/blob/299781bccc5c7d1b212198b5a9a55ee9447603c5/src/list/cons.h +[`tav::List`]: https://github.com/KnairdA/TypeAsValue/blob/299781bccc5c7d1b212198b5a9a55ee9447603c5/src/list/list.h +[`tav::Cond`]: https://github.com/KnairdA/TypeAsValue/blob/299781bccc5c7d1b212198b5a9a55ee9447603c5/src/conditional/cond.h diff --git a/pages/projects/type_as_value.md b/pages/projects/type_as_value.md index 839e691..5a8e37a 100644 --- a/pages/projects/type_as_value.md +++ b/pages/projects/type_as_value.md @@ -4,10 +4,12 @@ As its name implies it follows the overall concept of viewing types as values and templates as functions manipulating those values. -This library is a expanded reimplementation of my previous attempt at this problem: [ConstList]. As detailed in the appropriate [blog article] the mixed approach between generic lambda expressions, `constexpr` marked functions and template metaprogramming doesn't offer sufficient flexibility which led me to approach compile time computation in a slightly different manner via this new library. As one might notice this boils down to using _Scheme_ as a metaphor for C++ template metaprogramming. In fact all [test cases] and examples are documented by representing their logic in _Scheme_. +This library is a expanded reimplementation of my previous attempt at this problem: [ConstList]. As detailed in the appropriate [blog article] the mixed approach between generic lambda expressions, `constexpr` marked functions and template metaprogramming doesn't offer sufficient flexibility which led me to approach compile time computation in a slightly different manner via this new library. As one might notice this boils down to using _Scheme_ as a metaphor for C++ template metaprogramming. In fact all [test cases] and [examples] are documented by representing their logic in _Scheme_. Its MIT licensed source code is available on both [Github] and [cgit]. +Furthermore an overview of this library alongside some background information is available in the form of a blog article on [using _Scheme_ as a metaphor for template metaprogramming]. + ## Current features * guaranteed evaluation during compile time @@ -41,11 +43,12 @@ const std::size_t count = tav::Length< ~~~ {: .language-cpp} -Additionally there is a implementation of the _Sieve of Eratosthenes_ available as a more extensive [example]. +More extensive [examples] are available in the form of implementations of the _Sieve of Eratosthenes_ as well as of a _Turing machine_. [ConstList]: /page/const_list/ [blog article]: /article/a_look_at_compile_time_computation_in_cpp/ +[using _Scheme_ as a metaphor for template metaprogramming]: /article/using_scheme_as_a_metaphor_for_template_metaprogramming/ [Github]: https://github.com/KnairdA/TypeAsValue/ [cgit]: http://code.kummerlaender.eu/TypeAsValue/ [test cases]: https://github.com/KnairdA/TypeAsValue/blob/master/test.cc -[example]: https://github.com/KnairdA/TypeAsValue/blob/master/example/prime/prime.cc +[examples]: https://github.com/KnairdA/TypeAsValue/blob/master/example/ -- cgit v1.2.3