js로 배우는 SICP (6) - 추상화와 일급함수

정태민·2023년 4월 23일
0

const dx = 0.00001;

function derive(g) {
return x => (g(x+dx) - g(x)) / dx;

}
//여기서 gx는 도함수
추상화와 일급 함수
일급 요소들이 가진 권리와 특권
1. 이름으로 지칭 가능하다.
2. 함수에 전달되는 인수가 될 수 있다.(args..)
3. 반환값이 될 수 있다.
4. 자료구조에 포함할 수 있다.

책에서도 말하듯이 함수가 일급 함수임을 활용하면 효율적으로 구현하기는 어려워진다. 하지만 표현력의 이득을 봐서 일급 함수라는걸 습관화 하는게 좋다.

/**

  • ((xxx)+a(x*x)+b(x)+c )의 영점들의 근사값을 구하는 큐빅 함수를 구현해라
  • */
    /**
  • @param {function} fn
  • @param {} Number fn의 초기 추측값
    /
    function newtons_cubic(fn, Number) {
    const x = Number;
    const dx = 0.00001;
    return (fn(x + dx) - fn(x)) / dx;
    }
    /*
    a, b, c를 사용하여 함수 f(x)를 만드는 클로저를 반환하는 함수 cubic
    /
    function cubic(A, B, C) {
    return (x) => x x x + A x x + B * x + C;
    }
    const a = 1,
    b = 2,
    c = 3;
    let CubicC = cubic(a, b, c);

console.log(newtons_cubic(CubicC, 1));

console.log(composeCloser(6)); //49가 나와야함

/**

  • @param {*} sfn
  • @param {} ifn
    /
    function compose(sfn, ifn) {
    return (x) => sfn(ifn(x));
    }

let composeCloser = compose(square, inc);

function square(x) {
return x * x;
}

function inc(x) {
return x + 1;
}

1장 끝내는데 이렇게 힘들다니... 여러모로 나 자신에 반성된다

profile
퇴근후 30분 출근전 30분

0개의 댓글