Бесформенный: общий объектив, параметризованный по классу дела или полю

На основании:

import shapeless._

case class Content(field: Int)
lens[Content] >> 'field

Я пытаюсь сделать метод создания линз, что-то вроде:

def makeLens[T <: Product](s: Symbol) = lens[T] >> s

Но это кажется неочевидным. Возможно ли это сделать?

Если нет, то конечный результат, которого я пытаюсь достичь, - это общий метод обновления вложенных Карт с содержимым класса дел, например:

import scalaz._
import Scalaz._
import PLens._
import shapeless._
import shapeless.contrib.scalaz._

def nestedMapLens[R, T <: Product](outerKey: String, innerKey: Int, f: Symbol) =
  ~((lens[T] >> f).asScalaz) compose mapVPLens(innerKey) compose mapVPLens(outerKey)

Я не могу заставить его работать при параметризации T и f. Существуют ли другие идиоматические решения без шаблонов?

Спасибо!

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

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