Définir la fonction duplique qui prend une liste et renvoie chaque élément en double. Par exemple, (duplique (cons 1 (cons "x" '()))) est (cons 1 (cons 1 (cons "x" (cons "x" '())))).
Définir la fonction dernier qui renvoie le dernier élément d'une liste.
Définir la fonction (renverse-dans la lb) qui renverse les éléments de la et les ajoute à lb. Par exemple, (renverse-dans (cons 1 (cons 2 '())) (cons 3 '())) est (cons 2 (cons 1 (cons 3 '()))).
Définir la fonction (renverse li) qui prend une liste et renvoie la liste à l'envers. (renverse (cons 1 (cons 2 '()))) est (cons 2 (cons 1 '())).
On définit une expression arithmétique comme étant soit :
un nombre
la chaîne "x", représentant une variable x
(make-plus a b) (définir la structure plus aux champs [a b]), où a et b sont deux expressions arithmétiques
(make-mult a b) (définir la structure mult aux champs [a b]) où a et b sont deux expressions arithmétiques.
Par exemple, l'expression (2 * (x + 1)) est représentée par la valeur (make-mult 2 (make-plus "x" 1)).
Définir la fonction varie? qui prend une expression arithmétique et indique si elle varie, c'est-à-dire si elle contient la variable "x" (ou bien seulement des constantes).
Définir la fonction (eval n expr) qui évalue l'expression arithmétique expr en donnant à la variable x la valeur n. Par exemple, (eval 3 (make-mult 2 (make-plus "x" 1))) est 8, c'est-à-dire (2 * (3 + 1)).
Définir la fonction derive qui prend une expression arithmétique et renvoie sa dérivée par rapport à la variable x. Rappel:
la dérivée d'une constante est 0
la dérivée de x est 1
la dérivée de (u + v) est (u' + v'), où u', v' sont les dérivées de u et v.
la dérivée de u * v est ((u' * v) + (u * v')), avec les mêmes notations.
Expressions:
(opération argument1 argument2 argument3)
Définition et utilisation de variable:
(define nom-de-variable ...)
(define gregory (string-append "bon" " " "jour"))
gregory
Définition et utilisation de fonction:
(define (nom-de-fonction nom-argument1 nom-argument2 nom-argument-3) ...)
(define (square i) (* i i))
(square 5)
(if truc machin chouette)
(cond
[truc bidule]
[truc machine]
[else chose])
nombres
+ - * /
images
(require 2htdp/image)
(rectangle 10 20 "solid" "blue")
(circle 100 "solid" "red") square star
above beside
image-width image-height
chaînes de caractères (strings)
string-length string-append string-ith
string->number number->string
string=?
booléens
and or not
prédicats de test
image? number? string? boolean?
structures
(define-struct anim [size decr?])
(make-anim s dir)
(anim-size anim)
(anim-decr? anim)
(anim? x)
listes
'() cons first rest empty? cons?
Exemple:
; A TrafficLight is one of the following Strings:
; – "red"
; – "green"
; – "yellow"
; interpretation the three strings represent the three
; possible states that a traffic light may assume
; the state of a traffic light is represented by TrafficLight
; TrafficLight -> TrafficLight
; yields the next state given current state s
(check-expect (traffic-light-next "red") "green")
(define (traffic-light-next s)
(cond
[(string=? "red" s) "green"]
[(string=? "green" s) "yellow"]
[(string=? "yellow" s) "red"]))