hlist

    2熱度

    1回答

    我試圖找到一種方法來避免在我的方法的返回值中丟失類型信息。 我有以下幾點: val defs0 = Default.mkDefault[Person, Some[String] :: Some[Int] :: HNil](Some("odd") :: Some(42) :: HNil) 使用IntelliJs「添加類型的註釋」給出了類型: Default.Aux[Person, ::[Some

    0熱度

    1回答

    我有一個Union創建自兩個HList,比方說E和F。從這Union,我想找回一個新的HList與E類型。它不一定會比原來列表相同的值,但我不在乎,我只想用正確的類型 在實踐中,我希望可以在一個功能來概括一個HList: def selectFromUnion[E <: HList, F <: HList](u: Union[E, F]): SelectAll[u.Out, E] = ??? 有人

    1熱度

    1回答

    我嘗試 import shapeless._ val ilist = List(1,2,3) ; val slist = List("a", "b", "c") ; (ilist :: slist :: HNil).map(list: List[_] => list -> list.length) 和編譯器說,它需要的參數類型的映射功能或提供類型List[_]當它不能找到list值。有一

    3熱度

    1回答

    我想建立相當於: def applyWithHList2[A1, A2, R, L <: HList](l: L, f: Function2[A1, A2, R]): Try[R] 在列表中的值是這樣的,在N選擇2種可能值的組合l.unify至多有一個可以用來調用該函數。沒有可用的附加類型信息。 如果沒有辦法調用該函數,結果應該是Failure和MatchError。否則,結果應該是Try(f

    1熱度

    1回答

    您認爲我有意義嗎?有沒有更好的方法編碼案例類到Item?例如我不滿意在某些情況下忽略輸入參數! import shapeless.labelled.FieldType import shapeless.{::, DepFn2, HList, HNil, LabelledGeneric, Witness} import scala.collection.mutable // mock of

    5熱度

    2回答

    當然,產生異質列表的笛卡兒積的笛卡爾乘積可以在Haskell的一些方式來完成,如: [(x,y) | x <- [1,2,3], y <- [4,5,6]] 或 (,) <$> [1,2,3] <*> [4,5,6] 但我要的就是這樣的功能: heteroCartesian :: (a1, a2, ... , an) -> (b1, b2, ... , bn) ->

    3熱度

    2回答

    很少有關於HLists的可讀文檔,我能找到的關於SO的答案來自外太空,是一個不起眼的Scala初學者。 我遇到了HList,因爲Slick可以自動生成一些來表示數據庫行。他們是slick.collection.heterogeneous.HList(不是沒有形狀的)。 例子: type MyRow = HCons[Int,HCons[String,HCons[Option[String],HCon

    1熱度

    1回答

    我有一堆工廠函數,它們都採用相同的參數並返回不同的類型。目前我明確地調用它們,但它非常冗長,我想將工廠通用化到HList,並通過映射HList來調用它們。 case class Endpoint[A](a: A) case class Factory[Ret](f: Int => Endpoint[Ret]) val factories = Factory[Int](a => Endpoi

    2熱度

    1回答

    假設我有容器標記 case class TypedString[T](value: String) 和局部功能特技 abstract class PartFunc[Actual <: HList] { val poly: Poly def apply[L1 <: HList](l: L1)(implicit mapped: Mapped.Aux[

    1熱度

    1回答

    我有一個可擴展的乙烯基/複合記錄(類似於HList,幀...),並且我想生成密鑰/值的元組,如 tuplify '[String :-> Whatevs, ...] :: [(String, String)] 這是令人驚訝的硬。 original gist。 Solution Gist, thanks to Alec below type FA = "a" :-> String type F