Week 3
Quiz 7

Quiz 7: Working with a pair

Question 1

Shows true?
JavaScript
// standard definition of pair
const pair = a => b => f => f(a)(b);
const fst = p => p(T);
const snd = p => p(F);
 
const oneTwo = pair(1)(2);
document.writeln(fst(oneTwo) === 1);

Question 2

Shows true?
JavaScript
// standard definition of pair
const pair = a => b => f => f(a)(b);
const fst = p => p(T);
const snd = p => p(F);
 
const oneTwo = pair(1, 2);
document.writeln(fst(oneTwo) === 1);

Question 3

Shows true?
JavaScript
// standard definition of pair
const pair = a => b => f => f(a)(b);
const fst = p => p(T);
const snd = p => p(F);
 
const oneTwo = pair(1, 2);
fst(oneTwo) = 0;
document.writeln(fst(oneTwo) === 0);

Question 4

Throws ReferenceError?
JavaScript
// standard definition of pair
const pair = a => b => f => f(a)(b);
const fst = p => p(T);
const snd = p => p(F);
 
const oneTwo = pair(1, 2);
fst(oneTwo) = 0;
document.writeln(fst(oneTwo) === 0);

Question 5

Shows true?
JavaScript
// standard definition of pair
const pair = a => b => f => f(a)(b);
const fst = p => p(T);
const snd = p => p(F);
 
const pairEq = a => b => fst(a) === fst(b) && snd(a) === snd(b);
 
const pairPlus = a => b => pair(fst(a) + fst(b))(snd(a) + snd(b));
 
const oneTwo = pair(1, 2);
const sum = pairPlus(oneTwo)(oneTwo);
 
document.writeln(pairEq(sum)(pair(2)(4)));

Question 6

Shows true?
JavaScript
// standard definition of pair
const pair = a => b => f => f(a)(b);
const fst = p => p(T);
const snd = p => p(F);
 
const pairEq = a => b => fst(a) === fst(b) && snd(a) === snd(b);
 
const pairMap = f => p => pair(f(fst(p)))(f(snd(p)));
 
const oneTwo = pair(1)(2);
const square = x => x * x;
const result = pairMap(square)(oneTwo);
 
document.writeln(pairEq(result)(pair(1)(4)));