Flat attribute and order of function definitions
- To: mathgroup at smc.vnet.net
- Subject: [mg105115] Flat attribute and order of function definitions
- From: Diego Fabregat <d.fabregat at gmail.com>
- Date: Sat, 21 Nov 2009 03:35:18 -0500 (EST)
Hi all,
Playing with some function definitions and attributes of functions I
got to a behaviour that I don't understand (example below). Depending
on the order I define function f1 and its attributes, it works or it
crashes. I know that the order of the definitions matters, so this is
kind of expected, but I would like to understand why this happens. Can
you point me to some reference that explains it?
Here you have the example:
In[1]:= Clear[f1]
In[2]:= ClearAttributes[f1, Flat]
In[3]:= f1[expr_] := expr
In[4]:= SetAttributes[f1, Flat]
In[5]:= ?f1
Global`f1
Attributes[f1]={Flat}
f1[expr_]:=expr
In[6]:= f1[c]
Out[6]= c
In[7]:= Clear[f1]
In[8]:= ClearAttributes[f1, Flat]
In[9]:= ?f1
Global`f1
In[10]:= SetAttributes[f1, Flat]
In[11]:= f1[expr_] := expr
In[12]:= ?f1
Global`f1
Attributes[f1]={Flat}
f1[expr_]:=expr
In[13]:= f1[c]
During evaluation of In[13]:= $IterationLimit::itlim: Iteration limit
of 4096 exceeded. >>
Out[13]= Hold[f1[c]]
- Follow-Ups:
- Re: Flat attribute and order of function definitions
- From: Leonid Shifrin <lshifr@gmail.com>
- Re: Flat attribute and order of function definitions