 6 >>= withMultipliable)
  , ("G", double 1e9 >>= withGrain 9 >>= withMultipliable)
  , ("十|拾", double 1e1 >>= withGrain 1 >>= withMultipliable)
  , ("百|佰", double 1e2 >>= withGrain 2 >>= withMultipliable)
  , ("千|仟", double 1e3 >>= withGrain 3 >>= withMultipliable)
  , ("万|萬", double 1e4 >>= withGrain 4 >>= withMultipliable)
  , ("亿|億", double 1e8 >>= withGrain 8 >>= withMultipliable)
  ]

ruleNumeralSuffixes :: [Rule]
ruleNumeralSuffixes = uncurry constructNumeralSuffixRule <$> numeralSuffixList
  where
    constructNumeralSuffixRule :: Text -> Maybe Token -> 
numeralSuffixList :: [(Text, Maybe Token)]
numeralSuffixList =
  [ ("K", double 1e3 >>= withGrain 3 >>= withMultipliable)
  , ("M", double 1e6 >>= withGrain 6 >>= withMultipliable)
  , ("G", double 1e9 >>= withGrain 9 >>= withMultipliable)
  , ("十|拾", double 1e1 >>= withGrain 1 >>= withMultipliable)
  , ("百|佰", double 1e2 >>= withGrain 2 >>= withMultipliable)
  , ("千|仟", double 1e3 >>= withGrain 3 >>= withMultipliable)
  , ("万|萬", double 1e4 >>= withGrain 4 >>= withMultipliable)
  , ("亿|億", double 1e8 >>= withGrain 8 >>= withMultipliable)
  ]
numeralSuffixList =
  [ ("K", double 1e3 >>= withGrain 3 >>= withMultipliable)
  , ("M", double 1e6 >>= withGrain 6 >>= withMultipliable)
  , ("G", double 1e9 >>= withGrain 9 >>= withMultipliable)
  , ("十|拾", double 1e1 >>= withGrain 1 >>= withMultipliable)
  , ("百|佰", double 1e2 >>= withGrain 2 >>= withMultipliable)
  , ("千|仟", double 1e3 >>= withGrain 3 >>= withMultipliable)
  , ("万|萬", double 1e4 >>= withGrain 4 >>= withMultipliable)
  , ("亿|億", double 1e8 >>= withGrain 8 >>= withMultipliable)
  ]