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

Why does overlay work only on the first tcolorbox?

Pauli exclusion principle

Why do passenger jet manufacturers design their planes with stall prevention systems?

Simplify an interface for flexibly applying rules to periods of time

Are ETF trackers fundamentally better than individual stocks?

Adventure Game (text based) in C++

Time travel from stationary position?

Min function accepting varying number of arguments in C++17

New passport but visa is in old (lost) passport

Bacteria contamination inside a thermos bottle

Do the common programs (for example: "ls", "cat") in Linux and BSD come from the same source code?

How could a scammer know the apps on my phone / iTunes account?

Life insurance that covers only simultaneous/dual deaths

Describing a chess game in a novel

Have the tides ever turned twice on any open problem?

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

Why one should not leave fingerprints on bulbs and plugs?

Why Choose Less Effective Armour Types?

Is there a place to find the pricing for things not mentioned in the PHB? (non-magical)

Official degrees of earth’s rotation per day

What options are left, if Britain cannot decide?

Instead of a Universal Basic Income program, why not implement a "Universal Basic Needs" program?

Employee lack of ownership

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



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
    1 hour ago






  • 1




    $begingroup$
    In the second case Set has the attribute HoldFirst resulting in the same behavior.
    $endgroup$
    – kglr
    1 hour 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
    1 hour ago






  • 1




    $begingroup$
    In the second case Set has the attribute HoldFirst resulting in the same behavior.
    $endgroup$
    – kglr
    1 hour 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
    1 hour ago






  • 1




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
















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






  • 1




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















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




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




1




1




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




$begingroup$
In the second case Set has the attribute HoldFirst resulting in the same behavior.
$endgroup$
– kglr
1 hour 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
    12 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
    11 mins ago










  • $begingroup$
    I see, very useful, thank you!
    $endgroup$
    – Kagaratsch
    9 mins ago










  • $begingroup$
    Is there a way to make Rule hold patterns by default?
    $endgroup$
    – Kagaratsch
    7 mins 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
    12 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
    11 mins ago










  • $begingroup$
    I see, very useful, thank you!
    $endgroup$
    – Kagaratsch
    9 mins ago










  • $begingroup$
    Is there a way to make Rule hold patterns by default?
    $endgroup$
    – Kagaratsch
    7 mins 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
    12 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
    11 mins ago










  • $begingroup$
    I see, very useful, thank you!
    $endgroup$
    – Kagaratsch
    9 mins ago










  • $begingroup$
    Is there a way to make Rule hold patterns by default?
    $endgroup$
    – Kagaratsch
    7 mins 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 1 hour 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
    12 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
    11 mins ago










  • $begingroup$
    I see, very useful, thank you!
    $endgroup$
    – Kagaratsch
    9 mins ago










  • $begingroup$
    Is there a way to make Rule hold patterns by default?
    $endgroup$
    – Kagaratsch
    7 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
    12 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
    11 mins ago










  • $begingroup$
    I see, very useful, thank you!
    $endgroup$
    – Kagaratsch
    9 mins ago










  • $begingroup$
    Is there a way to make Rule hold patterns by default?
    $endgroup$
    – Kagaratsch
    7 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
12 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
12 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
11 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
11 mins ago












$begingroup$
I see, very useful, thank you!
$endgroup$
– Kagaratsch
9 mins ago




$begingroup$
I see, very useful, thank you!
$endgroup$
– Kagaratsch
9 mins ago












$begingroup$
Is there a way to make Rule hold patterns by default?
$endgroup$
– Kagaratsch
7 mins ago




$begingroup$
Is there a way to make Rule hold patterns by default?
$endgroup$
– Kagaratsch
7 mins 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

Era Viking Índice Início da Era Viquingue | Cotidiano | Sociedade | Língua | Religião | A arte | As primeiras cidades | As viagens dos viquingues | Viquingues do Oeste e Leste | Fim da Era Viquingue | Fontes históricas | Referências Bibliografia | Ligações externas | Menu de navegação«Sverige då!»«Handel I vikingetid»«O que é Nórdico Antigo»Mito, magia e religião na volsunga saga Um olhar sobre a trajetória mítica do herói sigurd«Bonden var den verklige vikingen»«Vikingatiden»«Vikingatiden»«Vinland»«Guerreiras de Óðinn: As Valkyrjor na Mitologia Viking»1519-9053«Esculpindo símbolos e seres: A arte viking em pedras rúnicas»1679-9313Historia - Tema: VikingarnaAventura e Magia no Mundo das Sagas IslandesasEra Vikinge

Metrô de Los Teques Índice Linhas | Estações | Ver também | Referências Ligações externas | Menu de navegação«INSTITUCIÓN»«Mapa de rutas»originalMetrô de Los TequesC.A. Metro Los Teques |Alcaldía de Guaicaipuro – Sitio OficialGobernacion de Mirandaeeeeeee

What's the metal clinking sound at the end of credits in Avengers: Endgame?What makes Thanos so strong in Avengers: Endgame?Who is the character that appears at the end of Endgame?What happens to Mjolnir (Thor's hammer) at the end of Endgame?The People's Ages in Avengers: EndgameWhat did Nebula do in Avengers: Endgame?Messing with time in the Avengers: Endgame climaxAvengers: Endgame timelineWhat are the time-travel rules in Avengers Endgame?Why use this song in Avengers: Endgame Opening Logo Sequence?Peggy's age in Avengers Endgame