A Setter is an optic that allows to see into a structure and set or modify its focus.
A (polymorphic) PSetter is useful when setting or modifying a value for a constructed type i.e. PSetter, List, Int, String>
A PSetter is a generalisation of a arrow.Functor. Functor::map (fa: Kind, f: (A) -> B): Kind PSetter::modify(s: S, f: (A) -> B): T
Join two PSetter with the same target
Lift a function map:
(A) -> B to the context of S
: (S) -> T`
Modify polymorphically the focus of a PSetter with a function map.
open fun set(source: S, focus: B): T
Set polymorphically the focus of a PSetter with a value b.