Commit Graph

171 Commits

Author SHA1 Message Date
Louis Dionne
36a3e22429 [CMake] Add targets to update the benchmarks on the 'datasets' branch 2015-04-18 12:51:26 -04:00
Louis Dionne
fd14741747 [Benchmarks] Simplify the benchmark framework and generate JSON instead of CSV 2015-04-18 12:51:25 -04:00
Louis Dionne
6cf3364bb0 [Benchmarks] Update the benchmarks for fold.left 2015-04-13 19:44:57 -04:00
Louis Dionne
3c2aa421b5 [Tuple] Provide efficient folds for tuple_t
Fixes #32
2015-04-06 14:28:09 -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
38e02e9f53 [Sequence] Rename scan{l,r,l1,r1} similarly to folds 2015-03-31 17:55:27 -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
ed78fcb22b [Benchmarks] Start writing more customized benchmarks 2015-03-25 10:30:58 -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
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
f15b54d3b8 [Benchmarks] Fix the closure/get/multiple benchmark 2015-02-23 21:22:21 -05:00
Louis Dionne
4e387cc2ff [Functional] Change the implementation of arg<n> so it can perfect forward. 2015-02-23 08:09:04 -05:00
Louis Dionne
3e78af4bcb [Tuple] Use make<Tuple>(...) instead of tuple(...) 2015-02-22 16:50:01 -05:00
Louis Dionne
9604c9a9f6 Replace List by Sequence 2015-02-20 11:05:43 -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
a90385271e Remove old benchmark code. 2014-11-26 20:27:38 -05:00
Louis Dionne
e0e2501931 List: add the remove_at method 2014-11-08 12:32:51 -05:00
Louis Dionne
302c33c8fa Fix broken benchmarks in techniques/closure/ 2014-11-08 10:43:13 -05:00
Louis Dionne
09619ad0c5 Refactor List benchmarks and ext::std::Tuple 2014-11-08 10:43:13 -05:00
Louis Dionne
a6310a046d Simplify the closure type 2014-10-28 14:22:58 -04:00
Louis Dionne
c2541c3713 Add detail::closure based on multiple-inheritance 2014-10-25 14:34:31 -04:00
Louis Dionne
905cdf7674 Benchmark different closure implementations. 2014-10-25 09:47:06 -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
2e94c2cd84 Fix a couple of bugs in the build system:
- Don't add benchmarks when the Benchmarks module is not available
- Properly handle tests and examples depending on Boost
2014-10-21 20:11:45 -04:00
Louis Dionne
b8a9cb1a3e Register benchmark for the subset method. 2014-10-19 17:46:11 -04:00
Louis Dionne
f0d9e9b9bb Add the intersperse method to List. 2014-10-16 16:56:39 -04:00
Louis Dionne
d74eb9e08f Add runtime and memory usage benchmarks. 2014-10-14 10:11:50 -04:00
Louis Dionne
6369313b32 Benchmark compile-time implications of using std::forward all around 2014-10-05 15:14:22 -04:00
Louis Dionne
bfda3810ee Guard the Boost-dependent benchmark 2014-09-30 09:33:03 -04:00
Louis Dionne
662592faff Allow passing additional compiler flags to data sets 2014-09-30 08:48:39 -04:00
Louis Dionne
fd473470c3 Add two runtime benchmarks for foldl 2014-09-30 08:21:36 -04:00
Louis Dionne
8e98fb808c Improve the accuracy of runtime benchmarks. 2014-09-29 11:18:48 -04:00
Louis Dionne
6b81bf4d36 Add runtime and memory usage benchmarks to Functor 2014-09-26 16:01:38 -04:00
Louis Dionne
a44e9b8d17 Benchmark a different way of reversing a parameter pack. 2014-09-22 11:13:28 -04:00
Louis Dionne
6ebcb5e701 Refactor the benchmarks 2014-09-22 10:26:29 -04:00
Louis Dionne
943c59c0a1 Refactor benchmarks. 2014-09-02 13:21:51 -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
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
41d6b75bc2 Add the product Type class and make Pair a simple data type 2014-07-28 18:35:57 -04:00
Louis Dionne
36610d3a22 Benchmarks: hide file from progressbar format 2014-07-23 20:30:32 -04:00
Louis Dionne
89a9a110e7 CMake: Handle dependencies on Boost properly 2014-07-23 07:22:49 -04:00
Louis Dionne
77152ad1f7 Benchmark: remove debug statements. oops! 2014-07-21 01:07:10 -04:00
Louis Dionne
6d150cf5ee List: add scanr, scanl, scanr1 and scanl1 2014-07-20 14:25:10 -04:00
Louis Dionne
7354c6258f Benchmarks: fix off by one error. 2014-07-20 13:04:59 -04:00
Louis Dionne
9949ef2260 Benchmark: fix list.drop_while 2014-07-19 22:33:04 -04:00
Louis Dionne
364b1a386e Use finer grained increments in benchmarks for 0..50 elements. 2014-07-19 18:34:51 -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
b0b7b09736 Modularize Iterable 2014-07-16 16:26:23 -04:00
Louis Dionne
674a889347 Modularize Foldable 2014-07-16 16:26:23 -04:00
Louis Dionne
83bd276b3e Modularize Functor 2014-07-16 16:26:22 -04:00
Louis Dionne
aa6aed5e3b Benchmarks: add implicit dependencies to datasets. 2014-07-12 15:30:19 -04:00
Louis Dionne
99c7e35cbb include(xs) -> include(n) in benchmark/list 2014-07-12 10:43:11 -04:00
Louis Dionne
0d277e968b Benchmark: fix benchmark.techniques.foldl.* 2014-07-09 18:08:38 -04:00
Louis Dionne
2fe7cc0b92 Add more benchmarks. 2014-07-09 17:55:56 -04:00
Louis Dionne
39bfaca8ff Benchmarks: Create Fusion stuff efficiently. 2014-07-09 16:56:45 -04:00
Louis Dionne
c4ff6e0842 Refactor benchmarks. 2014-07-09 15:36:36 -04:00
Louis Dionne
13b330fa41 Move mpl and fusion from ext/ to ext/boost/ 2014-07-08 10:13:02 -04:00
Louis Dionne
eb558b3ba1 Add foldl benchmarks for more sequences. 2014-07-07 18:51:26 -04:00
Louis Dionne
5a2de2073e Reorganize and rename the adapted/ folder. 2014-07-07 12:42:20 -04:00
Louis Dionne
2d6bc3cd79 Rename benchmarks/ to benchmark/ for consistency. 2014-07-07 12:05:38 -04:00