math
CHAPTER 4 / 15
읽기 약 2분
FUNCTION
함수의 수학: f(x) = 코드의 function
핵심 개념
수학 함수 f(x) = 2x + 1과 코드 function은 동일 개념. 정의역·치역·합성·순수성을 코드로 증명.
본문
1:1 대응
| 수학 | 코드 |
|---|---|
| f(x) = 2x + 1 | function f(x) { return 2*x + 1 } |
| f: ℝ → ℝ (정의역 → 치역) | input type → return type |
| f(g(x)) (합성 함수) | f(g(x)) (함수 체이닝) |
| 항등 함수 f(x) = x | (x) => x |
| 상수 함수 f(x) = 5 | () => 5 |
수학 함수를 코드로
def f(x):
"""f(x) = 2x + 1"""
return 2 * x + 1
# 정의역(도메인) 확인 — x는 실수
print(f(3)) # 7
print(f(0)) # 1
print(f(-2)) # -3
print(f(1.5)) # 4.0
# 치역(코도메인) 확인
# x가 모든 실수일 때 f(x)도 모든 실수 → 일대일 대응
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 10, 100)
y = [f(xi) for xi in x]
plt.plot(x, y)
plt.title("f(x) = 2x + 1")
plt.grid(True)
plt.show()합성 함수 = 함수 체이닝
def double(x):
return x * 2
def add_one(x):
return x + 1
# 수학: (f ∘ g)(x) = f(g(x))
# 코드: 함수 체이닝
result = add_one(double(3)) # double(3) = 6, add_one(6) = 7
print(result) # 7
# 함수형 스타일 — 합성 함수를 일급 객체로
def compose(f, g):
"""수학의 f ∘ g 를 반환하는 고차 함수"""
return lambda x: f(g(x))
double_then_add = compose(add_one, double)
print(double_then_add(3)) # 7
# 여러 함수 합성
from functools import reduce
def pipe(*fns):
"""fn1 → fn2 → ... 순서로 적용"""
return lambda x: reduce(lambda v, fn: fn(v), fns, x)
process = pipe(double, add_one, lambda x: x ** 2)
print(process(3)) # ((3*2)+1)² = 49순수 함수 — 수학적 함수의 본질
# ❌ 비순수 함수 (수학적 함수가 아님)
total = 0
def add_to_total(x):
global total
total += x # 외부 상태 변경 (side effect)
return total
# ✅ 순수 함수 (수학적 함수)
def add(a, b):
return a + b
# 같은 입력 → 항상 같은 출력
# 외부 상태 변경 없음
# 외부 상태에 의존 없음
# 순수 함수의 수학적 근거
# f: A × B → C 같은 형태 — 입력만으로 출력 결정
# 참조 투명성(Referential Transparency) 보장JavaScript 화살표 함수와 수학
// 수학 표기와 가장 가까운 형태
const f = (x) => 2 * x + 1;
const g = (x) => x + 1;
// 합성 함수
const compose = (f, g) => (x) => f(g(x));
const h = compose(f, g);
console.log(h(3)); // f(g(3)) = f(4) = 9
// 일급 객체 — 함수를 변수에 저장, 인자로 전달
const apply = (fn, x) => fn(x);
console.log(apply(f, 5)); // 11다음 챕터
CH.5 "좌표와 그래프" — 함수를 그래프로 시각화 + 1차 함수와 선형 회귀의 관계.
AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude
무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6
내 코드의 함수 100개를 분석해서 순수 함수 비율 + side effect 위치 + 리팩토링 우선순위를 만들어줘.
ChatGPT
무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro
함수형 프로그래밍 vs 객체지향에서 같은 문제를 푸는 방식 비교를 실전 예시로 알려줘.
Gemini
무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro
내 코드베이스 전체의 함수 의존 그래프를 분석해서 합성 패턴과 코어 함수 Top 10을 시각화해줘.
Grok
무료: Grok 4.1 / SuperGrok $30/mo
2026년 한국 시장에서 함수형 프로그래밍 실전 사용 비율과 인기 언어를 솔직히 알려줘.
⭐ 이것만 기억하세요
함수의 수학: f(x) = 코드의 function는 이 3가지만 확실히 잡으세요
1.수학 함수와 코드 함수는 같은 개념 — 입력 → 변환 → 출력 + 같은 입력은 항상 같은 출력
2.순수 함수(side effect 없음)는 수학적 함수의 본질을 코드로 구현한 것 — 디버깅·테스트가 쉬움
3.다음 챕터 CH.5에서 함수를 그래프로 시각화 + matplotlib로 직접 그려본다
공유하기
진행도 4 / 15