Production Ready Release Candidate
Pre-release
Pre-release
About
beman.monadics v1.0.0. A header-only C++20 library that generalizes monadic operations (and_then, transform, or_else, transform_error) as free functions for any "box" type — std::optional, std::expected, smart pointers, raw pointers, and user-defined types. Includes a WG21 paper draft targeting C++29 standardization.
Release Maturity
This release has a status of Under development and not yet ready for production use..
Changelog
New features and improvements
- Core monadic operations as free functions:
and_then,transform,or_else,transform_error - Pipe (
|) syntax for chaining operations box_traitsextension point for adapting custom typescallable_adaptorfor user-defined pipe-composable operations- Built-in support for
std::optional,std::expected, raw pointers,std::shared_ptr, and enum types voidvalue type support inand_thenandtransform- Value-category preserving operations
- Automatic trait deduction from type structure
- WG21 paper draft (
docs/paper.md) - Tutorial and design rationale documentation
Bug fixes
- Fix
or_else: don't allow change ofvalue_type - Fix
get_make_fn: checkTraits::make()beforeBox{}for void value types - Fix
has_value: remove noexcept requirements and add const - Fix CURLcode enum traits
Refactoring
- Replace
pipe_adaptor/access_keywithcallable_adaptor - Remove noexcept and update
box_traits<expected>in docs/examples
Build system and CI
- CI matrix: GCC 11–16, Clang 17–22, AppleClang, MSVC; C++20/23/26; Debug/Release/MaxSan/TSan/Coverage
- CMake presets, FetchContent lockfile, pre-commit hooks (clang-format, gersemi, codespell)
- Vcpkg registry support
Full Changelog: v0.1.0...v1.0.0