--- category: Unified tags: [auto-consolidated, technical-documentation] title: [[Functional Programming|Functional Programming]] last_updated: 2026-05-02 --- # [[Functional Programming|Functional Programming]] ## πŸ“Œ Brief Summary > "μƒνƒœ λ³€ν™” μ—†λŠ” μˆ˜ν•™μ  흐름: 데이터λ₯Ό 직접 μˆ˜μ •(Mutation)ν•˜μ§€ μ•Šκ³ , μž…λ ₯에 λŒ€ν•΄ 항상 같은 κ²°κ³Όλ₯Ό λ‚΄λ†“λŠ” 순수 ν•¨μˆ˜(Pure Function)λ“€μ˜ μ‘°ν•©μœΌλ‘œ μ•ˆμ •μ„± 있고 예츑 κ°€λŠ₯ν•œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ±΄μΆ•ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° μ² ν•™." --- > "λ°μ΄ν„°μ˜ μƒνƒœ λ³€ν™”λ₯Ό ν”Όν•˜κ³ , 순수 ν•¨μˆ˜λ“€μ˜ μ‘°ν•©μœΌλ‘œ κ²¬κ³ ν•œ λ‘œμ§μ„ μ‘°λ¦½ν•˜λΌ" β€” 계산을 μˆ˜ν•™μ  ν•¨μˆ˜μ˜ ν‰κ°€λ‘œ μ·¨κΈ‰ν•˜κ³  μƒνƒœ λ³€κ²½ 및 κ°€λ³€ 데이터λ₯Ό λ©€λ¦¬ν•˜μ—¬, 병렬 μ²˜λ¦¬μ— μœ λ¦¬ν•˜κ³  버그가 적은 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“œλŠ” ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„. ## πŸ“– Core Content ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°(Functional Programming)은 자료 처리λ₯Ό μˆ˜ν•™μ  ν•¨μˆ˜μ˜ κ³„μ‚°μœΌλ‘œ μ·¨κΈ‰ν•˜κ³  μƒνƒœμ™€ κ°€λ³€ 데이터λ₯Ό λ©€λ¦¬ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μž…λ‹ˆλ‹€. 1. **핡심 원칙**: * **Immutability (λΆˆλ³€μ„±)**: ν•œλ²ˆ μƒμ„±λœ λ°μ΄ν„°λŠ” λ°”κΎΈμ§€ μ•Šκ³ , λ³€ν™”κ°€ ν•„μš”ν•˜λ©΄ μƒˆλ‘œμš΄ 데이터λ₯Ό λ§Œλ“¦. (λ©€ν‹°μ½”μ–΄ ν™˜κ²½μ˜ μ•ˆμ „μ„± 확보) * **Pure Functions**: μ™ΈλΆ€ μƒνƒœμ— μ˜μ‘΄ν•˜μ§€ μ•Šκ³  였직 μž…λ ₯으둜만 κ²°κ³Όλ₯Ό 냄 (Side effect 제거). * **Higher-Order Functions**: ν•¨μˆ˜λ₯Ό κ°’μ²˜λŸΌ μ£Όκ³ λ°›μ•„ 둜직의 κ²°ν•©κ³Ό μž¬μ‚¬μš©μ„±μ„ κ·ΉλŒ€ν™” (Map, Filter, Reduce). 2. **μ™œ μ€‘μš”ν•œκ°€?**: * μ½”λ“œκ°€ κ°„κ²°ν•΄μ§€κ³  ν…ŒμŠ€νŠΈκ°€ μ••λ„μ μœΌλ‘œ μ‰¬μ›Œμ§€λ©°, λΆ„μ‚° μ»΄ν“¨νŒ…([[Distributed-Systems|Distributed-Systems]]) ν™˜κ²½μ—μ„œ 데이터 일관성을 지킀기에 μ΅œμ μž„. --- - **μΆ”μΆœλœ νŒ¨ν„΄:** "μ–΄λ–»κ²Œ(How)" 연산할지보닀 "무엇(What)"인지 μ •μ˜ν•˜κ³ , μž…λ ₯을 λ„£μœΌλ©΄ 항상 λ™μΌν•œ 좜λ ₯이 λ‚˜μ˜€λŠ” λΆˆλ³€μ„±(Immutability)κ³Ό μ°Έμ‘° 투λͺ…μ„±(Referential Transparency)을 μœ μ§€ν•˜λŠ” 선언적 μ½”λ”© νŒ¨ν„΄. - **핡심 κ°œλ…:** - **Pure Functions:** μ™ΈλΆ€ μƒνƒœλ₯Ό μ°Έμ‘°ν•˜κ±°λ‚˜ λ³€κ²½ν•˜μ§€ μ•ŠλŠ” ν•¨μˆ˜. ν…ŒμŠ€νŠΈμ™€ 디버깅이 맀우 쉬움. - **First-class Citizens:** ν•¨μˆ˜λ₯Ό λ³€μˆ˜μ— λ‹΄κ³ , 인자둜 λ„˜κΈ°κ³ , 결과둜 λ°˜ν™˜ν•  수 있음. - **Higher-order Functions:** ν•¨μˆ˜λ₯Ό νŒŒλΌλ―Έν„°λ‘œ λ°›κ±°λ‚˜ 결과둜 λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜ (map, filter, reduce λ“±). - **Immutability:** ν•œ 번 μƒμ„±λœ λ°μ΄ν„°λŠ” μˆ˜μ •ν•˜μ§€ μ•Šκ³  항상 μƒˆλ‘œμš΄ 데이터λ₯Ό μƒμ„±ν•˜μ—¬ 전달. - **의의:** λ™μ‹œμ„±(Concurrency) λ¬Έμ œκ°€ λ°œμƒν•˜λŠ” λ©€ν‹°μ½”μ–΄ ν™˜κ²½κ³Ό λŒ€κ·œλͺ¨ λΆ„μ‚° μ‹œμŠ€ν…œμ—μ„œ 데이터 일관성을 μœ μ§€ν•˜λŠ” κ°€μž₯ κ°•λ ₯ν•œ 무기. ## βš–οΈ Trade-offs & Caveats - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌**: κ³Όκ±°μ—λŠ” ν•˜λ“œμ›¨μ–΄ μžμ› λ‚­λΉ„(볡사 λΉ„μš© λ“±) λ•Œλ¬Έμ— 'λͺ…λ Ήν˜•/객체지ν–₯ μ •μ±…'이 μ••μŠΉν–ˆμœΌλ‚˜, ν˜„λŒ€ 정책은 병렬 μ—°μ‚°μ˜ μ€‘μš”μ„±κ³Ό μ†Œν”„νŠΈμ›¨μ–΄ λ³΅μž‘μ„± ν•΄κ²° μ •μ±… λ•Œλ¬Έμ— λͺ¨λ“  μ£Όλ₯˜ μ–Έμ–΄κ°€ ν•¨μˆ˜ν˜• νŠΉμ§•μ„ λ„μž…ν•˜λŠ” 'ν•˜μ΄λΈŒλ¦¬λ“œ ν•¨μš© μ •μ±…'으둜 μŠΉλ¦¬ν•¨(RL Update). - **μ •μ±… λ³€ν™”(RL Update)**: κ±°λŒ€ 데이터 νŒŒμ΄ν”„λΌμΈ μ •μ±…κ³Ό AI λͺ¨λΈμ˜ λ ˆμ΄μ–΄ μ—°μ‚° μ •μ±… μžμ²΄κ°€ κ±°λŒ€ν•œ ν•¨μˆ˜ 체인(Functional Chain) μ •μ±…μœΌλ‘œ μ„€κ³„λ˜μ–΄ 있으며, 이λ₯Ό μ„ μ–Έμ μœΌλ‘œ λ‹€λ£¨λŠ” λŠ₯λ ₯이 ν˜„λŒ€ 개발의 ν•„μˆ˜ 정책이 됨. --- - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** 객체지ν–₯(OOP)이 μœ μΌν•œ μ •λ‹΅μ΄λ˜ μ‹œλŒ€λ₯Ό μ§€λ‚˜, 데이터 슀트림 μ²˜λ¦¬μ™€ 비동기 ν”„λ‘œκ·Έλž˜λ°μ΄ μ€‘μš”ν•΄μ§€λ©΄μ„œ ν•¨μˆ˜ν˜• νŒ¨λŸ¬λ‹€μž„μ΄ λͺ¨λ“  μ£Όλ₯˜ μ–Έμ–΄(JS, Java, Python λ“±)에 κΉŠμˆ™μ΄ μΉ¨νˆ¬ν•¨. - **μ •μ±… λ³€ν™”:** Antigravity ν”„λ‘œμ νŠΈλŠ” μ—μ΄μ „νŠΈμ˜ 사고 흐름(Chain of Thought)을 μ²˜λ¦¬ν•˜λŠ” νŒŒμ΄ν”„λΌμΈ 섀계 μ‹œ, 각 단계λ₯Ό 순수 ν•¨μˆ˜λ‘œ μ •μ˜ν•˜μ—¬ μž¬ν˜„ κ°€λŠ₯μ„±κ³Ό μ•ˆμ •μ„±μ„ 확보함. ## πŸ”— Knowledge Connections - [[클란 α„‹α…‘α„α…΅α„α…¦α†¨α„Žα…₯ (Clean Architecture)|Clean-[[Architecture]]-TypeScript]], [[Distributed-Systems|Distributed-Systems]], [[Concurrent Programming|Concurrent Programming]], [[Logic|Logic]], [[Optimization|Optimization]] - **Modern Tech/Tools**: Haskell, Elixir, React (Functional Components), Rust, Ramda.js. --- --- - [[Determinism-in-Computing|Determinism-in-Computing]], [[Distributed-Computing|Distributed-Computing]], Software-Architecture-Patterns, [[Parallel-Computing|Parallel-Computing]] - **Raw Source:** 10_Wiki/Topics/AI/Functional-Programming.md