function highest_denom(kinds_of_coins) {
switch (kinds_of_coins) {
case 1: return 5; break;
case 2: return 10; break;
case 3: return 20; break;
case 4: return 50; break;
default: return 0;
}
}
function coordinates_4_3(dimension) {
if (dimension === "x") {
return 4;
} else if (dimension === "y") {
return 3;
} else {
return "error";
}
}
/* Access: */ ... coordinates_4_3("y") ...
function coordinates_4_3(dimension) {
if (dimension === "x") {
return 4;
} else {
return 3;
}
}
function make_coordinates(x, y) {
return function (dimension) {
if (dimension === "x") {
return x;
} else {
return y;
}
};
}
function make_pair(x, y) {
return function (index) {
if (index === "first") {
return x;
} else {
return y;
}
};
}
function first(pair) {
return pair("first");
}
function second(pair) {
return pair("second");
}
function make_pair(x, y) {
return function (select) {
return select(x,y);
};
}
function first(pair) {
return pair(function(x, y) { return x; });
}
function second(pair) {
return pair(function(x, y) { return y; });
}
var tag = function() { return true; }
function make_pair(x, y) {
return function (select) {
return select(x,y,tag);
};
}
function first(pair) {
return pair(function(x, y, z) { return x; });
}
function second(pair) {
return pair(function(x, y, z) { return y; });
}
function is_pair(pair) {
return pair(function(x, y, z) { return z === tag; });
}
function pair_lib(fun_name) {
var tag = function() { return true; }
function make_pair(x, y) { ...tag... };
function first(pair) { ... };
function second(pair) { ... };
function is_pair(pair) { ...tag... };
return (fun_name === "make_pair") ? make_pair
: (fun_name === "first") ? first
: (fun_name === "second") ? second
: (fun_name === "is_pair") ? is_pair;
}
function make_rat(n, d) {
return pair(n, d);
}
function numer(x) {
return first(x);
}
function denom(x) {
return second(x);
}
function add_rat(x, y) {
return make_rat(numer(x) * denom(y) +
numer(y) * denom(x),
denom(x) * denom(y));
}
function sub_rat(x, y) {
return make_rat(numer(x) * denom(y) -
numer(y) * denom(x),
denom(x) * denom(y));
}
function mul_rat(x, y) {
return make_rat(numer(x) * numer(y),
denom(x) * denom(y));
}
function div_rat(x, y) {
return make_rat(numer(x) * denom(y),
denom(x) * numer(y));
}
function equal_rat(x, y) {
return numer(x) === numer(y) && denom(x) === denom(y);
}
function equal_rat(x, y) {
return numer(x) * denom(y) === numer(y) * denom(x);
}
function rat_to_string(x) {
return numer(x) + " / " + denom(x);
}
var one_half = make_rat(1, 2);
var one_third = make_rat(1, 3);
rat_to_string(add_rat(one_half, one_third));
rat_to_string(mul_rat(one_half, one_third));
rat_to_string(add_rat(one_third, one_third));
function make_rat(n, d) {
var g = gcd(n, d);
return pair(n / g, d / g);
}
function make_rat(n, d) {
return pair(n, d);
}
function numer(x) {
var g = gcd(first(x), second(x));
return first(x) / g;
}
function denom(x) {
var g = gcd(first(x), second(x));
return second(x) / g;
}
function make_rat(n, d) { return pair(n, d); }
function numer(x) { return first(x); }
function denom(x) { return second(x); }
function rat_to_string(x) {
var g = gcd(numer(x), denom(x));
return (numer(x) / g) + " / " + (denom(x) / g);
}
var highest_denom = pair( pair(50, 20), pair(10, 5));
var highest_denom_2 = pair( 20, pair(10, 5));
var highest_denom_3n = pair(10, 5));
var highest_denom = pair(50, pair(20, pair(10, 5)));
var highest_denom = pair(10, 5);
var rest = second(highest_denom);
function empty_list() { return true; }
var highest_denom =
pair(50, pair(20, pair(10, pair(5, empty_list))));
var highest_denom = pair(50,
pair(20,
pair(10,
pair(5,
empty_list))));
var highest_denom = pair(50,
pair(20,
pair(10,
pair(5, []);
...head(highest_denom)...
...head(tail(tail(highest_denom)))..
function length(xs) {
if (is_empty_list(xs)) {
return 0;
} else {
return 1 + length(tail(xs));
}
}
function length_iter(xs) {
function len(xs, counted_so_far) {
if (is_empty_list(xs)) {
return counted_so_far;
} else {
return len(tail(xs), counted_so_far + 1);
}
}
return len(xs, 0);
}
/
#