# functional

Published articles for functional.

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

## 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.

## strace-ui, Bonsai\_term, and the TUI renaissance

DevFeed: [strace-ui, Bonsai\_term, and the TUI renaissance](<https://devfeed.tech/articles/strace-ui-bonsai-term-and-the-tui-renaissance-20213.md>)

Original publisher: [Read original article](<https://blog.janestreet.com/strace-ui-bonsai-term-and-the-tui-renaissance/>)

Author: James Somers

Published: 2026-05-26T00:00:00Z

Content type: article

Language: en

Sources: [Jane Street](<https://devfeed.tech/sources/jane-street.md>)

Topics: [Text-based user interface](<https://devfeed.tech/topics/tui.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [debug](<https://devfeed.tech/topics/debug.md>), [tracing](<https://devfeed.tech/topics/tracing.md>), [OCaml](<https://devfeed.tech/topics/ocaml.md>), [reactive](<https://devfeed.tech/topics/reactive.md>), [Bonsai](<https://devfeed.tech/topics/bonsai-rx.md>), [Library](<https://devfeed.tech/topics/library.md>)

Tags: [debugging](<https://devfeed.tech/tags/debugging.md>), [framework](<https://devfeed.tech/tags/framework.md>), [functional](<https://devfeed.tech/tags/functional.md>), [library](<https://devfeed.tech/tags/library.md>), [ocaml](<https://devfeed.tech/tags/ocaml.md>), [reactive](<https://devfeed.tech/tags/reactive.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [threads](<https://devfeed.tech/tags/threads.md>), [trace](<https://devfeed.tech/tags/trace.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

The article introduces strace-ui, an interactive terminal UI that makes strace output easier to inspect by formatting data, assigning short identifiers to processes and threads, and supporting interactive filtering and navigation. It also discusses how OCaml and the Bonsai framework have made interactive terminal UI development more practical.

### Source excerpt

We've always found strace useful but somewhat hard to work with. Its output is often inscrutable, it's hard to follow subprocesses or threads, and if you want to filter syscalls you have to rerun the trace with a flag for each one. What you want in debugging is a tool for exploring, refining, etc., but strace can make this difficult.

## Guide to Monetizing an AI-Built SaaS with Pricing and Payment Integration

DevFeed: [Guide to Monetizing an AI-Built SaaS with Pricing and Payment Integration](<https://devfeed.tech/articles/from-prompt-to-profit-monetizing-your-first-ai-built-saas-10290.md>)

Original publisher: [Read original article](<https://dodopayments.com/blogs/prompt-to-profit-ai-built-saas/>)

Author: Ayush Agarwal

Published: 2026-03-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [Dodo Payments Blog](<https://devfeed.tech/sources/dodo-payments-blog.md>)

Topics: [Software as a service](<https://devfeed.tech/topics/saas.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Development](<https://devfeed.tech/topics/development.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [cursor](<https://devfeed.tech/topics/cursor.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [api](<https://devfeed.tech/tags/api.md>), [building](<https://devfeed.tech/tags/building.md>), [cursor](<https://devfeed.tech/tags/cursor.md>), [functional](<https://devfeed.tech/tags/functional.md>), [guide](<https://devfeed.tech/tags/guide.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [merchant-of-record](<https://devfeed.tech/tags/merchant-of-record.md>), [payment](<https://devfeed.tech/tags/payment.md>), [payments](<https://devfeed.tech/tags/payments.md>), [prompt](<https://devfeed.tech/tags/prompt.md>), [revenue](<https://devfeed.tech/tags/revenue.md>), [saas](<https://devfeed.tech/tags/saas.md>), [subscription](<https://devfeed.tech/tags/subscription.md>), [vat](<https://devfeed.tech/tags/vat.md>)

### AI overview

A practical guide to turning an AI-generated application into a monetized SaaS product. It covers billing models, payment integration, subscription pricing, tax compliance, and post-payment webhooks.

### Source excerpt

The complete playbook for turning an AI-generated app into a revenue-generating SaaS. Covers pricing strategy, payment integration, and going live in under a day.

## Lazy Linearity for a Core Functional Language (POPL 2026)

DevFeed: [Lazy Linearity for a Core Functional Language (POPL 2026)](<https://devfeed.tech/articles/lazy-linearity-for-a-core-functional-language-popl-2026-27919.md>)

Original publisher: [Read original article](<http://alt-romes.github.io/posts/2025-11-26-lazy-linearity-popl26.html>)

Published: 2025-11-26T00:00:00Z

Content type: article

Language: en

Sources: [Romes' Musings](<https://devfeed.tech/sources/romes-musings.md>)

Topics: [Haskell](<https://devfeed.tech/topics/haskell.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [evaluation](<https://devfeed.tech/tags/evaluation.md>), [functional](<https://devfeed.tech/tags/functional.md>), [haskell](<https://devfeed.tech/tags/haskell.md>), [language](<https://devfeed.tech/tags/language.md>), [optimisations](<https://devfeed.tech/tags/optimisations.md>), [paper](<https://devfeed.tech/tags/paper.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

The article announces that the paper "Lazy Linearity for a Core Functional Language" will be published at POPL 2026. It explains a type system that captures linearity under Haskell's non-strict evaluation and is intended to support optimisations of linear Core programs.

### Source excerpt

I'm very proud to announce that Lazy Linearity for a Core Functional Language, a paper by myself and Bernardo Toninho, will be published at POPL 26! [DOI, ACM]. The extended version of the paper, which includes all proofs, is available here [arXiv, PDF, DOI]. The short-ish story: In 2023, for my Master's thesis, I reached out to Arnaud Spiwack to discuss how Linear Types had been implemented in GHC. I wanted to research compiler optimisations made possible by linearity. Arnaud was quick to tell me: "Well yes, but you can't!" "Even though Haskell is linearly typed, Core isn't!"1 Linearity is ignored in Core because, as soon as it's optimised, previously valid linear programs become invalid. It turns out that traditional linear type systems are too syntactic, or strict, about understanding linearity - but Haskell, regardless of linear types, is lazily evaluated. Improving optimisations would have to wait. Our paper presents a system which, in contrast, also accepts programs that can only be understood as linear under non-strict evaluation. Including the vast majority of optimised linear Core programs (with proofs!). The key ideas of this paper were developed during my Master's, but it took a few more years of on-and-off work (supported by my employer Well-Typed) with Bernardo to crystalize the understanding of a "lazy linearity" and strengthen the theoretical results. Now, the proof of the pudding is in the eating. Go read it! Abstract Traditionally, in linearly typed languages, consuming a linear resource is synonymous with its syntactic occurrence in the program. However, under the lens of non-strict evaluation, linearity can be further understood semantically, where a syntactic occurrence of a resource does not necessarily entail using that resource when the program is executed. While this distinction has been largely unexplored, it turns out to be inescapable in Haskell's optimising compiler, which heavily rewrites the source program in ways that break syntactic l

## Simplify Your Code: Functional Core, Imperative Shell

DevFeed: [Simplify Your Code: Functional Core, Imperative Shell](<https://devfeed.tech/articles/simplify-your-code-functional-core-imperative-shell-23865.md>)

Original publisher: [Read original article](<http://testing.googleblog.com/2025/10/simplify-your-code-functional-core.html>)

Author: Google Testing Bloggers (noreply@blogger.com)

Published: 2025-10-20T13:53:00Z

Content type: tutorial

Language: en

Sources: [Google Testing Blog](<https://devfeed.tech/sources/google-testing-blog.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [IO](<https://devfeed.tech/topics/io.md>)

Tags: [arham-jain](<https://devfeed.tech/tags/arham-jain.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [code](<https://devfeed.tech/tags/code.md>), [database](<https://devfeed.tech/tags/database.md>), [email](<https://devfeed.tech/tags/email.md>), [function](<https://devfeed.tech/tags/function.md>), [functional](<https://devfeed.tech/tags/functional.md>), [map](<https://devfeed.tech/tags/map.md>), [mutation](<https://devfeed.tech/tags/mutation.md>), [network](<https://devfeed.tech/tags/network.md>), [state](<https://devfeed.tech/tags/state.md>), [test](<https://devfeed.tech/tags/test.md>), [tott](<https://devfeed.tech/tags/tott.md>)

### AI overview

This tutorial explains the functional core, imperative shell pattern: keep pure, testable business logic separate from side effects such as database calls, network requests, email delivery, and external state mutation. It demonstrates the pattern by refactoring expiration-notification code.

### Source excerpt

This article was adapted from a Google Tech on the Toilet (TotT) episode. You can download a printer-friendly version of this TotT episode and post it in your office. By Arham Jain Is your code a tangled mess of business logic and side effects? Mixing database calls, network requests, and other external interactions directly with your core logic can lead to code that's difficult to test, reuse, and understand. Instead, consider writing a functional core that's called from an imperative shell. Separating your code into functional cores and imperative shells makes it more testable, maintainable, and adaptable. The core logic can be tested in isolation, and the imperative shell can be swapped out or modified as needed. Here's some messy example code that mixes logic and side effects to send expiration notification emails to users: // Bad: Logic and side effects are mixed function sendUserExpiryEmail(): void { for (const user of db.getUsers()) { if (user.subscriptionEndDate > Date.now()) continue; if (user.isFreeTrial) continue; email.send(user.email, "Your account has expired " + user.name + "."); } } A functional core should contain pure, testable business logic, which is free of side effects (such as I/O or external state mutation). It operates only on the data it is given. An imperative shell is responsible for side effects, like database calls and sending emails. It uses the functions in your functional core to perform the business logic. Rewriting the above code to follow the functional core / imperative shell pattern might look like: Functional core function getExpiredUsers(users: User[], cutoff: Date): User[] { return users.filter(user => user.subscriptionEndDate <= cutoff && !user.isFreeTrial); } function generateExpiryEmails(users: User[]): Array<[string, string]> { return users.map(user => ([user.email, "Your account has expired " + user.name + "."]) ); } Imperative shell email.bulkSend(generateExpiryEmails(getExpiredUsers(db.getUsers(), Date.now()))); No

## Functional HTML

DevFeed: [Functional HTML](<https://devfeed.tech/articles/functional-html-36165.md>)

Original publisher: [Read original article](<https://overreacted.io/functional-html/>)

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

Content type: opinion

Language: en

Sources: [Dan Abramov](<https://devfeed.tech/sources/dan-abramov.md>)

Topics: [HTML](<https://devfeed.tech/topics/html.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [JSON](<https://devfeed.tech/topics/json.md>)

Tags: [functional](<https://devfeed.tech/tags/functional.md>), [html](<https://devfeed.tech/tags/html.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [json](<https://devfeed.tech/tags/json.md>)

### AI overview

The article reimagines HTML as a functional, serialized format. It proposes defining custom tags with JavaScript functions, passing attributes and objects, and serializing the resulting structure as a JSON tree that can later be converted into conventional HTML. It also considers asynchronously reading data from the filesystem during serialization.

### Source excerpt

Tags on both sides.

## Choosing Wisely: for vs. forEach in Kotlin (A Thinking Dev's Perspective)

DevFeed: [Choosing Wisely: for vs. forEach in Kotlin (A Thinking Dev's Perspective)](<https://devfeed.tech/articles/choosing-wisely-for-vs-foreach-in-kotlin-a-thinking-dev-s-perspective-24905.md>)

Original publisher: [Read original article](<https://blog.blundellapps.co.uk/choosing-wisely-for-vs-foreach-in-kotlin-a-thinking-devs-perspective/>)

Author: blundell

Published: 2025-04-04T14:25:30Z

Content type: article

Language: en

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

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

Tags: [androiddev](<https://devfeed.tech/tags/androiddev.md>), [code](<https://devfeed.tech/tags/code.md>), [dev](<https://devfeed.tech/tags/dev.md>), [foreach](<https://devfeed.tech/tags/foreach.md>), [functional](<https://devfeed.tech/tags/functional.md>), [intermediate](<https://devfeed.tech/tags/intermediate.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [loops](<https://devfeed.tech/tags/loops.md>), [programming](<https://devfeed.tech/tags/programming.md>), [readability](<https://devfeed.tech/tags/readability.md>), [reference](<https://devfeed.tech/tags/reference.md>), [reference-androiddev-kotlin](<https://devfeed.tech/tags/reference-androiddev-kotlin.md>), [structure](<https://devfeed.tech/tags/structure.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

This Kotlin development article argues against reflexively choosing forEach. It compares forEach with traditional for loops and dedicated functional operators, emphasizing readability, explicit control, side effects, and clearer data flow.

### Source excerpt

The forEach loop, are you using it without thinking? In Kotlin, empirically forEach is often the go-to loop, it's pragmatically close at reach in the IDE auto-complete, but is it always the right choice? This post argues that for loops deserve more consideration, offering clarity and control that forEach sometimes lacks. Let's discuss why a [...] The post Choosing Wisely: for vs. forEach in Kotlin (A Thinking Dev's Perspective) first appeared on Blundell.

## Functional Interfaces Can Extend Other Interfaces

DevFeed: [Functional Interfaces Can Extend Other Interfaces](<https://devfeed.tech/articles/a-functional-intreface-can-extend-other-interfaces-30755.md>)

Original publisher: [Read original article](<http://blog.vanillajava.blog/2025/02/a-functional-intreface-can-extend-other.html>)

Author: Peter Lawrey (noreply@blogger.com)

Published: 2025-02-20T09:04:00Z

Content type: article

Language: en

Sources: [Vanilla Java](<https://devfeed.tech/sources/vanilla-java.md>)

Topics: [interfaces](<https://devfeed.tech/topics/interfaces.md>)

Tags: [functional](<https://devfeed.tech/tags/functional.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [puzzles](<https://devfeed.tech/tags/puzzles.md>)

### AI overview

The article explains that a functional interface can extend marker, functional, and non-functional interfaces, as well as an annotation.

### Source excerpt

A functional interface can extend a marker interface, functional interface, non-functional interface, and an annotation. A recent X poll suggested 25% of those responding didn't know that.

## Using feature flags in GraphQL

DevFeed: [Using feature flags in GraphQL](<https://devfeed.tech/articles/using-feature-flags-in-graphql-25672.md>)

Original publisher: [Read original article](<https://adambennett.dev/2024/09/using-feature-flags-in-graphql/>)

Published: 2024-09-10T19:42:33Z

Content type: tutorial

Language: en

Sources: [Posts on Adam Bennett](<https://devfeed.tech/sources/posts-on-adam-bennett.md>)

Topics: [GraphQL](<https://devfeed.tech/topics/graphql.md>), [feature flags](<https://devfeed.tech/topics/feature-flags.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [android](<https://devfeed.tech/tags/android.md>), [apollo](<https://devfeed.tech/tags/apollo.md>), [blog](<https://devfeed.tech/tags/blog.md>), [career](<https://devfeed.tech/tags/career.md>), [compose](<https://devfeed.tech/tags/compose.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [feature-flags](<https://devfeed.tech/tags/feature-flags.md>), [finance](<https://devfeed.tech/tags/finance.md>), [functional](<https://devfeed.tech/tags/functional.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [growth](<https://devfeed.tech/tags/growth.md>), [java](<https://devfeed.tech/tags/java.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [money](<https://devfeed.tech/tags/money.md>), [opinions](<https://devfeed.tech/tags/opinions.md>), [software](<https://devfeed.tech/tags/software.md>), [startups](<https://devfeed.tech/tags/startups.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>), [training](<https://devfeed.tech/tags/training.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial explains how GraphQL directives can conditionally include fields in queries. It shows how passing a feature flag to a directive, including with Apollo, can prevent risky new fields from triggering backend requests and causing an entire query to fail.

### Source excerpt

I've been using GraphQL in some form or another for a couple of years now, and I have... opinions about it. Opinions notwithstanding, it's a supremely flexible and powerful tool, and I just want to highlight something here that it seems quite a few people don't know about. That something is Directives, which is a way of optionally including fields. But why is this useful?

## ICFP 2024

DevFeed: [ICFP 2024](<https://devfeed.tech/articles/icfp-2024-20181.md>)

Original publisher: [Read original article](<https://blog.janestreet.com/icfp-2024-index/>)

Author: Nailen Matschke

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

Content type: article

Language: en

Sources: [Jane Street](<https://devfeed.tech/sources/jane-street.md>)

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

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [conference](<https://devfeed.tech/tags/conference.md>), [functional](<https://devfeed.tech/tags/functional.md>), [language](<https://devfeed.tech/tags/language.md>), [memory-management](<https://devfeed.tech/tags/memory-management.md>), [ocaml](<https://devfeed.tech/tags/ocaml.md>), [programming](<https://devfeed.tech/tags/programming.md>), [talks](<https://devfeed.tech/tags/talks.md>)

### AI overview

Jane Street previews its participation in ICFP 2024 and discusses OCaml work on type-system features, code generation, register allocation, inlining, memory management, and parallel programming. It also describes plans to upstream compiler extensions and provide a bleeding-edge opam repository for testing them.

### Source excerpt

It's no secret that Jane Street is an active participant in the programming language community, and we're excited to be attending ICFP 2024, the International Conference on Functional Programming, in Milan next week! Most members of our OCaml Language team will be there, and as usual, we look forward to sharing our work with the wider community. Please see below for a full list of papers and talks that Jane Street folk are involved in. Note that a lot of these are collaborations of one kind or another with researchers outside of Jane Street.

## Avoid Reading Feature Flags Inside Functions

DevFeed: [Avoid Reading Feature Flags Inside Functions](<https://devfeed.tech/articles/a-feature-flag-psa-25671.md>)

Original publisher: [Read original article](<https://adambennett.dev/2023/09/a-feature-flag-psa/>)

Published: 2023-09-29T22:45:18Z

Content type: opinion

Language: en

Sources: [Posts on Adam Bennett](<https://devfeed.tech/sources/posts-on-adam-bennett.md>)

Topics: [feature flags](<https://devfeed.tech/topics/feature-flags.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [advice](<https://devfeed.tech/tags/advice.md>), [algorithms](<https://devfeed.tech/tags/algorithms.md>), [android](<https://devfeed.tech/tags/android.md>), [blog](<https://devfeed.tech/tags/blog.md>), [career](<https://devfeed.tech/tags/career.md>), [compose](<https://devfeed.tech/tags/compose.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [feature-flags](<https://devfeed.tech/tags/feature-flags.md>), [finance](<https://devfeed.tech/tags/finance.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [functional](<https://devfeed.tech/tags/functional.md>), [growth](<https://devfeed.tech/tags/growth.md>), [java](<https://devfeed.tech/tags/java.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [money](<https://devfeed.tech/tags/money.md>), [opinions](<https://devfeed.tech/tags/opinions.md>), [performance](<https://devfeed.tech/tags/performance.md>), [remote-config](<https://devfeed.tech/tags/remote-config.md>), [server](<https://devfeed.tech/tags/server.md>), [software](<https://devfeed.tech/tags/software.md>), [startup](<https://devfeed.tech/tags/startup.md>), [startups](<https://devfeed.tech/tags/startups.md>), [state](<https://devfeed.tech/tags/state.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>), [training](<https://devfeed.tech/tags/training.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This article argues that feature flags should be read once and passed into functions or constructors rather than looked up repeatedly. It cites performance costs in hot code paths and unpredictable behavior when flag values change during synchronization with a server.

### Source excerpt

I Threaded - made a thread? Posted? Tweeted (can we use that again now)? Whatever - about this earlier but I thought I'd elaborate a little. You do use feature flags, right? You should. If you work with trunk-based development, like everyone does now, you must use feature flags to hide upcoming features. Side note: this is why release notes are so boring now, because features aren't really tied to releases.

## Introducing Volt: An elegantly crafted functional API for Livewire

DevFeed: [Introducing Volt: An elegantly crafted functional API for Livewire](<https://devfeed.tech/articles/introducing-volt-an-elegantly-crafted-functional-api-for-livewire-3730.md>)

Original publisher: [Read original article](<https://laravel.com/blog/introducing-volt-an-elegantly-crafted-functional-api-for-livewire>)

Author: Nuno Maduro

Published: 2023-07-26T16:00:00Z

Content type: release

Language: en

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

Topics: [Livewire](<https://devfeed.tech/topics/livewire.md>), [Laravel](<https://devfeed.tech/topics/laravel.md>), [reactive](<https://devfeed.tech/topics/reactive.md>), [PHP](<https://devfeed.tech/topics/php.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [applications](<https://devfeed.tech/tags/applications.md>), [functional](<https://devfeed.tech/tags/functional.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [php](<https://devfeed.tech/tags/php.md>), [reactive](<https://devfeed.tech/tags/reactive.md>)

### AI overview

Laravel introduces Volt, a functional API for Livewire that lets component PHP logic and Blade templates coexist in one file. Volt compiles the functional code into conventional Livewire class components, reducing boilerplate while preserving Livewire capabilities.

### Source excerpt

Volt is an elegantly crafted functional API for Livewire, allowing component's PHP logic and Blade templates to coexist in the same file. Behind the scenes, the functional API is compiled to Livewire class components and linked with the template present in the same file.

## Oxidizing OCaml: Rust-Style Ownership

DevFeed: [Oxidizing OCaml: Rust-Style Ownership](<https://devfeed.tech/articles/oxidizing-ocaml-rust-style-ownership-20201.md>)

Original publisher: [Read original article](<https://blog.janestreet.com/oxidizing-ocaml-ownership/>)

Author: Max Slater

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

Content type: article

Language: en

Sources: [Jane Street](<https://devfeed.tech/sources/jane-street.md>)

Topics: [OCaml](<https://devfeed.tech/topics/ocaml.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [functional](<https://devfeed.tech/tags/functional.md>), [immutability](<https://devfeed.tech/tags/immutability.md>), [ocaml](<https://devfeed.tech/tags/ocaml.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

This article examines ownership modes in OCaml with Jane Street extensions. It explains how unique references can allow in-place updates while preserving an immutable interface, and discusses how uniqueness may support static prevention of data races in multicore OCaml.

### Source excerpt

OCaml with Jane Street extensions is available from our public opam repo. Only a slice of the features described in this series are currently implemented.

## AI Programming for Absolute Beginners

DevFeed: [AI Programming for Absolute Beginners](<https://devfeed.tech/articles/ai-programming-for-absolute-beginners-20712.md>)

Original publisher: [Read original article](<https://medium.com/javascript-scene/ai-programming-for-absolute-beginners-16ac3fc6dea6?source=rss----c0aeac5284ad---4>)

Author: Eric Elliott

Published: 2023-06-12T02:01:14Z

Content type: tutorial

Language: en

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

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Language models](<https://devfeed.tech/topics/language-models.md>), [Code](<https://devfeed.tech/topics/code.md>), [Declarative programming](<https://devfeed.tech/topics/declarative-programming.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [anthropic](<https://devfeed.tech/topics/anthropic.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-models](<https://devfeed.tech/tags/ai-models.md>), [beginners](<https://devfeed.tech/tags/beginners.md>), [chatgpt](<https://devfeed.tech/tags/chatgpt.md>), [claude](<https://devfeed.tech/tags/claude.md>), [code](<https://devfeed.tech/tags/code.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [functional](<https://devfeed.tech/tags/functional.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [language-models](<https://devfeed.tech/tags/language-models.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [technology](<https://devfeed.tech/tags/technology.md>)

### AI overview

An introductory tutorial to SudoLang, a natural-language pseudocode programming language designed to instruct advanced language models such as ChatGPT, GPT-4, and Claude. It explains SudoLang's interface-oriented, constraint-based, and pseudo-functional approach, along with its declarative, compositional, and expressive properties.

### Source excerpt

Your First Steps with SudoLang If you want to build chat bots, games, or applications using AI models like ChatGPT, you've come to the right place. In this article, we're going to dive into the basics of SudoLang, a powerful natural language pseudocode programming language designed to instruct advanced language models like OpenAI's GPT-4, Anthropic's Claude, and others. SudoLang was co-designed by me (Eric Elliott) and GPT-4 to create an easy-to-learn language that AI models would understand without any special training. All sufficiently advanced language models naturally understand SudoLang and follow its instructions. Just remember that AI models can sometimes make mistakes, just like people. And remember that you're learning a new skill, and that takes time and practice. Even if you've coded before, SudoLang is different than anything you've learned before. A programming paradigm defines the units (like building blocks) we use to compose our programs together. Object oriented languages use objects as the primary building block. Functional languages use functions, and so on. SudoLang is: Interface-oriented: You tell it what to remember and how to interact with you, and it handles the rest, like a smart personal assistant. Constraint-based: It follows rules you set. Pseudo-Functional: Build complex processes by composing small, simple functions together. These paradigms give SudoLang programs the following properties: Declarative: You tell it what you want and it figures out how. Compositional: You can combine different pieces to create something new. Expressive: You can do a lot with a little code. Don't worry if you don't know what all that means, yet. Just remember to be patient with yourself and with your AI friends if something doesn't work the first time. Constraint-based programming was invented in the early 1960's by the genius Ivan Sutherland, who also pioneered screens you could directly interact with (like your phone), and virtual reality headsets. In co

## 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

## Dynamic Refinements and Function Application

DevFeed: [Dynamic Refinements and Function Application](<https://devfeed.tech/articles/dynamic-refinements-and-function-application-22383.md>)

Original publisher: [Read original article](<https://www.red-lang.org/2023/06/dynamic-refinements-and-function.html>)

Author: Nenad Rakocevic (noreply@blogger.com)

Published: 2023-06-07T22:55:00Z

Content type: article

Language: en

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

Topics: [Red](<https://devfeed.tech/topics/red.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [apply](<https://devfeed.tech/tags/apply.md>), [build](<https://devfeed.tech/tags/build.md>), [code](<https://devfeed.tech/tags/code.md>), [examples](<https://devfeed.tech/tags/examples.md>), [functional](<https://devfeed.tech/tags/functional.md>), [hof](<https://devfeed.tech/tags/hof.md>), [technical](<https://devfeed.tech/tags/technical.md>)

### AI overview

This article explains Red's new apply functionality and dynamic refinements. It describes how dynamic refinement values are retrieved from context, how unused arguments are handled, and how Apply/all supplies function parameters in specification order with type-checked logic values for refinement slots.

### Source excerpt

It's Time to Apply Yourself to Red Red has never had an apply function, though we knew it would come someday. In the meantime, some of us rolled our own. Gregg's was simple, neither flexible nor efficient, and just a couple lines of code. Boris made a much more capable version, but it could still only be so fast as a mezzanine. R2 had a mezz version, which suffered the same problem. All that changes now. Apply is dead! Long live Apply! It required deep work, and a lot of design effort, but we think you'll like the results, whether you're a high-level Reducer, or anxious to see how much leverage you can, um, apply, from a functional perspective. Everybody wins. If you don't know what apply is, in terms of functional languages, take a moment and read up. If you can get through the introduction there without getting dizzy, great. If your head is spinning, feel free to stop after the first section of this article and ignore the deep dive. You still get 90% of the value for most high level use cases. Gregg got so dizzy that he fell down, but was still able to help with this article. Function application is largely about composition. How you can combine functions in a concise way for maximum leverage and minimum code. The problem with its design in many languages is that it makes things harder to understand. Rather than concrete functions names, there is indirection and abstraction. It can be tricky to get right, especially in a flexible language like Red, while also maintaining as much safety as possible. You can drive fast, but still wear your seat belt. Dynamic Refinements This subtle feature is likely to see wide use, because it will reduce code and let people build more flexible functions. It's also easy to explain. Here's an example. First, how you would write it today: repend: func [ {Appends a reduced value to a series and returns the series head} series [series!] value /only "Appends a block value as a block" ][ either only [ append/only series reduce :value ][ a

## Migrating Your Design System to Jetpack Compose Part 4: Stakeholder Retro

DevFeed: [Migrating Your Design System to Jetpack Compose Part 4: Stakeholder Retro](<https://devfeed.tech/articles/migrating-your-design-system-to-jetpack-compose-part-4-stakeholder-retro-25670.md>)

Original publisher: [Read original article](<https://adambennett.dev/2023/04/migrating-your-design-system-to-jetpack-compose-part-4-stakeholder-retro/>)

Published: 2023-04-03T11:19:56Z

Content type: opinion

Language: en

Sources: [Posts on Adam Bennett](<https://devfeed.tech/sources/posts-on-adam-bennett.md>)

Topics: [Design system](<https://devfeed.tech/topics/design-system.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Development](<https://devfeed.tech/topics/development.md>), [Logging](<https://devfeed.tech/topics/logging.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [android](<https://devfeed.tech/tags/android.md>), [blog](<https://devfeed.tech/tags/blog.md>), [career](<https://devfeed.tech/tags/career.md>), [compose](<https://devfeed.tech/tags/compose.md>), [design-system](<https://devfeed.tech/tags/design-system.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [finance](<https://devfeed.tech/tags/finance.md>), [functional](<https://devfeed.tech/tags/functional.md>), [growth](<https://devfeed.tech/tags/growth.md>), [java](<https://devfeed.tech/tags/java.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [logging](<https://devfeed.tech/tags/logging.md>), [metrics](<https://devfeed.tech/tags/metrics.md>), [money](<https://devfeed.tech/tags/money.md>), [opinions](<https://devfeed.tech/tags/opinions.md>), [software](<https://devfeed.tech/tags/software.md>), [startups](<https://devfeed.tech/tags/startups.md>), [technical](<https://devfeed.tech/tags/technical.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>), [training](<https://devfeed.tech/tags/training.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

A retrospective on migrating a design system from Views to Jetpack Compose, focusing on stakeholder communication, measuring internal developer-facing metrics, and presenting progress during a risky refactoring project.

### Source excerpt

Featured in jetc.dev. What, praytell, has caused me, nearly two years after I said I would, to finish this blog series? Could the single day of sunlight we had yesterday have triggered something in my Canadian winter-addled brain? Perhaps. A second theory: I've done a lot of interviewing recently, and I've had to talk a lot about projects - what went well, what went not so well, and talk a lot about some of my strengths and failings as a technical lead. And I spoke about this project a lot.

## Bean Machine Retrospective, part 8

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

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

Author: ericlippert

Published: 2023-02-23T20:54:17Z

Content type: article

Language: en

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

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Code review](<https://devfeed.tech/topics/code-review.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [functional](<https://devfeed.tech/tags/functional.md>), [source](<https://devfeed.tech/tags/source.md>), [test](<https://devfeed.tech/tags/test.md>), [transformation](<https://devfeed.tech/tags/transformation.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

### AI overview

This retrospective explains Beanstalk's combinator-inspired source code transformation system. It uses functional programming for AST transformations, with patterns, partial transformation rules, and combinators. The approach aims to make rewriting logic concise, testable, and easy to adapt to different traversal strategies.

### Source excerpt

Before getting into the details of how my combinator-inspired source code transformation system works, I should say first, what is a general overview of the system? and second, why did I build it at all? In my experience, a typical ... Continue reading ->

## 26 programming languages in 25 days, Part 2: Reflections on language design

DevFeed: [26 programming languages in 25 days, Part 2: Reflections on language design](<https://devfeed.tech/articles/26-programming-languages-in-25-days-part-2-reflections-on-language-design-35233.md>)

Original publisher: [Read original article](<http://matt.might.net/articles/26-languages-part2/>)

Published: 2022-12-31T19:36:56Z

Content type: opinion

Language: en

Sources: [Matt Might](<https://devfeed.tech/sources/matt-might.md>)

Topics: [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Advent of Code](<https://devfeed.tech/topics/advent-of-code.md>)

Tags: [advent-of-code](<https://devfeed.tech/tags/advent-of-code.md>), [algorithms](<https://devfeed.tech/tags/algorithms.md>), [algorithms-and-data-structures](<https://devfeed.tech/tags/algorithms-and-data-structures.md>), [functional](<https://devfeed.tech/tags/functional.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>)

### AI overview

The author reflects on completing Advent of Code 2022 with 26 programming languages in 25 days. They found that functional techniques, algorithms, and data structures generally mattered more than language performance, while language design choices such as syntax, typing, and purity affected readability, debugging, and development speed in different puzzle contexts.

### Source excerpt

I recently wrote about completing Advent of Code 2022 using a different programming language (or two) every day for 25 days. That note focused on the strategy, tactics and logistics involved in using 26 languages in 25 days without saying much about the languages or the experience itself. Using so many languages in such a short span provided insight into tradeoffs in language design. Here are my two high-level reflections from the experience: Good program design in the first part of each puzzle - especially more functional techniques and abstractions - tended to make the second part easier. So, in general, functional languages seemed to have the advantage in the puzzles. Using better algorithms and data structures was more important than having a "faster" programming language. There was never a time where rewriting in another language felt like the right way to get better performance. Read on for more specific reflections on language design. Click here to read the rest of the article

## Leveraging the Plain Old Python Function

DevFeed: [Leveraging the Plain Old Python Function](<https://devfeed.tech/articles/leveraging-the-plain-old-python-function-29340.md>)

Original publisher: [Read original article](<https://multithreaded.stitchfix.com/blog/2022/12/14/plain-old-python-functions/>)

Published: 2022-12-14T09:00:00Z

Content type: article

Language: en

Sources: [Stitch Fix](<https://devfeed.tech/sources/stitch-fix.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [MLOps](<https://devfeed.tech/topics/mlops.md>), [Data Science](<https://devfeed.tech/topics/data-science.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>)

Tags: [apis](<https://devfeed.tech/tags/apis.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [dsl](<https://devfeed.tech/tags/dsl.md>), [functional](<https://devfeed.tech/tags/functional.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [mlops](<https://devfeed.tech/tags/mlops.md>), [model-deployment](<https://devfeed.tech/tags/model-deployment.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

Stitch Fix describes a function-first approach to data science APIs and MLOps. Instead of building custom model-deployment mechanisms, microservices, and tightly coupled data transformations, data scientists can use plain Python functions backed by platform infrastructure.

### Source excerpt

The role of the full-stack-data-scientist is not what it once was. With the advent of more powerful tooling, new industry standards in MLOps, and greater investment in platforms, the day-to-day of a data scientist has changed significantly at Stitch Fix. The difference, however, is subtle. The structure of their job remains the same - engineers still do not write ETLs and data scientists function as generalists, but they now have to think on a higher level. Their job is constantly getting more and more complex--the business needs are in flux and the infrastructure they use is more powerful than it ever was. The old strategy of cobbling together complex systems will only end in stressed-out data scientists with too much infrastructure on their plate. To avoid this cycle of complexity, Stitch Fix invests in a platform team to innovate new ways of supporting a data scientist's engineering needs. Rather than constructing custom model-deployment mechanisms, building microservices from the ground up, and managing highly interdependent chains of data transformations, data scientists at Stitch Fix can leverage powerful infrastructure by constructing plain old Python functions to represent their needs. In this blog post we're going to take a different approach than usual. Rather than digging into a specific piece of technology, we'll present our philosophy of functions for data science APIs and back it up with some motivating examples. We'll explain the power of functions as a DSL, share some successes we've had using functional interfaces to build our MLOps stack, and connect our approach with external, open-source frameworks that the industry is beginning to adopt. Our goal is to convince you that a function-first approach will enable data practitioners to do more while doing less. The functional approach allows them to plug into the business in a scalable manner while avoiding the complexity of managing infrastructure and architectural decisions. On Functions and Functiona

## The Verse Calculus: a Core Calculus for Functional Logic Programming

DevFeed: [The Verse Calculus: a Core Calculus for Functional Logic Programming](<https://devfeed.tech/articles/the-verse-calculus-a-core-calculus-for-functional-logic-programming-29489.md>)

Original publisher: [Read original article](<http://lambda-the-ultimate.org/node/5662>)

Published: 2022-12-12T16:23:17Z

Content type: article

Language: en

Sources: [Lambda the Ultimate](<https://devfeed.tech/sources/lambda-the-ultimate.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [draft](<https://devfeed.tech/tags/draft.md>), [functional](<https://devfeed.tech/tags/functional.md>), [lambda-calculus](<https://devfeed.tech/tags/lambda-calculus.md>), [languages](<https://devfeed.tech/tags/languages.md>), [logic](<https://devfeed.tech/tags/logic.md>), [paper](<https://devfeed.tech/tags/paper.md>), [programming](<https://devfeed.tech/tags/programming.md>), [rewrite](<https://devfeed.tech/tags/rewrite.md>), [semantics](<https://devfeed.tech/tags/semantics.md>)

### AI overview

The draft paper introduces the Verse calculus (VC), a core calculus for functional logic programming. Its main contribution is a small-step rewrite semantics that enables reasoning about VC programs through successive rewrites, as with lambda calculus. The authors note that the design is still a work in progress and that the current rewrite rules may not be confluent.

### Source excerpt

The Verse Calculus: a Core Calculus for Functional Logic Programming https://simon.peytonjones.org/assets/pdfs/verse-conf.pdf LENNART AUGUSTSSON, Epic Games, Sweden JOACHIM BREITNER KOEN CLAESSEN, Epic Games, Sweden RANJIT JHALA, Epic Games, USA SIMON PEYTON JONES, Epic Games, United Kingdom OLIN SHIVERS, Epic Games, USA/li> TIM SWEENEY, Epic Games, USA Functional logic languages have a rich literature, but it is tricky to give them a satisfying semantics. In this paper we describe the Verse calculus, VC, a new core calculus for functional logical programming. Our main contribution is to equip VC with a small-step rewrite semantics, so that we can reason about a VC program in the same way as one does with lambda calculus; that is, by applying successive rewrites to it. This draft paper describes our current thinking about Verse. It is very much a work in progress, not a finished product. The broad outlines of the design are stable. However, the details of the rewrite rules may well change; we think that the current rules are not confluent, in tiresome ways. (If you are knowledgeable about confluence proofs, please talk to us!)We are eager to enagage in a dialogue with the community. Please do write to us.

## Using KotlinX Flow for Functional Data Pipelines

DevFeed: [Using KotlinX Flow for Functional Data Pipelines](<https://devfeed.tech/articles/functional-flowing-25513.md>)

Original publisher: [Read original article](<http://nomisrev.github.io/functional-flowing/>)

Author: Simon Vergauwen

Published: 2022-11-24T00:00:00Z

Content type: article

Language: en

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

Topics: [Streaming](<https://devfeed.tech/topics/streaming.md>), [data](<https://devfeed.tech/topics/data.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [data](<https://devfeed.tech/tags/data.md>), [flow](<https://devfeed.tech/tags/flow.md>), [functional](<https://devfeed.tech/tags/functional.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlinx](<https://devfeed.tech/tags/kotlinx.md>), [pipelines](<https://devfeed.tech/tags/pipelines.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [talk](<https://devfeed.tech/tags/talk.md>)

### AI overview

A talk explains how KotlinX Flow can be used to describe functional programs and build efficient streaming pipelines for transforming and manipulating data.

### Source excerpt

KotlinX's Flow data type is extremely powerful, and offers an API that is quite familiar for functional programmers. This talk will showcase how we can leverage KotlinX Flow to describe powerful programs, and build pipelines to transform and manipulate data in an efficient streaming way.

## Introducing Test Suites

DevFeed: [Introducing Test Suites](<https://devfeed.tech/articles/introducing-test-suites-24655.md>)

Original publisher: [Read original article](<https://blog.gradle.org/introducing-test-suites>)

Author: Tom Tresansky

Published: 2022-11-15T05: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>), [Testing](<https://devfeed.tech/topics/testing.md>), [Java](<https://devfeed.tech/topics/java.md>), [Development](<https://devfeed.tech/topics/development.md>), [code productivity](<https://devfeed.tech/topics/code-productivity.md>)

Tags: [automated](<https://devfeed.tech/tags/automated.md>), [code](<https://devfeed.tech/tags/code.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [functional](<https://devfeed.tech/tags/functional.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [integration](<https://devfeed.tech/tags/integration.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [production](<https://devfeed.tech/tags/production.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This article introduces Declarative Test Suites in Gradle 7.3. It explains how test suites help manage unit, integration, and end-to-end tests in a single Gradle JVM project while handling differences in dependencies, runtime requirements, external systems, and testing frameworks.

### Source excerpt

As projects grow in size and complexity and otherwise mature, they tend to accumulate a large collection of automated tests. Testing your software at multiple levels of granularity is important to surface problems quickly and to increase developer productivity. In Gradle 7.3, released November 2021, the Gradle team introduced a new feature called Declarative Test Suites. Using this feature makes it much easier to manage different types of tests within a single Gradle JVM project without worrying about low level "plumbing" details. Why Test Suites? Normally - whether or not you're practicing strict Test Driven Development - as you develop a project you will continuously add new unit tests alongside your production classes. By convention, for a Java project, these tests live in src/test/java: These unit tests ensure your classes behave correctly in isolation from the very beginning of your project's lifecycle. At some point later in development, you will be ready to test how your classes work together to create a larger system using integration tests. Later still, as a final step in certifying that your project works as designed, you will probably want to run the entire system in end-to-end tests which check functional requirements, measure performance, or otherwise confirm its readiness for release. There are a lot of error-prone details you need to consider in this process. Test Suites was created to improve this situation, in response to the hardships detailed below. Considerations when setting up additional tests Varied test goals often involve different and incompatible patterns. At a minimum you'll want to organize your test code by separating tests into different directories for each goal: But separating the source files is only the beginning. These types of tests might require different preconditions to be met prior to testing, utilize entirely different runtime and compile time dependencies, or interact with different external systems. The very testing framew

## Four of a Kotlin Kind at I code Java 2022 conference

DevFeed: [Four of a Kotlin Kind at I code Java 2022 conference](<https://devfeed.tech/articles/four-of-a-kotlin-kind-at-i-code-java-2022-conference-32052.md>)

Original publisher: [Read original article](<https://www.maiatoday.net/p/four-of-a-kotlin-kind-at-i-code-java-2022-conference/>)

Published: 2022-10-14T08:30:41Z

Content type: article

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Code](<https://devfeed.tech/topics/code.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [concepts](<https://devfeed.tech/tags/concepts.md>), [conference](<https://devfeed.tech/tags/conference.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [functional](<https://devfeed.tech/tags/functional.md>), [imperative](<https://devfeed.tech/tags/imperative.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [pitfalls](<https://devfeed.tech/tags/pitfalls.md>), [talk](<https://devfeed.tech/tags/talk.md>), [tips](<https://devfeed.tech/tags/tips.md>), [traces](<https://devfeed.tech/tags/traces.md>)

### AI overview

The article introduces a talk about Kotlin's support for imperative, declarative, functional, and object-oriented programming. It highlights tips, guidelines, pitfalls, definitions, software history, and how Kotlin supports these concepts.

### Source excerpt

I shared my talk titled Imperative, Declarative, Object oriented, functional: Four of a Kotlin Kind at the I code Java conference. The abstract: Is Kotlin a functional language? Yes, but... Is it object oriented? Yes, but... Looking at four concepts: imperative, declarative, functional and object oriented How does Kotlin make it easy to use either or all at the same time. This talk contains: Some useful Kotlin tips, some guidelines and pitfalls for the four concepts, traces of definitions and software history. After listening to this talk you will understand what these concepts are, what each is good for and how they are supported by the Kotlin language. You can see the talk here

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