Ambigu variable de type " a0 " dans les contraintes

Je suis en train de passer à travers le YesNo exemple de Learn You a Haskell for Great Good! livre.

Voici mon code source:

module Main where

main :: IO ()

main = putStrLn ( show (yesno 12) )

class YesNo a where
    yesno :: a -> Bool


instance YesNo Bool where
    yesno b = b

instance YesNo [a] where
    yesno [] = False
    yesno _ = True


instance YesNo Int where
    yesno 0 = False
    yesno _ = True

Lorsque j'exécute ce code à la suite de l'exception se produit:

Ambiguous type variable `a0' in the constraints:
  (YesNo a0) arising from a use of `yesno'
             at /Users/mkhadikov/Projects/personal/haskell/hello-world/yesno.hs:5:25-29
  (Num a0) arising from the literal `12'
           at /Users/mkhadikov/Projects/personal/haskell/hello-world/yesno.hs:5:31-32
Probable fix: add a type signature that fixes these type variable(s)
In the first argument of `show', namely `(yesno 12)'
In the first argument of `putStrLn', namely `(show (yesno 12))'
In the expression: putStrLn (show (yesno 12))

Pouvez-vous nous expliquer quel est le problème avec ce code?