CS计算机代考程序代写 Haskell Lambda Calculus Possible Midterm Topics
Possible Midterm Topics
If it’s not on this list, it’s not on the midterm.
What is a paradigm? For functional and imperative paradigms, be able to give:
• Paradigm definitions
• Language features specific to the paradigm
• Justification for programming one way over the other
Functional Programming in Racket
• Conditional branching: if vs cond
• Writing recursive functions
• Tracing the evaluation steps of a recursive function
• Higher Order Functions
• Taking and returning functions: why, what are higher order functions for?
• Be able to write your own higher order function
• And use the built-ins: map, filter, foldl/r
• Tail call recursion: be able to recognize, trace, and/or implement a tail recursive function
The Lambda Calculus
• Resolve a complex function application using eager and/or lazy evaluation
• Given a truth table, implement the Boolean operation.
• Recognize whether a Lambda Calculus function successfully implements recursion, or not.
Functional Programming in Haskell
• Type signatures
• Don’t worry about memorizing the Haskell type hierarchy!! But be able to give or explain a given type signature, including with basic type classes, and also for composed or partially applied functions (see practice midterm for example)
• Writing recursive functions using pattern matching (and guards and if-then-else).
• Partial application and currying
• Function composition
• List comprehensions
• Infinite lists
• Lazy evaluation: what it is, why it’s offered
• Trace the lazy evaluation of an expression
• Tail recursion in Haskell
• Higher order functions: implementing and using map, filter, foldl/r