YAML on merkintäkieli tietorakenteiden kuvaamiseen kieliriippumattomasti. Se on helposti luettavaa, helposti kirjoitettavaa, monipuolista ja kuvattavissa kohdekielen _omiksi_ tietotyypeiksi (toisin kuin XML, joka muunnetaan kielessä kuin kielessä tagatuiksi puurakenteiksi). YAML on siis tietorakenteille suunnilleen sama kuin strukturoitu teksti dokumenteille. (Itse asiassa näiden kahden ero on hiuksenhieno ja varsin mielenkiintoinen.)
YAML näyttää olevan erityisesti Ruby-ohjelmoijien käytössä, mutta siitä on säälliset toteutukset ainakin Perlille, Pythonille, PHP:lle, Rubylle ja (mahdollisesti) javascriptille ja Javalle. Ilmeisesti Syck, joka pyrkii tukemaan mahdollisimman monta kieltä (olemalla kirjoitettu C:llä ja tekemällä erikseen bindingeja muihin kieliin), on myös ainakin jossain vaiheessa tukenut Ocamlia. Olisi mielenkiintoista tietää, miten summatyyppejä on tuettu (jos mitenkään).
Muutamia tietotyyppejä YAML:lla:
lista (jono, vektori, taulukko, yhdistelmä- t. tulotyyppi)
- eka - toka
kuvaus (sanakirja, hajautus, hakupuu)
avain: arvo avain2: arvo2
järjestetty kuvaus (assoc list, parilista)
- avain: eka - avain2: toka
joukko
? arvo1 ? arvo2
summatyyppi (distinct union, tagattu tyyppi, muodostin)
nollapaikkainen: ?tagi0 (tai) nollapaikkainen: tagi0: ~ yksipaikkainen: tagi1: arvo n-paikkainen: tagi3: - arvo1 - arvo2 - arvo3
olio (ns. "elävä" tietotyyppi)
!tyyppi - rajapinta osa 1 - rajapinta osa 2
merkkijono tms. rakenteeton literaali
blaa blaa blaa (on meillä asiaa (jos on)) jne
puu
- - - vasen-vasen-vasen - vasen-vasen-oikea - vasen-oikea - - oikea-vasen - oikea-oikea
tagattu puu
summa: - tulo: - vakio: 3 - muuttuja: x - muuttuja: y
syklinen l. kierteinen rakenne
&n136 - *n136
nil ("ei mitään")
~
En ole muuten näitä paljon muualla esiteltyinä nähnytkään. Suurin osa YAML-selityksistä on omistettu sen opettamiseen ohjelmoijille, joille jokin kieli on tuttu; tällöin tietysti näytetään vain, miltä kyseisen ohjelmointikielen tietorakenteet näyttävät YAML:lla... eikä suurin osa nykyohjelmoijista ole varmaan kuullutkaan, että kaikki tietotyypit voidaan rakentaa nollapaikkaisista muodostimista, summatyypeistä ja tulotyypeistä.
UEJimmie: ÿþ<