# DSLs

Published articles for DSLs.

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

## Article: Your Next DSL Author Is a Language Model

DevFeed: [Article: Your Next DSL Author Is a Language Model](<https://devfeed.tech/articles/article-your-next-dsl-author-is-a-language-model-30907.md>)

Original publisher: [Read original article](<https://www.infoq.com/articles/next-dsl-author-language-model/>)

Author: Irakli Betchvaia

Published: 2026-09-16T11:00:00Z

Content type: article

Language: en

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

Topics: [Large Language Model](<https://devfeed.tech/topics/llm.md>), [Infrastructure as code](<https://devfeed.tech/topics/infrastructure-as-code.md>), [Retrieval Augmented Generation (RAG)](<https://devfeed.tech/topics/retrieval-augmented-generation-rag.md>), [Code](<https://devfeed.tech/topics/code.md>), [Fable](<https://devfeed.tech/topics/fable.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-ml-data-engineering](<https://devfeed.tech/tags/ai-ml-data-engineering.md>), [article](<https://devfeed.tech/tags/article.md>), [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [development](<https://devfeed.tech/tags/development.md>), [domain-specific-languages](<https://devfeed.tech/tags/domain-specific-languages.md>), [dsls](<https://devfeed.tech/tags/dsls.md>), [hallucinations](<https://devfeed.tech/tags/hallucinations.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [large-language-model](<https://devfeed.tech/tags/large-language-model.md>), [large-language-models](<https://devfeed.tech/tags/large-language-models.md>), [ml-data-engineering](<https://devfeed.tech/tags/ml-data-engineering.md>), [next-dsl-author-language-model](<https://devfeed.tech/tags/next-dsl-author-language-model.md>), [validation](<https://devfeed.tech/tags/validation.md>)

### AI overview

The article introduces Typed Domain Grounding (TDG), which embeds a domain-specific language as a typed internal DSL in a mainstream host language. It argues that compiler type errors and generate-compile-repair loops can reduce syntactic hallucinations in language-model output. A benchmark reported higher Structural Fidelity and lower hallucination rates than two lenient external DSLs, although first-try compile rates were lower and results varied by model.

### Source excerpt

In this article, the author introduces Typed Domain Grounding, an approach to reducing LLM hallucinations in domain-specific languages by embedding them in mainstream typed languages. Using kUML benchmarks and an infrastructure-as-code example, he explores how compiler validation and generate-compile-repair loops can make model-generated DSL output more reliable. By Irakli Betchvaia

## A Failed XML-Based DSL Design Using a Large Regular Expression

DevFeed: [A Failed XML-Based DSL Design Using a Large Regular Expression](<https://devfeed.tech/articles/best-of-classic-wtf-a-dumbain-specific-language-28506.md>)

Original publisher: [Read original article](<https://thedailywtf.com/articles/classic-wtf-a-dumbain-specific-language>)

Author: Remy Porter

Published: 2026-09-07T06:30:00Z

Content type: opinion

Language: en

Sources: [The Daily WTF](<https://devfeed.tech/sources/the-daily-wtf.md>)

Topics: [XML](<https://devfeed.tech/topics/xml.md>), [Structured-data](<https://devfeed.tech/topics/structured-data.md>), [bug](<https://devfeed.tech/topics/bug.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [best-of](<https://devfeed.tech/tags/best-of.md>), [bug](<https://devfeed.tech/tags/bug.md>), [code](<https://devfeed.tech/tags/code.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [domain-specific-languages](<https://devfeed.tech/tags/domain-specific-languages.md>), [dsls](<https://devfeed.tech/tags/dsls.md>), [regex](<https://devfeed.tech/tags/regex.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

The article revisits a failed attempt to build a domain-specific language with XML schemas and a 1,310-character regular expression. It describes a bug in the expression and criticizes the resulting design as an unsuccessful effort to save labor.

### Source excerpt

It's a holiday here in the US, a celebration of labor, so we're reaching back through the archives for a story about an attempt to be labor saving that was not successful. Original. --Remy I've had to write a few domain-specific-languages in the past. As per Remy's Law of Requirements Gathering, it's been mostly because the users needed an Excel-like formula language. The danger of DSLs, of course, is that they're often YAGNI in the extreme, or at least a sign that you don't really understand your problem. XML, coupled with schemas, is a tool for building data-focused DSLs. If you have some complex structure, you can convert each of its features into an XML attribute. For example, if you had a grammar that looked something like this: The Source specification obeys the following syntax source = ( Feature1+Feature2+... ":" ) ? steps Feature1 = "local" | "global" Feature2 ="real" | "virtual" | "ComponentType.all" Feature3 ="self" | "ancestors" | "descendants" | "Hierarchy.all" Feature4 = "first" | "last" | "DayAllocation.all" If features are specified, the order of features as given above has strictly to be followed. steps = oneOrMoreNameSteps | zeroOrMoreNameSteps | componentSteps oneOrMoreNameSteps = nameStep ( "." nameStep ) * zeroOrMoreNameSteps = ( nameStep "." ) * nameStep = "#" name name is a string of characters from "A"-"Z", "a"-"z", "0"-"9", "-" and "_". No umlauts allowed, one character is minimum. componentSteps is a list of valid values, see below. Valid 'componentSteps' are: - GlobalValue - Product - Product.Brand - Product.Accommodation - Product.Accommodation.SellingAccom - Product.Accommodation.SellingAccom.Board - Product.Accommodation.SellingAccom.Unit - Product.Accommodation.SellingAccom.Unit.SellingUnit - Product.OnewayFlight - Product.OnewayFlight.BookingClass - Product.ReturnFlight - Product.ReturnFlight.BookingClass - Product.ReturnFlight.Inbound - Product.ReturnFlight.Outbound - Product.Addon - Product.Addon.Service - Product.Addon.ServiceFeatu

## Effective Kotlin Item 46: Avoid member extensions

DevFeed: [Effective Kotlin Item 46: Avoid member extensions](<https://devfeed.tech/articles/effective-kotlin-item-46-avoid-member-extensions-39283.md>)

Original publisher: [Read original article](<https://kt.academy/article/ek-member-extensions>)

Published: 2021-07-18T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [function](<https://devfeed.tech/topics/function.md>), [interface](<https://devfeed.tech/topics/interface.md>)

Tags: [dsls](<https://devfeed.tech/tags/dsls.md>), [extension-function](<https://devfeed.tech/tags/extension-function.md>), [function](<https://devfeed.tech/tags/function.md>), [integration-test](<https://devfeed.tech/tags/integration-test.md>), [interface](<https://devfeed.tech/tags/interface.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [visibility-modifier](<https://devfeed.tech/tags/visibility-modifier.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This article explains how Kotlin member extension functions work and why they are generally discouraged. It recommends controlling visibility with visibility modifiers and identifies DSL builders, scope-related functions, and some integration test patterns as appropriate exceptions.

### Source excerpt

What member extensions are, how they are possible and why we should avoid using them.

## Creating Kotlin DSLs

DevFeed: [Creating Kotlin DSLs](<https://devfeed.tech/articles/creating-kotlin-dsls-29115.md>)

Original publisher: [Read original article](<https://www.grokkingandroid.com/creating-kotlin-dsls/>)

Author: Wolfram Rittmeyer

Published: 2018-12-29T03:05:09Z

Content type: tutorial

Language: en

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

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

Tags: [android](<https://devfeed.tech/tags/android.md>), [domain-specific-languages](<https://devfeed.tech/tags/domain-specific-languages.md>), [dsl](<https://devfeed.tech/tags/dsl.md>), [dsls](<https://devfeed.tech/tags/dsls.md>), [extension](<https://devfeed.tech/tags/extension.md>), [groovy](<https://devfeed.tech/tags/groovy.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [languages](<https://devfeed.tech/tags/languages.md>), [scala](<https://devfeed.tech/tags/scala.md>), [sql](<https://devfeed.tech/tags/sql.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>), [yaml](<https://devfeed.tech/tags/yaml.md>)

### AI overview

This article explains how Kotlin can be used to create internal domain-specific languages by combining core language features. It distinguishes internal DSLs from external DSLs and discusses benefits such as concise, readable APIs, with examples including Gradle and KotlinTest.

### Source excerpt

Kotlin has many nice things going for it - be it null safety, data classes, extension functions, immutable collections or many other things. For me one additional thing is very interesting: The ability to create domain specific languages (DSLs) easily. Easily, because creating a DSL with Kotlin means that you simply choose to combine several [...] Continue Reading "Creating Kotlin DSLs" The post Creating Kotlin DSLs appeared first on Grokking Android.

## From Java Builders to Kotlin DSLs

DevFeed: [From Java Builders to Kotlin DSLs](<https://devfeed.tech/articles/from-java-builders-to-kotlin-dsls-27039.md>)

Original publisher: [Read original article](<https://kotlinexpertise.com/java-builders-kotlin-dsls/>)

Author: Márton Braun

Published: 2018-07-11T06:00:00Z

Content type: tutorial

Language: en

Sources: [zsmb.co](<https://devfeed.tech/sources/zsmb-co.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [builder](<https://devfeed.tech/tags/builder.md>), [dsl](<https://devfeed.tech/tags/dsl.md>), [dsls](<https://devfeed.tech/tags/dsls.md>), [existing](<https://devfeed.tech/tags/existing.md>), [guide](<https://devfeed.tech/tags/guide.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>)

### AI overview

A step-by-step guide to wrapping an existing Java Builder-based API in a neat Kotlin DSL.

### Source excerpt

A step by step guide to wrapping an existing Builder-based API into a neat Kotlin DSL.

## Clojure SQL library showdown

DevFeed: [Clojure SQL library showdown](<https://devfeed.tech/articles/clojure-sql-library-showdown-32108.md>)

Original publisher: [Read original article](<https://adambard.com/blog/clojure-sql-libs-compared/>)

Published: 2015-12-28T00:00:00Z

Content type: comparison

Language: en

Sources: [Adam Bard](<https://devfeed.tech/sources/adam-bard.md>)

Topics: [Clojure](<https://devfeed.tech/topics/clojure.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Library](<https://devfeed.tech/topics/library.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>)

Tags: [clojure](<https://devfeed.tech/tags/clojure.md>), [compare](<https://devfeed.tech/tags/compare.md>), [dsls](<https://devfeed.tech/tags/dsls.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [library](<https://devfeed.tech/tags/library.md>), [orm](<https://devfeed.tech/tags/orm.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

A comparison of several Clojure SQL DSLs and libraries, including Korma and HoneySQL, against JDBC. The author discusses the trade-offs between writing SQL directly and using abstractions or ORM-style tools.

### Source excerpt

When it comes to database access, I've become less particular over the years as I've gotten more and more comfortable with SQL. These days I'm happier to write the SQL to get just the thing I want, than wrestle with an ORM to produce the same thing. Nevertheless, there's something to be said for abstractions over SQL, and they seem to have lasting popularity. In this post, I'll compare a few popular SQL DSLs for Clojure, and contrast them all with their mutual pappy, clojure.

## The Ruby Programming Language

DevFeed: [The Ruby Programming Language](<https://devfeed.tech/articles/the-ruby-programming-language-27770.md>)

Original publisher: [Read original article](<https://gagor.pro/book/2015/the-ruby-programming-language/>)

Author: Tom

Published: 2015-08-13T00:00:00Z

Content type: article

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [Ruby](<https://devfeed.tech/topics/ruby.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [design-patterns](<https://devfeed.tech/tags/design-patterns.md>), [domain-specific-languages](<https://devfeed.tech/tags/domain-specific-languages.md>), [dsls](<https://devfeed.tech/tags/dsls.md>), [internals](<https://devfeed.tech/tags/internals.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [technology](<https://devfeed.tech/tags/technology.md>)

### AI overview

A review of The Ruby Programming Language, co-authored by Yukihiro Matsumoto. The book provides a detailed explanation of Ruby's core, architecture, internals, and suitability for building domain-specific languages, but its technical depth makes it difficult for beginners and less practical for day-to-day learning.

### Source excerpt

Ruby Programowanie Authors: David Flanagan, Yukihiro Matsumoto I picked up this book, co-authored by Ruby creator Yukihiro "Matz" Matsumoto, to learn Ruby for my work with Chef. As a deep dive into the language's internals, it brilliantly explains why Ruby is a top choice for creating Domain-Specific Languages (DSLs) like those used in Vagrant and Chef. The book meticulously covers the language's core, which gave me a solid understanding of its architecture.