เลนส์หลายประเภทมีการแสดงของ 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แต่ไม่มีความบริสุทธิ์นั่นจะกำหนดออปติกที่มีเป้าหมายหนึ่งถึงหลายเป้าหมายหรือไม่ สิ่งนี้มีชื่อหรือไม่?