Az Elm programozási nyelv

Típusok, típuskonstrukciók

Típusszerkezet

Az Elm egy szigorúan típusos nyelv, emellett rendelkezik típuskikövetkeztető rendszerrel, azaz a típusok megadása nem kötelező a programszövegben.

Előre definiált típusok

Elemi típusok

Hatékonysági szempontból beépített típusok az Int, Float, Char és a String. Ezek a beépített típusok nem rögzített méretűek, azaz tetszőlegesen nagy számok megadhatók az Int típussal például.

Listák

A listában tetszőleges számú, azonos típusú elemeket tárolhatunk, szintaxisa nagyban hasonlít a Haskell-ben lévő listákéhoz. Az üres lista konstruktora a [], az elem hozzáfűzésé pedig a :: operátor. Listák többféleképp is megadhatók egyszerűen, például ez a négy kifejezés ekvivalens:

[1..4] [1, 2, 3, 4] 1 :: [2, 3, 4] 1 :: 2 :: 3 :: 4 :: []

Rekordok

A nyelv támogat kiegészíthető rekordokat (extensible record), amik hasonlítanak a JavaScript-ben lévő object-ekhez. Néhány példa:

point = { x=1, y=2 } book = { title="Steppenwolf", author="Hesse", pages=237 }

Ezeknek az elemeit a . operátorral tudjuk elérni, azaz:

point.y -> 2 book.author -> "Hesse" .author book -> "Hesse"

A rekord elemeire mintát illeszthetünk, példaként egy függvény, ami olyan rekordokat vár paraméterül, amik tartalmaznak x és y mezőket:

dist {x,y} = sqrt (x^2 + y^2)

Rekordok mezőit tudjuk frissíteni a következő szerkezettel:

point2 = { point | y <- 5 }

Algebrai adattípusok

A nyelvben új típusokat adhatunk meg algebrai adattípusokként, szintaxisa megegyezik a Haskell-ből ismerttel. Itt konstruktorokat sorolunk fel, amikre aztán mintát illeszthetünk.

data BaseColor = Red | Green | Blue toString basecolor = case basecolor of Red -> "Piros" Green -> "Zöld" Blue -> "Kék" data Color = RGB Int Int Int