←2025-12-09 2025-12-10 2025-12-11→ ↑2025 ↑all
00:29:51 <esolangs> [[Gensym]] N https://esolangs.org/w/index.php?oldid=170371 * Corbin * (+589) Stub an important concept. I'm writing a blog post and I'd like to have ''something'' to bluelink, as WP doesn't have an article on this!
00:31:49 <esolangs> [[Gensym]] https://esolangs.org/w/index.php?diff=170372&oldid=170371 * Aadenboy * (+13) lowercase
00:56:25 <ais523> hmm, "compiler routine" is a bit ambiguous but I don't know what else to call it
00:56:52 <ais523> it's generally used by metaprogramming facilities to generate symbols at compile time (although it could plausibly be used at runtime in a language that was sufficiently dynamic)
00:57:19 <ais523> I think gensym would be ontopic for WIkipedia but it might be hard to find the required amount of secondary coverage
00:57:32 <ais523> especially as it's likely to be, e.g., side mentions in academic papers
00:59:00 <b_jonas> I gensym in two different levels in Olvashato, I guess you could get confused by that
01:01:59 <b_jonas> The compiler gens prolog symbol names -- these are represented by ruby strings so there's no ruby gensym involved. But then the if you run the resulting prolog program, it can use copy_term to gen more syms at runtime: this happens whenever you call a function value (as opposed to a named function).
01:08:31 <sorear> huh, https://en.wikipedia.org/wiki/Fresh_variable exists
01:10:12 <ais523> that article would probably be better if it explained the difference between fresh variables and free variables
01:11:30 <ais523> there was an AfD where people thought it might be good to merge into another article but weren't sure which one
01:11:41 <ais523> I suspect the correct location is an article about variable capture, but Wikipedia doesn't have one of those either
01:12:42 <ais523> ah, it's a section, https://en.wikipedia.org/wiki/Hygienic_macro#The_hygiene_problem
01:13:07 <ais523> but it's worded in terms of shadowing rather than capturing
01:14:43 <esolangs> [[Gensym]] https://esolangs.org/w/index.php?diff=170373&oldid=170372 * Ais523 * (+84) link to the appropriate Wikipedia section
01:32:11 <esolangs> [[Language list]] https://esolangs.org/w/index.php?diff=170374&oldid=170361 * Mker-bin * (-10) /* D */
01:34:02 -!- amby has quit (Quit: so long suckers! i rev up my motorcylce and create a huge cloud of smoke. when the cloud dissipates im lying completely dead on the pavement).
01:35:21 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=170375&oldid=170243 * Mker-bin * (-159) /* Introductions */
01:41:12 <b_jonas> I'm looking at https://worrydream.com/AlligatorEggs/#colorrule , it says “… we need to change that color in one family to something else.”. doesn't say “fresh color” or anything like that.
01:44:18 -!- strerror has quit (Ping timeout: 246 seconds).
01:44:18 -!- strerror_r has joined.
01:53:21 <esolangs> [[Special:Log/newusers]] create * Ytebbit * New user account
01:55:18 -!- b_jonas_ has joined.
01:55:20 -!- Hoolootwo has joined.
01:57:41 -!- op_4_ has joined.
01:58:58 -!- chiselfu1e has joined.
02:00:23 -!- b_jonas has quit (*.net *.split).
02:00:24 -!- op_4 has quit (*.net *.split).
02:00:24 -!- lambdabot has quit (*.net *.split).
02:00:24 -!- chiselfuse has quit (*.net *.split).
02:00:24 -!- Hooloovoo has quit (*.net *.split).
02:00:24 -!- zzo38 has quit (*.net *.split).
02:00:25 -!- op_4_ has changed nick to op_4.
02:03:24 <int-e> Well, here's one more refinement: https://int-e.eu/~bf3/tmp/omnipresence-exact.txt -- this version spawns exactly CORESIZE-6 threads for the bulk task instead of relying on exceeding the MAXPROCESS limit, which also happens to save two instructions (counting the dat 0 instruction that killed the sacrificial processes previously)
02:03:28 -!- lambdabot has joined.
02:05:48 <int-e> For the most part this was motivated by trying to figure out the variables feature of the pMARS language. There are no binary shift operations, so converting a number to binary is a tad tricky.
02:07:37 <int-e> (The finicky part is unchanged so I still consider this to be the same solution.)
02:15:00 -!- zzo38 has joined.
02:15:02 -!- b_jonas_ has changed nick to b_jonas.
02:26:29 <korvo> ais523: Nice, thanks.
02:27:18 <ais523> korvo: there are a couple of relevant sections in that article, I posted one on IRC and one on Esolang, so pick whichever one works best for your purpsoes
02:27:19 <korvo> And yeah, it's always been side mentions. OCaml and Scheme papers that have (define (gensym)) without explanation. Little methods in parser libraries. It didn't click for me until this afternoon that CL literally has a (gensym) routine.
02:29:18 <ais523> these little things that are side-mentions everywhere are so hard to document well
02:34:12 <b_jonas> ais523: how about in documents about prolog? I'd expect it's more documented how prolog handles this because prolog generates unbound variables during normal function calls, and also often prints expressions that contain unbound variable, so it has to handle printing those genned syms
02:34:25 <esolangs> [[User:Ytebbit]] N https://esolangs.org/w/index.php?oldid=170376 * Mker-bin * (+132) Introducing Ytebbit
02:34:50 <ais523> b_jonas: the situation in Prolog is complicated because the unbound variables it generates usually don't have names at all
02:34:52 <b_jonas> s/function calls/function entry/
02:35:16 <ais523> the printing algorithms work by trying to check which of the unbound variables in the thing being printed are equal to each other
02:35:35 <b_jonas> I see
02:35:57 <ais523> | ?- display(a(F, G, b(G, T))).
02:35:59 <ais523> a(_23,_24,b(_24,_25))
02:36:24 <ais523> gensymming can be useful in Prolog but you wouldn't use it for variable names
02:38:24 <ais523> the REPL appears to retain variable names, but that's just because it's trying to match up the names in its output with the names it saw in the input, rather than because the variables have names internally
02:38:53 <b_jonas> I think getting printable names is usually not the main purpose of genning syms even outside of prolog, even if gensym happens to be implemented in a way that it gives printable names, or you get printable names in error messages later
02:39:20 <ais523> | ?- assertz(a(b(C,C))).
02:39:22 <ais523> | ?- a(X).
02:39:23 <ais523> X = b(A,A)
02:39:34 <b_jonas> the symbols just need to have identities that can be distinguished from each other and used as keys in a dictionary
02:39:48 <ais523> variable name has been forgotten because it wasn't part of the most recent REPL statement
02:40:00 <b_jonas> (and probably distingiushed from some non-symbol types)
02:42:01 <korvo> I think freshness is slightly different from gensym. In e.g. miniKanren, (fresh (x) g) doesn't say whether x is free in g, just that *if* it were free then it is now bound, and doesn't say whether there's a symbol for the variable.
02:43:03 <korvo> They do both involve bumping a counter, but only gensym actually creates a symbol.
02:46:01 <korvo> I suppose it's a more imperative approach. When a formula is open in one variable then we can naturally talk about binding a fresh variable over that formula without actually naming it. gensym is about generating the token for the name without necessarily having a formula to bind.
02:46:18 <korvo> sorear: Oh, thank you too for the link.
02:46:39 -!- pool has joined.
02:51:47 -!- somefan has quit (Ping timeout: 272 seconds).
02:57:10 <esolangs> [[2027]] N https://esolangs.org/w/index.php?oldid=170377 * Tommyaweosme * (+508) Created page with "2027 is a program with 2027 unique commands, and it only works in the year 2025. However, every year, the documentation is changed so that the current year is the only one that is supported in. == Commands == f_1 - Undefined behaviour, different for every interpreter.
02:57:56 <esolangs> [[User:Tommyaweosme]] https://esolangs.org/w/index.php?diff=170378&oldid=170178 * Tommyaweosme * (+13) /* esolangs */ added [[2027]], fixed infamous brainletter typo
03:00:14 <esolangs> [[Brainletter]] https://esolangs.org/w/index.php?diff=170379&oldid=134668 * Tommyaweosme * (+26)
03:01:07 -!- pool has quit (Quit: The Lounge - https://thelounge.chat).
03:03:25 -!- pool has joined.
03:05:33 -!- pool has quit (Client Quit).
03:06:22 -!- pool has joined.
03:08:47 -!- pool has quit (Client Quit).
03:09:17 -!- pool has joined.
03:22:54 <b_jonas> korvo: I think gensym is for generating a symbol (that isn't equal to any previously existing symbol), but a symbol isn't necessarily used as a variable, in particular even in prolog you could have a "gensym" that generates a new atom rather than a variable
03:27:31 <b_jonas> but maybe this is too general to be considered a gensym
03:28:42 <b_jonas> like in python3, you could just define `class symbol: __slots__ = []`, instances of this are usable as dictionary keys and compare by address by default, so the call `symbol()` creates a fresh symbol that works this way
03:29:07 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=170380&oldid=170375 * Ytebbit * (+124) Introducing myself as Ytebbit
03:29:41 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=170381&oldid=170171 * Ytebbit * (+176) Anonymize user
03:32:18 <b_jonas> though you could also say that only strings are symbols in python3, because onliy strings can be used as attribute names for some reason (probably to make some optimizations easier)
03:35:37 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=170382&oldid=170381 * Ais523 * (+974) /* anonymize user */ this request needs more thought so I'm not just going to do it immediately upon the request, maybe other people have thoughts?
03:53:27 <korvo> b_jonas: Yeah. In idiomatic Python we use `object()` for that; those also compare by address.
03:54:56 <b_jonas> korvo: yes, but object has two extra slots so it's bigger
03:55:14 <b_jonas> ah no, I'm stupid
03:55:16 <b_jonas> it doesn't
03:55:21 <b_jonas> object works fine for this
03:55:40 <b_jonas> (though a custom type can help debugging of course)
04:15:54 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=170383&oldid=170382 * Mker-bin * (+307) Response
04:16:30 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[User:Mker-bin]]": user request to delete their own userpage
04:18:03 <esolangs> [[Special:Log/renameuser]] renameuser * Ais523 * Ais523 renamed user [[User:Mker-bin]] (9 edits) to [[User:Deleted-6c7c9c36]]: anonymizing user's contributions
04:19:56 <esolangs> [[DTM]] https://esolangs.org/w/index.php?diff=170384&oldid=170216 * Ais523 * (-117)
04:20:39 <esolangs> [[Special:Log/delete]] revision * Ais523 * Ais523 changed visibility of 2 revisions on page [[DTM]]: content hidden: hiding personal information in past revisions
04:21:24 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=170385&oldid=170383 * Ais523 * (+205) /* anonymize user */ account anonymized
04:23:36 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[User:Ytebbit]]": this page should only be created by [[User:Ytebbit]], not by other users
04:36:28 <esolangs> [[DTM]] https://esolangs.org/w/index.php?diff=170386&oldid=170384 * Ytebbit * (-3) Changing user
04:39:17 <esolangs> [[Special:Log/delete]] revision * Ais523 * Ais523 changed visibility of a revision on page [[DTM]]: content hidden: contains information that is being anonymized
04:42:29 <esolangs> [[User:Ytebbit]] N https://esolangs.org/w/index.php?oldid=170387 * Ytebbit * (+105) Introducing (again) Ytebbit
05:21:51 <esolangs> [[List of ideas]] https://esolangs.org/w/index.php?diff=170388&oldid=169945 * L4.m2 * (+104) /* General Ideas */
05:59:25 -!- ais523 has quit (Ping timeout: 264 seconds).
05:59:44 -!- ais523 has joined.
07:24:52 -!- Yayimhere has joined.
07:42:29 -!- Yayimhere has quit (Ping timeout: 272 seconds).
07:59:41 -!- ais523 has quit (Quit: quit).
08:05:29 -!- tromp has joined.
08:11:31 -!- Sgeo has quit (Read error: Connection reset by peer).
08:22:38 -!- strerror_r has changed nick to strerror.
08:32:05 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
08:41:12 -!- tromp has joined.
08:58:14 -!- Hoolootwo has quit (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in).
08:58:36 -!- Hooloovoo has joined.
09:14:32 <esolangs> [[Talk:2027]] N https://esolangs.org/w/index.php?oldid=170389 * PkmnQ * (+170) Created page with "I'm guessing others are allowed to update the year if nobody else has already updated it? ~~~~"
09:19:42 -!- xysdd has joined.
09:20:03 -!- xysdd has left.
10:22:50 -!- earend1 has joined.
10:31:00 <esolangs> [[Talk:ByteByteIfJump]] N https://esolangs.org/w/index.php?oldid=170390 * Timm * (+8) Created page with "{{stub}}"
12:08:16 -!- somefan has joined.
12:13:26 <APic> Hi
12:29:20 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
12:36:59 -!- somefan has quit (Remote host closed the connection).
12:59:18 -!- pool has quit (Ping timeout: 260 seconds).
13:07:27 -!- pool has joined.
13:11:13 <esolangs> [[Special:Log/newusers]] create * Bolsen * New user account
13:14:56 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=170391&oldid=170380 * Bolsen * (+120)
13:20:49 <esolangs> [[Stroll]] N https://esolangs.org/w/index.php?oldid=170392 * Rottytooth * (+1173) Created page with "'''Stroll''' is a programming language whose code is intimately tied to a physical neighborhood, usually (but not necessarily) urban. A Stroll program is written in walking instructions for three actors, called Red, Green, and Blue. While the parts of Red and Green's
13:33:23 -!- Yayimhere has joined.
13:34:00 <esolangs> [[Stroll]] https://esolangs.org/w/index.php?diff=170393&oldid=170392 * Rottytooth * (-1)
13:51:22 -!- ^[ has quit (Ping timeout: 244 seconds).
13:51:58 -!- tromp has joined.
13:52:16 -!- amby has joined.
13:54:15 -!- Yayimhere has quit (Ping timeout: 272 seconds).
14:03:15 -!- ^[ has joined.
14:12:10 -!- earend1 has quit (Quit: Connection closed for inactivity).
14:32:24 -!- Yayimhere has joined.
14:33:24 -!- chloetax has joined.
14:33:54 <esolangs> [[Stroll]] https://esolangs.org/w/index.php?diff=170394&oldid=170393 * Rottytooth * (+2970)
14:34:31 <esolangs> [[Stroll]] https://esolangs.org/w/index.php?diff=170395&oldid=170394 * Rottytooth * (+4)
14:38:31 <esolangs> [[Stroll]] https://esolangs.org/w/index.php?diff=170396&oldid=170395 * Rottytooth * (+222)
14:39:45 <esolangs> [[User:Rottytooth]] https://esolangs.org/w/index.php?diff=170397&oldid=170199 * Rottytooth * (+7)
14:43:25 <esolangs> [[Special:Log/newusers]] create * Qvixnh22 * New user account
14:45:26 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=170398&oldid=170391 * Qvixnh22 * (+103)
14:47:55 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
14:49:05 <esolangs> [[Stroll]] https://esolangs.org/w/index.php?diff=170399&oldid=170396 * Rottytooth * (+38)
14:49:59 -!- Yayimhere has quit (Ping timeout: 272 seconds).
15:00:45 <esolangs> [[Atle]] N https://esolangs.org/w/index.php?oldid=170400 * Demetrius55 * (+2278) Created page with "'''Atnolt''' is an experimental esoteric programming language designed to be simple but flexible. It supports basic arithmetic, input/output, and control commands. The language uses lines starting with @ to indicate commands. Execution must be started with <code>@execu
15:01:32 <esolangs> [[Atle]] https://esolangs.org/w/index.php?diff=170401&oldid=170400 * Demetrius55 * (+8)
15:14:47 -!- perlbot has quit (Read error: Connection reset by peer).
15:15:49 -!- simcop2387 has quit (Ping timeout: 260 seconds).
15:18:57 -!- simcop2387 has joined.
15:24:10 -!- perlbot has joined.
15:42:08 <esolangs> [[Matcha]] N https://esolangs.org/w/index.php?oldid=170402 * Qvixnh22 * (+2555) Created page with "'''Matcha''' is an [[esoteric programming language]] created by qvixnh22, yyyy7089, and hibye1217 in 2025. It is based on geometrical approach of uniqueness. ==Code== Every code should be consist of two integers per line. In case other than two integers on a single li
15:59:38 -!- Sgeo has joined.
16:00:35 <esolangs> [[Talk:Stroll]] N https://esolangs.org/w/index.php?oldid=170403 * Ais523 * (+745) underspecified
16:05:12 <esolangs> [[Talk:Stroll]] https://esolangs.org/w/index.php?diff=170404&oldid=170403 * Ais523 * (+653) more underspecifications
16:43:36 -!- tromp has joined.
17:11:14 -!- ais523 has joined.
17:26:33 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
17:29:42 -!- tromp has joined.
18:16:41 <int-e> The way pMARS manages the process queues is... interesting: All warriors share a single ring buffer, but each has a variable length queue, and they're all chasing each other. I *think* this means that there must be a block move somewhere in there for warriors that burn through a lot of threads and let them die.)
18:16:45 -!- impomatic has joined.
18:16:51 <int-e> lol, timing
18:17:29 -!- pool has quit (Quit: The Lounge - https://thelounge.chat).
18:17:36 <int-e> impomatic: I ran into two infelicities in pMARS: https://int-e.eu/~bf3/tmp/pmars.patch and I refined my "warrior" to hard-code the core size: https://int-e.eu/~bf3/tmp/pmars.patch
18:18:02 -!- pool has joined.
18:18:52 <int-e> impomatic: (not a substantially new solution since the final cleanup is identical. but this way it works with core sizes down to 16)
18:21:17 <int-e> impomatic: and "timing": I wrote this https://logs.esolangs.org/libera-esolangs/2025-12-10.html#lIc seconds before you joined.
18:21:30 <int-e> sorry for the barrage of messages, I think that's all I have for now :-)
18:21:37 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
18:29:41 -!- tromp has joined.
18:57:49 <b_jonas> int-e: ICFP 2004 has a strange turn order. the ants run instructions in the same cyclic order among the ants throughout the game (dead ants don't execute instructions, and an ant that walks skips its next 14 turns before executing its next instruction). the cyclic order of the ants is assigned at the start of the game, sorted by the coordinates of the ants' starting position. this has a weird effect
18:57:55 <b_jonas> that if the two anthills are separated north-south then all ants of one color take their turn together then all ants of the other color take their turn etc, but if the anthills are separated west-east then ants from the two teams are mixed in the turn order.
19:10:38 <impomatic> int-e: just catching up. Thanks for the patch. I'll share it in the pmars-dev group and add it to the latest code.
19:31:20 -!- Lord_of_Life has quit (Ping timeout: 244 seconds).
19:31:46 -!- Lord_of_Life has joined.
19:36:46 <int-e> impomatic: yeah take your time
19:37:09 <int-e> fizzie: funnily enough I handled today's twist better than yesterday's
19:39:25 <int-e> (AoC; I don't have the library collection that would cover dealing with 2D polygons (or unions of rectangles) and winding numbers and all that, and there is just so much room for off-by-one errors.)
19:40:22 <int-e> (While today I just decided to not even try implementing my own solver for the second part.)
19:44:32 -!- Sgeo_ has joined.
19:46:54 <impomatic> int-e: I've applied the patch to the latest dev snapshot, thanks https://corewar.co.uk/pmars.htm
19:47:04 <int-e> neat
19:47:59 <int-e> I also saw a bunch of for (count = 1; count < [some bound]; count++) loops in passing which smell an awful lot like off-by-one errors, but I decided not to bother.
19:48:39 <int-e> (I only looked at cdb.c, which isn't the most critical part of the code)
19:49:00 -!- Sgeo has quit (Ping timeout: 240 seconds).
19:49:00 -!- ais523 has quit (Ping timeout: 240 seconds).
19:49:16 -!- chloetax has quit (Ping timeout: 240 seconds).
19:49:58 <impomatic> The link to the new version of Omnipresence was a duplicate of the patch link :-/
19:50:46 <int-e> impomatic: ooh. I think it's Firefox's fault (selecting the URL bar sometimes doesn't update the X11 selection). https://int-e.eu/~bf3/tmp/omnipresence-exact.txt
19:53:03 <int-e> impomatic: I also talked about it a bit on here earlier: https://logs.esolangs.org/libera-esolangs/2025-12-10.html#lH ff.
19:57:55 <fizzie> I haven't even done part 2 yet (only had enough time for part 1 before breakfast), so still not sure whether I'll try to use an off-the-shelf tool for part 2.
19:58:21 <fizzie> This might be where I fail the Burlesque thing this year.
20:01:29 <int-e> impomatic: I'm kind of curious in your solution too.
20:14:38 <int-e> fizzie: TBF I don't know how hard these problems really are; all I've checked is that the naive DP approach will probably fail miserably because the hypercuboids are too voluminous.
20:34:53 <impomatic> copy spl 1, launch+1
20:34:53 <impomatic>         mov launch, >copy
20:34:54 <impomatic>         spl {wimp, }0
20:34:54 <impomatic>         spl #0
20:34:55 <impomatic>         mov wimp, }launch
20:34:55 <impomatic> launch jmp wimp
20:34:56 <impomatic> wimp equ launch+1
20:36:29 <impomatic> int-e: it's very slow!  I have a few other almost working solutions which I'm trying to finish.
20:39:24 <int-e> impomatic: Ah. As you may have seen I decided early on that the solution should work with the default cycle count limit, which rules out this incremental launching of processes. But also, the main difficulty is the final few steps that fill all niches with `jmp 0` and trapped processes.
20:42:31 -!- chloetax has joined.
20:43:08 <int-e> Hmm. I think I need to actually run this...
21:06:19 -!- impomatic has quit (Quit: Client closed).
21:30:32 -!- somefan has joined.
21:33:18 -!- chiselfu1e has changed nick to chiselfuse.
21:38:26 -!- ais523 has joined.
22:20:40 <esolangs> [[DTM]] M https://esolangs.org/w/index.php?diff=170405&oldid=170386 * Ytebbit * (+37) Editing user ownership
22:22:10 <int-e> Did some analysis: https://int-e.eu/~bf3/tmp/impomatic-wimp.txt
22:23:35 <int-e> That endgame is tricky. The initial setup is delicate too.
22:26:48 <APic> Good Night
22:35:01 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
22:37:06 -!- tromp has joined.
22:41:49 -!- somefan has quit (Ping timeout: 272 seconds).
22:52:12 <esolangs> [[2027]] https://esolangs.org/w/index.php?diff=170406&oldid=170377 * Hotcrystal0 * (+77) dont forget cat program
22:52:17 <esolangs> [[Vertical tab 'N]] https://esolangs.org/w/index.php?diff=170407&oldid=165579 * * (+37) /* AuFI */
22:55:07 <esolangs> [[Vertical tab 'N]] https://esolangs.org/w/index.php?diff=170408&oldid=170407 * * (-87) /* Implementations */
23:29:51 -!- simcop2387_ has joined.
23:30:13 -!- simcop2387 has quit (Ping timeout: 246 seconds).
23:30:37 -!- perlbot has quit (Ping timeout: 264 seconds).
23:31:28 -!- simcop2387_ has changed nick to simcop2387.
23:33:35 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
23:38:16 -!- perlbot has joined.
←2025-12-09 2025-12-10 2025-12-11→ ↑2025 ↑all