Обратите внимание на вторую строчку в этом сеансе GHCi. Что такого в типе Latitude, который позволяет мне использовать «голое» число в качестве значения вместо вызова конструктора? Я хотел бы сделать что-то подобное с некоторыми из моих собственных типов.
λ> :m + Data.Geo.GPX.Type.Latitude
λ> let t = 45 :: Latitude
λ> t
45.0
Я изучил исходный код типа Latitude, но поначалу у меня возникли проблемы с его пониманием. В конце концов я нашел ответ, поэтому решил задокументировать его здесь. Смотрите мой ответ ниже.