1. Special Forms
•if expression: (if <predicate> <consequent> <alternative>)
• and and or: (and <e1> ... <en>), (or <e1> ... <en>)
• Binding symbols: (define <symbol> <expression>)
• New procedures: (define (<symbol> <formal parameters>) <body>)
2. Lambda Expressions
(lambda (<formal-parameters>) <body>)
Example:
(define (plus4 x) (+ x 4))
(define plus4 (lambda (x) (+ x 4)))
3. Cond & Begin
The cond special form that behaves like if-elif-else statements in Python
In python:
if x > 10:
print('big')
elif x > 5:
print('medium')
else:
print('small')
In Scheme:
(cond ((> x 10) (print 'big))
((> x 5) (print 'medium))
(else (print 'small)))
The begin special form combines multiple expressions into one expression
In python:
if x > 10:
print('big')
print('guy')
else:
print('small')
print('fry')
In Scheme:
(cond ((> x 10) (begin (print 'big) (print 'guy)))
(else (begin (print 'small) (print 'fry))))
4. Let Expressions
The let special form binds symbols to values temporarily; just for one expression
In Python:
a = 3
b = 2 + 2
c = math.sqrt(a * a + b * b)
"""a and b are still bound down here"""
In Scheme:
(define c (let ((a 3)
(b (+ 2 2)))
(sqrt (+ (* a a) (* b b)))))
"""e a and b are not bound down here"""