เลนส์หลายประเภทมีการแสดงของ van Laarhoven
ตัวอย่างเช่นLens
ประเภทLens s t a b
สามารถแสดงเป็น:
Functor f => (a -> f b) -> s -> f t
ในทำนองเดียวกันTraversal
สามารถแสดงในลักษณะที่คล้ายกันสลับFunctor
ข้อ จำกัด สำหรับApplicative
:
Applicative f => (a -> f b) -> s -> f t
กรอบเลนส์หลายประการเช่นMonocleและลูกศรOptional
กำหนดประเภทที่เรียกว่า
ในการสืบทอดของ Monocle Optics นั้น Optional
เหมาะสมระหว่างLens
และTraversal
ตามที่ฉันเข้าใจแล้ว: หาก a Traversal
เป็นเช่นLens
นั้นอาจมีเป้าหมายเป็นศูนย์ถึงหลายเป้าหมายดังนั้นสิ่งนั้นOptional
ก็เหมือนเช่นLens
นั้นที่มีเป้าหมายเป็นศูนย์ถึงหนึ่งเป้าหมาย
ใน Monocle Optional
หมายถึงคู่ของฟังก์ชั่น:
getOrModify :: s -> Either t a
set :: (b, s) -> t
ความคิดเห็นในซอร์สโค้ด Monocleแนะนำว่าอาจเป็นไปได้ที่จะแสดงว่าOptional
"เป็นที่อ่อนแอPLens
และอ่อนแอPPrism
"
เป็นไปได้ไหมที่จะใช้แทนOptional
ฟังก์ชั่น van Laarhoven?
Functor
และApplicative
กับliftA2
แต่ไม่มีความบริสุทธิ์นั่นจะกำหนดออปติกที่มีเป้าหมายหนึ่งถึงหลายเป้าหมายหรือไม่ สิ่งนี้มีชื่อหรือไม่?