1) This year's lab 1 will probably be next year's lab 2.
Sorry about that, my
got away from me, as it sometimes does.
2) Please make sure that your name is legible on your HW.
I'm grading Monday's
don't blame the TA), and I'm running late. Too much to do :-(.
3) The lab TA has prepared a survey we'd like you all to take.
Today, we'll try to fix some of the damage from last time :-).
Fun with lists.
[1,2,3] :: [Int]
List have two building blocks
 :: [a] -- the empty list,
(:) :: a -> [a] -> [a] -- cons, the list constructor.
Thus, [1,2,3] is really
1 : 2 : 3 : 
Note that (:) associates to the right, which is kind.
List processing is a core topic in functional programming.
flexible data structures that enable us to deal with arbitrarily large data
and some very general, powerful tools have been developed for dealing with
++ :: [a] -> [a] -> [a]
[1,2,3] ++ [4,5,6] =>
filter :: (a -> Bool) -> [a] -> [a]
filter even [0.
map :: (a -> b) -> [a] -> [b]
map square [1.
concat :: [[a]] -> [a]
concat [[1,2,3],[4,5],,] =>
nub :: [a] -> [a]
nub [1,2,1,2,3,2,3] =>
You should understand them fully, and master their use.