Jaa


Arvot

Arvo on tieto, joka tuotetaan lausekkeen arvioinnin avulla. Tässä osiossa kuvataan M-kielen arvojen lajit. Kuhunkin arvoon liittyy literaalisyntaksi, sen lajin arvojen joukko, tämän arvojoukon määrittämä operaattorijoukko sekä luontainen tyyppi, joka on määritetty uusille rakennetuille arvoille.

Laji Literal
Nolla null
Looginen true    false
Määrä 0    1    -1    1.5    2.3e-5
Time #time(09,15,00)
Päivämäärä #date(2013,02,26)
Päivämäärä ja aika #datetime(2013,02,26, 09,15,00)
Päivämäärä, aika ja aikavyöhyke #datetimezone(2013,02,26, 09,15,00, 09,00)
Kesto #duration(0,1,30,0)
Teksti "hello"
Binääri #binary("AQID")
Luettelo {1, 2, 3}
Nauhoita [ A = 1, B = 2 ]
Table #table({"X","Y"},{{0,1},{1,0}})
Funktio (x) => x + 1
Tyyppi type { number }    type table [ A = any, B = text ]

Seuraavissa osioissa käsitellään kutakin arvolajia yksityiskohtaisesti. Tyypit ja tyyppimääriteys on määritelty muodollisesti kohdassa Tyypit. Funktioarvot on määritetty kohdassa Funktiot. Seuraavissa osioissa luetellaan kullekin arvolajille määritetyt operaattorit ja annetaan esimerkkejä. Operaattorin semantiikan täydellinen kuvaus on annettu kohdassa Operaattorit.

Tyhjäarvo

Tyhjäarvoa käytetään ilmaisemaan arvon puuttumista tai määrittämättömän tai tuntemattoman tilan arvoa. Tyhjäarvo kirjoitetaan literaalin nullavulla. Seuraavat operaattorit on määritetty tyhjäarvoille:

Operaattori Result
x > y Suurempi kuin
x >= y Suurempi tai yhtä suuri kuin
x < y Pienempi kuin
x <= y Pienempi tai yhtä suuri kuin
x = y Equal
x <> y Not equal
x ?? y Coalesce

Arvon alkuperäinen null tyyppi on perustyyppi null.

Looginen

Totuusarvo-operaatioissa käytetään loogista arvoa , jonka arvo on tosi tai epätosi. Looginen arvo kirjoitetaan literaalien true ja falseavulla. Seuraavat operaattorit on määritetty loogisille arvoille:

Operaattori Result
x > y Suurempi kuin
x >= y Suurempi tai yhtä suuri kuin
x < y Pienempi kuin
x <= y Pienempi tai yhtä suuri kuin
x = y Equal
x <> y Not equal
x or y Ehdollinen looginen TAI
x ?? y Coalesce
x and y Ehdollinen looginen JA
not x Looginen NOT

Molempien loogisten arvojen (true ja false) alkuperäinen tyyppi on perustyyppi logical.

Määrä

Lukuarvoa käytetään numeerisissa ja aritmeettiisissa toiminnoissa. Seuraavissa on esimerkkejä lukuliteraalista:

3.14  // Fractional number 
-1.5  // Fractional number 
1.0e3 // Fractional number with exponent
123   // Whole number 
1e3   // Whole number with exponent 
0xff  // Whole number in hex (255)

Luku esitetään vähintään Double-tarkkuudella (mutta voi sisältää suuremmankin tarkkuuden). Double-esitys on yhtenevä IEEE 64-bittisen binaarisia liukulukuja määrittäyn kaksoistarkkuusstandardiin, joka on määritetty kohteessa [IEEE 754-2008]. (. Double-esityksessä on likimääräinen dynaaminen alue 5,0 x 10324 – 1,7 x 10308 15-16 merkin tarkkuudella.)

Seuraavia erikoisarvoja pidetään myös lukuarvoina:

  • Positiivinen nolla ja negatiivinen nolla. Useimmissa tilanteissa positiivinen nolla ja negatiivinen nolla toimivat samalla tavalla kuin yksinkertainen arvo nolla, mutta jotkin toiminnot erottavat toisistaan nämä kaksi.

  • Positiivinen ääretön (#infinity) ja negatiivinen ääretön (-#infinity). Tällaiset toiminnot tuottavat rajattoman määrän jakamalla muun kuin nollaluvun nollalla. Esimerkiksi tuottaa positiivisen 1.0 / 0.0 äärettömän, ja -1.0 / 0.0 tuottaa negatiivisen äärettömän.

  • Not-a-Number-arvo (#nan), usein lyhennettynä NaN. NaN:t ovat seurausta virheellisestä liukulukutoiminnosta, kuten nollan jakamisesta nollalla.

Binaariset matemaattiset toiminnot suoritetaan käyttäen Tarkkuus-arvoa. Tarkkuus määrittää toimialueen, johon operandeja pyöristetään, ja toimialueen, jossa toiminto suoritetaan. Jos täsmällisesti määritettyä tarkkuutta ei ole, nämä toiminnot suoritetaan käyttämällä Double Precision arvoa.

  • Jos matemaattisen toiminnon tulos on liian pieni kohdemuodolle, toiminnon tuloksesta tulee positiivinen nolla tai negatiivinen nolla.

  • Jos matemaattisen toiminnon tulos on liian suuri kohdemuodolle, toiminnon tuloksesta tulee positiivinen ääretön tai negatiivinen ääretön.

  • Jos matemaattinen toiminto on virheellinen, toiminnon tuloksesta tulee NaN.

  • Jos toinen tai molemmat liukulukutoiminnon operandeista on NaN, toiminnon tuloksesta tulee NaN.

Seuraavat operaattorit on määritetty numeroarvoille:

Operaattori Result
x > y Suurempi kuin
x >= y Suurempi tai yhtä suuri kuin
x < y Pienempi kuin
x <= y Pienempi tai yhtä suuri kuin
x = y Equal
x <> y Not equal
x + y Summa
x - y Ero
x * y Tuote
x / y Osamäärä
x ?? y Coalesce
+x Yksiarvoinen plus
-x Negaatio

Numeroarvojen alkuperäinen tyyppi on perustyyppi number.

Aika

Aika-arvo tallentaa läpinäkymättömän päivän esitysajan. Aika koodataan jaksoa keskiyöstä -lukuna, joka laskee 24 tunnin aikana kuluneiden 100 nanosekunnin jaksojen määrän. Jaksojen enimmäismäärä keskiyöstä lähtien vastaa 23:59:59.9999999 tuntia.

Vaikka ajoille ei ole literaalisyntaksia, niiden muodostamiseen annetaan useita vakiokirjastofunktioita. Ajat voidaan myös muodostaa käyttämällä perusfunktiota #time:

#time(hour, minute, second)

Seuraava on tottettava, tai esiin tulee virhe syykoodilla Expression.Error :

0 ≤ tunnin ≤ 24
0 ≤ minuuttia ≤ 59
0 ≤ toinen ≤ 59

Lisäksi jos tunti = 24, minuutin ja sekunnin on oltava nolla.

Seuraavat operaattorit on määritetty aika-arvoille:

Operaattori Result
x = y Equal
x <> y Not equal
x >= y Suurempi tai yhtä suuri kuin
x > y Suurempi kuin
x < y Pienempi kuin
x <= y Pienempi tai yhtä suuri kuin
x ?? y Coalesce

Seuraavat operaattorit sallivat toisen tai kummankin operandin olevan päivämäärä:

Operaattori Vasen operandi Oikea operandi Merkitys
x + y time duration Päivämäärän siirtymä keston mukaan
x + y duration time Päivämäärän siirtymä keston mukaan
x - y time duration Päivämäärän siirtymä negatiivisen keston mukaan
x - y time time Päivämäärien välinen kesto
x & y date time Yhdistetty päivämäärä ja aika

Aika-arvojen alkuperäinen tyyppi on perustyyppi time.

Päivämäärä

Päivämääräarvo tallentaa tietyn päivän läpinäkymättömän esityksen. Päivämäärä koodataan päiviksi epochista alkaen 1. tammikuuta 0001 gregoriaanisen kalenterin yleisestä aikakaudesta. Aikakauden jälkeen olevien päivien enimmäismäärä on 3652058, mikä vastaa 31. joulukuuta 9999.

Vaikka päivämäärille ei ole literaalisyntaksia, niiden muodostamiseen annetaan useita vakiokirjastofunktioita. Päivämäärät voidaan myös muodostaa käyttämällä perusfunktiota #date:

#date(year, month, day)

Seuraava on tottettava, tai esiin tulee virhe syykoodilla Expression.Error :

1 ≤ vuoden ≤ 9999
1 ≤ kuukausi ≤ 12
1 ≤ päivän ≤ 31

Lisäksi päivän on oltava kelvollinen valitulle kuukaudelle ja vuodelle.

Seuraavat operaattorit on määritetty päivämääräarvoille:

Operaattori Result
x = y Equal
x <> y Not equal
x >= y Suurempi tai yhtä suuri kuin
x > y Suurempi kuin
x < y Pienempi kuin
x <= y Pienempi tai yhtä suuri kuin
x ?? y Coalesce

Seuraavat operaattorit sallivat toisen tai kummankin operandin olevan päivämäärä:

Operaattori Vasen operandi Oikea operandi Merkitys
x + y date duration Päivämäärän siirtymä keston mukaan
x + y duration date Päivämäärän siirtymä keston mukaan
x - y date duration Päivämäärän siirtymä negatiivisen keston mukaan
x - y date date Päivämäärien välinen kesto
x & y date time Yhdistetty päivämäärä ja aika

Päivämääräarvojen alkuperäinen tyyppi on perustyyppi date.

DateTime

Datetime-arvo sisältää sekä päivämäärän että kellonajan.

Datetimes-kirjastoille ei ole literaalisyntaksia, mutta niiden muodostamiseen annetaan useita vakiokirjastofunktioita. Datetimes voidaan myös muodostaa käyttämällä perusfunktiota #datetime:

#datetime(year, month, day, hour, minute, second)

Seuraava on tottettava, tai esiin tulee virhe syykoodilla Expression.Error: 1 ≤ year ≤ 9999
1 ≤ kuukausi ≤ 12
1 ≤ päivän ≤ 31
0 ≤ tunnin ≤ 23
0 ≤ minuuttia ≤ 59
0 ≤ toinen ≤ 59

Lisäksi päivän on oltava kelvollinen valitulle kuukaudelle ja vuodelle.

Seuraavat operaattorit on määritetty päivämäärä- ja aika-arvoille:

Operaattori Result
x = y Equal
x <> y Not equal
x >= y Suurempi tai yhtä suuri kuin
x > y Suurempi kuin
x < y Pienempi kuin
x <= y Pienempi tai yhtä suuri kuin
x ?? y Coalesce

Seuraavat operaattorit sallivat toisen tai kummankin operandin olevan päivämäärä/aika:

Operaattori Vasen operandi Oikea operandi Merkitys
x + y datetime duration Datetime-siirtymä keston mukaan
x + y duration datetime Datetime-siirtymä keston mukaan
x - y datetime duration Datetime-siirtymä negatiivisen keston mukaan
x - y datetime datetime Datetimes-ajan välinen kesto

Päivämäärä- ja aika-arvojen alkuperäinen tyyppi on perustyyppi datetime.

Päivämäärä, aika ja aikavyöhyke

datetimezone-arvo sisältää päivämäärän/ajan ja aikavyöhykkeen. timezone on koodattu numerona minuutin siirtymänä UTC-ajasta, joka laskee, montako minuuttia datetime aika-osa tulee korvata UTC-ajasta (Universal Coordinated Time). Minimiluku minuuttia offset-kohteesta UTC-tasosta on -840, joka edustaa UTC-offset-arvoa -14:00 tai neljäätoista tuntia ennen UTC-aikaa. Maksimiluku minuuttia offset-kohteesta UTC-päivästä on 840, joka vastaa UTC-offset-arvoa 14:00.

Vaikka päivämäärä- ja aikavyöhykkeille ei ole literaalisyntaksia, niiden muodostamiseen annetaan useita vakiokirjastofunktioita. Datetimezones voidaan myös muodostaa käyttämällä perusfunktiota #datetimezone:

#datetimezone(
       year, month, day,
       hour, minute, second,
       offset-hours, offset-minutes)

Seuraava on tottettava, tai esiin tulee virhe syykoodilla Expression.Error :

1 ≤ vuoden ≤ 9999
1 ≤ kuukausi ≤ 12
1 ≤ päivän ≤ 31
0 ≤ tunnin ≤ 23
0 ≤ minuuttia ≤ 59
0 ≤ toinen ≤ 59
-14 ≤ siirtymätuntien ≤ 14
-59 ≤ siirtymäminuutit ≤ 59

Lisäksi päivän on oltava kelvollinen valitulle kuukaudelle ja vuodelle. Jos siirtymätunnit = 14, offset-minutes <= 0 ja, jos siirtymätunnit = -14, offset-minutes >= 0.

Seuraavat operaattorit on määritetty päivämäärä- ja aikavyöhykearvoille:

Operaattori Result
x = y Equal
x <> y Not equal
x >= y Suurempi tai yhtä suuri kuin
x > y Suurempi kuin
x < y Pienempi kuin
x <= y Pienempi tai yhtä suuri kuin
x ?? y Coalesce

Seuraavat operaattorit sallivat toisen tai kummankin operandin olevan päivämäärä/aikavyöhyke:

Operaattori Vasen operandi Oikea operandi Merkitys
x + y datetimezone duration Datetimezone-siirtymä keston mukaan
x + y duration datetimezone Datetimezone-siirtymä keston mukaan
x - y datetimezone duration Datetimezone-siirtymä negatiivisen keston mukaan
x - y datetimezone datetimezone Päivämäärien, aikojen ja aikavyöhykkeiden välinen kesto

Päivämäärä- ja aikavyöhyke-arvojen alkuperäinen tyyppi on perustyyppi datetimezone.

Kesto

Kesto-arvo tallentaa läpinäkymättömän esityksen aikajanan kahden pisteen välisestä etäisyydestä, joka mitataan 100 nanosekunnin jaksojen avulla. Keston suuruus voi olla positiivinen tai negatiivinen, ja positiiviset arvot ilmaisevat edistymisen ajassa eteenpäin ja negatiiviset arvot ilmaisevat edistymisen ajassa taaksepäin. Pienin arvo, joka voidaan tallentaa kestoon, on -9223372036854775808 jaksoa eli 10 675 199 päivää 2 tuntia 48 minuuttia 05,4775808 sekuntia taaksepäin ajassa. Suurin arvo, joka voidaan tallentaa kestoon, on 9223372036854775807 jaksoa eli 10 675 199 päivää 2 tuntia 48 minuuttia 05,4775807 sekuntia eteenpäin ajassa.

Vaikka kestoille ei ole literaalisyntaksia, niiden muodostamiseen annetaan useita vakiokirjastofunktioita. Kestot voidaan myös muodostaa käyttämällä perusfunktiota #duration:

#duration(0, 0, 0, 5.5)          // 5.5 seconds 
#duration(0, 0, 0, -5.5)         // -5.5 seconds 
#duration(0, 0, 5, 30)           // 5.5 minutes 
#duration(0, 0, 5, -30)          // 4.5 minutes 
#duration(0, 24, 0, 0)           // 1 day 
#duration(1, 0, 0, 0)            // 1 day

Seuraavat operaattorit on määritetty kestoarvoille:

Operaattori Result
x = y Equal
x <> y Not equal
x >= y Suurempi tai yhtä suuri kuin
x > y Suurempi kuin
x < y Pienempi kuin
x <= y Pienempi tai yhtä suuri kuin
x ?? y Coalesce

Lisäksi seuraavat operaattorit sallivat toisen tai kummankin operandin olevan kestoarvo:

Operaattori Vasen operandi Oikea operandi Merkitys
x + y datetime duration Datetime-siirtymä keston mukaan
x + y duration datetime Datetime-siirtymä keston mukaan
x + y duration duration Kestojen summa
x - y datetime duration Datetime-siirtymä negatiivisen keston mukaan
x - y datetime datetime Datetimes-ajan välinen kesto
x - y duration duration Kestojen ero
x * y duration number N kertaa kesto
x * y number duration N kertaa kesto
x / y duration number Keston murtoluku

Kestoarvojen alkuperäinen tyyppi on perustyyppi duration.

Teksti

Tekstiarvo edustaa Unicode-merkkien sarjaa. Tekstiarvoilla on literaalimuoto seuraavan kieliopin mukaisesti:

_text literaali:
      " text-literal-charactersopt "
text-literal-characters:
      text-literal-character text-literal-charactersopt
text-literal-character:
      yksitekstinen-merkki
      character-escape-sequence
      double-quote-escape-sequence
single-text-character:

      Kaikki merkit paitsi " (U+0022) tai # (U+0023) minkä jälkeen ( (U+0028)
double-quote-escape-sequence:
      "" (U+0022, U+0022)

Seuraavassa on esimerkki tekstiarvosta:

"ABC" // the text value ABC

Seuraavat operaattorit on määritetty tekstiarvoille:

Operaattori Result
x = y Equal
x <> y Not equal
x >= y Suurempi tai yhtä suuri kuin
x > y Suurempi kuin
x < y Pienempi kuin
x <= y Pienempi tai yhtä suuri kuin
x & y Ketjutus
x ?? y Coalesce

Tekstiarvojen alkuperäinen tyyppi on perustyyppi text.

Binaarinen

Binaariarvo edustaa tavujen sarjaa.

Vaikka binaariarvoille ei ole literaalisyntaksia, niiden muodostamiseen annetaan useita vakiokirjastofunktioita. Binaariarvot voidaan myös muodostaa käyttämällä perusfunktiota #binary.

Seuraava esimerkki muodostaa binaariarvon tavuluettelosta:

#binary( {0x00, 0x01, 0x02, 0x03} )

Seuraavat operaattorit on määritetty binaariarvoille:

Operaattori Result
x = y Equal
x <> y Not equal
x >= y Suurempi tai yhtä suuri kuin
x > y Suurempi kuin
x < y Pienempi kuin
x <= y Pienempi tai yhtä suuri kuin
x ?? y Coalesce

Binaariarvojen alkuperäinen tyyppi on binaarinen.

List

Luettelon arvo on arvo, joka tuottaa arvojen sarjan, kun ne numeroidaan. Luettelon tuottama arvo voi sisältää minkä tahansa arvon, mukaan lukien luettelon. Luetteloita voidaan muodostaa alustussyntaksin avulla seuraavasti:

list-expression:
      { item-listopt }
item-list:
      kohta
      item item-list
,
kohta:
      lauseke
      lausekelauseke
..

Seuraavassa on esimerkki list-expression-lausekkeesta, joka määrittää luettelon, jossa on kolme tekstiarvoa: "A", "B"ja "C".

{"A", "B", "C"}

Arvo "A" on luettelon ensimmäinen kohde, ja arvo "C" on luettelon viimeinen kohde.

  • Luettelon kohteita ei arvioida, ennen kuin ne ovat käytettävissä.
  • Luettelon syntaksilla muodostetut luetteloarvot tuottavat kohteita siinä järjestyksessä, jossa ne näkyvät kohdeluettelossa, yleensä kirjastofunktioista palautetut luettelot saattavat tuottaa eri joukon tai eri määrän arvoja aina, kun ne numeroidaan.

Jos haluat sisällyttää luetteloon kokonaisluvun, voit käyttää lomaketta a..b :

{ 1, 5..9, 11 }     // { 1, 5, 6, 7, 8, 9, 11 }

Luettelon kohteiden määrä, jota kutsutaan luetteloiden määräksi, voidaan määrittää käyttämällä -funktiotaList.Count.

List.Count({true, false})  // 2 
List.Count({})             // 0

Luettelolla voi olla tehokkaasti rajaton määrä kohteita. List.Count tällaisten luetteloiden määrittämätön arvo voi joko aiheuttaa virheen tai olla lopettamatta.

Jos luettelo ei sisällä kohteita, sitä kutsutaan tyhjäksi luetteloksi. Tyhjä luettelo kirjoitetaan seuraavasti:

{}  // empty list

Seuraavat operaattorit on määritetty luetteloille:

Operaattori Result
x = y Equal
x <> y Not equal
x & y Concatenate
x ?? y Coalesce

Esimerkkejä:

{1, 2} & {3, 4, 5}   // {1, 2, 3, 4, 5} 
{1, 2} = {1, 2}      // true 
{2, 1} <> {1, 2}     // true

Luetteloarvojen alkuperäinen tyyppi on perustyyppi list, joka määrittää kohteen tyypin any.

Nauhoita

Tietuearvo on järjestetty kenttien järjestys. Kenttä koostuu kentän nimestä, joka on tekstiarvo, joka yksilöi kentän tietueessa, ja kentän arvosta. Kentän arvo voi olla mikä tahansa arvo, mukaan lukien tietue. Tietueita voidaan muodostaa alustussyntaksin avulla seuraavasti:

record-expression:
      [ field-listopt ]
field-list:
      pelto
      field
, field-list
pelto:
      field-name
= expression
field-name:
      generalized-identifier
      quoted-identifier

Seuraava esimerkki muodostaa tietueen, jonka kentän nimi x on , jonka arvo 1on , ja kentän nimeltä y , jonka arvo 2on .

[ x = 1, y = 2 ]

Seuraava esimerkki muodostaa tietueen, jonka a kentän nimi on a ja jossa on sisäkkäinen tietuearvo. Sisäkkäisen tietueen kentän nimi b on , jonka arvo 2on .

[ a = [ b = 2 ] ]

Seuraava pätee, kun arvioidaan tietuelauseketta:

  • Kullekin kentän nimelle määritettyä lauseketta käytetään liittyvän kentän arvon määrittämiseen.

  • Jos kentän nimelle määritetty lauseke tuottaa arvon, kun se arvioidaan, siitä tulee tulokseksi saatavan tietueen kentän arvo.

  • Jos kentän nimelle määritetty lauseke aiheuttaa virheen, kun se on arvioitu, virheen esiintymä tallennetaan kenttään yhdessä esiin nousseen virhearvon kanssa. Tämän kentän myöhempi käyttö aiheuttaa virheen uudelleen, ja virhearvo kirjataan.

  • Lauseketta arvioidaan ympäristössä, kuten pääympäristössä, jossa on vain yhdistettyjä muuttujia, jotka vastaavat tietueen jokaisen kentän arvoa lukuun ottamatta sitä, jota valmistellaan.

  • Tietueen arvoa ei arvioida, ennen kuin vastaava kenttä on käytettävissä.

  • Tietueen arvo arvioidaan enintään kerran.

  • Lausekkeen tulos on tietuearvo, jolla on tyhjä metatietotietue.

  • Tietueen kenttien järjestys määritetään siinä järjestyksessä, jossa ne näkyvät record-initializer-expression-lausekkeessa.

  • Jokaisen määritetyn kentän nimen on oltava yksilöllinen tietueen sisällä, tai se on virhe. Nimiä verrataan koordinaattorivertailun avulla.

    [ x = 1, x = 2 ] // error: field names must be unique 
    [ X = 1, x = 2 ] // OK

Tietuetta, jossa ei ole kenttiä, kutsutaan tyhjäksi tietueeksi, ja se kirjoitetaan seuraavasti:

[] // empty record

Vaikka tietueen kenttien järjestys ei ole merkitsevä, kun käytetään kenttää tai verrataan kahta tietuetta, se on merkitsevä muissa yhteyksissä, kuten silloin, kun tietueen kentät numeroidaan.

Samat kaksi tietuetta tuottavat eri tulokset, kun kentät on saatu:

Record.FieldNames([ x = 1, y = 2 ]) // [ "x", "y" ] 
Record.FieldNames([ y = 1, x = 2 ]) // [ "y", "x" ]

Tietueen kenttien määrä voidaan määrittää käyttämällä -funktiota Record.FieldCount . Esimerkkejä:

Record.FieldCount([ x = 1, y = 2 })  // 2 
Record.FieldCount([])                // 0

Sen lisäksi, että tietueen alustuksen syntaksi [ ]on , tietueet voidaan muodostaa arvoluettelosta sekä kenttien nimien tai tietuetyyppien luettelosta. Esimerkkejä:

Record.FromList({1, 2}, {"a", "b"})

Yllä oleva vastaa seuraavaa:

[ a = 1, b = 2 ]

Seuraavat operaattorit on määritetty tietuearvoille:

Operaattori Result
x = y Equal
x <> y Not equal
x & y Yhdistä
x ?? y Coalesce

Seuraavissa esimerkeissä havainnollistetaan yllä olevat operaattorit. Huomaa, että tietueiden yhdistäminen käyttää oikeanpuoleisen operandin kenttiä ohittamaan vasemmanpuoleisen operandin kentät, jos kenttien nimissä on päällekkäisyyttä.

[ a = 1, b = 2 ] & [ c = 3 ]    // [ a = 1, b = 2, c = 3 ] 
[ a = 1, b = 2 ] & [ a = 3 ]    // [ a = 3, b = 2 ] 
[ a = 1, b = 2 ] = [ b = 2, a = 1 ]         // true 
[ a = 1, b = 2, c = 3 ] <> [ a = 1, b = 2 ] // true

Tietuearvojen alkuperäinen tyyppi on perustyyppi record, joka määrittää avoimen tyhjän kenttien luettelon.

Table

Taulukon arvo on järjestetty rivien järjestys. Rivi on järjestetty sarakearvojen järjestys. Taulukon tyyppi määrittää taulukon kaikkien rivien pituuden, taulukon sarakkeiden nimet, taulukon sarakkeiden tyypit ja taulukon (jos sellainen on) rakenteen.

Vaikka taulukoille ei ole literaalisyntaksia, niiden muodostamiseen annetaan useita vakiokirjastofunktioita. Taulukot voidaan myös muodostaa käyttämällä perusfunktiota #table.

Seuraava esimerkki muodostaa taulukon sarakkeiden nimien luettelosta ja riviluettelosta. Tuloksena saatava taulukko sisältää kaksi saraketta type any ja kolme riviä.

#table({"x", "x^2"}, {{1,1}, {2,4}, {3,9}})

#table voidaan myös käyttää määrittämään koko taulukon tyyppi:

#table(
    type table [Digit = number, Name = text],  
    {{1,"one"}, {2,"two"}, {3,"three"}} 
    )

Tässä uuden taulukon arvossa on taulukkotyyppi, joka määrittää sarakkeiden nimet ja saraketyypit.

Seuraavat operaattorit on määritetty taulukkoarvoille:

Operaattori Result
x = y Equal
x <> y Not equal
x & y Ketjutus
x ?? y Coalesce

Taulukon yhdistäminen tasaa samankaltaiset nimetyt sarakkeet ja täyttää null sarakkeille, jotka esiintyvät vain yhdessä operandi-taulukossa. Seuraavassa esimerkissä havainnollistetaan taulukon ketjutus:

  #table({"A","B"}, {{1,2}}) 
& #table({"B","C"}, {{3,4}})
A B C
1 2 null
null 3 4

Taulukon arvojen alkuperäinen tyyppi on mukautettu taulukkotyyppi (johdettu perustyypistä table), jossa luetellaan sarakkeiden nimet, määritetään kaikki saraketyypit, eikä sillä ole avaimia. (Siirry kohteeseen Taulukkotyypit taulukkotyypeistä.)

Function

Funktion arvo on arvo, joka yhdistää argumenttijoukon yksittäiseen arvoon. Funktioiden arvojen tiedot on kuvattu kohdassa Funktiot.

Tyyppi

Tyypin arvo on arvo, joka luokittelee muut arvot. Tyyppiarvojen tiedot on kuvattu kohdassa Tyypit.