Присвоение «голых» номеров новым типам

Обратите внимание на вторую строчку в этом сеансе GHCi. Что такого в типе Latitude, который позволяет мне использовать «голое» число в качестве значения вместо вызова конструктора? Я хотел бы сделать что-то подобное с некоторыми из моих собственных типов.

λ> :m + Data.Geo.GPX.Type.Latitude                                                                                                   
λ> let t = 45 :: Latitude                                                                                                            
λ> t                                                                                                                                 
45.0

Я изучил исходный код типа Latitude, но поначалу у меня возникли проблемы с его пониманием. В конце концов я нашел ответ, поэтому решил задокументировать его здесь. Смотрите мой ответ ниже.

9
задан mhwombat 17 April 2012 в 13:05
поделиться