Computer Science 1JC3: Introduction to Computational Thinking
Instructor: Bill Farmer
Lecture on Logic and Computational Expressions in Haskell
Importance of Boolean Expressions
- Boolean expressions are essential for decision-making in programming.
- They allow programs to skip code, making them flexible.
Conditional Expressions
- Definition: An expression that depends on the value of a Boolean expression.
- In Haskell, written as
if-then-else.
- Syntax:
if c then e1 else e2
e1 and e2 must have the same type.
- Example: Absolute value function for integers.
- Conditional expression determines if
n is non-negative or negative to return n or -n.
Guarded Function Definitions
- Provides a compact way to define functions without multiple
if-then-else statements.
- Uses guards (conditions) to determine the output expression,
ei, for given inputs.
- Example: Defining an absolute value function using guards for conditions
n >= 0 and n < 0.
Case Statements
- A generalization of conditional statements in Haskell.
- Syntax:
case expression of pattern -> result
- Matches expression
E with patterns and returns corresponding results.
- Example: Converts a boolean to an int, mapping
False to 0 and True to 1.
Alonzo Church
- American logician, mathematician, and computer scientist.
- Known for:
- Showing undecidable problems exist (Church's Theorem).
- Developing Lambda Calculus for function abstraction.
- Church-Turing Thesis: Equivalence of Lambda Calculus and Turing Machines as models of computation.
- Church-Rosser Theorem.
Lambda Calculus
- Originated by Alonzo Church.
- Provides a way to define anonymous functions using lambda notation.
- Example: A lambda expression for squaring a real number.
λx. x * x denotes squaring function.*
Lambda Expressions in Haskell
- Notation:
\x -> expression
- Does not require explicit type declaration.
- Example: Defining anonymous function for squaring using Haskell syntax.
Curried Functions in Haskell
- Allows partial application of functions.
- Example discussed: Function
f that takes x and y to return sqrt(x - y).
f 7 returns a new function \y -> 7 - y.
Summary
- Covered conditional expressions, guarded function definitions, and case statements.
- Discussed Alonzo Church's contributions to computation and lambda calculus.
- Demonstrated application of lambda expressions and curried functions in Haskell.
Thank you for attending! See you next time.