Removes the restriction on the amount of non-void Parsers that can be used in a Parserbuilder #367
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request eliminates the need for all Take*n overloads except for Take2 while maintaining full backward compatibility.
The Take2.Map parameter pack construct is a deliberate tradeoff. Ideally, we would prefer to use a
Conversion
with aMapConversion
for a more elegant solution. However, consider the following hypotheticalTupleConversion
:While functional, this approach depends on macOS 14 for its use of parameter packs in generics, which makes it incompatible with earlier versions. As a result, introducing Take2.Map strikes a practical balance: it ensures backward compatibility while adding only minimal complexity to the surface area.
For verification, refer to
VariadicTests.swift
, which includes passing tests.PS: I recommend exploring further if and to what extent the existing Map infrastructure can be leveraged over
Take2.Map
.