1.3 Formulating Abstractions with Higher-Order Functions

5970 단어 sicpjssicpjs

1 Building Abstractions with Functions


3 Formulating Abstractions with Higher-Order Functions


We have seen that functions are, in effect, abstractions that describe compound operations on numbers independent of the particular numbers.

우리는 함수가 사실상 특정 숫자 또는 독립적인 숫자를 복합적으로 연산한 것의 추상화라는 것을 확인했습니다.

For example, when we declare

예를 들어, 다음을 선언할 때

function cube(x) {
  return x * x * x;
}
we are not talking about the cube of a particular number, but rather about a method for obtaining the cube of any number.

특정 숫자의 세 제곱을 말하는 것이 아니라, 어떤 수의 세 제곱을 얻는 방법에 대한 내용을 말합니다.

Of course we could get along without ever declaring this function, by always writing expressions such as

당연하게도 우리는 이러한 함수를 선언하지 않고도 세 제곱을 다음과 같은 표현식을 작성해 얻을 수 있습니다

333xxxyyy3 * 3 * 3 x * x * x y * y * y
and never mentioning cube explicitly.

그리고 이것을 cube(세 제곱)이라고 명명하진 않죠.

This would place us at a serious disadvantage, forcing us to work always at the level of the particular operations that happen to be primitives in the language (multiplication, in this case) rather than in terms of higher-level operations.

이는 우리에게 높은 수준의 연산으로 작업하는 것이 아닌 언어의 원시적인 연산 작업 (이 경우 곱셈) 수준에서 일하게 하는 불이익에 빠뜨립니다.

Our programs would be able to compute cubes, but our language would lack the ability to express the concept of cubing.

우리 프로그램은 세 제곱을 계산할 수 있지만, 우리의 언어는 세 제곱을 표현하는 능력이 부족할 것입니다.

One of the things we should demand from a powerful programming language is the ability to build abstractions by assigning names to common patterns and then to work in terms of the abstractions directly.

강력한 프로그래밍 언어에게 요구하는 한 가지는 일반적인 패턴에 이름을 붙여 추상화하고 추상화라는 말 그대로 사용할 수 있는 것입니다.

Functions provide this ability.

함수는 이러한 기능을 제공합니다.

This is why all but the most primitive programming languages include mechanisms for declaring functions.

이는 대부분의 초기 프로그래밍 언어가 함수를 선언하는 매커니즘을 포함하는 이유입니다.

Yet even in numerical processing we will be serverely limited in our ability to create abstractions if we are restricted to functions whose parameters must be numbers.

하지만 숫자를 처리하는 과정에서 함수의 매개변수를 숫자로 제한하는 것은 추상화 능력을 제한하게 될 것입니다.

Often the same programming pattern will be used with a number of different functions.

대부분의 프로그래밍 패턴에서는 다른 함수에 다른 숫자를 사용합니다.

To express such patterns as concepts, we will need to construct functions that can accept functions as arguments or return functions as values.

이러한 컨셉의 패턴을 표현하기 위해, 우리는 함수를 매개변수로 받거나 함수를 값으로 반환하는 함수를 만들어야 합니다.

Functions that manipulate functions are called higher-order functions.

함수를 만드는 함수는 높은 순서의 함수라고 불립니다.

This section shows how higher-order functions can serve as powerful abstractions mechanisms, vastly increasing the expressive power of our language.

이번 섹션에서는 높은 순서의 함수가 어떻게 추상적인 매커니즘을 제공하는지, 어떻게 우리 언어의 표현력을 크게 향상시키는지에 대해 알아볼 것입니다.

좋은 웹페이지 즐겨찾기