Scheme (programski jezik) — разлика између измена

Садржај обрисан Садржај додат
мНема описа измене
м Dodavanje datuma u šablone za održavanje i/ili sredjivanje referenci; козметичке измене
Ред 100:
</syntaxhighlight>
Zbog česte upotrebe, moguće je <code>quote</code> zameniti sa <code>'</code>, pa je <code>(quote xyz)</code> ekvivalentno sa <code>'xyz</code>.
 
Za proveru da li je neki tip podatka simbol, koristi se predikatska funkcija <code>symbol?</code>:
<syntaxhighlight lang="Scheme">
Линија 110 ⟶ 111:
===> #f
</syntaxhighlight>
==== Niske i vektori ====
[[Niske]] (stringovi) predstavljaju nizove karaktera. Definišu se umetanjem željenih karaktera između dva znaka navodnika.
<syntaxhighlight lang="Scheme">
Линија 132 ⟶ 133:
===> #(10 0)
</syntaxhighlight>
==== Uređeni parovi i liste ====
[[Уређени пар|Par]] je struktura podataka koja se sastoji od dva elementa, proizvoljnog tipa. Elementi para se tradicionalno označavaju sa ''car'', prvi element para i ''cdr'', drugi element para. Upravo tako izgledaju i funkcije za pristup elementima para, <code>car</code> i <code>cdr</code>. Za konstrukciju para se koristi funkcija <code>cons</code>.
<syntaxhighlight lang="Scheme">
(cons 1 #t)
===> (1 . #t)
(car (cons 1 #t))
===> 1
(cdr (cons 1 #t))
===> #t
</syntaxhighlight>
[[Листа (програмирање)|Liste]] su specijalni slučaj ugnježdenih parova. Kod lista svaki drugi član para je opet par, sve do poslednjeg koji sadrži ''praznu listu'', <code>()</code>, kao svoj drugi element.
Линија 147 ⟶ 148:
===> (1 2 3 4)
</syntaxhighlight>
==== Konverzije između tipova podataka ====
-{Scheme}- poseduje veliki broj funkcija za konverziju jednog tipa podatka u drugi. U tabeli [[#Standardne procedure definisane R5RS standardom|''Standardne procedure definisane R5RS standardom'']] su navedeni tipovi konverzija koje -{Scheme}- podržava. Primer:
<syntaxhighlight lang="Scheme">
(string->list "hello")
===> (#\h #\e #\l #\l #\o)
(number->string 16)
===> "16"
(string->number "16")
===> 16
(string->number "Ovo nije broj!")
===> #f
(string->number "1010" 2)
===> 10 ; jer je "1010" zapis boja deset u binarnom sistemu
</syntaxhighlight>
 
Линија 282 ⟶ 283:
</syntaxhighlight>
Pored ovih funkcija, postoje još <code>when</code> i <code>unless</code>.
=== Rad sa listama ===
Pre samih funkicja za rad sa listama, neophodno je napomenuti neizostavnu primenu primitivne funkcije <code>quote</code>. Naime, da ne bi došlo do pokušaja interpretiranja liste kao funkcije, odnosno pokušaja evaluacije elemenata liste, koristi se funkcija <code>quote</code> (<code>'</code>) koja će vratiti samu listu.</br>
Pored već vićenog načina za kreiranje liste, preko ugnježdenih parova, -{Scheme}- nudi i pregledniju opciju pomoću funkcije <code>list</code>.
<syntaxhighlight lang="Scheme">
'(1 2 3 4)
===> (1 2 3 4)
(list 1 2 3 4)
===> (1 2 3 4)
</syntaxhighlight>
Funkcija <code>car</code> vraća glavu liste, odnosno prvi element liste, a <code>cdr</code> vraća rep liste, odnosno ostatak liste.
Линија 321 ⟶ 322:
===> (3 4)
</syntaxhighlight>
Funkcija <code>cons</code> je, na neki način, inverzna funkcijama <code>car</code> i <code>cdr</code>. Ona konstruiše listu od date glave i repa. Dakle, ako je data neka lista <code>a</code>, rezultat sledeće kompozicije funkcija <code>(cons (car a) (cdr a))</code> jeste upravo početna lista <code>a</code>.
<syntaxhighlight lang="Scheme">
(cons 'A '())