2015-02-14 2 views
6

Прочитав статью Lens over Tea #1, я нашел объектив united. Моя реализацияКакова цель объединенного объектива?

united :: Lens' a() 
united f v = const v <$> f() 

, который в значительной степени так же, как implementation in the Lens library.

Что оставляет меня полностью озадаченным, почему я хочу, чтобы функция, подобная этой, в первую очередь? Существуют ли какие-либо применения этого объектива?

ответ

2

Я никогда не видел и не использовал это раньше. Но я полагаю, что это полезно так же, как функция id (которая возвращает его аргумент без изменений), или полезно использовать монаду Identity (которая является монадой без «эффектов», в точности эквивалентной не использующей монады).

Эти и другие подобные концепции (включая тип ()!) Являются в основном структурами «ничего не делать», поэтому они кажутся бесполезными, когда вы смотрите на них сами. Но они становятся полезными, когда задействован полиморфизм, предоставляя вам вариант «ничего не делать» для перехода к общим операциям.

 Смежные вопросы

  • Нет связанных вопросов^_^