Mathics icon indicating copy to clipboard operation
Mathics copied to clipboard

Flat attribute of function doesn't automatically applied to every subsequence of arguments

Open CallmeNezha opened this issue 4 years ago • 1 comments

Following paragraph is taken from https://reference.wolfram.com/language/tutorial/EvaluationOfExpressions.html.en?source=footer

Attributes like Flat can affect not only evaluation, but also operations such as pattern matching. If you give definitions or transformation rules for a function, you must be sure to have specified the attributes of the function first. Here is a definition for the flat function f: In[3]:= f[x_, x_] := f[x] https://wolfram.com/xid/0m5dyglvgmwz4-si8 Because f is flat, the definition is automatically applied to every subsequence of arguments: In[4]:= f[a, a, a, b, b, b, c, c] https://wolfram.com/xid/0m5dyglvgmwz4-iw6 Out[4]= f[a, b, c]

But in Mathics it was

In[1]:= SetAttributes[f, Flat]
Out[1]= None

In[2]:= f[f[a, b], c]
Out[2]= f[a, b, c]

In[3]:= f[x_, x_] := f[x]
Out[3]= None

In[4]:= f[a, a, a, b, b, b, c, c]
Out[4]= f[a, b, b, b, c, c]

CallmeNezha avatar Jul 10 '21 07:07 CallmeNezha

Mathics is open-source software. Is this something you are interesting in investigating further in the source code to fix?

If not, it certainly helps me prioritize which bugs to look at by understanding what the impact is. Is this something you noticed interactively, or is this bug something that is keeping a package working? If a package it would be useful to know which package.

rocky avatar Jul 11 '21 07:07 rocky