CS 330 Lecture 32 – Type Inference, Functions, and Lists
Agenda
- what ?s
- type interference in other languages
- type signatures
- curried functions
- infinite lists
- list processing
- case statements
- pattern matching
- map
- lambda
Think About This
Someone hands you a number k and an arbitrary list of size n. The someone demands, “What’s the kth smallest element?” Assume 0 <= k < n. What do you do?
Someone hands you a number k. The someone demands, “What’s the kth smallest element?” What do you do?
Code
april18.hs
import Data.List
initials :: String -> String -> String -> String
initials first second third = head first : head second : head third : []
kth :: Int -> [Int] -> Int
kth k items = sort items !! k
best :: [Int] -> Int
best = kth 0
runnerup :: [Int] -> Int
runnerup = kth 1
sum' :: [Int] -> Int
-- sum' ns =
-- case ns of
-- [] -> 0
-- (first:rest) -> first + sum' rest
sum' [] = 0
sum' (first:rest) = first + sum' rest
convertMilesToKilometers [] = []
convertMilesToKilometers (first:rest) = (1.609 * first) : convertMilesToKilometers rest
needsOurLove :: [(String, String)] -> [Bool]
needsOurLove [] = []
needsOurLove ((_, lastName):rest) = (head lastName >= 'N') : needsOurLove rest
Haiku
Nerds learn fast, mostly
Part of Haskell trips them up
The social functions
Part of Haskell trips them up
The social functions