Before the lab
Setup
- make a directory
labs/L05
inside your~/cs2613
git repository - All of your work from today should be committed in that directory (and pushed before you leave).
Substitute in a list
- Time
- 25 minutes
- Activity
- Individual work
- Summary
- Learn about lists and recursion.
Complete FICS Exercise 13.
Recall the template for structural recursion.
(define (my-list-fn lst)
(cond
[(empty? lst) ...]
[(cons? lst) ... (first lst) ...
... (my-list-fn (rest lst)) ...]))
Here is a test case based on the linked test
(check-expect
(substitute 3 "three" (list "four" 3 4 "three" 3))
(list "four" "three" 4 "three" "three"))
Uniquifying lists
- Time
- 25 minutes
- Activity
- Individual work
- Summary
- Learn about lists and recursion.
Complete FICS Exercise
15. Although
probably not intended by the original question, use the built-in BSL
function member?
to simplify your solution. Otherwise use only the
constructs specified in Exercise 14, and structural recursion. My
solution contains an auxilary function (also using structural
recursion) to remove all copies of a particular value from a list.
Here is one test case derived from the linked text.
(check-expect
(unique-right
(list 1 4 2 1 5 4))
(list 2 1 5 4))
Add an element to all lists
- Time
- 25 minutes
- Activity
- Individual work
- Summary
- Learn about lists and recursion.
Recall the template for structural recursion on lists
(define (my-list-fn lst)
(cond
[(empty? lst) ...]
[(cons? lst) ... (first lst) ...
... (my-list-fn (rest lst)) ...])
Use this template to write a function cons-all
that adds a given
element to the front of each given sublist. This is related to
FICS Exercises 23-25 (but you only need to write cons-all
, not do those exercises).
The following test case illustrates the use of cons-all
. You will need to use the language #lang htdp/bsl+
or "Beginning Student with List Abbreviations"
or replace the use of '
in the following.
(check-expect (cons-all 3 '((2 4) () (5)))
'((3 2 4) (3) (3 5)))