Obtaining head and parts without evaluationInjecting a sequence of expressions into a held expressionImpossible to bypass evaluation on returned values?Parts of Module body evaluated in external scope?Labeling plots without evaluationConverting expression into string without evaluating itHow to force evaluation of an expression with Part left unnevaluated?Help on order of evaluation within plot functionControlling the order of evaluation with local variables inside an IntegrationEvaluation of a ConditionalExpressionHow to stop evaluation of Zeta with even arguments
What was the difference between a Games Console and a Home Computer?
Is it legal for a supermarket to refuse to sell an adult beer if an adult with them doesn’t have their ID?
Why jet engines sound louder on the ground than inside the aircraft?
Amira L'Akum not on Shabbat
Drawing a circle with nodes shift with Tikz
is 1hr 15 minutes enough time to change terminals at Manila?
What was the average temperature of space near the Spitzer Satellite Telescope?
Is encryption still applied if you ignore the SSL certificate warning for self signed?
Inscriptio Labyrinthica
May I use a railway velocipede on used British railways?
Locked-up DOS computer beeped on keypress. What mechanism caused that?
How to draw a winding on a toroid of a circular cross section?
What details should I consider before agreeing for part of my salary to be 'retained' by employer?
We get more abuse than anyone else
Why won't some unicode characters print to my terminal?
Which modern firearm should a time traveler bring to be easily reproducible for a historic civilization?
How to interpret a promising preprint that was never published?
Pauli exclusion principle - black holes
"Je suis petite, moi?", purpose of the "moi"?
Is surviving this (blood loss) scenario possible?
Why aren't there any women super GMs?
Why teach C using scanf without talking about command line arguments?
Which GPUs to get for Mathematical Optimization (if any)?
How fast does a character need to move to be effectively invisible?
Obtaining head and parts without evaluation
Injecting a sequence of expressions into a held expressionImpossible to bypass evaluation on returned values?Parts of Module body evaluated in external scope?Labeling plots without evaluationConverting expression into string without evaluating itHow to force evaluation of an expression with Part left unnevaluated?Help on order of evaluation within plot functionControlling the order of evaluation with local variables inside an IntegrationEvaluation of a ConditionalExpressionHow to stop evaluation of Zeta with even arguments
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
$begingroup$
I have been trying to write a routine MyHead and MyPart
which would have the following properties.
MyHead[2+3]
evaluates to Plus
MyHead[(2+4)[10,11]]
evaluates to 2+4 (and not 6).
MyPart[f[2+3,10+11],1]
evaluates to 2+3
MyPart[f[2+3,10+11],2]
evaluates to 10+11
Ideally, this could be used to deeply
dive into an expression. For example, it could find the local variables
in the module
g[x_] := Module[y,z,w,t];
from
Defintions[g]
I can't get it. Any suggestions?
Mark
evaluation hold
$endgroup$
add a comment |
$begingroup$
I have been trying to write a routine MyHead and MyPart
which would have the following properties.
MyHead[2+3]
evaluates to Plus
MyHead[(2+4)[10,11]]
evaluates to 2+4 (and not 6).
MyPart[f[2+3,10+11],1]
evaluates to 2+3
MyPart[f[2+3,10+11],2]
evaluates to 10+11
Ideally, this could be used to deeply
dive into an expression. For example, it could find the local variables
in the module
g[x_] := Module[y,z,w,t];
from
Defintions[g]
I can't get it. Any suggestions?
Mark
evaluation hold
$endgroup$
add a comment |
$begingroup$
I have been trying to write a routine MyHead and MyPart
which would have the following properties.
MyHead[2+3]
evaluates to Plus
MyHead[(2+4)[10,11]]
evaluates to 2+4 (and not 6).
MyPart[f[2+3,10+11],1]
evaluates to 2+3
MyPart[f[2+3,10+11],2]
evaluates to 10+11
Ideally, this could be used to deeply
dive into an expression. For example, it could find the local variables
in the module
g[x_] := Module[y,z,w,t];
from
Defintions[g]
I can't get it. Any suggestions?
Mark
evaluation hold
$endgroup$
I have been trying to write a routine MyHead and MyPart
which would have the following properties.
MyHead[2+3]
evaluates to Plus
MyHead[(2+4)[10,11]]
evaluates to 2+4 (and not 6).
MyPart[f[2+3,10+11],1]
evaluates to 2+3
MyPart[f[2+3,10+11],2]
evaluates to 10+11
Ideally, this could be used to deeply
dive into an expression. For example, it could find the local variables
in the module
g[x_] := Module[y,z,w,t];
from
Defintions[g]
I can't get it. Any suggestions?
Mark
evaluation hold
evaluation hold
asked 8 hours ago
Mark S.Mark S.
1432 bronze badges
1432 bronze badges
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
$begingroup$
You can capture but you can't return 2+4
unless you hold it somehow. I will use Hold for that purpose:
MyHead // Attributes = HoldAll;
MyHead[expr_] := MyPart[expr, 0]
MyPart // Attributes = HoldAll;
MyPart[expr_, spec__] := Hold[expr][[1, spec]]
It fits all your examples except it returns results wrapped with Hold
. You can use HoldForm
to not show it but the point holds.
$endgroup$
add a comment |
$begingroup$
I tend to prefer Defer
over Hold
because it doesn't show in the output and the results can be used as new input without having to release the hold manually.
Other than that, the following is copied straight from Kuba's solution:
MyHead // Attributes = HoldAll;
MyHead[expr_] := MyPart[expr, 0]
MyPart // Attributes = HoldAll;
MyPart[expr_, spec__] := Defer[expr][[1, spec]]
MyHead[2 + 3]
(* Plus *)
MyHead[(2 + 4)[10, 11]]
(* 2 + 4 *)
MyPart[f[2 + 3, 10 + 11], 1]
(* 2 + 3 *)
MyPart[f[2 + 3, 10 + 11], 2]
(* 10 + 11 *)
$endgroup$
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "387"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f202329%2fobtaining-head-and-parts-without-evaluation%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
You can capture but you can't return 2+4
unless you hold it somehow. I will use Hold for that purpose:
MyHead // Attributes = HoldAll;
MyHead[expr_] := MyPart[expr, 0]
MyPart // Attributes = HoldAll;
MyPart[expr_, spec__] := Hold[expr][[1, spec]]
It fits all your examples except it returns results wrapped with Hold
. You can use HoldForm
to not show it but the point holds.
$endgroup$
add a comment |
$begingroup$
You can capture but you can't return 2+4
unless you hold it somehow. I will use Hold for that purpose:
MyHead // Attributes = HoldAll;
MyHead[expr_] := MyPart[expr, 0]
MyPart // Attributes = HoldAll;
MyPart[expr_, spec__] := Hold[expr][[1, spec]]
It fits all your examples except it returns results wrapped with Hold
. You can use HoldForm
to not show it but the point holds.
$endgroup$
add a comment |
$begingroup$
You can capture but you can't return 2+4
unless you hold it somehow. I will use Hold for that purpose:
MyHead // Attributes = HoldAll;
MyHead[expr_] := MyPart[expr, 0]
MyPart // Attributes = HoldAll;
MyPart[expr_, spec__] := Hold[expr][[1, spec]]
It fits all your examples except it returns results wrapped with Hold
. You can use HoldForm
to not show it but the point holds.
$endgroup$
You can capture but you can't return 2+4
unless you hold it somehow. I will use Hold for that purpose:
MyHead // Attributes = HoldAll;
MyHead[expr_] := MyPart[expr, 0]
MyPart // Attributes = HoldAll;
MyPart[expr_, spec__] := Hold[expr][[1, spec]]
It fits all your examples except it returns results wrapped with Hold
. You can use HoldForm
to not show it but the point holds.
edited 8 hours ago
answered 8 hours ago
Kuba♦Kuba
110k12 gold badges217 silver badges555 bronze badges
110k12 gold badges217 silver badges555 bronze badges
add a comment |
add a comment |
$begingroup$
I tend to prefer Defer
over Hold
because it doesn't show in the output and the results can be used as new input without having to release the hold manually.
Other than that, the following is copied straight from Kuba's solution:
MyHead // Attributes = HoldAll;
MyHead[expr_] := MyPart[expr, 0]
MyPart // Attributes = HoldAll;
MyPart[expr_, spec__] := Defer[expr][[1, spec]]
MyHead[2 + 3]
(* Plus *)
MyHead[(2 + 4)[10, 11]]
(* 2 + 4 *)
MyPart[f[2 + 3, 10 + 11], 1]
(* 2 + 3 *)
MyPart[f[2 + 3, 10 + 11], 2]
(* 10 + 11 *)
$endgroup$
add a comment |
$begingroup$
I tend to prefer Defer
over Hold
because it doesn't show in the output and the results can be used as new input without having to release the hold manually.
Other than that, the following is copied straight from Kuba's solution:
MyHead // Attributes = HoldAll;
MyHead[expr_] := MyPart[expr, 0]
MyPart // Attributes = HoldAll;
MyPart[expr_, spec__] := Defer[expr][[1, spec]]
MyHead[2 + 3]
(* Plus *)
MyHead[(2 + 4)[10, 11]]
(* 2 + 4 *)
MyPart[f[2 + 3, 10 + 11], 1]
(* 2 + 3 *)
MyPart[f[2 + 3, 10 + 11], 2]
(* 10 + 11 *)
$endgroup$
add a comment |
$begingroup$
I tend to prefer Defer
over Hold
because it doesn't show in the output and the results can be used as new input without having to release the hold manually.
Other than that, the following is copied straight from Kuba's solution:
MyHead // Attributes = HoldAll;
MyHead[expr_] := MyPart[expr, 0]
MyPart // Attributes = HoldAll;
MyPart[expr_, spec__] := Defer[expr][[1, spec]]
MyHead[2 + 3]
(* Plus *)
MyHead[(2 + 4)[10, 11]]
(* 2 + 4 *)
MyPart[f[2 + 3, 10 + 11], 1]
(* 2 + 3 *)
MyPart[f[2 + 3, 10 + 11], 2]
(* 10 + 11 *)
$endgroup$
I tend to prefer Defer
over Hold
because it doesn't show in the output and the results can be used as new input without having to release the hold manually.
Other than that, the following is copied straight from Kuba's solution:
MyHead // Attributes = HoldAll;
MyHead[expr_] := MyPart[expr, 0]
MyPart // Attributes = HoldAll;
MyPart[expr_, spec__] := Defer[expr][[1, spec]]
MyHead[2 + 3]
(* Plus *)
MyHead[(2 + 4)[10, 11]]
(* 2 + 4 *)
MyPart[f[2 + 3, 10 + 11], 1]
(* 2 + 3 *)
MyPart[f[2 + 3, 10 + 11], 2]
(* 10 + 11 *)
answered 8 hours ago
RomanRoman
14.1k1 gold badge19 silver badges51 bronze badges
14.1k1 gold badge19 silver badges51 bronze badges
add a comment |
add a comment |
Thanks for contributing an answer to Mathematica Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f202329%2fobtaining-head-and-parts-without-evaluation%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown