This makes sense. My biggest problem was that my function took multiple parameters so I thought it wasn't really a function that would have been affected by mapping.
Now I think I understand it. Steve On Fri, Apr 2, 2010 at 6:37 PM, Danny Sokolsky <danny.sokol...@marklogic.com > wrote: > Right. And the other point I was trying to make is that if the function > takes a zero-or-one parameter, such as "xs:string?", then it is valid to > pass in the empty sequence and function mapping will not happen on that > parameter. Here is an example: > > xquery version "1.0-ml"; > > declare function local:will-map($x as xs:string) > { > $x, "function will-map was run" > }; > > declare function local:no-map($x as xs:string?) > { > $x, "function no-map was run" > }; > > "function will-map with empty sequence arg: > ", > local:will-map(()), > "function no-map with empty sequence arg: > ", > local:no-map(()) > > => > function will-map with empty sequence arg: > > function no-map with empty sequence arg: > > function no-map was run > > Clear as mud? > -Danny > > -----Original Message----- > From: general-boun...@developer.marklogic.com [mailto: > general-boun...@developer.marklogic.com] On Behalf Of Micah Dubinko > Sent: Friday, April 02, 2010 5:07 PM > To: General Mark Logic Developer Discussion > Subject: Re: [MarkLogic Dev General] Unexpected behavior > > Close. :-) > > On Apr 2, 2010, at 4:15 PM, spig wrote: > > > So, let me make sure I understand. > > > > When I declare a function with any number of parameters, if one of those > parameters requires a singleton, and I pass in an empty sequence, the > function will not likely be called if function mapping is on. This makes > sense to me now. > > With function mapping enabled, if a function takes a singleton argument, > and you pass in a sequence, your function will be called n times, where n is > the length of the sequence. This is true even when n is 0. > > > > > > And, by similar logic, it will not throw an error because the function > requires a singleton parameter, and I have provided one, albeit the empty > sequence. And, since the empty sequence is a valid singleton (is that true) > it will not throw an error because the parameters are valid. > > Actually, empty sequence is never a valid instance of a singleton type. In > cases like these the error fails to throw not because the parameter is > valid, but because the function itself never gets called. > > This is easy to get mixed up. I still do at times. -m > > > _______________________________________________ > General mailing list > General@developer.marklogic.com > http://xqzone.com/mailman/listinfo/general > _______________________________________________ > General mailing list > General@developer.marklogic.com > http://xqzone.com/mailman/listinfo/general >
_______________________________________________ General mailing list General@developer.marklogic.com http://xqzone.com/mailman/listinfo/general