Re: Functions with data hidden in them

*To*: mathgroup at smc.vnet.net*Subject*: [mg81872] Re: [mg81831] Functions with data hidden in them*From*: DrMajorBob <drmajorbob at bigfoot.com>*Date*: Fri, 5 Oct 2007 04:55:22 -0400 (EDT)*References*: <169091.1191555934591.JavaMail.root@m35>*Reply-to*: drmajorbob at bigfoot.com

Suppose I want a "dot" function that computes dot products of vectors with some fixed vector. One way to do this is: Clear[makeDot, dot] makeDot[v_?VectorQ] := dot[v] dot[v_?VectorQ][x_?VectorQ] /; Length[v] == Length[x] := v.x f = makeDot[{1, 1, 2}]; f[{a, b, c}] a + b + 2 c If the dimensions don't match, f returns unevaluated: f[{a, b}] dot[{1, 1, 2}][{a, b}] makeDot and dot are analogous to Interpolation and InterpolatingFunction, respectively. Bobby On Thu, 04 Oct 2007 03:29:26 -0500, Neil Stewart <neil.stewart at warwick.ac.uk> wrote: > The Interpolation[] function somehow "hides" the data passed to it in the > InterpolationFunction object that it returns. In the example below, when > f[1] is evaluated it is using information from the list data, but does > not > have the list data passed to it as parameter. > > In[1]:= data = {{1, 1}, {2, 2}, {3, 3}} > > In[2]:= f = Interpolation[data] > > In[3]:= f[1] > Out[3]= 1 > > How can I write my own function that stores data inside itself in the > same > way that Interpolation does? I'm aiming to write a functions that take s a > number as a parameter and consults a large data set to return a number . > I'm > not sure where to start - any ideas very welcome! > > Thanks, > Neil. > > > -- DrMajorBob at bigfoot.com