Louis Dionne
7cc729bd05
List: add the slice method
2014-08-25 12:33:48 -04:00
Louis Dionne
307d3d0ec8
Huge reorganization and refactoring.
...
- Split type class instances into separate files
- Instances provided automatically by a type class are actually MCDs
- Test each instance in a single file, not one file per method
- Refactor the operator system to fix the ADL-related bug.
2014-08-18 19:26:29 -04:00
Louis Dionne
7894be3e2f
Searchable: add the subset
method
2014-08-16 14:25:58 -04:00
Louis Dionne
f2de95a841
Use detail::injection
instead of a std::tuple
in the tests
2014-08-16 14:25:57 -04:00
Louis Dionne
ba5a74b81f
Record: workaround weird ICE in LLVM codegen after adding perfect forwarding
2014-08-16 14:25:52 -04:00
Louis Dionne
1d986e4c04
Refactor the unit tests and examples
...
In particular, merge some unit tests and examples to reduce compilation
times.
2014-08-10 15:42:03 -04:00
Louis Dionne
4c13c21f91
Add the IntegralDomain type class
2014-08-10 12:57:37 -04:00
Louis Dionne
cb9be38cf1
Add the Ring type class.
2014-08-09 09:45:33 -04:00
Louis Dionne
2b76377f91
Core: replace when_valid by when + is_valid
2014-08-07 22:38:54 -04:00
Louis Dionne
4df8c27cbb
Finer grained use of operators
2014-08-07 21:05:38 -04:00
Louis Dionne
fecf7309d1
Add the Group type class
2014-08-07 17:01:22 -04:00
Louis Dionne
b46db0bdc0
Add the Monoid type class
2014-08-07 16:51:49 -04:00
Louis Dionne
82bc4a38da
List: add span
, group
and group_by
2014-08-06 11:08:10 -04:00
Louis Dionne
2f16a364af
Comparable: add the comparing
helper function
2014-08-06 11:08:10 -04:00
Louis Dionne
64e160f9ab
Searchable: add the in
utility function
2014-08-06 08:38:45 -04:00
Louis Dionne
1d031b4556
Functional: add infix
and use it to implement on
2014-08-05 22:49:18 -04:00
Louis Dionne
b6cef58ca1
Core: add are
to make it prettier when there are many data types.
2014-08-05 19:52:44 -04:00
Louis Dionne
ae9a849e2f
README: make the overview narrower so we can see it all
2014-08-05 19:52:44 -04:00
Louis Dionne
da8135ccec
Foldable: flip the arguments of some methods
2014-08-05 19:52:44 -04:00
Louis Dionne
2900faec86
List: flip the order of arguments of some methods
2014-08-05 19:52:44 -04:00
Louis Dionne
b4cfc58e72
Searchable: flip the order of the arguments of the methods
2014-08-05 16:46:56 -04:00
Louis Dionne
7bd5afd95f
Ext: show all the includes in the examples, because some includes are tricky
2014-08-05 15:06:56 -04:00
Louis Dionne
393cf06fb5
Tutorial: add a section on side effects
2014-08-05 14:44:02 -04:00
Louis Dionne
a7b38d3fff
Range: add the range_c constructor
2014-08-05 14:44:02 -04:00
Louis Dionne
f992faa91e
Remove std::list adaptor; Iterable requires a Constant is_empty.
2014-08-05 12:14:40 -04:00
Louis Dionne
d132db0ebf
Use finer grained assertions acknowledging Constants
2014-08-05 10:37:54 -04:00
Louis Dionne
d4fde4f77a
Documentation: refactoring and improvements in the tutorial
2014-08-04 18:44:38 -04:00
Louis Dionne
c382d9fca1
Tutorial: improve the section on data types
2014-07-31 16:31:56 -04:00
Louis Dionne
c85db2c4d2
Tutorial: make examples compilable
2014-07-31 15:09:34 -04:00
Louis Dionne
e9dfdeb57b
Core: merge instantiates into is_a for the same functionality
2014-07-31 13:00:57 -04:00
Louis Dionne
b61dfc00a6
Core: document header structure and use when<>
in datatype<>
2014-07-31 11:41:42 -04:00
Louis Dionne
8c683c6e08
Adapt MPL IntegralConstants with Constant.
2014-07-30 19:00:06 -04:00
Louis Dionne
c6f0420145
Functional: pimp the documentation
2014-07-30 15:21:39 -04:00
Louis Dionne
8a8ff797ab
Split Core into subdirectories to reduce dependencies.
2014-07-30 11:15:26 -04:00
Louis Dionne
6c852e957e
Make Constant a type class
2014-07-30 08:55:07 -04:00
Louis Dionne
f66871ec2c
MPLVector: Document and instantiate List.
2014-07-29 15:44:45 -04:00
Louis Dionne
36edeacbc8
Maybe: refactor the documentation and add only_when
2014-07-29 10:09:06 -04:00
Louis Dionne
fda839dfb4
Show permutations in the overview.
2014-07-28 19:53:22 -04:00
Louis Dionne
412c52d9fc
README: Use a more representative Hello World
2014-07-28 19:44:30 -04:00
Louis Dionne
41d6b75bc2
Add the product Type class and make Pair a simple data type
2014-07-28 18:35:57 -04:00
Louis Dionne
aafd11ed82
Remove redundant examples introduced when refactoring the docs.
2014-07-27 16:57:38 -04:00
Louis Dionne
4dfdbba0c6
List: refactor documentation
2014-07-27 16:57:38 -04:00
Louis Dionne
fdc5f75d5e
Pair: refactor documentation
2014-07-27 16:57:38 -04:00
Louis Dionne
527fe09dda
Traversable: refactor documentation
2014-07-27 16:57:38 -04:00
Louis Dionne
308368291f
Searchable: refactor the documentation
2014-07-27 16:57:37 -04:00
Louis Dionne
47797a7f0d
Monad: refactor documentation
2014-07-27 16:57:37 -04:00
Louis Dionne
8e91303552
Logical: refactor documentation
2014-07-27 16:57:37 -04:00
Louis Dionne
14f890b4b2
Iterable: refactor docs and make FoldableInstance a detail of implementation
2014-07-27 16:57:36 -04:00
Louis Dionne
c37347943e
Functor: refactor documentation
2014-07-27 16:57:36 -04:00
Louis Dionne
184bf94382
Foldable: refactor the documentation
2014-07-27 16:57:36 -04:00
Louis Dionne
dab794edb1
Orderable: Refactor docs and add the ordering
utility
2014-07-27 16:57:36 -04:00
Louis Dionne
eab9434945
Comparable: refactor documentation
2014-07-27 16:11:59 -04:00
Louis Dionne
05d80cb123
Applicative: refactor documentation
2014-07-27 16:11:59 -04:00
Louis Dionne
fe03223998
README: add a quick hello world demo
2014-07-24 15:38:04 -04:00
Louis Dionne
1b4cfc9191
List: add the unzip
method
2014-07-24 14:16:09 -04:00
Louis Dionne
0fb8990a13
List: add the unfoldr
and unfoldl
methods
2014-07-24 13:24:45 -04:00
Louis Dionne
c42aeba92c
Monad: add the tap
method
2014-07-24 10:15:06 -04:00
Louis Dionne
a0133f546e
Monad: replace >> by |
2014-07-24 09:43:16 -04:00
Louis Dionne
7d5243a312
Type: fix bug in construction and force explicit use of intializer_list
2014-07-24 08:48:38 -04:00
Louis Dionne
310b44666d
Comparable: make objects of different data types compare uneual by default
2014-07-23 20:11:00 -04:00
Louis Dionne
786816b391
Tutorial: Add organization section
2014-07-23 11:39:12 -04:00
Louis Dionne
aacfbfebde
Tutorial: write the preface, introduction and quick start
2014-07-22 13:49:15 -04:00
Louis Dionne
aba2bae382
Record: Fix ordering issues by using a list of pairs instead of a map
2014-07-21 15:47:12 -04:00
Louis Dionne
3ead270cc0
Add the Record type class to adapt user defined types.
2014-07-21 13:53:27 -04:00
Louis Dionne
6c9823e176
Add the Constant data type.
2014-07-21 11:58:23 -04:00
Louis Dionne
6d150cf5ee
List: add scanr, scanl, scanr1 and scanl1
2014-07-20 14:25:10 -04:00
Louis Dionne
3ccf6f4d62
Searchable: rename find_key to lookup
2014-07-19 18:58:14 -04:00
Louis Dionne
5a00d66ad6
Add the Set data type.
2014-07-19 18:24:39 -04:00
Louis Dionne
97386dfb59
Add the Map data type.
2014-07-19 17:17:14 -04:00
Louis Dionne
888e84f4e5
Foldable: Remove lazy_foldr and lazy_foldl
2014-07-19 13:29:41 -04:00
Louis Dionne
aaea302ea9
Maybe: instantiate Searchable
2014-07-19 11:44:34 -04:00
Louis Dionne
74092b4bc9
Add the Searchable type class.
...
Remove any, all, none, find, elem and the *_of variants from Foldable
and move them into Searchable.
2014-07-19 11:44:34 -04:00
Louis Dionne
7e8f109d7f
Modularize List and add a minimal instance
2014-07-16 16:26:23 -04:00
Louis Dionne
408a5c7db5
Modularize Pair
2014-07-16 16:26:23 -04:00
Louis Dionne
b3f9a3d09a
Modularize Logical and remove nullary and_/or_
2014-07-16 16:26:23 -04:00
Louis Dionne
b0b7b09736
Modularize Iterable
2014-07-16 16:26:23 -04:00
Louis Dionne
20814674c0
Modularize Monad
2014-07-16 16:26:22 -04:00
Louis Dionne
c8e8d88753
Modularize Comparable
2014-07-16 16:26:22 -04:00
Louis Dionne
a316800bea
convert.cpp example: Add missing Comparable mcd
2014-07-15 11:33:49 -04:00
Louis Dionne
b19c801958
Lazy: refactor and make lazy
more intuitive.
2014-07-14 20:45:14 -04:00
Louis Dionne
41c80e1d44
Applicative: make ap variadic.
2014-07-14 20:45:14 -04:00
Louis Dionne
de2959db74
Monad: add >> operator as an equivalent to bind.
2014-07-14 20:45:06 -04:00
Louis Dionne
40a3ef71c0
Add the Traversable type class.
2014-07-14 10:40:45 -04:00
Louis Dionne
a5cab82de8
Core: make default_instance dependent on the type class arguments
2014-07-13 22:38:52 -04:00
Louis Dionne
49d9b40fc1
Core: Allow parametric data types and predicated instances to cohabit.
2014-07-13 22:06:49 -04:00
Louis Dionne
d65d47ba28
Core: use BOOST_HANA_TYPECLASS macro to create type classes.
2014-07-13 19:49:24 -04:00
Louis Dionne
3248004409
Move the Lazy data type from the sandbox to the library.
2014-07-12 18:11:27 -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
7c6d9dd5bc
Iterable: add the for_each method
2014-07-07 15:45:31 -04:00
Louis Dionne
5a2de2073e
Reorganize and rename the adapted/ folder.
2014-07-07 12:42:20 -04:00
Louis Dionne
9f94924134
Plug the benchmarks with CMake.
2014-07-06 14:59:59 -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
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
ae8c12ce17
Remove useless include.
2014-07-01 10:58:01 -04:00
Louis Dionne
96a2bb0a7f
Core: allow instances to be explicitly disabled
2014-07-01 10:51:42 -04:00
Louis Dionne
85877825f8
Replace defaults for Comparable by a smarter predicated instance.
2014-06-30 14:22:42 -04:00
Louis Dionne
c255a2f418
Integral: instantiate Orderable
2014-06-29 15:57:33 -04:00
Louis Dionne
fb75a6da25
Fix TODO in example/core/typeclass
2014-06-26 13:48:28 -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
65796aeb6e
CMake: Automatically discover unit tests and examples.
2014-06-25 23:36:14 -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
d4b1089d1c
Explicit cast Range to List in example
2014-06-23 17:18:12 -04:00
Louis Dionne
ea37adf66b
Core: rethink type classes
2014-06-23 15:37:29 -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
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
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
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
09b2fff78e
Make StdTuple a Monad.
2014-06-19 16:13:18 -04:00
Louis Dionne
c7a7aa4c89
Core: add is_a and instantiates
2014-06-19 12:19:51 -04:00
Louis Dionne
7e32f59837
core: Add conversion between data types
2014-06-18 20:23:53 -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
42bb091e71
Foldable: reduce the mcd, steal find from Iterable and improve tests
2014-06-18 13:37:34 -04:00
Louis Dionne
874c28eade
Functional: refactor to reduce coupling
2014-06-18 10:06:19 -04:00
Louis Dionne
ee9681f7aa
Minor ungrouped improvements and bug fixes.
2014-06-16 08:17:08 -04:00
Louis Dionne
10a050c854
Logical: add conservative eval_if
2014-06-15 15:13:57 -04:00
Louis Dionne
8e1d12171a
Make Logical a type class
2014-06-14 12:49:06 -04:00
Louis Dionne
77c925d239
Add examples in Foldable and add the sizeof_ method
2014-06-13 22:16:12 -04:00
Louis Dionne
28e54f6ee9
List: reimplement partition, document sort_by and add permutations
2014-06-13 20:24:14 -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
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
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
e9267aecc8
Type: documentation and example for untype
2014-06-09 18:22:31 -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
12058791c7
Documentation: improvements in Integral
2014-06-04 22:04:55 -04:00
Louis Dionne
a902435c76
CMake: put enable_testing() in the top level CMakeLists
2014-06-04 21:24:31 -04:00
Louis Dionne
8fcf0c21dd
Examples: use sstream instead of lexical_cast in folds (reduce compile-time)
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
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
b090b57ee4
Use CTest for examples as well as unit tests.
2014-06-02 21:52:27 -04:00
Louis Dionne
1cebe9821d
Document the Functional module.
2014-06-02 21:49:35 -04:00
Louis Dionne
205f0ffb51
Use placeholders where it makes sense in the examples.
2014-05-26 10:13:29 -04:00
Louis Dionne
ec7831184f
Add more MPL examples.
2014-05-25 23:42:00 -04:00
Louis Dionne
51848b0b71
Add more Fusion examples.
2014-05-25 21:02:02 -04:00
Louis Dionne
003b3ae4b9
Add count to Foldable.
2014-05-25 19:28:00 -04:00
Louis Dionne
f1694b3f4c
Add find and drop_until to Iterable.
2014-05-25 18:45:10 -04:00
Louis Dionne
09cee4f2fa
Add examples from Boost.Fusion.
2014-05-25 17:23:48 -04:00
Louis Dionne
bea47fa4d2
Add examples.
2014-05-24 13:28:48 -04:00