#repl — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #repl, aggregated by home.social.
-
[Перевод] Я превратил Slack в интерактивную консоль для работающего .NET-приложения
Автор объясняет, как он использовал скрипты Roslyn и режим сокетов Slack для проверки, отладки и взаимодействия с запущенным приложением.
https://habr.com/ru/articles/1060700/
#roslyn #slack #net #net_development #приложения #скрипты #сокеты #отладка_кода #repl #c#
-
I am starting to get a hang of developing #rstats in #zed .
- Step 1: Find the right doc entry https://zed.dev/docs/repl#r-ark
- Step 2: Install ark https://github.com/posit-dev/ark .
- Step 3: Fiddle with key mappings to make "REPL: run" for "cmd + enter"
- Step 4: Connect to the interactive #REPL in the console with `jupyter console --existing`Et voila, sort of an interactive ression in zed. Thanks @Posit for making you key libraries open source, so I can use my current favorite editor more efficiently
-
I am starting to get a hang of developing #rstats in #zed .
- Step 1: Find the right doc entry https://zed.dev/docs/repl#r-ark
- Step 2: Install ark https://github.com/posit-dev/ark .
- Step 3: Fiddle with key mappings to make "REPL: run" for "cmd + enter"
- Step 4: Connect to the interactive #REPL in the console with `jupyter console --existing`Et voila, sort of an interactive ression in zed. Thanks @Posit for making you key libraries open source, so I can use my current favorite editor more efficiently
-
Reflection on REPL, nREPL, ad-hoc protocols on top of tcp REPLs in the context of editors/IDE/programmatic tooling, what better suites them and stands the test of time.
-
Reflection on REPL, nREPL, ad-hoc protocols on top of tcp REPLs in the context of editors/IDE/programmatic tooling, what better suites them and stands the test of time.
-
Edsger – A handwritten Clojure REPL for the reMarkable 2
https://handwritten.danieljanus.pl/2026-06-01-edsger.html
#HackerNews #Edsger #Clojure #reMarkable2 #Handwritten #REPL #TechInnovation
-
Edsger – A handwritten Clojure REPL for the reMarkable 2
https://handwritten.danieljanus.pl/2026-06-01-edsger.html
#HackerNews #Edsger #Clojure #reMarkable2 #Handwritten #REPL #TechInnovation
-
RE: https://fosstodon.org/@tarsius/116643132796222151
In 1990 Dr. Peter Lee's 15-212 course at #CarnegieMellon introduced me to Scheme. It's also when I first came to comprehend the power of #Emacs and #EmacsLisp.
In the first hour, Professor Lee demonstrated elegantly that everything is a list: data are lists and programs are lists. Every list returns a value, and functions are just lists that do calculations! Functions can return lists, of course, and so you can write functions that return functions!
I ran to the lab to hack Lisp: it wasn't in your pocket, it was in a room worth more than your parents' house. Nothing had ever seemed more natural: write, evaluate, repeat. Hack a nugget, nest lists, add parentheses, hack bigger things. But the magic thing where you write code that returns code remained a mystery: we did lots of cool stuff in that course, but we never got to macros.
Until 2026.
The surprise? The surprise is that as each decade passes, I grow to cherish lifelong learning as more and more precious.
-
RE: https://fosstodon.org/@tarsius/116643132796222151
In 1990 Dr. Peter Lee's 15-212 course at #CarnegieMellon introduced me to Scheme. It's also when I first came to comprehend the power of #Emacs and #EmacsLisp.
In the first hour, Professor Lee demonstrated elegantly that everything is a list: data are lists and programs are lists. Every list returns a value, and functions are just lists that do calculations! Functions can return lists, of course, and so you can write functions that return functions!
I ran to the lab to hack Lisp: it wasn't in your pocket, it was in a room worth more than your parents' house. Nothing had ever seemed more natural: write, evaluate, repeat. Hack a nugget, nest lists, add parentheses, hack bigger things. But the magic thing where you write code that returns code remained a mystery: we did lots of cool stuff in that course, but we never got to macros.
Until 2026.
The surprise? The surprise is that as each decade passes, I grow to cherish lifelong learning as more and more precious.
-
@dubiousdisc wrote:
«The killer feature of Lisps is not macros or structural editing (though those are nice too). The killer feature is REPL-driven development. Writing and testing code are not separate stages; they are intertwined. It's a completely different way to program.»The latter two sentences are true (we can add exploration to writing and testing).
I don't think that there is a _single_ killer feature, though.
For example, REPLs are available for quite a few languages nowadays, but these languages still don't "feel like" Lisp.What is usually called homoiconicity is also important, for example, not so much by itself, but by the way it affects directly or indirectly many aspects of using a language.
A lot has been said about homoiconicity, of course, but still, let me add an illustration.
Define a quine as an expression Q in a programming language such that Q is equal to eval(Q).
Obviously, the precise representation of Q and the precise notion of equality will be language-dependent.
Now, compare a quine (in the above sense) in a Lisp to a quine in Python.With regards to another aspect of the big topic, see also an old paper by Guy Steele called Growing a Language (or Making a Language that Can Grow, or something like that).
#ComputerProgramming
#GrowingALanguage
#Homoiconicity
#Lisp
#Programming
#ProgrammingLanguages
#Quines
#ReadEvalPrintLoop
#REPL -
@dubiousdisc wrote:
«The killer feature of Lisps is not macros or structural editing (though those are nice too). The killer feature is REPL-driven development. Writing and testing code are not separate stages; they are intertwined. It's a completely different way to program.»The latter two sentences are true (we can add exploration to writing and testing).
I don't think that there is a _single_ killer feature, though.
For example, REPLs are available for quite a few languages nowadays, but these languages still don't "feel like" Lisp.What is usually called homoiconicity is also important, for example, not so much by itself, but by the way it affects directly or indirectly many aspects of using a language.
A lot has been said about homoiconicity, of course, but still, let me add an illustration.
Define a quine as an expression Q in a programming language such that Q is equal to eval(Q).
Obviously, the precise representation of Q and the precise notion of equality will be language-dependent.
Now, compare a quine (in the above sense) in a Lisp to a quine in Python.With regards to another aspect of the big topic, see also an old paper by Guy Steele called Growing a Language (or Making a Language that Can Grow, or something like that).
#ComputerProgramming
#GrowingALanguage
#Homoiconicity
#Lisp
#Programming
#ProgrammingLanguages
#Quines
#ReadEvalPrintLoop
#REPL -
I am really enjoying the #repl though. A different way of being and building. It's been a long time.
-
I am really enjoying the #repl though. A different way of being and building. It's been a long time.
-
Every time I want to leave #lisp or #scheme based language I stumble across awesome talk which reminds me why I love it in the first place.
https://fosdem.org/2026/schedule/event/HDE7JZ-lisp-is-clay/
Damn #repl driven development is so damn awesome. Now a days If I need to write some automation scripts I use #babashka lot instead of #bash or #python
-
Every time I want to leave #lisp or #scheme based language I stumble across awesome talk which reminds me why I love it in the first place.
https://fosdem.org/2026/schedule/event/HDE7JZ-lisp-is-clay/
Damn #repl driven development is so damn awesome. Now a days If I need to write some automation scripts I use #babashka lot instead of #bash or #python
-
С Vim удобно программировать (часть II)
Это вторая часть публикации. В первой мы разобрали основные настройки редактора, позволяющие сделать процесс набора программы более удобным. Здесь рассмотрим плагины и скрипты для запуска программ на разных языках из редактора Vim.
-
Почему я перестал писать bash-скрипты и написал свой язык
Время от времени мне нужно выполнить примитивный сценарий в терминале, но каждый раз это заканчивается очередным гуглежом «bash iterate each file» или «bash file has string». А что если скрипты в терминале можно было бы писать прямо как поток декларативных мыслей?
https://habr.com/ru/articles/1020728/
#скриптовый_язык #bash #функциональное_программирование #REPL #автоматизация #open_source #Rust #Lisp #Haskell
-
Whistler: Live eBPF Programming from the Common Lisp REPL
https://atgreen.github.io/repl-yell/posts/whistler/
#HackerNews #Whistler #eBPF #CommonLisp #REPL #Programming #LiveCoding
-
Whistler: Live eBPF Programming from the Common Lisp REPL
https://atgreen.github.io/repl-yell/posts/whistler/
#HackerNews #Whistler #eBPF #CommonLisp #REPL #Programming #LiveCoding
-
@cwebber So to fix that, let me tell you about the PR for spritely hoot-repl that reduces load times of the #Guile #Scheme web #REPL in #webassembly by at least 30% ☺
https://codeberg.org/spritely/hoot-repl/pulls/4
Though I’m sure you already know, so this is just an "I answered the review" notification, but more interesting than something about LLM agents ☺
-
@cwebber So to fix that, let me tell you about the PR for spritely hoot-repl that reduces load times of the #Guile #Scheme web #REPL in #webassembly by at least 30% ☺
https://codeberg.org/spritely/hoot-repl/pulls/4
Though I’m sure you already know, so this is just an "I answered the review" notification, but more interesting than something about LLM agents ☺
-
@lobsters Lets not forget about debugging - currently it's either print log (crap) or a full trace (heavyweight). Im addressing this in #golang with a #TUI debugger with time travel and a #REPL https://asyncmachine.dev/wasm but that still doesnt replace actual breakpoints
-
The new release of #asyncmachine brings #WASM support and browser compat - including #aRPC, #TUI debugging and #REPL. Check out the changelog for v0.18.0 https://github.com/pancsta/asyncmachine-go/releases/tag/v0.18.0 and a dedicated WASM example https://asyncmachine.dev/wasm (with D2 diagrams).
This allows to have a single #statemachine #distributed across n servers and m browsers, using efficient diff-based synchronization.
Looking fwd to #wasmio!
-
so, apparently hacking #scheme is going to get even more fun with B.L.U.E., a sane, extendable, lisp-y l, agnostic build system and #Ares, the interactive hacking tool we always sensed was missing from our work. Yes, we now have insightful backtraces in #guile!
The future has come!
https://codeberg.org/lapislazuli/blue
https://git.sr.ht/~abcdw/guile-ares-rs#guix #fosdem #fosdem2026 #blue #lisp #repl #buildsystem #reproducibility #hacking #fun #coding #interactiveprogramming
-
so, apparently hacking #scheme is going to get even more fun with B.L.U.E., a sane, extendable, lisp-y l, agnostic build system and #Ares, the interactive hacking tool we always sensed was missing from our work. Yes, we now have insightful backtraces in #guile!
The future has come!
https://codeberg.org/lapislazuli/blue
https://git.sr.ht/~abcdw/guile-ares-rs#guix #fosdem #fosdem2026 #blue #lisp #repl #buildsystem #reproducibility #hacking #fun #coding #interactiveprogramming
-
@akkartik Since #Forth is just so great for super concise code, allow me to add another example, here to transpile (a subset of) Forth into GLSL for livecoding shaders. This one is using my old 2015 CharlieVM and you can find all the example source snippets in the readme here:
https://github.com/thi-ng/charlie
The REPL itself live at:
https://forth.thi.ng/The attached screen capture shows 4 shader examples (longest one is 12 lines of code)
-
@akkartik Since #Forth is just so great for super concise code, allow me to add another example, here to transpile (a subset of) Forth into GLSL for livecoding shaders. This one is using my old 2015 CharlieVM and you can find all the example source snippets in the readme here:
https://github.com/thi-ng/charlie
The REPL itself live at:
https://forth.thi.ng/The attached screen capture shows 4 shader examples (longest one is 12 lines of code)
-
In the #Python programming language, the new #REPL from Python 3.13 (2024) has added colorization in the #interpreter in #interactive Python, similar to the interface seen in later versions of #PyPy. Python 3.14 (2025) and Python 3.15 (2026) continue along with the improved REPL with the colorization of the Python #syntax itself.
-
In the #Python programming language, the new #REPL from Python 3.13 (2024) has added colorization in the #interpreter in #interactive Python, similar to the interface seen in later versions of #PyPy. Python 3.14 (2025) and Python 3.15 (2026) continue along with the improved REPL with the colorization of the Python #syntax itself.
-
At this point, I think I'm satisfied with the vim-go plugin providing me with a stoopid simple template for prototyping very basic example programs.
It's definitely not a #REPL like I'm used to with #Python or running from the #CLI; but, it's a bit of a useful workflow to get started. *shrug*
These keybindings help a bit:
```
augroup go
autocmd!
autocmd BufNewFile,BufRead *.go setlocal
\ noexpandtab
\ tabstop=4
\ shiftwidth=4
autocmd FileType go nmap <leader>b :<C-u>call <SID>build_go_files()<CR>
autocmd FileType go nmap <leader>d <Plug>(go-doc)
autocmd FileType go nmap <leader>f <Plug>(go-fmt)
autocmd FileType go nmap <leader>i <Plug>(go-info)
autocmd FileType go nmap <leader>l <Plug>(go-lint)
autocmd FileType go nmap <leader>r <Plug>(go-run)
autocmd FileType go nmap <leader>v <Plug>(go-vet)
autocmd FileType go nmap <leader>t <Plug>(go-test)
autocmd FileType go nmap <Leader>c <Plug>(go-coverage-toggle)
augroup END
``` -
At this point, I think I'm satisfied with the vim-go plugin providing me with a stoopid simple template for prototyping very basic example programs.
It's definitely not a #REPL like I'm used to with #Python or running from the #CLI; but, it's a bit of a useful workflow to get started. *shrug*
These keybindings help a bit:
```
augroup go
autocmd!
autocmd BufNewFile,BufRead *.go setlocal
\ noexpandtab
\ tabstop=4
\ shiftwidth=4
autocmd FileType go nmap <leader>b :<C-u>call <SID>build_go_files()<CR>
autocmd FileType go nmap <leader>d <Plug>(go-doc)
autocmd FileType go nmap <leader>f <Plug>(go-fmt)
autocmd FileType go nmap <leader>i <Plug>(go-info)
autocmd FileType go nmap <leader>l <Plug>(go-lint)
autocmd FileType go nmap <leader>r <Plug>(go-run)
autocmd FileType go nmap <leader>v <Plug>(go-vet)
autocmd FileType go nmap <leader>t <Plug>(go-test)
autocmd FileType go nmap <Leader>c <Plug>(go-coverage-toggle)
augroup END
``` -
While I was working on this, the article Python Numbers Every Programmer Should Know appeared on the orange website. In #LuaLang, and on a 16-bit target, these overheads are less -- for example, a number weighs 10 bytes instead of 24 bytes -- but overheads don't have much place to hide on a small, slow machine.
(Btw numbers cost 7 bytes each in 8-bit Microsoft BASIC so Lua isn't gratuitously inefficient here, even by the standards of 50 years ago.)
One place that makes overhead really obvious: a 64K segment holds a table of length, at most, 4,096 entries. That's 40,960 bytes, and Lua's strategy is to double allocation size every time it wants to grow the table. 2 x 40,960 exceeds a 64K segment, so 4,096 entries is the growth limit.
On a 640K machine, after deducting the ~250K (!) size of the interpreter (which is also fully loaded into RAM), you'll get maybe five full segments free if you're lucky. So that's like maybe 20,000 datums total, split across five tables.
Meanwhile a tiny-model #Forth / assembly / C program could handle 20,000 datums in a single segment without breaking too much of a sweat!
The efficiency has costs to programmer time, of course. Worrying about data types, limits, overflows, etc. The kinds of things I was hoping to avoid by using Lua on this hardware -- and to its credit, it does a good job insulating me from them. Its cost is that programs must be rewritten for speed in some other language once out of the rapid prototyping phase and having reasonable speed / data capacity becomes important.
I'd estimate the threshold where traditional interpreters like Lua become okay for finished/polished software of any significant scope, is somewhere around 2MB RAM / 16MHz. So think, like, a base model 386. Maybe this is why the bulk of interpreters available in DOS are via DJGPP which requires a 386 or better anyway.
#BASIC was of course used on much smaller hardware, but was famously unsuited to speed or to large programs / data.
I know success stories for #Lisp in kilobytes of memory, but I'm not quite sure how they do it / to what extent the size of the interpreter, and overhead of data representation (tags + cons representation), eats into available memory and limits the scope of the program, as seen with other traditional interpreters.
This is beginning to explain why #Forth has such a niche on small systems. It has damn near zero size overhead on data structures. (The only overhead is for the interpreter core (a few K) and storing string names in the dictionary (which can be eliminated via various tricks)). ~1x size and ~10x speed overhead is the bargain of the century to unlock #repl based development. However, you're still stuck with the agonizing pain of manual memory management and numeric range problems / overflows. Which is probably why the world didn't stop with Forth, but continued on to bigger interpreters.
-
While I was working on this, the article Python Numbers Every Programmer Should Know appeared on the orange website. In #LuaLang, and on a 16-bit target, these overheads are less -- for example, a number weighs 10 bytes instead of 24 bytes -- but overheads don't have much place to hide on a small, slow machine.
(Btw numbers cost 7 bytes each in 8-bit Microsoft BASIC so Lua isn't gratuitously inefficient here, even by the standards of 50 years ago.)
One place that makes overhead really obvious: a 64K segment holds a table of length, at most, 4,096 entries. That's 40,960 bytes, and Lua's strategy is to double allocation size every time it wants to grow the table. 2 x 40,960 exceeds a 64K segment, so 4,096 entries is the growth limit.
On a 640K machine, after deducting the ~250K (!) size of the interpreter (which is also fully loaded into RAM), you'll get maybe five full segments free if you're lucky. So that's like maybe 20,000 datums total, split across five tables.
Meanwhile a tiny-model #Forth / assembly / C program could handle 20,000 datums in a single segment without breaking too much of a sweat!
The efficiency has costs to programmer time, of course. Worrying about data types, limits, overflows, etc. The kinds of things I was hoping to avoid by using Lua on this hardware -- and to its credit, it does a good job insulating me from them. Its cost is that programs must be rewritten for speed in some other language once out of the rapid prototyping phase and having reasonable speed / data capacity becomes important.
I'd estimate the threshold where traditional interpreters like Lua become okay for finished/polished software of any significant scope, is somewhere around 2MB RAM / 16MHz. So think, like, a base model 386. Maybe this is why the bulk of interpreters available in DOS are via DJGPP which requires a 386 or better anyway.
#BASIC was of course used on much smaller hardware, but was famously unsuited to speed or to large programs / data.
I know success stories for #Lisp in kilobytes of memory, but I'm not quite sure how they do it / to what extent the size of the interpreter, and overhead of data representation (tags + cons representation), eats into available memory and limits the scope of the program, as seen with other traditional interpreters.
This is beginning to explain why #Forth has such a niche on small systems. It has damn near zero size overhead on data structures. (The only overhead is for the interpreter core (a few K) and storing string names in the dictionary (which can be eliminated via various tricks)). ~1x size and ~10x speed overhead is the bargain of the century to unlock #repl based development. However, you're still stuck with the agonizing pain of manual memory management and numeric range problems / overflows. Which is probably why the world didn't stop with Forth, but continued on to bigger interpreters.
-
✨ Behold, the latest marvel from the "cutting-edge" tech minds: an "enhanced" #REPL for Common #Lisp that promises to revolutionize your coding experience by doing...well, exactly what a REPL already does. 🤯 But don't worry, it comes with the added bonus of making you question why you ever thought coding was fun in the first place. 🥳
https://github.com/atgreen/icl #cuttingedge #techinnovation #codinghumor #softwaredevelopment #HackerNews #ngated -
✨ Behold, the latest marvel from the "cutting-edge" tech minds: an "enhanced" #REPL for Common #Lisp that promises to revolutionize your coding experience by doing...well, exactly what a REPL already does. 🤯 But don't worry, it comes with the added bonus of making you question why you ever thought coding was fun in the first place. 🥳
https://github.com/atgreen/icl #cuttingedge #techinnovation #codinghumor #softwaredevelopment #HackerNews #ngated -
Libervia CLI Tip 20:
There is a REPL in the CLI that you can launch with `li shell`.
Inside, you can select a command or sub-command with `cmd`, and fix an argument with `use`:
> cmd pubsub
pubsub> use service pubsub.example.orgThen just enter the sub-command to run it on the given service:
pubsub> affiliations
This is equivalent to `li pubsub affiliation -s pubsub.example.org`.
This is handy for exploring services.
https://libervia.org/__b/doc/backend/libervia-cli/shell.html
-
Julia+Unitful is super nice for quick calculations on numbers with units. No more accidental unit conversion errors. Free sanity check by including units in calculations. Works well with other packages.
If you include Unitful.DefaultSymbols your code looks beautiful. But be careful because most single and double letter names are then bound to units.
Best to create a shared environment @units (@ = shared) and activate it any time you need to do fast #repl calculations.
-
CW: CW Perl Necrocoding
-
Maybe a good opportunity to illustrate the purpose of one of the more uncommon packages in #ThingUmbrella: The https://thi.ng/hex package provides hexadecimal formatters for a variety of word sizes (4-64 bits) and also a customizable hex dump facility, which is super useful for analyzing, debugging & reverse engineering binary data or file formats from within a NodeJS REPL session (my main dev env & workflow), but of course can also be used in other situations... This has already saved me countless of times...