aboutsummaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorAdrian Kummerlaender2014-12-16 19:44:14 +0100
committerAdrian Kummerlaender2014-12-16 19:44:14 +0100
commitb8efc7534c54acea15c7a8483d3274dfe3b97696 (patch)
tree0d1e7c89f848c57fab6653e70a8a8b8aba959bff /source
parent73358c95351f199205401702701301225a4cb3a4 (diff)
downloadblog.kummerlaender.eu-b8efc7534c54acea15c7a8483d3274dfe3b97696.tar
blog.kummerlaender.eu-b8efc7534c54acea15c7a8483d3274dfe3b97696.tar.gz
blog.kummerlaender.eu-b8efc7534c54acea15c7a8483d3274dfe3b97696.tar.bz2
blog.kummerlaender.eu-b8efc7534c54acea15c7a8483d3274dfe3b97696.tar.lz
blog.kummerlaender.eu-b8efc7534c54acea15c7a8483d3274dfe3b97696.tar.xz
blog.kummerlaender.eu-b8efc7534c54acea15c7a8483d3274dfe3b97696.tar.zst
blog.kummerlaender.eu-b8efc7534c54acea15c7a8483d3274dfe3b97696.zip
Added `ConstList` project page
Diffstat (limited to 'source')
-rw-r--r--source/00_content/pages/about.md2
-rw-r--r--source/00_content/pages/projects/const_list.md37
2 files changed, 38 insertions, 1 deletions
diff --git a/source/00_content/pages/about.md b/source/00_content/pages/about.md
index cd3cfa8..854538a 100644
--- a/source/00_content/pages/about.md
+++ b/source/00_content/pages/about.md
@@ -14,4 +14,4 @@ Although software development and tickering with my computer systems definitely
I use this website to document some of my [thoughts and experiences](/archive) concerning software development and various other topics in addition to summarizing some of my [projects](/category/projects).
-[^1]: This really is the official translation of my recognized trade but I for one prefer referring to myself simply as Software Developer
+[^1]: This mouthful really is the official translation of my recognized trade but I for one prefer referring to myself simply as Software Developer
diff --git a/source/00_content/pages/projects/const_list.md b/source/00_content/pages/projects/const_list.md
new file mode 100644
index 0000000..09aa036
--- /dev/null
+++ b/source/00_content/pages/projects/const_list.md
@@ -0,0 +1,37 @@
+# ConstList
+
+…is a experimental compile-time functional-style list library written in C++.
+
+The MIT licensed implementation may be found on [Github] or [cgit].
+
+It was written as a experiment in how far one could take the optional compile-time executability offered by `constexpr` specifically and the C++ template metaprogramming facilities in general. While basic _Cons_ structures and appropriate accessor functions turned out to be quite straight forward to implement, the current problem is the absence of workable arbitrary value comparison in a templated context if one doesn't want to be limited to values that can be used as template parameters such as integers. This means that it is currently impossible to e.g. filter a list using `foldr`.
+
+## Current features
+
+- `Cons` class template for representing constant list structures at compile time
+- `make` method template for easily constructing `Cons` structures
+- list constructors such as `make` and `concatenate`
+- basic list accessors such as `size`, `head`, `tail`, `nth` and `take`
+- higher order list operators such as `foldr`, `foldl` and `map`
+- higher order list queries such as `any`, `all`, `none` and `count`
+- special purpose methods such as `reverse`
+- test cases for all of the above
+- MIT license
+
+## Usage example
+
+~~~
+const int sum{
+ ConstList::foldr(
+ ConstList::make(1, 2, 3, 4, 5),
+ [](const int& x, const int& y) {
+ return x + y;
+ },
+ 0
+ )
+}; // => 15
+~~~
+{: .language-cpp}
+
+[Github]: https://github.com/KnairdA/ConstList/
+[cgit]: http://code.kummerlaender.eu/ConstList/