<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>개념 이해 on Advanced Beginner</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/</link><description>Recent content in 개념 이해 on Advanced Beginner</description><generator>Hugo</generator><language>ko-KR</language><managingEditor>d8lzz1gpw@mozmail.com (kimbenji)</managingEditor><webMaster>d8lzz1gpw@mozmail.com (kimbenji)</webMaster><lastBuildDate>Mon, 23 Mar 2026 19:08:15 +0900</lastBuildDate><atom:link href="https://advanced-beginner.github.io/ko/docs/scala/concepts/index.xml" rel="self" type="application/rss+xml"/><item><title>기본 문법</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/basics/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/basics/</guid><description>&lt;h2 id="전체-비유-건축-자재-선택"&gt;전체 비유: 건축 자재 선택&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ea%b1%b4%ec%b6%95-%ec%9e%90%ec%9e%ac-%ec%84%a0%ed%83%9d"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Scala의 기본 문법을 &lt;strong&gt;건축 자재 선택&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;건축 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;콘크리트 (영구 고정)&lt;/td&gt;
 &lt;td&gt;val (불변)&lt;/td&gt;
 &lt;td&gt;한 번 정하면 변경 불가&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;이동식 파티션&lt;/td&gt;
 &lt;td&gt;var (가변)&lt;/td&gt;
 &lt;td&gt;필요시 재배치 가능&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;조립식 자재&lt;/td&gt;
 &lt;td&gt;lazy val&lt;/td&gt;
 &lt;td&gt;필요할 때 조립&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;건물 설계도&lt;/td&gt;
 &lt;td&gt;타입 시스템&lt;/td&gt;
 &lt;td&gt;구조적 안전성 보장&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;자동 측량&lt;/td&gt;
 &lt;td&gt;타입 추론&lt;/td&gt;
 &lt;td&gt;컴파일러가 치수 계산&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;모듈형 템플릿&lt;/td&gt;
 &lt;td&gt;문자열 보간&lt;/td&gt;
 &lt;td&gt;재사용 가능한 형식&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;건축 표준&lt;/td&gt;
 &lt;td&gt;타입 계층&lt;/td&gt;
 &lt;td&gt;일관된 호환성 규칙&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;이처럼 좋은 건물이 적절한 자재 선택에서 시작하듯, 좋은 Scala 코드는 올바른 변수 선언과 타입 활용에서 시작합니다.&lt;/p&gt;</description></item><item><title>제어 구조</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/control-structures/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/control-structures/</guid><description>&lt;h2 id="전체-비유-교통-시스템"&gt;전체 비유: 교통 시스템&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ea%b5%90%ed%86%b5-%ec%8b%9c%ec%8a%a4%ed%85%9c"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Scala의 제어 구조를 &lt;strong&gt;교통 시스템&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;교통 시스템 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;교차로 (갈림길 선택)&lt;/td&gt;
 &lt;td&gt;if 표현식&lt;/td&gt;
 &lt;td&gt;조건에 따라 경로 선택&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;순환버스 (정해진 경로 순회)&lt;/td&gt;
 &lt;td&gt;for 표현식&lt;/td&gt;
 &lt;td&gt;컬렉션 순회 및 변환&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;환승 연계 (A→B→C 연결)&lt;/td&gt;
 &lt;td&gt;for comprehension&lt;/td&gt;
 &lt;td&gt;다중 컬렉션 조합&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;정류장 안내 (목적지별 분류)&lt;/td&gt;
 &lt;td&gt;match 표현식&lt;/td&gt;
 &lt;td&gt;값/타입에 따른 분기&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;무한 루프선 (조건 만족까지)&lt;/td&gt;
 &lt;td&gt;while 루프&lt;/td&gt;
 &lt;td&gt;가변 상태 기반 반복&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;티켓 발권 (입력→출력)&lt;/td&gt;
 &lt;td&gt;표현식&lt;/td&gt;
 &lt;td&gt;모든 것이 값을 반환&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;이처럼 교통 시스템이 승객을 목적지로 안내하듯, 제어 구조는 데이터를 원하는 결과로 흐르게 합니다.&lt;/p&gt;</description></item><item><title>함수와 메서드</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/functions-methods/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/functions-methods/</guid><description>&lt;h2 id="전체-비유-요리사와-레시피"&gt;전체 비유: 요리사와 레시피&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ec%9a%94%eb%a6%ac%ec%82%ac%ec%99%80-%eb%a0%88%ec%8b%9c%ed%94%bc"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Scala의 함수와 메서드를 &lt;strong&gt;요리사와 레시피&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;요리 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;레시피 (조리법)&lt;/td&gt;
 &lt;td&gt;메서드 (def)&lt;/td&gt;
 &lt;td&gt;클래스에 소속된 동작 정의&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;레시피 카드 (전달 가능)&lt;/td&gt;
 &lt;td&gt;함수 값 (val)&lt;/td&gt;
 &lt;td&gt;저장/전달 가능한 동작&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;재료 손질법 전달&lt;/td&gt;
 &lt;td&gt;일급 함수&lt;/td&gt;
 &lt;td&gt;함수를 인자로 전달&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;소스 베이스 만들기&lt;/td&gt;
 &lt;td&gt;커링&lt;/td&gt;
 &lt;td&gt;기본 설정 후 변형&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;부분 조리 (반조리)&lt;/td&gt;
 &lt;td&gt;부분 적용&lt;/td&gt;
 &lt;td&gt;일부 재료만 먼저 적용&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;재료 → 요리 변환&lt;/td&gt;
 &lt;td&gt;함수 타입&lt;/td&gt;
 &lt;td&gt;입력 → 출력 관계&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;같은 과정 반복&lt;/td&gt;
 &lt;td&gt;재귀&lt;/td&gt;
 &lt;td&gt;자기 자신 호출&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;이처럼 요리사가 레시피를 조합하여 새로운 요리를 만들듯, Scala에서는 함수를 조합하여 복잡한 로직을 구성합니다.&lt;/p&gt;</description></item><item><title>클래스와 객체</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/classes-objects/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/classes-objects/</guid><description>&lt;h2 id="전체-비유-회사-조직도"&gt;전체 비유: 회사 조직도&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ed%9a%8c%ec%82%ac-%ec%a1%b0%ec%a7%81%eb%8f%84"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Scala의 클래스, 객체, 트레이트를 &lt;strong&gt;회사 조직도&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;회사 조직 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;직원 (여러 명 가능)&lt;/td&gt;
 &lt;td&gt;class&lt;/td&gt;
 &lt;td&gt;인스턴스를 여러 개 생성 가능&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;CEO (한 명만)&lt;/td&gt;
 &lt;td&gt;object (싱글톤)&lt;/td&gt;
 &lt;td&gt;프로그램에서 단 하나만 존재&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;비서실 (직원 보조)&lt;/td&gt;
 &lt;td&gt;컴패니언 객체&lt;/td&gt;
 &lt;td&gt;클래스의 정적 멤버 역할&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;역할/자격증 (조합 가능)&lt;/td&gt;
 &lt;td&gt;trait&lt;/td&gt;
 &lt;td&gt;여러 개 믹스인 가능&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;부서 템플릿&lt;/td&gt;
 &lt;td&gt;abstract class&lt;/td&gt;
 &lt;td&gt;상속받아 구체화&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;직급 체계&lt;/td&gt;
 &lt;td&gt;상속&lt;/td&gt;
 &lt;td&gt;extends로 확장&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;공개/비공개 정보&lt;/td&gt;
 &lt;td&gt;접근 제어자&lt;/td&gt;
 &lt;td&gt;private, protected&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;이처럼 회사에서 다양한 역할이 조합되어 조직을 구성하듯, Scala에서는 클래스, 객체, 트레이트가 조합되어 프로그램을 구성합니다.&lt;/p&gt;</description></item><item><title>케이스 클래스</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/case-classes/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/case-classes/</guid><description>&lt;h2 id="전체-비유-공식-서류-양식"&gt;전체 비유: 공식 서류 양식&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ea%b3%b5%ec%8b%9d-%ec%84%9c%eb%a5%98-%ec%96%91%ec%8b%9d"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;케이스 클래스를 &lt;strong&gt;공식 서류 양식&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;서류 양식 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;양식 칸 (이름, 주민번호)&lt;/td&gt;
 &lt;td&gt;필드 (val)&lt;/td&gt;
 &lt;td&gt;자동으로 읽기 전용&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;양식 복사 (일부 수정)&lt;/td&gt;
 &lt;td&gt;copy 메서드&lt;/td&gt;
 &lt;td&gt;일부 필드만 변경한 복사본&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;동일 양식 비교&lt;/td&gt;
 &lt;td&gt;equals/hashCode&lt;/td&gt;
 &lt;td&gt;내용으로 동등성 비교&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;양식 번호 부여&lt;/td&gt;
 &lt;td&gt;apply&lt;/td&gt;
 &lt;td&gt;new 없이 생성&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;양식에서 정보 추출&lt;/td&gt;
 &lt;td&gt;unapply&lt;/td&gt;
 &lt;td&gt;패턴 매칭으로 분해&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;양식 인쇄&lt;/td&gt;
 &lt;td&gt;toString&lt;/td&gt;
 &lt;td&gt;읽기 좋은 문자열 표현&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;양식 종류 (신청서/계약서)&lt;/td&gt;
 &lt;td&gt;sealed + ADT&lt;/td&gt;
 &lt;td&gt;닫힌 타입 계층&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;이처럼 공식 서류가 불변하고 복사/비교/추출이 용이하듯, 케이스 클래스는 불변 데이터 모델링에 최적화되어 있습니다.&lt;/p&gt;</description></item><item><title>패턴 매칭</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/pattern-matching/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/pattern-matching/</guid><description>&lt;h2 id="전체-비유-우편-분류-센터"&gt;전체 비유: 우편 분류 센터&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ec%9a%b0%ed%8e%b8-%eb%b6%84%eb%a5%98-%ec%84%bc%ed%84%b0"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;패턴 매칭을 &lt;strong&gt;우편 분류 센터&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;우편 분류 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;우편번호로 분류&lt;/td&gt;
 &lt;td&gt;리터럴 패턴&lt;/td&gt;
 &lt;td&gt;정확한 값 매칭&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;크기/무게로 분류&lt;/td&gt;
 &lt;td&gt;타입 패턴&lt;/td&gt;
 &lt;td&gt;런타임 타입 검사&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;내용물 확인&lt;/td&gt;
 &lt;td&gt;케이스 클래스 패턴&lt;/td&gt;
 &lt;td&gt;구조 분해&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;조건부 특송&lt;/td&gt;
 &lt;td&gt;가드 (if)&lt;/td&gt;
 &lt;td&gt;추가 조건 검사&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;수취인 정보 추출&lt;/td&gt;
 &lt;td&gt;변수 바인딩&lt;/td&gt;
 &lt;td&gt;값 추출&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;기타 분류함&lt;/td&gt;
 &lt;td&gt;와일드카드 (_)&lt;/td&gt;
 &lt;td&gt;기본값 처리&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;스티커 부착 + 분류&lt;/td&gt;
 &lt;td&gt;@ 바인딩&lt;/td&gt;
 &lt;td&gt;전체+부분 동시 접근&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;분류 규칙 정의&lt;/td&gt;
 &lt;td&gt;추출자 (unapply)&lt;/td&gt;
 &lt;td&gt;커스텀 패턴&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;이처럼 우편물을 다양한 기준으로 분류하고 정보를 추출하듯, 패턴 매칭은 값을 분석하고 분기합니다.&lt;/p&gt;</description></item><item><title>컬렉션</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/collections/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/collections/</guid><description>&lt;h2 id="전체-비유-도서관-시스템"&gt;전체 비유: 도서관 시스템&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%eb%8f%84%ec%84%9c%ea%b4%80-%ec%8b%9c%ec%8a%a4%ed%85%9c"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Scala 컬렉션을 &lt;strong&gt;도서관&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;도서관 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;특성&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;서가의 책 순서&lt;/td&gt;
 &lt;td&gt;Seq (시퀀스)&lt;/td&gt;
 &lt;td&gt;순서가 있는 컬렉션&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;책장별 책 나열&lt;/td&gt;
 &lt;td&gt;List (연결 리스트)&lt;/td&gt;
 &lt;td&gt;앞에서 빠른 추가/제거&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;도서 번호 색인&lt;/td&gt;
 &lt;td&gt;Vector (인덱스 시퀀스)&lt;/td&gt;
 &lt;td&gt;랜덤 접근 최적화&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;등록된 회원 명단&lt;/td&gt;
 &lt;td&gt;Set (집합)&lt;/td&gt;
 &lt;td&gt;중복 없는 고유 요소&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;도서 목록 카탈로그&lt;/td&gt;
 &lt;td&gt;Map (맵)&lt;/td&gt;
 &lt;td&gt;ISBN → 도서 정보 매핑&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;보존 서고 (원본 보관)&lt;/td&gt;
 &lt;td&gt;불변 컬렉션&lt;/td&gt;
 &lt;td&gt;원본 변경 없이 새 복사본 생성&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;열람실 책상 (임시 작업)&lt;/td&gt;
 &lt;td&gt;가변 컬렉션&lt;/td&gt;
 &lt;td&gt;성능상 필요시에만 사용&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;도서관에서 책의 순서, 검색 방법, 보관 정책이 중요하듯이, 컬렉션에서도 데이터의 구조와 접근 방식이 프로그램 설계의 핵심입니다.&lt;/p&gt;</description></item><item><title>고차 함수</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/higher-order-functions/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/higher-order-functions/</guid><description>&lt;h2 id="전체-비유-식품-가공-공장"&gt;전체 비유: 식품 가공 공장&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ec%8b%9d%ed%92%88-%ea%b0%80%ea%b3%b5-%ea%b3%b5%ec%9e%a5"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;고차 함수를 &lt;strong&gt;식품 가공 공장의 생산 라인&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;공장 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;재료 선별기&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;filter&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;조건에 맞는 요소만 통과&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;가공 기계&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;map&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;각 요소를 변환&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;포장 → 개봉 기계&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;flatMap&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;변환 후 평탄화&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;최종 계량기&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;fold&lt;/code&gt;/&lt;code&gt;reduce&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;모든 요소를 하나로 축약&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;분류 컨베이어&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;partition&lt;/code&gt;/&lt;code&gt;groupBy&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;조건에 따라 분류&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;기계 연결&lt;/td&gt;
 &lt;td&gt;함수 합성 (&lt;code&gt;andThen&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;여러 변환을 연결&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;기계 설정&lt;/td&gt;
 &lt;td&gt;커링&lt;/td&gt;
 &lt;td&gt;일부 파라미터 미리 고정&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;기계 조작법 전달&lt;/td&gt;
 &lt;td&gt;함수를 인자로&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;어떻게&amp;rdquo; 처리할지 지정&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;공장에서 &lt;strong&gt;기계(함수)를 조립하여 생산 라인(파이프라인)을 구성&lt;/strong&gt;하듯이, 고차 함수는 작은 함수들을 조합하여 복잡한 데이터 처리를 수행합니다. 핵심은 &lt;strong&gt;&amp;ldquo;무엇을&amp;rdquo; 처리할지와 &amp;ldquo;어떻게&amp;rdquo; 처리할지를 분리&lt;/strong&gt;하는 것입니다.&lt;/p&gt;</description></item><item><title>제네릭</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/generics/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/generics/</guid><description>&lt;h2 id="전체-비유-만능-수납함"&gt;전체 비유: 만능 수납함&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%eb%a7%8c%eb%8a%a5-%ec%88%98%eb%82%a9%ed%95%a8"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;제네릭을 &lt;strong&gt;만능 수납함 시스템&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;수납함 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;규격화된 수납함&lt;/td&gt;
 &lt;td&gt;제네릭 클래스 &lt;code&gt;Box[A]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;어떤 타입이든 담을 수 있는 컨테이너&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;책 전용&amp;rdquo; 라벨&lt;/td&gt;
 &lt;td&gt;타입 매개변수 &lt;code&gt;A&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;담을 내용물의 타입 지정&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;도서류 이하만&amp;rdquo; 규칙&lt;/td&gt;
 &lt;td&gt;상한 경계 &lt;code&gt;A &amp;lt;: Book&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;허용 타입 범위 제한&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;인쇄물 이상만&amp;rdquo; 규칙&lt;/td&gt;
 &lt;td&gt;하한 경계 &lt;code&gt;A &amp;gt;: Paper&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;최소 타입 요구사항&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;무게 측정 가능&amp;rdquo; 조건&lt;/td&gt;
 &lt;td&gt;컨텍스트 경계 &lt;code&gt;A : Weighable&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;특정 기능 보유 요구&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;빈 수납함&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;None&lt;/code&gt;, &lt;code&gt;List.empty[A]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;명시적 타입 필요&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;수납함에 라벨을 붙여 &lt;strong&gt;어떤 물건을 담을 수 있는지 명시&lt;/strong&gt;하듯이, 제네릭은 컴파일 시점에 타입을 검사하여 &lt;strong&gt;잘못된 타입의 데이터가 들어가는 것을 방지&lt;/strong&gt;합니다.&lt;/p&gt;</description></item><item><title>For Comprehension</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/for-comprehensions/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/for-comprehensions/</guid><description>&lt;h2 id="전체-비유-조립-라인"&gt;전체 비유: 조립 라인&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ec%a1%b0%eb%a6%bd-%eb%9d%bc%ec%9d%b8"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;For comprehension을 &lt;strong&gt;공장 조립 라인&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;조립 라인 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;부품 공급 컨베이어&lt;/td&gt;
 &lt;td&gt;생성자 (&lt;code&gt;&amp;lt;-&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;데이터 소스에서 값 추출&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;품질 검사 스테이션&lt;/td&gt;
 &lt;td&gt;가드 (&lt;code&gt;if&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;조건에 맞는 값만 통과&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;조립 작업대&lt;/td&gt;
 &lt;td&gt;값 정의 (&lt;code&gt;=&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;중간 계산 결과 저장&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;완제품 출하&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;yield&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;최종 결과 생성&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;여러 라인 합류&lt;/td&gt;
 &lt;td&gt;다중 생성자&lt;/td&gt;
 &lt;td&gt;여러 소스의 조합&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;불량품 → 라인 정지&lt;/td&gt;
 &lt;td&gt;None/Left&lt;/td&gt;
 &lt;td&gt;실패 시 즉시 중단&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;조립 라인에서 부품이 순차적으로 가공되듯이, for comprehension에서는 각 단계가 이전 단계의 결과에 의존합니다. &lt;strong&gt;불량품(None/Left)이 발견되면 전체 라인이 멈추는 것&lt;/strong&gt;이 핵심입니다.&lt;/p&gt;</description></item><item><title>Implicit / Given</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/implicits/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/implicits/</guid><description>&lt;h2 id="전체-비유-개인-비서"&gt;전체 비유: 개인 비서&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ea%b0%9c%ec%9d%b8-%eb%b9%84%ec%84%9c"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;암시적 기능을 &lt;strong&gt;개인 비서 시스템&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;비서 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;비서가 자동으로 자료 준비&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;given&lt;/code&gt;/&lt;code&gt;implicit val&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;필요한 값을 자동 제공&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;비서에게 부탁해&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;using&lt;/code&gt;/&lt;code&gt;implicit&lt;/code&gt; 매개변수&lt;/td&gt;
 &lt;td&gt;암시적으로 값 요청&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;비서의 스킬 확장&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;extension&lt;/code&gt; 메서드&lt;/td&gt;
 &lt;td&gt;기존 타입에 기능 추가&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;비서 유형별 전문 서비스&lt;/td&gt;
 &lt;td&gt;타입 클래스&lt;/td&gt;
 &lt;td&gt;타입별 맞춤 동작&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;비서 찾기 순서&lt;/td&gt;
 &lt;td&gt;암시적 범위&lt;/td&gt;
 &lt;td&gt;현재 스코프 → 컴패니언&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;비서 고용&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;import ... given&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;암시적 인스턴스 도입&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;비서가 &lt;strong&gt;당신이 말하지 않아도 필요한 것을 준비&lt;/strong&gt;하듯이, 암시적 기능은 컴파일러가 필요한 값을 자동으로 찾아서 전달합니다. 핵심은 **명확한 규칙(타입)**에 따라 적절한 값을 선택하는 것입니다.&lt;/p&gt;</description></item><item><title>타입 클래스</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/type-classes/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/type-classes/</guid><description>&lt;h2 id="전체-비유-만능-어댑터-시스템"&gt;전체 비유: 만능 어댑터 시스템&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%eb%a7%8c%eb%8a%a5-%ec%96%b4%eb%8c%91%ed%84%b0-%ec%8b%9c%ec%8a%a4%ed%85%9c"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;타입 클래스를 &lt;strong&gt;전자기기 어댑터 시스템&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;어댑터 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;어댑터 규격 (USB-C 등)&lt;/td&gt;
 &lt;td&gt;타입 클래스 (&lt;code&gt;trait Show[A]&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;기능의 인터페이스 정의&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;특정 기기용 어댑터&lt;/td&gt;
 &lt;td&gt;인스턴스 (&lt;code&gt;given Show[Int]&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;특정 타입에 대한 구현&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;어댑터 사용 포트&lt;/td&gt;
 &lt;td&gt;API (&lt;code&gt;def show[A: Show]&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;타입 클래스를 사용하는 메서드&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;어댑터 연결&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;extension&lt;/code&gt; 메서드&lt;/td&gt;
 &lt;td&gt;타입에 메서드 추가&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;기기 본체 변경 불필요&lt;/td&gt;
 &lt;td&gt;기존 타입 수정 없음&lt;/td&gt;
 &lt;td&gt;외부에서 기능 추가&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;여러 어댑터 선택&lt;/td&gt;
 &lt;td&gt;여러 인스턴스 정의&lt;/td&gt;
 &lt;td&gt;상황별 다른 동작&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;기기 본체를 분해하지 않고 &lt;strong&gt;어댑터만 연결하면 새 기능을 사용&lt;/strong&gt;할 수 있듯이, 타입 클래스는 기존 타입을 수정하지 않고 새로운 기능을 추가합니다. 핵심은 &lt;strong&gt;&amp;ldquo;어떤 기능이 필요한지&amp;quot;와 &amp;ldquo;어떻게 구현할지&amp;quot;를 분리&lt;/strong&gt;하는 것입니다.&lt;/p&gt;</description></item><item><title>공변성 / 반공변성</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/variance/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/variance/</guid><description>&lt;h2 id="전체-비유-물류-창고-시스템"&gt;전체 비유: 물류 창고 시스템&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%eb%ac%bc%eb%a5%98-%ec%b0%bd%ea%b3%a0-%ec%8b%9c%ec%8a%a4%ed%85%9c"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;변성을 &lt;strong&gt;물류 창고 시스템&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;물류 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;출고 전용 창고&lt;/td&gt;
 &lt;td&gt;공변 (&lt;code&gt;+A&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;생산자 - 값을 꺼내기만 함&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;입고 전용 창고&lt;/td&gt;
 &lt;td&gt;반공변 (&lt;code&gt;-A&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;소비자 - 값을 넣기만 함&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;입출고 창고&lt;/td&gt;
 &lt;td&gt;무공변 (&lt;code&gt;A&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;양방향 - 넣고 꺼내기 모두&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;개 사육장 → 동물원&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;List[Dog] &amp;lt;: List[Animal]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;더 넓은 곳으로 이동 가능&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;동물 핸들러 → 개 핸들러&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Handler[Animal] &amp;lt;: Handler[Dog]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;더 일반적인 것이 더 유용&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;물류에서 &lt;strong&gt;출고 전용 창고는 큰 카테고리로 물건을 보낼 수 있고&lt;/strong&gt;, &lt;strong&gt;입고 전용 창고는 작은 카테고리의 물건도 받을 수 있습니다&lt;/strong&gt;. 변성은 이런 물류 흐름의 타입 안전한 규칙입니다.&lt;/p&gt;</description></item><item><title>고급 타입 시스템</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/type-system-advanced/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/type-system-advanced/</guid><description>&lt;h2 id="전체-비유-건축-설계-시스템"&gt;전체 비유: 건축 설계 시스템&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ea%b1%b4%ec%b6%95-%ec%84%a4%ea%b3%84-%ec%8b%9c%ec%8a%a4%ed%85%9c"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;고급 타입 시스템을 &lt;strong&gt;건축 설계 규칙&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;건축 설계 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;거실 또는 침실&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;Union Type (&lt;code&gt;A | B&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;여러 타입 중 하나&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;내진 설계 + 방음 설계&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;Intersection (&lt;code&gt;A &amp;amp; B&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;여러 조건 동시 충족&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;비공개 내부 설계도&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;Opaque Type&lt;/td&gt;
 &lt;td&gt;외부에 구현 숨김&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;조건부 자재 선택&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;Match Type&lt;/td&gt;
 &lt;td&gt;타입 레벨 조건 분기&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;자재 변환 규칙&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;Type Lambda&lt;/td&gt;
 &lt;td&gt;타입 생성자 매핑&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;방 크기에 따른 자재&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;Dependent Type&lt;/td&gt;
 &lt;td&gt;값에 따른 타입 결정&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;건축에서 &lt;strong&gt;설계 규칙이 안전한 건물을 보장&lt;/strong&gt;하듯이, 고급 타입 시스템은 컴파일 타임에 더 정밀한 제약을 표현하여 &lt;strong&gt;런타임 오류를 사전에 방지&lt;/strong&gt;합니다.&lt;/p&gt;</description></item><item><title>매크로와 메타프로그래밍</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/macros-metaprogramming/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/macros-metaprogramming/</guid><description>&lt;h2 id="전체-비유-3d-프린터-공장"&gt;전체 비유: 3D 프린터 공장&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-3d-%ed%94%84%eb%a6%b0%ed%84%b0-%ea%b3%b5%ec%9e%a5"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;메타프로그래밍을 &lt;strong&gt;3D 프린터가 있는 공장&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;3D 프린터 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;도면 임베딩&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;inline&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;코드를 호출 지점에 직접 삽입&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;조건부 부품 선택&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;inline if/match&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;컴파일 타임 조건 분기&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;설계 검증 시스템&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;error&lt;/code&gt;, &lt;code&gt;constValue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;컴파일 타임 검증&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;3D 프린터 (부품 생성)&lt;/td&gt;
 &lt;td&gt;매크로 (&lt;code&gt;${ }&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;컴파일 타임 코드 생성&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;설계도 원본&lt;/td&gt;
 &lt;td&gt;인용 (&lt;code&gt;'{ }&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;런타임 코드 표현&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;프린터 명령어&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Expr[T]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;타입 안전한 코드 조각&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;3D 프린터가 &lt;strong&gt;설계도(인용)를 받아 실제 부품(코드)을 출력&lt;/strong&gt;하듯이, 매크로는 컴파일 타임에 코드를 분석하고 새로운 코드를 생성합니다. 핵심은 &lt;strong&gt;런타임 전에 모든 준비를 마치는 것&lt;/strong&gt;입니다.&lt;/p&gt;</description></item><item><title>동시성</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/concurrency/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/concurrency/</guid><description>&lt;h2 id="전체-비유-레스토랑-주방"&gt;전체 비유: 레스토랑 주방&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%eb%a0%88%ec%8a%a4%ed%86%a0%eb%9e%91-%ec%a3%bc%eb%b0%a9"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Scala 동시성을 &lt;strong&gt;레스토랑 주방&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;레스토랑 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;주문서&lt;/td&gt;
 &lt;td&gt;Future&lt;/td&gt;
 &lt;td&gt;비동기 계산의 결과를 나타내는 약속&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;주방장들&lt;/td&gt;
 &lt;td&gt;ExecutionContext&lt;/td&gt;
 &lt;td&gt;작업을 실행하는 스레드 풀&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;요리 단계 연결&lt;/td&gt;
 &lt;td&gt;flatMap/map&lt;/td&gt;
 &lt;td&gt;순차적 비동기 작업 연결&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;여러 요리 동시 조리&lt;/td&gt;
 &lt;td&gt;병렬 Future&lt;/td&gt;
 &lt;td&gt;독립적 작업의 동시 실행&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;요리 완료 알림벨&lt;/td&gt;
 &lt;td&gt;Promise&lt;/td&gt;
 &lt;td&gt;외부에서 결과를 설정&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;첫 번째 완성 요리&lt;/td&gt;
 &lt;td&gt;firstCompletedOf&lt;/td&gt;
 &lt;td&gt;가장 먼저 완료되는 작업&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;모든 요리 완성 대기&lt;/td&gt;
 &lt;td&gt;sequence&lt;/td&gt;
 &lt;td&gt;모든 Future 완료 대기&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;레스토랑에서 여러 주방장이 동시에 요리하듯이, Future를 사용하면 여러 작업을 동시에 처리할 수 있습니다. 중요한 것은 &lt;strong&gt;작업 간의 의존성을 파악&lt;/strong&gt;하여 순차/병렬 실행을 올바르게 선택하는 것입니다.&lt;/p&gt;</description></item><item><title>함수형 프로그래밍 패턴</title><link>https://advanced-beginner.github.io/ko/docs/scala/concepts/functional-patterns/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/scala/concepts/functional-patterns/</guid><description>&lt;h2 id="전체-비유-레고-블록-조립"&gt;전체 비유: 레고 블록 조립&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%eb%a0%88%ea%b3%a0-%eb%b8%94%eb%a1%9d-%ec%a1%b0%eb%a6%bd"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;함수형 프로그래밍 패턴을 &lt;strong&gt;레고 블록 조립&lt;/strong&gt;에 비유하면 이해하기 쉽습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;레고 비유&lt;/th&gt;
 &lt;th&gt;Scala 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;블록의 표준 연결부&lt;/td&gt;
 &lt;td&gt;타입 시그니처&lt;/td&gt;
 &lt;td&gt;조합 가능성 보장&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;같은 블록 → 같은 결과&lt;/td&gt;
 &lt;td&gt;참조 투명성&lt;/td&gt;
 &lt;td&gt;예측 가능한 동작&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;원본 블록 보존&lt;/td&gt;
 &lt;td&gt;불변성&lt;/td&gt;
 &lt;td&gt;부수 효과 없음&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;블록 색 변환기&lt;/td&gt;
 &lt;td&gt;Functor (map)&lt;/td&gt;
 &lt;td&gt;내용물만 변환, 구조 유지&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;블록 연결기&lt;/td&gt;
 &lt;td&gt;Monad (flatMap)&lt;/td&gt;
 &lt;td&gt;순차적 조립 연결&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;비어 있음&amp;rdquo; 표시 블록&lt;/td&gt;
 &lt;td&gt;Option&lt;/td&gt;
 &lt;td&gt;값의 유무 표현&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;오류 라벨&amp;rdquo; 블록&lt;/td&gt;
 &lt;td&gt;Either&lt;/td&gt;
 &lt;td&gt;성공/실패 정보 포함&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;블록 조립 설명서&lt;/td&gt;
 &lt;td&gt;for comprehension&lt;/td&gt;
 &lt;td&gt;조립 순서 기술&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;레고를 조립할 때 &lt;strong&gt;표준 연결부가 있어야 어떤 블록이든 연결&lt;/strong&gt;할 수 있듯이, 함수형 프로그래밍에서는 Functor, Monad 같은 추상화가 다양한 타입을 일관되게 조합할 수 있게 해줍니다.&lt;/p&gt;</description></item></channel></rss>