<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Understanding Concepts on Advanced Beginner</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/</link><description>Recent content in Understanding Concepts on Advanced Beginner</description><generator>Hugo</generator><language>en-US</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/en/docs/scala/concepts/index.xml" rel="self" type="application/rss+xml"/><item><title>Basic Syntax</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/basics/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/basics/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Target Audience&lt;/strong&gt;: Developers with experience in Java or other statically typed languages
&lt;strong&gt;Prerequisites&lt;/strong&gt;: Basic concepts of variables, functions, and classes
&lt;strong&gt;What you&amp;rsquo;ll learn&lt;/strong&gt;: Understand the difference between val/var, leverage the type system, and write clean code with string interpolation&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;val&lt;/strong&gt; (immutable) by default, &lt;strong&gt;var&lt;/strong&gt; (mutable) only when necessary&lt;/li&gt;
&lt;li&gt;Scala has powerful &lt;strong&gt;type inference&lt;/strong&gt; so you can omit type declarations most of the time&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;String interpolation&lt;/strong&gt; (&lt;code&gt;s&amp;quot;Hello, $name&amp;quot;&lt;/code&gt;) makes string composition simple&lt;/li&gt;
&lt;li&gt;Every value is an object — you can call methods like &lt;code&gt;1.toString&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;h4 id="why-learn-scalas-basic-syntax"&gt;Why Learn Scala&amp;rsquo;s Basic Syntax?&lt;a class="anchor" href="#why-learn-scalas-basic-syntax"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Scala is 100% compatible with Java while enabling you to write more concise and expressive code. You can write the same logic with less code than Java, and catch more errors at compile time.&lt;/p&gt;</description></item><item><title>Control Structures</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/control-structures/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/control-structures/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;Scala&amp;rsquo;s if, for, and match are all &lt;strong&gt;expressions&lt;/strong&gt; that return values&lt;/li&gt;
&lt;li&gt;for comprehensions concisely express collection transformations and monadic operations&lt;/li&gt;
&lt;li&gt;match is more powerful than Java&amp;rsquo;s switch, supporting type matching and guard conditions&lt;/li&gt;
&lt;li&gt;while is a statement, so avoid it in functional code&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Developers with experience in other languages like Java/Python
&lt;strong&gt;Prerequisites:&lt;/strong&gt; Scala basic syntax (variables, types)&lt;/p&gt;
&lt;p&gt;Scala&amp;rsquo;s control structures are &lt;strong&gt;expressions&lt;/strong&gt;. That is, all control structures return values. This is fundamentally different from statement-based control structures in languages like Java or C. The expression-based approach makes code more concise and functional.&lt;/p&gt;</description></item><item><title>Functions and Methods</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/functions-methods/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/functions-methods/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;In Scala, functions are &lt;strong&gt;first-class citizens&lt;/strong&gt; that can be stored in variables, passed as arguments, and returned as values&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Currying&lt;/strong&gt; implements a pattern of applying configuration values once and reusing them&lt;/li&gt;
&lt;li&gt;Methods (&lt;code&gt;def&lt;/code&gt;) belong to classes, while function values (&lt;code&gt;val&lt;/code&gt;) are suitable for passing/storing&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@tailrec&lt;/code&gt; ensures tail recursion optimization&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Java developers or those with OOP experience
&lt;strong&gt;Prerequisites:&lt;/strong&gt; Scala basic syntax, control structures&lt;/p&gt;
&lt;p&gt;In Scala, functions are first-class citizens. You can store functions in variables, pass them as arguments, and return them as values. This characteristic is the essence of functional programming and makes code more concise and reusable.&lt;/p&gt;</description></item><item><title>Classes and Objects</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/classes-objects/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/classes-objects/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Classes&lt;/strong&gt;: Write constructor parameters directly in the declaration to reduce boilerplate&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;object&lt;/strong&gt;: Singleton instances are supported at the language level&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Companion objects&lt;/strong&gt;: Replace static members with same-named objects as classes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traits&lt;/strong&gt;: Enjoy the benefits of multiple inheritance while avoiding the diamond problem&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Developers with Java/OOP experience
&lt;strong&gt;Prerequisites:&lt;/strong&gt; Scala basic syntax, functions and methods&lt;/p&gt;
&lt;p&gt;Scala supports both object-oriented and functional programming. Classes, objects, traits, and other OOP features can be used harmoniously with the functional paradigm. In particular, Scala&amp;rsquo;s object supports the singleton pattern at the language level, and traits maximize code reuse while solving multiple inheritance problems.&lt;/p&gt;</description></item><item><title>Case Classes</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/case-classes/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/case-classes/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;Case classes are special classes for &lt;strong&gt;immutable data modeling&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apply&lt;/code&gt;, &lt;code&gt;unapply&lt;/code&gt;, &lt;code&gt;copy&lt;/code&gt;, &lt;code&gt;equals&lt;/code&gt;, &lt;code&gt;hashCode&lt;/code&gt;, and &lt;code&gt;toString&lt;/code&gt; are automatically generated&lt;/li&gt;
&lt;li&gt;Define ADTs (Algebraic Data Types) with &lt;code&gt;sealed trait&lt;/code&gt; + case classes&lt;/li&gt;
&lt;li&gt;Show their true value when used with pattern matching&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Developers who have learned Scala basic syntax
&lt;strong&gt;Prerequisites:&lt;/strong&gt; Classes and objects, basic understanding of type system&lt;/p&gt;
&lt;p&gt;Case classes are special classes for &lt;strong&gt;immutable data modeling&lt;/strong&gt;. You can define data classes without boilerplate code. The compiler automatically generates useful methods like equals, hashCode, toString, and copy, so you can define data-centric classes very concisely. They show their true value especially when used with pattern matching.&lt;/p&gt;</description></item><item><title>Pattern Matching</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/pattern-matching/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/pattern-matching/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;Pattern matching is a powerful feature for analyzing value structures and extracting data&lt;/li&gt;
&lt;li&gt;Supports various patterns: literals, variables, types, tuples, case classes, sequences, and more&lt;/li&gt;
&lt;li&gt;Guards (&lt;code&gt;if&lt;/code&gt;) add conditions, &lt;code&gt;@&lt;/code&gt; binds the entire value&lt;/li&gt;
&lt;li&gt;Compiler checks exhaustiveness for &lt;code&gt;sealed&lt;/code&gt; types&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Developers familiar with basic Scala syntax
&lt;strong&gt;Prerequisites:&lt;/strong&gt; Case classes, basic type system&lt;/p&gt;
&lt;p&gt;Pattern matching is one of Scala&amp;rsquo;s most powerful features. It elegantly handles value structure analysis, data extraction, and conditional branching. Unlike Java&amp;rsquo;s switch statement, Scala&amp;rsquo;s match is an expression that returns a value and provides much richer functionality including type matching, destructuring, guard conditions, and more.&lt;/p&gt;</description></item><item><title>Collections</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/collections/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/collections/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;Scala uses &lt;strong&gt;immutable collections&lt;/strong&gt; by default (thread-safe, predictable)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;List&lt;/strong&gt; is fast for prepending, &lt;strong&gt;Vector&lt;/strong&gt; is fast for random access&lt;/li&gt;
&lt;li&gt;Built-in support for &lt;strong&gt;higher-order functions&lt;/strong&gt; like map, filter, fold&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Option&lt;/strong&gt; handles missing values type-safely instead of null&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Developers familiar with Java collections
&lt;strong&gt;Prerequisites:&lt;/strong&gt; Basic Scala syntax, functions and methods&lt;/p&gt;
&lt;p&gt;Scala&amp;rsquo;s collection library provides rich data structures optimized for functional programming. Immutable collections are the default, and a consistent API allows working with various data structures. Unlike Java collections, Scala collections have built-in support for higher-order functions like map, filter, and fold.&lt;/p&gt;</description></item><item><title>Higher-Order Functions</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/higher-order-functions/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/higher-order-functions/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Higher-order functions&lt;/strong&gt; are functions that take functions as arguments or return functions&lt;/li&gt;
&lt;li&gt;They separate &amp;ldquo;what&amp;rdquo; to do from &amp;ldquo;how&amp;rdquo; to do it, improving code reusability&lt;/li&gt;
&lt;li&gt;Process collections declaratively with map, filter, fold, etc.&lt;/li&gt;
&lt;li&gt;Implement advanced abstractions with currying, closures, and partial functions&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Developers interested in functional programming
&lt;strong&gt;Prerequisites:&lt;/strong&gt; Scala functions and methods, collection basics&lt;/p&gt;
&lt;p&gt;Higher-order functions are functions that take functions as arguments or return functions. As a core concept of functional programming, they increase code reusability and raise the level of abstraction.&lt;/p&gt;</description></item><item><title>Generics</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/generics/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/generics/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;Generics allow you to write &lt;strong&gt;type-safe and reusable code&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Upper bound (&lt;code&gt;A &amp;lt;: B&lt;/code&gt;): A is a subtype of B&lt;/li&gt;
&lt;li&gt;Lower bound (&lt;code&gt;A &amp;gt;: B&lt;/code&gt;): A is a supertype of B&lt;/li&gt;
&lt;li&gt;Context bound (&lt;code&gt;A : Ordering&lt;/code&gt;): Requires a type class instance&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Developers familiar with Java generics
&lt;strong&gt;Prerequisites:&lt;/strong&gt; Classes, traits, basic type system&lt;/p&gt;
&lt;p&gt;Generics allow you to write type-safe and reusable code. Through type parameters, you can define classes and methods that work with various types, while ensuring type safety at compile time.&lt;/p&gt;</description></item><item><title>For Comprehension</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/for-comprehensions/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/for-comprehensions/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;For comprehension is syntactic sugar for &lt;code&gt;flatMap&lt;/code&gt;, &lt;code&gt;map&lt;/code&gt;, and &lt;code&gt;withFilter&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Allows writing nested flatMap calls in a readable, declarative form&lt;/li&gt;
&lt;li&gt;Works with various monadic types including Option, Either, Future, and List&lt;/li&gt;
&lt;li&gt;Without yield, it only executes side effects (converted to foreach)&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Developers who understand higher-order functions
&lt;strong&gt;Prerequisites:&lt;/strong&gt; map, flatMap, and filter higher-order functions&lt;/p&gt;
&lt;p&gt;For Comprehension is syntactic sugar that elegantly expresses &lt;code&gt;flatMap&lt;/code&gt;, &lt;code&gt;map&lt;/code&gt;, and &lt;code&gt;withFilter&lt;/code&gt;. It allows you to write nested flatMap and map calls in a readable, declarative form, and works with various monadic types such as Option, Either, Future, and List.&lt;/p&gt;</description></item><item><title>Implicit / Given</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/implicits/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/implicits/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;Implicit features allow the compiler to automatically pass values or convert types&lt;/li&gt;
&lt;li&gt;Scala 2: &lt;code&gt;implicit&lt;/code&gt; / Scala 3: &lt;code&gt;given&lt;/code&gt;/&lt;code&gt;using&lt;/code&gt;/&lt;code&gt;extension&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Primarily used for &lt;strong&gt;type classes&lt;/strong&gt;, &lt;strong&gt;extension methods&lt;/strong&gt;, and &lt;strong&gt;context passing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Avoid implicit definitions for overly generic types (&lt;code&gt;String&lt;/code&gt;, &lt;code&gt;Int&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Developers familiar with higher-order functions and generics
&lt;strong&gt;Prerequisites:&lt;/strong&gt; For comprehensions, type parameters&lt;/p&gt;
&lt;p&gt;Implicit features are one of Scala&amp;rsquo;s most powerful capabilities. They allow the compiler to automatically pass values or convert types, reducing boilerplate code and increasing expressiveness. This covers both Scala 2&amp;rsquo;s &lt;code&gt;implicit&lt;/code&gt; and Scala 3&amp;rsquo;s &lt;code&gt;given&lt;/code&gt;/&lt;code&gt;using&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Type Classes</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/type-classes/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/type-classes/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;Type classes are a pattern for adding new functionality &lt;strong&gt;without modifying existing types&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Three components: &lt;strong&gt;type class&lt;/strong&gt; (trait), &lt;strong&gt;instances&lt;/strong&gt; (given), &lt;strong&gt;API&lt;/strong&gt; (extension)&lt;/li&gt;
&lt;li&gt;You can define multiple instances for the same type and choose based on context&lt;/li&gt;
&lt;li&gt;Show, Eq, Ordering, and Monoid are representative type classes&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Developers who understand Implicit/Given
&lt;strong&gt;Prerequisites:&lt;/strong&gt; Implicit features, generics&lt;/p&gt;
&lt;p&gt;Type classes are a pattern for adding new functionality to existing types. They enable polymorphism without inheritance and allow you to define new behavior without modifying existing types. Originating from Haskell, this pattern combines with Scala&amp;rsquo;s implicit features to provide powerful abstractions.&lt;/p&gt;</description></item><item><title>Covariance / Contravariance</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/variance/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/variance/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Covariant (+A)&lt;/strong&gt;: Producer role, &lt;code&gt;List[Dog] &amp;lt;: List[Animal]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contravariant (-A)&lt;/strong&gt;: Consumer role, &lt;code&gt;Printer[Animal] &amp;lt;: Printer[Dog]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Invariant (A)&lt;/strong&gt;: When both read/write are needed (default)&lt;/li&gt;
&lt;li&gt;Function is contravariant in input, covariant in output: &lt;code&gt;Function1[-A, +B]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Developers who understand generics
&lt;strong&gt;Prerequisites:&lt;/strong&gt; Type parameters, inheritance hierarchy&lt;/p&gt;
&lt;p&gt;Variance defines the subtyping relationship of type parameters. It determines how generic types behave in the inheritance hierarchy and is a core concept for writing type-safe generic code.&lt;/p&gt;</description></item><item><title>Advanced Type System</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/type-system-advanced/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/type-system-advanced/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Union Types (&lt;code&gt;|&lt;/code&gt;)&lt;/strong&gt;: One of several types, &lt;code&gt;Int | String&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intersection Types (&lt;code&gt;&amp;amp;&lt;/code&gt;)&lt;/strong&gt;: Satisfies all types, &lt;code&gt;A &amp;amp; B&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Opaque Types&lt;/strong&gt;: Type safety without runtime overhead&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Match Types&lt;/strong&gt;: Type-level pattern matching&lt;/li&gt;
&lt;li&gt;Scala 3-only features for more powerful type expression&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Scala developers who understand generics and variance
&lt;strong&gt;Prerequisites:&lt;/strong&gt; Type parameters, type bounds, variance&lt;/p&gt;
&lt;p&gt;Scala 3 provides an even more powerful and expressive type system. This document covers Scala 3&amp;rsquo;s new type features.&lt;/p&gt;</description></item><item><title>Macros and Metaprogramming</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/macros-metaprogramming/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/macros-metaprogramming/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;inline&lt;/strong&gt;: Inlines code at compile time to eliminate runtime overhead&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;inline if/match&lt;/strong&gt;: Conditional compilation, type-specific optimization&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;compiletime package&lt;/strong&gt;: Compile-time operations like &lt;code&gt;error&lt;/code&gt;, &lt;code&gt;constValue&lt;/code&gt;, &lt;code&gt;summonInline&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Macros (&lt;code&gt;${ }&lt;/code&gt;)&lt;/strong&gt;: Compile-time code generation using &lt;code&gt;scala.quoted&lt;/code&gt; API&lt;/li&gt;
&lt;li&gt;Scala 3 macros are more type-safe and concise than Scala 2&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Advanced developers familiar with type-level programming
&lt;strong&gt;Prerequisites:&lt;/strong&gt; Generics, type classes, advanced type system&lt;/p&gt;
&lt;p&gt;Metaprogramming enables code generation and validation at compile time. Scala 3 provides &lt;code&gt;inline&lt;/code&gt; and a new macro system. By leveraging these features, you can reduce boilerplate code, perform optimizations at compile time, and enable type-safe code generation.&lt;/p&gt;</description></item><item><title>Concurrency</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/concurrency/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/concurrency/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Future&lt;/strong&gt;: Type representing asynchronous computation results&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ExecutionContext&lt;/strong&gt;: Manages thread pools, passed as implicit parameter&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;map/flatMap&lt;/strong&gt;: Compose Futures, can use for comprehension&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Promise&lt;/strong&gt;: Write-only type that can complete Future directly&lt;/li&gt;
&lt;li&gt;Advanced libraries: Cats Effect, ZIO, Akka&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Developers who understand asynchronous programming basics
&lt;strong&gt;Prerequisites:&lt;/strong&gt; Higher-order functions, for comprehension, implicit parameters&lt;/p&gt;
&lt;p&gt;Scala supports asynchronous programming through &lt;code&gt;Future&lt;/code&gt;. This document covers &lt;code&gt;Future&lt;/code&gt;, &lt;code&gt;Promise&lt;/code&gt;, and &lt;code&gt;ExecutionContext&lt;/code&gt;. Through asynchronous programming, you can perform other tasks during I/O wait time, greatly improving application throughput.&lt;/p&gt;</description></item><item><title>Functional Programming Patterns</title><link>https://advanced-beginner.github.io/en/docs/scala/concepts/functional-patterns/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/scala/concepts/functional-patterns/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Referential Transparency&lt;/strong&gt;: No change in program meaning when replacing function calls with results&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Functor&lt;/strong&gt;: &lt;code&gt;map&lt;/code&gt; operation, transforms values while preserving structure&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monad&lt;/strong&gt;: &lt;code&gt;flatMap&lt;/code&gt; operation, chains sequential effects&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Option/Either/Try&lt;/strong&gt;: Type-safe representation of operations that may fail&lt;/li&gt;
&lt;li&gt;More powerful abstractions possible with functional libraries like Cats and ZIO&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Target Audience:&lt;/strong&gt; Developers who understand higher-order functions and For Comprehension
&lt;strong&gt;Prerequisites:&lt;/strong&gt; map, flatMap, filter, generics&lt;/p&gt;
&lt;p&gt;This document covers core functional programming patterns used in Scala. Functional programming is a paradigm that minimizes side effects and uses pure functions and immutable data to write predictable and easily testable code.&lt;/p&gt;</description></item></channel></rss>