From: <je...@fa...> - 2006-02-02 16:34:49
|
Hello! > > for $i in 1 to 100 > > let $x := local:some_complex_function() > > where $i mod 25 = 0 > > return $x > > It would be a huge spead increase if the local:some_complex_function() would > > be evaluated only when necessary. Is is feasible ? I can imagine two alternatives there: 1) exist could use some kind of 'lazy evaluation'. This means only the context of a variable binding has to be stored. The expression defining the variable value will then be evaluated the first time that variable is used with the stored context. I don't know yet enough about exist's context handling, so I am not sure if this can be implemented efficiently... 2) automatic rewriting of the expression to for $i in 1 to 100 return if ($i mod 25) then let $x := local:some_complex_function() return $x else let $x := local:some_complex_function() return () and then "pruning" the unused part: for $i in 1 to 100 return if ($i mod 25) then let $x := local:some_complex_function() return $x else () Jens |