Perhaps super late-breaking awareness on my part... but is Redux/Flux app architecture basically a form of #concatenative #programming?
Mapping Factor -> Kitten produces some wild types. I tried to stay as true to Factor's implementations as I could. The final type for 3tri is absolutely absurd.
8 years ago I partially started going back to my roots to begin working on a number of #Forth based DSLs & REPLs for livecoding... not just for audio/music, but also #GenerativeArt, #shaders, #geometry and GUI/layout generation. Even today, I still think Forth-like #concatenative languages have unique potential & freedoms and are severely under-explored in all of those domains mentioned. Even though all of the examples in this thread are early, pretty rough prototypes, I'd like to share some videos/screenrecs of my previous research, maybe also to inspire others exploring this approach of programming more...
First off, a #WebAudio prototype from 2015, made in the browser REPL at http://forth.thi.ng (audio starts at ~2:15)
There's only a single audio buffer used here (boilerplate setup for that in the first 2 mins of the video) and all subsequent operations just write to that buffer or manipulate its contents...
1/4
#forth #generativeart #shaders #geometry #concatenative #webaudio
I'm only part-way through but I'm already enjoying this paper on the Functional Machine Calculus. https://people.bath.ac.uk/wbh22/index.html#FMC2022
Effects and higher-order functions are both modeled as pushes/pops from independent stacks of values.
Looks like a nice formal treatment of the multistack concatenative idea in the Dawn language! https://www.dawn-lang.org/posts/foundations-umcc/
#PapersWeLove #concatenative #LambdaCalculus
In Feb–Mar of 2020, I built a another toy #StackBased #concatenative #programming #language in #clojure called "As if":
https://gitlab.com/semperos/asif
This was for a presentation on Clojure transducers, not for a serious #language implementation 🙈
I implemented it as a single call to clojure.core/transduce with the language's lex, parse, and optimize phases as transducers and its eval as a reducing function.
#StackBased #concatenative #programming #language #clojure #projects
Hopping on the #projects 🚋
In April 2021 I wrote a toy #StackBased #concatenative
#programming #language called Shackle: https://gitlab.com/semperos/shackle
• Entirely in a single #html file, with form for evaluating.
• Literals treated as #json, pushed onto the stack.
• Symbols looked up in the word dictionary, which is empty to start.
• If a word is not understood, you're prompted to define it.
• Stores the stack and word dictionary in the URL params, so your impl is captured entirely in the URL.
#projects #StackBased #concatenative #programming #language #html #json
Concatenative Programming: From Ivory to Metal
https://www.youtube.com/watch?v=_IgqJr8jG8M
Discussions: https://discu.eu/q/https://www.youtube.com/watch?v=_IgqJr8jG8M
#compsci #concatenative #plt #programming
I'm discovering #concatenative #languages (from #Forth to Factor/Joy/Om/…)
Yeeeah!
It's always an indescribable joy for me to have a look on a "new" #programming #paradigm :-)
#concatenative #languages #forth #programming #paradigm