Skip to content

Latest commit

 

History

History
21 lines (15 loc) · 748 Bytes

CONTRIBUTING.md

File metadata and controls

21 lines (15 loc) · 748 Bytes

Contributing guidelines

General

  • Modules are defined according to the degree of compromise with the language.
  • Variance annotations are prohibited on both type classes and data structures, they may cause ambiguity.

Data types

  • ADTs
    • Singleton constructors that require variance (like Maybe.Empty) can be encoded using Liskov lifting if their scope does not escape the data package.

Type classes

  • Hierarchy
    • For each trait of the hierarchy, a particular typeclass must appear only once as return type in one hierarchy level (BH1, BH2, ...).
    • Companion objects should only declare implicit instances for the type classes at the top of a hierarchy.