
Retina: A regex-based recreational programming language - luu
https://github.com/m-ender/retina
======
lifthrasiir
If you find Retina interesting, you may be also interested in a plothera of
esoteric programming languages with the general string-rewriting paradigm [1],
which is---as Thue [2] or /// [3] demonstrates---enough for Turing
completeness.

[1] [https://esolangs.org/wiki/Category:String-
rewriting_paradigm](https://esolangs.org/wiki/Category:String-
rewriting_paradigm)

[2] [https://esolangs.org/wiki/Thue](https://esolangs.org/wiki/Thue)

[3] [https://esolangs.org/wiki////](https://esolangs.org/wiki////)

~~~
JadeNB
I can't find any page by Colagioia about Thue, so I can't say if he was the
originator of this trend, but it's a shame not to see any mention of the
origin of the name Thue on the esolang page. He was quite a mathematician; he
originated the systematic study of string-rewriting systems
([https://en.wikipedia.org/wiki/Semi-
Thue_system](https://en.wikipedia.org/wiki/Semi-Thue_system) and
[https://en.wikipedia.org/wiki/Thue–Morse_sequence](https://en.wikipedia.org/wiki/Thue–Morse_sequence)),
which is why this name is appropriate, but made lots of other contributions,
too—as a number theorist, I know him from
[https://en.wikipedia.org/wiki/Roth%27s_theorem](https://en.wikipedia.org/wiki/Roth%27s_theorem)
(which Wikipedia calls Roth's theorem, but which I think most number theorists
call the Thue–Siegel–Roth theorem).

------
wvlia5
Examples:
[https://github.com/m-ender/retina/tree/master/Examples](https://github.com/m-ender/retina/tree/master/Examples)

More didactic than a language reference

------
dsun180
Please add a screenshot of code to the readme and also fill your online editor
with a block of example code.

~~~
mbue
Hi, author here! Thanks for the feedback. I'm not in charge of Try It Online,
so I can't do anything about filling it with code by default, but as someone
else noted, there is a Hello World button, which fills in a (very trivial)
snippet.

There also a bunch of examples with tutorial-like explanation in the Examples
folder.

I'll think about adding one example to the main README though, just to really
put people off of looking further into the language. ;)

While I'm here, in case anyone does actually use the language and find it to
be useful, I also wrote a VS Code extension that lets you use it as a powerful
search-and-replace alternative: [https://github.com/m-ender/vscode-
retinate](https://github.com/m-ender/vscode-retinate)

~~~
aloisdg
I know you from codegolf. I love reading your solutions especially in Retina.
Keep golfing!

------
kitotik
I’m enamored with the term ‘recreational programming language’.

Not sure I’d ever use one, but it’s a useful categorization nonetheless!

~~~
mbue
FWIW, they're usually called esoteric programming languages/esolangs, but I'm
not a fan of that term. That's why I've been using "recretional" instead. :)

------
black_thoughts
Out of all the quines I've seen, that's my favourite.

[https://github.com/m-ender/retina/blob/master/Examples/quine...](https://github.com/m-ender/retina/blob/master/Examples/quine.ret)

So elegant.

------
evgeniysharapov
somewhat reminds me of 'sed', but with less history and less power.

~~~
schoen
It looks to me like it's very similar to a subset of sed, but with a more
powerful regex library. But many programs in this language probably have near
line-for-line translations into sed if they don't use newer regex features.

A lot of people (including me) have basically only learned the s command in
sed and don't usually think about all of the more sophisticated sed features.

------
jsilence
For more audiovisual fun you could also try IBNIZ.

~~~
JadeNB
[https://esolangs.org/wiki/IBNIZ](https://esolangs.org/wiki/IBNIZ)

------
zelienople
Example Retina code:

K`0¶1

{ _\G0`

)`(\d+)\n(\d+)

$2$n$.($1__$2*_)

...you got somethin' severely wrong with you, boy.

~~~
mbue
Appreciate the compliment. :)

------
durpkingOP
so this is a programming language for when we aren't working? please elaborate

~~~
mbue
Yeah, that was the idea. Just a language for fun and specifically for code
golf (solving programming problems in as small a program as possible). In the
case of Retina, it turned out the language is actually pretty useful for
throwaway scripts for string manipulation, so I actually _am_ using the
language while working occasionally, but that was definitely not a design
goal. :D

