Pracowałem nad przykładami podanymi w tym dokumencie: article do tworzenia soczewek.Ograniczenia dotyczące soczewek i monomorfizmów
stworzyłem Lens
jak podano w artykule i po to mój kod:
{-# LANGUAGE TemplateHaskell #-}
import Control.Lens
type Degrees = Double
type Latitude = Degrees
type Longitude = Degrees
data Meetup = Meetup { _name :: String, _location :: (Latitude, Longitude) }
makeLenses ''Meetup
meetupLat = location._1 :: Lens' Meetup Latitude
Teraz ten kod nie typecheck chyba że to w ten sposób:
{-# LANGUAGE NoMonomorphismRestriction #-}
Ale nie ma gdzie w Artykuł, mógłbym się dowiedzieć, że wspomnieli o o ograniczeniu monomorfizmu. Czy to normalne, czy też robię coś nie tak?
Compiler używane: GHC 7.6.2
Co jeśli zdefiniujesz go jako 'MeetingupLat :: Lens 'Meetup Latitude'; 'meetupLat = location._1'? – bheklilr
@bheklilr Dzięki, że działa bez rozszerzenia. Czy możesz to opublikować jako odpowiedź. – Sibi
@bheklilr Zrobione. :) – Sibi