# Functional Programming

Published articles for Functional Programming.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## What's New in OSS at Khan Academy

DevFeed: [What's New in OSS at Khan Academy](<https://devfeed.tech/articles/what-s-new-in-oss-at-khan-academy-27396.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/new-oss-activity.htm>)

Author: Khan Academy

Published: 2017-04-03T22:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Open Source](<https://devfeed.tech/topics/open-source.md>), [Software](<https://devfeed.tech/topics/software.md>), [React](<https://devfeed.tech/topics/react.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>), [jQuery](<https://devfeed.tech/topics/jquery.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [news](<https://devfeed.tech/tags/news.md>), [open-source-software](<https://devfeed.tech/tags/open-source-software.md>), [oss](<https://devfeed.tech/tags/oss.md>), [react](<https://devfeed.tech/tags/react.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>)

### AI overview

Khan Academy highlights several recent open-source projects, including Mu Lambda, a small JavaScript library of functional programming utilities; React Balance Text, a React wrapper for Adobe's Balance-Text project; Fuzzy Match Utils, which uses string-matching algorithms for filtering; and React Multi Select.

### Source excerpt

By Brian Genisio At Khan Academy, we rely heavily on Open Source Software (OSS). The majority of our ... Read more

## Creator of Scala: Comparing Languages And How AI Will Impact Them | Martin Odersky

DevFeed: [Creator of Scala: Comparing Languages And How AI Will Impact Them | Martin Odersky](<https://devfeed.tech/articles/creator-of-scala-comparing-languages-and-how-ai-will-impact-them-martin-odersky-18089.md>)

Original publisher: [Read original article](<https://www.developing.dev/p/creator-of-scala-comparing-languages>)

Author: Ryan Peterman

Published: 2026-08-31T13:05:35Z

Content type: opinion

Language: en

Sources: [The Developing Dev](<https://devfeed.tech/sources/the-developing-dev.md>)

Topics: [Scala](<https://devfeed.tech/topics/scala.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [languages](<https://devfeed.tech/tags/languages.md>), [llms](<https://devfeed.tech/tags/llms.md>), [scala](<https://devfeed.tech/tags/scala.md>)

### AI overview

An interview with Martin Odersky, creator of Scala, compares Rust, Zig, Python, and Scala and discusses how AI may affect programming-language ecosystems. Odersky also explains functional programming as a style based on values and functions, with minimal mutable state and side effects.

### Source excerpt

There are so many choices every programming language creator makes while navigating engineering tradeoffs in building one.

## When you keep AI Lean, you keep AI correct

DevFeed: [When you keep AI Lean, you keep AI correct](<https://devfeed.tech/articles/when-you-keep-ai-lean-you-keep-ai-correct-2215.md>)

Original publisher: [Read original article](<https://stackoverflow.blog/2026/08/28/when-you-keep-ai-lean-you-keep-ai-correct/>)

Author: Phoebe Sajor

Published: 2026-08-28T07:40:00Z

Content type: article

Language: en

Sources: [Stack Overflow Blog](<https://devfeed.tech/sources/stack-overflow-blog.md>)

Topics: [AI Bots](<https://devfeed.tech/topics/ai-bots.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>)

Tags: [agentic-ai](<https://devfeed.tech/tags/agentic-ai.md>), [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [ai-models](<https://devfeed.tech/tags/ai-models.md>), [automated-reasoning](<https://devfeed.tech/tags/automated-reasoning.md>), [code](<https://devfeed.tech/tags/code.md>), [developers](<https://devfeed.tech/tags/developers.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [podcast](<https://devfeed.tech/tags/podcast.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [reasoning](<https://devfeed.tech/tags/reasoning.md>), [se-stackoverflow](<https://devfeed.tech/tags/se-stackoverflow.md>), [se-tech](<https://devfeed.tech/tags/se-tech.md>)

### AI overview

A discussion of using Lean to prove AI-agent correctness, combine automated reasoning with probabilistic AI models, and continuously optimize code.

### Source excerpt

Ryan chats with Leo de Moura, Senior Principal Applied Scientist at AWS and the creator of the Lean language, about proving correctness in AI agents with the Lean language, how automated reasoning complements probabilistic AI models, and the use of AI for continuous code optimization.

## Creator of OCaml: Functional Programming, Formal Verification, Programming Languages | Xavier Leroy

DevFeed: [Creator of OCaml: Functional Programming, Formal Verification, Programming Languages | Xavier Leroy](<https://devfeed.tech/articles/creator-of-ocaml-functional-programming-formal-verification-programming-languages-xavier-leroy-18088.md>)

Original publisher: [Read original article](<https://www.developing.dev/p/creator-of-ocaml-functional-programming>)

Author: Ryan Peterman

Published: 2026-07-20T13:05:11Z

Content type: article

Language: en

Sources: [The Developing Dev](<https://devfeed.tech/sources/the-developing-dev.md>)

Topics: [OCaml](<https://devfeed.tech/topics/ocaml.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Formal verification](<https://devfeed.tech/topics/formal-verification.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>)

Tags: [formal-verification](<https://devfeed.tech/tags/formal-verification.md>), [functional](<https://devfeed.tech/tags/functional.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [ocaml](<https://devfeed.tech/tags/ocaml.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [verification](<https://devfeed.tech/tags/verification.md>)

### AI overview

A podcast transcript featuring Xavier Leroy discusses what distinguishes OCaml, including its functional and systems programming capabilities, type inference, control structures, predictable execution costs, and low-latency garbage collection. The conversation also covers formal verification through the CompCert project and comparisons with languages such as Rust and JavaScript.

### Source excerpt

Professor Leroy (Creator of OCaml) is incredibly knowledgeable.

## Simon Peyton Jones on Haskell and Why Functional Programming Matters

DevFeed: [Simon Peyton Jones on Haskell and Why Functional Programming Matters](<https://devfeed.tech/articles/co-creator-of-haskell-functional-programming-thinking-in-types-useless-languages-simon-jones-18084.md>)

Original publisher: [Read original article](<https://www.developing.dev/p/co-creator-of-haskell-functional>)

Author: Ryan Peterman

Published: 2026-06-08T10:02:31Z

Content type: article

Language: en

Sources: [The Developing Dev](<https://devfeed.tech/sources/the-developing-dev.md>)

Topics: [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Haskell](<https://devfeed.tech/topics/haskell.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Declarative programming](<https://devfeed.tech/topics/declarative-programming.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>)

Tags: [declarative](<https://devfeed.tech/tags/declarative.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [languages](<https://devfeed.tech/tags/languages.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

An interview with Simon Peyton Jones, co-creator of Haskell, about functional programming, its emphasis on values rather than mutation, and how it differs from imperative programming.

### Source excerpt

Simon Peyton Jones is the co-creator of Haskell (pure functional programming language) and I interviewed him about functional programming, why it matters, and his thoughts on other programming languages.

## The Different Node Types in Jetpack Compose

DevFeed: [The Different Node Types in Jetpack Compose](<https://devfeed.tech/articles/the-different-node-types-in-jetpack-compose-29124.md>)

Original publisher: [Read original article](<https://www.grokkingandroid.com/the-different-node-types-in-jetpack-compose/>)

Author: Wolfram Rittmeyer

Published: 2025-12-30T15:32:14Z

Content type: tutorial

Language: en

Sources: [Grokking Android](<https://devfeed.tech/sources/grokking-android.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Declarative programming](<https://devfeed.tech/topics/declarative-programming.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This article explains the different node types in Jetpack Compose and how composable functions create or delegate the creation of nodes. It discusses ComposeUiNode, LayoutNode, Modifier.Node, and SemanticsNode, including how nodes represent UI elements and form a tree.

### Source excerpt

If you look at Compose it's weird. You have tons of functions that return nothing. Yet the Android documentation says: Composable functions emit UI hierarchy. What does this actually mean? Well, from a functional programming point of view your innocuous looking stateless composable functions create loads of side effects1). Among other things they create nodes. [...] Continue Reading "The Different Node Types in Jetpack Compose" The post The Different Node Types in Jetpack Compose appeared first on Grokking Android.

## the algebra of dependent types

DevFeed: [the algebra of dependent types](<https://devfeed.tech/articles/the-algebra-of-dependent-types-36214.md>)

Original publisher: [Read original article](<https://dotat.at/@/2025-05-28-types.html>)

Published: 2025-05-29T00:07:51Z

Content type: article

Language: en

Sources: [Tony Finch's blog](<https://devfeed.tech/sources/tony-finch-s-blog.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Standard ML](<https://devfeed.tech/topics/standard-ml.md>), [Rust](<https://devfeed.tech/topics/rust.md>)

Tags: [algebra](<https://devfeed.tech/tags/algebra.md>), [enum](<https://devfeed.tech/tags/enum.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [languages](<https://devfeed.tech/tags/languages.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [type-system](<https://devfeed.tech/tags/type-system.md>), [type-theory](<https://devfeed.tech/tags/type-theory.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

An explanation of why big-sigma and big-pi notation appears in dependent type theory. It connects dependent functions and dependent pairs to algebraic data types, showing how products correspond to multiplication and sum types to addition, with examples from type theory, Standard ML, Haskell, and Rust.

### Source excerpt

TIL (or this week-ish I learned) why big-sigma and big-pi turn up in the notation of dependent type theory. I've long been aware of the zoo of more obscure Greek letters that turn up in papers about type system features of functional programming languages, μ, Λ, Π, Σ. Their meaning is usually clear from context but the reason for the choice of notation is usually not explained. I recently stumbled on an explanation for Π (dependent functions) and Σ (dependent pairs) which turn out to be nicer than I expected, and closely related to every-day algebraic data types. sizes of types The easiest way to understand algebraic data types is by counting the inhabitants of a type. For example: the unit type () has one inhabitant, (), and the number 1 is why it's called the unit type; the bool type hass two inhabitants, false and true. I have even seen these types called 1 and 2 (cruelly, without explanation) in occasional papers. product types Or pairs or (more generally) tuples or records. Usually written, (A, B) The pair contains an A and a B, so the number of possible values is the number of possible A values multiplied by the number of possible B values. So it is spelled in type theory (and in Standard ML) like, A * B sum types Or disjoint union, or variant record. Declared in Haskell like, data Either a b = Left a | Right b Or in Rust like, enum Either<A, B> { Left(A), Right(B), } A value of the type is either an A or a B, so the number of possible values is the number of A values plus the number of B values. So it is spelled in type theory like, A + B dependent pairs In a dependent pair, the type of the second element depends on the value of the first. The classic example is a slice, roughly, struct IntSlice { len: usize, elem: &[i64; len], } (This might look a bit circular, but the idea is that an array [i64; N] must be told how big it is - its size is an explicit part of its type - but an IntSlice knows its own size. The traditional dependent "vector" type is a sized li

## A Distributed System from scratch, with Scala 3 - Part 3: Job submission, worker scaling, and leader election & consensus with Raft

DevFeed: [A Distributed System from scratch, with Scala 3 - Part 3: Job submission, worker scaling, and leader election & consensus with Raft](<https://devfeed.tech/articles/a-distributed-system-from-scratch-with-scala-3-part-3-job-submission-worker-scaling-and-leader-election-consensus-with-raft-41505.md>)

Original publisher: [Read original article](<https://chollinger.com/blog/2025/05/a-distributed-system-from-scratch-with-scala-3-part-3-job-submission-worker-scaling-and-leader-election-consensus-with-raft/>)

Author: Christian Hollinger

Published: 2025-05-18T00:00:00Z

Content type: article

Language: en

Sources: [Christian Hollinger](<https://devfeed.tech/sources/christian-hollinger.md>)

Topics: [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [Scala](<https://devfeed.tech/topics/scala.md>), [scaling](<https://devfeed.tech/topics/scaling.md>), [Raft](<https://devfeed.tech/topics/raft.md>), [parallel](<https://devfeed.tech/topics/parallel.md>)

Tags: [bridgefour](<https://devfeed.tech/tags/bridgefour.md>), [cats](<https://devfeed.tech/tags/cats.md>), [cats-effect](<https://devfeed.tech/tags/cats-effect.md>), [consensus](<https://devfeed.tech/tags/consensus.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [higher-kinded-types](<https://devfeed.tech/tags/higher-kinded-types.md>), [leader-election](<https://devfeed.tech/tags/leader-election.md>), [parallel](<https://devfeed.tech/tags/parallel.md>), [programming](<https://devfeed.tech/tags/programming.md>), [raft](<https://devfeed.tech/tags/raft.md>), [scala](<https://devfeed.tech/tags/scala.md>), [scaling](<https://devfeed.tech/tags/scaling.md>), [tagless-final](<https://devfeed.tech/tags/tagless-final.md>), [zio](<https://devfeed.tech/tags/zio.md>)

### AI overview

This third part of a Scala 3 distributed-system project describes updates to Bridge Four, including Scala upgrades, worker scaling, job submission, and leader election and consensus using Raft. The system uses a single leader and multiple workers for embarrassingly parallel workloads.

### Source excerpt

Upgrades to Bridge Four, the functional, effectful distributed compute system optimized for embarrassingly parallel workloads: Updating Scala, auto-scaling workers, and implementing leader election with Raft (or half of a replicated state machine).

## Why Learning Scala Gave Me Déjà Vu of Kotlin: A Developer's Journey

DevFeed: [Why Learning Scala Gave Me Déjà Vu of Kotlin: A Developer's Journey](<https://devfeed.tech/articles/why-learning-scala-gave-me-deja-vu-of-kotlin-a-developer-s-journey-22877.md>)

Original publisher: [Read original article](<https://medium.com/mindorks/why-learning-scala-gave-me-d%C3%A9j%C3%A0-vu-of-kotlin-a-developers-journey-3126b0e80272?source=rss----f1a763fc7443---4>)

Author: Kavya P S

Published: 2024-10-16T06:49:14Z

Content type: opinion

Language: en

Sources: [Mindorks - Medium](<https://devfeed.tech/sources/mindorks-medium.md>)

Topics: [Scala](<https://devfeed.tech/topics/scala.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [beginners-guide](<https://devfeed.tech/tags/beginners-guide.md>), [developer](<https://devfeed.tech/tags/developer.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [journey](<https://devfeed.tech/tags/journey.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [learning](<https://devfeed.tech/tags/learning.md>), [programming](<https://devfeed.tech/tags/programming.md>), [scala](<https://devfeed.tech/tags/scala.md>)

### AI overview

A Kotlin Android developer reflects on beginning to learn Scala for backend development and finding familiar concepts in its syntax and features. The article compares the languages through examples including conciseness, type inference, functional programming, null safety, extension functions, pattern matching, and operator overloading. The author notes that the comparison is based on only a few hours of Scala study.

### Source excerpt

Imagine you're 2 years deep into creating cool stuff with Kotlin for Android and you decide to venture into an unfamiliar territory -- Backend development with Scala. You are all prepared to start from zero. But as you go on, it feels strangely familiar, like meeting an old friend. Let me take you through my journey -- exploring Scala was a bit like déjà vu, reminding me of Kotlin in unexpected ways. Come along as I share this story of two coding worlds that seemed oddly similar to me! Disclaimer: Before I begin, I am only one day deep into Scala learning -- okay 2-5 hours deep thanks to this RockTheJVM tutorial! So, this article is not a consolidated list, but a spoiler before you learn the basics of Scala as a Kotlin developer (or vice versa). Before we begin, here's a "textbook" answer for similarities between Kotlin and Scala (thanks to ChatGPT) -- feel free to skip it! Kotlin and Scala, while having their unique features, share some similarities in their syntax. Here are a few key similarities between Kotlin and Scala:1. Conciseness: Both Kotlin and Scala are designed to reduce boilerplate code, allowing developers to write more with less. They provide concise syntax for common operations, making the code cleaner and easier to read. 2. Type Inference: Both languages support type inference, allowing developers to omit explicit type declarations in many cases. The compiler can often deduce the types based on the context, reducing verbosity in code. 3. Functional Programming Features: Both languages incorporate functional programming concepts. They support higher-order functions, immutable data structures, lambda expressions, and various functional programming paradigms. 4. Null Safety: Kotlin and Scala provide features to handle null references safely. Kotlin has a robust system with nullable and non-nullable types, while Scala includes options like `Option` or `Some` to deal with null values. 5. Extension Functions/Methods: Both languages support extension functions

## The principle of immutability

DevFeed: [The principle of immutability](<https://devfeed.tech/articles/the-principle-of-immutability-13266.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/the-principle-of-immutability>)

Published: 2024-08-20T00:00:00Z

Content type: opinion

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [immutability](<https://devfeed.tech/tags/immutability.md>), [rust](<https://devfeed.tech/tags/rust.md>), [secure-by-default](<https://devfeed.tech/tags/secure-by-default.md>), [secure-by-design](<https://devfeed.tech/tags/secure-by-design.md>)

### AI overview

The article argues that immutability is about intentionally controlling change rather than preventing change. It presents immutability by default as part of secure-by-design software and compares approaches in functional programming, C++, and Rust.

### Source excerpt

Secure by default starts with immutability. Discover how to control change and minimize risks.

## What You Need to Know About Lazy Evaluation in Nix

DevFeed: [What You Need to Know About Lazy Evaluation in Nix](<https://devfeed.tech/articles/what-you-need-to-know-about-lazy-evaluation-in-nix-32454.md>)

Original publisher: [Read original article](<https://nixcademy.com/posts/what-you-need-to-know-about-laziness/>)

Author: Jacek Galowicz

Published: 2024-07-15T00:00:00Z

Content type: tutorial

Language: en

Sources: [Nixcademy Blog](<https://devfeed.tech/sources/nixcademy-blog.md>)

Topics: [Nix](<https://devfeed.tech/topics/nix.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [lazy](<https://devfeed.tech/tags/lazy.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

This article explains lazy evaluation in the Nix language, including when expressions are evaluated, how errors can be deferred until a value is referenced, and how thunks model this behavior. It also introduces context for understanding Nix overlays and dependency overrides.

### Source excerpt

If you have no prior experience with functional programming, don't miss this article which explains the most important intricacies of lazy evaluation!

## Improving my Distributed System with Scala 3: Consistency Guarantees & Background Tasks (Part 2)

DevFeed: [Improving my Distributed System with Scala 3: Consistency Guarantees & Background Tasks (Part 2)](<https://devfeed.tech/articles/improving-my-distributed-system-with-scala-3-consistency-guarantees-background-tasks-part-2-41502.md>)

Original publisher: [Read original article](<https://chollinger.com/blog/2024/02/improving-my-distributed-system-with-scala-3-consistency-guarantees-background-tasks-part-2/>)

Author: Christian Hollinger

Published: 2024-02-19T00:00:00Z

Content type: article

Language: en

Sources: [Christian Hollinger](<https://devfeed.tech/sources/christian-hollinger.md>)

Topics: [consistency](<https://devfeed.tech/topics/consistency.md>), [Scala](<https://devfeed.tech/topics/scala.md>), [state-management](<https://devfeed.tech/topics/state-management.md>), [data-processing](<https://devfeed.tech/topics/data-processing.md>), [execution](<https://devfeed.tech/topics/execution.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [parallel](<https://devfeed.tech/topics/parallel.md>)

Tags: [abstraction](<https://devfeed.tech/tags/abstraction.md>), [api](<https://devfeed.tech/tags/api.md>), [bridgefour](<https://devfeed.tech/tags/bridgefour.md>), [cache](<https://devfeed.tech/tags/cache.md>), [cats](<https://devfeed.tech/tags/cats.md>), [cats-effect](<https://devfeed.tech/tags/cats-effect.md>), [code-quality](<https://devfeed.tech/tags/code-quality.md>), [consistency](<https://devfeed.tech/tags/consistency.md>), [data](<https://devfeed.tech/tags/data.md>), [data-processing](<https://devfeed.tech/tags/data-processing.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [execution](<https://devfeed.tech/tags/execution.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [general](<https://devfeed.tech/tags/general.md>), [higher-kinded-types](<https://devfeed.tech/tags/higher-kinded-types.md>), [parallel](<https://devfeed.tech/tags/parallel.md>), [programming](<https://devfeed.tech/tags/programming.md>), [scala](<https://devfeed.tech/tags/scala.md>), [scala-3](<https://devfeed.tech/tags/scala-3.md>), [tagless-final](<https://devfeed.tech/tags/tagless-final.md>), [tasks](<https://devfeed.tech/tags/tasks.md>), [zio](<https://devfeed.tech/tags/zio.md>)

### AI overview

This article describes updates to Bridge Four, a distributed data-processing system built from scratch in Scala 3. It focuses on state management, consistency guarantees, background workers, caching, API semantics, and the system's single-leader, multi-worker architecture.

### Source excerpt

Improving Bridge Four, a simple, functional, effectful, single-leader, multi worker, distributed compute system optimized for embarrassingly parallel workloads by providing consistency guarantees and improving overall code quality (or something like that).

## Swift Result Builders: Creating Custom DSLs for Binary Formatted Data

DevFeed: [Swift Result Builders: Creating Custom DSLs for Binary Formatted Data](<https://devfeed.tech/articles/swift-result-builders-creating-custom-dsls-for-binary-formatted-data-23995.md>)

Original publisher: [Read original article](<https://quickbirdstudios.com/blog/swift-resultbuilder-data/>)

Author: Paul Kraft

Published: 2023-08-03T14:22:38Z

Content type: tutorial

Language: en

Sources: [QuickBird Studios Blog](<https://devfeed.tech/sources/quickbird-studios-blog.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [Declarative programming](<https://devfeed.tech/topics/declarative-programming.md>), [data](<https://devfeed.tech/topics/data.md>), [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [data-processing](<https://devfeed.tech/topics/data-processing.md>), [Bluetooth](<https://devfeed.tech/topics/bluetooth.md>), [Internet](<https://devfeed.tech/topics/internet.md>), [P2P](<https://devfeed.tech/topics/p2p.md>)

Tags: [bluetooth](<https://devfeed.tech/tags/bluetooth.md>), [communication](<https://devfeed.tech/tags/communication.md>), [data-transformation](<https://devfeed.tech/tags/data-transformation.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [deep-dive](<https://devfeed.tech/tags/deep-dive.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [internet](<https://devfeed.tech/tags/internet.md>), [ios](<https://devfeed.tech/tags/ios.md>), [post](<https://devfeed.tech/tags/post.md>), [programming](<https://devfeed.tech/tags/programming.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>)

### AI overview

This tutorial explains Swift result builders and declarative programming, then applies custom result builders to encoding binary-formatted data. It also introduces DataKit, a Swift library for declaratively specifying binary message formats for encoding and decoding.

### Source excerpt

SwiftUI has revolutionized how we build UI, introducing a more intuitive, declarative approach. Instead of prescribing a series of steps to reach an end goal, we describe the outcome and let the program determine the path The post Swift Result Builders: Creating Custom DSLs for Binary Formatted Data appeared first on QuickBird Studios.

## Building a Functional, Effectful Distributed Compute System from Scratch in Scala 3 (Part 1)

DevFeed: [Building a Functional, Effectful Distributed Compute System from Scratch in Scala 3 (Part 1)](<https://devfeed.tech/articles/building-a-functional-effectful-distributed-system-from-scratch-in-scala-3-just-to-avoid-leetcode-part-1-41500.md>)

Original publisher: [Read original article](<https://chollinger.com/blog/2023/06/building-a-functional-effectful-distributed-system-from-scratch-in-scala-3-just-to-avoid-leetcode-part-1/>)

Author: Christian Hollinger

Published: 2023-06-19T00:00:00Z

Content type: article

Language: en

Sources: [Christian Hollinger](<https://devfeed.tech/sources/christian-hollinger.md>)

Topics: [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [Scala](<https://devfeed.tech/topics/scala.md>), [data-engineering](<https://devfeed.tech/topics/data-engineering.md>), [data-processing](<https://devfeed.tech/topics/data-processing.md>), [Platform Engineering](<https://devfeed.tech/topics/platform-engineering.md>), [parallel](<https://devfeed.tech/topics/parallel.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>)

Tags: [bridgefour](<https://devfeed.tech/tags/bridgefour.md>), [cats](<https://devfeed.tech/tags/cats.md>), [cats-effect](<https://devfeed.tech/tags/cats-effect.md>), [data-engineering](<https://devfeed.tech/tags/data-engineering.md>), [data-platform-engineering](<https://devfeed.tech/tags/data-platform-engineering.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [high-performance](<https://devfeed.tech/tags/high-performance.md>), [higher-kinded-types](<https://devfeed.tech/tags/higher-kinded-types.md>), [parallel](<https://devfeed.tech/tags/parallel.md>), [programming](<https://devfeed.tech/tags/programming.md>), [scala](<https://devfeed.tech/tags/scala.md>), [scala-3](<https://devfeed.tech/tags/scala-3.md>), [tagless-final](<https://devfeed.tech/tags/tagless-final.md>), [zio](<https://devfeed.tech/tags/zio.md>)

### AI overview

The author explains building Bridge Four, a functional, effectful distributed data-processing system from scratch in Scala 3 as an alternative to practicing LeetCode problems. The project focuses on distributed systems and data-platform engineering, with later parts covering consistency, background tasks, job submission, worker scaling, leader election, and Raft consensus.

### Source excerpt

Building something that already exist (but worse) so I don't have to think about Leetcode: Bridge Four, a simple, functional, effectful, single-leader, multi worker, distributed compute system optimized for embarrassingly parallel workloads.

## Using Fleet 1.19's AI Assistant to Convert Kotlin Between Imperative and Functional Styles

DevFeed: [Using Fleet 1.19's AI Assistant to Convert Kotlin Between Imperative and Functional Styles](<https://devfeed.tech/articles/the-imitation-tortoise-s-song-a-fleety-conversion-from-imperative-to-functional-will-you-join-the-dance-32082.md>)

Original publisher: [Read original article](<https://www.maiatoday.net/p/the-imitation-tortoises-song-a-fleety-conversion-from-imperative-to-functional-will-you-join-the-dance/>)

Published: 2023-06-10T13:12:44Z

Content type: article

Language: en

Sources: [maiatoday](<https://devfeed.tech/sources/maiatoday.md>)

Topics: [coding style](<https://devfeed.tech/topics/coding-style.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Code](<https://devfeed.tech/topics/code.md>), [Advent of Code](<https://devfeed.tech/topics/advent-of-code.md>)

Tags: [advent-of-code](<https://devfeed.tech/tags/advent-of-code.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-assistant](<https://devfeed.tech/tags/ai-assistant.md>), [code](<https://devfeed.tech/tags/code.md>), [coding-style](<https://devfeed.tech/tags/coding-style.md>), [doggerel](<https://devfeed.tech/tags/doggerel.md>), [fleet](<https://devfeed.tech/tags/fleet.md>), [functional](<https://devfeed.tech/tags/functional.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [imperative](<https://devfeed.tech/tags/imperative.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [word-games](<https://devfeed.tech/tags/word-games.md>)

### AI overview

The article experiments with Fleet 1.19's integrated AI assistant by converting Kotlin code for the Advent of Code 2022 Day 10 puzzle between imperative and functional styles, comparing the results, and generating poetry.

### Source excerpt

Once upon a time I admit. I have a penchant for word games and weird segues. So I will tell you what this post is about off the bat. You can skip to the code, I won't be offended. Fleet 1.19 was released this week with an integrated AI assistant. I took it for a spin and used it to convert Kotlin code from imperative style to functional and back again. I used some Kotlin code, which solves the Advent of Code 2022 Day 10 puzzle. I had written the solution in two styles and I had the AI assistant do the same conversion and compared the code. And then I played around and generated some poetry. Follow links at your peril, there are rabbit holes, it might make you late or change the size of your free time. Segue the first of many Oh you are still here! You didn't jump to the code starts here section? Why am I doing this? A long time ago, I read a lot of Lewis Caroll, Alice in Wonderland. In one scene Alice talks to the Mock Turtle. He sings a song about sea creatures dancing. When the first language translators appeared on the scene, Altavisa babelfish or perhaps it was the early Google Translate, I converted passages from Alice in Wonderland to French and then back again to see what the machines could do. The Mock Turtle was transformed into an Imitation Tortoise. In this way the reference to the original mock turtle soup was lost in translation. In a roundabout way I was wondering what would be uncovered or lost if I used the AI assistant for some translations in coding style. Couplets of doggerel My trusty and non emotional assistant had no opinion on Lewis Caroll but it made this for me. A definition of functional programming style in rhyming couplets: Functional programming's way, treats functions as the play. Immutable states they use, side effects they refuse. Declarative code is their choice, with functions, they rejoice. Nested functions map, filter, reduce, a clean, elegant code they produce. Compare this with the imperative version: Imperative code, step by st

## Arrow 2.0's Trajectory

DevFeed: [Arrow 2.0's Trajectory](<https://devfeed.tech/articles/arrow-2-0-s-trajectory-25509.md>)

Original publisher: [Read original article](<http://nomisrev.github.io/arrows-2-0-trajectory/>)

Author: Simon Vergauwen

Published: 2023-04-16T00:00:00Z

Content type: opinion

Language: en

Sources: [nomisRev](<https://devfeed.tech/sources/nomisrev.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Library](<https://devfeed.tech/topics/library.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>), [Java](<https://devfeed.tech/topics/java.md>), [Scala](<https://devfeed.tech/topics/scala.md>)

Tags: [arrow](<https://devfeed.tech/tags/arrow.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [library](<https://devfeed.tech/tags/library.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [oss](<https://devfeed.tech/tags/oss.md>), [scala](<https://devfeed.tech/tags/scala.md>)

### AI overview

A presentation transcription about Arrow's 10-year history, its trajectory toward version 2.0, functional programming in Kotlin, ecosystem cohesion, evolving APIs, and challenges faced by open-source projects.

### Source excerpt

This blog post is an improved version of the transcription of the presentation I gave at KotlinConf 2023. It discusses the 10-year history of Arrow, all the way from the first commit to the current state of the library. It also discusses the future of Functional Programming in Kotlin, and the challenges OSS projects face.

## KotlinConf'23-Kotlin & Functional Programming: pick the best, skip the rest by Urs Peter

DevFeed: [KotlinConf'23-Kotlin & Functional Programming: pick the best, skip the rest by Urs Peter](<https://devfeed.tech/articles/kotlinconf-23-kotlin-functional-programming-pick-the-best-skip-the-rest-by-urs-peter-27026.md>)

Original publisher: [Read original article](<https://appmattus.medium.com/kotlinconf23-kotlin-functional-programming-pick-the-best-skip-the-rest-by-urs-peter-8958d3dcb432?source=rss-be40b368c57e------2>)

Author: Matthew Dolan

Published: 2023-04-14T06:32:47Z

Content type: opinion

Language: en

Sources: [Stories by Matthew Dolan on Medium](<https://devfeed.tech/sources/stories-by-matthew-dolan-on-medium.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [exceptions](<https://devfeed.tech/topics/exceptions.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [arrow](<https://devfeed.tech/tags/arrow.md>), [data-structures](<https://devfeed.tech/tags/data-structures.md>), [exceptions](<https://devfeed.tech/tags/exceptions.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [monad](<https://devfeed.tech/tags/monad.md>), [optional](<https://devfeed.tech/tags/optional.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

A review of Urs Peter's KotlinConf'23 talk on functional programming, covering monoids, functors, monads, and selective use of the Arrow framework. It highlights using Either for recoverable service errors, nullable comprehensions, and Arrow Optics for nested data updates.

### Source excerpt

KotlinConf'23 -- Kotlin & Functional Programming: pick the best, skip the rest by Urs Peterhttps://medium.com/media/b5b95f6bdbb507930534ef8279ba1d05/href I recently had the pleasure of listening to Urs Peter's talk on Kotlin & Functional. The speaker gave a great, simple summary of what a Monad is and how it works. In essence: a Monoid is combinable (plus) and has an identity (empty) element which when combined with another value returns that other value. a Functor is mappable (map) a Monad is composable (flatMap) The talk then went on to discuss some common monads, such as Collections and Optional. The highlight of the talk for me was when the speaker talked about cherry-picking the best features between Kotlin and Monads (using the Arrow framework). Use Monads selectively where needed and useful. Why use a Monad to replace try-catch blocks for the 95% of use cases? Let exceptions bubble up to a GlobalExceptionHandler. For the other 5%, where we're typically recovering in our service, prefer Either<A,B> over Result as it makes the contract explicit with easy access to the error reply. Prevent tedious null checks with Arrow's nullable{ } comprehension. With deeply nested data structures where you want to change something at the leaf level, use Arrow Optics instead of nested copy calls. While I enjoyed the talk, I would have loved to hear more best features. You can find my thoughts on more KotlinConf'23 talks at KotlinConf'23. Please let me know your thoughts. Join medium to read all of my articles or subscribe for e-mail updates.

## KotlinConf'23

DevFeed: [KotlinConf'23](<https://devfeed.tech/articles/kotlinconf-23-27024.md>)

Original publisher: [Read original article](<https://appmattus.medium.com/kotlinconf23-d03fe60af719?source=rss-be40b368c57e------2>)

Author: Matthew Dolan

Published: 2023-04-14T06:29:10Z

Content type: article

Language: en

Sources: [Stories by Matthew Dolan on Medium](<https://devfeed.tech/sources/stories-by-matthew-dolan-on-medium.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Swift](<https://devfeed.tech/topics/swift.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlinconf](<https://devfeed.tech/tags/kotlinconf.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

Personal notes from KotlinConf'23 in Amsterdam covering talks on Kotlin, functional programming, Kotlin Multiplatform, compiler plugins, Android Jetpack, and a Swift-friendly API generator called SKIE.

### Source excerpt

I recently attended KotlinConf'23 Amsterdam; these are some of my thoughts on talks I enjoyed. Kotlin & Functional Programming: pick the best, skip the rest by Urs Peter. Dissecting Kotlin: Unsealing the Sealed, the SAM, and Other Syntax by Huyen Tue Dao Meta-programming with KSP and Kotlin compiler plugins by Tadeáš Kříž Why code autocompletion works faster on weekends by Egor Tolstoy Kotlin Multiplatform 5 years of Multiplatform Settings by Russell Wolf Kotlin Multiplatform Conversions at Android Jetpack Scale by Dustin Lam and James Ward One of the most promising demos I saw was SKIE. The premise of SKIE is a Swift-friendly API Generator for Kotlin Multiplatform. You may already be familiar with MOKO KSwift but SKIE looks incredibly more powerful. NOTE: I will be adding to this as I continue to write up my notes. Join medium to read all of my articles or subscribe for e-mail updates.

## Kotlin DSL is Now the Default for New Gradle Builds

DevFeed: [Kotlin DSL is Now the Default for New Gradle Builds](<https://devfeed.tech/articles/kotlin-dsl-is-now-the-default-for-new-gradle-builds-24665.md>)

Original publisher: [Read original article](<https://blog.gradle.org/kotlin-dsl-is-now-the-default-for-new-gradle-builds>)

Author: Paul Merlin

Published: 2023-04-13T04:00:00Z

Content type: article

Language: en

Sources: [The Gradle Blog](<https://devfeed.tech/sources/the-gradle-blog.md>)

Topics: [Gradle](<https://devfeed.tech/topics/gradle.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [IntelliJ IDEA](<https://devfeed.tech/topics/intellij-idea.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [ide](<https://devfeed.tech/topics/ide.md>), [Declarative programming](<https://devfeed.tech/topics/declarative-programming.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>)

Tags: [android-studio](<https://devfeed.tech/tags/android-studio.md>), [build-tool](<https://devfeed.tech/tags/build-tool.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [ide](<https://devfeed.tech/tags/ide.md>), [intellij-idea](<https://devfeed.tech/tags/intellij-idea.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>)

### AI overview

This article explains that Kotlin DSL is now the default for new Gradle builds, while Groovy DSL remains supported for existing projects and users who prefer it. It describes Kotlin DSL's static typing, concise syntax, functional programming support, declarative build language, and IDE assistance in IntelliJ IDEA and Android Studio, including auto-completion, documentation access, source navigation, and context-aware refactoring. It also highlights support for version catalogs and improvements to code analysis and auto-completion.

### Source excerpt

Kotlin DSL for Gradle was introduced in version 3.0 of the Gradle Build Tool in August 2016 and released as 1.0 in Gradle 5.0. Since then, it's been growing in popularity and has greatly improved the authoring experience of many Gradle builds. Kotlin DSL is now the default choice for new Gradle builds. This means that when creating a new project with Gradle, including in IntelliJ IDEA (starting with 2023.1) and Android Studio (starting with Giraffe), Kotlin DSL is the default option. Support for Groovy DSL will continue for existing projects or those who prefer to use it. In this post, we will explore the benefits of Kotlin DSL and why it is becoming the recommended option for new Gradle builds. We will also discuss some of the improvements that are planned for the future to make Kotlin DSL even better. About Kotlin DSL Kotlin is a powerful language that offers many features that make it an excellent fit for creating a DSL. Its static type system, concise and expressive syntax, and support for functional programming constructs make it easy to create readable and composable DSLs. Kotlin DSL for Gradle takes advantage of the Kotlin language to enable full IDE assistance for build authoring in IntelliJ IDEA and Android Studio. This includes auto-completion, smart content assist, quick access to documentation, navigation to source, and context-aware refactoring. With Kotlin DSL, you can edit your build logic with the same editing experience you are used to when working with your production and test code. Gradle combines Kotlin language features with its capabilities to provide an elegant and extensible declarative build language that enables expressing any build clearly and understandably. Dynamically added elements of the build model, like project dependencies (when using version catalog) or subproject names in multi-project builds, benefit from static typing and IDE assistance. Gradle plugins extend Kotlin DSL by contributing extensions and tasks made available static

## Bean Machine Retrospective, part 7

DevFeed: [Bean Machine Retrospective, part 7](<https://devfeed.tech/articles/bean-machine-retrospective-part-7-38665.md>)

Original publisher: [Read original article](<https://ericlippert.com/2023/02/08/bean-machine-retrospective-part-7/>)

Author: ericlippert

Published: 2023-02-08T18:19:08Z

Content type: tutorial

Language: en

Sources: [Eric Lippert](<https://devfeed.tech/sources/eric-lippert.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Parser](<https://devfeed.tech/topics/parser.md>), [Python](<https://devfeed.tech/topics/python.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>)

Tags: [ast](<https://devfeed.tech/tags/ast.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [function](<https://devfeed.tech/tags/function.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

### AI overview

This installment explains how function composition and ideas from combinatory logic and functional programming can model control flow as combinators for constructing compiler workflows. It introduces abstract syntax trees and uses Python's ast module in the context of Bean Machine's compiler.

### Source excerpt

How do we write a compiler in a typical general-purpose line-of-business OO programming language such as Python, C#, Java, and so on? Compilers are programs, so we could make the question more general: how do we write programs? The basic ... Continue reading ->

## Functional Classes in Clojure

DevFeed: [Functional Classes in Clojure](<https://devfeed.tech/articles/functional-classes-in-clojure-21800.md>)

Original publisher: [Read original article](<http://blog.cleancoder.com/uncle-bob/2023/01/19/functional-classes-clojure.html>)

Published: 2023-01-19T00:00:00Z

Content type: article

Language: en

Sources: [Robert C. Martin](<https://devfeed.tech/sources/robert-c-martin.md>), [The Clean Code Blog](<https://devfeed.tech/sources/the-clean-code-blog.md>)

Topics: [Clojure](<https://devfeed.tech/topics/clojure.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Code](<https://devfeed.tech/topics/code.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>)

Tags: [clojure](<https://devfeed.tech/tags/clojure.md>), [code](<https://devfeed.tech/tags/code.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

The article explains how class-like abstractions can be implemented in functional programming using Clojure. It presents a Dilithium Cloud example built from named functions, an internally defined data structure, dynamic type specifications, constructors, methods, and unit-test validation, while arguing that class syntax, inheritance, and polymorphic dispatch are not required.

### Source excerpt

My previous blog seemed only to continue the confusion regarding classes in Functional Programming. Indeed, many people got quite irate. So perhaps a bit of code will help. Trigger Warning: Object Oriented Terminology. Dynamically Typed Language. Mixed Metaphors. Distracting Animations. To all the adherents of the Statically Typed Functional Programming religion: I know that you believe that Static Typing is an essential aspect of Functional Programming and that no mere dynamically typed language could ever begin to approach the heights and glory of The One True and Holy TYPED Functional Apotheotic Paradigm. But we lowly programmers quivering down here at the base of Orthanc can only hope to meekly subsist on the dregs that fall from on high. (R.I.P. Kirstie Alley OK, so, once again... A class is an intentionally named abstraction that consists of a set of narrowly cohesive functions that operate over an internally defined data structure. We do not need the class keyword. Nor do we need polymorphic dispatch. Nor do we need inheritance. A class is just a description, whether in full or in part, of an object. For example - it's time we talked about clouds (which I have looked at from both sides now; and do, in fact, understand pretty well). So... Here come your father's parentheses! (ns spacewar.game-logic.clouds (:require [clojure.spec.alpha :as s] [spacewar.geometry :as geo] [spacewar.game-logic.config :as glc])) (s/def ::x number?) (s/def ::y number?) (s/def ::concentration number?) (s/def ::cloud (s/keys :req-un [::x ::y ::concentration])) (s/def ::clouds (s/coll-of ::cloud)) (defn valid-cloud? [cloud] (let [valid (s/valid? ::cloud cloud)] (when (not valid) (println (s/explain-str ::cloud cloud))) valid)) (defn make-cloud ([] (make-cloud 0 0 0)) ([x y concentration] {:x x :y y :concentration concentration})) (defn harvest-dilithium [ms ship cloud] (let [ship-pos [(:x ship) (:y ship)] cloud-pos [(:x cloud) (:y cloud)]] (if (< (geo/distance ship-pos cloud-pos) glc/dilit

## A birds-eye view of Arrow: Data Immutability with Arrow Optics

DevFeed: [A birds-eye view of Arrow: Data Immutability with Arrow Optics](<https://devfeed.tech/articles/a-birds-eye-view-of-arrow-data-immutability-with-arrow-optics-39301.md>)

Original publisher: [Read original article](<https://kt.academy/article/fk-arrow-optics>)

Published: 2022-12-19T00:15:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [API](<https://devfeed.tech/topics/api.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [arrow](<https://devfeed.tech/tags/arrow.md>), [code](<https://devfeed.tech/tags/code.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [immutability](<https://devfeed.tech/tags/immutability.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [ksp](<https://devfeed.tech/tags/ksp.md>), [lens](<https://devfeed.tech/tags/lens.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial introduces Arrow Optics for transforming nested immutable data in Kotlin. It explains how Arrow Optics uses a basic library and a compiler plug-in built with Kotlin Symbol Processing, with annotations generating lenses that combine getters and setters.

### Source excerpt

Learn to use Arrow Optics to support working on immutable objects.

## Arrow Core in Kotlin: Function Composition, Partial Application, and Recursive Functions

DevFeed: [Arrow Core in Kotlin: Function Composition, Partial Application, and Recursive Functions](<https://devfeed.tech/articles/a-birds-eye-view-of-arrow-working-with-function-with-arrow-core-39299.md>)

Original publisher: [Read original article](<https://kt.academy/article/fk-arrow-core>)

Published: 2022-11-28T00:15:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Library](<https://devfeed.tech/topics/library.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [generation](<https://devfeed.tech/tags/generation.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [library](<https://devfeed.tech/tags/library.md>), [programming](<https://devfeed.tech/tags/programming.md>), [recursion](<https://devfeed.tech/tags/recursion.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

A tutorial on Arrow Core, a Kotlin library for functional programming. It explains function composition, partial application, memoization, and recursive functions, including techniques for working with function arguments and preventing stack overflow in Fibonacci calculations.

### Source excerpt

Learn about essential Arrow functions used for composition, memoization, recursion and functions generation.

## The Graph Architect's Guide to GraphQL Summit 2022

DevFeed: [The Graph Architect's Guide to GraphQL Summit 2022](<https://devfeed.tech/articles/the-graph-architect-s-guide-to-graphql-summit-2022-23539.md>)

Original publisher: [Read original article](<https://www.apollographql.com/blog/the-graph-architects-guide-to-graphql-summit-2022>)

Author: Melissa Annecchini

Published: 2022-09-15T17:36:41Z

Content type: article

Language: en

Sources: [Apollo Blog](<https://devfeed.tech/sources/apollo-blog.md>)

Topics: [GraphQL](<https://devfeed.tech/topics/graphql.md>), [schema design](<https://devfeed.tech/topics/schema-design.md>), [Domain-driven design (DDD)](<https://devfeed.tech/topics/domain-driven-design.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [Elixir](<https://devfeed.tech/topics/elixir.md>), [Java](<https://devfeed.tech/topics/java.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>)

Tags: [announcement](<https://devfeed.tech/tags/announcement.md>), [apis](<https://devfeed.tech/tags/apis.md>), [apollo-federation](<https://devfeed.tech/tags/apollo-federation.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [domain-driven-design](<https://devfeed.tech/tags/domain-driven-design.md>), [elixir](<https://devfeed.tech/tags/elixir.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [java](<https://devfeed.tech/tags/java.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [product](<https://devfeed.tech/tags/product.md>), [schema-design](<https://devfeed.tech/tags/schema-design.md>), [summit](<https://devfeed.tech/tags/summit.md>), [techniques](<https://devfeed.tech/tags/techniques.md>)

### AI overview

This Apollo blog promotes GraphQL Summit 2022 for graph architects and previews sessions on federated supergraph architecture, Apollo Federation, subgraph development across several languages, and large-scale GraphQL schema design.

### Source excerpt

Calling all graph architects! If you are looking for inspiration, best practices, and help building or scaling your organization's supergraph architecture, then this blog is for you. Read on for your graph architect's guide to GraphQL Summit 2022. #ICYMI: GraphQL Summit 2022 is back in person October 3-5 in San Diego for 3 days of surf, sun, and all things GraphQL. Register today to avoid all the FOMO.

[Next page](<https://devfeed.tech/tags/functional-programming.md?cursor=WyIyMDIyLTA5LTE1VDE3OjM2OjQxKzAwOjAwIiwgIjU0YjI2YzI0LTFkODAtNDA5ZS04YjgwLTM4OTAzNzIzMjdhNSJd>)