знаю ответы, но тем кто не знает может быть интересно подумать.
Int - это тип. Множество всех типов иногда обозначают как *.
Ещё примеры типов: String, List[Int], Map[String, Int].
Option[T] - это функция от любого типа в тип обёрнутый в Option. Такие функции иногда обозначают как * -> *.
То есть Int -> Option[Int], List[Int] -> Option[List[Int]], Map[String, Int] -> Option[Map[String, Int]].
Functor[F[_]] - это функция высшего порядка. Она берёт любую функцию над типами (такую как Option) и превращает её в соотвествующий тип. Такие функции иногда обозначают (* -> *) -> *.
Вопросы:
- Что является аргументом / параметром для функции Functor[F[_]]? Приведите примеры.
- Что является значением / результатом для функции Functor[F[_]]? Приведите примеры.
- Сможете ответить на те же вопросы относительно функции Monad[F[_]]?
1)Тайп конструктор 2)Конкретный тип 3)Те же самые ответы
С этим в лёрн
1) Option 2) Functor[Option] 3) Monad[Option]
* -> * даже в хаскеле задепрекейтили
Functor[F[_]] - это совершенно непонятно что, может быть разными штуками в зависимости от контекста если объявлено trait Functor[F[_]], то Functor ещё можно рассматривать как тип (Type -> Type) -> Type А Functor[F[_]] - это в скале уже просто Type
Обсуждают сегодня