Louis Dionne
38e02e9f53
[Sequence] Rename scan{l,r,l1,r1} similarly to folds
2015-03-31 17:55:27 -04:00
Louis Dionne
59d7e36726
[Sequence] Rename unfolds and flip their parameters
2015-03-30 18:17:42 -04:00
Louis Dionne
2c86ba2390
[Foldable] Rename the different fold variants
...
- Rename fold{l,r,l1,r1} to fold.{right,left} with overloads.
- Rename foldlM/foldrM to monadic_fold.{left,right}
- Add no-state variants of the monadic folds
- Improve the fold's documentation
- Deprecate the previous folds; they'll be removed soon
Fixes #18 .
2015-03-30 17:29:37 -04:00
Louis Dionne
a98d32cae1
[Maybe] *just(x) is now equivalent to from_just
2015-03-29 10:39:04 -04:00
Louis Dionne
637c5270ab
[Functional] Add hana::capture
2015-03-28 22:22:13 -04:00
Louis Dionne
2ecedc140c
[Functional] Add the iterate
combinator
2015-03-25 12:26:04 -04:00
Louis Dionne
afa9171eec
[Foldable] Add fold and reverse_fold aliases
2015-03-22 17:18:26 -04:00
Louis Dionne
2bd2b1239c
Fix bugs with copy constructors in almost all the containers
2015-03-22 12:15:32 -04:00
Louis Dionne
5211da5a5d
[Logical/Lazy] Tie eval_if
and eval
together, and update the docs
...
- Improve the documentation and tests of Lazy
- Add missing `operator!` to Logical's documentation
- In `eval_if`, evaluate branches with `eval` for more flexibility
- Use `lazy` instead of ugly workarounds in Sequence and Iterable
2015-03-22 10:58:21 -04:00
Louis Dionne
519b4cfb82
[Examples] Make the indexed_sort more generic
2015-03-22 10:58:21 -04:00
Louis Dionne
317724ac8c
[Example] Add an example of sorting types but keeping the initial indices
2015-03-20 14:30:17 -04:00
Louis Dionne
466bb3c1ad
Add the Comonad concept and refactor Lazy
2015-03-20 11:55:32 -04:00
Louis Dionne
2d1edb14ff
[CMake] Disable some failing Fusion unit tests
2015-03-20 00:44:23 -04:00
Louis Dionne
dbde9d84c4
[Mini-MPL] Make find/find_if SFINAE-friendly
2015-03-15 12:54:35 -04:00
Louis Dionne
bc0212c712
[Example] Move the mini-MPL to example/misc
2015-03-15 00:18:31 -04:00
Louis Dionne
463040d318
[Searchable] Rename find
to find_if
and lookup
to find
2015-03-15 00:18:31 -04:00
Louis Dionne
b69f29ac7a
[Functor] Rename replace
to replace_if
, and add replace
2015-03-15 00:18:30 -04:00
Louis Dionne
bcf573ccc6
[Functor] Rename adjust
to adjust_if
and add adjust
2015-03-15 00:18:30 -04:00
Louis Dionne
cde54c9ec0
[Foldable] Rename count
to count_if
and add count
2015-03-15 00:18:30 -04:00
Louis Dionne
112e34e8a1
[Foldable] Add a size
alias to length
2015-03-13 19:54:28 -04:00
Louis Dionne
ee329961b2
[Tutorial] Add a section on assertions
2015-03-13 12:14:35 -04:00
Louis Dionne
af4ff59bfb
[Core] Add is_a and make sure models<> returns an IntegralConstant
2015-03-13 12:14:32 -04:00
Louis Dionne
ceba2336c3
[Examples] Add an example of compile-time printf formatting
2015-03-12 15:00:15 -04:00
Louis Dionne
56484a3ac9
[CMake] Improve the build system and the targets
...
- Split targets to compile and run tests
- Add run.* targets to run each target
2015-03-12 14:44:14 -04:00
Louis Dionne
9cc9ca4b0e
[Travis] Add support for Travis CI
2015-03-12 14:42:50 -04:00
Louis Dionne
4671796d28
[Pair] Add make_pair and improve tests
2015-03-12 11:52:51 -04:00
Louis Dionne
39079fa95a
[Foldable] Add monadic folds
2015-03-10 09:30:07 -04:00
Louis Dionne
ea601ddf60
[Maybe] Add the sfinae utility
2015-03-10 09:30:06 -04:00
Louis Dionne
8a73a3208e
[Map] Add make<Map> and remove map(...)
2015-03-07 21:28:07 -05:00
Louis Dionne
bd4daea264
Use models<Concept, T> instead of models<Concept(T)>, and check data types at the top level
2015-03-07 21:27:46 -05:00
Louis Dionne
cc76ebbba2
[IntegralDomain] Use rem instead of mod, and change laws so it's consistent with %
2015-03-05 12:25:50 -05:00
Louis Dionne
9388fe52eb
[CMake + Config] Successfully compile on Clang 3.5 and improve diagnostics
...
Also disable fusion's adapters tests, which are currently broken
2015-03-05 09:35:06 -05:00
Louis Dionne
c93a250d87
[Constant] Make value
a nullary method depending only on the type
2015-03-04 16:36:40 -05:00
Louis Dionne
cee0c9b3ce
[Clang 3.5] Workaround some bugs
2015-03-04 16:35:17 -05:00
Louis Dionne
fb7cbdf13a
[Sequence] Add missing examples
2015-03-04 14:30:41 -05:00
Louis Dionne
065b910128
Update copyright year.
2015-03-03 14:16:50 -05:00
Louis Dionne
f017c4493a
[Searchable] Swap {all,any,none} and their _of variant for consistency with the STL
2015-03-03 13:51:37 -05:00
Louis Dionne
244c7a6688
[README] Use make_tuple instead of make<Tuple> in the overview.
2015-03-03 13:23:56 -05:00
Louis Dionne
fc12cee6e5
[Tutorial] Add sections on amphibian algorithms and semantics
2015-03-03 13:19:06 -05:00
Louis Dionne
462383e35d
[Example] Add more intrinsics to the mini-MPL
2015-03-02 09:16:58 -05:00
Louis Dionne
7e2bcdfee0
[ext/mpl] MPL vectors are not Sequences anymore
2015-02-27 11:34:21 -05:00
Louis Dionne
d7f58620ff
[Example] Add a minimal implementation of the MPL
2015-02-26 12:35:06 -05:00
Louis Dionne
689ab952f8
[Orderable, Comparable] Add signatures and partially appliable methods
2015-02-25 12:39:05 -05:00
Louis Dionne
aa6eac6c3d
[Config] Move BOOST_HANA_CONSTEXPR_LAMBDA to config.hpp
2015-02-25 10:20:12 -05:00
Louis Dionne
c13f660ecc
[MonadPlus] Add signatures and rename nil to empty
2015-02-25 09:19:58 -05:00
Louis Dionne
0f197ea93a
[Core] Properly document models
and add examples
2015-02-24 19:54:22 -05:00
Louis Dionne
da687d7cc6
[Range] Implement and document make<Range>. Deprecate range(...)
2015-02-24 19:54:21 -05:00
Louis Dionne
ad171f9cea
[Make] Add a forward declaration header
2015-02-24 19:54:21 -05:00
Louis Dionne
edd086423e
[Tuple] Replace tuple(...) by make<Tuple>(...) in the docs
2015-02-24 18:15:24 -05:00
Louis Dionne
6b8532c38c
[Example] Fix missing includes in type_computations.cpp
2015-02-23 21:55:17 -05:00
Louis Dionne
1df1b62a8a
[Assert/String] Use models instead of is_a
2015-02-23 21:46:43 -05:00
Louis Dionne
df97a4dfc1
[Set] Add a model of Foldable
2015-02-23 15:04:45 -05:00
Louis Dionne
3e78af4bcb
[Tuple] Use make<Tuple>(...) instead of tuple(...)
2015-02-22 16:50:01 -05:00
Louis Dionne
a25e84cf3b
[Doc] Refactor the tutorial
2015-02-22 16:50:00 -05:00
Louis Dionne
d120513366
Rename cons to prepend and snoc to append
2015-02-22 14:55:35 -05:00
Louis Dionne
62ede37419
Rename fmap to transform
2015-02-22 14:55:35 -05:00
Louis Dionne
9e67213857
Rename zip_with to zip.with
2015-02-22 14:55:35 -05:00
Louis Dionne
7ceadaae67
[Tuple] Add examples and slightly improve tests
2015-02-22 14:55:35 -05:00
Louis Dionne
734f89190c
[Core] Refactor the operator system
2015-02-20 11:05:44 -05:00
Louis Dionne
ec7336796b
[README] Add example of tuple indexing with [] in the README
2015-02-20 11:05:44 -05:00
Louis Dionne
f0c66b31f8
Remove outdated core/ tests and reorganize tests
2015-02-20 11:05:44 -05:00
Louis Dionne
4d06bf69fe
[Core] Refactor documentation and bring back stuff from split_methods branch
2015-02-20 11:05:44 -05:00
Louis Dionne
9604c9a9f6
Replace List by Sequence
2015-02-20 11:05:43 -05:00
Louis Dionne
d5dafc8e35
[Either] Add missing include to examples
2015-02-18 17:14:19 -05:00
Louis Dionne
272ffa7900
Add the MonadPlus concept
2015-02-17 15:11:07 -05:00
Louis Dionne
02c9c47510
Remove TypeList and IntegerList
2015-02-15 12:38:04 -05:00
Louis Dionne
737f20a5bb
[models] Implement models for each concept; no need to explicitly specialize it
2015-02-15 10:31:12 -05:00
Louis Dionne
337167bbb3
[Traversable] Refactor documentation and split methods
2015-02-15 09:08:02 -05:00
Louis Dionne
681116f0db
[Iterable] Refactor documentation and split methods
2015-02-15 09:08:02 -05:00
Louis Dionne
8e744413be
[Record] Refactor documentation and split methods
2015-02-13 12:00:14 -05:00
Louis Dionne
72334a8bcc
[README] Improve the examples
2015-02-12 12:37:32 -05:00
Louis Dionne
e4d75ef25a
[Foldable] Refactor documentation and split methods
2015-02-12 11:58:39 -05:00
Louis Dionne
c5f20a51d2
[Searchable] Split methods and refactor documentation
2015-02-12 10:10:38 -05:00
Louis Dionne
f99a35fba6
[Monad] Refactor documentation and split methods
2015-02-11 11:15:16 -05:00
Louis Dionne
dbf7445a3c
[Applicative] Refactor the documentation and split methods
2015-02-11 10:37:01 -05:00
Louis Dionne
8a3e5f794d
[Functor] Refactor documentation and split methods
2015-02-10 20:34:41 -05:00
Louis Dionne
17d2ce584c
[Integral] Rename to IntegralConstant and improve the API
2015-02-10 20:03:49 -05:00
Louis Dionne
5dd70cbf3a
[String] Remove the Constant model and document why
2015-02-10 19:18:40 -05:00
Louis Dionne
88549c004c
[IntegralConstant] Remove the concept
2015-02-10 19:18:40 -05:00
Louis Dionne
dab93cc263
[Comparable] Update docs, split methods and more
...
- Use == for cross-type EqualityComparable data types
- Remove the not_equal mcd
2015-02-10 19:18:40 -05:00
Louis Dionne
9ddad3dc22
[Orderable] Split completely
2015-02-10 18:04:30 -05:00
Louis Dionne
c2b51f3780
[Logical] Split completely
2015-02-10 18:04:30 -05:00
Louis Dionne
1d3aaa93c4
[Monoid up to IntDomain] Refactor the documentation and split the methods
2015-02-10 18:03:42 -05:00
Louis Dionne
a06100c268
[Enumerable] Refactor the documentation and split the methods
2015-02-10 18:03:19 -05:00
Louis Dionne
04985812f8
[Range] Specify what happens when from
and to
have different underlying types
2015-02-10 18:03:19 -05:00
Louis Dionne
61d59eff57
[Core] Refactor the conversion system, hana::common and add hana::default
2015-02-10 18:02:32 -05:00
Louis Dionne
d6ef326e94
[Product] Split methods, refactor doc and add Orderable instance
2015-02-08 10:43:12 -05:00
Louis Dionne
738041d159
[Core] Add the wrong
utility to make static asserts dependent.
2015-02-08 10:29:09 -05:00
Louis Dionne
d479e0f711
[Set] Split methods and refactor the documentation
2015-02-08 09:49:19 -05:00
Louis Dionne
b2b4a09f10
[Map] Split methods and refactor documentation.
2015-02-08 09:49:19 -05:00
Louis Dionne
ca31fe399c
[Range] Split methods and refactor documentation
2015-02-08 09:22:39 -05:00
Louis Dionne
7f52833db6
[Lazy] Split methods and refactor documentation
2015-02-08 09:22:39 -05:00
Louis Dionne
d5076888fb
[Type] Split methods and refactor the documentation
2015-02-08 09:22:39 -05:00
Louis Dionne
507aaa033d
[String] Split methods and refactor
2015-02-08 09:22:39 -05:00
Louis Dionne
3947f264c1
[Maybe] Split methods and refactor documentation.
2015-02-08 09:22:39 -05:00
Louis Dionne
245819eb71
[Either] Split methods and refactor documentation
2015-02-08 09:22:39 -05:00
Louis Dionne
ee648c2bda
[Core] Fix issue with when_valid
2015-02-04 23:02:04 -05:00
Louis Dionne
4654c6786a
Split instances for foreign types
2014-12-06 16:30:16 -05:00
Louis Dionne
8d4b34f6c2
Do not use variable templates for one
, zero
& al.
...
This is because using variable templates limits the objects to being
constexpr, or to not being constexpr (but then initializing the object
becomes an issue).
This is also a step towards being compilable by GCC 4.9, but that only
would not justify the change.
2014-11-30 20:42:29 -05:00
Louis Dionne
ec8e7446a0
CppCon Matrix: Implement the one
method
2014-11-30 11:38:48 -05:00
Louis Dionne
f0919d1761
Use List::repeat instead of handwritten one in the Matrix example.
2014-11-30 11:38:48 -05:00
Louis Dionne
8845b2a0c1
Use common
to provide inter data type instances.
2014-11-17 10:05:58 -05:00
Louis Dionne
4009555990
Refactor and improve IntegralConstant
...
- Add mandatory lossless conversions between instances
- implement `common` properly
2014-11-17 09:13:48 -05:00
Louis Dionne
f4e9062d89
Core: add the common
utility
2014-11-17 09:13:48 -05:00
Louis Dionne
d042abda97
Automatically test including individual headers.
2014-11-12 11:22:53 -05:00
Louis Dionne
8756e81977
Add boost/hana/config.hpp and BOOST_HANA_*_CHECK macros.
2014-11-10 17:52:33 -05:00
Louis Dionne
e0e2501931
List: add the remove_at method
2014-11-08 12:32:51 -05:00
Louis Dionne
b9472015d1
Add the overload utility to Functional
2014-11-07 20:31:26 -05:00
Louis Dionne
0f0c2c4430
Replace when<is_valid<...>> by when_valid<...>
2014-11-07 15:41:10 -05:00
Louis Dionne
98a39c1204
Remove superfluous #define BOOST_PP_VARIADICS 1.
2014-11-07 10:57:48 -05:00
Louis Dionne
049046478e
Move ASSERT macros out of the details
2014-11-04 09:43:44 -05:00
Louis Dionne
bc58bef03e
Update the overview in the readme to use constexpr when possible.
2014-11-04 09:09:54 -05:00
Louis Dionne
788b4df735
List: zip_with and zip must receive lists of the same data type
2014-11-04 08:54:59 -05:00
Louis Dionne
57087cd249
Functional: make lockstep's syntax like demux's
2014-11-04 08:54:59 -05:00
Louis Dionne
e66473a0a9
Fix broken link to example in the doc.
2014-10-28 08:12:17 -04:00
Louis Dionne
eddece8d00
Use the nested hana struct to define enabled operators.
2014-10-27 16:31:03 -04:00
Louis Dionne
220d92ed82
Use a nested hana struct to customize stuff inside user defined objects.
2014-10-27 15:24:14 -04:00
Louis Dionne
a9743f3dde
Add the Ring::power method.
2014-10-27 14:59:20 -04:00
Louis Dionne
b26406d649
Simplify the header hierarchy: too modular isn't good.
...
This essentially undo parts of 307d3d0
. While it seemed a like good
idea to over-modularize type classes to reduce header dependencies, I
think it was a mistake. What 307d3d0
did was basically split each of
the components of a type class into a single header (typeclass/operators.hpp,
typeclass/mcd_1.hpp, typeclass/mcd_2.hpp, ...).
At first, it resolved many weird header dependency glitches. However, it
also made everything more complex; creating even easy type classes was
sometimes much longer than it should have been, and using type classes
was tricky because you had to know exactly what to include. It also went
against the idea of implicit type class instances being provided whenever
that's possible, which I think is a nice feature of the library. Being
dissatisfied with this, I opted for a simpler header organization with
a fwd/ directory that contains forward declaration headers, and everything
else in the same directory.
A possible objection to this change would be that you are now forced
to include sometimes more than what you strictly need when e.g. defining
an instance or using only some instance(s) of a data type. My answer to
this is that Hana is a really small library and the parsing is not
going to have a huge impact on overall compilation time. My bet is that
the time that will be saved by programmers with a simple header hierarchy
outweights the parsing time by far.
2014-10-25 09:47:05 -04:00
Louis Dionne
a74bb80490
Type: clean up and remove misplaced functionality
...
The ability to construct objects of a type T by calling the type<T>
object was removed; make<T> should be used instead.
2014-10-22 12:27:33 -04:00
Louis Dionne
806b941603
Instantiate Searchable and Iterable with String.
2014-10-21 23:53:28 -04:00
Louis Dionne
ac528b81ba
Add the insert function to Set.
2014-10-17 18:29:50 -04:00
Louis Dionne
653d083eb0
Instantiate Foldable and Orderable with String.
2014-10-17 10:23:31 -04:00
Louis Dionne
716ff897cc
Add the Enumerable type class.
2014-10-16 20:52:29 -04:00
Louis Dionne
d496ec6bbc
Change the syntax of demux
.
2014-10-16 19:32:09 -04:00
Louis Dionne
f0d9e9b9bb
Add the intersperse method to List.
2014-10-16 16:56:39 -04:00
Louis Dionne
88579de954
Allow folding move-only rvalue Records by constraining accessors.
2014-10-11 14:26:39 -04:00
Louis Dionne
ec93fc5dd4
Use BOOST_HANA_RUNTIME_ASSERT instead of assert in the tutorial
2014-10-04 23:12:46 -04:00
Louis Dionne
1104f76d48
Add perfect forwarding in some places in Tuple
2014-10-04 20:13:14 -04:00
Louis Dionne
a7b28bddd8
Add more perfect forwarding and do some refactoring.
2014-10-02 21:05:01 -04:00
Louis Dionne
f0a6d7150d
Add some perfect forwarding.
2014-10-02 17:06:52 -04:00
Louis Dionne
e7b48ee23c
Use compile-time strings as keys in records
2014-09-30 10:42:55 -04:00
Louis Dionne
c184a742fb
Add compile-time strings
2014-09-30 10:23:45 -04:00
Louis Dionne
a7525b71e3
Fixes #8
2014-09-16 19:41:06 -04:00
Louis Dionne
ac9bd151fb
Fixes issue #7
2014-09-16 11:27:51 -04:00
Louis Dionne
18fef19050
List: add the repeat method
2014-09-11 08:22:12 -07:00
Louis Dionne
19b7ca2c7d
Minor fixes with newest clang
2014-09-09 17:38:06 -07:00
Louis Dionne
9fbf074c55
Record: refactor macros to make them more user-friendly
2014-09-09 13:01:11 -07:00
Louis Dionne
1b021fcd89
Record: Allow instantiating with macros.
2014-09-09 10:32:04 -07:00
Louis Dionne
7a3dd8ae8a
Example: Add the homogeneous Matrix example for CppCon.
2014-09-04 09:30:12 -04:00
Louis Dionne
444ffa8d48
Improve the documentation for IntegralConstant
2014-09-03 11:06:46 -04:00
Louis Dionne
028e672822
Refactor examples and fix broken links
2014-08-30 17:18:26 -04:00
Louis Dionne
8f593765a8
Set: improve Comparable example
2014-08-30 14:38:21 -04:00
Louis Dionne
26af39f3d9
Flip the arguments of several methods.
...
Flipped:
- traverse
- fmap, adjust, fill, replace
- drop_while, drop_until
- take_while, take_until
2014-08-29 10:24:19 -04:00
Louis Dionne
919bc2f465
Move for_each to Foldable and optimize it with unpack
2014-08-28 12:53:33 -04:00
Louis Dionne
00642be684
Add the Either
data type.
2014-08-26 15:09:51 -04:00
Louis Dionne
1e6d390626
Add slice_c
, take_c
, drop_c
and at_c
shorthands.
2014-08-25 17:45:10 -04:00
Louis Dionne
81a242c1f1
Replace into
by make
in the List type class.
2014-08-25 16:48:02 -04:00
Louis Dionne
cbeb6ae983
Core: add the make function
2014-08-25 12:33:49 -04:00
Louis Dionne
3147d9b5d5
Refactor and fix broken examples.
2014-08-25 12:33:49 -04:00
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