scala - How to invoke function of multiple arguments with HList? -
suppose have hlist of type a::b::c::hnil , function (a, b, c) => d
val hlist: a::b::c::hnil = ??? def foo(a: a, b: b, c: c): d = ??? now need funciton a::b::c::hnil => d, uses foo return d.
def bar(hslist: a::b::c::hnil): d = ??? how implement bar ?
you can little more directly using shapeless's fntoproduct, provides toproduct syntax converting functionn function1 taking hlist:
import shapeless._, syntax.std.function._ type = string type b = symbol type c = int type d = list[string] val hlist: :: b :: c :: hnil = "foo" :: 'x :: 1 :: hnil def foo(a: a, b: b, c: c): d = list.fill(c)(a + b) def bar(hslist: :: b :: c :: hnil): d = (foo _).toproduct.apply(hslist) in many cases wouldn't want separate bar definition.
Comments
Post a Comment