Commit Graph

557 Commits

Author SHA1 Message Date
Louis Dionne
96b0cc3169 [GCC] Fix some GCC warnings and errors 2015-07-26 18:06:16 +02:00
Louis Dionne
9d74084996 Remove take_until and some xxx_exactly variants
Of the xxx_exactly variants, only drop_front_exactly is kept for now,
because it actually allows an optimization. The other ones did not
really provide a compile-time improvement, so they are removed.
2015-07-26 12:42:20 +02:00
Louis Dionne
70cd321751 [example.SwitchAny] Use Hana's pair instead of broken std::pair
libc++'s std::pair always has a default constructor, and it is ill-formed
when the members are not default constructible. We need it to be SFINAE
friendly. See https://llvm.org/bugs/show_bug.cgi?id=21917.
2015-07-26 12:42:20 +02:00
Louis Dionne
8a0ddb0fa7 [Closure] Reimplement the closure to be almost standards-conforming
Also, use that closure to implement basically all containers.
The new closure compresses empty types.

Fixes #123
Fixes #93
Fixes #89
2015-07-26 12:42:20 +02:00
Louis Dionne
d3b7cb2c85 Modularize the headers
This (large) commit introduces the following changes:
- Each algorithm lives in its own header
- The concepts are defined in the concept/ subdirectory. They define the
  `models` metafunction, some explicit default implementations (like
  Applicative::transform_impl), and they include all the algorithms
  related to that concept.
- Removed the `until` method from Logical
- Removed the `drop_until` method from Iterable
- [minor] Added the detail::nested_to utility

Closes #160
2015-07-25 16:20:47 +02:00
Louis Dionne
dcfdb09ff9 [Struct] BOOST_HANA_ADAPT_STRUCT does not require the types of the members
Fixes #152
2015-06-28 21:01:09 +02:00
Louis Dionne
c6045da6ee [Sequence] Use underscores instead of dots to name zip variants
Also, remove unzip since it is easily implemented with unpack and zip.

Addresses #114
2015-06-28 11:43:29 +02:00
Louis Dionne
09955bf1b7 Use drop_front/drop_back front/back instead of asymmetrical names
- Replace init by drop_back and drop_back_exactly
- Rename head to front
- Rename last to back, and also rewrite the default implementation
  in terms of at instead of using (inefficient) recursion.
- Rename drop[_exactly] to drop_front[_exactly]
- Remove drop_c

Note that tail is kept for the moment because it is part of Iterable's
MCD. Removing tail will be the subject of a different issue.

Fixes #66
2015-06-28 10:44:28 +02:00
Louis Dionne
1e89c69049 [CMake] Remove LIBCXX_ROOT cruft and properly explain the situation in the README
Also:
- Remove the boost_hana_add_executable function, which is now useless
- Properly set the LD_LIBRARY_PATH to link against a custom libc++
- Adjust the Travis build

Fixes #135
2015-06-24 20:07:13 -04:00
Louis Dionne
c585bdc789 [Sequence] Rename unfold<S>.{left,right} to unfold_{left,right}<S>
Partially addresses #114
2015-06-22 18:41:07 -04:00
Louis Dionne
1b45d87a42 [Iterable] Rename drop.at_most to drop and drop.exactly to drop_exactly
Partially addresses #114
2015-06-21 12:08:23 -04:00
Louis Dionne
46207eed20 [Sequence] Rename take.at_most to take, and take.exactly to take_exactly
Partially addresses #114
2015-06-21 11:50:02 -04:00
Louis Dionne
4bef99d3d0 [Core] Completely remove operators from the core
Properly providing operators for users was too complicated, and it is
judged as being out of Hana's scope.

Instead, operators are now provided by helper classes in the detail::
namespace. Now, we can be as dirty as we want, since it is not part of
the interface anymore.

Fixes #138
Closes #30
2015-06-20 17:56:40 -04:00
Louis Dionne
c4ac6d67be [Doc] Make the quickstart examples self-contained
Fixes #137
2015-06-18 21:39:27 -04:00
Louis Dionne
127304dcdf [Examples] Disable tutorial/introduction.cpp when Boost is not found 2015-06-16 13:30:39 -04:00
Louis Dionne
18d39cd410 [Sequence] Rename scan.{left,right} to scan_{left,right}.
Partially addresses #114
2015-06-16 13:00:15 -04:00
Louis Dionne
49d3355f73 [Sequence] Modernize example of the Monad model 2015-06-15 16:06:08 -04:00
Louis Dionne
cb52aa6a77 [Examples] Modernize and prettify some examples 2015-06-14 17:18:15 -04:00
Louis Dionne
7150695767 [Foldable] Use underscore syntax for monadic folds
Also,
- Fix broken reference to fold_right/fold_left in the cheatsheet

Partially addresses #114
2015-06-14 16:56:24 -04:00
Louis Dionne
b5a9a2e2c9 [Foldable] Rename fold.{left,right} to fold_{left,right}
Fixes #106
2015-06-14 10:07:04 -04:00
Louis Dionne
b069cca0f2 [Doc] Reorganize the mcd/laws/etc.. sections in the reference of concepts
Fixes #101
2015-06-13 15:00:23 -04:00
Louis Dionne
78fa94047e [Example] Remove unused include_set.cpp file 2015-06-12 15:23:07 -04:00
Louis Dionne
71ca00dcf7 [Map,Set] Make sure make<..> is passed compile-time Comparable keys 2015-06-12 15:23:07 -04:00
Louis Dionne
1022f74fa7 Remove our partial <type_traits> reimplementation
There was a legitimate reason to have this duplication when the library
was much smaller. However, hovering at about 30 kLOCs, the library is
definitely not small enough anymore to mandate reimplementing our own
<type_traits>. Also, most user code will probably include <type_traits>
anyway, so using <type_traits> will not increase the overall compilation
time in actual code bases.

Finally, this gives us much more flexibility, like the ability to
inherit our IntegralConstant from std::integral_constant, and then
return that from the traits:: metafunctions, so that operators can
be used with them.
2015-06-12 12:49:22 -04:00
Louis Dionne
0cbf6082c2 Add a "Try it online" link and a script to upload the library to Wandbox
Thanks a __lot__ to the people behind Wandbox for all the help!
This is related to https://github.com/melpon/wandbox/issues/153.

Closes #87
2015-06-11 20:39:35 -04:00
Louis Dionne
35cdf3b83a [Struct] Implement macros using ERB templates instead of Boost.Preprocessor
This is done because the resulting macros are much more straightforward
to debug when a user makes a mistake. Also, it avoids pulling yet another
dependency.

Also added some general purpose macros in detail/preprocessor.hpp.
2015-06-10 15:50:35 -04:00
Louis Dionne
9928dea216 [Traversable] Remove that concept entirely
That concept was added more for completeness than for actual usefulness,
since I have not used it a single time since its creation. Given the
complexity of the library, I think it is better to remove it and shrink
the library to a more useful core than giving too many features that
contribute to bloat.

Also, the laws were difficult to check and it hence Traversable models
were not very well tested anyway.

I can always roll this back if someone shows me how Traversable is
actually useful for metaprogramming.
2015-06-10 10:07:55 -04:00
Louis Dionne
7a4919e69d [MonadPlus] Swap the arguments of prepend and prefix 2015-06-08 18:13:04 -04:00
Louis Dionne
09b8e38113 [Sequence] Add insert and insert_range functions
Partially addresses #52
2015-06-08 17:04:52 -04:00
Louis Dionne
92a2d425d3 [Doc] Minor documentation improvements and tweaks
- Move Functional to Details, to get more time to think about it
- Move Either to Details, to get more time to think about it
- Prettify some examples
- Better introduction of the "Data types" documentation module
2015-06-08 15:11:28 -04:00
Louis Dionne
9c2d3b396a Rename Maybe to Optional 2015-06-08 14:49:26 -04:00
Louis Dionne
ff90ce4e72 [Maybe] Add make<Maybe> and make_maybe for consistency 2015-06-07 17:43:51 -04:00
Louis Dionne
406cb49cc2 [Doc] Daily documentation improvements
- Improve the brief description of make<XXX>
- Rewrite the rationale for unspecified container types
- Update comments on some runtime benchmarks
- Rename std::decay_t(...) to std::decay_t<...> in Tuple reference
- Document data types as being Tags, not types themselves
2015-06-07 14:35:08 -04:00
Louis Dionne
160a713f0a [Doc] Document the boost::hana::literals namespace 2015-06-06 11:07:17 -04:00
Louis Dionne
898e9aa07f [Doc] Improve the documentation as suggested by @tzlaine (Part 2)
- Extend the Quick Start with more small examples, and then the large
  switchAny example.
- Add clarifying remarks right in front of the CheatSheet for skimmers.
  Damn skimmers.
- Benchmark the compile-time of creating std::array
2015-06-05 18:47:41 -04:00
Louis Dionne
07f15e171f Normalize the parameter order of take, suffix, remove_at, cycle and repeat
Closes #83
2015-06-04 22:29:13 -04:00
Louis Dionne
077dc7b6c9 [Iterable] Normalize parameter order for at and drop
Partially addresses #83
2015-06-04 21:13:51 -04:00
Louis Dionne
35f25cbc35 [Doc] Implement improvements suggested by @tzlaine (part 1)
- Remove the preface entirely
- Move the current introduction to a "Description" section
- Move the "Quadrants of computation" to the "Introduction"
- Move the current "Motivation" section to the start of the "Introduction"
- Move the section on "Introspection" higher up in the docs
- Remove the "Concept" column in the Cheatsheet, and add links to each
  individual algorithm instead.
- Add a rationale for unpack's name and parameter order
- Add `fold` and `reverse_fold` to the cheatsheet
- Mention the list of all headers in the tutorial
- Add an alphabetical index with everything in the library
- Precise that smaller is better in chart subtitles
- Add benchmarks for std::make_tuple and std::get
2015-06-04 21:13:45 -04:00
Louis Dionne
c832df8b1e [Sequence] Add the unique{.by} algorithm
Partially addresses #52
2015-06-03 14:06:56 -04:00
Louis Dionne
0ff9572382 Create the detail::by helper to provide a .by static member.
Also improve the documentation of the algorithms with a .by version.
2015-06-03 12:17:29 -04:00
Louis Dionne
4ce522ec20 [Set, Map] Add the erase_key function
Partially addresses #52
2015-06-03 10:11:13 -04:00
Louis Dionne
8fd8129258 [Doc] Daily tutorial improvements
- Finish the section on "Introspection"
- Use a Boost "proposed" logo instead of the proper Boost logo
2015-06-02 23:52:57 -04:00
Louis Dionne
a32de51bfa [String] Add an optional _s user-defined literal to create Strings
Fixes #79
2015-06-02 14:45:38 -04:00
Louis Dionne
535bc937b6 [Type] Do not treat Types and values differently in is_valid
Fixes #58
2015-06-01 18:06:38 -04:00
Louis Dionne
2d7ffed101 [Doc] Daily documentation improvements
- Add an "Acknowledgements" section
- Rename Boost.Hana to Hana for now (not officially a Boost library)
- Partially write the section on "Introspection"

Fixes #46
I feel like the documentation now provides enough real world examples:
- switchAny
- Euclidean distance
- JSON generation (to be written)
- MPL reimplementation
2015-06-01 18:06:28 -04:00
Louis Dionne
ac04435b60 [Doc] Daily improvement of the tutorial
- Merge section on Amphibian Algorithms with section on Algorithms
- Replace the `decayed` pseudo-code by `std::decay_t`.
- Rewrite and move section on type computations
- Add Appendix on the MPL implementation
2015-05-31 18:57:05 -04:00
Louis Dionne
cf3908622b [Doc] Write a section on compile-time numbers
Also
- move tricky content about constexpr to an appendix
- reorganize tutorial sections
2015-05-30 19:55:10 -04:00
Louis Dionne
647e695951 [CMake] Add the check target and fix minor annoyances 2015-05-30 12:23:01 -04:00
Louis Dionne
a9cf8862aa [Foldable] Swap examples for fuse and unpack 2015-05-28 18:38:37 -04:00
Louis Dionne
32d4c973e9 [Doc] Write new tutorial sections and reorder other sections
- Write sections on containers, algorithms, and runtime performance
- Make sure examples consistently use 2 space tabs
- Disable -Wunused-parameter for examples
- Resolves #70
  The requirement of pure functions is now documented.
- Resolves #14
  It turns out that the benefits of specifying the type of containers
  seems to be essentially limited to pattern matching. This is not
  enough to justify all the bad things it brings, especially
  considering the fact that recursion (currently the only use
  case for pattern matching) forces the creation of a new tuple
  at each step, which is disastrous. The unspecified-ness of the
  container's type is now documented.
2015-05-28 17:03:46 -04:00
Louis Dionne
68dfc99b11 [Doc] Improve the section on tag-dispatching 2015-05-26 11:51:53 -04:00
Louis Dionne
6159007c15 [IntegralConstant] Write proper unit tests for .times and .times.with_index 2015-05-26 11:20:03 -04:00
Louis Dionne
f81f732390 Convert some RUNTIME_ASSERTs into RUNTIME_CHECKs 2015-05-26 10:52:38 -04:00
Louis Dionne
7f98ff0edd [Doc] Write a section about the different kinds of C++ computations 2015-05-25 16:27:16 -04:00
Louis Dionne
6718adbf5e [Doc] Rewrite the 'quick start' section of the tutorial 2015-05-25 10:16:48 -04:00
Louis Dionne
6ee5137604 [GCC] Workaround GCC ICEs and bugs 2015-05-24 21:00:27 -04:00
Louis Dionne
dc909f8900 [GCC] Remove unused parameter warnings and disambiguate use of size_t 2015-05-24 21:00:26 -04:00
Louis Dionne
aa2edb08ce [CMake] Reduce the number of targets and modularize the code 2015-05-22 16:23:54 -04:00
Louis Dionne
0660af6a8f [GCC] Initial port to GCC
- Fix ambiguous specialization in core/datatype
- [Config] Turn #errors into #warnings
- Qualify recursive calls to `apply` to make sure the right function is selected
- Remove usages of when_valid to workaround ambiguous specializations
- Use multiline comments to remove some GCC warnings with LaTeX's double backslash
- Specialize operators::of in the boost::hana::operators namespace
- Manually perform more conversions in constexpr-context
- Workaround the lack of support for constexpr-but-non-const member functions
- Disambiguate unqualified uses of size_t with hana::size_t and ::size_t
2015-05-20 16:56:34 -04:00
Louis Dionne
90ddffe54d [Sequence] Add the cartesian_product method
Also, replace the old tuple_cartesian_product by a newer, slightly
more efficient but much simpler version.
2015-05-19 11:55:50 -04:00
Louis Dionne
daea3549d5 [Struct] Add the keys method to Structs 2015-05-14 16:42:56 -06:00
Louis Dionne
71dc2a8f40 [Example] Fix typo and modernize slightly 2015-05-09 15:38:59 -04:00
Louis Dionne
3e0838b1e2 [Functional] Move reverse_partial from detail to functional 2015-05-04 14:01:45 -04:00
Louis Dionne
6ca6501278 [Searchable] Refactor the interface
- Rename elem to contains
- Rename subset to is_subset, and make is_subset applicable in infix notation
- Add the at_key method
- operator[] is now bound to at_key instead of find
2015-05-04 12:33:51 -04:00
Louis Dionne
334cbeb188 [Tuple] Allow brace-initializing tuple members
Fixes #57
2015-05-03 13:34:51 -04:00
Louis Dionne
dc56f6cebc [String] Add conversion to char const* and minor refactoring
Also
- remove useless value_type alias in String since it's not a Constant
- document why the interface is so minimal
2015-05-02 15:24:25 -04:00
Louis Dionne
b2145a2640 [IntegralConstant] Fix a bug with the .times function
Passing a normal function to .times would fail
2015-05-01 19:41:22 -04:00
Louis Dionne
fba9abc845 [README] Make sure the overview fits in the frame 2015-05-01 15:58:09 -04:00
Louis Dionne
3568186dac [Type] Add the is_valid utility.
Also refactor the overview in the README.
2015-05-01 15:54:22 -04:00
Louis Dionne
e6d0fa9487 [CMake] Use Find modules to find optional external libraries 2015-04-28 10:46:44 -04:00
Louis Dionne
9a412f9c39 [MPL] Add a conversion from Foldables to MPL vectors
Also, properly split the unit tests for mpl::vector
2015-04-26 14:20:15 -04:00
Louis Dionne
ca37fdfa4c [Doc] Add a section on performance in the tutorial
Also:
- Introduce the .js charts we have in the reference
- Remove the ugly "Generated by Doxygen" footer
- Refactor the benchmarks
2015-04-25 16:31:56 -04:00
Louis Dionne
589425a6dd [Core] Make has_operator an IntegralConstant
Fixes #51
2015-04-22 07:35:11 -04:00
Louis Dionne
8e427f2c83 [Searchable] Provide an operator[] equivalent to find 2015-04-21 21:56:47 -04:00
Louis Dionne
f87919b94b [Record] Rename to Struct and refactor
- Define the notion of move-independence, thus relaxing the requirements on accessors.
- Rename `members` to `accessors` and use `members` to get the members only
- Document the different ways of providing a model
- Make the model of Foldable more consistent

Fixes #53
2015-04-21 16:32:33 -04:00
Louis Dionne
fb518d859a [Monad] Renaming and refactoring.
- Rename bind to chain
- Rename mcompose to monadic_compose
- Rewrite a large part of the documentation
- Document the limit on the arity of functions used with monadic_compose

Fixes 48
Fixes 9
2015-04-19 13:13:23 -04:00
Louis Dionne
ac2f5222cd [Travis] Run the unit tests under valgrind 2015-04-18 22:36:40 -04:00
Louis Dionne
056b072648 [Sequence] Add an example of using the Monad model for non-determinism 2015-04-15 10:06:27 -04:00
lolisa
21952b9f54 comment out unused variable.
[ldionne: rebase and remove the -Wno-unused-parameter flag from CMake]

Closes #43
2015-04-14 16:23:51 -04:00
Louis Dionne
686656a3f2 [Iterable] Add the drop.at_most and drop.exactly variants to drop 2015-04-12 11:29:02 -04:00
Louis Dionne
1171b83fe3 [Sequence] Add the subsequence method
Fixes #37
2015-04-12 10:47:12 -04:00
Louis Dionne
e60827d02d [Example] Add a funny use case for user defined literals 2015-04-11 14:11:24 -04:00
Louis Dionne
6abd0f9d8e [Set] Improve the documentation and fix inconsistency in the behavior of to<Set> 2015-04-11 12:49:45 -04:00
Louis Dionne
daaba5dfd8 [Map] Provide model of Foldable, improve docs and add insert method.
Fixes #41
2015-04-11 12:09:01 -04:00
Louis Dionne
8bd84a5d4b [Metafunction] Generalize trait to arbitrary Metafunctions and improve docs 2015-04-11 09:29:06 -04:00
Louis Dionne
08e55a7bb6 Rework the relations between Foldable, Iterable and Searchable. 2015-04-10 17:46:14 -04:00
Louis Dionne
55e4a1d083 [Sequence] Try to formulate laws that make sense and improve the documentation 2015-04-09 09:27:09 -04:00
Louis Dionne
3053736ddd [Tuple] Optimize the equal method 2015-04-08 11:30:00 -04:00
Louis Dionne
80e0adf4e8 [Core] Move wrong to the detail namespace 2015-04-07 19:37:28 -04:00
Louis Dionne
5c1a752a9f [Pair] Remove the pair constructor in favor of make_pair 2015-04-07 19:26:59 -04:00
Louis Dionne
40216cde23 [MonadPlus] Add the remove and remove_if functions to MonadPlus 2015-04-07 16:27:39 -04:00
Louis Dionne
0a46420c02 [Type] Major refactoring and improvements
- Make decltype_ the identity on Types
- Add the alignof_ function
- Allow sizeof_ to work with non-Types
- Remove the trait_ helper
- Allow Metafunctions to be called with non-Types
- Add make<Type>, which is equivalent to decltype_
2015-04-07 12:12:52 -04:00
Louis Dionne
0819846fba [Example] Add a sequence based implementation of overload_linearly 2015-04-06 15:10:27 -04:00
Louis Dionne
84bc1a6a06 [Functional] Group the examples into a single file 2015-04-06 14:58:04 -04:00
Louis Dionne
125fd45bfd [Functional] Add the overload_linearly utility 2015-04-06 14:11:42 -04:00
Louis Dionne
1d7f28f941 [CMake] Improve the build system
- Simplify the compiler flag logic
- Use WARNING instead of STATUS to report caveats
- Allow specifying a custom libc++ root directory
2015-04-02 00:50:58 -04:00
Louis Dionne
13392c7ed2 [Foldable] Use overloads for {maximum,minimum}_by 2015-04-01 19:28:42 -04:00
Louis Dionne
eb4f07a61c [Sequence] Use overloads for sort/sort_by and group/group_by 2015-04-01 19:28:42 -04:00
Louis Dionne
aaaab0e11d [Foldable] Allow specifying the Monoid/Ring for sum/product
Fixes #33
2015-04-01 16:19:37 -04:00
Louis Dionne
3986e3c870 [Sequence] Fix compilation error in Sequence example 2015-03-31 19:57:09 -04:00
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