green's functions, passing functions to a routine



Ok. I am trying to digest all that.

> An easy way to guarantee that you are using the value and not the
> functional value is (+f)(...):
>
>    block([f:foo],[f(2),f[2],f]) =>  [fun, arr, foo, foo()]

   Did you mistype something, in the line above, leave out (+f)
 somewhere?

> The other alternative is, as Robert says, some sort of convention, e.g.
> calling functional arguments %f or whatever.

  Am I incorrect in thinking that using 'apply' instead of a function
call is also a reasonable solution to the problem ?

> > fold(f,x,v) := block([res],
> >  res:apply(f,[x,v[1]]),
> >  for a in rest(v,1) do
> >  res:apply(f,[res,a]),res);
> >