В функциональной оптике хорошо работающая призма (я полагаю, называемая частичной линзой в scala) должна иметь функцию set типа 'subpart -> 'parent -> 'parent
, где, если призма «успешна» и структурно совместима с заданный аргумент 'parent
, затем он возвращает заданный 'parent
с соответствующей измененной подчастью, чтобы иметь заданное значение 'subpart
. Если призма "проваливается" и структурно несовместима с аргументом 'parent
, то она возвращает заданное 'parent
без изменений.
Мне интересно, почему призма не возвращает 'parent option
(Maybe
для Haskellers) для представления прохождения/непрохождения характер заданной функции? Разве программист не должен знать по возвращаемому типу, был ли набор «успешным» или нет?
Я знаю, что в области функциональной оптики было проведено много исследований и размышлений, поэтому я уверен, что должен быть окончательный ответ, который я просто не могу найти.
(Я работаю с F#, поэтому прошу прощения, если синтаксис, который я использовал, немного непонятен для программистов на Haskell или Scala).