aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Kummerlaender2015-01-23 20:53:17 +0100
committerAdrian Kummerlaender2015-01-23 20:53:17 +0100
commitc79be7a3c697399c2aa8994b214dda26a1bd9c19 (patch)
treeaac1d1ea1222b6014838bb1e64a2bae178107070
parent810a9c1549f978aa14dd091d80def81aa16137d4 (diff)
downloadblog.kummerlaender.eu-c79be7a3c697399c2aa8994b214dda26a1bd9c19.tar
blog.kummerlaender.eu-c79be7a3c697399c2aa8994b214dda26a1bd9c19.tar.gz
blog.kummerlaender.eu-c79be7a3c697399c2aa8994b214dda26a1bd9c19.tar.bz2
blog.kummerlaender.eu-c79be7a3c697399c2aa8994b214dda26a1bd9c19.tar.lz
blog.kummerlaender.eu-c79be7a3c697399c2aa8994b214dda26a1bd9c19.tar.xz
blog.kummerlaender.eu-c79be7a3c697399c2aa8994b214dda26a1bd9c19.tar.zst
blog.kummerlaender.eu-c79be7a3c697399c2aa8994b214dda26a1bd9c19.zip
Added _TypeAsValue_ project page
* fixed grammar of _StaticXSLT_ page
-rw-r--r--source/00_content/pages/projects/static_xslt.md2
-rw-r--r--source/00_content/pages/projects/type_as_value.md43
2 files changed, 44 insertions, 1 deletions
diff --git a/source/00_content/pages/projects/static_xslt.md b/source/00_content/pages/projects/static_xslt.md
index 3615244..8644a6b 100644
--- a/source/00_content/pages/projects/static_xslt.md
+++ b/source/00_content/pages/projects/static_xslt.md
@@ -2,7 +2,7 @@
…is the XSLT based static site generation framework especially developed to generate this website.
-Its MIT licensed source code is available both [Github] and [cgit].
+Its MIT licensed source code is available on both [Github] and [cgit].
The implementation of a pure[^1] XSLT solution to the problem of static site generation required the development of a collection of external functions enabling access to the filesystem, external applications and other transformations from inside XSLT. These external functions are not part of this project and were developed separately as [InputXSLT]. Additionally a basic XSLT build system was developed to make _StaticXSLT_ usable for different projects which is available as [BuildXSLT].
diff --git a/source/00_content/pages/projects/type_as_value.md b/source/00_content/pages/projects/type_as_value.md
new file mode 100644
index 0000000..e8d2a21
--- /dev/null
+++ b/source/00_content/pages/projects/type_as_value.md
@@ -0,0 +1,43 @@
+# TypeAsValue
+
+…is a template metaprogramming library intended for compile time computation written in C++.
+
+As its name implies it follows the overall concept of viewing types as values and templates as functions manipulating those values. This view on template metaprogramming lends itself quite well to a _Scheme_ like way of doing functional programming.
+
+_TypeAsValue_ is currently primarily a 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.
+
+Its MIT licensed source code is available on both [Github] and [cgit].
+
+## Current features
+
+* guaranteed evaluation during compile time
+* basic math and logic operations
+* conditionals
+* `Cons` structure
+* `List` function as helper for `Cons` construction
+* basic list operators such as `Nth`, `Length`, `Take` and `Append`
+* higher order list operation `Fold`
+* higher order list operations such as `Map` and `Filter` expressed in terms of `Fold`
+* higher order list queries such as `Any`, `All` and `None`
+* list generators such as `Iota` and `ListTabulate`
+* `static_assert` based test cases for all of the above
+
+## Usage example
+
+~~~
+// λ (length (filter odd? (list 1 2 3)))
+// 2
+
+const std::size_t count = tav::Length<
+ tav::Filter<
+ tav::Odd,
+ tav::List<tav::Int<1>, tav::Int<2>, tav::Int<3>>::type
+ >::type
+>::type::value;
+~~~
+{: .language-cpp}
+
+[ConstList]: /page/const_list/
+[blog article]: /article/a_look_at_compile_time_computation_in_cpp/
+[Github]: https://github.com/KnairdA/TypeAsValue/
+[cgit]: http://code.kummerlaender.eu/TypeAsValue/