There is a global variable that purports to contain a list of operator forms, TypeSystem`$OperatorForms
. I say "purports", because the list is missing some of the forms found by @ybeltukov's method. But to its credit, it correctly identifies the operator form of ReplaceAll
which is mentioned in neither a usage message nor the documentation, and also correctly omits StringCases
which has no operator form despite the usage message claiming otherwise:
Needs["TypeSystem`"]
$typeSystem = SymbolName /@ TypeSystem`$OperatorForms;
$usages =
Select[
Names@"*"
, StringMatchQ[ToString@ToExpression[#<>"::usage"],"*an operator form of*"]&
];
$usages ~Complement~ $typeSystem
(* {AssociationMap,CountDistinctBy,DeleteDuplicatesBy,MapAt,Merge,StringCases} *)
$typeSystem ~Complement~ $usages
(* {ReplaceAll} *)
There are three other operators which exhaustively partition TypeSystem`$OperatorForms
into the categories "left", "right" and "3-2":
TypeSystem`$LeftOperatorForms
(* {Map,KeyMap,Apply,Scan,MapIndexed} *)
TypeSystem`$RightOperatorForms
(* {Prepend,Append,GroupBy,CountsBy,Count,Position,FirstPosition,SortBy,KeySelect,
Select,SelectFirst,Delete,Extract,Replace,ReplacePart,ReplaceAll,Cases,
DeleteCases,FirstCase,AnyTrue,AllTrue,NoneTrue,KeyExistsQ,KeySortBy,
KeyTake,KeyDrop,MaximalBy,MinimalBy,MatchQ,FreeQ,MemberQ} *)
TypeSystem`$ThreeTwoOperatorForms
(* {Insert} *)
These categories appear to identify the position(s) of the curried arguments.
The results shown here are from version 10.0.1.