From: Leo B. <l_b...@us...> - 2014-04-07 11:59:34
|
Robert Dodier <rob...@gm...> writes: > Leo Butler <l_butler <at> users.sourceforge.net> writes: > >> To be less cheeky, consider >> >> f[n](e) := coeff(e,x,n)$ >> >> If f[n] := ... is a memoizing definition, I expect that >> >> f[n](e) := ... is also a memoizing definition, which memoizes a function >> of 1 variable (e) parameterized by n. That is, I expect it to be a >> syntaxy equivalent to >> >> f[n] := buildq([n:n],lambda([e],coeff(e,x,n)))$ > > I've thought about this some more and at this point I believe > the current behavior is better than the alternative. > When the function is f[n] := ... the body gets evaluated when > the function is called. So when the function is f[n](x) := ... > the body should likewise be evaluated (and then used to construct > a lambda expression). > > As it happens, there is no documentation at all about functions > like f[n](x) (and very little about f[n]). So there isn't any > question of changing the documentation, or even of referring > users to the documentation, because there isn't any. > I am inclined to document the current behavior and let it stand. > > Thanks to all who have weighed in on this topic. It is a good one. Robert, I think that it has been a mistake to say that f[n](x) := ... *should* do X or Y based on the syntax. The point is that it does *do* Y at the moment, and it has done this for a long time. Let's leave it as is. What I would like to do, then, is add a package in share/contrib that defines a new infix operator, :≡, so that f[n](x) :≡ ... defines the alternative behaviour. I believe that this is consistent with current practice. For example, contrast f(x) := ... and f(x) ::= ... . Thoughts? -- Leo Butler <l_b...@us...> SDF Public Access UNIX System - http://sdf.lonestar.org |