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 № 1Nie 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.