function
mapping that takes one or more arguments and produces a single result
features of haskell
concise programs powerful type system list comprehesions recursive functions higher order functions effectful functions generic functions lazy evaluation equational reasoning
layout
everything should be in same column
curried functions
functions with multiple arguments that take the argument one at a time
difference between a tuple and list
list is mutable and tuple is immutable - the length of a list is arbitrary but defined for tuple
list comprehension generator
x
higher order function
function that takes in another function as part of its argument or returns a function as a result