2016-11-24 2 views
1

Supposons que j'ai un hlistTrier HList par modèle

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

et j'ai un modèle

type Pattern = Int :: Boolean :: HNil 

HList Comment puis-je modifier l'ordre existant avec le motif? C'est à dire.

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

Répondre

4

Vous cherchez align et la classe Align de type correspondant à 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