Commit Graph

1973 Commits

Author SHA1 Message Date
Louis Dionne
40a7456bb1 Remove outdated TODOS. 2014-10-27 17:15:59 -04:00
Louis Dionne
503d372459 Lower the requirements on the arguments to drop and at. 2014-10-27 17:08:00 -04:00
Louis Dionne
fcca565695 Remove outdated TODO 2014-10-27 16:58:13 -04:00
Louis Dionne
80ab04ede0 Simplify datatype and enabled_operators implementations. 2014-10-27 16:43:49 -04:00
Louis Dionne
eddece8d00 Use the nested hana struct to define enabled operators. 2014-10-27 16:31:03 -04:00
Louis Dionne
cc8455dd65 Use the nested hana struct to instantiate unary type classes. 2014-10-27 16:14:02 -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
087f48010d Fix typo in test::CNumeric. 2014-10-27 14:59:20 -04:00
Louis Dionne
da792149c1 Improve CMake output when generating data sets 2014-10-26 18:36:44 -04:00
Louis Dionne
847c53c6d3 Fix dangling reference in Foreign::{succ,pred}_impl. 2014-10-25 21:13:28 -04:00
Louis Dionne
fe1f1c65a7 Use functional utilities instead of handwritten lambdas when easy to do so. 2014-10-25 20:45:21 -04:00
Louis Dionne
1873a828c5 Simplify id's implementation. 2014-10-25 19:59:53 -04:00
Louis Dionne
133775bf20 Perform eta reduction in Tuple at_impl. 2014-10-25 14:34:32 -04:00
Louis Dionne
c2541c3713 Add detail::closure based on multiple-inheritance 2014-10-25 14:34:31 -04:00
Louis Dionne
187f396711 Add std::declval and std::add_rvalue_reference to detail:: 2014-10-25 12:56:30 -04:00
Louis Dionne
cf9ea4995e Ensure plots are redrawn when the datasets are updated.
Right now, the plots are also redrawn when they are not needed. Since
this is basically free, it should not be a problem.
2014-10-25 09:47:06 -04:00
Louis Dionne
905cdf7674 Benchmark different closure implementations. 2014-10-25 09:47:06 -04:00
Louis Dionne
8adb3353f6 Use functional utilities instead of hand rolled equivalents in some places. 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
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
e6c16a1394 Add more laws to Functor. 2014-10-22 10:43:16 -04:00
Louis Dionne
806b941603 Instantiate Searchable and Iterable with String. 2014-10-21 23:53:28 -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
e70e06c831 Add support for std::ratio. 2014-10-20 11:50:43 -04:00
Louis Dionne
b8a9cb1a3e Register benchmark for the subset method. 2014-10-19 17:46:11 -04:00
Louis Dionne
3fc1426f15 README: update the compiler requirements 2014-10-19 17:27:38 -04:00
Louis Dionne
93c0d4a8eb Fix broken links to benchmark plots in the documentation. 2014-10-19 17:23:30 -04:00
Louis Dionne
7b18a4598c Add perfect forwarding in Map. 2014-10-17 18:54:23 -04:00
Louis Dionne
ac528b81ba Add the insert function to Set. 2014-10-17 18:29:50 -04:00
Louis Dionne
b09096c11f Split ext/ integral constants into different files. 2014-10-17 16:31:16 -04:00
Louis Dionne
653d083eb0 Instantiate Foldable and Orderable with String. 2014-10-17 10:23:31 -04:00
Louis Dionne
f4276a5dcf Remove outdated operator_ experiment. 2014-10-17 09:31:01 -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
367ba66227 Undo 8076305 (constexpr-initialized lambdas).
This turned out to be pretty much useless because the call operator
still couldn't be made constexpr. Since that added a bit of complexity
without any gain, this is removed.
2014-10-16 17:13:09 -04:00
Louis Dionne
f0d9e9b9bb Add the intersperse method to List. 2014-10-16 16:56:39 -04:00
Louis Dionne
1280806839 Provide an instance of Foldable for Products. 2014-10-16 08:43:08 -04:00
Louis Dionne
7b57e7b474 Low hanging optimizations in Tuple. 2014-10-16 08:18:25 -04:00
Louis Dionne
30a4b02a68 Make sure the non-template operators for placeholders are inlined 2014-10-14 20:16:48 -04:00
Louis Dionne
177a7f11f3 Add an overload utility to the sandbox. 2014-10-14 17:38:56 -04:00
Louis Dionne
d74eb9e08f Add runtime and memory usage benchmarks. 2014-10-14 10:11:50 -04:00
Louis Dionne
4335c4915c Move list/free/convert.hpp to list/convert.hpp 2014-10-11 16:04:12 -04:00
Louis Dionne
002320cdf6 Add variadic take and variadic split_at. 2014-10-11 15:58:04 -04:00
Louis Dionne
88579de954 Allow folding move-only rvalue Records by constraining accessors. 2014-10-11 14:26:39 -04:00
Louis Dionne
9bc46dd205 Add more perfect forwarding. 2014-10-11 13:20:30 -04:00
Louis Dionne
5c0755b496 Fix bugs where we default initialized lambdas. 2014-10-08 20:46:10 -04:00
Louis Dionne
4ff5485bd3 Remove workarounds for now-fixed libc++ #19616 2014-10-08 19:31:28 -04:00
Louis Dionne
d08c5c2f36 Fix broken include guard in set/convert.hpp 2014-10-07 20:20:19 -04:00
Louis Dionne
c6e79c1075 Add missing decltype(auto) to some foreign methods. 2014-10-07 19:37:57 -04:00