[Fit] upcoming formal review for Boost.Fit
Dear Boost community, The formal review of Paul Fultz II's Fit library starts on Wednesday, 2nd March and ends on 13th March. Fit is a header-only C++11/C++14 library that provides utilities for functions and function objects. Fit is: - Modern: Fit takes advantages of modern C++11/C++14 features. It support both `constexpr` initialization and `constexpr` evaluation of functions. It takes advantage of type deduction, variadic templates, and perfect forwarding to provide a simple and modern interface. - Relevant: Fit provides utilities for functions and does not try to implement a functional language in C++. As such, Fit solves many problems relevant to C++ programmers, including initialization of function objects and lambdas, overloading with ordering, improved return type deduction, and much more. - Lightweight: Fit builds simple lightweight abstraction on top of function objects. It does not require subscribing to an entire framework. Just use the parts you need. Fit is divided into three components: * Function Adaptors and Decorators: These enhance functions with additional capability. * Functions: These return functions that achieve a specific purpose. * Utilities: These are general utilities that are useful when defining or using functions Fit has been tested on gcc 4.6-4.9, clang 3.4-3.7, and Visual Studio 2015. For more information see: Github:https://github.com/pfultz2/Fit/tree/boost Documentation:http://pfultz2.github.io/Fit/doc/html/ Note that, as Fit is a functional library, the semantic of the functions is given in the form of `equations` instead of the classic effects, returns schema. This is because most of the functions have no side effects. E.g. the semantic of the function flip is defined as |assert(flip(f)(x, y, xs...) == f(y, x, xs...));| and the semantic of compose as |assert(compose(f, g)(xs...) == f(g(xs...)));| We await your feedback! Best regards, Vicente J. Botet Escriba P.S. Paul, now it is time to freeze the version that will be reviewed. I suggest you to create a branch on which you could fix the review issues.
On Sat, Feb 27, 2016 at 8:16 AM, Vicente J. Botet Escriba < vicente.botet@wanadoo.fr> wrote:
Dear Boost community,
The formal review of Paul Fultz II's Fit library starts on Wednesday, 2nd March and ends on 13th March.
I'm looking through the documentation right now and it looks great, though I have not used the library yet. Some suggestions -- I think the docs really need a more formal motivation/tutorial section at the very front. It starts with *what* the library is in very general terms, and jumps quickly into what the library can do, but I think a bit of a narrative describing a motivating example would help sell it to those who are not already more familiar with the *why*. This is done a little bit, scattered throughout the docs, but I find that the best docs usually tell something of a story. This is just a request. I suggest not using the name FunctionObject for something that is only callable with a const object. This is a little more specific that what most people refer to as a function object in C++ and may cause confusion. I'm fairly certain that the reinterpret casting involved with BOOST_FIT_STATIC_LAMBDA is UB. -- -Matt Calabrese
On Sunday, February 28, 2016 at 6:12:22 PM UTC-6, Matt Calabrese wrote:
On Sat, Feb 27, 2016 at 8:16 AM, Vicente J. Botet Escriba < vicent...@wanadoo.fr javascript:> wrote:
Dear Boost community,
The formal review of Paul Fultz II's Fit library starts on Wednesday, 2nd March and ends on 13th March.
I'm looking through the documentation right now and it looks great, though I have not used the library yet. Some suggestions -- I think the docs really need a more formal motivation/tutorial section at the very front. It starts with *what* the library is in very general terms, and jumps quickly into what the library can do, but I think a bit of a narrative describing a motivating example would help sell it to those who are not already more familiar with the *why*. This is done a little bit, scattered throughout the docs, but I find that the best docs usually tell something of a story. This is just a request.
Do you have an idea of what kind of problem would make a good motivating example for this library? The quick start guide moves quickly so people can quickly see what the library can do. However, a more in-depth turtorial could be useful as well. I just need to think of a larger problem that stays focus on the functional aspect.
I suggest not using the name FunctionObject for something that is only callable with a const object. This is a little more specific that what most people refer to as a function object in C++ and may cause confusion.
Good point. This would also apply to Callable as well.
I'm fairly certain that the reinterpret casting involved with BOOST_FIT_STATIC_LAMBDA is UB.
Not really, since the objects are empty, there is no data access. I have a static assert to guard against this restriction. Also, on gcc and clang with BOOST_FIT_STATIC_LAMBDA_FUNCTION, the reinterpret cast happens at compile- time. Now there could be an insane implementation where this doesn't work(perhaps the lambdas are not empty for some strange reason), which the library would have to apply a different technique to make it work. However, this is quite unlikely considering that C++ will probably get constexpr lambdas and inline variables in the future. Paul
participants (3)
-
Matt Calabrese
-
Paul Fultz II
-
Vicente J. Botet Escriba