Reputation: 335
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
Reputation: 1084
This is also used in Akka streams as the edge operator.
Upvotes: 1
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