toad.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
Mastodon server operated by David Troy, a tech pioneer and investigative journalist addressing threats to democracy. Thoughtful participation and discussion welcome.

Administered by:

Server stats:

278
active users

#repl

0 posts0 participants0 posts today

Everyone: Python is weird, main starts with:
if __name__=="__main__":
main(sys.argv[1:])

Me, side-eye:
(unless (member (program-name) '("chez" "petit" "scheme")) ;; is REPL
(main (command-line-arguments))
)

#scheme #repl

(I also sometimes use (member "--run" (command-line-arguments)) or the like, but program-name is clearer.
Some Schemes call main if you use it as a command-line program, not with load or include, but Chez leaves that up to you. RnRS specs are silent on the issue.)

#ReleaseWednesday — Extracted & extended the LISP-like DSL from an existing #ThingUmbrella example[1] as new small package for better/direct re-use in other projects:

thi.ng/lispy

The core language is kept intentionally minimal, aimed at simple sandboxed data transformations/derivations, small code snippets/expressions in GUIs or config settings. However, the language is very easy to extend/customize with new functions or control flow constructs etc. Currently, the language is interpreted and has the following builtins (see screenshots). There's no macro support so far (and not sure if that's even desired here)...

[1] The original #HowToThing example browser REPL this was extracted from (and which has now been updated to use the new package):

demo.thi.ng/umbrella/lispy-rep

#ThingUmbrella #Lisp #DSL #FunctionalProgramming #REPL

Who in the world though it a good idea putting their custom readtables into libraries intended for outside use? I don't want your hash table syntax, I want MINE. Don't pollute the readtable and other aspects of someone else's image if you're providing a library. The library you're making should be portable and clean #CommonLisp, not some unreadable #DSL you use in your #REPL. It's fine in the REPL, but not in libraries. Keep it clean. Simple courtesy.

Not pointing fingers, but everyone doing that shall be ashamed.

A couple of weeks ago I asked the Fediverse for recommendations about doing async I/O in a Python application which *also* had a REPL-like interface. I got quite a few useful responses, which ended up leading me to Python Prompt Toolkit.

Here is the result: a single-file script with embedded dependencies (thanks to PEP 723 and uv) which opens a serial port, asynchronously writes data to it and reads data from it, all while displaying a prompt and accepting input from the user.

forge.km6g.us/kpfleming/muart-

None of the program's actual functionality is present yet, but having the scaffolding in place makes me happy.

KM6G Software Forgemuart-failsafe/prototest/prototest.py at 9179da2f6acc30dbead5e54a2de2184b6fe1c7f8muart-failsafe - Failsafe hardware for use with the MUART project

I just discovered Jshell, a Java REPL shell. It's like Python's interactive shell , but in Java ;-)

It's not new. Jshell was introduced in ... Java 9. Shame to me I only learn about it in Java 23!

asciinema.org/a/nKxwuTgFPEeHgL

asciinema.orgJshell 23.0.2 demoAre you aware you can now *script* Java ? Did you know Java has an interactive shell? Showing use of the shell, performing Base64 encoding/decoding, functions, completion etc.
#java#repl#shell

#programming #commonLisp #emacs #repl versus #orgmode for the #fizzbuzz challenge on #medium.
Using #series #lazyEvaluation
medium.com/@screwlisp/fizzbuzz
I think it ended up pretty interesting, and what you would expect. The repl is a better interactive experience, but the noweb tangle optimizes in ways the separate repl lines can't, and is already in a disk-persisted file.

Looking forward to feedback and commentary ( @ksaj ;p)

Your web server having an interactive shell (REPL) where you can live update entries in your site/app’s database is pretty neat (if I do say so myself) :)

kitten.small-web.org/reference

(I’m porting the Small Technology Foundation site¹ from Site.js² – and hence from being a static site generated via Site.js’s integrated Hugo³ – to Kitten⁴. In the process, I’m creating an admin panel⁵ for the news, events, and videos sections, which will make them easier to update, and storing the data in Kitten’s internal JavaScript Database⁶.)

¹ small-tech.org
² sitejs.org
³ gohugo.io/
kitten.small-web.org
⁵ It’s trivial to create authenticated routes in Kitten. You just add a lock emoji (🔒) to the end of your route’s name. e.g., admin🔒.page.js or /admin🔒/index.page.js (see kitten.small-web.org/reference).
codeberg.org/small-tech/jsdb

#Kitten#REPL#shell

(Towards):
A #sidescrolling #textAdventure #game as the host of a Pratt Grammar #Parser:
lispy-gopher-show.itch.io/lisp
#itch #itch_io #gameDev #lisp #commonLisp #repl

Sharpsign lengthy and wandering. Sharpsign happy 2025

Basically, I was having trouble imagining parsing a grammar at all. So I imagined input tokens as a sidescroller level I could cdr-code speedrun passes of. And you know, when lisp people imagine things it happens in real life too.

So my question is, what's an intuitive way to use dropping-in- #fortran from the #lisp #repl ?
Reading a .f file ~ into a let* form which I'm currently doing seems kind of bland. #f( this(1) = is(2) + a / fortran * line) seems kind of uninspiring (who would want to express themselves like this). Maybe Enter "fortran mode" and read lines of fortran from *standard-input* with normal interactive evaluation hacked in?

The fortran becomes #series expressions in lisp.

Guix Social next Thursday (January 16th). There will be a talk by @abcdw about his Guile Scheme IDE for Emacs, and the underlying Nrepl project that can be used by any editor. For all the details:

meetup.com/guix-social/events/

Andrew also has many other projects, including RDE an extension to Guix. Come along and ask him questions!

@fnat

MeetupTalk by Andrew Tropin - Arei/Ares: A modern, extensible IDE for Guile Scheme, Thu, Jan 16, 2025, 6:00 PM | MeetupGuix Social with talk by Andrew Tropin [Andrew](https://trop.in/) is a well-known Guile, Guix and Free Software Hacker. Many people in our community know of his Guix distr
#guix#guile#scheme

Ever wanted to live REPL part of a linux terminal command? Can't remember where I found it, but this is awesome:

github.com/pawelduda/fzf-live-

Basically, put this in your .bash_aliases & `exec bash`:

```bash
repl() {
preview="${1}"; # MAKE SURE THIS HAS the substring {q} in it for where you want the thing to go!
echo '' | fzf --print-query --preview "${preview}";
}
```

Use it e.g. like this:

```bash
repl 'cat data.jsonl | jq -C {q}'
```

GitHubGitHub - pawelduda/fzf-live-repl: Turn your fzf into a live REPLTurn your fzf into a live REPL. Contribute to pawelduda/fzf-live-repl development by creating an account on GitHub.

Despite ample evidence to the contrary, #Ilive (hmm, if I were also #evil, that would be a pallindrome as well as a visual collision)
Fascinating (if I do say so) #lispgames #gamejam #gamedev #retrospective on #itch_io
lispy-gopher-show.itch.io/lisp
I am enormously happy with the
{ verb [ dobj [ prep iobj ] ] } x
language dynamic, and how it shares your #lisp #repl, and their concerns are just... Different so they don't collide.
I guess I get my #languageDesign friends a little better now.
Thoughts?

itch.ioPrincess revisited - lispmoo2 by screwtape1. Post-jam jam game I'm satisfied by my post-jam lispmoo2. I mean, look at the jam game. { @create $room :named start-locn } x { @describe start-locn :as #:|A place of beginnings; try '{ north } x'|...
Replied in thread

@amoroso #symbolics #genera naturally also has graph drawing features. Attached screenshot shows a simple example. In the Listener (-> #lisp #repl) I define a new command Show Flavor Tree. It displays the inherited Flavors. Flavors are early classes on the #lispmachine. The Listener is also a drawing plane. The command takes the name of a flavor class, then calls the graph formatter with arguments. PRESENT-FLAVOR prints the flavor and makes it mouse sensitive.