(*
(2)������������������� Pattern[Set][patSet]
�returns True if patSet is a PatternSet and False otherwise.
A PatternSet presumes its argument is the object of comparison and always returns True or False.
Here are the Keywords which anticipate an argument:
����������� {Function[�], Set[�], Pattern[�], True, Type[_,_],
{True[�PatternSet�], Not[�PatternSet�], And[�PatternSet�], Or[�PatternSet�], Xor[�PatternSet�]}}.
Of these, all return True or False except Function[�].� The result leafs of the BranchExpression of Function[�] can be scanned to determine if they return True or False.� Function[�]s used to define a PatternSet must always branch to True or False.� This quality can be tested for�
How this scan is done, will determine exactly how the PatternSet quality is tested for�
*)
Name[typeSet,
����������� Or[����� Pattern[Type[Set]],
����������������������� Pattern[Not[Pattern[Type[Set]]]]
����������� ]
]
Name[typePattern,
����������� Or[����� Pattern[Type[Pattern]],
����������������������� Pattern[Not[Pattern[Type[Pattern]]]]
����������� ]
]
Name[typeLogicalPatternSet,
����������� Function[
����������������������� And[
����������������������������������� Set[True, Not, And, Or, Xor][Slot[0]],
����������������������������������� (PatternSet[Sequence])[Slot[Sequence]]
����������������������� ]
����������� ]
]
Name[typeLogicalPatternSet,
����������� Pattern[
����������������������� (Set[True, Not, And, Or, Xor])[PatternSet[Sequence]]
����������� ]
]
Name[PatternSet, Or[typeSet, typePattern, typeLogicalPatternSet]]
(*
The CurrentReckoner is the Name assigned to the PatternSet of all recognized ElicitationForms.�
This is a �private� environmental name that is necessary to define Trap, Reckon, Noop or any algorithm which may change the recognized ElicitationForms.
*)
Name[Trap[elicit_PatternSet, eval_Expression],
Sequence[
����������� Name[Trap[Return], False],
����������� Cast[{
����������������������� Name[CurrentReckoner, Or[elicit, CurrentReckoner]],
����������������������� Name[elicit, Sequence[Name[Trap[Return], True], Return[elicit]]]},
����������������������� Trap[eval]
����������� ]
]]
Name[Trap[elicit_PatternSet, eval_Expression , exec_Expression],
����������� Cast[{Name[]},
����������������������� Trap[elicit, eval]
����������� ]
]