Scala Language
스 카스
수색…
소개
Scalaz 는 함수형 프로그래밍을위한 Scala 라이브러리입니다.
Scala 표준 라이브러리의 데이터 구조를 보완 할 수있는 순전히 기능적인 데이터 구조를 제공합니다. 기본 데이터 집합 클래스 (예 : Functor
, Monad
)와 많은 수의 데이터 구조에 해당하는 인스턴스 집합을 정의합니다.
ApplyUsage
import scalaz._
import Scalaz._
scala> Apply[Option].apply2(some(1), some(2))((a, b) => a + b)
res0: Option[Int] = Some(3)
scala> val intToString: Int => String = _.toString
scala> Apply[Option].ap(1.some)(some(intToString))
res1: Option[String] = Some(1)
scala> Apply[Option].ap(none)(some(intToString))
res2: Option[String] = None
scala> val double: Int => Int = _ * 2
scala> Apply[List].ap(List(1, 2, 3))(List(double))
res3: List[Int] = List(2, 4, 6)
scala> :kind Apply
scalaz.Apply's kind is X[F[A]]
FunctorUsage
import scalaz._
import Scalaz._
scala> val len: String => Int = _.length
len: String => Int = $$Lambda$1164/969820333@7e758f40
scala> Functor[Option].map(Some("foo"))(len)
res0: Option[Int] = Some(3)
scala> Functor[Option].map(None)(len)
res1: Option[Int] = None
scala> Functor[List].map(List("qwer", "adsfg"))(len)
res2: List[Int] = List(4, 5)
scala> :kind Functor
scalaz.Functor's kind is X[F[A]]
ArrowUsage
import scalaz._
import Scalaz._
scala> val plus1 = (_: Int) + 1
plus1: Int => Int = $$Lambda$1167/1113119649@6a6bfd97
scala> val plus2 = (_: Int) + 2
plus2: Int => Int = $$Lambda$1168/924329548@6bbe050f
scala> val rev = (_: String).reverse
rev: String => String = $$Lambda$1227/1278001332@72685b74
scala> plus1.first apply (1, "abc")
res0: (Int, String) = (2,abc)
scala> plus1.second apply ("abc", 2)
res1: (String, Int) = (abc,3)
scala> rev.second apply (1, "abc")
res2: (Int, String) = (1,cba)
scala> plus1 *** rev apply(7, "abc")
res3: (Int, String) = (8,cba)
scala> plus1 &&& plus2 apply 7
res4: (Int, Int) = (8,9)
scala> plus1.product apply (1, 2)
res5: (Int, Int) = (2,3)
scala> :kind Arrow
scalaz.Arrow's kind is X[F[A1,A2]]
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow