• Public
  • Public/Protected
  • All

Type class laws defined for Functor.

This is an abstract definition. In order to use it in unit testing, the implementor must think of a strategy to evaluate the truthiness of the returned Equiv values.

Even though in TypeScript the Funfix library is using classes to express these laws, when implementing this class it is recommended that you implement it as a mixin using implements, instead of extending it directly with extends. See TypeScript: Mixins for details and note that we already have applyMixins defined.

We are doing this in order to support multiple inheritance and to avoid inheriting any static members. In the Flow definitions (e.g. .js.flow files) for Funfix these classes are defined with interface, as they are meant to be interfaces that sometimes have default implementations and not classes.

Type parameters

  • F


  • FunctorLaws

Implemented by




F: Functor<F>

The Functor designated instance for F, to be tested.



  • covariantComposition<A, B, C>(fa: HK<F, A>, f: function, g: function): Equiv<HK<F, C>>
  • fa.map(f).map(g) <-> fa.map(x => g(f(x)))

    Type parameters

    • A

    • B

    • C


    • fa: HK<F, A>
    • f: function
        • (a: A): B
        • Parameters

          • a: A

          Returns B

    • g: function
        • (b: B): C
        • Parameters

          • b: B

          Returns C

    Returns Equiv<HK<F, C>>


  • covariantIdentity<A>(fa: HK<F, A>): Equiv<HK<F, A>>


  • Module
  • Object literal
  • Variable
  • Function
  • Function with type parameter
  • Index signature
  • Type alias
  • Enumeration
  • Enumeration member
  • Property
  • Method
  • Interface
  • Interface with type parameter
  • Constructor
  • Property
  • Method
  • Index signature
  • Class
  • Class with type parameter
  • Constructor
  • Property
  • Method
  • Accessor
  • Index signature
  • Inherited constructor
  • Inherited property
  • Inherited method
  • Inherited accessor
  • Protected property
  • Protected method
  • Protected accessor
  • Private property
  • Private method
  • Private accessor
  • Static property
  • Static method

Generated using TypeDoc