This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/groovy-dev-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 84b7d94 2026/05/21 23:42:42: Generated dev website from
groovy-website@fb24836
84b7d94 is described below
commit 84b7d9490be05bd86d5e0250d7cda5596f011129
Author: jenkins <[email protected]>
AuthorDate: Thu May 21 23:42:42 2026 +0000
2026/05/21 23:42:42: Generated dev website from groovy-website@fb24836
---
blog/groovy6-functional.html | 29 ++++++++++++++++++-----------
search/search-index.json | 2 +-
2 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/blog/groovy6-functional.html b/blog/groovy6-functional.html
index 76a1b0d..7135913 100644
--- a/blog/groovy6-functional.html
+++ b/blog/groovy6-functional.html
@@ -114,7 +114,7 @@ annotations?</a> below.</p>
<div class="paragraph">
<p>The new pieces close a handful of the gaps that send functional
programmers reaching for FunctionalJava, HighJ or Vavr when they work
-on the JVM, and they fit together:</p>
+on the JVM:</p>
</div>
<div class="ulist">
<ul>
@@ -129,7 +129,8 @@ specification-driven alternative to lifting effects into an
<code>IO</code> mona
</li>
<li>
<p>A <code>DO</code> macro (GEP-23) giving Scala-<code>for</code> /
Haskell-<code>do</code> notation
-across <code>Optional</code>, <code>Stream</code>,
<code>CompletableFuture</code>, Groovy’s <code>Awaitable</code>,
+across <code>Optional</code>, <code>Stream</code>,
<code>CompletableFuture</code>, Groovy’s <code>Awaitable</code>
+and <code>DataflowVariable</code>, recognised FunctionalJava and Vavr carriers,
and any user type that opts in.</p>
</li>
<li>
@@ -432,7 +433,7 @@ Awaitable<String> greetByKey(String key) {
</div>
</div>
<div class="paragraph">
-<p><code>DO</code> and <code>for await</code> (the other "await"-shaped new
Groovy 6 construct)
+<p><code>DO</code> and <code>for await</code> (Groovy 6’s other
"await"-shaped construct)
operate at different layers and are easy to confuse. <code>DO</code> composes
<strong>one</strong> result from a chain of dependent monadic steps; <code>for
await</code>
iterates over <strong>many</strong> values pulled from a stream-shaped source
@@ -445,9 +446,9 @@ by <code>DO</code> can be one element of an upstream
publisher consumed by
<code>for await</code> — but neither replaces the other.</p>
</div>
<div class="paragraph">
-<p>And over FunctionalJava’s <code>Validation</code> — no annotation, no
wrapper, no
-Groovy dependency on FunctionalJava, because <code>fj.data.Validation</code> is
-recognised by name in `DO’s standard allow-list:</p>
+<p><code>DO</code> also composes over FunctionalJava’s
<code>Validation</code> — no annotation,
+no wrapper, no Groovy dependency on FunctionalJava, because
+<code>fj.data.Validation</code> is recognised by name in the standard
allow-list:</p>
</div>
<div class="listingblock">
<div class="content">
@@ -463,11 +464,11 @@ assert add('hi', '3').fail() == 'not numeric:
hi'</code></pre>
</div>
</div>
<div class="paragraph">
-<p>The same allow-list also recognises Vavr’s control carriers
+<p>The same allow-list recognises Vavr’s control carriers
(<code>io.vavr.control.Option</code>, <code>io.vavr.control.Try</code>,
<code>io.vavr.control.Either</code>,
-<code>io.vavr.control.Validation</code>) by name, so existing Vavr-shaped code
composes
-through <code>DO</code> without rewriting and without Groovy taking a
dependency on
-Vavr:</p>
+<code>io.vavr.control.Validation</code>) by name, so existing Vavr-shaped code
+composes through <code>DO</code> without rewriting and without Groovy taking a
+dependency on Vavr:</p>
</div>
<div class="listingblock">
<div class="content">
@@ -741,7 +742,7 @@ or a small ASM walker can use them as a specification:</p>
enough to treat as a specification.</p>
</div>
<div class="paragraph">
-<p>The same idea applies more broadly:</p>
+<p>The same idea applies elsewhere:</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
@@ -1096,6 +1097,12 @@ following the same two-layer pattern used elsewhere in
this post.</p>
<div class="content">
<div class="title">Update history</div>
<div class="paragraph">
+<p><strong>22/May/2026</strong>: Vavr added to comparison set
+and <code>DO</code> allow-list; producer-side / consumer-side framing for
+declaration-driven features; <code>for await</code> vs <code>DO</code>
distinction; GEP-24
+forward-reference for the <code>Try</code> / errors-as-values gap.</p>
+</div>
+<div class="paragraph">
<p><strong>20/May/2026</strong>: Initial version.</p>
</div>
</div>
diff --git a/search/search-index.json b/search/search-index.json
index 6d1121b..2f2b15c 100644
--- a/search/search-index.json
+++ b/search/search-index.json
@@ -240,7 +240,7 @@
{
"id": "blog/groovy6-functional.html",
"title": "The Apache Groovy programming language - Blogs - Groovy 6
features for Functional Programmers",
- "content": "The Apache Groovy programming language - Blogs - Groovy 6
features for Functional Programmers Socialize Discuss on the mailing list
Groovy on X Groovy on Bluesky Groovy on Mastodon Groovy on LinkedIn Events and
conferences Source code on GitHub Report issues in Jira Stack Overflow
questions Slack Community You are using an outdated browser. Please upgrade
your browser to improve your experience. Apache Groovy™ Learn
Documentation Download Support Contribute Ecos [...]
+ "content": "The Apache Groovy programming language - Blogs - Groovy 6
features for Functional Programmers Socialize Discuss on the mailing list
Groovy on X Groovy on Bluesky Groovy on Mastodon Groovy on LinkedIn Events and
conferences Source code on GitHub Report issues in Jira Stack Overflow
questions Slack Community You are using an outdated browser. Please upgrade
your browser to improve your experience. Apache Groovy™ Learn
Documentation Download Support Contribute Ecos [...]
"url": "blog/groovy6-functional.html",
"site": "dev"
},