Banyak jenis optik memiliki representasi van Laarhoven.
Misalnya, Lens
tipe Lens s t a b
dapat direpresentasikan sebagai:
Functor f => (a -> f b) -> s -> f t
Demikian pula a Traversal
, dapat direpresentasikan dengan cara yang sama, menukar Functor
kendala untuk Applicative
:
Applicative f => (a -> f b) -> s -> f t
Beberapa kerangka kerja optik, seperti Monocle dan Arrow menentukan jenis yang disebut Optional
.
Dalam Optik Monocle, heirarki Optional
cocok untuk Lens
danTraversal
Seperti yang saya pahami: Jika a Traversal
seperti a Lens
yang mungkin memiliki nol hingga banyak target, maka a Optional
seperti a Lens
yang mungkin memiliki nol ke satu target.
Di Monocle, Optional
didefinisikan sebagai sepasang fungsi:
getOrModify :: s -> Either t a
set :: (b, s) -> t
Komentar dalam kode sumber Monocle menunjukkan bahwa mungkin juga untuk mewakili Optional
"sebagai yang lebih lemah PLens
dan lebih lemah PPrism
"
Apakah mungkin untuk mewakili Optional
fungsi van Laarhoven?
Functor
danApplicative
denganliftA2
, tetapi tidak murni, maka itu akan menentukan optik dengan satu ke banyak target? Apakah ini punya nama?