我正在编译一个我正在构建的Yesod站点,以确保在出现此编译器错误时一切正常:
Foundation.hs:164:15:
No instance for (Num (Maybe Size))
arising from the literal `140'
Possible fix: add an instance declaration for (Num (Maybe Size))
In the `gSize' field of a record
In the expression:
GravatarOptions
{gSize = 140, gDefault = Identicon, gForceDefault = False,
gRating = PG}
In an equation for `gs':
gs
= GravatarOptions
{gSize = 140, gDefault = Identicon, gForceDefault = False,
gRating = PG}
在阅读了haddock文档后,我知道gSize采用了Maybe Size,并且该Size定义为:
newtype Size = Size Int
如果这对任何问题都有帮助。
import Yesod.Goodies.Gravatar
import Data.Text
gravatar :: Text -> Text
gravatar email =
gravatarImg email gs
where
gs = GravatarOptions {
gSize = 140
, gDefault = Identicon
, gForceDefault = False
, gRating = PG
}
我不确定从哪里开始寻找解决方案,有人可以指出我正确的方向吗?感谢您的时间和考虑。
答案 0 :(得分:5)
如果gSize
是Maybe Size
,那么您需要使用Maybe
个构造函数之一 - 您可以使用Nothing
表示无值,也可以使用Just x
值。在您的代码段中,它应为Just (Size 140)
,如
gs = GravatarOptions {
gSize = Just (Size 140)
, gDefault = Identicon
, gForceDefault = False
, gRating = PG
}
答案 1 :(得分:0)
它表示无法将(通过Num
类)“140”转换为Maybe Size
。您应该使用gSize = Just (Size 140)
我猜