Skip to main content

Functional Programming

Lập trình hàm là paradigm tập trung vào pure functions và immutable data.

Nguyên lý cốt lõi​

Pure Functions​

Cùng đầu vào → cùng đầu ra, không side effect.

# Pure
def add(a, b): return a + b

# Impure (có side effect)
def add_to_total(x):
global total
total += x

Immutability​

Không thay đổi dữ liệu gốc, tạo bản sao mới.

# Thay đổi trực tiếp (impure)
numbers.append(5)

# Tạo mới (pure)
new_numbers = [*numbers, 5]

Higher-Order Functions​

Hàm nhận hàm khác làm tham số hoặc trả về hàm.

map(lambda x: x * 2, [1, 2, 3])
filter(lambda x: x > 0, [-1, 2, -3, 4])
reduce(lambda a, b: a + b, [1, 2, 3, 4])

Lợi ích​

  • Dễ test (pure function = deterministic)
  • Dễ debug (không side effect bất ngờ)
  • Dễ parallel processing
  • Code ngắn gọn, dễ đọc