A single argument pattern definition applies to multiple-argument patterns?How to Enable Syntax Coloring of Pattern Match Variable Only (i.e. Without Coloring any Associated Pattern)?Deep Pattern matching with repeating argumentsHow to apply multiple/complicated requirements for a pattern in a function inputDetecting a more general patternHow do I tell pattern searcher the order in which to search for patterns given in general form?Confused by the opts : OptionsPattern[ ] patternHow does one unpack the contents of a list while using rules to substitute values for each variable?Combinations of multiple matching patternsLogical AND of multiple patternsOptimize DownValues: extract “non-patterns” from Alternatives

How difficult is it to simply disable/disengage the MCAS on Boeing 737 Max 8 & 9 Aircraft?

Why Choose Less Effective Armour Types?

How to plot polar formed complex numbers?

Can I use USB data pins as power source

This word with a lot of past tenses

Book about superhumans hiding among normal humans

If I can solve Sudoku, can I solve the Travelling Salesman Problem (TSP)? If so, how?

How to terminate ping <dest> &

Have researchers managed to "reverse time"? If so, what does that mean for physics?

Print a physical multiplication table

Bach's Toccata and Fugue in D minor breaks the "no parallel octaves" rule?

I am confused as to how the inverse of a certain function is found.

Why does a Star of David appear at a rally with Francisco Franco?

What is the Japanese sound word for the clinking of money?

Is "upgrade" the right word to use in this context?

How to deal with taxi scam when on vacation?

Python if-else code style for reduced code for rounding floats

Do I need to be arrogant to get ahead?

What do you call the act of removing a part of a word and replacing it with an apostrophe

What is the significance behind "40 days" that often appears in the Bible?

How to pronounce "I ♥ Huckabees"?

Shortcut for setting origin to vertex

How do I hide Chekhov's Gun?

Is there a symmetric-key algorithm which we can use for creating a signature?



A single argument pattern definition applies to multiple-argument patterns?


How to Enable Syntax Coloring of Pattern Match Variable Only (i.e. Without Coloring any Associated Pattern)?Deep Pattern matching with repeating argumentsHow to apply multiple/complicated requirements for a pattern in a function inputDetecting a more general patternHow do I tell pattern searcher the order in which to search for patterns given in general form?Confused by the opts : OptionsPattern[ ] patternHow does one unpack the contents of a list while using rules to substitute values for each variable?Combinations of multiple matching patternsLogical AND of multiple patternsOptimize DownValues: extract “non-patterns” from Alternatives













2












$begingroup$


Consider defining a pattern rule, such as



myFun[x_]:=x


As far as I understand Mathematica syntax, this rule means



whenever myFun appears with a single argument, replace the whole thing by the argument



Now, after the above definition, if we evaluate



myFun[x__]



x__




we see that even though the pattern x__ clearly symbolizes more than one argument, the single argument rule still gets executed!



Is this intended behavior? Maybe my syntax use is improper? How should I specify a single argument pattern rule which does not register with more-than-one argument patterns?










share|improve this question









$endgroup$











  • $begingroup$
    @kglr If I try to define myFun[x_] = x without the execution delay, I get the same behavior though...
    $endgroup$
    – Kagaratsch
    58 mins ago






  • 1




    $begingroup$
    In the second case Set has the attribute HoldFirst resulting in the same behavior.
    $endgroup$
    – kglr
    56 mins ago















2












$begingroup$


Consider defining a pattern rule, such as



myFun[x_]:=x


As far as I understand Mathematica syntax, this rule means



whenever myFun appears with a single argument, replace the whole thing by the argument



Now, after the above definition, if we evaluate



myFun[x__]



x__




we see that even though the pattern x__ clearly symbolizes more than one argument, the single argument rule still gets executed!



Is this intended behavior? Maybe my syntax use is improper? How should I specify a single argument pattern rule which does not register with more-than-one argument patterns?










share|improve this question









$endgroup$











  • $begingroup$
    @kglr If I try to define myFun[x_] = x without the execution delay, I get the same behavior though...
    $endgroup$
    – Kagaratsch
    58 mins ago






  • 1




    $begingroup$
    In the second case Set has the attribute HoldFirst resulting in the same behavior.
    $endgroup$
    – kglr
    56 mins ago













2












2








2





$begingroup$


Consider defining a pattern rule, such as



myFun[x_]:=x


As far as I understand Mathematica syntax, this rule means



whenever myFun appears with a single argument, replace the whole thing by the argument



Now, after the above definition, if we evaluate



myFun[x__]



x__




we see that even though the pattern x__ clearly symbolizes more than one argument, the single argument rule still gets executed!



Is this intended behavior? Maybe my syntax use is improper? How should I specify a single argument pattern rule which does not register with more-than-one argument patterns?










share|improve this question









$endgroup$




Consider defining a pattern rule, such as



myFun[x_]:=x


As far as I understand Mathematica syntax, this rule means



whenever myFun appears with a single argument, replace the whole thing by the argument



Now, after the above definition, if we evaluate



myFun[x__]



x__




we see that even though the pattern x__ clearly symbolizes more than one argument, the single argument rule still gets executed!



Is this intended behavior? Maybe my syntax use is improper? How should I specify a single argument pattern rule which does not register with more-than-one argument patterns?







pattern-matching replacement rule argument-patterns






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 1 hour ago









KagaratschKagaratsch

4,72931348




4,72931348











  • $begingroup$
    @kglr If I try to define myFun[x_] = x without the execution delay, I get the same behavior though...
    $endgroup$
    – Kagaratsch
    58 mins ago






  • 1




    $begingroup$
    In the second case Set has the attribute HoldFirst resulting in the same behavior.
    $endgroup$
    – kglr
    56 mins ago
















  • $begingroup$
    @kglr If I try to define myFun[x_] = x without the execution delay, I get the same behavior though...
    $endgroup$
    – Kagaratsch
    58 mins ago






  • 1




    $begingroup$
    In the second case Set has the attribute HoldFirst resulting in the same behavior.
    $endgroup$
    – kglr
    56 mins ago















$begingroup$
@kglr If I try to define myFun[x_] = x without the execution delay, I get the same behavior though...
$endgroup$
– Kagaratsch
58 mins ago




$begingroup$
@kglr If I try to define myFun[x_] = x without the execution delay, I get the same behavior though...
$endgroup$
– Kagaratsch
58 mins ago




1




1




$begingroup$
In the second case Set has the attribute HoldFirst resulting in the same behavior.
$endgroup$
– kglr
56 mins ago




$begingroup$
In the second case Set has the attribute HoldFirst resulting in the same behavior.
$endgroup$
– kglr
56 mins ago










1 Answer
1






active

oldest

votes


















4












$begingroup$

The pattern x__ is a Pattern object:



x__ //FullForm



Pattern[x,BlankSequence[]]




While the pattern object represents multiple arguments in a Rule or a function definition, it is a single object. Hence, your definition applies.



Why are you applying a function to a Pattern object, this is an unusual thing to do. Pattern objects usually appear inside of function definitions (Set or SetDelayed) or inside of rules (Rule or RuleDelayed).






share|improve this answer









$endgroup$












  • $begingroup$
    My trouble is that after the myFun[x_]:=x definition, if I try to use /.myFun[x__]->... type of substitutions, the substitution is applied to x__ instead of myFun[x__] which is mildly inconvenient. My workaround is to use /.myFun[x_,y__]->... instead.
    $endgroup$
    – Kagaratsch
    4 mins ago






  • 1




    $begingroup$
    @Kagaratsch Rule doesn't have any Hold attributes, so myFun evaluates. Typically, one works around this by using HoldPattern, e.g., /. HoldPattern[myFun[x__]] -> ....
    $endgroup$
    – Carl Woll
    2 mins ago










  • $begingroup$
    I see, very useful, thank you!
    $endgroup$
    – Kagaratsch
    1 min ago










Your Answer





StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
);
);
, "mathjax-editing");

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
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f193389%2fa-single-argument-pattern-definition-applies-to-multiple-argument-patterns%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









4












$begingroup$

The pattern x__ is a Pattern object:



x__ //FullForm



Pattern[x,BlankSequence[]]




While the pattern object represents multiple arguments in a Rule or a function definition, it is a single object. Hence, your definition applies.



Why are you applying a function to a Pattern object, this is an unusual thing to do. Pattern objects usually appear inside of function definitions (Set or SetDelayed) or inside of rules (Rule or RuleDelayed).






share|improve this answer









$endgroup$












  • $begingroup$
    My trouble is that after the myFun[x_]:=x definition, if I try to use /.myFun[x__]->... type of substitutions, the substitution is applied to x__ instead of myFun[x__] which is mildly inconvenient. My workaround is to use /.myFun[x_,y__]->... instead.
    $endgroup$
    – Kagaratsch
    4 mins ago






  • 1




    $begingroup$
    @Kagaratsch Rule doesn't have any Hold attributes, so myFun evaluates. Typically, one works around this by using HoldPattern, e.g., /. HoldPattern[myFun[x__]] -> ....
    $endgroup$
    – Carl Woll
    2 mins ago










  • $begingroup$
    I see, very useful, thank you!
    $endgroup$
    – Kagaratsch
    1 min ago















4












$begingroup$

The pattern x__ is a Pattern object:



x__ //FullForm



Pattern[x,BlankSequence[]]




While the pattern object represents multiple arguments in a Rule or a function definition, it is a single object. Hence, your definition applies.



Why are you applying a function to a Pattern object, this is an unusual thing to do. Pattern objects usually appear inside of function definitions (Set or SetDelayed) or inside of rules (Rule or RuleDelayed).






share|improve this answer









$endgroup$












  • $begingroup$
    My trouble is that after the myFun[x_]:=x definition, if I try to use /.myFun[x__]->... type of substitutions, the substitution is applied to x__ instead of myFun[x__] which is mildly inconvenient. My workaround is to use /.myFun[x_,y__]->... instead.
    $endgroup$
    – Kagaratsch
    4 mins ago






  • 1




    $begingroup$
    @Kagaratsch Rule doesn't have any Hold attributes, so myFun evaluates. Typically, one works around this by using HoldPattern, e.g., /. HoldPattern[myFun[x__]] -> ....
    $endgroup$
    – Carl Woll
    2 mins ago










  • $begingroup$
    I see, very useful, thank you!
    $endgroup$
    – Kagaratsch
    1 min ago













4












4








4





$begingroup$

The pattern x__ is a Pattern object:



x__ //FullForm



Pattern[x,BlankSequence[]]




While the pattern object represents multiple arguments in a Rule or a function definition, it is a single object. Hence, your definition applies.



Why are you applying a function to a Pattern object, this is an unusual thing to do. Pattern objects usually appear inside of function definitions (Set or SetDelayed) or inside of rules (Rule or RuleDelayed).






share|improve this answer









$endgroup$



The pattern x__ is a Pattern object:



x__ //FullForm



Pattern[x,BlankSequence[]]




While the pattern object represents multiple arguments in a Rule or a function definition, it is a single object. Hence, your definition applies.



Why are you applying a function to a Pattern object, this is an unusual thing to do. Pattern objects usually appear inside of function definitions (Set or SetDelayed) or inside of rules (Rule or RuleDelayed).







share|improve this answer












share|improve this answer



share|improve this answer










answered 52 mins ago









Carl WollCarl Woll

70.5k394184




70.5k394184











  • $begingroup$
    My trouble is that after the myFun[x_]:=x definition, if I try to use /.myFun[x__]->... type of substitutions, the substitution is applied to x__ instead of myFun[x__] which is mildly inconvenient. My workaround is to use /.myFun[x_,y__]->... instead.
    $endgroup$
    – Kagaratsch
    4 mins ago






  • 1




    $begingroup$
    @Kagaratsch Rule doesn't have any Hold attributes, so myFun evaluates. Typically, one works around this by using HoldPattern, e.g., /. HoldPattern[myFun[x__]] -> ....
    $endgroup$
    – Carl Woll
    2 mins ago










  • $begingroup$
    I see, very useful, thank you!
    $endgroup$
    – Kagaratsch
    1 min ago
















  • $begingroup$
    My trouble is that after the myFun[x_]:=x definition, if I try to use /.myFun[x__]->... type of substitutions, the substitution is applied to x__ instead of myFun[x__] which is mildly inconvenient. My workaround is to use /.myFun[x_,y__]->... instead.
    $endgroup$
    – Kagaratsch
    4 mins ago






  • 1




    $begingroup$
    @Kagaratsch Rule doesn't have any Hold attributes, so myFun evaluates. Typically, one works around this by using HoldPattern, e.g., /. HoldPattern[myFun[x__]] -> ....
    $endgroup$
    – Carl Woll
    2 mins ago










  • $begingroup$
    I see, very useful, thank you!
    $endgroup$
    – Kagaratsch
    1 min ago















$begingroup$
My trouble is that after the myFun[x_]:=x definition, if I try to use /.myFun[x__]->... type of substitutions, the substitution is applied to x__ instead of myFun[x__] which is mildly inconvenient. My workaround is to use /.myFun[x_,y__]->... instead.
$endgroup$
– Kagaratsch
4 mins ago




$begingroup$
My trouble is that after the myFun[x_]:=x definition, if I try to use /.myFun[x__]->... type of substitutions, the substitution is applied to x__ instead of myFun[x__] which is mildly inconvenient. My workaround is to use /.myFun[x_,y__]->... instead.
$endgroup$
– Kagaratsch
4 mins ago




1




1




$begingroup$
@Kagaratsch Rule doesn't have any Hold attributes, so myFun evaluates. Typically, one works around this by using HoldPattern, e.g., /. HoldPattern[myFun[x__]] -> ....
$endgroup$
– Carl Woll
2 mins ago




$begingroup$
@Kagaratsch Rule doesn't have any Hold attributes, so myFun evaluates. Typically, one works around this by using HoldPattern, e.g., /. HoldPattern[myFun[x__]] -> ....
$endgroup$
– Carl Woll
2 mins ago












$begingroup$
I see, very useful, thank you!
$endgroup$
– Kagaratsch
1 min ago




$begingroup$
I see, very useful, thank you!
$endgroup$
– Kagaratsch
1 min ago

















draft saved

draft discarded
















































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.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f193389%2fa-single-argument-pattern-definition-applies-to-multiple-argument-patterns%23new-answer', 'question_page');

);

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







Popular posts from this blog

名間水力發電廠 目录 沿革 設施 鄰近設施 註釋 外部連結 导航菜单23°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.7113923°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.71139計畫概要原始内容臺灣第一座BOT 模式開發的水力發電廠-名間水力電廠名間水力發電廠 水利署首件BOT案原始内容《小檔案》名間電廠 首座BOT水力發電廠原始内容名間電廠BOT - 經濟部水利署中區水資源局

格濟夫卡 參考資料 导航菜单51°3′40″N 34°2′21″E / 51.06111°N 34.03917°E / 51.06111; 34.03917ГезівкаПогода в селі 编辑或修订