Я разработал примеры, приведенные в этой статье для создания объективов.
Я создал Lens
, как указано в статье, и следующий код:
{-# 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
Теперь этот код не проверяет тип, если я не включу это:
{-# LANGUAGE NoMonomorphismRestriction #-}
Но нет, где в статье я мог бы узнать, что они упомянули о ограничении мономорфизма. Так что это нормальная вещь, или я здесь что-то не так?
Используемый компилятор: GHC 7.6.2