请注意GHCi会话中的第二行。什么是Latitude类型,允许我使用“裸”数字作为值,而不必调用构造函数?我想用我自己的一些类型做类似的事情。将“裸”数字分配给新类型
λ> :m + Data.Geo.GPX.Type.Latitude
λ> let t = 45 :: Latitude
λ> t
45.0
我已经检查了Latitude类型的源代码,但是我一开始就遇到了麻烦。最终我找到了答案,所以我想我会在这里记录它。请参阅下面的答案。
确切的说,这是一个事实,即'Seconds'是在'Num'类,使得它的工作。无论它如何成为'Num'类的成员并不重要。 – augustss 2012-04-17 13:09:55
如果明确提供实例而不是派生实例,它也可以工作。所有你需要的是一个'实例Num'。 – 2012-04-17 13:10:09
谢谢奥古斯特和丹尼尔。我已经更新了答案。 – mhwombat 2012-04-17 13:20:57