--- id: wiki-2026-0508-functional-programming title: Functional Programming category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [] duplicate_of: none source_trust_level: A confidence_score: 0.92 tags: [auto-consolidated, technical-documentation] raw_sources: [] last_reinforced: 2026-05-08 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Functional Programming|Functional Programming]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > "μƒνƒœ λ³€ν™” μ—†λŠ” μˆ˜ν•™μ  흐름: 데이터λ₯Ό 직접 μˆ˜μ •(Mutation)ν•˜μ§€ μ•Šκ³ , μž…λ ₯에 λŒ€ν•΄ 항상 같은 κ²°κ³Όλ₯Ό λ‚΄λ†“λŠ” 순수 ν•¨μˆ˜(Pure Function)λ“€μ˜ μ‘°ν•©μœΌλ‘œ μ•ˆμ •μ„± 있고 예츑 κ°€λŠ₯ν•œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ±΄μΆ•ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° μ² ν•™." --- > "λ°μ΄ν„°μ˜ μƒνƒœ λ³€ν™”λ₯Ό ν”Όν•˜κ³ , 순수 ν•¨μˆ˜λ“€μ˜ μ‘°ν•©μœΌλ‘œ κ²¬κ³ ν•œ λ‘œμ§μ„ μ‘°λ¦½ν•˜λΌ" β€” 계산을 μˆ˜ν•™μ  ν•¨μˆ˜μ˜ ν‰κ°€λ‘œ μ·¨κΈ‰ν•˜κ³  μƒνƒœ λ³€κ²½ 및 κ°€λ³€ 데이터λ₯Ό λ©€λ¦¬ν•˜μ—¬, 병렬 μ²˜λ¦¬μ— μœ λ¦¬ν•˜κ³  버그가 적은 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“œλŠ” ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized 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) λ¬Έμ œκ°€ λ°œμƒν•˜λŠ” λ©€ν‹°μ½”μ–΄ ν™˜κ²½κ³Ό λŒ€κ·œλͺ¨ λΆ„μ‚° μ‹œμŠ€ν…œμ—μ„œ 데이터 일관성을 μœ μ§€ν•˜λŠ” κ°€μž₯ κ°•λ ₯ν•œ 무기. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌**: κ³Όκ±°μ—λŠ” ν•˜λ“œμ›¨μ–΄ μžμ› λ‚­λΉ„(볡사 λΉ„μš© λ“±) λ•Œλ¬Έμ— 'λͺ…λ Ήν˜•/객체지ν–₯ μ •μ±…'이 μ••μŠΉν–ˆμœΌλ‚˜, ν˜„λŒ€ 정책은 병렬 μ—°μ‚°μ˜ μ€‘μš”μ„±κ³Ό μ†Œν”„νŠΈμ›¨μ–΄ λ³΅μž‘μ„± ν•΄κ²° μ •μ±… λ•Œλ¬Έμ— λͺ¨λ“  μ£Όλ₯˜ μ–Έμ–΄κ°€ ν•¨μˆ˜ν˜• νŠΉμ§•μ„ λ„μž…ν•˜λŠ” 'ν•˜μ΄λΈŒλ¦¬λ“œ ν•¨μš© μ •μ±…'으둜 μŠΉλ¦¬ν•¨(RL Update). - **μ •μ±… λ³€ν™”(RL Update)**: κ±°λŒ€ 데이터 νŒŒμ΄ν”„λΌμΈ μ •μ±…κ³Ό AI λͺ¨λΈμ˜ λ ˆμ΄μ–΄ μ—°μ‚° μ •μ±… μžμ²΄κ°€ κ±°λŒ€ν•œ ν•¨μˆ˜ 체인(Functional Chain) μ •μ±…μœΌλ‘œ μ„€κ³„λ˜μ–΄ 있으며, 이λ₯Ό μ„ μ–Έμ μœΌλ‘œ λ‹€λ£¨λŠ” λŠ₯λ ₯이 ν˜„λŒ€ 개발의 ν•„μˆ˜ 정책이 됨. --- - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** 객체지ν–₯(OOP)이 μœ μΌν•œ μ •λ‹΅μ΄λ˜ μ‹œλŒ€λ₯Ό μ§€λ‚˜, 데이터 슀트림 μ²˜λ¦¬μ™€ 비동기 ν”„λ‘œκ·Έλž˜λ°μ΄ μ€‘μš”ν•΄μ§€λ©΄μ„œ ν•¨μˆ˜ν˜• νŒ¨λŸ¬λ‹€μž„μ΄ λͺ¨λ“  μ£Όλ₯˜ μ–Έμ–΄(JS, Java, Python λ“±)에 κΉŠμˆ™μ΄ μΉ¨νˆ¬ν•¨. - **μ •μ±… λ³€ν™”:** Antigravity ν”„λ‘œμ νŠΈλŠ” μ—μ΄μ „νŠΈμ˜ 사고 흐름(Chain of Thought)을 μ²˜λ¦¬ν•˜λŠ” νŒŒμ΄ν”„λΌμΈ 섀계 μ‹œ, 각 단계λ₯Ό 순수 ν•¨μˆ˜λ‘œ μ •μ˜ν•˜μ—¬ μž¬ν˜„ κ°€λŠ₯μ„±κ³Ό μ•ˆμ •μ„±μ„ 확보함. ## πŸ”— 지식 μ—°κ²° (Graph) - [[클란 α„‹α…‘α„α…΅α„α…¦α†¨α„Žα…₯ (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 ## πŸ€– LLM ν™œμš© 힌트 (How to Use This Knowledge) **μ–Έμ œ 이 지식을 μ“°λŠ”κ°€:** - *(TODO)* **μ–Έμ œ μ“°λ©΄ μ•ˆ λ˜λŠ”κ°€:** - *(TODO)* ## πŸ§ͺ 검증 μƒνƒœ (Validation) - **정보 μƒνƒœ:** needs_review - **좜처 신뒰도:** A - **κ²€ν†  이유:** *(P-Reinforce Phase 1 μžλ™ μ •κ·œν™”. λ³Έλ¬Έ 검증 ν•„μš”.)* ## 🧬 쀑볡 검사 (Duplicate Check) - **κΈ°μ‘΄ μœ μ‚¬ λ¬Έμ„œ:** *(TODO: μΈλ±μ„œ ν΄λŸ¬μŠ€ν„° 리포트 μ°Έμ‘°)* - **처리 방식:** UPDATE (μžλ™ μ •κ·œν™”) - **처리 이유:** Phase 1 μ •κ·œν™” β€” μ˜› ν…œν”Œλ¦Ώ/λˆ„λ½ ν•„λ“œ 보강. ## πŸ•“ λ³€κ²½ 이λ ₯ (Changelog) | λ‚ μ§œ | λ³€κ²½ λ‚΄μš© | 처리 방식 | 신뒰도 | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 μ •κ·œν™” (frontmatter + 헀더 ν‘œμ€€ν™”) | UPDATE | A | ## πŸ’» μ½”λ“œ νŒ¨ν„΄ (Code Patterns) **νŒ¨ν„΄ 1:** *(TODO: 이 ν”„λ‘œμ νŠΈ μ»¨λ²€μ…˜ λ°˜μ˜ν•œ ꡬ쑰 μŠ€μΌˆλ ˆν†€)* ```text # TODO ``` ## πŸ€” μ˜μ‚¬κ²°μ • κΈ°μ€€ (Decision Criteria) **선택 Aλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **선택 Bλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **κΈ°λ³Έκ°’:** > *(TODO)* ## ❌ μ•ˆν‹°νŒ¨ν„΄ (Anti-Patterns) - **[μ•ˆν‹°νŒ¨ν„΄]:** *(TODO: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*