Birçok optik türü van Laarhoven temsiline sahiptir.
Örneğin, a Lens
tipi Lens s t a b
şu şekilde temsil edilebilir:
Functor f => (a -> f b) -> s -> f t
Benzer şekilde, a Traversal
, aşağıdakiler için Functor
kısıtlamayı değiştirerek benzer bir şekilde temsil edilebilir Applicative
:
Applicative f => (a -> f b) -> s -> f t
Monocle ve Arrow gibi çeşitli optik çerçeveleri denilen türü tanımlar Optional
.
Monocle Optik hiyerarşi içinde Optional
arasındaki uyan Lens
veTraversal
Anladığım kadarıyla: Bir Eğer Traversal
bir gibidir Lens
olabileceğini birçoğuna sıfır hedefleri, daha sonra bir Optional
bir gibidir Lens
olabileceğini sıfır bire hedefler.
Monocle'da, Optional
bir çift işlev olarak tanımlanır:
getOrModify :: s -> Either t a
set :: (b, s) -> t
Monocle kaynak kodundaki yorumlar , Optional
"zayıf PLens
ve zayıf olarak PPrism
" göstermenin de mümkün olduğunu göstermektedir
Optional
Van Laarhoven fonksiyonunu temsil etmek mümkün müdür ?
Functor
veApplicative
birlikteliftA2
, ancak hiçbir saf, daha sonra bununla bir optik tanımlarsınız birçok birinden hedefleri? Bunun bir adı var mı?