If I get it right, you would also expect '!' not to be output in the following query, right?

  declare function local:f($a, $b) {
    if($a) then $b else ()
  };
  local:f((), trace('!'))

In this case, you'll have to wrap your trace call in a function:

  declare function local:f($a, $b) {
    if($a) then $b() else ()
  };
  local:f((), function() { trace('!') })

Best,
Christian



On Wed, May 13, 2015 at 11:44 AM, Rob Stapper <r.stapper@lijbrandt.nl> wrote:

Hi Christian,

 

This is the best I can do without losing the essence of the issue. Sorry about the import, forgot to remove that one.

The clue is in the “Query Info”-window. It shows:

 

Evaluating:

f1: 1

Compiling:

…….

 

So function “local:f1#1” is unnecessarely evaluated with value 1.

 

Success,

Rob

 

Van: Christian Grün [mailto:christian.gruen@gmail.com]
Verzonden: woensdag 13 mei 2015 11:13
Aan: Rob Stapper
CC: BaseX
Onderwerp: Re: [basex-talk] unexpected behaviour

 

Hi Rob,

 

It usually takes me some time to understand new code, so could you possibly simplify the example as much as possible? For example, the import cannot be resolved, an empty squence is bound to $a, which means that one branch will never be called, and maybe you can simplify the partial function application as well..

 

Thanks in advance,

Christian

 

 

 

On Wed, May 13, 2015 at 9:55 AM, Rob Stapper <r.stapper@lijbrandt.nl> wrote:

Hi Christian,

 

Can you have a look at the attached program.

Both items of the returned sequence of the program should do the same thing.

Both do give the same, correct result: an empty sequence, but the first item unnecessarely triggers function: “local:f1#1” , while the second item doesn’t.

This a pity since “local:f1#1” could be a time-consuming function.

 

Cheers,

Rob

 


Afbeelding verwijderd door afzender. Avast logo

Dit e-mailbericht is gecontroleerd op virussen met Avast antivirussoftware.
www.avast.com

 

 




Avast logo

Dit e-mailbericht is gecontroleerd op virussen met Avast antivirussoftware.
www.avast.com