Should grade_this_table() take pre_check as its first argument (and post_check as its second)? I would imagine changing pre_check code is more common than the correct message, and it would enable slightly more compact code, e.g.
grade_this_table({
tbl_grade_is_table(.result)
.result <- .result[intersect(names(.result), names(.solution))]
})
What do you think @gadenbuie?