Andrea
Andrea

Reputation: 335

Scala ~> (tilde greater than) operator

I have the following scala class definition (found in a paper), modeling categories:

trait Category[~>[_, _]] {
    def compose[A, B, C]
     (f: B ~> C)
     (g: A ~> B)
     : A ~> C
    def id[A]: A ~> A
}

can someone explain me what the '~>' means in the Category type parameter, and in the methods return type? Or direct me to a resource that explains it... I'm new to Scala (coming from Java), so forgive me if that's something a scala user should have known... Thank you in advance

Upvotes: 28

Views: 10196

Answers (2)

Zephaniah Grunschlag
Zephaniah Grunschlag

Reputation: 1084

This is also used in Akka streams as the edge operator.

Upvotes: 1

Debilski
Debilski

Reputation: 67828

~> is just the placeholder-name for the type-parameter of Category. Like the T in class Option[T].

Additionally, Scala syntax allows you to write B ~> C as a shorthand for ~>[B, C].

Maybe things get clearer, if you rename it:

trait Category[Mapping[_, _]] {
  def compose[A, B, C](f: Mapping[B, C])(g: Mapping[A, B]): Mapping[A, C]
  def id[A]: Mapping[A, A]
}

Upvotes: 37

Related Questions