source-academy / sicp

XML sources of SICP and SICP JS, and support for generating Interactive SICP JS, PDF, e-book and comparison editions

Home Page:https://sourceacademy.org/sicpjs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Solution to Exercise 3.37

clean99 opened this issue · comments

function cminus(x, y) {
    const z = make_connector();
    const u = make_connector();
    const v = make_connector();
    constant(-1, u);
    multiplier(u, y, v);
    adder(x, v, z);
    return z;
}

function cmul(x, y) {
    const z = make_connector();
    multiplier(x, y, z);
    return z;
}

function cdiv(x, y) {
    const z = make_connector();
    const u = make_connector();
    const v = make_connector();
    constant(1, v);
    // y * u = 1 -> u = 1 / y
    multiplier(y, u, v);
    multiplier(x, u, z);
    return z;
}

function cv(val) {
    const x = make_connector();
    constant(val, x);
    return x;
}