Home [함수형 프로그래밍] 1. 액션, 계산, 데이터
Post
Cancel

[함수형 프로그래밍] 1. 액션, 계산, 데이터

서점에서 재미있는 책을 봤다. 쏙쏙들어오는 함수형 코딩이라는 책이다. 함수형 코딩에 대해 예제를 들어 정성들여 설명하고 있다. 나는 단순히 함수형 프로그래밍에 대해 알고 싶어서 이 책을 읽었는데, 그 외적으로 많은 것을 알게 되었다. 대표적으로 아래와 같다.

  1. 좋은 코드란 뭐지?
  2. 우리의 프로그램이 테스트가 어려운 이유가 뭐지?

아마 개발자라면 누구나 고민해봤을 문제일 것이다. 앞으로 이 책을 요약하는 글을 쓸 것이고, 오늘은 함수형 프로그래밍의 기본 용어인 액션, 계산, 데이터를 정리해보겠다.

함수형 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로, 수학 함수(순수 함수)의 개념을 따르는 방식으로 프로그램을 작성하는 것입니다. 이러한 함수형 프로그래밍은 다른 프로그래밍 패러다임과는 다른 개념들이 있습니다. 여기서는 함수형 프로그래밍에서 중요한 세 가지 개념인 액션, 계산, 데이터에 대해 살펴보겠습니다.

액션

액션은 실행되는 시간에 따라 결과가 달라지는 함수를 의미합니다. 같은 인자값을 넣더라도 시간에 따라 결과가 달라집니다. 함수형 프로그래밍에서는 액션을 최소화하고, 대신에 순수 함수를 사용합니다. 순수 함수는 입력값에 의해서만 결정되는 함수로, 같은 입력값에 대해서는 항상 같은 출력값을 반환합니다. 이를 통해 함수형 프로그래밍은 부작용(side effect)을 최소화하고, 안정적인 프로그램을 작성할 수 있습니다.

예를 들어, 다음과 같은 함수를 생각해보겠습니다.

1
2
def add(a, b):
    return a + b

위 함수는 두 개의 숫자를 입력받아 덧셈을 수행하고, 결과를 반환합니다. 이 함수는 순수 함수입니다. 왜냐하면 같은 입력값에 대해서는 항상 같은 출력값을 반환하기 때문입니다. 따라서 이 함수를 사용하면 부작용을 최소화할 수 있습니다.

다음과 같은 함수는 순수 함수가 아닙니다.

1
2
* 데이터베이스를 조회하는 함수
* 외부 api를 호출하는 함수 등

액션은 테스트하기 어렵고, 전염됩니다. 때문에 프로그램을 복잡하게 만드는 원인 중 하나입니다. 하지만, 액션을 아예 안 쓸수는 없습니다. 그렇기에 우리는 액션을 최대한 한 곳에 놓아 전염되는 것을 막아야합니다.

계산

계산은 함수형 프로그래밍에서 핵심적인 역할을 합니다. 계산은 어떤 시간에도 같은 값을 넣으면 같은 결과가 나옵니다. 함수형 프로그래밍에서는 계산을 함수로 처리하고, 함수를 이용해 원하는 결과를 도출합니다. 이를 통해 함수형 프로그래밍은 복잡한 계산을 간단하게 처리할 수 있습니다.

예를 들어, 다음과 같은 함수를 생각해보겠습니다.

1
2
3
4
5
6
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

위 함수는 n의 계승(factorial)을 계산하는 함수입니다. 이 함수는 재귀적(recursive)으로 정의되어 있습니다. 따라서 이 함수를 사용하면 복잡한 계산을 간단하게 처리할 수 있습니다.

함수형 프로그래밍에서는 계산을 간단하게 처리할 수 있는 여러 가지 함수들을 제공합니다. 예를 들어, map, filter, reduce 등의 함수들은 데이터를 처리하는데 유용합니다. 이러한 함수들을 조합하여, 원하는 결과를 도출할 수 있습니다.

데이터

데이터는 함수형 프로그래밍에서 중요한 역할을 합니다. 함수형 프로그래밍에서는 데이터를 불변(immutable)하게 처리하고, 데이터를 조작하기 위해서는 새로운 데이터를 생성해야 합니다. 이를 통해 함수형 프로그래밍은 상태를 변경하는 대신, 새로운 데이터를 생성하여 원하는 결과를 도출합니다.

예를 들어, 다음과 같은 리스트를 생각해보겠습니다.

1
my_list = [1, 2, 3, 4, 5]

위 리스트는 1부터 5까지의 숫자를 포함하고 있습니다. 이 리스트를 변경하지 않고, 새로운 리스트를 생성하는 방법으로 데이터를 조작할 수 있습니다.

1
new_list = list(map(lambda x: x * 2, my_list))

위 코드는 my_list의 각 원소에 2를 곱한 새로운 리스트를 생성합니다. 이를 통해 함수형 프로그래밍은 상태를 변경하는 대신, 새로운 데이터를 생성하여 원하는 결과를 도출할 수 있습니다.

결론

함수형 프로그래밍에서는 액션, 계산, 데이터의 개념이 중요합니다. 액션을 최소화하고, 대신에 순수 함수를 사용하여 안정적인 프로그램을 작성하며, 계산과 데이터를 함수로 처리하여 복잡한 계산을 간단하게 처리합니다. 이를 통해 함수형 프로그래밍은 상태를 변경하는 대신, 새로운 데이터를 생성하여 원하는 결과를 도출하는 프로그래밍 패러다임입니다.

This post is licensed under CC BY 4.0 by the author.

글또 다짐

[함수형 프로그래밍] 2. 액션에서 계산 분리하기

Comments powered by Disqus.