12 Questions
2 Views

# Lambda Calculus and Functional Programming Quiz

Created by
@CelebratedGlacier

beta-reduction

[1,2:3:[]]

### Which concept is not a key feature of functional programming?

mutable variables

### Why is Haskell considered a pure functional programming language?

<p>Its evaluation has no side-effects.</p> Signup and view all the answers

### Which technique is NOT used to convert a recursive function into a tail recursive one?

<p>accumulating parameters</p> Signup and view all the answers

### In the Haskell function definition product [] = 1 product (x:xs) = x * product xs, what concept is illustrated?

<p>higher-order functions</p> Signup and view all the answers

### What is the value of the expression foldr (-) 0 [1, 2, 3]?

<p>2</p> Signup and view all the answers

### What is the type of the const function?

<p><code>const :: a -&amp;gt; b -&amp;gt; a</code></p> Signup and view all the answers

### What is the value of the expression flip (-) 1 2?

<p>1</p> Signup and view all the answers

### What kind of algebraic data type is (a, b) in Haskell?

<p>A product type</p> Signup and view all the answers

### What does the foldl (flip (:)) [] "drawer" expression evaluate to?

<p><code>&quot;reward&quot;</code></p> Signup and view all the answers

## Study Notes

• A function with exactly one recursive call and its return value is immediately returned by the calling function.

### Section Function

• The section (^2) is equivalent to \x -> 2^x.

### Fold Expressions

• Evaluation of foldr (+) 0 [1, 2, 3] = 6
• Evaluation of foldr (-) 0 [1, 2, 3] = 2
• Evaluation of foldl (+) 0 [1, 2, 3] = 6
• Evaluation of foldl (-) 0 [1, 2, 3] = -6
• Evaluation of foldr (+) 5 [1, 2, 3] = 11
• Evaluation of foldl (-) 5 [1, 2, 3] = -1

### Polymorphic Functions

• Type of max a b = if a > b then a else b is a -> a -> a
• Type of head (x:xs) = x is [a] -> a
• Type of length [] = 0; length (x:xs) = 1 + length xs is Num n => [a] -> n
• Type of maximum = foldl max where max a b = if a > b then a else b is (Foldable t, Ord a) => t a -> a

### Const Function

• Evaluation of const (1+) 10 100 = 101
• Type of const x _ = x is a -> b -> a
• Evaluation of foldr (const (1+)) 0 [2, 31, 1] = 3
• Evaluation of foldl (const (1+)) 0 [2, 31, 1] = 2

### ++ Function

• Evaluation of "c" ++ "++" = "c++"
• Type of (++) is [a] -> [a] -> [a]
• foldr (++) [] flattens a list of lists

### Flip Function

• Evaluation of flip (-) 1 2 = 1
• Type of flip f a b = f b a is (a -> b -> c) -> (b -> a -> c)

### Algebraic Data Types

• Type (a, b) is a product
• fst and snd are projection functions

### Lambda-Calculus

• The main reduction rule of the semantic of lambda-calculus is beta-reduction

• A list [1,2,3] is syntactic sugar for 1 : 2 : 3 : [] which is equivalent to 1 : (2 : (3 : []))

### Recursion in Functional Programming

• Tail recursion is an important concept in functional programming
• Techniques to transform a recursive function into an equivalent tail recursive function include accumulating parameters

• Haskell is a pure functional programming language, meaning the evaluation of expressions has no side-effects
• Mutable variables are not a feature of Haskell
• Algebraic data types, particularly co-products, are used where other languages would use NULL pointers
• Pattern matching is used in the Haskell function definition product [] = 1; product (x:xs) = x * product xs

## Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

## Description

Test your knowledge on lambda calculus and functional programming concepts with this quiz. From reduction rules to recursion, see how well you understand these fundamental principles in computer science.

## More Quizzes Like This

Use Quizgecko on...
Browser
Information:
Success:
Error: