4
웹 응용 프로그램에서 여러 가지 방법으로 실패하거나 결국 성공할 수있는 작업이 있습니다./[A, A]에서 A로
val result = for {
user <- fetchUser \/> Forbidden("you must be connected to perform this action")
basket <- user.basket \/> NotFound("no basket !")
...
} yield Ok(someBasketView(user, basket))
:이 컨텍스트의 성공과 실패에서
은/같은 뭔가, 내 알고리즘을 인코딩하는 내가 scalaz에 모나드 연산을 사용 (HTTP 응답을 나타내는) SimpleResult의 서브 클래스에 의해 표현된다 ,result fold (identity, identity)
가 분리에서 결과를 추출 : 그래서 이것은 SimpleResult \/ SimpleResult
로 끝 나는이를 작성해야 나는 오히려 못 생겼다.
"분명히 단순한 구조"를 캡처하는 추상화가 있습니까? 또는 아마도 분리는 그 문제에 대한 올바른 추상화가 아니겠습니까?
scala> val e: Either[String, String] = Right("a")
e: Either[String,String] = Right(a)
scala> e.merge
res0: String = a
을 그리고 :
감사합니다. 그것은 그 문서를 열심히 검색하지 않은 것처럼 보입니다 ... –
이제는 둘 중 하나에 병합 메서드가 표시되지만 scalaz 7.0.4에서 해당 메서드를 찾을 수 없습니다. –
[Here] (https : // github .com/scalaz/scalaz/blob/scalaz-seven/core/src/main/scala/scalaz/Either.scala # L305)? –