# Show & Tell

**URL:** https://revolt.metaeducation.com/forum/c/usage/show-and-tell/33.md

[Latest](https://revolt.metaeducation.com/forum/latest.md) · [Categories](https://revolt.metaeducation.com/forum/categories.md) · [Tags](https://revolt.metaeducation.com/forum/tags.md)

---

## [About the Show & Tell category](https://revolt.metaeducation.com/forum/t/about-the-show-tell-category/225)

<div class="topic-metadata">

**Author:** [@gchiu](https://revolt.metaeducation.com/forum/u/gchiu)\
**Replies:** 1\
**Last updated:** [July 25, 2017, 5:39am UTC](https://revolt.metaeducation.com/forum/t/about-the-show-tell-category/225 "2017-07-25T05:39:46Z")

</div>

Created something short and syrupy sweet? Then post your scripts here; not confined to infinite length one-liners!

---

## [Revolt's Eloquence in the Face of FizzBuzz](https://revolt.metaeducation.com/forum/t/ren-cs-eloquence-in-the-face-of-fizzbuzz/904)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 12\
**Last updated:** [November 11, 2026, 12:50pm UTC](https://revolt.metaeducation.com/forum/t/ren-cs-eloquence-in-the-face-of-fizzbuzz/904 "2026-11-11T12:50:19Z")

</div>

So there's a silly problem called "FizzBuzz" which is stated very simply: Write a program that prints the numbers from 1 to 100. But for multiples of three print "Fizz" instead of the number ....and for the multiples…

---

## [Chinese Association: AI-assisted Red/Rebol Tool](https://revolt.metaeducation.com/forum/t/chinese-association-ai-assisted-red-rebol-tool/2715)

<div class="topic-metadata">

**Author:** [@gchiu](https://revolt.metaeducation.com/forum/u/gchiu)\
**Replies:** 7\
**Last updated:** [September 3, 2026, 9:54pm UTC](https://revolt.metaeducation.com/forum/t/chinese-association-ai-assisted-red-rebol-tool/2715 "2026-09-03T21:54:45Z")

</div>

Since I've been making inflammatory comments here recently, nobody can reasonably claim I've disappeared. But I have also been doing some actual coding. I’ve returned to the Rebol family for a real project: replacing t…

---

## [Displaying Prime Factors](https://revolt.metaeducation.com/forum/t/displaying-prime-factors/2072)

<div class="topic-metadata">

**Author:** [@iArnold](https://revolt.metaeducation.com/forum/u/iArnold)\
**Replies:** 2\
**Last updated:** [March 17, 2026, 12:59am UTC](https://revolt.metaeducation.com/forum/t/displaying-prime-factors/2072 "2026-03-17T00:59:58Z")

</div>

Displaying the Prime factors of an integer. On rebol.org this oneliner script by Sunanda can be found. I needs slight mod ification to work on REN-C. And with a bit of realigning and getting rid of the abbreviation for…

---

## [A Curious Reframer: MATCH+](https://revolt.metaeducation.com/forum/t/a-curious-reframer-match/2686)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 0\
**Last updated:** [February 11, 2026, 8:10pm UTC](https://revolt.metaeducation.com/forum/t/a-curious-reframer-match/2686 "2026-02-11T20:10:42Z")

</div>

So here is a weird idea that was once a feature of MATCH itself: match+: reframer func \[f \[frame!\]\] \[ eval f else (^e -\> \[return null\]) return ^f.1 \] \>\> match+ even? 10 + 20 == 30 \>\> match+ even? 1 + 2 == \\~nu…

---

## [Dialecting RETURN](https://revolt.metaeducation.com/forum/t/dialecting-return/2673)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 0\
**Last updated:** [June 15, 2022, 8:44pm UTC](https://revolt.metaeducation.com/forum/t/dialecting-return/2673 "2022-06-15T20:44:41Z")

</div>

RETURN has been changed to be arity-1 or arity-0. If you don't pass it an argument you get a TRASH!. Rather than overriding arity-0 RETURN to do something besides return TRASH!, I think it's probably better to have it …

---

## [Being Blunt And Obvious With PRINT](https://revolt.metaeducation.com/forum/t/being-blunt-and-obvious-with-print/2667)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 1\
**Last updated:** [January 29, 2026, 5:16am UTC](https://revolt.metaeducation.com/forum/t/being-blunt-and-obvious-with-print/2667 "2026-01-29T05:16:37Z")

</div>

I just simplified the implementation for PRINT, using much less trickery and just being blunt. print: procedure \[ "Output processed value to STDOUT, with newline if any text is output" value \[ \<opt\> "no…

---

## [REPLACE Reacting To \[NONE VOID NULL VETO\]](https://revolt.metaeducation.com/forum/t/replace-reacting-to-none-void-null-veto/2652)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 1\
**Last updated:** [January 22, 2026, 3:41am UTC](https://revolt.metaeducation.com/forum/t/replace-reacting-to-none-void-null-veto/2652 "2026-01-22T03:41:19Z")

</div>

Historical REPLACE in Redbol allows you to pass in a function, which is called on each match position...and can return the thing to replace with: r3-alpha\>\> replace/all "abcba" "b" func \[x\] \[probe x random 10\] "bcba" "…

---

## [Arrow Function -\> Written In Usermode](https://revolt.metaeducation.com/forum/t/arrow-function-written-in-usermode/2651)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 1\
**Last updated:** [January 19, 2026, 9:11am UTC](https://revolt.metaeducation.com/forum/t/arrow-function-written-in-usermode/2651 "2026-01-19T09:11:03Z")

</div>

I thought it would be interesting to implement the "unpacking mode" of the arrow function generator in usermode: \>\> packsum: ~(a b)~ -\> \[a + b\] \>\> packsum pack \[1000 20\] == 1020 But how would one go about building suc…

---

## [MAXMATCH Parser Combinator, With/Without Rollback!](https://revolt.metaeducation.com/forum/t/maxmatch-parser-combinator-with-without-rollback/2648)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 2\
**Last updated:** [August 12, 2021, 6:04am UTC](https://revolt.metaeducation.com/forum/t/maxmatch-parser-combinator-with-without-rollback/2648 "2021-08-12T06:04:46Z")

</div>

All right... hold onto your little blue coffee cups... :coffee: because I've got something rather awesome working!!! :nut\_and\_bolt: TL;DR - Show Me the Code Here is MAXMATCH-D (default "rollback") and MAXMATCH-C (cust…

---

## [The CIRCLED Dialect: Example of the Form](https://revolt.metaeducation.com/forum/t/the-circled-dialect-example-of-the-form/1849)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 1\
**Last updated:** [January 9, 2026, 7:55am UTC](https://revolt.metaeducation.com/forum/t/the-circled-dialect-example-of-the-form/1849 "2026-01-09T07:55:24Z")

</div>

I was looking at this from the emscripten config file: ; Right now, either #web or #node (someday #wasm-edge ?) ; javascript-environment: #web And I thought to myself: well that's kind of ugly. The comment is havin…

---

## [How To FLATTEN...Anything!](https://revolt.metaeducation.com/forum/t/how-to-flatten-anything/2643)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 2\
**Last updated:** [January 8, 2026, 10:04am UTC](https://revolt.metaeducation.com/forum/t/how-to-flatten-anything/2643 "2026-01-08T10:04:15Z")

</div>

At one point, @szeng added a FLATTEN function (at least I think it was him, its only appearance is in Rebmake). The idea was that sometimes you have a block of blocks, and you want to merge them all together: \>\> flatte…

---

## [.WORD! To Mark "Globals" In Non-Objects](https://revolt.metaeducation.com/forum/t/word-to-mark-globals-in-non-objects/2581)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 0\
**Last updated:** [December 3, 2025, 12:32pm UTC](https://revolt.metaeducation.com/forum/t/word-to-mark-globals-in-non-objects/2581 "2025-12-03T12:32:34Z")

</div>

I'm very pleased with the choice to make methods use dot as the way to refer to "self". \>\> obj: make object! \[foo: 10 bar: lambda \[\<.\>\] \[probe ., .foo + 20\]\] \>\> obj/bar &\[object! \[foo 10, bar: ~&\[frame! \[\]\]~\] == 30 \>\> …

---

## [Using Invisibles To Opt Out of Functions In a Chain](https://revolt.metaeducation.com/forum/t/using-invisibles-to-opt-out-of-functions-in-a-chain/2036)

<div class="topic-metadata">

**Author:** [@gchiu](https://revolt.metaeducation.com/forum/u/gchiu)\
**Replies:** 1\
**Last updated:** [December 8, 2023, 2:08am UTC](https://revolt.metaeducation.com/forum/t/using-invisibles-to-opt-out-of-functions-in-a-chain/2036 "2023-12-08T02:08:05Z")

</div>

One idea for using invisibles is to chain functions where you make some functions disappear from the chain if they're not needed. Imagine an image processor where you apply sequential effects but only the ones specify a…

---

## [Mapify Idiom: consolidating arguments](https://revolt.metaeducation.com/forum/t/mapify-idiom-consolidating-arguments/2543)

<div class="topic-metadata">

**Author:** [@rgchris](https://revolt.metaeducation.com/forum/u/rgchris)\
**Replies:** 0\
**Last updated:** [September 25, 2025, 10:11pm UTC](https://revolt.metaeducation.com/forum/t/mapify-idiom-consolidating-arguments/2543 "2025-09-25T22:11:03Z")

</div>

Not much to this, just something that popped up on a little throwaway project. I've come up with a design for a printable baseball schedule for \<team of your choice\>. Not to dwell on the specifics, it takes a team's sc…

---

## [Presentation to KYOSS, September 2023](https://revolt.metaeducation.com/forum/t/presentation-to-kyoss-september-2023/2214)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 1\
**Last updated:** [June 26, 2025, 5:29pm UTC](https://revolt.metaeducation.com/forum/t/presentation-to-kyoss-september-2023/2214 "2025-06-26T17:29:31Z")

</div>

"So Long :pizza: And Thanks For All The Pizza" Right before leaving Louisville after living there a year, I gave a presentation to the Kentucky Open Source Software Group. It was half slides, and half live demo of Revol…

---

## [Rebmake Shows Why NULLs Shouldn't Vaporize in REDUCE](https://revolt.metaeducation.com/forum/t/rebmake-shows-why-nulls-shouldnt-vaporize-in-reduce/2205)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 1\
**Last updated:** [August 22, 2024, 1:30am UTC](https://revolt.metaeducation.com/forum/t/rebmake-shows-why-nulls-shouldnt-vaporize-in-reduce/2205 "2024-08-22T01:30:43Z")

</div>

Before there were distinct NULL and VOID states, there was only NULL... and it was the product of failed conditionals. There was a debate about whether NULL should be an error if encountered by REDUCE, or if it should v…

---

## [A Lot To UNPACK: (Replacing the SET of REDUCE BLOCK! Idiom)](https://revolt.metaeducation.com/forum/t/a-lot-to-unpack-replacing-the-set-of-reduce-block-idiom/1634)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 6\
**Last updated:** [June 22, 2023, 5:16pm UTC](https://revolt.metaeducation.com/forum/t/a-lot-to-unpack-replacing-the-set-of-reduce-block-idiom/1634 "2023-06-22T17:16:16Z")

</div>

We've fretted a lot about the result of REDUCE when an expression produces something that can't be put in a block. At first this was just NULL. But now it's all antiforms. One reason to fret is the historical idiom of…

---

## [Portable Bridge Notation (PBN) Parser](https://revolt.metaeducation.com/forum/t/portable-bridge-notation-pbn-parser/1306)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 9\
**Last updated:** [November 27, 2025, 4:07pm UTC](https://revolt.metaeducation.com/forum/t/portable-bridge-notation-pbn-parser/1306 "2025-11-27T16:07:02Z")

</div>

I decided I would do a small task in the web Revolt build, which is to take the "Portable Bridge Notation" for representing a deal of a hand of cards, and turn it into blocks of symbolic data representing each player's h…

---

## [Quick and Dirty FLOW Example](https://revolt.metaeducation.com/forum/t/quick-and-dirty-flow-example/2270)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 2\
**Last updated:** [April 27, 2025, 7:58pm UTC](https://revolt.metaeducation.com/forum/t/quick-and-dirty-flow-example/2270 "2025-04-27T19:58:32Z")

</div>

At one point I proposed something along the lines of: \>\> flow \[ \[1 2 3\] reverse \_ map-each x \_ \[x \* 10\] \] == \[30 20 10\] Seems Neat. How Hard Is It To Do? Well, let's just be simple-minded to st…

---

## [Say :NO to "REDUCE/NO-SET"](https://revolt.metaeducation.com/forum/t/say-no-to-reduce-no-set/2400)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 0\
**Last updated:** [April 8, 2025, 4:32pm UTC](https://revolt.metaeducation.com/forum/t/say-no-to-reduce-no-set/2400 "2025-04-08T16:32:57Z")

</div>

I'm converting @szeng's old c2r3 to Revolt, and came across a use of a refinement I forgot existed, the "NO-SET" refinement of R3-Alpha: cbdata: make callback-data reduce/no-set \[ model: model path: gtk/tree\_mod…

---

## [Nice Blank Moment While Killing GET-PATH!/SET-PATH!](https://revolt.metaeducation.com/forum/t/nice-blank-moment-while-killing-get-path-set-path/2241)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 0\
**Last updated:** [August 31, 2024, 8:27pm UTC](https://revolt.metaeducation.com/forum/t/nice-blank-moment-while-killing-get-path-set-path/2241 "2024-08-31T20:27:34Z")

</div>

I'm busily killing off all the stray SET-PATH! and GET-PATH! that exist... (because CHAIN! is going to be underneath PATH!, you won't be able to put a path in a chain such that you would describe the path as being set or…

---

## [Trailing Slash Is A Winner For Defused Actions](https://revolt.metaeducation.com/forum/t/trailing-slash-is-a-winner-for-defused-actions/2327)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 1\
**Last updated:** [December 27, 2024, 7:07pm UTC](https://revolt.metaeducation.com/forum/t/trailing-slash-is-a-winner-for-defused-actions/2327 "2024-12-27T19:07:34Z")

</div>

I really like this trailing slash thing, meaning "get me the action as is and don't run it AND guarantee it's an action". \>\> replace \[a 1 a \<baby\>\] word?/ \<ice\> == \[\<ice\> 1 \<ice\> \<baby\>\] That's to me just about perfect…

---

## [Parallel FOR Example](https://revolt.metaeducation.com/forum/t/parallel-for-example/2261)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 2\
**Last updated:** [October 1, 2024, 1:37pm UTC](https://revolt.metaeducation.com/forum/t/parallel-for-example/2261 "2024-10-01T13:37:04Z")

</div>

One goal of Revolt since the start has been to make sure people can write their own looping constructs that behave like the built-in loops. (That's why definitional return was so important, which paved the way for many …

---

## [YIELDER and GENERATOR (and thinking about Coroutines)](https://revolt.metaeducation.com/forum/t/yielder-and-generator-and-thinking-about-coroutines/1311)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 3\
**Last updated:** [September 24, 2024, 8:52pm UTC](https://revolt.metaeducation.com/forum/t/yielder-and-generator-and-thinking-about-coroutines/1311 "2024-09-24T20:52:32Z")

</div>

The stackless model so far has been built on a generic and comprehensible building block called a YIELDER. I thought I'd walk through it a little. To understand YIELDER, first look at GENERATOR I think a generator is p…

---

## [Skinning REPLACE with Red's String PARSE Hack](https://revolt.metaeducation.com/forum/t/skinning-replace-with-reds-string-parse-hack/2043)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 0\
**Last updated:** [July 27, 2023, 6:23am UTC](https://revolt.metaeducation.com/forum/t/skinning-replace-with-reds-string-parse-hack/2043 "2023-07-27T06:23:37Z")

</div>

Red made an unusual choice with their implementation of REPLACE when you use a pattern that's a block with a string. Instead of trying to stringify the block, they assume it's a PARSE rule: red\>\> replace/case/all "aAbb…

---

## [RETURNPROXY: An Old Weird Idea Reimagined](https://revolt.metaeducation.com/forum/t/returnproxy-an-old-weird-idea-reimagined/1929)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 0\
**Last updated:** [August 20, 2022, 5:32am UTC](https://revolt.metaeducation.com/forum/t/returnproxy-an-old-weird-idea-reimagined/1929 "2022-08-20T05:32:25Z")

</div>

In the wandering history that preceded PACK! antiforms and modern multi-returns, there was for a time a feature called "RETURN PROXYING". What happened was that some of those old designs had separate frame cells for all…

---

## [VOID & Definitional Error with SET and SET-GROUP!](https://revolt.metaeducation.com/forum/t/void-definitional-error-with-set-and-set-group/2258)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 0\
**Last updated:** [September 7, 2024, 9:15am UTC](https://revolt.metaeducation.com/forum/t/void-definitional-error-with-set-and-set-group/2258 "2024-09-07T09:15:55Z")

</div>

I'm doing some refactoring to bring more consistency between the behavior of SET of a group and a SET-XXX!: set var expression ; vs. (var): expression ; vs. eval compose \[(var): expression\] Ideally these should be …

---

## [Ren Garden Qt-Based Console Demo (circa January 2015)](https://revolt.metaeducation.com/forum/t/ren-garden-qt-based-console-demo-circa-january-2015/2228)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 0\
**Last updated:** [January 29, 2015, 5:00am UTC](https://revolt.metaeducation.com/forum/t/ren-garden-qt-based-console-demo-circa-january-2015/2228 "2015-01-29T05:00:00Z")

</div>

(Not everyone has seen this, e.g. @bradrn probably. And it predates the forum by quite a long time. So I thought I'd post it.) Around 2015 DocKimbel asked if I would look into the idea of designing a C/C++ API for Re…

---

## [Quartermaster Conference Presentation, 2013](https://revolt.metaeducation.com/forum/t/quartermaster-conference-presentation-2013/659)

<div class="topic-metadata">

**Author:** [@hostilefork](https://revolt.metaeducation.com/forum/u/hostilefork)\
**Replies:** 0\
**Last updated:** [July 23, 2013, 4:00am UTC](https://revolt.metaeducation.com/forum/t/quartermaster-conference-presentation-2013/659 "2013-07-23T04:00:00Z")

</div>

@rgchris mentions that Quartermaster has several dialect pieces ("parts"). I imagine each one probably warrants its own topic, at minimum. Talking about the generality of it, maybe looking over the Rebol2…

[Next page](https://revolt.metaeducation.com/forum/c/usage/show-and-tell/33.md?page=1)
