에서 보기 힘든 두 나열하는 것과 같은 하나 담 업스트림 소스의 다른

StackOverflow https://stackoverflow.com//questions/21004327

  •  20-12-2019
  •  | 
  •  

문제

에서 엉성한 나가려고 함수를 작성하는 두 개의 HLists l1l2 의 임의의 길이는 전시회 다음과 같은 속성:

  1. 길이 l1l2 은 동일합니다.
  2. l2 담고 정확한 종류의 l1, 에서 일정한 외부 유형을 생성자입니다.

경우에 따라서, l1

1 :: 1.2 :: "hello" :: HNil`

l2

Ordering[Int] :: Ordering[Double] :: Ordering[String] :: HNil

UnaryTCConstraintLengthAux 할 수 있습 제한 길이 필요로 하는 정 외부 생성자 l2, 그러나 그들을 가지고 준수이 문제가 되고 있습니다.

어떤 아이디어에 내가 어떻게 갈 수 있었을까요?

도움이 되었습니까?

해결책

Mapped 제공하는 정확하게 이러한 제약 조건 없이 추가 필요 Length.서 문서:

형식 등을 목격하고 그 결과의 포장의 각 요소 HList L 에서 유형을 생성자 FOut.

여기 보이는 방법에 1.2.4:

import shapeless._

def foo[L1 <: HList, L2 <: HList](l1: L1, l2: L2)(implicit
  ev: MappedAux[L1, Ordering, L2]
) = ()

val l1 = 1 :: 1.2 :: "hello" :: HNil
val l2 = Ordering[Int] :: Ordering[Double] :: Ordering[String] :: HNil
val l3 = Ordering[Int] :: Ordering[Double] :: Ordering[Char] :: HNil

그리고:

scala> foo(l1, l2)

scala> foo(l1, l3)
<console>:17: error: could not find implicit value for parameter ev: ...

으로 예상된다.2.0 추가 shapeless.ops.hlist._ 수입 대체 MappedAuxMapped.Aux 당신이 설치되어 있는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top