Skip to content

Fill in the Doxygen stanzas across include/fn and include/pfn - #388

Merged
Bronek merged 5 commits into
mainfrom
bronek/update_Doxygen_stanzas
Jul 29, 2026
Merged

Fill in the Doxygen stanzas across include/fn and include/pfn#388
Bronek merged 5 commits into
mainfrom
bronek/update_Doxygen_stanzas

Conversation

@Bronek

@Bronek Bronek commented Jul 29, 2026

Copy link
Copy Markdown
Member

Fill in the Doxygen stanzas across include/fn and include/pfn, and extend the docs site over them.

include/fn

Every public entity carries a real stanza (no TODO skeletons remain), written in the TYPE_ALGEBRA ( #359 ) vocabulary: one stanza per cv/ref overload set, @tparam only where it carries API meaning, nielbloids pointing at their pipeline spelling. Two pre-existing factual errors corrected en route (filter's on_err value category; same_kind's contract note).

include/pfn

Class-level stanzas plus pfn-specific deviations only; members mandated by the standard stay bare, each class stanza pointing at the stable name ([expected.object], [optional.optional], ...) instead of restating it. Documented deviations: derived noexcept (the inline // extension markers), hardened preconditions via the LIBFN_ASSERT hook, expected's comparison against a value at namespace scope, optional<T&>'s deferred dangling-reference guards, and the P2819 gate on std::complex in the apply traits. All standard-wording claims verified against the live working draft.

docs/

New chapters: expected, optional, composition, multidispatch (fn) and pfn (chapter index plus per-type pages expected/optional/utility); doxygen directive count 31 → 88.

Verification

  • build and tests green (43/43)
  • full export_docs (doxygen 1.12.0 + znai 1.73, the ci-docs image versions) passes locally; every page renders and all 88 directives resolve, specialization compound spellings included
  • doxygen warning set identical to the pre-change baseline (zero new warnings)

Documentation-only change: no test accompanies it, as there is no behaviour to test.

Closes #121

Assisted-by: Claude:claude-fable-5

Bronek added 4 commits July 29, 2026 14:14
One stanza per cv/ref overload set, as just.hpp already does - the
skeleton blocks on the sibling overloads are removed, not lost. Two
pre-existing claims corrected: filter's on_err consumes the value in
the operand's value category, not "by const reference"; same_kind's
category-theory note replaced with the concrete contract.

Assisted-by: Claude:claude-fable-5
New chapter pages for expected, optional, composition and multidispatch;
docs/index.md realigned with README. The optional/transform_error page
no longer claims a return value: the operation is rejected on optional,
as tests/fn/transform_error.cpp pins.

Assisted-by: Claude:claude-fable-5
Class-level stanzas plus pfn-specific deviations only: members mandated
by the standard stay bare, each class stanza pointing at the stable name
([expected.object], [optional.optional], ...) instead of restating it.
Deviations documented: noexcept clauses derived where the standard
leaves them unspecified (the inline "// extension" markers), hardened
preconditions checked via the LIBFN_ASSERT hook, expected's comparison
against a value at namespace scope, optional<T&>'s deferred
dangling-reference guards, and the P2819 gate on std::complex in the
apply traits. All standard-wording claims verified against the live
working draft.

Assisted-by: Claude:claude-fable-5
One chapter with per-type pages: index (the polyfill layer and its
deliberate deviations), expected, optional, and utility (apply with its
applicability traits, invoke_r, unreachable). All 14 new doxygen
directives verified against the XML index, including the specialization
spellings pfn::expected< void, E >, pfn::optional< T & > and
pfn::bad_expected_access< void >.

Assisted-by: Claude:claude-fable-5
@codecov

codecov Bot commented Jul 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@godexsoft

Copy link
Copy Markdown
Collaborator

Nice! i am not reviewing this huge PR unless you ask me to but i'm curious to see the resulting docs site with all this info in 👍

@augmentcode

augmentcode Bot commented Jul 29, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR completes the public API documentation by filling in all remaining Doxygen stanzas across include/fn and include/pfn, and expands the generated docs site to surface that material.

Changes:

  • Replaced TODO/skeleton Doxygen blocks with detailed contracts for key fn carriers and verbs (e.g., copack, choice, expected, optional, pack, and pipeline operations).
  • Documented multidispatch facilities (fn::apply/apply_r traits and entry points, plus fn::overload).
  • Added and refined docs-site chapters/pages for composition, multidispatch, expected/optional (fn), and a new polyfill-layer section (pfn).
  • Clarified several API semantics in docs (e.g., graded copack lifting, exhaustive dispatch expectations, and when operations are intentionally rejected/vacuous).
  • Updated the docs table-of-contents to include the new pages.

Technical Notes: The PR is documentation-only (no behavioral changes); the Doxygen/znai directive set is expanded to cover more entities and signatures, and the text standardizes terminology around the library’s type-algebra vocabulary.

🤖 Was this summary useful? React with 👍 or 👎

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. 2 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

Comment thread docs/multidispatch/index.md
Comment thread docs/composition/index.md
Review finds on PR #388: docs/multidispatch documents fn::overload,
which fn/functional.hpp does not provide - the overload section now
carries its own <fn/utility.hpp> badge; docs/composition's intro could
read as if fn/pack.hpp alone provided the carrier & and | operators -
it now says each carrier's header declares its own, with the n-ary
folds here.

Assisted-by: Claude:claude-fable-5
@Bronek

Bronek commented Jul 29, 2026

Copy link
Copy Markdown
Member Author

augment review

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. No suggestions at this time.

Comment augment review to trigger a new review at any time.

@Bronek
Bronek merged commit b11a2b6 into main Jul 29, 2026
65 checks passed
@sonarqubecloud

Copy link
Copy Markdown

@Bronek

Bronek commented Jul 29, 2026

Copy link
Copy Markdown
Member Author

Nice! i am not reviewing this huge PR unless you ask me to but i'm curious to see the resulting docs site with all this info in 👍

It needs some adjustments - see libfn.org. But it's a better version that the last one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fill in documentation stanzas

2 participants