00:50:10 -!- sebbu2 has joined. 00:51:08 -!- sebbu has quit (Ping timeout: 256 seconds). 01:01:24 [[International Phonetic Esoteric Language]] https://esolangs.org/w/index.php?diff=73974&oldid=73811 * Bigyihsuan * (+274) /* IO */ 01:02:35 [[International Phonetic Esoteric Language]] https://esolangs.org/w/index.php?diff=73975&oldid=73974 * Bigyihsuan * (+85) /* Plosives: Stack Operations */ 01:02:51 [[International Phonetic Esoteric Language]] https://esolangs.org/w/index.php?diff=73976&oldid=73975 * Bigyihsuan * (+0) /* IO */ 01:09:33 [[GORBITSA]] https://esolangs.org/w/index.php?diff=73977&oldid=73969 * ZippyMagician * (+1066) Self-interpreter 01:12:55 [[GORBITSA]] https://esolangs.org/w/index.php?diff=73978&oldid=73977 * ZippyMagician * (+40) Clarification (self-interpreter) 01:16:05 [[International Phonetic Esoteric Language]] https://esolangs.org/w/index.php?diff=73979&oldid=73976 * Bigyihsuan * (+830) /* Overview */ 01:19:58 [[GORBITSA]] https://esolangs.org/w/index.php?diff=73980&oldid=73978 * ZippyMagician * (-34) Marked as implemented 01:20:08 [[International Phonetic Esoteric Language]] https://esolangs.org/w/index.php?diff=73981&oldid=73979 * Bigyihsuan * (+303) /* The Register */ 02:01:37 Sometimes, in order to win the game, you must concede. 02:02:38 Which game? Magic: The Gathering? 02:03:31 Yes, although maybe other games too I don't know. 02:05:22 How can you win that game by conceding? 02:06:18 -!- Phantom__Hoover has joined. 02:07:07 Well, sometimes it is possible in case of team games or subgames. 02:11:32 For example, see: http://zzo38computer.org/textfile/miscellaneous/magic_card/puzzle.5 02:36:14 Apparently, Wizards of the Coast seems to really hate Time Spiral block. But I think is better than most blocks, and some other people also think. At least, this is what some people wrote on the comments. 02:51:19 -!- Soni has quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.). 02:55:15 -!- imode has joined. 03:09:54 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds). 03:28:47 -!- ArthurSt1ong has quit (Quit: leaving). 03:29:08 -!- ArthurStrong has joined. 04:11:45 Hi all. Dear lazyweb, what are practical uses of regex backresolves? Wondering... 05:27:46 -!- Soni has joined. 05:27:55 -!- ais523 has joined. 05:28:21 ArthurStrong: do you mean "backreferences"? not sure about /practical/, but some people have used them for some unexpectedly powerful esoprograms 05:28:24 -!- adu has quit (Quit: adu). 05:31:04 for example, here's a regex (not made by me!) that divides a number (expressed in bijective unary) by sqrt(2): https://codegolf.stackexchange.com/questions/198427/shift-right-by-half-a-bit/198428#198428 05:33:11 similarly, here's a regex (made by the same person as the above regex) that matches factorials (expressed in bijective unary): https://codegolf.stackexchange.com/questions/121731/is-this-number-a-factorial/178979#178979 05:39:53 on a related note, are all linear bound automata primitive recursive? 06:13:09 -!- Cale has quit (Ping timeout: 265 seconds). 06:15:25 -!- tromp has joined. 06:20:00 -!- Cale has joined. 06:25:30 They said JavaScript doesn't have a integer type; well, it does now, and I think it did even when that message was written 06:25:51 (However, its integer type is signed, not unsigned.) 07:28:42 `5 w 07:28:46 1/1:gray//Gray is e common misspalling of grey. \ currying//Functions are curried by taking curry(f). \ topology//Topology is another name for topos theory. \ ssr//SSR is Steven's Sausage Roll. \ itay//Itay is Christmas in Italy. 07:33:57 -!- rain1 has joined. 07:49:34 -!- LKoen has joined. 07:55:23 -!- cpressey has joined. 08:13:46 -!- imode has quit (Ping timeout: 256 seconds). 08:31:06 -!- Phantom__Hoover has joined. 08:45:45 [[Tandem]] N https://esolangs.org/w/index.php?oldid=73982 * Chris Pressey * (+14554) Created page with "'''Tandem''' is an experimental rewriting language, designed by [[Chris Pressey]] in June 2020, where the rewrite rules form a Kleene algebra. The object being rewritten by a..." 08:48:16 [[Tandem]] M https://esolangs.org/w/index.php?diff=73983&oldid=73982 * Chris Pressey * (-3) /* Implementing Automata in Tandem */ grammar 08:53:14 [[Tandem]] https://esolangs.org/w/index.php?diff=73984&oldid=73983 * Chris Pressey * (+203) /* Syntax */ Describe the escape sequences allowed in string literals. 08:54:15 [[Language list]] https://esolangs.org/w/index.php?diff=73985&oldid=73951 * Chris Pressey * (+13) /* T */ Add Tandem. 09:04:32 [[Tandem]] https://esolangs.org/w/index.php?diff=73986&oldid=73984 * Chris Pressey * (+94) /* Examples */ Clarify why this example never matches. 09:04:43 [[GORBITSA]] https://esolangs.org/w/index.php?diff=73987&oldid=73980 * ZippyMagician * (+20) Fix to O/G commands 10:01:39 [[Tandem]] https://esolangs.org/w/index.php?diff=73988&oldid=73986 * Chris Pressey * (+42) /* Algebraic properties */ Don't let's confuse CNF and DNF. 10:03:07 [[BF-ASM:8]] M https://esolangs.org/w/index.php?diff=73989&oldid=73832 * DmilkaSTD * (+622) some documentation things 10:03:45 [[BF-ASM:8]] M https://esolangs.org/w/index.php?diff=73990&oldid=73989 * DmilkaSTD * (+18) Whoops 10:12:19 [[GORBITSA]] https://esolangs.org/w/index.php?diff=73991&oldid=73987 * X39 * (+4117) Made Specification into table with proper MUST/SHOULD/UNDEFINED/MAY/MUSTNOT verbs 10:16:25 [[GORBITSA]] https://esolangs.org/w/index.php?diff=73992&oldid=73991 * X39 * (+62) Renamed Headers 10:16:38 -!- Sgeo has quit (Read error: Connection reset by peer). 10:17:30 [[BF-ASM:8]] M https://esolangs.org/w/index.php?diff=73993&oldid=73990 * DmilkaSTD * (+105) comments syntax 10:20:07 -!- S_Gautam has joined. 10:20:26 [[GORBITSA]] https://esolangs.org/w/index.php?diff=73994&oldid=73992 * X39 * (+355) /* Specification */ Added details about initial values 10:29:25 -!- TheLie has joined. 10:43:14 -!- arseniiv has joined. 11:02:00 I just realized that enqueuing an event in a language like JavaScript is a lot like prepending a call frame to the bottom of the call stack. When the last function returns, instead of exiting (transferring control back to the OS), it transfers it to the event handler. 11:02:07 The analogy's not perfect of course. 11:05:18 I didn't realize until today that JavaScript's event queue actually contains the handlers themselves (I kind of thought there were looked up at the time the event is to be handled, but no. They're stored in the queue. If there is no handler, nothing's enqueued.) 11:06:51 that makes perfect sense since you can have multiple handlers created different ways for the same event 11:07:42 Yes, and there's no sense enqueing something if you know there's no handler for it. 11:11:02 yeah, especially since there are quite a lot of events that could happen 11:20:30 -!- user24 has joined. 11:21:04 [[GORBITSA]] https://esolangs.org/w/index.php?diff=73995&oldid=73994 * X39 * (+1074) Moved examples into table with according informations & expectations attached to them 11:21:52 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=73996&oldid=73995 * X39 * (+14) /* Programs */ Added `Specification` to Compliance header 11:29:49 -!- Lord_of_Life_ has joined. 11:30:49 -!- Lord_of_Life has quit (Ping timeout: 264 seconds). 11:32:40 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 11:36:20 -!- cpressey1 has joined. 11:36:44 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=73997&oldid=73996 * X39 * (+11) /* Implementations */ Updated input modes 11:37:13 -!- cpressey has quit (Ping timeout: 256 seconds). 11:51:23 -!- t20kdc has joined. 12:05:48 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=73998&oldid=73997 * PythonshellDebugwindow * (+164) /* Programs */ eof cat 12:10:17 -!- cpressey1 has quit (Quit: WeeChat 1.9.1). 12:11:23 [[UsableSeed]] M https://esolangs.org/w/index.php?diff=73999&oldid=66292 * PythonshellDebugwindow * (+108) 12:16:59 [[User:PythonshellDebugwindow/InputOnlyLangs]] M https://esolangs.org/w/index.php?diff=74000&oldid=73787 * PythonshellDebugwindow * (+16) 12:19:03 -!- adu has joined. 12:21:34 -!- sprocklem has quit (Ping timeout: 240 seconds). 12:23:41 -!- sprocklem has joined. 12:29:00 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74001&oldid=73998 * X39 * (-26) /* Programs */ Removed note that explains behavior according to specification 12:59:44 -!- S_Gautam has quit (Quit: Connection closed for inactivity). 13:09:37 [[Livefish]] M https://esolangs.org/w/index.php?diff=74002&oldid=73097 * PythonshellDebugwindow * (+21) /* Lua */ fix 13:14:18 -!- cpressey has joined. 13:21:20 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74003&oldid=74001 * Geek Joystick * (+216) /* Programs */ 13:35:54 hi folks (hehe) 13:36:20 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74004&oldid=74003 * ZippyMagician * (-1442) 13:37:50 suppose you have a function `partition :: Integer -> [a] -> [[a]]` which for usual values of the first argument works like that: 13:37:50 partition 3 [1..10] = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]] 13:37:50 what would you say about `partition 0`? (I have an answer of my own but I’ll spoil the problem later) 13:41:03 an infinite list of empty lists? 13:41:30 yes this comes to mind immediately but I think this definition is quite unhelpful and there’s a better one 13:42:16 which is coherent with definition of another function at 0, which is quite controversial for general public but algebraically solid 13:42:27 I won’t spoil what function yet 13:43:39 [[Special:Log/move]] move * Ais523 * moved [[Sir Felix Delazar]] to [[User:SirFelixDelazar]]: appears to be a User: page created in the main namespace by mistake 13:43:46 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=74006&oldid=74004 * ZippyMagician * (-10) Fix category in infobox 13:45:26 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=74007&oldid=74006 * Ais523 * (+2) /* Implementations */ fix section header 13:45:40 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=74008&oldid=74007 * ZippyMagician * (-10) Fix link 13:46:08 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74009&oldid=74008 * Geek Joystick * (-103) /* Implementations */ 13:48:45 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74010&oldid=74009 * ZippyMagician * (+149) Add Multiplication programs 13:50:09 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74011&oldid=74010 * ZippyMagician * (-67) Remove credits for non-major programs 13:50:18 -!- sprocklem has quit (Ping timeout: 256 seconds). 13:51:14 -!- sprocklem has joined. 13:55:27 oh incidentally isn’t there a function in one of the bots which would post a message after a given timeout, or approximately at a given time? 13:55:51 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74012&oldid=74011 * ZippyMagician * (+1) Fix 13:58:03 "partition 0" seems too much like "divide by 0" to me, I would leave it undefined 14:04:21 -!- user24 has quit (Quit: Leaving). 14:10:57 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74013&oldid=74012 * Geek Joystick * (+388) /* Programs */ 14:18:03 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74014&oldid=74013 * ZippyMagician * (+17) Fix info/indentation 14:23:18 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=74015&oldid=74014 * X39 * (+2363) /* Implementations */ Added more detailed info about supported IO 14:23:27 well, it's obvious what the /last/ element of the resulting list is 14:23:43 the only controversy is as to how many empty elements appear before it 14:24:02 a naive implementation would surely put infinitely many empty elements there, though 14:24:04 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=74016&oldid=74015 * X39 * (+6) /* Implementations */ Fixed INN & PNN 14:24:16 (unless this is one of those "9 recurring = minus 1" theorems) 14:24:35 ais523: thanks! 14:26:37 thinknig about it, the number of elements that appear earlier should be 0/0, which is NaN, so I'm going to claim "the output is a list consisting of NaN empty lists followed by the original list" 14:26:54 not that this is a concept that most languages can easily represent :-D 14:29:26 …I guess a further ramification of this is that the output does not compare equal with itself 14:29:38 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74017&oldid=74016 * Geek Joystick * (-1) 14:32:06 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74018&oldid=74017 * ZippyMagician * (+0) Fix Zippy's implementation details 14:36:18 [[GORBITSA/bf-interpreter]] N https://esolangs.org/w/index.php?oldid=74019 * ZippyMagician * (+10779) Created page with "Created by Gorbit99. Runs in ROM mode with char input/output, only positive numbers allowed (0-255) >+[ Read in code until # ,>+++++++[-<----->]< [ If not # >>+< Set..." 14:36:49 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74020&oldid=74018 * Geek Joystick * (+9) /* Implementations */ 14:37:13 -!- LKoen has quit (Remote host closed the connection). 14:41:26 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74021&oldid=74020 * SirFelixDelazar * (+20) /* Implementations */ 14:41:54 -!- sprocklem has quit (Ping timeout: 240 seconds). 14:42:45 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74022&oldid=74021 * SirFelixDelazar * (+22) /* Implementations */ 14:43:23 -!- sprocklem has joined. 14:43:27 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=74023&oldid=74022 * X39 * (+0) /* Implementations */ Updated my implementation details 14:45:59 -!- Arcorann has quit (Read error: Connection reset by peer). 14:47:23 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74024&oldid=74023 * ZippyMagician * (+368) Add brainfuck interpreter 14:48:14 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=74025&oldid=74024 * ZippyMagician * (+5) Fix link 15:11:04 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=74026&oldid=74025 * Megarev * (+106) /* Programs */ 15:13:13 ais523: yeah something like that 15:14:01 "partition 0" seems too much like "divide by 0" to me, I would leave it undefined => understandable 15:14:30 ais523: yeah something like that => I meant the first version where there are zero []s, though NaN []s is interesting 15:15:08 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=74027&oldid=74026 * Megarev * (+4) /* A 10x10 Box (By Megarev) */ 15:16:32 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=74028&oldid=74027 * Megarev * (+67) /* A 10x10 Box (By Megarev) */ 15:17:49 -!- ChanServ has set channel mode: +o ais523. 15:18:05 not doing any moderation, but ChanServ is apparently going to go down for a while 15:18:30 meaning that it'll be helpful to have someone pre-opped just in case op powers are needed 15:18:45 otherwise there'll be no way to moderate the channel 15:19:25 too reasonable to be the truth^W^W^W^W^W^W 15:19:55 is x % 0 normally considered undefined? I can't see how it would have any sensible value but x 15:20:53 ais523: yeah when I finally learned it may be defined as x, now I don’t see anything other else, but the majority of, say, programming languages conservatively/still-unknowingly disagrees 15:21:10 it may depend on what edge case rules you use 15:21:27 ais523: it's undefined in C99 at least 15:21:34 I just checked the specs of a language I'm working on and it said that the return value of a modulus x % y is always in the range 0 to y-1 inclusive 15:21:57 which means that it needs to reject x % 0 as a range error, but then it also rejects x % -1 as a range error 15:22:05 whereas I think most programming languages return 0 for integer x 15:22:13 > 2 `mod` -1 15:22:16 error: 15:22:16 Precedence parsing error 15:22:16 cannot mix ‘mod’ [infixl 7] and prefix `-' [infixl 6] in the same in... 15:22:19 [[GORBITSA/bf-interpreter]] M https://esolangs.org/w/index.php?diff=74029&oldid=74019 * PythonshellDebugwindow * (+49) 15:22:20 > 2 `mod` (-1) 15:22:22 0 15:22:25 > 2 `rem` (-1) 15:22:27 0 15:22:45 I like Knuth’s definition IIRC, though I think there were arguments for another one which is close but it works with euclidean algorithm, I always forget in what regard 15:23:00 (this is a language where having controlled errors is useful, so I don't want to make more cases work than are necessary) 15:25:05 what's the argument for x % 0 = x? 15:25:45 (x / y) * y + (x % y) = x 15:26:00 with y = 0, the * y becomes * 0 15:26:04 so you get (x % y) = x 15:26:10 err, (x % 0) = x 15:26:16 How is it that (x/0)*0 = 0? 15:26:37 the argument relies on the identity z*0 = 0 for all z 15:26:44 this is the only weak point in it 15:27:01 in that it's quite reasonable to claim that that identity is unreasonable where division by zero is concerned 15:28:20 rain1: you may first define mod n as a function from Z to Z/nZ (or e. g. from R to R/nR) with some properties, in this case mod 0 is Z → Z/0 ≅ Z and is the identity. Then you can map Z/nZ to Z in some way, like the usual [0..n) for nonzero n, but for n = 0, the all of Z will still be reasonable 15:28:44 ooh 15:28:47 with some properties => why, this should just be a ring morphism 15:28:47 for what it's worth, in declarative languages, it seems obviously correct to have x / 0 = fail for nonzero x, and 0 / 0 = unconstrained number 15:28:59 nonzero* 15:29:12 in that case, x % 0 = x is the only consistent ruling if you're dealing with numbers that can go both negative and positive 15:29:53 I haven't really decided how to deal with negative numbers in my declarative languages yet 15:30:02 even Prologs differ amongst themselves 15:31:20 nonzero* => I’m not sufficient again; it should be an epimorphism 15:31:25 fwiw, Wikipedia's definition of modular arithmetic says "Given an integer n > 1, called a modulus, two integers are said to be congruent modulo n if n is a divisor of their difference, that is, if there is an integer k such that a − b = kn." If you ignore the n > 1 part, it's consistent with the choice x % 0 = x. 15:31:36 (No matter how much it offends my sensibilities.) 15:31:55 cpressey: yeah, that’s indeed consistent 15:31:59 I'm fairly satisfied that x % 0 can't reasonably be anything /but/ x, if it's anything at all 15:32:06 but I think deciding that it's undefined is also reasonable 15:32:08 -!- adu has quit (*.net *.split). 15:32:08 -!- t20kdc has quit (*.net *.split). 15:32:09 -!- Phantom__Hoover has quit (*.net *.split). 15:32:09 -!- wmww has quit (*.net *.split). 15:32:10 -!- xelxebar has quit (*.net *.split). 15:32:12 and the choice may depend on the domain of x 15:32:26 -!- adu has joined. 15:32:27 -!- t20kdc has joined. 15:32:27 -!- Phantom__Hoover has joined. 15:32:27 -!- xelxebar has joined. 15:32:27 -!- wmww has joined. 15:32:43 more elaborated, (x % n = y % n) <=> (x ≡ y (mod n)) holds with this definition of % 15:33:06 is (mod 0) generally considered defined? 15:33:14 also, does this work for negative n? 15:33:29 -!- xelxebar has quit (Max SendQ exceeded). 15:33:32 (that said, negative moduli are a mess anyway) 15:33:54 -!- xelxebar has joined. 15:34:22 ais523: yeah, (mod −n) should be the same as (mod n), as (−n)Z = nZ, though I don’t know how widely that’s avoided in usage 15:35:33 algebraically, ≡ (mod n) is the same as ≡ (mod I) for an ideal I = nZ. These relations are defined for any ideal, the same as we can have (mod [a normal subgroup]) for groups 15:36:02 there should be no conflations in using this notation this way IIRC 15:36:16 -!- tswett[m] has quit (Ping timeout: 244 seconds). 15:36:27 -!- wmww has quit (Ping timeout: 252 seconds). 15:36:39 I know very little algebra 15:38:51 I know enough to quotient by an equivalence relation, and then wrote all my papers in terms of that 15:39:27 -!- xylochoron[m] has quit (Ping timeout: 240 seconds). 15:40:05 This week I designed a rewriting language and I think the set of rewrite rules forms a Kleene algebra. 15:40:12 I put it on the wiki this morning. 15:40:44 (Notwithstanding that I probably know less algebra than either of you) 15:40:45 but that one should be consomething with all the structure, though I need to say I don’t understand why do many textbook authors not mention equivalence relations when defining quotient groups, rings and algebras 15:41:06 wow that was annoyingly difficult to find in Recent Changes 15:41:13 there's been so much activity recently 15:41:20 though they won’t be able to avoid it if they choose to work with monoids or rigs heheheheh 15:41:57 cpressey: ais523: what’s it called? 15:42:21 arseniiv: I think they prefer to speak in terms of homomorphisms, since it amounts to basically the same thing? 15:42:42 arseniiv: https://esolangs.org/wiki/Tandem 15:43:18 I also created an esolang recently, https://esolangs.org/wiki/Annihilator 15:43:36 > 4 `mod` (-7) -- may use different representatives though 15:43:38 -3 15:43:55 cpressey: they like normal subgroups and ideals and that’s very good these things exist at all but sometimes they don’t, and anyways many quotient objects may be formulated as usual quotient sets with an induced structure, and that is the basic thing anyone needs to read stated in clear text, I think 15:44:11 > 4 `mod` 0 15:44:14 *Exception: divide by zero 15:44:17 > (-4) `mod` (-7) 15:44:19 -4 15:44:23 > (-4) `rem` (-7) 15:44:25 -4 15:44:36 > (-4) `mod` (7) 15:44:36 I can’t get over The waterfall model still 15:44:38 3 15:44:40 > (-4) `rem` (7) 15:44:43 -4 15:45:03 arseniiv: what bothers you about it? 15:45:29 ais523: not that something bothers me, it’s just too neat a thing 15:45:35 actually, the main thing that bothers me about it is that it was easier to prove TC than it should have been 15:45:35 arseniiv: I do agree that a clear explanation of quotients in abstract algebra would be nice to have and I've never really seen one; I'm still pieceing the ideas together, myself. 15:45:43 which suggests that maybe there's an even simpler language along those lines 15:45:58 how that was discovered that recently is strange! 15:46:05 normally the easiest-to-implement languages are things like 2-Echo Tag which are a complete pain to prove 15:46:20 arseniiv: and I discovered it at least twice before I noticed, possibly three times 15:46:23 which suggests that maybe there's an even simpler language along those lines => that would be even more mesmerizing 15:47:22 one thing I noticed is that The Waterfall Model can trivially implement linear recurrence relations, but I suspect those aren't TC 15:47:28 would be fun if they were though 15:48:09 ais523: `rem` is the one that doesn't give representatives because it matches `quot` which rounds towards zero, whereas `div` rounds towards negative infinity (which is where a negative divisor makes a difference). 15:48:57 right 15:52:47 cpressey: the basic idea, for any algebraic model or even a structure with relations, is for the equivalence relation to be consistent (or what it’s called) with them, and that precisely gives us to induce that same kind of structure in the quotient set. Consistency is simple: ~ is consistent with a relation R iff (x1 ~ y1 and … and xn ~ yn) implies R(x1, …, xn) <=> R(y1, …, yn). For an operation, one just takes a corresponding relation: e. g. 15:52:47 for + one takes (x, y, z) ↦ x + y = z. In general this would give us ~ is consistent with o when (x1 = y1 and … and xn = yn) implies o(x1, …, xn) = o(y1, …, yn) 15:56:52 arseniiv: yeah, I think I get it at this point, but it's taken me a while to get to this point. As I see it it's a homomorphism, and as such it has to preserve the properties of all of the operators. Which is a bit annoying in my particular application of it - some of those operators aren;t really relevant in the quotient algebra - I guess I have to say they're still there but we can safely ignore them 15:57:03 that tells us that we can unambiguously define a relation or an operation on equivalence classes (by their representatives), and AFAIK this is the most general condition for that 15:57:43 alas, I must be off now - have a good weekend 15:57:44 -!- cpressey has quit (Quit: WeeChat 1.9.1). 15:57:45 yeah it taken me too a while to recognize all the cogs underlying 15:58:02 @tell cpressey have a good one too! 15:58:02 Consider it noted. 15:59:22 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74030&oldid=74028 * ZippyMagician * (+4) /* Programs */ 16:04:25 what I like is how one can overgeneralize this framework to structures which have several carriers and also maybe “constant domains” which are the same for any structure of this type 16:05:26 in operations and relations’ signatures, carriers would be like type variables and the latter domains would be like type constants 16:06:46 in this way we could say metric spaces are certain instances of this kind of structure. where there are a carrier X and a constant domain R involved. Though I think isometries are still more refined that morphisms for that kind of structure, I should check 16:07:54 also maybe one could incorporate topological spaces and confluence spaces and whatnot in this framework too, using a more elaborate language in signatures 16:09:32 as it’s particularly well-known that dependent types help describing axioms of the structure in its definition directly (with all the operations and relations), so maybe some higher types may allow describing these spaces in the analogous manner 16:09:50 not that it’s useful by itself of course 16:25:05 ais523: at [x], [y], when x is called in [x], shouldn’t the result be [], [a b z], [b a z], [y]? (in the article, there’s [x] instead of []). If so, maybe you wanted to define x as x in the first definition? 16:26:57 [[Annihilator]] https://esolangs.org/w/index.php?diff=74031&oldid=73920 * Ais523 * (+5) /* Example */ fix thinko 16:27:11 [[Annihilator]] https://esolangs.org/w/index.php?diff=74032&oldid=74031 * Ais523 * (+5) /* Computational class */ here, too 16:27:20 arseniiv: yes, sorry 16:27:33 this sort of thing is common when you design an esolang in your head and don't have an implementation 16:27:42 yeah 16:27:56 I think I ended up much the same way many times 16:28:21 some of my esolangs are designed to investigate profound ideas in computation, or for proving things TC, or whatever 16:28:34 but some are just random ideas that I thought it would be interesting to document, and Annihilator is one of those 16:29:10 the last one which is finite state (thank to int-e’s good eye) is an example of that: initially I defined things in such a way a program only returned 0 (if halted) 16:29:47 -!- gitlogger has joined. 16:30:20 -!- kspalaiologos has joined. 16:30:27 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=74033&oldid=74030 * PythonshellDebugwindow * (+83) /* Cat program */ 16:37:26 [[Gecho]] M https://esolangs.org/w/index.php?diff=74034&oldid=70798 * PythonshellDebugwindow * (+50) link + cats 16:40:33 [[Category:Finite state automata]] M https://esolangs.org/w/index.php?diff=74035&oldid=22635 * PythonshellDebugwindow * (+23) cat 16:42:21 [[BFStack]] M https://esolangs.org/w/index.php?diff=74036&oldid=73005 * PythonshellDebugwindow * (-1) rm period 16:44:19 -!- b_jonas has joined. 16:45:30 what the heck happened while I wasn't here? https://esolangs.org/logs/ webpage is unreachable (ping fizzie) and https://github.com/KrzysztofSzewczyk/esologs/ is missing two or three days 16:46:22 ugh 16:46:23 no idea 16:47:05 -!- TheLie has quit (Remote host closed the connection). 16:47:05 clog is still here, so presumably it was logging 16:47:35 yep 16:49:06 I've filled my log gaps 16:49:58 and I know the reason - a netsplit 16:50:15 my bot has died because I didn't yet set up a reliable way of automagically getting it up (lol) 16:55:04 -!- gitlogger has quit (Remote host closed the connection). 16:55:21 kspalaiologos: I see 16:55:36 thanks 16:55:38 done 16:55:41 -!- gitlogger has joined. 16:55:46 the bot will no longer die on netsplits 16:55:48 and it will rejoin 16:55:51 nice! 16:55:55 some stupid perl engineering 16:56:08 -!- TheLie has joined. 16:56:30 just make sure the rejoin has some reasonable limits and sleeps so it doesn't fall into one of those stupid reconned-rejoin-die loops that some bots fall into 16:57:03 it's done using a lock file 16:57:16 when the bot quits, it's removing the lock file, and when it's ran, it creates a lock file 16:57:41 the update.pl script (I put it in cron and it will run every 30min) will push the logs to github AND re-run the bot if the lock is missing 16:57:56 kspalaiologos: sure, but I mean a loop with like reconnecting successfully every 10 minutes for three hours, after which a mod wakes up and bans them 16:59:17 even every 30 minutes might be a problem if it does so indefinitely, because this channel is often slow with mods 16:59:44 -!- sebbu2 has changed nick to sebbu. 16:59:46 I'll add reconnection attempts 17:00:13 ideally you probably want some kind of incremental timeouts, where it reconnects immediately the first time, but then with progressively more sleep, and after like 14 attempts it waits a day between reconnections 17:00:34 -!- kspalaiologos has quit (Read error: Connection reset by peer). 17:02:23 -!- kspalaiologos has joined. 17:02:26 my IRC client crashed 17:02:34 reconnecting once every half hour doesn't seem excessively spammy to me? 17:02:52 anyways, I've added a mechanism that will stop attempting after there have been 5 reconnect attempts before 17:02:58 that's 48 quitjoins a day, there's normally much more conversation than that 17:02:59 and it will drop me an e-mail 17:03:11 ais523: it's probably borderline 17:03:21 on some days we have very little traffic 17:03:21 make sure it doesn't email you every half-hour, that can get annoying quickly 17:03:30 I once accidentally configured my server to email me every minute 17:03:49 luckily I was online at the time and, unsurprisingly, noticed pretty quickly 17:04:17 if it will mail me every half an hour, I'll notice it fsater 17:04:20 and I run my own mailserver so there was no issue with address reputation as a consequence 17:04:28 also, the counter zeroes, so 5 * 30min = 2,5h 17:04:41 a mail every 2 and 1/2 hour isn't much trouble for me 17:05:09 doesn't that mean it'll try to connect 4 times every 2½ hours? 17:05:36 -!- S_Gautam has joined. 17:06:23 tries once => wait for 30 min => tries 2nd time => wait for 30min => tries 3rd time => wait for 30min => tries 4th time => wait for 30min => tries 5th time => errrr send me an email, stop attempting 17:06:28 @tell cpressey wait, if R & R = 0 then 0 = (R | S) & (R | S) = R & R | R & S | S & R | S & S = R & S | S & R = R & S | R & S = R & S, is that right?.. 17:06:28 Consider it noted. 17:06:33 -!- S_Gautam has quit (Client Quit). 17:06:44 if R&R=0 then R must be 0 17:06:59 -!- S_Gautam has joined. 17:07:04 [[Special:Log/newusers]] create * Gorbit99 * New user account 17:07:32 not in Tandem, where R&R is artificially 0 because & is more like an exclusive-and 17:07:32 kspalaiologos: hehe there’s another meaning to &, see https://esolangs.org/wiki/Tandem :) 17:07:38 oh f.ck 17:07:43 the bot spilled its stderr on my screen 17:07:58 also, I love esolangs, they make concepts like "exclusive-and" viable 17:07:58 -!- S_Gautam has quit (Client Quit). 17:08:01 I can't see anything 17:08:03 did it quit? 17:08:17 gitlogger is still online; is that your bot? 17:08:26 yes, ah, I see the problem 17:08:27 -!- S_Gautam has joined. 17:08:28 wchar print 17:08:51 ais523: hmm, I thought you were working on one of these declarative languages, with the intent that it should be more expressive in a declarative way than Brachylog 17:10:01 alright, /redraw fixes the problem 17:10:18 b_jonas: yes 17:10:21 @tell cpressey so AFAIU the R & R = 0 is always true only for atomic rules, but the example above shows complex rules won’t be annihilated when conjusquared 17:10:21 Consider it noted. 17:10:52 -!- kspalaiologos has quit (Quit: leaving). 17:11:09 arseniiv: is there actually a requirement for | to distribute over &? 17:11:34 -!- wmww has joined. 17:11:42 -!- kspalaiologos has joined. 17:11:55 ais523: hm maybe not, I had read it in “Conjunction distributes over disjunction: Ri & (Rj | Rk) = (Ri & Rj) | (Ri & Rk) (and the other direction too, because it's commutative.)” 17:13:42 wait, this is the needed distributivity, I thought there is the other one 17:14:07 hm 17:15:08 it should be formally proven in Agda^W^W 17:16:40 were there languages like Tandem before? Seems very cool to me at the end 17:16:58 what property of it do you consider interesting? 17:17:22 there are certainly languages which play around in a similar space in terms of semantics, but they don't necessarily have the same properties that Tandem does 17:18:09 I haven’t thought of rewriting many disjoint places before, though I can see it may be grown from my questions about rewriting S-expressions a while ago, dumb me 17:20:26 also a while ago I made a string-rewriting thing which used if the rule was applied succesfully to continue applying following rules, though that wasn’t by all means minimal and I artifically bounded it to sub-TC by requiring placing a finite repeat count for each loop 17:20:39 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=74037&oldid=73967 * Gorbit99 * (+117) 17:20:49 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74038&oldid=74033 * Gorbit99 * (-713) fixed some incorrect info 17:20:53 I intended it to be a text-generating tool but it ended up unwieldy 17:21:12 I spent too much time yesterday and two days ago figuring 3sp 17:21:42 this language seems just... so volatile, so spaghetti-y that I can't find a good way of programming it other than either genetic algorithm OR compiling some predictable assembly into large-ass code 17:22:00 the latter approach is the better one I think 17:22:04 although, the hardest part is startup 17:22:12 I'll end up with malbolge 2.0 17:22:21 with programs being bigger than the observable universe 17:22:24 which places some fairly extreme constraints on your program because the startup code has to run every iteration 17:22:38 I did such a thing with asm2bf while implementing labels 17:22:45 the entire code runs inside a large loop 17:23:02 start with "freestart 3*", where you get to initialize memory as you like separately from the program, as a wimpmode 17:23:10 that isn't too hard to program in once you see the tricks 17:23:19 with programs being bigger than the observable universe => hm that gives an idea of executing compressed programs... surely some languages would allow that? 17:23:19 it's 100% doable, but I just can't notice some things 17:23:38 if you managed to write a good malbolge interpreter that would run my programs compressed 17:23:40 arseniiv: in https://esolangs.org/wiki/Tip the program is infinitely long, but compresses well 17:23:49 I'd really really appreciate it :p 17:24:06 what sort of repetition normally exists within your programs? 17:24:14 my malbolge programs? no-ops 17:24:26 to nail the memory adresses 17:24:30 do they execute/get encrypted? or are they jumped over? 17:24:38 [[User:PythonshellDebugwindow/Sandbox]] M https://esolangs.org/w/index.php?diff=74039&oldid=73245 * PythonshellDebugwindow * (+8) force toc 17:24:41 50/50 I'd say 17:24:52 you'd have to figure out what does each one do 17:24:59 but I believe it's all doable 17:25:00 kspalaiologos: no thanks :D I don’t even into Malbolge, I mean in the sense I don’t even remember how it works at all. It ciphers something and has several opcodes and that’s all I remember 17:25:10 the hard part isn't so much running the compressed program, but updating it as it encrypts 17:25:15 the malbolge code follows a lot of repetitions 17:25:20 within the compressed program 17:25:33 I mean, you could theoretically parse my malbolge programs into some form of readable assembly using regex 17:25:43 because I haven't gone crazy on golfing the output 17:25:59 [[User:PythonshellDebugwindow/2001]] M https://esolangs.org/w/index.php?diff=74040&oldid=72878 * PythonshellDebugwindow * (+38) rdr 17:26:43 I compile them from a very sophisticated assembly 17:26:54 I'd say a "compressed Malbolge executor" would be trivial, with an appropriately designed compression format, if not for the fact that Malbolge is self-modifying and you need to remember in what ways the program has self-modified 17:26:56 my current opus magnum is a forth-like interpreter in Malbolge 17:27:19 it's overall around two megabytes of my handcrafted assembly code 17:27:28 and it works, very slowly 17:27:37 I've left a fact(4) program to run overnight 17:27:40 and it produced correct result 17:27:49 I wonder if it would be efficient to store the original program, plus a count of encryptions that have been performed on each memory cell, plus a separate sparse array for memory cells that have been modified directly 17:27:58 and do dynamic RLE on the encryption counts 17:28:07 I.. don't think so 17:28:26 because Malbolge follows the von neumann architecture, so you store data with the code 17:28:34 right, that's what the final array is for 17:28:35 and the code can grow quite big 17:28:37 I don’t even into Malbolge => am not* 17:28:45 I mean - my malbolge programs often swap 17:28:50 to produce a meaningful result 17:28:55 and I have a machine with 16 gigabytes of RAM 17:29:08 I think with most Malbolge programs, the proportion of the memory that is used as useful data is very small, right? 17:29:16 yes 17:29:24 if you find out the storage format, you're pretty much home 17:29:27 it's almost all either a) padding, b) self-encrypting code where the encryption isn't useful it just happens 17:29:33 [[Template:Cs]] M https://esolangs.org/w/index.php?diff=74041&oldid=73533 * PythonshellDebugwindow * (+29) 17:29:34 yes 17:29:50 my current opus magnum is a forth-like interpreter in Malbolge => wow 17:29:53 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74042&oldid=74038 * Gorbit99 * (-5) typo 17:30:14 and at any given instant in time, there are going to be large runs in the number of times that specific instructions have encrypted 17:30:34 [[Category:Particle automata]] M https://esolangs.org/w/index.php?diff=74043&oldid=8177 * PythonshellDebugwindow * (+33) cat 17:30:36 yes, and a viable thing is also guessing the encryption patterns 17:30:40 so if we just store it in terms of ranges, "from address 10000 to address 12345 every instruction has encrypted 5 times" 17:30:53 then the encryption counts shouldn't need much memory to store 17:30:54 like, if you place a no-op somewhere, after executing it can turn into a movd, a jump, a halt, and god knows what else 17:31:15 when you're preserving functions, for example the movd wrapper, the movd is executed, and then it turns into a nop, and then back again 17:31:18 that's called a cycle 17:31:22 or at least that's how I call it 17:31:34 I don't think there's proper terminology for malbolge 17:31:35 working out what's in memory from original value plus encryption count is constant time, if the address hasn't been written through d 17:32:17 …does anyone write Malbolge programs where addresses are written through d and /then/ encrypted? 17:32:59 (BTW what would you advice when one does want to write a translator but doesn’t want to hand-wite a parser nor to use an existing parser framework nor to complete their own framework at last? Maybe there still is an option?) 17:33:04 that seems a bit unlikely to me because it's a hard operation to make work, the original Malbolge intepreter actually segfaults if the written value is outside the ASCII range (presumably because the case was never tested) 17:33:25 arseniiv: Train a neural network on examples ;-) 17:33:42 arseniiv: haven't you excluded all the cases apart from persuading someone else to write a new parser framework and using that? 17:34:14 ais523: oh! that’s an interesting case though I don’t want to go that way yet 17:34:27 well, depends on what do you mean by this 17:34:43 or, well, waiting for someone to write a new parser framework and using it 17:34:44 for example, if I have a movd, I call it, and then restore the old instruction back 17:34:58 that's not the most efficient approach, but it's simple and reliable 17:35:07 so my proposition is 17:35:19 actually, another option that isn't logically excluded is to abandon your own parser framework, write an entirely new one and use it, but it seems like more effort than the options that have already been excluded 17:35:33 somehow finding out where the real instructions are stored, identify the calling and restoring code, and then build upon that to optimize real instruction calls 17:35:53 ooh, I think I realised the right format for storing memory 17:36:06 if a value is in the ASCII range, you store it as an encryption count, starting from some constant ASCII character 17:36:14 if outside the range, you just store it as the number 17:36:19 then you use some sort of dynamic RLE-ing 17:36:37 ais523: hmmm hm I’ll go persuade some friends then :D // oh, that new idea is what I think I would end up doing some time after, though that new framework would be just a rewriting of the larger portion of the old and that’s definitely still a work so I procrastinate all I can 17:37:25 -!- Sgeo has joined. 17:37:27 (also do you have a SAT solver somewhere inside, I didn’t think there can be so many missed perfectly valid alternatives at all :D) 17:37:53 I was trying to run through the truth table in my head 17:38:04 or, not the full table, but at least identifying the variables 17:38:11 hm that’s particularly useful 17:38:20 it's similar enough to esoprogramming that it didn't seem that much out of character 17:38:34 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74044&oldid=74042 * ZippyMagician * (+159) Explanation 17:38:48 yeah I even saw the contracted truth tables or what was they called, they can be useful for manipulating in the head 17:38:53 arseniiv: it's like solving a Sudoku ;) 17:39:22 int-e: the thing I don’t enjoy too much but do when there’s nothing else to do, yeah 17:40:43 I'm no good at Sudokus, really. Fortunately there are plenty of other logic puzzles that exercise your internal SAT solver. :) 17:40:50 (when there’s nothing else to do and a sudoku nearby; I won’t try googling one or downloading a sudoku app. Though once I had a good one in an old phone, which marked possible variations with a good clear font) 17:41:05 int-e: lolol 17:41:20 I should remember the “internal SAT solver” thing 17:41:42 arseniiv: that was *your* idea 17:42:06 [[User:PythonshellDebugwindow/AllTheCats]] N https://esolangs.org/w/index.php?oldid=74045 * PythonshellDebugwindow * (+524) . 17:42:08 I pretend it wasn’t 17:42:21 ah 17:42:22 [[Talk:GORBITSA]] N https://esolangs.org/w/index.php?oldid=74046 * X39 * (+291) Created page with "== GORBITSA Program Format == It was never specified that GORBITSA format is as followed
Instructions must be separated by spaces, an instruction consists of a val..." 17:42:46 [[Talk:GORBITSA]] https://esolangs.org/w/index.php?diff=74047&oldid=74046 * X39 * (+42) 17:42:46 no, I phrased that sufficiently differently so I wouldn’t think this form all by myself 17:42:57 so no you gen thanks after all 17:43:00 get* 17:44:05 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74048&oldid=74044 * X39 * (-48) /* Specification */ Fixed mistakes 17:46:25 -!- xylochoron[m] has joined. 17:46:25 -!- tswett[m] has joined. 17:47:09 okay I think handcrafted top-down parsers aren’t yet too bad a taste, especially for a grammar like Tandem has 17:47:44 also top-down parsing does seem like the thing most comfortable to do by hand 17:49:16 "Recursive descent" is the usual word, and they're pretty common to handcraft. 17:49:21 Go's parser is one of those. 17:49:27 would someone like to proofread / help me making an interpreter for this: https://esolangs.org/wiki/Esofun 17:49:40 ultimately I plan on creating _the ultimate_ golfing language 17:49:57 also do you know Pratt parsers? I implemented a toy with them once but I think they aren’t much better in error reporting (and other UX things for a parser framework’s client) than other approaches so I ended up leaving them where they were 17:50:07 kspalaiologos: pfft 17:50:43 what :p 17:50:47 kspalaiologos: but that description is still too long 17:50:51 "ultimate " 17:51:05 okay, *almost* anything 17:51:08 the ultimate antepenultimatum 17:51:22 it'd be ultimate due to it's design goals 17:51:23 just look at them 17:51:50 I like partial orders for the reason there may be more than one maximal elements :D 17:52:22 kspalaiologos: I'll read it when I've found the ultimate natural number. 17:53:14 . o O ( naming of art periods is silly, but I think we have not yet had an ultimate one. ) 17:53:29 I'm not too keen on stack-based golfing languages, they're great for linear programs in the linear-logic sense (i.e. programs where each input and intermediate value is used exactly once) but it's common to want to use values multiple times 17:53:50 and stack-based languages often have to waste a considerable portion of their command-space expressing how that happens 17:54:08 int-e: the historical periods too, though maybe they aren’t that bad in English and other languages, I didn’t look at these 17:54:36 arseniiv: that's related, but art periods are more finely grained 17:54:47 so the silliness becomes more obvious 17:55:44 I also think that in golfing languages, it's normally a mistake for there to be any distinction between a string and a list of characters, or between a character and its codepoint (the only time when it isn't is if you have overloaded operators) 17:56:38 ais523: I don't think so - stack based approach opens opportunities for tacit and concentative programming 17:56:49 and so far it's been proven that these paradigms shine when it comes to code golf 17:56:52 tacit languages normally don't have a stack 17:57:04 so the silliness becomes more obvious => also in different art forms they use the same word for different periods, AFAIR 17:57:11 stacks aren't incompatible with the idea of tacit programming, but also aren't required 17:57:40 forth is a tacit and concentative programming language 17:57:46 so is J, APL, K and so forth 17:58:06 forth isn't tacit in a way that saves bytes, though 17:58:41 well, I plan on adding absurd amount of builtins 17:58:47 triggered by various adverbs 17:59:01 this makes me think that well, that's a lot of room for optimizations 17:59:01 I'm actually going the other way with my golfing languages 17:59:12 trying to reduce the number of builtins so that they can have shorter names 17:59:25 then it's not good for golfing, because you'll get outgolfed by Mathematica 17:59:28 but making each of them crazily context-sensitive to increase how powerful it is 17:59:43 that's exactly like the adverb system works in my language. 18:00:01 it's not that rare for a full program that does something in, say, Jelly to be shorter than the name of the builtin in Mathematica 18:01:08 yep, Mathematica surely takes the eloquent path to naming 18:01:10 sigh, Jelly 18:01:21 anyway, one major category of builtins that doesn't seem to be mentioned is builtins with block arguments 18:01:23 if mathematica has names like Jelly builtins, and had them triggered by adverbs 18:01:27 then well 18:01:57 most mathematica builtins take lots of parameters though, and need them to avoid being too inflexible 18:02:24 256 adverbs, 256 instructions = 65536 possible builtins to squish into the language 18:02:30 are there golf languages utilizing Hindley—Milner typing? Though I think I asked that and someone answered already 18:02:37 that you have accessible using two keystrokes 18:02:45 and sometimes, in 70% of times, using a single keystroke 18:03:08 arseniiv: I answered https://esolangs.org/wiki/Husk to a similar question 18:03:22 kspalaiologos: but how would one program in it^W^W^W^W^W^W^W 18:03:44 ais523: ah! thanks I think it was you that time even 18:03:51 arseniiv: counting to 7 is too much to ask 18:03:51 kspalaiologos: you can't have 256 of each and have them both accessible in a single byte 18:04:03 unless you insist on having exactly one adverb on every instruction 18:04:10 arseniiv: but I think you deleted everything except the kspalaiologos: part 18:05:15 int-e: that’s intentional, yeah. Hm or I got lost in the semantics 18:05:21 ais523: adverbs are toggle/set 18:05:29 so you can have the adverb already set, so you don't have to type it again 18:05:41 arseniiv: that's the only real problem 18:05:42 kspalaiologos: how do you distinguish between an adverb and an instruction? 18:05:47 programming will be hard as heck 18:05:48 you can't have 256 of each 18:05:56 you need a bit to say which is which 18:06:02 ais523: no, you're getting it wrong 18:06:09 let's use pseudocode 18:06:23 "toggle adverb B; do operation; do operation;" 18:06:33 1st and 2nd operation will work with the adverb 18:06:36 b toggled 18:06:42 kspalaiologos: you have 256 "toggle adverb" bytes and 256 "do operation" bytes 18:06:48 that's more than 256 possibilities for each byte 18:07:10 or, in literal code, tB.. 18:07:23 instruction t toggles an adverb 18:07:34 the total number of adverbs + the total number of instructions needs to equal 256, if you want an 8-bit character set 18:07:57 I'm afraid that you can't parse this language without ambiguities 18:08:08 oh wow, now /that's/ an interesting answer 18:08:24 you're looking at this problem like, if B is an adverb I set with tB, B is not usable as an instructio 18:08:27 if you can make that work, the language got a lot more interesting 18:08:31 and this is false, because you can 18:08:56 there are also tons upon tons of type corrections and most operations introduce automatic reduce 18:09:02 because the main datatype is a stack of lists 18:09:03 hmm, is "toggle adverb" an instruction? 18:09:22 it's `t' 18:09:31 inb4: you can have t as an adverb 18:10:02 oh, I see 18:10:04 current adverb list is in pont 5, any other adverb can be flipped, but it makes no sense, because it doesn't change anything 18:10:13 so instead of 1 byte to toggle and 1 byte per instruction 18:10:22 you need, in effect, 2 bytes to operate a toggle 18:10:28 yes 18:10:29 but the instructions are 1 byte each when not toggled 18:10:34 yes 18:10:44 I also plan on somehow optimizing the toggles for size 18:10:52 I think this can be a sensible way to design a language 18:11:01 although it's possible that your numbers are off 18:11:10 I plan on adding the instruction that will unpack a character to bits 18:11:17 256 sets seems like it's maybe too much 18:11:19 and then set the adverbs in given range with this 18:11:33 that's why I'm allowing to set for example adverb state to a list 18:11:44 so you can compress your adverbs and then unpack them in runtime, and pop it to the adverb list 18:11:45 err, 2²⁵⁶ sets is definitely too much 18:11:54 even though there will be a lot of overlap 18:11:57 because there will be an instruction for compression/decompression 18:12:23 I also plan on implementing logical date operations 18:12:33 unlike literally any other non-eso language out there 18:12:36 maybe just have 8 bits of adverbs, for a total of 256 instruction sets, and have the toggle instruction unpack a literal byte? 18:12:48 that's one way to do it 18:12:54 i'll consider it 18:13:53 ah, and you can also bend the type correction rules 18:14:18 and I plan on adding a builtin to override all the existing instructions via the link mechanism 18:14:38 so that you can create a link bound to either an instruction or an ID, that will execute and then pass the control to another link 18:14:40 with the same name 18:15:03 so you could e.g. override 0 with f0RN 18:15:13 this has no effect, but you could theoretically put something useful there 18:15:40 you can also declare identifier links, not bound to an instruction, rather, an identifier 18:15:45 that you can call using '. syntax 18:16:01 I take it this is designed to be a golfing language for writing large programs, then? 18:16:15 hm now I thought “simple complex” and suddenly there is an idea of writing programs as cell complexes 18:16:31 well, yes 18:16:39 because writing simple programs in it makes no sense 18:16:43 but for large scale code golf, it's perfect 18:16:52 and very competetive, because most of the times you can golf the hell out of the code 18:20:07 imagine, you have to for example golf a SKI calculus evaluator 18:20:33 it'd be quite easy with functional languages and all that fluff, but stuff like osable or jelly don't seem like they have a simply and small way of solving this problem 18:20:47 while in this language, there's a high chance you'd get it done in well under 50 characters 18:21:08 better, directed ones. Starting with 2-cells, one has a big selection of polygons to choose from, 3-cells may vary in form further, but maybe even with 2-complexes which consist of 0-, 1- and 2-cells, one can encode something in a good way. There can be edges (1-cells) which are attached only by one of their vertices, any number of this kind of edge sticking from any vertex. Maybe one could use boundary and coboundary operators to define actions… And 18:21:08 maybe the state of a program can be made a form on the complex, or a collection of forms of all degrees (here, 0-, 1- and 2-, each on cells of a corresponding order). Hmm 18:21:11 that seems like an interesting challenge, actually 18:22:39 ais523: kspalaiologos: is there a way algebraic types could work in a golflang? 18:23:35 that's a bit hairy when I think about it, but I guess it's doable 18:23:42 what do you mean by algebraic types? sum types and product types? 18:23:56 normally golflangs are untyped, so you just use heterogenous lists for everything 18:23:57 tagged sum types 18:24:07 with products in each alternative 18:24:08 e.g. instead of a(1,2) you use ['a',1,2] 18:24:33 though it can be tagged sums + products not packed together 18:24:42 or, well, you use whatever representation gives you the shortest code, but golflangs are normally good at operating on lists even if they have distinguished elements 18:25:16 I’d say heterogeneous lists would suffice if there’s something like pattern matching 18:26:17 though I don’t think one can do something feasible without constructing case tables 18:26:25 and they would take up space 18:26:39 I'm thinking about how I'd write this program 18:26:47 -!- kspalaiologos has quit (Quit: leaving). 18:27:00 my current plan is to use executable code as the tags 18:27:15 and just eval it to do the equivalent of the case table 18:27:26 that works best if you have only one table, of course 18:28:28 hm how frequently is there an instruction which takes [f, args…] to f(args…)? 18:28:50 in Jelly it's a two-byter 18:29:13 maybe a third when it's part of a larger program, to disambiguate what applies to what 18:29:40 though one table constraint is not good for big tasks 18:29:46 would be vḤ, I think 18:29:57 no, other way round, Ḥv 18:31:00 err, Ḣv 18:31:09 like this: https://tio.run/##y0rNyan8///hjkVl////j1YPVtcx1DHSMY4FAA 18:56:38 I guess you could simply use numeric tags, and index into a list of code fragments 19:00:16 -!- LKoen has joined. 19:08:50 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=74049&oldid=74048 * Megarev * (+162) /* Programs */ 19:09:07 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=74050&oldid=74049 * Megarev * (+8) /* Cool Stairs (By Megarev) */ 19:15:09 -!- S_Gautam has quit (Quit: Connection closed for inactivity). 19:34:34 I was working on my own golf programming language involving the PC character set 19:37:51 Its data types are: number (a rational number with an optional French suit), list (can contain data of multiple types), function, dictionary (key/value pairs with no duplicate keys), mark (there is only one kind of mark; this is similar to the mark in PostScript). 20:07:14 SKI combinator calculus in 40 bytes of Jelly, and I haven't really tried to properly golf it yet: https://tio.run/##y0rNyan8//9Rw5zDO47uebiz5XDLsU3JCUD@o6Y1D3fMBzIOLX7UMPPhzmYgs@zhju0Pd@57uHOWjrX@o4a5QPahJVz@D3d3H1p0aOvh@UA9ZfqHtvo83N11aKv9////o6Oj1YvVddQz1WMhBDI/Wz02FgA 20:07:52 or to write the program itself, “øżṄÄƲc`“€ḟ“£’ṃ“vḷṾṚ,;/”Ṿ¤¶Oị¢µß€v/µLỊµ? 20:09:49 evaluation is eager, function before argument; it goes into an infinite loop (sadly not tail-recursive) if the SKI term doesn't normalize, or prints out some Jelly code that implements the function in question if it does normalize 20:11:35 come to think of it, this also shows why writing golfing languages designed for large programs is kind-of pointless: you could instead write a small decompressor and use eval, as is done here 20:13:22 [[Beautiful day]] N https://esolangs.org/w/index.php?oldid=74051 * Hakerh400 * (+2098) +[[Beautiful day]] 20:13:25 [[Language list]] https://esolangs.org/w/index.php?diff=74052&oldid=73985 * Hakerh400 * (+20) +[[Beautiful day]] 20:13:30 [[User:Hakerh400]] https://esolangs.org/w/index.php?diff=74053&oldid=73775 * Hakerh400 * (+20) +[[Beautiful day]] 20:14:34 -!- ais523 has set channel mode: -o ais523. 20:14:38 services should be working again now 20:16:17 uh, that's a lot of scrollback I should read later. is there something that should really concern me? 20:16:51 you mean from today? or from the earlier logs that have now been fixed? 20:16:59 it's just been basic, on-topic conversation, there's just been a lot of it 20:17:06 from today, at least 20:17:06 from today, after I entered 20:17:26 there wasn't much from before that, I looked at the one logs server that was still available 20:17:54 only even though I was joined, I was looking at other more urgent stuff 20:22:00 sadly Jelly's escaping syntax blows up exponentially, so my SKI interpreter in Jelly isn't going to work on nontrivial programs 20:27:00 -!- ais523 has quit (Quit: quit). 20:32:37 looking at tio.run, I'm curious as to how the BitBitJump interpreter is supposed to work 20:32:58 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74054&oldid=74050 * ZippyMagician * (+1113) Add tic-tac-toe example 20:34:21 aaah, someone has created a standardized assembly notation for BitBitJump, that explains it 20:42:14 [[Beautiful day]] M https://esolangs.org/w/index.php?diff=74055&oldid=74051 * PythonshellDebugwindow * (+72) /* Interpreters */ cats 20:44:39 [[Special:Log/newusers]] create * TrolledWoods * New user account 20:46:42 [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=74056&oldid=74037 * TrolledWoods * (+95) /* Introductions */ 20:49:57 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74057&oldid=74054 * TrolledWoods * (+361) /* Programs */ 20:50:45 "trying to reduce the number of builtins so that they can have shorter names" => does that really help? you can have lots of builtins but huffmanize them so that common ones are encoded to short names. you don't lose a lot by adding extra builtins with long names in a golf language. 20:51:19 [[GORBITSA]] https://esolangs.org/w/index.php?diff=74058&oldid=74057 * TrolledWoods * (+1) /* Saurons eye (By TrolledWoods) */ 20:58:17 kspalaiologos: but not many people actually do golfing on large programs (... says the guy who submitted a 202 byte program for a simple golf challenge) 21:03:16 " sadly Jelly's escaping syntax blows up exponentially" => that's sad. it's a pity that K&R didn't define a short escape syntax for a backslash in a string literal other than "\\", so now you can only use "\x5C" because nobody managed to standardize a short escape syntax later, by fear that nobody else would speak it 21:03:44 and it might be too late because backslash followed by anything means something in some languages 21:04:05 you can still define an escape syntax for your language, but not for anything that will spread and be uniform everywhere 21:04:29 well, technically "\x5C" or "\??/" 21:07:07 or "\134" I guess, but "\x5C seems the best option 21:07:17 so that's what I usually use 21:29:40 -!- TheLie has quit (Ping timeout: 244 seconds). 21:39:24 [[GORBITSA]] M https://esolangs.org/w/index.php?diff=74059&oldid=74058 * X39 * (+1) /* Specification */ Fixed Typos 21:45:34 b_jonas: how do you think, is there a better way to escape a character than x ↦ xx, xx ↦ xxx, xxx ↦ xxxx? 21:47:49 arseniiv: that would be ugly, how would you put a different escape starting with x after that? 21:48:22 xxxxxd? 21:48:31 ah 21:48:34 but how do you distinguish wh... 21:49:57 hm it seems a while ago I ended up with a way both unambiguously parsable and resembling this one 21:50:04 ideally K&R should have said something like \m is an escape for a backslash, and then everyone copies that together with \n and \t, and perl's and php's quoting functions would turn a backslash to that 21:50:45 and then \mm is a two-level escape of a backslash, while \m\m is an escape for two backslashes, \mn is a double escape for a newline etc 21:51:25 ah, yeah, \ \m \mm \mmm is the way I think that was 21:53:19 what would you suggest for the case of paired characters? Like, in C# and newer Python3 there are `{` and `}` in format strings, which escape as `{{` and `}}`. This explodes as well as `\\` 21:54:03 in some dump files that I both write and read, I use an escape format where "\x10" is an escape character, to unescape remove it and xor the next byte with 0x20, so a line feed is escaped by "\x10J" and the character itself is escaped as "\x10P", and I use "\x1F" as the string delimiter and if that one came up in a string that would be escaped as "\x10_" too 21:54:43 for something like C/perl/php/sql source code I wouldn't recommend this, you want them to be printable ascii rather than control characters 21:55:14 b_jonas: how do you read those files though? 21:55:55 arseniiv: I hate python's format string syntax in first place, for reasons unrelated to that escape syntax, but luckily python also offers a more traditional format mechanism with a format syntax like C's printf, so that's what I always use 21:56:49 arseniiv: what do you mean how I read them? I either read them with perl or python scripts where I have a function that does the unescaping, and they're easier to read than CSVs because I can read them line by line and a line break always means the end of the record with no mucking about with escaped line breaks, 21:57:03 I advocated (and I think I still do) US, RS, GS and FS as a CSV replacement but unfortunately they aren’t printable either, though many editors would print them good, but the other issue people wouldn’t be able to input them well 21:57:24 b_jonas: ah, I see 21:57:45 or by eyeballing at them in a text editor, which displays control characters in some fancy way, and again it's easy because then there are no escaped line breaks, so every record is a single line 21:58:13 I also work with CSVs, because I interface with existing programs that read and write them, and quoting line breaks is more ugly there 21:58:28 US, RS, GS and FS => I need to add them to my AHK script, for some reason they aren’t there—at least to test various text editors 21:59:04 yeah, escaped line breaks aren’t good for the eyes 21:59:15 have you ever tried to implement a CSV reader and writer that handles quoted line breaks, quoted field separators, and quoted double quotes, correctly in all corner cases, including detecting malformed input and including accepting either "\n" or "\r\n" as the field separator but preserving the distinction between them inside quoted strings? 21:59:29 I have written such a csv reader and writer, and I believe it's correct now, but it's UGLY AS HELL 21:59:37 I hate whoever invented these quoting standards 21:59:58 b_jonas: including detecting malformed input => hopefully I won’t need to do that! 22:01:29 okay I suggest using `{|` and `|}` as escapes for `{` and `}` for example. Is it good? 22:01:31 whereas the reader and writer for my dump format is trivial, so trivial that I implemented a writer even in VBA, which is such a horrible language that I choose dump everything and then process them in external code rather than try to implement anything nontrivial in VBA directly. I could similarly easily write a reader for this format in VBA, though I haven't done yet, and it would be trivial, at least 22:01:37 the parsing and unescaping parts would be trivial. 22:02:02 arseniiv: again, no clue, because I hate braced format strings in first place 22:02:48 VBA is horrible, I agree as someone who wrote in it and in VB6 for some time when there was no internet access and prior to finding a CD with Delphi 22:03:20 b_jonas: let’s pretend they aren’t for format strings 22:03:51 though I won’t name another application from the top of the head 22:03:52 though I haven't tried to use the foreign call interface of VBA yet, but maybe I should, linking a DLL and calling my own C functions might work better than dumping to a file in some cases 22:04:05 I should definitely experiment with how easy or difficult that is 22:04:30 arseniiv: no clue then, I can't really tell how you should escape something unless there's an actualy application that I can imagine 22:05:09 meanwhile, I managed to cause a rules debate in the M:tG 3-card blind thread 22:05:11 I think FFI declarations were more or less good but I didn’t write them those times, only marveled at someone’s registry access code from wherever 22:05:37 VBA should interoperate well with COM+! (I’ll show myself out) 22:05:55 I submitted a deck based on a judgement I received in a private message from the then GM in the previous thread, and the players somehow don't want to use that, despite that in general we use most of the rules from that thread. 22:06:48 arseniiv: yes, if I was a windows programmer then I wouldn't even try to use VBA, just call the VBA interface of this application through some COM or whatever interface that is from a non-VBA program 22:06:54 a C++ or C# program or something 22:07:13 I know there's such an interface, but given that I'm not a windows program and don't want to become one, I have never learned how that thing works 22:07:47 maybe C# would be better these times though I didn’t try, I avoid 22:08:16 I mean I did try C# and wrote much in it but didn’t try connections of this sort 22:08:30 it's still not ideal, because the application interface has a few functions that you can access from the UI and I really want to access them from VBA but there's no interface yet, plus a few of the interface functions have bugs 22:08:41 but still much better than the terrible UI and trying to do everything manually with it 22:10:33 arseniiv: I have also thought to use US, RS, GS, FS, and the SQLite command-line interface supports this format, too. 22:11:05 -!- TheLie has joined. 22:11:12 zzo38: neat! didn’t know, thanks 22:11:18 (And when doing that, I have used \x10 as an escape character, too) 22:13:13 admittedly I cheat, and use a second escaping mechanism: "\x0B" is a one-byte escape for "\r\n", because that's by far the most common thing I have to escape 22:13:40 but this doesn't change the properties of the format much, it's still very easy to write and read 22:14:45 -!- LKoen has quit (Quit: Leaving). 22:15:23 interestingly, I see AHK pastes US and RS in full but stumbles on GS and FS for some reason 22:31:22 if anyone’s interested how to add them to AHK, I found a simple and working way: send things like `{U+001c}` (this for FS) 22:35:55 [[Talk:Functional deadfish]] N https://esolangs.org/w/index.php?oldid=74060 * 20kdc * (+284) Note a possible spec flaw. 22:36:24 arseniiv: what is "AHK"? 22:42:07 b_jonas: AutoHotkey, a Windows automation tool which allows to define hotkey actions and send strings (aside other things). I use it with a large script to send almost all the unicode characters I post here and elsewhere, by typing LaTeX-like sequences (which wasn’t a good move but now I have what I have), like \rd␣ will send ⌟ 22:42:36 arseniiv: ok 22:42:59 12345 wow I accidentally used IRC formatting 22:43:11 hm hm 22:43:45 evidently FS…US are used for formatting here too. I thought that would be some other unprintable characters 22:44:25 GG ohdeerK 22:44:52 wrong channel 23:10:27 rewritten the data model for cpressey’s Tandem almost two times now, it’s time to sleep… 23:15:13 -!- arseniiv has quit (Ping timeout: 264 seconds). 23:16:17 -!- TheLie has quit (Remote host closed the connection). 23:18:18 -!- heroux has quit (Ping timeout: 265 seconds). 23:22:44 -!- imode has joined. 23:28:44 -!- Lord_of_Life_ has joined. 23:29:57 -!- heroux has joined. 23:31:34 -!- Lord_of_Life has quit (Ping timeout: 260 seconds). 23:31:40 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 23:36:29 -!- tromp has quit (Ping timeout: 272 seconds). 23:46:07 and... I accidentally spawned a small debate about US customary units :(