scalabook

Форк
0
59 строк · 1.3 Кб

Split

Формальное определение

Split

- полугруппоид (Compose
), допускающий произведения.

Split

должен удовлетворять законам Compose
.

Определение в виде кода на Scala

trait Split[=>:[_, _]] extends Compose[=>:]:
def split[A, B, C, D](f: A =>: B, g: C =>: D): (A, C) =>: (B, D)

Примеры

Функция от одной переменной

object Split:
given Split[Function1] with
override def compose[A, B, C](f: B => C, g: A => B): A => C = g andThen f
override def split[A, B, C, D](f: A => B, g: C => D): ((A, C)) => (B, D) =
(a, c) => (f(a), g(c))

Реализация

Реализация в Cats

import cats.*, cats.data.*, cats.syntax.all.*
lazy val f = (_:Int) + 1
lazy val g = (_:Int) * 100
(f split g)((1, 1))
// res0: (Int, Int) = (2, 100)

Реализация в ScalaZ

import scalaz.*
import Scalaz.*
// ... Все операции родителей

Ссылки:

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.