Nhiều loại quang học có một đại diện van Laarhoven.
Ví dụ, một Lensloại Lens s t a b có thể được biểu diễn dưới dạng:
Functor f => (a -> f b) -> s -> f t
Tương tự a Traversal, có thể được biểu diễn theo cách tương tự, hoán đổi Functorràng buộc cho Applicative:
Applicative f => (a -> f b) -> s -> f t
Một số khung quang học, chẳng hạn như Monocle và Mũi tên xác định một loại được gọi Optional.
Trong chế độ bá đạo của Monocle Optional phù hợp giữa LensvàTraversal
Theo tôi hiểu: Nếu a Traversalgiống như Lenscó thể có 0 đối với nhiều mục tiêu, thì một Optionalgiống như Lenscó thể có 0 đối với một mục tiêu.
Trong Monocle, Optionalđược định nghĩa là một cặp hàm:
getOrModify :: s -> Either t a
set :: (b, s) -> t
Nhận xét trong mã nguồn Monocle cho thấy rằng cũng có thể đại diện cho Optional"càng ngày càng PLensyếu PPrism"
Có thể biểu diễn một Optionalhàm van Laarhoven không?
FunctorvàApplicativevớiliftA2, nhưng không thuần túy, thì điều đó sẽ định nghĩa một quang với một đến nhiều mục tiêu? Cái này có tên không?