aboutsummaryrefslogtreecommitdiff
path: root/src/list/operation
diff options
context:
space:
mode:
Diffstat (limited to 'src/list/operation')
-rw-r--r--src/list/operation/append.h8
-rw-r--r--src/list/operation/basic.h4
-rw-r--r--src/list/operation/delete_nth.h4
-rw-r--r--src/list/operation/drop.h4
-rw-r--r--src/list/operation/higher/drop_while.h8
-rw-r--r--src/list/operation/higher/filter.h8
-rw-r--r--src/list/operation/higher/find.h8
-rw-r--r--src/list/operation/higher/fold.h6
-rw-r--r--src/list/operation/higher/map.h4
-rw-r--r--src/list/operation/higher/partition.h4
-rw-r--r--src/list/operation/higher/query.h8
-rw-r--r--src/list/operation/higher/sort.h28
-rw-r--r--src/list/operation/higher/take_while.h12
-rw-r--r--src/list/operation/nth.h10
-rw-r--r--src/list/operation/reverse.h14
-rw-r--r--src/list/operation/take.h8
16 files changed, 68 insertions, 70 deletions
diff --git a/src/list/operation/append.h b/src/list/operation/append.h
index 6cf15f0..28c9adf 100644
--- a/src/list/operation/append.h
+++ b/src/list/operation/append.h
@@ -8,13 +8,13 @@ template <
typename Secondary
>
struct Append {
- typedef typename Cons<
+ typedef Eval<Cons<
Head<Primary>,
- typename Append<
+ Eval<Append<
Tail<Primary>,
Secondary
- >::type
- >::type type;
+ >>
+ >> type;
};
template <typename Secondary>
diff --git a/src/list/operation/basic.h b/src/list/operation/basic.h
index b4aa35a..5f9a3f9 100644
--- a/src/list/operation/basic.h
+++ b/src/list/operation/basic.h
@@ -13,11 +13,11 @@ class Length {
using accumulate = Add<Size<1>, Accumulated>;
public:
- typedef typename Fold<
+ typedef Eval<Fold<
accumulate,
Size<0>,
Cons
- >::type type;
+ >> type;
};
diff --git a/src/list/operation/delete_nth.h b/src/list/operation/delete_nth.h
index 03df12a..6127ade 100644
--- a/src/list/operation/delete_nth.h
+++ b/src/list/operation/delete_nth.h
@@ -12,8 +12,8 @@ template <
typename List
>
using DeleteNth = Append<
- typename Take<Index, List>::type,
- typename Drop<Add<Index, Size<1>>, List>::type
+ Eval<Take<Index, List>>,
+ Eval<Drop<Add<Index, Size<1>>, List>>
>;
}
diff --git a/src/list/operation/drop.h b/src/list/operation/drop.h
index 651dad5..c61983b 100644
--- a/src/list/operation/drop.h
+++ b/src/list/operation/drop.h
@@ -10,10 +10,10 @@ template <
typename Current
>
struct Drop {
- typedef typename Drop<
+ typedef Eval<Drop<
Substract<Count, Size<1>>,
Tail<Current>
- >::type type;
+ >> type;
};
template <typename Current>
diff --git a/src/list/operation/higher/drop_while.h b/src/list/operation/higher/drop_while.h
index ad1553f..8ba2664 100644
--- a/src/list/operation/higher/drop_while.h
+++ b/src/list/operation/higher/drop_while.h
@@ -10,11 +10,11 @@ template <
typename Current
>
struct DropWhile {
- typedef typename If<
- Predicate<Head<Current>>::type::value,
- typename DropWhile<Predicate, Tail<Current>>::type,
+ typedef Eval<If<
+ Eval<Predicate<Head<Current>>>,
+ Eval<DropWhile<Predicate, Tail<Current>>>,
Current
- >::type type;
+ >> type;
};
template <
diff --git a/src/list/operation/higher/filter.h b/src/list/operation/higher/filter.h
index acc1422..3588400 100644
--- a/src/list/operation/higher/filter.h
+++ b/src/list/operation/higher/filter.h
@@ -17,13 +17,13 @@ class Filter {
typename Previous
>
using predicate_wrapper = If<
- Predicate<Current>::type::value,
- typename Cons<Current, Previous>::type,
+ Eval<Predicate<Current>>,
+ Eval<Cons<Current, Previous>>,
Previous
>;
public:
- typedef typename Fold<predicate_wrapper, void, List>::type type;
+ typedef Eval<Fold<predicate_wrapper, void, List>> type;
};
@@ -37,7 +37,7 @@ class Remove {
using predicate_negator = Not<Predicate<Element>>;
public:
- typedef typename Filter<predicate_negator, List>::type type;
+ typedef Eval<Filter<predicate_negator, List>> type;
};
diff --git a/src/list/operation/higher/find.h b/src/list/operation/higher/find.h
index bf9d04f..abc3199 100644
--- a/src/list/operation/higher/find.h
+++ b/src/list/operation/higher/find.h
@@ -11,11 +11,11 @@ template <
typename Current
>
struct Find {
- typedef typename If<
- Predicate<Head<Current>>::type::value,
+ typedef Eval<If<
+ Eval<Predicate<Head<Current>>>,
Head<Current>,
- typename Find<Predicate, Tail<Current>>::type
- >::type type;
+ Eval<Find<Predicate, Tail<Current>>>
+ >> type;
};
template <
diff --git a/src/list/operation/higher/fold.h b/src/list/operation/higher/fold.h
index 6ad4bd7..3ed0a42 100644
--- a/src/list/operation/higher/fold.h
+++ b/src/list/operation/higher/fold.h
@@ -9,10 +9,10 @@ template <
typename Current
>
struct Fold {
- typedef typename Function<
+ typedef Eval<Function<
Head<Current>,
- typename Fold<Function, Initial, Tail<Current>>::type
- >::type type;
+ Eval<Fold<Function, Initial, Tail<Current>>>
+ >> type;
};
template <
diff --git a/src/list/operation/higher/map.h b/src/list/operation/higher/map.h
index 9cb6524..ac214b7 100644
--- a/src/list/operation/higher/map.h
+++ b/src/list/operation/higher/map.h
@@ -16,12 +16,12 @@ class Map {
typename Previous
>
using function_wrapper = Cons<
- typename Function<Current>::type,
+ Eval<Function<Current>>,
Previous
>;
public:
- typedef typename Fold<function_wrapper, void, List>::type type;
+ typedef Eval<Fold<function_wrapper, void, List>> type;
};
diff --git a/src/list/operation/higher/partition.h b/src/list/operation/higher/partition.h
index aed0ea6..eedeb91 100644
--- a/src/list/operation/higher/partition.h
+++ b/src/list/operation/higher/partition.h
@@ -10,8 +10,8 @@ template <
typename Elements
>
using Partition = Cons<
- typename Filter<Predicate, Elements>::type,
- typename Remove<Predicate, Elements>::type
+ Eval<Filter<Predicate, Elements>>,
+ Eval<Remove<Predicate, Elements>>
>;
}
diff --git a/src/list/operation/higher/query.h b/src/list/operation/higher/query.h
index d2b8e76..1d00267 100644
--- a/src/list/operation/higher/query.h
+++ b/src/list/operation/higher/query.h
@@ -15,7 +15,7 @@ template <
using Any = Fold<
Or,
Boolean<false>,
- typename Map<Predicate, List>::type
+ Eval<Map<Predicate, List>>
>;
template <
@@ -25,7 +25,7 @@ template <
using All = Fold<
And,
Boolean<true>,
- typename Map<Predicate, List>::type
+ Eval<Map<Predicate, List>>
>;
template <
@@ -33,7 +33,7 @@ template <
typename List
>
using None = Not<
- typename Any<Predicate, List>::type
+ Eval<Any<Predicate, List>>
>;
template <
@@ -43,7 +43,7 @@ template <
using Count = Fold<
Add,
tav::Size<0>,
- typename Map<Predicate, List>::type
+ Eval<Map<Predicate, List>>
>;
}
diff --git a/src/list/operation/higher/sort.h b/src/list/operation/higher/sort.h
index 5a4009c..cf86e9b 100644
--- a/src/list/operation/higher/sort.h
+++ b/src/list/operation/higher/sort.h
@@ -14,25 +14,25 @@ template <
>
class Sort {
private:
- using index = Divide<typename Length<Sequence>::type, Size<2>>;
- using pivot = typename Nth<index, Sequence>::type;
+ using index = Divide<Eval<Length<Sequence>>, Size<2>>;
+ using pivot = Eval<Nth<index, Sequence>>;
- using partitions = typename Partition<
+ using partitions = Eval<Partition<
Apply<Comparator, pivot, _0>::template function,
- typename DeleteNth<index, Sequence>::type
- >::type;
+ Eval<DeleteNth<index, Sequence>>
+ >>;
- using lhs = typename Car<partitions>::type;
- using rhs = typename Cdr<partitions>::type;
+ using lhs = Eval<Car<partitions>>;
+ using rhs = Eval<Cdr<partitions>>;
public:
- typedef typename Concatenate<
- typename List<
- typename Sort<Comparator, lhs>::type,
- typename List<pivot>::type,
- typename Sort<Comparator, rhs>::type
- >::type
- >::type type;
+ typedef Eval<Concatenate<
+ Eval<List<
+ Eval<Sort<Comparator, lhs>>,
+ Eval<List<pivot>>,
+ Eval<Sort<Comparator, rhs>>
+ >>
+ >> type;
};
template <template<typename, typename> class Comparator>
diff --git a/src/list/operation/higher/take_while.h b/src/list/operation/higher/take_while.h
index d04dc2d..8e61c45 100644
--- a/src/list/operation/higher/take_while.h
+++ b/src/list/operation/higher/take_while.h
@@ -10,14 +10,14 @@ template <
typename Current
>
struct TakeWhile {
- typedef typename If<
- Predicate<Head<Current>>::type::value,
- typename Cons<
+ typedef Eval<If<
+ Eval<Predicate<Head<Current>>>,
+ Eval<Cons<
Head<Current>,
- typename TakeWhile<Predicate, Tail<Current>>::type
- >::type,
+ Eval<TakeWhile<Predicate, Tail<Current>>>
+ >>,
void
- >::type type;
+ >> type;
};
template <
diff --git a/src/list/operation/nth.h b/src/list/operation/nth.h
index 076add4..08e60cc 100644
--- a/src/list/operation/nth.h
+++ b/src/list/operation/nth.h
@@ -10,10 +10,10 @@ template <
typename Pair
>
struct Nth {
- typedef typename Nth<
+ typedef Eval<Nth<
Substract<Index, Size<1>>,
Tail<Pair>
- >::type type;
+ >> type;
};
template <typename Pair>
@@ -32,13 +32,13 @@ struct Nth<Size<0>, void> {
};
template <typename List>
-using First = typename Nth<Size<0>, List>::type;
+using First = Eval<Nth<Size<0>, List>>;
template <typename List>
-using Second = typename Nth<Size<1>, List>::type;
+using Second = Eval<Nth<Size<1>, List>>;
template <typename List>
-using Third = typename Nth<Size<2>, List>::type;
+using Third = Eval<Nth<Size<2>, List>>;
}
diff --git a/src/list/operation/reverse.h b/src/list/operation/reverse.h
index 83691f8..d4b2be9 100644
--- a/src/list/operation/reverse.h
+++ b/src/list/operation/reverse.h
@@ -6,22 +6,20 @@
namespace tav {
-template <typename List>
+template <typename Sequence>
class Reverse {
private:
template <
typename Current,
typename Previous
>
- struct reversed_append {
- typedef typename Append<
- Previous,
- typename Cons<Current, void>::type
- >::type type;
- };
+ using reversed_append = Append<
+ Previous,
+ Eval<List<Current>>
+ >;
public:
- typedef typename Fold<reversed_append, void, List>::type type;
+ typedef Eval<Fold<reversed_append, void, Sequence>> type;
};
diff --git a/src/list/operation/take.h b/src/list/operation/take.h
index c396c28..fdff123 100644
--- a/src/list/operation/take.h
+++ b/src/list/operation/take.h
@@ -10,13 +10,13 @@ template <
typename Current
>
struct Take {
- typedef typename Cons<
+ typedef Eval<Cons<
Head<Current>,
- typename Take<
+ Eval<Take<
Substract<Count, Size<1>>,
Tail<Current>
- >::type
- >::type type;
+ >>
+ >> type;
};
template <typename Current>