/ / Czy generowanie soczewek należy traktować jak instancje - haskell, soczewki

Czy generowanie soczewek powinno być traktowane jak instancje - haskell, soczewki

Mam typ danych zdefiniowany w innej bibliotece. Chciałbym podpiąć się do tego typu danych za pomocą soczewki generowanej przez bibliotekę Control.Lens.

Czy muszę wpisać nowy typ kodu w moim kodzie, czy też można bezpiecznie określić obiektywnie zdefiniowany typ danych?

Odpowiedzi:

6 dla odpowiedzi № 1

Nie potrzebujesz nowego typu. W rzeczywistości istnieje wiele pakietów służących do hakowania, które definiują soczewki dla już istniejących typów (na przykład xml-lens lub nawet lens samo).

Problem z definiowaniem instancji polega na tym, że nie ma sposobu, aby je ukryć. Jeśli zdefiniujesz soczewki, możesz je po prostu ukryć podczas importowania, jak każda inna funkcja:

import Module.Lens hiding (someGeneratedLens, ...)

Nie jest to możliwe w przypadku instancji (patrz https://stackoverflow.com/a/8731340/2494803 z powodów). W przeciwieństwie do instancji soczewki nie muszą być również unikalne na całym świecie.