2016-09-15 4 views
2

서명이있는 함수가 주어진 경우 : A => F[G[B]]. FG 유형에 대한 모나드 인스턴스가 있습니다.'F [G [B]]'를 'F [G [A => B]'scala로 변환

서명이있는 것으로 변환 할 수 있습니까? F[G[A=>B]? 그러한 변형에 대한 일반적인 이름이 있습니까?

다른 말로하면 prettify2의 구현은 무엇입니까?

def pretiffy(x: String): Future[Option[String]] = Future{if(x == "") None else Some(s">>>$x<<<")} 
val pretiffy2: Future[Option[String => String]] = ??? 

업데이트 : 고양이 나 스 카스를 사용하여 답변 해 주시면 감사하겠습니다.

+0

* 상위 유사 유형 *이라고합니다. Scalaz 또는 Cats를 사용하여 작업 할 수 있습니다. – sebszyller

+0

감사합니다. 이것은 내가 필요한 것입니다. 이 작업을 수행하는 방법? –

+3

'String => List [Option [Integer]]'라고 가정 해 봅시다. List [Option [String => Integer]]를 생성해야합니다. 그럴 수있어? 결과 목록은 얼마나 오래있을 것입니까? 얼마나 많은'None's가 포함됩니까? –

답변

5

String=>List[Option[Integer]]이 있다고 가정 해 보겠습니다. 우리는 List[Option[String=>Integer]]을 생산해야합니다. 어떻게 접근해야합니까? 예를 들어 결과 목록의 길이는 얼마입니까? 얼마나 많은 None이 들어 있어야합니까?

분명히 이러한 질문에는 답변이 없습니다. 즉, 요청한 변환이 임의의 모나드 (또는 대부분의 모나드에 대해 유사한 질문을 할 수있는 대부분의 모나드)에 대해 존재할 수 없음을 의미합니다.

+0

... 스칼라즈와 고양이를 조사하는 것이 좋습니다. 그러한 프레임 워크는 모나드의 개념을 일반화하여 '단위'함수 인'None'의 경우'None','List'의 경우'Nil'을 추출하여 일반화 된 방식으로 사용할 수 있습니다. –