Tupler

trait Tupler[A, B]

Defines a strategy for tupling A and B values, according to types A and B.

Defines a strategy for tupling A and B values, according to types A and B.

The actual implementation avoids nested tuples and eliminates Unit, so that instead of ending with, e.g., the following type:

 ((Unit, Int), (((Unit, Unit), String)))

We just get:

 (Int, String)

The following rules are implemented (by increasing priority):

  • A, B -> (A, B)
  • A, (B, C) -> (A, B, C)
  • (A, B), C -> (A, B, C)
  • (A, B), (C, D) -> (A, B, C, D)
  • A, (B, C, D, E) -> (A, B, C, D, E)
  • (A, B), (C, D, E) -> (A, B, C, D, E)
  • (A, B, C), D -> (A, B, C, D)
  • (A, B, C, D), E -> (A, B, C, D, E)
  • (A, B, C, D, E), F -> (A, B, C, D, E, F)
  • A, Unit -> A
  • Unit, A -> A
Companion
object
class Object
trait Matchable
class Any

Type members

Types

type Out

Value members

Abstract methods

def apply(a: A, b: B): Out
def unapply(out: Out): (A, B)