"HeldExpression" (Comparison Method)
式を評価せずに比較する.
詳細
- "HeldExpression"比較法は,2つの式が任意のホールドラッパー内で同一なら両者が等価であるとみなす.
- 解答集の値と提出された答の両方が,Hold,HoldPattern,HoldComplete等のホールドラッパーに包まれて与えられることが多い.
- パターン付きの解答集の値は,標準的なパターンマッチングをサポートするために,HoldPattern[expr]を使って与えられなければならない.HoldCompleteあるいはHoldの使用にはパターン式のリテラルなマッチングが必要である.
例題
すべて開くすべて閉じる例 (2)
未評価の式用のAssessmentFunctionを作成する:
未評価の数式用のAssessmentFunctionを作成する:
スコープ (1)
特性と関係 (4)
Holdを使った評価関数は,パターンを文字通りに扱う:
代りにHoldPatternを使ってパターンマッチをサポートする:
"Expression"比較法は,存在する場合はホールドラッパーを含めて式全体を比較する:
"HeldExpression"を使ってホールドラッパー内の式を比較する:
同じ答を"ArithmeticResult"として扱う別の評価を作成する:
"HeldExpression"は,加算における項の並べ替えのような基本的等価性も許容しないが,"ArithmeticResult"はこれを許容する:
同じ答を"CodeEquivalence"解として扱う別の評価を作成する:
"HeldExpression"は同一ではない答の等価性を求めようとしないが,"CodeEquivalence"は求めようとする:
考えられる問題 (1)
QuestionObjectは,Holdラッパーに包み込まれて与えられた場合でも,値のフォーマットを許容する:
DisableFormattingを使ってQuestionObjectのフォーマットを回避する: