Question
Haskell 1. Consider the function f (x:xs) = x What is its type? (5 points). Note: that type has a formal meaning in Haskell, that
Haskell
1.
Consider the function
f (x:xs) = x
What is its type? (5 points). Note: that "type" has a formal meaning in Haskell, that is, there is only one correct (and very precise) answer
Which (standard prelude) library function does "f" correspond to? (5 points)
Hint: put the definition of "f" into a Haskell script and then run it with GHCi to see how it behaves, and check the type with the ":type" command
2.
Consider the function
g [] = 0 g (x:xs) = 1 + g xs
What is its type? (5 points). Which library function does "g" correspond to? (5 points)
3.
Consider the function
h x 0 = 1 h x n = x * h x (n-1)
What is its type? (5 points). Which library function does "h" correspond to? (5 points)
4.
Consider the function
second xs = head (tail xs)
What is its type? (5 points)
Explain why "second" has the type that it has, i.e., "tail :: [a] -> [a]", hence "xs :: [a]", and "head :: [a] -> a", etc. Why does chaining them together like in the definition of "second" give us the type that it has? (5 points)
Note: this will use the fact that if "f" is a function that maps arguments of type "a" to results of type "b", and "e" is an expression of type "a", then the application "f e" has type "b", that is:
if "f :: a -> b" and "e :: a" then "f e :: b"
5.
Consider the function
swap (x,y) = (y,x)
What is its type? (5 points). Why can "x" and "y" correspond to different types in general? (5 points)
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started