Skip to content

Instantly share code, notes, and snippets.

@tomverran
Created December 10, 2016 15:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tomverran/845d5841bb5ee1e06fb935478cea7380 to your computer and use it in GitHub Desktop.
Save tomverran/845d5841bb5ee1e06fb935478cea7380 to your computer and use it in GitHub Desktop.
shapeless-lenses
import shapeless._
import shapeless.syntax.singleton._
import shapeless.labelled._
case class Foo(name: String)
val f = LabelledGeneric[Foo]
case class Lens[O, K, V](get: O => V)
def mkLens[O, K <: Symbol, V](getter: O => V)(implicit lg: LabelledGeneric.Aux[O, FieldType[K, V] :: HNil], w: Witness.Aux[K]): Lens[O, K, V] =
Lens[O, K, V](getter)
mkLens({a: Foo => a.name})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment