#lang racket (define abc 5) ; numele a este legat la valoarea 5 (define sum ; numele sum este legat la o valoarea de tip funcție construită de lambda (lambda (a b c) ; lambda construiește o funcție, cu parametrii formali a, b și c (+ a b c) ; corpul funcției = valoarea întoarsă de funcție când este apelată )) ; formă scurtă de definirea unei funcții: (define (sum2 a b c) ; (nume parametri formali) (+ a b c)) ; corp (sum 1 2 3) ; apel (sum2 1 2 3) ; suma elementelor dintr-o listă (define sumList (lambda (L) (if (null? L) ; pentru o listă vidă rezultatul este zero 0 (+ ; altfel, adun (car L) ; primul element (sumList (cdr L)) ; suma unei liste formată din restul elementelor lui L ) ))) (sumList '(1 2 3 4 5)) ; întoarce o listă cu elementele pare dintr-o listă dată (define evens (lambda (L) (if (null? L) '() (if (even? (car L)) ; dacă primul element este par (cons ; atunci soluția este formată din (car L) ; primul element (evens (cdr L))) ; și elementele pare din restul listei (evens (cdr L)) ; altfel, soluția este formată doar din elementele pare din restul listei ) ; sau, cu if în interior și fără duplicare de cod ; (append ; (if (even? (car L)) ; (list (car L)) ; '() ; ) ; (evens (cdr L))) ))) (evens '(1 2 3 4 5 6))