scalaz 라이브러리에는 Kleisli이라고하는 trait이 있습니다. 코드를 보면 : import scalaz._
import Scalaz._
type StringPair = (String, String)
val f: Int => List[String] = (i: Int) => List((i |+| 1).toString, (i |+| 2).to
와 모나드 : import scalaz._
import Scalaz._
final class Reader[E,A](private[Reader] val runReader: E => A)
object Reader {
def apply[E,A](f: E => A) = new Reader[E,A](f)
def env[E]: Reader[
내가 ListW.<^> 놀아되었다, 정의는이다 :이 def <^>[B: Zero](f: NonEmptyList[A] => B): B = value match {
case Nil => ∅
case h :: t => f(Scalaz.nel(h, t))
}
내가 올 방법을 알아낼 수 없습니다 Option이 예 scala> case clas
scalaz의 메소드 중 상당수는 forever 및 ∞과 같은 상징적 인 유니 코드 등가물을 사용합니다 (물론이 방법은 잘못된 방법으로 사용합니다. 심볼릭 방법에는 실제로 ASCII가 있습니다). 이 프로젝트는 IDEA의 live templates XML file 그래서 이러한 자동 완성, 나는 (위의 인스턴스)를 forever+TAB 바로 가기를 사용하여
State을 사용하여 List.zipWithIndex의 동작을 어떻게 모방합니까? 내가 (작동하지 않는) 지금까지 함께 온 것은 : def numberSA[A](list : List[A]) : State[Int, List[(A, Int)]] = list match {
case x :: xs => (init[Int] <* modify((_:Int)
기능 및 오브젝트를 전환하고자 할 때, 좀 더 가독성을 확보 할 수 있도록 scalaz|> 연산자를 사용할 수 있습니다. 모델 함수를 소개하겠습니다. def length2(x:String) = x.length * 2 자, 두 가지 방법으로 쓸 수 있습니다 : "aoeu" |> length2
length2("aoeu") 그러나이 함수를 좀 더 일반적인 것으
매우 커서 List[A]이고 함수는 f: List[A] => List[B]입니다. 내 원래 목록을 최대 크기의 하위 목록으로 분할하고 차례로 각 하위 목록에 함수를 적용한 다음 을 분할하지 않은의 결과를 하나의 큰 List[B]으로 만듭니다. 이 아주 쉽게 : def split[T](l : List[T], max : Int) : List[List[T]] =