A Scheme-ben használható konstansok (atomok) lehetnek számok, logikai konstansok (#t és #f), az üres lista és sztringek. Néhány példa atomokra:
A változók és függvények nevei is atomok. A lista elemek rendezett halmaza. A listaelemek lehetnek atomok, vagy listák. A listákat ugyanúgy zárójelek közé kell tenni, mint LISP-ben. Hasonlóan adhatunk meg vektorokat is, ha a zárójel elé # karaktert teszünk.
Néhány példa listákra és vektorokra:
Egy másik mód listák megadására a listakonstruktorok használata. Az üres listát a () reprezentálja, és ebből a listakonstruktor, a cons függvény segítségével a következőképpen építhető fel a lista: a (cons X ()) egy egyelemű, a (cons X (cons y())) egy kételemű listát állít elő. Hasonlóan többelemű listák is konstruálhatók.
A Scheme egyszerű típusait az alábbi táblázat foglalja össze:
TÍPUSOK | ÉRTÉKEK |
logikai (boolean) | #t, #f |
szám (number) | egészek és lebegőpontos számok |
szimbólum (symbol) | karaktersorozatok |
pár (pair) | listák és rendezett párok |
eljárás (procedure) | függvények és procedúrák |
A Scheme összetett típusait az alábbi táblázat foglalja össze:
TÍPUS | REPREZEZENTÁCIÓ |
lista | (elemek szóközökkel elválasztott sorozata) |
function | lásd később |
A Scheme predikátum egy logikai függvény, amivel egy típushoz való tartozást, vagy valamilyen tulajdonságot lehet megállapítani. Mivel a Scheme gyengén típusos, sok ilyen függvény létezik. Néhány példa ezekre:
PREDIKÁTUM | MIT ELLENŐRIZ |
(boolean? arg ) | az arg logikai érték-e |
(number? arg ) | az arg numerikus érték-e |
(pair? arg ) | az arg pár-e |
(symbol? arg ) | az arg szimbólum-e |
(procedure? arg ) | az arg függvény-e |
(null? arg ) | az arg üres lista-e |
(zero? arg ) | az arg nulla-e |
(odd? arg ) | az arg páratlan-e |
(even? arg ) | az arg páros-e |
A Scheme numerikus adattípusa a number, ami lehet egész, racionális, valós, vagy komplex.
Például:
SZIMBÓLUM | OPERÁTOR |
+ | összeadás |
- | kivonás |
* | szorzás |
/ | valós osztás |
quotient | egész osztás |
modulo | modulus |
A lista a Scheme alapvető struktúrált adattípusa. A következő példákban az argumentumokat aposztrófok előzik meg. Ez jelzi a Scheme-nek, hogy nem szabad szigorú kiértékelést használni. Néhány példa a Scheme beépített listakezelő függvényeire:
A logikai igaz és hamis rendre #t és #f. A Scheme a #f-on és az üres listán kívül mindent igaznak tekint, a #f-t és a ()-t hamisnak. Scheme-ben használhatók a szokásos logikai operátorok not, and, or, és különféle egyenlőségvizsgálatok.
SZIMBÓLUM | MŰVELET |
not | negáció |
and | logikai és |
or | logiaki vagy |
SZIMBÓLUM | MŰVELET |
= | egyenlőség (számokon) |
(< ) | kisebb, mint |
(<= ) | kisebbegyenlő |
(> ) | nagyobb, mint |
(>= ) | nagyobbegyenlő |
eq? | az argumentumok egyenértékűek |
eqv? | az argumentumok ekvivalensek |
equal? | az argumentumok strukturáltak, és a tartalmuk megegyezik |
A feltételes kifejezések a következő formában írandók:
A feltétel logikai, míg a then- és az else-kifejezés bármilyen kifejezés lehet. Ha a feltétel igaz, a then-kifejezést, ellenkező esetben az else-kifejezést adja vissza. Például:
A második példában a lista a then-kifejezés, a (cdr list) az else. Használható egy másik feltételes kifejezés is, ami a case-kifejezéseknek felel meg, itt több feltétel-eredmény párt adhatunk meg. Megadásának két módja van:
Az alábbi feltételes kifejezések ekvivalensek.
A Scheme nem támogatja a funkcionális stílusú interaktív programozást, mivel az input nem mint paraméter adódik át, hanem a beépített read függvény ismételt alkalmazásával. Például:
a 3 és egy a bemenetről beolvasott szám összegét adja vissza. A read ismételt hívasa a következő elemet adja vissza a standard bemenetről, tehát nem valódi függvény. A display függvény kiírja az argumentumát a standard kimenetre. Például:
kiírja az előző függvény eredményét. A következő program pedig példa interaktív programra. Promptol, majd beolvas egy értéket a standard bemenetről.