Skip to content

Contravariant and Invariant Functors Support #254

@stud1999

Description

@stud1999

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions