Lens( getter: { $0.name }, setter: { User(name: $1, age: $0.age, sns: $0.sns) } ) } static var _age: Lens<User, Int> { return Lens( getter: { $0.age }, setter: { User(name: $0.name, age: $1, sns: $0.sns) } ) } static var _sns: Lens<User, SNS> { return Lens( getter: { $0.sns }, setter: { User(name: $0.name, age: $0.age, sns: $1) } ) } }