APL (ohjelmointikieli)
APL:n perusteet

APL on perusteiltaan yksinkertainen.
Käytössä on kolmentyyppisiä objekteja: operaattoreita, funktioita ja muuttujia (dataa). Funktiot käsittelevät argumentteinaan saamaansa dataa ja palauttavat muokattua tulosdataa. Operaattorit saavat operandeikseen funktioita tai muuttujia ja luovat uuden (johdetun) funktion.
Muuttujien datatyyppejä on kolme: numeerinen, looginen ja merkkityyppi. Looginen tyyppi käsittää totuusarvot tosi ja epätosi, joiden esityksessä käytetään kokonaislukuja 1 ja 0. Koska näitä voi käyttää suoraan laskennassa, on looginen tyyppi vain numeerisen tyypin alijoukko. Numeerinen tyyppi sisältää sekä kokonais- että reaaliluvut, APL2:ssa voidaan lisäksi käyttää kompleksilukuja. Tulkki pitää huolen eri numeeristen tyyppien keskinäisistä muunnoksista, joten ohjelmoijan huolena on yleensä vain itse ongelmaan keskittyminen. Nollaa pienempien lukujen etumerkkinä käytetään ylämiinusta, koska miinusmerkki on vähennyslaskussa käytettävä funktio. Desimaalierotin on piste, ja tuhaterottimia ei käytetä. Merkkityyppi erotetaan syötettäessä lainausmerkein, tekstin sisäinen lainausmerkki kahdennetaan.
Muuttuja voi rakenteeltaan olla joko skalaari (yksittäinen merkki tai luku) tai sääntiö, moniulotteinen taulukko (matriisi). Yksiulotteinen muuttuja on vektori, jonka alkiot ovat jonossa (alkioita voi olla myös 0 kappaletta). Kaksiulotteinen muuttuja, matriisi, koostuu riveistä ja sarakkeista, jokaisella rivillä on yhtä monta alkiota. Kolmiulotteisessa muuttujassa, kuutiossa, on tasoja, jotka kaikki koostuvat samanmuotoisista matriiseista.
Yleisesti rakenteinen APL-muuttuja voi olla suorakulmainen n-ulotteinen sääntiö (n:n enimmäisarvo riippuu tulkin toteutuksesta, esimerkiksi APL2 sallii 256-ulotteiset sääntiöt). Suorakulmaisuus tarkoittaa sitä, että moniulotteisen taulukon jokaisessa suunnassa on yhtä monta alkiota (esimerkiksi matriisin jokainen rivi on yhtä pitkä) eikä yhden suunnan pituus riipu muiden suuntien pituuksista.
Muuttujan, itse luodun funktion tai operaattorin nimi ei voi sisältää APL-erikoismerkkejä eikä välilyöntejä. Muuttujalle annetaan arvo sijoitusnuolella, joka voidaan tässä yhteydessä mieltää kaksiargumenttiseksi funktioksi. Muuttujia ei tarvitse alustaa etukäteen, tulkki huolehtii sekä tyypityksestä että tilanvarauksesta suorituksen aikana. Toisen sukupolven APL:t sallivat lisäksi sisäkkäiset tietorakenteet.
Funktioilla voi olla joko yksi (monadinen), kaksi (dyadinen) tai ei yhtään (niladinen) argumenttia. Kaksiargumenttinen funktio on aina argumenttiensa välissä, yksiargumenttinen on argumenttinsa vasemmalla puolella (ns. infix-notaatio). Lisäksi funktio voi joko palauttaa arvon tai ei. APL:n perusfunktiot (primitiivifunktiot) ovat aina argumentillisia ja ne palauttavat arvon. Sama symboli voi kuvata sekä yksi- että kaksiargumenttista funktiota, esimerkiksi miinusmerkki on sekä vähennyslasku- (kaksiargumenttinen) että vastalukufunktion symboli. Funktiot luodaan yleensä erillisen funktioeditorin avulla.
Operaattori voi olla joko yksi- tai kaksioperandinen, ja operaattorin tulosfunktio voi olla lisäksi joko yksi- tai kaksiargumenttinen. Yksioperandinen operaattori on operandifunktionsa oikealla puolella ja kaksioperandinen operandiensa välissä. Joissain APL-tulkeissa voidaan luoda omia operaattoreita (mm. APL2 ja DyalogAPL).
APL-lausekkeen suoritusjärjestys on oikealta vasempaan, ellei sulkein toisin ohjata. Toisin sanoen funktion oikeana argumenttina on sen oikealla puolella olevan lausekkeen arvo.
APL-sovellukset tallennetaan yleensä työtiloihin, joita käsitellään APL-istunnossa. Työtilassa ovat käytettävissä kaikki APL:n perusfunktiot sekä ne APL-objektit jotka sinne on luotu tai kopioitu. Työtila sisältää siten koko työskentely-ympäristön.