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