Data.Lens или Control.Lens

Възможен дубликат:
lenses, fclabels, data-accessor - коя библиотека за достъп до структура и мутация е по-добра

Ще използвам и ще науча пакет Lens в следващия си проект на Haskell. Почти бях избрал пакета Data.Lens, когато намерих тази публикация, в която се споменават обективите на van Laarhoven в пакета Control.Lens.

Все още не разбирам достатъчно разликите, за да реша кой да използвам. Кой пакет бихте ми предложили да науча/използвам в проект от реалния свят?

Благодаря.

lenses, fclabels, data-accessor - коя библиотека за структурен достъп и мутация е по-добре


person MFlamer    schedule 08.11.2012    source източник
comment
Какво не е наред с този отговор на връзката SO?   -  person Pubby    schedule 08.11.2012
comment
Нещо може да не е наред с този отговор на връзката SO, но ако не ни кажете какво искате да знаете, което не е в този отговор, няма да получите информацията, която търсите .   -  person Ben    schedule 08.11.2012
comment
Предполагам, че търся трета гледна точка. Този SO пост е написан от създателя на двата пакета. Той прави някакво сравнение между двете, но е малко над главата ми.   -  person MFlamer    schedule 08.11.2012
comment
Другата публикация дори не споменава Control.Lens, така че не виждам как това е дубликат.   -  person Adam Bell    schedule 16.11.2012


Отговори (3)


Control.Lens почти сигурно е това, което искате. Data.Lens беше първи и е по-прост, но Control.Lens има много предимства и се разработва активно.

Освен лещи, Control.Lens има много свързани типове, като обхождане (обхождането е като леща, която може да се отнася до n стойности вместо само една), сгъвания, лещи само за четене/промяна, индексирани лещи, изоморфизми... Също така идва с много по-голяма библиотека от полезни функции и предварително дефинирани лещи за типове стандартни библиотеки, Template Haskell за извличане на лещи и куп код за други неща като генерични ципове и генерично преминаване в стил uniplate.

Това е голяма библиотека -- не е нужно да я използвате цялата, но е хубаво това, което искате, да е вече написано.

Основното предимство на Data.Lens е, че е по-опростен и като такъв не изисква разширения извън Haskell 98. Но имайте предвид, че ако просто искате да експортирате обектив в стил Control.Lens от библиотека, можете да го направите, без да излизате от Haskell 98 -- всъщност, без изобщо да зависи от опаковката.

person shachaf    schedule 08.11.2012
comment
След малко повече проучване снощи стигнах до същото заключение. Благодаря за отличните отговори. - person MFlamer; 09.11.2012

Ако имате работа с проект от реалния свят (tm), горещо препоръчвам Control.Lens. Едуард напоследък положи много усилия в това и съм сигурен, че ще се радва да чуе за вашия случай на употреба. Според мен това ще се превърне в каноничната библиотека на Lens. Вярвам, че е безопасно да се каже, че всичко, което можете да направите с Data.Lens, можете да направите с Control.Lens.

person Dan Burton    schedule 08.11.2012

Data.Lens е много по-опростен и лесен за работа. Control.Lens има много голям брой модули и използва езикови разширения, за да свърши работата.

person singpolyma    schedule 08.11.2012