2016-11-24 4 views
1

Предположим, что у меня есть hlistСортировать HList по шаблону

val hlist: Boolean :: Int :: HNil = true :: 42 :: HNil 

и у меня есть образец

type Pattern = Int :: Boolean :: HNil 

Как я могу REORDER существующий hlist с рисунком? То есть

reorder[Int :: Boolean :: HNil](hlist) // 42 :: true :: HNil 

ответ

4

Вы ищете align и соответствующий Align тип класса в shapeless.ops.hlist,

scala> import shapeless._ 
import shapeless._ 

scala> val hlist: Boolean :: Int :: HNil = true :: 42 :: HNil 
hlist: shapeless.::[Boolean,shapeless.::[Int,shapeless.HNil]] = true :: 42 :: HNil 

scala> type Pattern = Int :: Boolean :: HNil 
defined type alias Pattern 

scala> hlist.align[Pattern] 
res0: Pattern = 42 :: true :: HNil 
Смежные вопросы