Lecture 1 - Page 20 : 49
Programming Paradigms
Introduction to Functional Programming in Scheme
* Lisp and Scheme
Lisp
Scheme
R5RS, R6RS, R7RS, ...
* Expressions and values
The read-eval-print loop - REPL
Practical Scheme Programming
* Types
Types
Typing and Typecheck
* Lists
Proper lists
Symbolic expressions and improper lists
Practical list construction
List functions
Association lists
Property lists
Programs represented as lists
* Other Data Types
Other simple types
Vectors
Strings
* Definitions
Definitions
* Functions
The function concept
Evaluation of parenthesized expressions in Scheme
Lambda Expressions in Scheme
Lambda calculus
Function objects
Functions as first class values
Closures
More forms of lambda expressions in Scheme
Function definition in Scheme
* Name binding constructs
The
let
name binding expression
The equivalent meaning of
let
The
let*
name binding construct
The
let*
name binding construct
An example with
let*
The
letrec
namebinding construct
An implementation of letrec
Binding of free names
Binding of free names - examples
The
fluid-let
namebinding construct
* Referential Transparency
Referential Transparency - Practical Aspects
Referential Transparency
More Excercises
Other simple types
Besides numbers, Scheme also supports booleans, characters, and symbols
Booleans
True
is denoted by
#t
and
false
by
#f
Every non-
false
values count as true in
if
and
cond
Characters
Characters are denoted as
#\a
,
#\b
, ...
Some characters have symbolic names, such as
#\space
,
#\newline
Symbols
Symbols are denoted by quoting their names:
'a
,
'symbol
, ...
Two symbols are identical in the sense of
eqv?
if and only if their names are spelled the same way
R5RS: Booleans
R5RS: Characters
R5RS: Symbols
R5RS: Equivalence predicates