Skip to content

Inline typeclass instances in specialized functions #1976

Description

@texastoland

Given:

inOrder :: forall a. (Ord a) => a -> a -> Tuple a a
inOrder a1 a2 | a1 < a2 = Tuple a1 a2
inOrder a1 a2 = Tuple a2 a1

Generate:

var inOrder$ordInt = function (_1) {
  return function (_2) {
    if (Prelude.greaterThan(ordInt)(_1)(_2)) {
      return Data_Tuple.Tuple(_1)(_2);
    };
    return Data_Tuple.Tuple(_2)(_1);
  };
};

When: let x = inOrder 1 2

Why: One fewer closures.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions