Guest User

Untitled

a guest
Sep 20th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. {x, y, inv[x], inv[y], x ** y, 1, x ** inv[y], x ** x, y ** inv[x],
  2. y ** x, y ** y, inv[x] ** inv[y], inv[x] ** y, inv[x] ** inv[x],
  3. inv[y] ** x, inv[y] ** inv[x], inv[y] ** inv[y]}
  4.  
  5. {R1[x_,y_]:=x,R2[x_,y_]:=y,R3[x_,y_]:=inv[y],R4[x_,y_]=x ** y,...}
  6.  
  7. makeAssignment[wrapper_][e_, {i_}] :=
  8. ( ToExpression["R"~~ToString[i], InputForm, Hold]
  9. /. Hold[s_] :> Hold[s[x_, y_], e]
  10. /. Hold[l_, r_] :> wrapper[SetDelayed[l, r]]
  11. )
  12.  
  13. makeAssignment[Hold][x**y, {5}]
  14.  
  15. (* Hold[R5[x_, y_] := x ** y] *)
  16.  
  17. makeAssignment[Defer][x**y, {5}]
  18.  
  19. (* R5[x_, y_] := x ** y *)
  20.  
  21. makeAssignment[HoldForm][x**y, {5}]
  22.  
  23. (* R5[x_, y_] := x ** y *)
  24.  
  25. Head[%]
  26.  
  27. (* HoldForm *)
  28.  
  29. makeAssignment[Identity][x**y, {5}]
  30.  
  31. (* Null *)
  32.  
  33. ??R5
  34.  
  35. (* R5[x_,y_] := x**y *)
  36.  
  37. $vs = { x, y, inv[x], inv[y], x ** y, 1, x ** inv[y], x ** x
  38. , y ** inv[x], y ** x, y ** y, inv[x] ** inv[y], inv[x] ** y
  39. , inv[x] ** inv[x], inv[y] ** x, inv[y] ** inv[x], inv[y] ** inv[y]
  40. };
  41.  
  42. $vs // MapIndexed[makeAssignment[Defer]]
  43.  
  44. (* {R1[x_, y_] := x, R2[x_, y_] := y, R3[x_, y_] := inv[x], ... } *)
  45.  
  46. $vs // MapIndexed[makeAssignment[Hold]]
  47.  
  48. (* {Hold[R1[x_, y_] := x], Hold[R2[x_, y_] := y], Hold[R3[x_, y_] := inv[x]], ... } *)
  49.  
  50. $vs // MapIndexed[makeAssignment[Hold]] // Apply[Hold] // Flatten
  51.  
  52. (* Hold[R1[x_, y_] := x, R2[x_, y_] := y, R3[x_, y_] := inv[x], ... ] *)
  53.  
  54. makeAssignment[wrapper_, e_, i_] := ...
  55.  
  56. makeAssignment[wrapper_][e_, {i_}] := ...
  57.  
  58. ... // MapIndexed[makeAssignment[Hold]]
  59.  
  60. ... // MapIndexed[makeAssignment[Hold, #, #2[[1]]]&, #]&
  61.  
  62. XYZ10 = 666;
  63.  
  64. Symbol["XYZ10"]
  65. (* 666 *)
  66.  
  67. ToExpression["XYZ10", InputForm, Hold]
  68. (* Hold[XYZ10] *)
  69.  
  70. Hold[V1, x + y] /. Hold[s_, e_] :> Hold[s[x_, y_] := e]
  71. (* Hold[V1[x$_, y$_] := x + y] *)
  72.  
  73. Hold[V1, x + y] /. Hold[s_, e_] :> Hold[s[x_, y_], e] /. Hold[l_, r_] :> Hold[l := r]
  74. (* Hold[V1[x_, y_] := x + y] *)
  75.  
  76. rhs = {x, y, inv[x], inv[y], x ** y}
  77. lhs = {R1, R2, R3, R4, R5}
  78. fun = MapThread[(Hold[#1[x_, y_] := #2]) &, {lhs, rhs}]
  79.  
  80. ReleaseHold /@ fun
  81.  
  82. fun = MapThread[(#1[x_, y_] := #2) &, {lhs, rhs}]
Add Comment
Please, Sign In to add comment