Выберите N-й элемент списка списков и верните это значение как список значений.

У меня есть HList, в котором каждый столбец представляет столбец таблицы. Каждый список в HList имеет одинаковую длину.

Я хотел бы иметь возможность написать функцию, которая выбирает отдельные строки этой таблицы в виде кортежа или HList значений. Со временем я преобразую это во что-то более разумное (например, в класс дел).

import shapeless.PolyDefns.~>
import shapeless.{HList, HNil}
val a = List(1,2,3) :: List("a", "b", "c") :: List(true, false, true) :: HNil

object broken extends (HList ~> HList) {
  def apply[T](n:Int, l:HList): HList = {
    // I want to pick out the nth element of each HList
    // so in the above example, if n==1
    // I want to return
    // 2 :: "b" :: false :: HNil
    ???
  }
}

broken(1,a)

Можно ли исправить эту функцию, чтобы она работала в соответствии с тем, что я описал в комментариях?

Бонусные баллы: Могу ли я написать это как итератор, который преобразует мой HList «a» выше в последовательность (Int, String, Boolean) или эквивалентный HList?

Ответы на вопрос(1)

Ваш ответ на вопрос