Based on Brandon Williams' talk on lenses in swift: https://www.youtube.com/watch?v=ofjehH9f-CU
parse model tuple such as:
typealias AppState = (theme: ColorTheme, font: Font, favoriteFilter: Bool)into lenses:
let themeLens = Lens<AppState, ColorTheme>(
get: {$0.theme},
set: {theme, whole in (theme, whole.font, whole.favoriteFilter)}
)
let fontLens = Lens<AppState, Font>(
get: {$0.font},
set: {font, whole in (whole.theme, font, whole.favoriteFilter)}
)
let favoriteFilterLens = Lens<AppState, Bool>(
get: {$0.favoriteFilter},
set: {favoriteFilter, whole in (whole.theme, whole.font, favoriteFilter)}
)API
main("typealias AppState = (theme: ColorTheme, font: Font, favoriteFilter: Bool)")