hickup in typeswitch

Saturday, 25 July 2015 · 3 messages
RS
Rob Stapper25 Jul 2015 14:51 #

Hi,

I encountered a little but nasty to find hick-up in the typeswitch command.

One would expect the code below to return: "map".

It returns: "function".

Looks like a bug to me.

typeswitch( map { 'p' : 'test'})

case function(*) return 'function'

case map(*) return 'map'

default return 'other'

Rob Stapper

--- Dit e-mailbericht is gecontroleerd op virussen met Avast antivirussoftware. https://www.avast.com/antivirus

HR
Hans-Juergen Rennau25 Jul 2015 15:42 #

Hi Rob, no - this is no bug, as a map *is* a (special kind) of function.

Compare http://www.w3.org/TR/xquery-31/#id-maps ; [Definition: A map is a function that associates a set of keys with values, resulting in a collection of key / value pairs.]

In other words, the expression

map{'p':'test'} instance of function(*)

MUST yield true, as it does in BaseX, as it does with Saxon.

Kind regards, Hans-Jürgen

Quoted text · Rob Stapper · 1 line
Rob Stapper <r.stapper at lijbrandt.nl> schrieb am 14:51 Samstag, 25.Juli 2015:

Hi,

I encountered a little but nasty to find hick-up in the typeswitch command. One would expect the code below to return: “map”. It returns: “function”. Looks like a bug to me.

typeswitch( map { 'p' : 'test'}) case function(*) return 'function' case map(*) return 'map' default return 'other'

Rob Stapper

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

www.avast.com

RS
Rob Stapper25 Jul 2015 15:57 #

Hi Hans-Juergen,

Thank you for the explanation and link. I wasn’t aware of that. So an item should always first be checked for map-type before checking it for function-type.

Learning new thing in the weekend.

Thanx,

Rob

PS. Same there for arrays too, as I read now.

Quoted text · Hans-Juergen Rennau · 30 lines
Van: Hans-Juergen Rennau [mailto:hrennau at yahoo.de] Verzonden: zaterdag 25 juli 2015 15:42 Aan: Rob Stapper; BaseX Onderwerp: Re: [basex-talk] hickup in typeswitch Hi Rob, no - this is no bug, as a map *is* a (special kind) of function. Compare http://www.w3.org/TR/xquery-31/#id-maps ; [Definition: A map is a function that associates a set of keys with values, resulting in a collection of key / value pairs.] In other words, the expression map{'p':'test'} instance of function(*) MUST yield true, as it does in BaseX, as it does with Saxon. Kind regards, Hans-Jürgen Rob Stapper <r.stapper at lijbrandt.nl> schrieb am 14:51 Samstag, 25.Juli 2015: Hi, I encountered a little but nasty to find hick-up in the typeswitch command. One would expect the code below to return: “map”. It returns: “function”. Looks like a bug to me. typeswitch( map { 'p' : 'test'}) case function(*) return 'function' case map(*) return 'map' default return 'other' Rob Stapper _____ <https://www.avast.com/antivirus> Afbeelding verwijderd door afzender. Avast logo Dit e-mailbericht is gecontroleerd op virussen met Avast antivirussoftware. www.avast.com <https://www.avast.com/antivirus> --- Dit e-mailbericht is gecontroleerd op virussen met Avast antivirussoftware. https://www.avast.com/antivirus

⚡Generated with XQuery