úÎ ¬ c(c) Fumiaki Kinoshita 2014 BSD3 (Fumiaki Kinoshita <fumiexcel@gmail.com>  experimental  non-portable None (6=HKMa has a field named s  Generate ) instances from data type declaration. g declareHas [d|data Stuff = Stuff { position :: V3 Float, velocity :: V3 Float, weight :: Float}|]  will create @ ÿLdata Stuff = Stuff (V3 Float) (V3 Float) Float instance Has "position" Stuff where type Field "position" Stuff = V3 Float theField = ... instance Has "velocity" Stuff where type Field "velocity" Stuff = V3 Float theField = ... instance Has "weight" Stuff where type Field "weight" Stuff = Float theField = ... Create an alias of = so that you don't have to specify a type signature by hand.  uberlast-0.0Control.Lens.OverloadHasFieldtheField declareHas makeField