Commit Graph

557 Commits

Author SHA1 Message Date
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