This is best illustrated by example.
If I have:
val x = "foo" :: 1 :: true :: HNil
Then I should be able to pass this to any function where a prefix of the above type is expected. For example:
def f(x: String::HNil) = x(0)
However, this is obviously a type mismatch. Is there any way to accomplish this? Ditto: HMap(s), records, etc.