Commit Graph

1208 Commits

Author SHA1 Message Date
Louis Dionne
41eefb2d29 Remove meaningless or redundant (implied) todos. 2014-07-07 21:33:07 -04:00
Louis Dionne
48bb45394f Type: add a not-too-dirty way to optimize metafunction classes. 2014-07-07 21:33:06 -04:00
Louis Dionne
573c863c49 Type: make metafunction, metafunction_class and template_ valid metafunction classes. 2014-07-07 20:05:11 -04:00
Louis Dionne
eecdf93453 Adapt non-associative ForwardSequences from Boost.Fusion. 2014-07-07 18:17:36 -04:00
Louis Dionne
7c6d9dd5bc Iterable: add the for_each method 2014-07-07 15:45:31 -04:00
Louis Dionne
0db5c33548 Add laws for Comparable. 2014-07-07 13:56:51 -04:00
Louis Dionne
8db3203da7 Do not include ext/ in the master header.
The reason is that including the master header would then require the
user to have installed all the libraries for which we provide adaptors,
which is unreasonable.
2014-07-07 12:42:20 -04:00
Louis Dionne
5a2de2073e Reorganize and rename the adapted/ folder. 2014-07-07 12:42:20 -04:00
Louis Dionne
7cb6678d7a Adapt mpl::vector. 2014-07-07 10:20:13 -04:00
Louis Dionne
55a4964434 Adapt mpl::list. 2014-07-07 10:06:17 -04:00
Louis Dionne
b89821bed4 Sandbox: Add a Lazy datatype which is a Monad. 2014-07-02 15:43:32 -04:00
Louis Dionne
ad60989660 Sandbox: add a basic Set data structure 2014-07-02 13:41:22 -04:00
Louis Dionne
ffbbfc3528 Sandbox: rename Map to HashMap and create a naive Map 2014-07-02 13:10:56 -04:00
Louis Dionne
f0e8c210ab Sandbox: add thoughts about MonadZero, Pattern and Boolean 2014-07-02 11:50:34 -04:00
Louis Dionne
5efa23003f Rename join to flatten. 2014-07-01 22:04:56 -04:00
Louis Dionne
faf609157a Remove circular dependencies. 2014-07-01 20:41:04 -04:00
Louis Dionne
ddc0587689 Iterable: remove comparison between arbitrary Iterables 2014-07-01 18:01:42 -04:00
Louis Dionne
70a6c913b7 Type: refactor the interface 2014-07-01 17:32:32 -04:00
Louis Dionne
39c9b1b8e2 Add the bool.hpp header. 2014-07-01 16:45:12 -04:00
Louis Dionne
a2ec0ee117 Core: improve instantiates's implementation and decapitalize Core module 2014-07-01 16:22:01 -04:00
Louis Dionne
96a2bb0a7f Core: allow instances to be explicitly disabled 2014-07-01 10:51:42 -04:00
Louis Dionne
6a984f3d52 Integral: Remove redundant operators 2014-06-30 16:21:08 -04:00
Louis Dionne
b845aa71b8 Orderable: add a default instance 2014-06-30 16:21:08 -04:00
Louis Dionne
13ba57bd86 Logical: remove obsolete workaround 2014-06-30 15:03:01 -04:00
Louis Dionne
6c1eb8b1f8 Explicitly convert Integrals to their underlying type in constexpr contexts. 2014-06-30 15:02:06 -04:00
Louis Dionne
85877825f8 Replace defaults for Comparable by a smarter predicated instance. 2014-06-30 14:22:42 -04:00
Louis Dionne
af30809dbd Use code instead of Latex in Comparable laws. 2014-06-30 10:38:21 -04:00
Louis Dionne
1ab0174907 Use named operators consistently. 2014-06-30 10:17:22 -04:00
Louis Dionne
c255a2f418 Integral: instantiate Orderable 2014-06-29 15:57:33 -04:00
Louis Dionne
f2a063f4a1 Type: remove lambdas to workaround clang bugs. 2014-06-29 15:26:51 -04:00
Louis Dionne
f6d12dcbce Add note about unit testing List instances. 2014-06-26 15:42:23 -04:00
Louis Dionne
8fcad90c09 Add the Orderable type class. 2014-06-26 15:17:09 -04:00
Louis Dionne
1cc9387998 Add detail::wrap. 2014-06-26 12:51:26 -04:00
Louis Dionne
de4864134e StdArray: instantiate List 2014-06-26 12:34:37 -04:00
Louis Dionne
9ce785234c List: instantiate Comparable 2014-06-26 12:15:34 -04:00
Louis Dionne
71be3a9949 Remove the foldable_from_iterable horror. 2014-06-26 11:40:55 -04:00
Louis Dionne
d5e215d672 Documentation: refactor and regenerate 2014-06-26 11:23:00 -04:00
Louis Dionne
44aa641599 List: remove list_t and list_c 2014-06-26 11:01:44 -04:00
Louis Dionne
08de7a9e27 Promote List to a type class. 2014-06-26 01:29:05 -04:00
Louis Dionne
541ad8b341 Maybe: instantiate Foldable 2014-06-26 01:12:37 -04:00
Louis Dionne
379f30d981 Core: fix problems with typeclass specialization 2014-06-25 23:55:29 -04:00
Louis Dionne
52eead977e Adapt std::pair and instantiate Pair with it. 2014-06-24 21:33:08 -04:00
Louis Dionne
16d4ea0930 Add the Pair type class and data type. 2014-06-24 21:28:20 -04:00
Louis Dionne
1a41064f04 Functor: add fill 2014-06-24 13:38:54 -04:00
Louis Dionne
5fbdf86311 Iterable: use eval_if instead of if_ in ComparableInstance 2014-06-23 17:03:06 -04:00
Louis Dionne
ea37adf66b Core: rethink type classes 2014-06-23 15:37:29 -04:00
Louis Dionne
99748a3566 Functor: fix typos 2014-06-22 13:17:35 -04:00
Louis Dionne
5ba2f9abb9 Applicative: rename unit to lift 2014-06-22 10:51:53 -04:00
Louis Dionne
159dbaecf6 Type: improve support for different metafunctions and rename lift 2014-06-22 10:31:10 -04:00
Louis Dionne
70f0e86fa7 Add missing Applicative include to master header. 2014-06-22 01:16:10 -04:00
Louis Dionne
fa98685327 Move unit from Monad to Applicative and remove pure. 2014-06-21 19:29:28 -04:00
Louis Dionne
7440fd0c5e Applicative: add Maybe and StdTuple instances 2014-06-21 18:56:33 -04:00
Louis Dionne
585c0b8e76 Add the Applicative type class. 2014-06-21 18:16:56 -04:00
Louis Dionne
09fc489963 sandbox: add an implementation of repeat 2014-06-21 15:10:06 -04:00
Louis Dionne
dfed9d39e7 Type: add lift and remove trait.hpp header 2014-06-21 14:09:08 -04:00
Louis Dionne
7b7bbd2290 Logical: add not_ 2014-06-21 12:39:19 -04:00
Louis Dionne
13e3bf02f6 Core: fix bug with datatype and inheritance 2014-06-21 11:28:15 -04:00
Louis Dionne
56f74519fe Functor: add replace and adjust 2014-06-20 22:54:46 -04:00
Louis Dionne
0a09ddaa97 Foldable: add the elem method 2014-06-20 21:35:58 -04:00
Louis Dionne
2c1bb3a607 sandbox: add a naive and incomplete map implementation 2014-06-20 20:53:33 -04:00
Louis Dionne
3c31001786 Range: remove impossible todo item 2014-06-20 16:55:57 -04:00
Louis Dionne
3f8198601c Adapt std::list. 2014-06-20 15:02:50 -04:00
Louis Dionne
92d28ac0b0 Adapted: Fix include guards 2014-06-20 14:30:02 -04:00
Louis Dionne
09b2fff78e Make StdTuple a Monad. 2014-06-19 16:13:18 -04:00
Louis Dionne
56a8a50de2 sandbox: add lazy 2014-06-19 15:33:00 -04:00
Louis Dionne
c8ef9d4d47 Core: do not include type_traits 2014-06-19 12:34:07 -04:00
Louis Dionne
c7a7aa4c89 Core: add is_a and instantiates 2014-06-19 12:19:51 -04:00
Louis Dionne
6cfe3ac1b9 Functional: add function call and array subscript to placeholders 2014-06-19 11:56:24 -04:00
Louis Dionne
7e32f59837 core: Add conversion between data types 2014-06-18 20:23:53 -04:00
Louis Dionne
9e06246a67 Comparable: add unit tests for the mcds 2014-06-18 16:51:48 -04:00
Louis Dionne
848ee2a978 Maybe: minor refactoring 2014-06-18 16:35:55 -04:00
Louis Dionne
d6dbd5aa37 Core: slightly improve the performance of datatype<> 2014-06-18 16:28:02 -04:00
Louis Dionne
4043adb494 Core: document and don't require core.hpp for instance and defaults 2014-06-18 16:13:54 -04:00
Louis Dionne
2b65b95cd5 Functor: documentation style revamp 2014-06-18 14:47:15 -04:00
Louis Dionne
cd37845ce2 Range: convert Integrals to their underlying type explicitly 2014-06-18 14:46:45 -04:00
Louis Dionne
42bb091e71 Foldable: reduce the mcd, steal find from Iterable and improve tests 2014-06-18 13:37:34 -04:00
Louis Dionne
390cc968a3 Integral: make integral<T, n> equivalent to true_ for n >= 1 in a boolean context 2014-06-18 12:22:21 -04:00
Louis Dionne
061ab74465 Traits: convert Integrals to their underlying integer explicitly 2014-06-18 10:51:41 -04:00
Louis Dionne
f69a799886 List: refactor and use eval_if more consistently 2014-06-18 10:47:37 -04:00
Louis Dionne
db9a37c6e4 Monad: test the minimal complete definitions 2014-06-18 10:36:55 -04:00
Louis Dionne
b185b652d7 Type: minor refactoring 2014-06-18 10:24:20 -04:00
Louis Dionne
9498f34c3d Use c-style variadics in at_index::overload_resolution to reduce instantiations. 2014-06-18 10:06:20 -04:00
Louis Dionne
874c28eade Functional: refactor to reduce coupling 2014-06-18 10:06:19 -04:00
Louis Dionne
fd17244c4c Core: document bug with data type retrieval 2014-06-16 08:48:33 -04:00
Louis Dionne
d41e17b12b Type: make type<> more compiler-friendly 2014-06-16 08:45:27 -04:00
Louis Dionne
ee9681f7aa Minor ungrouped improvements and bug fixes. 2014-06-16 08:17:08 -04:00
Louis Dionne
8124e7e097 Iterable: use eval_if in some places 2014-06-15 15:32:30 -04:00
Louis Dionne
10a050c854 Logical: add conservative eval_if 2014-06-15 15:13:57 -04:00
Louis Dionne
90c9e64755 List: allow 0 arguments in zip_with and sort methods in (mostly) alphabetical order 2014-06-15 11:00:33 -04:00
Louis Dionne
56baf71826 sandbox: remove TODOs in array 2014-06-15 10:18:14 -04:00
Louis Dionne
8e1d12171a Make Logical a type class 2014-06-14 12:49:06 -04:00
Louis Dionne
92342e0402 Integral: harmonize with std::integral_constant 2014-06-13 23:30:04 -04:00
Louis Dionne
77c925d239 Add examples in Foldable and add the sizeof_ method 2014-06-13 22:16:12 -04:00
Louis Dionne
5019effa3f List: "partial ordering" -> "strict weak ordering" in sort 2014-06-13 20:26:09 -04:00
Louis Dionne
28e54f6ee9 List: reimplement partition, document sort_by and add permutations 2014-06-13 20:24:14 -04:00
Louis Dionne
2d0d4f42df Use internal enable_if to avoid including type_traits 2014-06-13 14:20:19 -04:00
Louis Dionne
4b60dfa6d0 Iterable: document provided instances 2014-06-13 14:07:56 -04:00
Louis Dionne
6c2534216c functional: add an example for a use case of always 2014-06-13 13:20:03 -04:00
Louis Dionne
c1d9ff5529 doc: document instances 2014-06-12 20:36:21 -04:00
Louis Dionne
488ebc24f8 Iterable: test comparison with heterogeneous data types 2014-06-12 16:51:45 -04:00
Louis Dionne
d951c3b594 core: document and test the type class instantiation system 2014-06-12 13:33:38 -04:00
Louis Dionne
e93f1eb4e0 Range: make the implementation less naive 2014-06-12 13:33:38 -04:00
Louis Dionne
48ec7b231e Foldable: add examples for some methods 2014-06-12 13:33:38 -04:00
Louis Dionne
e943411fd6 Remove Doxygen warnings. 2014-06-12 09:38:59 -04:00
Louis Dionne
ed9d70d8bf Remove redundant _template_ keyword. 2014-06-12 09:02:02 -04:00
Louis Dionne
beca8ade95 Iterable: use the new dispatching system 2014-06-12 09:00:11 -04:00
Louis Dionne
60a1741016 Use the new dispatching system with Monad. 2014-06-12 07:06:18 -04:00
Louis Dionne
ec10170b57 Use the new dispatching system with Foldable and Functor. 2014-06-12 07:02:24 -04:00
Louis Dionne
9b1cdd81b9 Comparable: update the dispatching system 2014-06-11 16:43:10 -04:00
Louis Dionne
1d81e02944 Fix a bug with c-style variadics in at_index and improve arg<> 2014-06-10 15:12:49 -04:00
Louis Dionne
809101956b Type: add construction capabilities 2014-06-09 18:22:33 -04:00
Louis Dionne
d572e3b094 functional: consider making compose variadic 2014-06-09 18:22:33 -04:00
Louis Dionne
e9267aecc8 Type: documentation and example for untype 2014-06-09 18:22:31 -04:00
Louis Dionne
293b066ea4 TypeList: fix the ADL-related bug 2014-06-09 13:19:20 -04:00
Louis Dionne
ee6c805ca8 Type: decouple library from its internal representation 2014-06-09 10:39:05 -04:00
Louis Dionne
2567066828 Type: documentation and decoupling 2014-06-08 16:41:52 -04:00
Louis Dionne
e376b606e1 Monad: documentation 2014-06-08 09:05:17 -04:00
Louis Dionne
2f88b2d40b range: documentation and type decoupling 2014-06-08 09:03:41 -04:00
Louis Dionne
71a70764e8 maybe: documentation and API improvements 2014-06-07 17:32:34 -04:00
Louis Dionne
d3883f98f6 List: remove done "todo" item 2014-06-05 23:38:34 -04:00
Louis Dionne
415b5c6906 List: fix a bug in head; don't use c-style variadics 2014-06-05 22:55:19 -04:00
Louis Dionne
d4d82639f5 List: documentation and examples 2014-06-05 22:47:39 -04:00
Louis Dionne
aea42f9d18 Integral: Fix a bug with negative literals. 2014-06-05 22:45:55 -04:00
Louis Dionne
b694f5e465 Integral: Strip cv-qualifiers of the integral type. 2014-06-05 21:17:06 -04:00
Louis Dionne
80d115e017 Sandbox: add a linked list, std::array and std::string 2014-06-05 16:24:14 -04:00
Louis Dionne
e86b9d3f4a Sandbox: add a possible infix operator implementation 2014-06-05 03:34:12 -04:00
Louis Dionne
8cd1863896 Move length from Iterable to Foldable. 2014-06-04 22:19:42 -04:00
Louis Dionne
12058791c7 Documentation: improvements in Integral 2014-06-04 22:04:55 -04:00
Louis Dionne
61f0770b44 Integral: refactoring, documentation and decoupling 2014-06-04 21:24:31 -04:00
Louis Dionne
5b4d569962 Type: Add decltype_ and remove coupling. 2014-06-04 21:24:19 -04:00
Louis Dionne
ac30caf7dc Comparable: improve documentation 2014-06-04 15:35:46 -04:00
Louis Dionne
50ebbfffc3 Documentation: move a couple of todos to the Doxygen doc 2014-06-04 14:15:57 -04:00
Louis Dionne
99a6e58487 Functional: Add note about infix operators. 2014-06-04 12:26:41 -04:00
Louis Dionne
a1ab4fab6b Functional: add fbind 2014-06-04 11:54:09 -04:00
Louis Dionne
178b25476d Functional: add arg<n> 2014-06-04 11:29:08 -04:00
Louis Dionne
806981bbcf Functional: remove argwise, add on and lockstep 2014-06-04 11:29:00 -04:00
Louis Dionne
c0b7a91e31 Move any, all and none to Foldable. 2014-06-03 12:28:05 -04:00
Louis Dionne
91689fe4f0 Make the header comment and license uniform. 2014-06-03 11:46:24 -04:00
Louis Dionne
4b61774472 Add lazy_foldr to Foldable. 2014-06-03 11:38:54 -04:00
Louis Dionne
ce602dd4b4 Document a couple more components. 2014-06-02 21:52:26 -04:00
Louis Dionne
6215e82a01 Improve type traits and partially document Integral. 2014-06-02 21:49:36 -04:00
Louis Dionne
49cbdbdd6e Document the Core module. 2014-06-02 21:49:36 -04:00
Louis Dionne
1cebe9821d Document the Functional module. 2014-06-02 21:49:35 -04:00
Louis Dionne
b0ebffce2f Check Monad laws. 2014-06-01 12:18:51 -04:00
Louis Dionne
e77dab7c55 Generalize curry. 2014-06-01 10:03:07 -04:00
Louis Dionne
7b70a24d2b Add user-defined literal for integral constants. 2014-05-31 15:36:02 -04:00
Louis Dionne
cec5d4edf8 Add unpack and remove Functor from Range. 2014-05-31 14:55:11 -04:00
Louis Dionne
7562f8cecf Add argwise to functional. 2014-05-31 14:41:34 -04:00
Louis Dionne
418b8941ad Test Functor laws and modify Type's fmap. 2014-05-31 10:40:21 -04:00
Louis Dionne
decb1a4d8c Add curry<n> to functional. 2014-05-27 15:46:52 -04:00
Louis Dionne
3d9480855e Make Typelist a transparent optimization. 2014-05-27 15:07:01 -04:00
Louis Dionne
3bb00967ef Make Maybe a Monad. 2014-05-27 14:12:11 -04:00
Louis Dionne
9e74d48e3c Define operator== and operator!= for Comparables. 2014-05-27 13:36:54 -04:00
Louis Dionne
09274a9ea3 Make List a Monad. 2014-05-27 11:12:05 -04:00
Louis Dionne
5f616bb4f5 Add the Monad typeclass and make Type a Monad. 2014-05-27 11:01:20 -04:00
Louis Dionne
49672fd986 Introduce datatypes for dispatching. 2014-05-27 10:52:53 -04:00
Louis Dionne
eda7ea303a Add a more efficient at_index algorithm. 2014-05-26 14:21:29 -04:00
Louis Dionne
d85eb7ccb2 Add init to List and implement length better. 2014-05-26 12:32:38 -04:00
Louis Dionne
6086633003 Add sort and partition. 2014-05-26 11:27:05 -04:00
Louis Dionne
12273221e1 Add placeholders in functional/. 2014-05-26 10:07:27 -04:00
Louis Dionne
003b3ae4b9 Add count to Foldable. 2014-05-25 19:28:00 -04:00
Louis Dionne
c611dcfd73 Allow runtime bool conditions in if_. 2014-05-25 19:24:06 -04:00
Louis Dionne
f1694b3f4c Add find and drop_until to Iterable. 2014-05-25 18:45:10 -04:00
Louis Dionne
93f11124a7 Add the Maybe datatype. 2014-05-25 18:36:43 -04:00
Louis Dionne
24b907db66 Add drop_while to Iterable. 2014-05-25 17:33:41 -04:00
Louis Dionne
080fe25e2b Reduce the number of instantiated variable templates in list_t. 2014-05-25 11:20:04 -04:00
Louis Dionne
d2f725f6fe Add Typelist; an optimized List for types. 2014-05-25 11:06:18 -04:00
Louis Dionne
316f6a14ec Optimize foldl for lifted computations. 2014-05-25 09:51:41 -04:00
Louis Dionne
05593b652c Redefine lift as an equivalence of categories.
This allows us to mechanically translate most type traits, which is
a good hint that we've found a way to merge type computation with
value computation. The problematic type traits will be tackled later.
2014-05-24 19:06:41 -04:00
Louis Dionne
5d57f6808d Use homemade integer_sequence in Range. 2014-05-24 15:41:55 -04:00
Louis Dionne
fd567bd8b1 Add homemade integer_sequence.
<utility> is way too large to include just for that.
2014-05-24 15:41:46 -04:00
Louis Dionne
88f59cf114 Move std_* to adapted/. 2014-05-24 13:28:48 -04:00
Louis Dionne
d1133c917b Split type and traits into two headers. 2014-05-24 12:39:12 -04:00
Louis Dionne
b9e8bf180d Add left_folds::variadic_unrolled. 2014-05-23 16:00:40 -04:00
Louis Dionne
d59b31d184 Use simpler recursion. 2014-05-23 15:28:05 -04:00
Louis Dionne
9d88d63133 Put decltype(lift<f>) into detail namespace. 2014-05-22 12:46:16 -04:00
Louis Dionne
60f524dba4 Add default behavior for equal and not_equal. 2014-05-21 19:22:22 -04:00
Louis Dionne
c0e005672e Adapt std::integer_sequence. 2014-05-21 19:22:01 -04:00
Louis Dionne
54a61c7cbe Remove dependency on cstddef in integral.hpp 2014-05-21 18:58:22 -04:00
Louis Dionne
46eacef345 Implement details with if_ instead of pattern matching. 2014-05-21 18:55:14 -04:00
Louis Dionne
6c87bb8d93 Adapt std::tuple. 2014-05-21 18:37:56 -04:00
Louis Dionne
8a87ec288a Implement List with lambdas. 2014-05-21 18:12:09 -04:00
Louis Dionne
2b890a71f3 Use the y combinator in take_while. 2014-05-21 16:32:12 -04:00
Louis Dionne
0032d4bedb Add the fixpoint combinator. 2014-05-21 16:32:12 -04:00
Louis Dionne
b7440c5190 Use constexpr lambdas whenever possible. Wow. 2014-05-20 18:29:38 -04:00
Louis Dionne
f168f94b43 Use if_ whenever possible in Iterable. 2014-05-20 17:23:04 -04:00
Louis Dionne
20ae6e927c Add partial to functional/. 2014-05-20 16:48:47 -04:00
Louis Dionne
43e5a4e943 Split unit tests for List. 2014-05-20 16:26:59 -04:00
Louis Dionne
b66c0e8c14 Add list_t. 2014-05-20 13:50:44 -04:00
Louis Dionne
a3036c2bc4 Add id, compose, always and flip. 2014-05-19 17:16:31 -04:00
Louis Dionne
e8f1a71671 Add more functions to List. 2014-05-19 16:39:53 -04:00
Louis Dionne
7d4b1108ab Add sum and product. 2014-05-19 15:38:57 -04:00
Louis Dionne
0fb1d96522 Adapt std::array. 2014-05-19 13:01:01 -04:00
Louis Dionne
8c7cdf7e02 Add functional utilities. 2014-05-19 12:15:44 -04:00
Louis Dionne
1fac38b7bc Add any, all, none and {any,all,none}_of. 2014-05-18 20:27:58 -04:00
Louis Dionne
e511cff396 Add logical operations. 2014-05-18 18:21:33 -04:00
Louis Dionne
d6819d4dc6 Add the Comparable type class. 2014-05-18 17:57:01 -04:00
Louis Dionne
033770cc42 Add zip_with to List and improve Foldable. 2014-05-18 15:26:35 -04:00
Louis Dionne
cb06f221cf Fix minor bug in BOOST_HANA_STATIC_ASSERT. 2014-05-18 15:20:42 -04:00
Louis Dionne
02b62cb8e7 Add if_. 2014-05-17 23:53:24 -04:00
Louis Dionne
ebe7b15a54 Add operators to Integral. 2014-05-17 21:00:05 -04:00
Louis Dionne
60add46fb4 Add drop to Iterable. 2014-05-17 20:46:25 -04:00
Louis Dionne
44138a1a53 Add type traits to Type. 2014-05-17 18:31:30 -06:00
Louis Dionne
49a15742a5 Add default operations to Iterable. 2014-05-16 08:46:05 -06:00
Louis Dionne
edb09990fc Add hana::Type. 2014-05-16 08:26:56 -06:00
Louis Dionne
6305321da3 Add Foldable. 2014-05-16 08:17:24 -06:00
Louis Dionne
61f73d4687 Add Range and List. 2014-05-16 07:56:09 -06:00
Louis Dionne
d732f5511b Add hana::Integral. 2014-05-15 16:52:55 -06:00