Re: Listable functions with two brackets f[][] (SubValues)
- To: mathgroup at smc.vnet.net
- Subject: [mg64938] Re: [mg64909] Listable functions with two brackets f[][] (SubValues)
- From: "David Park" <djmp at earthlink.net>
- Date: Wed, 8 Mar 2006 01:00:04 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Hugh, I think you can get what you want by defining f[vec_] as a Function. With a Function you can set attributes as a third argument. It's in the Help notes. b = Line[{{1, 2}, {3, 4}, {5, 6}}]; c = {b, Line[{{2, 3}, {5, 6}, {9, 3}}]}; f[vec_] := Function[{a}, Line[(#1 + vec & ) /@ First[a]], {Listable}] f[{1, 3}][b] Line[{{2, 5}, {4, 7}, {6, 9}}] f[{1, 3}][c] {Line[{{2, 5}, {4, 7}, {6, 9}}], Line[{{3, 6}, {6, 9}, {10, 6}}]} David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: Goyder Dr HGD [mailto:h.g.d.goyder at cranfield.ac.uk] To: mathgroup at smc.vnet.net I would like to use a double bracket function f[][] as, I believe, originally promoted by David Park. The second bracket is called the SubValues of f. My problem is that I would like the second bracket to be Listable. Is this possible.? The following is a toy example by way of illustration. Suppose I wish to make a function that translates the graphics primitive Line. Then I can make a function as follows and it works for one Line[]. In[1]:= ClearAll[f]; f[vec_][a_Line] := Line[(#1 + vec & ) /@ a[[1]]] In[3]:= b = Line[{{1, 2}, {3, 4}, {5, 6}}]; In[4]:= f[{1, 3}][b] Out[4]= Line[{{2,5},{4,7},{6,9}}] However, if I have a list of Lines[] it does not work because the second bracket does not have the Attribute Listable. In[5]:= c = {b, Line[{{2, 3}, {5, 6}, {9, 3}}]}; In[6]:= f[{1, 3}][c] Out[6]= f[{1,3}][{Line[{{1,2},{3,4},{5,6}}],Line[{{2,3},{5,6},{9,3}}]}] Attempts to make the function f[][] Listable fail because it makes the first and not the second bracket Listable. In[7]:= SetAttributes[f, Listable] In[8]:= f[{1, 3}][c] Out[8]= {f[1],f[3]}[{Line[{{1,2},{3,4},{5,6}}],Line[{{2,3},{5,6},{9,3}}]}] Is there a solution? Thanks Hugh Goyder -- This message has been scanned for viruses and dangerous content by the Cranfield MailScanner, and is believed to be clean.