Lists
Table of Contents
1. Review on Lists
1.1. Cons vs. List
CONS
(cons 10(cons 20(cons 30 '())))
LIST
(list 10 20 30)
^ lists is inherently using cons
returns > ’(10 20 30)
BIGGER EXAMPLE:
(list 7
(list 8 9 (list 10))
(list 11 12)
(list)
13)
returns > ’(7 (8 9(10)) (11 12) () 13))
1.2. Permeating Quotes
Making lists wherever there are quotes
= (list 7 ’(8 9 (10) ’(11 12) ’() 13)
= list 7 (list 8 9 ’(10) (list 11 12) (list) 13)
= list 7 (list 8 9 (list 10) (list 11 12) (list) 13)
Simple Error with symbols and lists
(define x 4)
(list 1 2 3 x) -> (1 2 3 4)
’(1 2 3 x) -> ’(1 2 3 x) because it permates ’x as a symbol
What is the length of this list ?
(cons ’(1 2) ’(3 4))
(cons (cons 1(cons 2 ’()))
(cons 3(cons 4 ’()))
return > ’((1 2) 3 4)
The length is 3
2. Program Languages
Program -> [magic box] -> Result
SPLIT THE MAGIC BOX
program -> [Parser] -> Abstract Syntax Tree (AST) -> [Interp] -> Result
2.1. Abstract Syntax Tree
2 * ( 3 + 4 )
(define-type ExprC (U NumC PlusC MultC))
(struct NumC([n : Real]))
(struct PlusC([l: ExprC]
[r: ExprC]))
(struct MultC([l: ExprC]
[r: ExprC]))
(MultC (NumC 2)
(PlusC (NumC 3)
(NumC 4)))