al.value = val2}:
       _) | (10 ** fromIntegral g) > val2 -> double $ val1 + val2
      _ -> Nothing
  }

ruleSumAnd :: Rule
ruleSumAnd = Rule
  { name = "intersect 2 numbers (with and)"
  , pattern =
    [ Predicate $ and . sequence [hasGrain, isPositive]
    , regex "და"
    , Predicate $ and . sequence 
ruleLeadingDotSpelledOut :: Rule
ruleLeadingDotSpelledOut = Rule
  { name = "point 77"
  , pattern =
    [ regex "წერტილი|მთელი"
    , Predicate $ not . hasGrain
    ]
  , prod = \case
      (_:Token Numeral nd:_) -> double . decimalsToDouble $ TNumeral.value nd
      _ -> Nothing
  }
ruleLeadingDotSpelledOut = Rule
  { name = "point 77"
  , pattern =
    [ regex "წერტილი|მთელი"
    , Predicate $ not . hasGrain
    ]
  , prod = \case
      (_:Token Numeral nd:_) -> double . decimalsToDouble $ TNumeral.value nd
      _ -> Nothing
  }