[SCALA] 왜 검증 모나드 아닌가요?
SCALA왜 검증 모나드 아닌가요?
예를 들어 사용 사례 :
def div2(i: Int): Validation[String, Int] =
if (i%2 == 0) Validation.success(i/2)
else Validation.failure("odd")
def div4(i: Int) = for {
a <- div2(i)
b <- div2(a)
} yield b
오류 : 적용 취소 형 scalaz.Validation 할 수 없음 [문자열, Int 인] 타입 클래스로 분류되는 종류 M [_]의 타입 생성자에 scalaz.Bind
제 생각 엔 오류가 확인 [문자열, 지능]의 모나드 인스턴스를 찾을 수없는 컴파일러에 의해 발생
내가 좋아하는, 자신을 위해 일을 할 수 있습니다 :
object Instances {
implicit def validationMonad[E] = new Monad[({type L[A] = Validation[E, A]})#L] {
override def point[A](a: => A) =
Validation.success(a)
override def bind[A, B](fa: Validation[E, A])(f: A => Validation[E, B]) =
fa bind f
}
}
그런데 왜 검증은 이미 그것을 가지고하지 않는 이유는 무엇입니까? 결국, 검증은 이미 정의 된 바인드 메소드가 있습니다.
또한, 나는 때문에 또 다른 복잡한 오류, (이 ... 알아 내기 위해 looong 날 데려 갔어) 함께 더 이상 수입 Validation._ 수입 Instances._을 가질 수 없습니다 ... 모호한 암시 값 : 특성 ValidationInstances2 모두 validationMonad (내 경우), 및 방법 ValidationInstances1 같은 일이 ... 검증의 어떤은 Functor 일치 모두 ...
나는 scalaz의 소스를 수정해야합니까? 또는 나는 완전히 ~ 뭔가를 누락? 도와주세요 ~
내가 scalaz 사용하고 7.0.0-M2
해결법
-
==============================
1.Scalaz 그룹에서 논의 된 바와 같이, 문제는 AP가 (사이비) 모나드 구성은 검증의 값 부분에 작동 할 것입니다 반면 오류를 축적 할 것으로 보인다.
Scalaz 그룹에서 논의 된 바와 같이, 문제는 AP가 (사이비) 모나드 구성은 검증의 값 부분에 작동 할 것입니다 반면 오류를 축적 할 것으로 보인다.
따라서, 하나는 다른 표현 될 수없고, 따라서 아무런 모나드 인스턴스는 검증을 위해 존재하지 않는다.
-
==============================
2.문제는 모나드 묵시적으로 실용적 펑 실제 실용적 펑 동일하지 않는다는 것이다
문제는 모나드 묵시적으로 실용적 펑 실제 실용적 펑 동일하지 않는다는 것이다
from https://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 파티션에 행을 변환하는 방법 (0) | 2020.03.02 |
---|---|
[SCALA] 어떻게 스칼라에서 서로 다른 두 개의 dataframe 인쇄 열을 비교 (0) | 2020.02.21 |
[SCALA] 스칼라의 경우 클래스 개인 생성자하지만 대중은 방법을 적용 (0) | 2020.02.15 |
[SCALA] 왜 NullPointerException이에서 UDF 결과에서 DataFrame를 accesing? (0) | 2020.02.08 |
[SCALA] 선물 / 성공 경주 (0) | 2020.01.24 |