function makeRuleGenerator(name, fn) {
  return function(...args) {
    let rule = fn(...args)
    rule.arguments = args
    rule.name = name
    return rule
  }
}
// fn should must return a rule
fn should must return a rule
fn should must return a rule
function makeRuleGenerator(name, fn) {
  return function(...args) {
    let rule = fn(...args)
    rule.arguments = args
    rule.name = name
    return rule
  }
}
function makeRuleGenerator ( name , fn ) { return function ( ... args ) { let rule = fn ( ... args ) rule . arguments = args rule . name = name return rule } }
fn should must return a rule
fn should must return a rule