Вопрос по – Оператор Scala ~> (тильда больше чем)

27

У меня есть следующее определение класса scala (см. Статью), моделирование категорий:

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

может кто-нибудь объяснить мне, что такое "а"; значит в параметре типа Категория, а в методах тип возврата? Или направьте меня на ресурс, который это объясняет ... Я новичок в Scala (с Java), поэтому прости меня, если это то, что пользователь Scala должен был знать ... заранее спасибо

Ваш Ответ

1   ответ
29

~> это просто имя-заполнитель для параметра типаCategory, СловноT вclass Option[T].

Кроме того, синтаксис Scala позволяет писатьB ~> C как сокращение для~>[B, C].

Может быть, все станет яснее, если вы переименуете это:

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]
}
Теперь стало понятнее ... Я думаю, что привыкну свободно использовать странные символы для именования вещей (в отличие от Java). На самом деле я думал, что "~ & gt;" имел в виду что-то особенное, но это можно заменить чем-нибудь, как я правильно понимаю .. Большое спасибо! Andrea
Да, это совершенно произвольно (конечно, в рамках правил именования для идентификаторов в Scala).
Между прочим: причина, почему оператор & quot; была выбрана, то есть операторные символы вместо буквенных символов, была надежда, что в области теории категорий ~ & gt; легко переводит на понятие «морфизм»; (он же «отображение», «стрелка» и т. д.). Обычно вы должны быть осторожны с операторами.

Похожие вопросы