-
Notifications
You must be signed in to change notification settings - Fork 35
Open
Description
Extend the functor hierarchy beyond covariant functors to include Contravariant and Invariant functors. This enables working with types that consume values (contravariant) or both produce and consume (invariant), completing the functional programming toolkit.
Technical Details:
- Contravariant typeclass with contramap operation
- Invariant typeclass with imap operation
- Divisible/Decidable for contravariant applicatives
- Integration with existing functor infrastructure
- Equivalence and Comparison types as examples
- Predicate and Validation builders
Use Cases:
- Parser combinators (both parse and serialize)
- Serialization/Deserialization frameworks
- Validation with error formatting
- Equivalence relation composition
- Codec builders (encode/decode)
Implementation Challenges:
- Explaining variance in Python context
- Type system limitations for variance annotations
- Finding compelling Python-specific use cases
- Performance considerations
Metadata
Metadata
Assignees
Labels
No labels