내가 돌아 Scalaz Reader을 변경할 수있는 기능, type Action[A] = Reader[Session, A]
def findAccount(s: String): Action[Account] =
Reader((session: Session) => Account(s))
나는 결국 내가 원하는 때문에 type ActionT[A] =
Rounnar Bjarnason의 "합리적인 가격의 모나드가있는 구성 가능한 응용 프로그램 아키텍처"를 생각해 본 끝에 Scalaz의 비디오에 제공된 예제를 작성하기 시작했습니다. 인터랙트 앱을위한 작가 기반의 인터프리터를 구현할 때 약간 놀랄 것입니다. 작가 자체가 모나드이기 때문에 여기가 상호 작용 무료 모나드를위한 통역으로 ConsoleW를 들어 올리
재생 프레임 워크 내에서 스칼라즈의 IO 모나드를 사용하는 작은 예제를 작성했습니다. 예상대로 작동 아래의 예 : 재생 ActionBuilder의 사용이 약간 덜 자세한 API이 발생할 수 있습니다 경우 object IOAction {
def apply(action:IO[Result]):Result = action.unsafePerformIO
}
예를 들어, 두 개의 라인으로 분리하고 불필요한 변수를 삽입하지 않고도 긴 표현식 끝에 x * (x - 1)을 얻고 싶습니다. . scala> implicit class Rich[T](x: T) { def let[U](f: T => U) = f(x)}
defined class Rich
scala> List(1,2,3).map(_ + 1).sum.let
syntax.IdOps는 implicits를 (참조, selfless pattern)을 가져올 수 없음 "동반자"개체가없는 것, 그래서 예를 들어 REPL에서 그것을 사용하기 어렵다 : 가져올 수있는 방법이 scala> val selfish = new scalaz.syntax.ToIdOps{} //I don't want to do this, it feels
이 컴파일 방법 또는 이와 유사한 방법? import scala.concurrent.Future
import scalaz._
import Scalaz._
val ee: Future[Unit \/ Option[Int]] = Future(\/-(Option(1)))
OptionT.optionT(EitherT.eitherT(ee))
나는 Tuple2[Seq[E], Seq[S]]으로 나눠야하는데, 이것을 코딩하는 동안 seqs의 튜플에 대해 Bifunctor 사용자 지정을 사용할 수 있다는 사실에 대해 생각하고 연습으로 코드를 작성하려고했습니다. : import scalaz.Bifunctor
type MyType[E, S] = (Seq[E], Seq[S])
case class M
나는 l의 목록을 가지고 있습니다. StateT[Id, MyState, Boolean]입니다. 는 그것으로 나는 다음을 수행 할 수 있었다 : case class MyState (s: String)
val startState = MyState ("s")
val l: List[StateT[Id, MyState, Boolean]] = ...
val
나는 send과 receive'\0' 문자열 내가 다른 터미널 을 그리고에 Foo.runServer() 및 Foo.runClient()을 실행 https://gist.github.com/jilen/10a664cd588af10b7d09 object Foo {
implicit val S = scalaz.concurrent.Strategy.Defaul