aboutsummaryrefslogtreecommitdiff
path: root/src/list/operation
diff options
context:
space:
mode:
Diffstat (limited to 'src/list/operation')
-rw-r--r--src/list/operation/concatenate.h13
-rw-r--r--src/list/operation/higher/sort.h8
2 files changed, 13 insertions, 8 deletions
diff --git a/src/list/operation/concatenate.h b/src/list/operation/concatenate.h
index a5cbaa6..cf680c1 100644
--- a/src/list/operation/concatenate.h
+++ b/src/list/operation/concatenate.h
@@ -2,16 +2,23 @@
#define TYPEASVALUE_SRC_LIST_OPERATION_CONCATENATE_H_
#include "append.h"
-#include "higher/remove.h"
#include "higher/fold.h"
+#include "conditional/if.h"
namespace tav {
-template <typename ListOfLists>
+template <
+ typename Head,
+ typename... Tail
+>
using Concatenate = Fold<
Append,
void,
- ListOfLists
+ If<
+ Boolean<sizeof...(Tail) == 0>,
+ Head,
+ List<Head, Tail...>
+ >
>;
}
diff --git a/src/list/operation/higher/sort.h b/src/list/operation/higher/sort.h
index 925ab89..51317fa 100644
--- a/src/list/operation/higher/sort.h
+++ b/src/list/operation/higher/sort.h
@@ -29,11 +29,9 @@ class quick_sort {
public:
using type = Concatenate<
- List<
- Eval<quick_sort<Comparator, lhs>>,
- List<pivot>,
- Eval<quick_sort<Comparator, rhs>>
- >
+ Eval<quick_sort<Comparator, lhs>>,
+ List<pivot>,
+ Eval<quick_sort<Comparator, rhs>>
>;
};