<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Functional-Programming on Devops Monk</title><link>https://blog.devops-monk.com/tags/functional-programming/</link><description>Recent content in Functional-Programming on Devops Monk</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 04 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.devops-monk.com/tags/functional-programming/index.xml" rel="self" type="application/rss+xml"/><item><title>Java 8 Overview: The Release That Changed Everything</title><link>https://blog.devops-monk.com/tutorials/java8/java8-overview/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://blog.devops-monk.com/tutorials/java8/java8-overview/</guid><description>Before We Start — Feel the Difference You&amp;rsquo;re about to learn Java 8. Before diving into history and theory, let&amp;rsquo;s just feel what changed. Here&amp;rsquo;s the same task written in Java 7 and Java 8:
Task: Find all names that start with &amp;ldquo;A&amp;rdquo;, uppercase them, sort them, and collect into a list.
// Java 7 — 10 lines, two passes, one temporary variable, zero joy List&amp;lt;String&amp;gt; result = new ArrayList&amp;lt;&amp;gt;(); for (String name : names) { if (name.</description></item><item><title>Lambda Expressions (JEP 126): Syntax, Closures, and Target Typing</title><link>https://blog.devops-monk.com/tutorials/java8/lambdas/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://blog.devops-monk.com/tutorials/java8/lambdas/</guid><description>The Problem Lambdas Solve Every Java 7 developer has written the same five lines of boilerplate to sort a list or run a background task. Lambda expressions eliminate that ceremony entirely — and once you understand target typing, closures, and composition, you will find yourself reaching for them in every layer of a codebase: validation pipelines, event systems, retry logic, and beyond.
Before Java 8, passing behaviour as a value required an anonymous inner class:</description></item><item><title>Method References: Four Kinds and When to Use Each</title><link>https://blog.devops-monk.com/tutorials/java8/method-references/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://blog.devops-monk.com/tutorials/java8/method-references/</guid><description>What Are Method References? Method references are a signal to the reader: &amp;ldquo;this lambda does exactly one thing — it calls this existing method.&amp;rdquo; When the entire body of a lambda is a single method call, replacing it with a method reference removes noise without losing information. Knowing which of the four kinds to apply in each context is what separates fluent Java 8 code from code that merely uses the syntax.</description></item><item><title>Streams API: Lazy Pipelines and the Functional Data Model</title><link>https://blog.devops-monk.com/tutorials/java8/streams-introduction/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://blog.devops-monk.com/tutorials/java8/streams-introduction/</guid><description>The Problem Streams Solve Java loops are not wrong — they are often the right tool. But when a computation is a multi-step pipeline of filter → transform → aggregate, a loop hides the structure of the computation in a tangle of temporary variables and mutated collections. The Streams API makes the structure explicit, lets the JVM optimise it, and composes naturally with lambdas and method references.
Consider filtering a list of orders to find the names of active premium customers who spent over $500, sorted alphabetically:</description></item></channel></rss>