Ranges, what it should look like #676
Replies: 10 comments 8 replies
-
Here is a first bunch of comments on the main goal pages: GOALSPotential for all STL algorithms
We agree. We should also be flexible enough to cover new state of the art algorithms that don't exist in ZIP support
Agree Close to STL / ranges interface by default
We must be as familiar as possible till the point it deserves us. I think that if somethign can't be done efficiently usign std interface, we must change it.
Can't using range-like object (ie begin/end pair in a single object) helps us in this point ? Customisability
I think this is where our named parameters support will come handy cause it won't clutter the interface. Especially now that raberu supports concepts over keywords. One argument type for callbacks
Are we OK we still support the case where people actually pass us a polymorphic lambda using cardinal-agnostic code? NON-GOALSNon contiguous ranges
Yes, they are too niche to be used generically. We may end up usign scatter/gather in higher level constructs that may end up in aside libraries. Conceptually different iterator/sentinel types
Agree |
Beta Was this translation helpful? Give feedback.
-
Here we highlight the ways in which we would like the usage of the ranges library to look like. helpersI guess this section is just saying we define those types for further discussion? Or do we want to provide such things as aligned_vector? find a number
I thought we were looking at find returning an find a number matching some condition
disable unrolling
FYI, Raberu gives use template<rbr::keyword_parameter... Options>
find(eve::aligned_ptr<float const>, float const*, complex_check, Options&& ... args) -> float const*
requires( rbr::match<Options...>::with( eve::unroll_factor | eve::no_unrolling) ) aligned end
Old Boost.SIMD had a |
Beta Was this translation helpful? Give feedback.
-
Difference from STL/ranges.
Yes to all of that Dealing with cardinality
Yes Fundamental iterator interface
You mean using the same system we internally use in EVE or another kind of tag dispatch ?
This is similar to what Requirements to do find
I agree
I don't get it.
Again, I'm a bit lost Requirement to go to an aligned iteration.
OK Requirements to do zip
Do we? Or can we choose which one of the type give us the correct cardinal? Or can't we infer it by takign the smallest cardinal for all the type ?
This is a larger question I guess :/ |
Beta Was this translation helpful? Give feedback.
-
Added first list of tasks to do: https://github.com/jfalcou/eve/wiki/Ranges:-Stories-sketch |
Beta Was this translation helpful? Give feedback.
-
Sketch of the first algorithm: https://github.com/jfalcou/eve/pull/694/files |
Beta Was this translation helpful? Give feedback.
-
Generate looks a touch weird: https://github.com/jfalcou/eve/wiki/Ranges:-Generate-is-weird Any thoughts? |
Beta Was this translation helpful? Give feedback.
-
tuple<wide...> - ooff. https://github.com/jfalcou/eve/wiki/Ranges:-tuple<wide,...>-is-not-that-simple What do you think |
Beta Was this translation helpful? Give feedback.
-
Thoughts on bundle and what we can do with it: https://github.com/jfalcou/eve/wiki/Ranges:-bundles,-objects-and-zips |
Beta Was this translation helpful? Give feedback.
-
Reduce interface: |
Beta Was this translation helpful? Give feedback.
-
How to name a shuffle? |
Beta Was this translation helpful? Give feedback.
-
I started writing a wiki page: https://github.com/jfalcou/eve/wiki/Ranges
At this point could be good for others to have a look.
Beta Was this translation helpful? Give feedback.
All reactions