If you mean you don't want to call it twice at each iteration:

function build_vec(n,x) =

n== 0 ? [] // assume you meant ==

: let(fx=f(x))

concat([[n,fx], build_vec(n-1,fx)]); // assume close square bracket on the right side

If you mean you want to call it once over all then

function build_vec(n,fx)

and pass f(x) in as an argument. You can use a caller function to calculate f(x).

I may have inserted the brackets in the wrong place to make your code valid. As I did above it makes ever deeper nested vectors. If what you actually want is a table all at the same nesting depth, you might be able to make it using a list comprehension.

GeoffHorton wrote

Sorry for the vague title, but I couldn't come up with a better one.

I have a recursive function like this:

function build_vec(n, x) =

n = 0

? []

: concat([[n, f(x)], build_vec(n - 1, f(x)));

where f(x) is a multi-level iteration over vectors that takes a long time to

run. Life would be a lot more efficient if there were a way only to call

f(x) once, but I can't figure out how to do it. Is there a way?

--

Sent from:

http://forum.openscad.org/_______________________________________________

OpenSCAD mailing list

To unsubscribe send an email to

[hidden email]

Sent from the

OpenSCAD mailing list archive at Nabble.com.

_______________________________________________

OpenSCAD mailing list

To unsubscribe send an email to

[hidden email]