Welcome to DrRacket, version 6.8 [3m]. Language: racket, with debugging; memory limit: 128 MB. > 1 întregi 1 > 1.3 float 1.3 > 1/3 fracții 1/3 > #t boolean #t > #f #f > 'abc literali (simboluri) 'abc > "abc" șiruri de caractere "abc" > (symbol->string 'abc) șirurile de caractere nu sunt același tip cu literalii "abc" > (elem elem elem) S-listă . . elem: undefined; S-lista este văzută ca listă de apel, încearcă apelarea lui elem cannot reference an identifier before its definition > (+ 1 2 3) apel al funcției + 6 > (add1 4) apel al funcției add1 5 > 'abc pentru a nu evlua ceva care arată a identificator, folosim quote 'abc > abc fără quote, Racket încearcă evaluarea . . abc: undefined; cannot reference an identifier before its definition > (quote abc) construcția quote este echivalentă cu apostroful 'abc > + + este o procedură (funcție) ca oricare alta # > +#$ putem avea tot felul de simboluri în identificatori . . +#$: undefined; cannot reference an identifier before its definition > (cons 'a 'b) construcția unei perechi '(a . b) > '(a . b) putem scrie o pereche și așa '(a . b) > (car (cons 'a 'b)) primul element 'a > (cdr (cons 'a 'b)) al doilea element din pereche 'b > (list 1 2 3 4) construcția unei liste '(1 2 3 4) > '(1 2 3 4) construcție listă prin specificare ca S-listă, neevaluată '(1 2 3 4) > (first '(1 2 3 4)) acces elemente 1 > (second '(1 2 3 4)) 2 > (last '(1 2 3 4)) 4 > (car '(1 2 3 4)) lista văzută ca pereche între primul element... 1 > (cdr '(1 2 3 4)) și restul listei '(2 3 4) > (cons 1 '(2 3 4)) construcție listă folosind cons '(1 2 3 4) > '(1 abc #f +) listele pot avea diverse elemente '(1 abc #f +) > '(1 abc (#f +)) și pot fi imbricate '(1 abc (#f +)) > '(a . (b . (c . (d . ())))) o înlănțuire de perechi cu lista vidă pe ultima poziție '(a b c d) este o listă > (last '(a . (b . (c . d)))) dacă nu avem structura de mai sus, nu este listă . . last: contract violation --> argumentele pentru last nu sunt de tipul care trebuie expected: (and/c list? (not/c empty?)) given: '(a b c . d) > '() lista vidă '() > null lista vidă '() > (car (car '((1 . 2) . (3 . 4)))) înlănțuire acces 1 > (caar '((1 . 2) . (3 . 4))) shorthand pentru (car (car )) 1 > (cadr '((1 . 2) . (3 . 4))) shorthand pentru (car (cdr )) 3 > (if (< 3 2) (+ 1 'a) 'const) if are mereu 3 argumente 'const > (if (> 3 2) (+ 1 'a) 'const) ramurile lui if se evaluează doar când este necesar . . +: contract violation expected: number? given: 'a argument position: 2nd other arguments...: > (lambda (a b) (+ a b)) construcția unei funcții anonime # > ((lambda (a b) (+ a b)) 1 2) apel al funcției pe 2 argumente 3 >