-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove the old repeater in ample's charseq example #9
Comments
ghost
assigned irrequietus
Jan 10, 2014
Related to #18 from now on, to which is delegated. |
irrequietus
added a commit
that referenced
this issue
Mar 7, 2014
Several changes and additions in order for function binding notation to be available in both separate and high order function macros as present in ppmpf. Other changes in compilation flags during tests. This commit affects issues #9, #18, #20 and relatively issue #6 as well given its dependency upon supporting ppmpf function binding signatures in high order function macros using that eventual macro "type" system. Of special interest are the following details: 1) Introduced the pfld constructs in odreex/ppmpf/kernel/pfld in order to ensure non conflicting expansions in deeply nested and highly interdependent macro constructs depending on recursive expansion. This will eventually change the purpose of the old <odreex/ppmpf/algorithms/fold.hh> contents to just folds and not holding key mechanisms for recursive expansion based recursive application of macros when high order functions are deployed in ppmpf. 2) The major candidate for implementing a high order map function over safe / unsafe tuples is the PPMPF_BDS31 macro which is to be used for evolving current PPMPF_TUP_MAP, PPMPF_UTUP_MAP into forms accepting both binding notation and plain old function macros. 3) The function binding notation semantics for PPMPF_BDS31 are the following: *) Placeholders are comprised of a single or double underscore followed by a number in range [0,9]. Single underscore ones means that no removal of balanced parenthetical enclosure occurs. Double underscores remove said enclosure. *) Placeholder ranges of [_1,_9] and [__1,__9] are used as argument ordinals in final function application over the entire series of arguments involved. *) The constant placeholder is introduced as an underscored balanced parenthesis in the form of _(...) where ... can be substituted by any content by the end user. During argument substitution, the content will be passed as an argument without balanced parenthetical enclosure. *) The function meta - description in the "binding" signature for a given function f is expressed as a 2-tuple where the first item is the function macro identifier itself and the second item is a 2-sequence where the first item can only be of placeholder set {_0,__0}. The second item is actually a n-tuple of placeholders in range [_1,_9] and [__1,__9] in any combination with any number of constant placeholders. 4) PPMPF_BDS30 is the prototype that is going to be deprecating the current proof of concept PPMPF_TUP_BINDER and PPMPF_UTUP_BINDER macros. 5) When building tests, -fconstexpr-depth=1024 is choosen as the new default for constexpr default recursion depth and thus is from now on passed as a flag during compilation. A test has been added especially in tests/ppmpf/bds31.cc for PPMPF_BDS31 that can be compiled and run with 'make just ppmpf/bds31.cc'. Of note, there are still optimizations to be made to the constructs involved in such an expansion mechanism.
irrequietus
added a commit
that referenced
this issue
Mar 8, 2014
With the work done on PPMPF_BDS31, a ppmpf branching expression was used in order for the PPMPF_TUP_MAP / PPMPF_UTUP_MAP to become bind - aware. The newer macro is at its 3rd generation and is to be the prototype upon which PPMPF_TUP_MAP, PPMPF_UTUP_MAP and PPMPF_SEQ_MAP are going to be unified and become bind - aware. Affects series of dependent issues #6, #9, #18, #20. The macro has its own dedicated test that can be checked with 'make just ppmpf/map.cc'. This macro is going to be used as the model upon which the other high order function emulators are going to evolved into macros with "binding" and "type" features like the left and right folds, zip, zipwith.
Will be introducing the streamlined mechanism I have worked out of the far more generic one used in |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Once ppmpf high order macros are complete, transit to deploying them instead of the initial repeater macro, while also removing it from macro core.
The text was updated successfully, but these errors were encountered: