Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {x, y, inv[x], inv[y], x ** y, 1, x ** inv[y], x ** x, y ** inv[x],
- y ** x, y ** y, inv[x] ** inv[y], inv[x] ** y, inv[x] ** inv[x],
- inv[y] ** x, inv[y] ** inv[x], inv[y] ** inv[y]}
- {R1[x_,y_]:=x,R2[x_,y_]:=y,R3[x_,y_]:=inv[y],R4[x_,y_]=x ** y,...}
- makeAssignment[wrapper_][e_, {i_}] :=
- ( ToExpression["R"~~ToString[i], InputForm, Hold]
- /. Hold[s_] :> Hold[s[x_, y_], e]
- /. Hold[l_, r_] :> wrapper[SetDelayed[l, r]]
- )
- makeAssignment[Hold][x**y, {5}]
- (* Hold[R5[x_, y_] := x ** y] *)
- makeAssignment[Defer][x**y, {5}]
- (* R5[x_, y_] := x ** y *)
- makeAssignment[HoldForm][x**y, {5}]
- (* R5[x_, y_] := x ** y *)
- Head[%]
- (* HoldForm *)
- makeAssignment[Identity][x**y, {5}]
- (* Null *)
- ??R5
- (* R5[x_,y_] := x**y *)
- $vs = { x, y, inv[x], inv[y], x ** y, 1, x ** inv[y], x ** x
- , y ** inv[x], y ** x, y ** y, inv[x] ** inv[y], inv[x] ** y
- , inv[x] ** inv[x], inv[y] ** x, inv[y] ** inv[x], inv[y] ** inv[y]
- };
- $vs // MapIndexed[makeAssignment[Defer]]
- (* {R1[x_, y_] := x, R2[x_, y_] := y, R3[x_, y_] := inv[x], ... } *)
- $vs // MapIndexed[makeAssignment[Hold]]
- (* {Hold[R1[x_, y_] := x], Hold[R2[x_, y_] := y], Hold[R3[x_, y_] := inv[x]], ... } *)
- $vs // MapIndexed[makeAssignment[Hold]] // Apply[Hold] // Flatten
- (* Hold[R1[x_, y_] := x, R2[x_, y_] := y, R3[x_, y_] := inv[x], ... ] *)
- makeAssignment[wrapper_, e_, i_] := ...
- makeAssignment[wrapper_][e_, {i_}] := ...
- ... // MapIndexed[makeAssignment[Hold]]
- ... // MapIndexed[makeAssignment[Hold, #, #2[[1]]]&, #]&
- XYZ10 = 666;
- Symbol["XYZ10"]
- (* 666 *)
- ToExpression["XYZ10", InputForm, Hold]
- (* Hold[XYZ10] *)
- Hold[V1, x + y] /. Hold[s_, e_] :> Hold[s[x_, y_] := e]
- (* Hold[V1[x$_, y$_] := x + y] *)
- Hold[V1, x + y] /. Hold[s_, e_] :> Hold[s[x_, y_], e] /. Hold[l_, r_] :> Hold[l := r]
- (* Hold[V1[x_, y_] := x + y] *)
- rhs = {x, y, inv[x], inv[y], x ** y}
- lhs = {R1, R2, R3, R4, R5}
- fun = MapThread[(Hold[#1[x_, y_] := #2]) &, {lhs, rhs}]
- ReleaseHold /@ fun
- fun = MapThread[(#1[x_, y_] := #2) &, {lhs, rhs}]
Add Comment
Please, Sign In to add comment