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