A Mathematica programozási nyelv

Típusok

Alaptípusok

A Mathematica eszköztára nem köti meg felhasználóját a típusok kezelésében. Lehetőség van gyengén típusos programozási technikára, de ezzel együtt a mintázatok és típusok használatával erősen típusos stílusban is programozhatunk.

A Mathematicában a kifejezés az alapvető adatszerkezet. A kifejezések általános szerkezete: f[a1, a2, …, an]. f a kifejezés feje, ai-k pedig az argumentumai. Az argumentumok is lehetnek kifejezések, ezáltal egy általános kifejezés faszerkezetû. Ennek megjelenítésére a szintaktikai cukorkák feloldásával a FullForm, grafikus megjelenítésére a TreeForm függvény használható. A kifejezések fejét a Head függvény adja meg, ezen felül számos függvény szolgál a kifejezések kezelésére (Level, Position, Depth, stb.). A kifejezés feje tekinthető a kifejezés típusának.

A kifejezések egy alapvető, a Mathematicában gyakran használt fajtája a lista. Ezek megadására a List, Array, Range, Table függvények szolgálnak. List és Array egy- illetve többdimenziós listát alkot az argumentumaiból, míg Table és Range a megadott intervallumok minden elemére használt függvénnyel feltöltött listát hoz létre. A listák kezelésére számos függvény ad lehetőséget (Map, Distribute, Flatten, Count, stb.). A bevezetőben említett legegyszerűbb alak-elvnek megfelelően kifejezések tartalmazhatnak nem definiált részkifejezéseket is. Például az a x^2 + b x + c kifejezés legegyszerűbb alakja a másodfokú megoldóképlet, amelyben a, b és c paraméter lesz.

A Mathematica külön érdekessége, hogy a notebook, ami a felhasználó által megadott kifejezéseket tartalmazza, szintén lista típusú, ezért az általános listakezelő függvények alkalmazhatóak rá, ezen felül speciális függvényeket is tartalmaz a notebook kezelésére (lásd itt).

Elemi típusok

Beépített elemi típusok a füzérek vagy sztringek (String) és a következő számtípusok:

Típus Megnevezés Formátum
Integer Egész számok Nnn
Rational Racionális számok nnn/nnn
Real Valós számok nnn.nnn
Complex Komplex számok nnn.nnn + I nnn.nnn

Mindegyik számtípusra igaz, hogy tetszőleges számú jegyből állhat. Egész számok decimálistól eltérő alapban is megadhatók, ekkor alap^^szám formában kell írni, az alapnak 2 és 36 közé kell esnie, az alapot decimális formában kell megadni. Számok normálalakban is megadhatók, ekkor általánosan az alap^^szám*^kitevő formában írandók. A stringtípusok tetszőleges számú karaktert tartalmazhatnak, cccc formában adhatóak meg. Nem csak ASCII karaktereket tartalmazhatnak, hanem a Unicode készlet összes karakterét, ezek \unicodenév vagy \:sorszám formában adhatók meg. Ezek a beépített elemi típusok a Symbol típussal kiegészítve az atomi típusok.

Összetett típusok

Összetett típusok definiálására a Mathematicában a List függvény használatos, tömb, halmaz és direktszorzat definiálására alkalmas. Unió típuskonstrukció nincs a Mathematicában beépített módon, azonban bármely függvény értelmezési tartománya bővíthető, és mivel a függvények, mint kifejezések feje típusként is szolgál, ezért egy függvény különöző értelmezési tartományokon való megadásával az unió típus kiválható.

Egyenlőségvizsgálat

Az egyenlőség vizsgálatára kétféle lehetőség adódik, === (SameQ) azt vizsgálja, hogy két kifejezés, mint karaktersorozat/füzér azonos-e, míg == (Equal) azt, hogy matematikailag (átalakítások nélkül) egyenlők-e.

Absztrakt adattípusok

Absztrakt adattípusok kezeléséhez a Mathematica általános eszközöket nyújt. Adattípusok megvalósítására programcsomagokat hozhatunk létre. Mivel a nyelv nem erősen típusos, a típuskonstrukcióknál szokásos eszközöket nem tartalmazza.