value =
0 | +1 | -1 | ...
| #t | #f
| 'hello | 'world
| empty
| list
list =
empty
| (cons value list)
All constants are values. And lists are values.
Some strange examples
(cons (cons 1 (cons 2 empty)) empty)How many items are in this list?
Is this about core knowledge or computational knowledge?
* t = 0
\
\
\
v
* t = 1
...
Core knowledge: Multiply velocity by time, add to position. Even if that means mulitplying vectors etc.
What form of data? Lists of numbers. Contract. Examples. Template.
#|
elim : (listof number) -> (listof number)
Purpose: produce a list of numbers from the input by removing all those greater than 100
Data Def.: list-of-number = empty | (cons number list-of-number)
Examples:
(elim (list 20 30 100 40 20 30 100)) = (list 20 30 40 20 30)
(elim empty) = empty
Template:
(define (elim alon)
(cond
((empty? alon) ...)
(else ... (first alon) ... (elim (rest alon)) ...)))
|#
(define (elim alon)
(cond
((empty? alon) empty)
(else (cond
((> (first alon) 100) (elim (rest alon)))
(else (cons (first alon) (elim (rest alon))))))))
Given a table of names, salaries, and ranks.
| Name | Age | Salary |
| Man | 23 | 120000 |
| BigMan | 46 | 800000 |
| Little | 19 | 30000 |
| Woman | 32 | 300000 |
| Kiddo | 18 | 20000 |
Develop a program that consumes a table and produces one with all those rows removed where age is below some threshold A.
#|
project : db number[A] -> db
Purpose: produce a db from the input by including only those whose age
is greater than A
Data def:
db is a list of db-records: db = empty | (cons db-record db)
db-record:
(define-struct record (name age salary))
A db record is (make-record symbol a s)
where a is an integer between MIN-AGE and MAX-AGE (incl)
and s is an integer between MIN-SALARY and MAX-SALARY (incl)
Examples:
(project DB1
(project empty 100) = empty
Template:
(define (project alon)
(cond
((empty? alon) ...)
(else ... (first alon) ... (project (rest alon)) ...)))
|#
(define (project db)
(cond
((empty? db) empty)
(else (cond
((<= (record-age (first db)) A) (project (rest db)))
(else (cons (first db) (project (rest db))))))))
(define-struct record (name age salary))
(define DB1
(cons
(make-record 'Man 23 120000 )
(cons
(make-record 'BigMan 46 800000 )
(cons
(make-record 'Little 19 30000 )
(cons
(make-record 'Woman 32 300000 )
(cons
(make-record 'Kiddo 18 20000 )
empty))))))
| Matthias Felleisen | This page was generated on Fri Apr 9 09:17:38 CDT 1999. |