export interface GetLens { get: (source: Source) => Target } interface MutLens { mut: (source: Source, target: Target) => void // mutate source by setting the target } export interface UnsetLens { unset: (source: Source) => void // mutate source by setting the target to zero }