00:45:15 -!- clog has quit (Quit: ^C). 00:45:28 -!- clog has joined. 00:47:20 -!- hpt has joined. 00:50:24 -!- clog has quit (Quit: ^C). 00:50:36 -!- clog has joined. 00:51:00 -!- hpt has quit (Remote host closed the connection). 00:55:17 I think they should add a DATE and TIME command into DOSBOX to set the clock skew amount for the current DOS session. 00:55:36 -!- kiera8 has joined. 00:56:35 What do you think? 00:57:09 -!- clog has quit (Quit: ^C). 00:57:13 -!- kiera8 has quit (Remote host closed the connection). 01:07:09 -!- sftp has quit (*.net *.split). 01:07:44 -!- sftp has joined. 01:13:10 -!- clog has joined. 01:15:16 -!- clog has quit (Client Quit). 01:15:49 -!- clog has joined. 01:17:07 -!- clog has quit (Client Quit). 01:19:30 -!- clog has joined. 01:24:52 -!- clog has quit (Quit: ^C). 01:26:05 -!- nodist has joined. 01:31:19 -!- nodist has quit (Quit: Leaving). 01:36:38 -!- Sgeo has quit (Ping timeout: 272 seconds). 01:37:18 -!- clog has joined. 02:08:37 -!- Sgeo has joined. 02:10:47 -!- boily has quit (Ping timeout: 276 seconds). 02:19:44 -!- S_Gautam has quit (Quit: Connection closed for inactivity). 02:28:50 -!- sparr has quit (*.net *.split). 02:28:50 -!- tromp has quit (*.net *.split). 02:28:53 -!- Vorpal has quit (*.net *.split). 02:30:02 -!- sparr has joined. 02:30:02 -!- tromp has joined. 02:30:02 -!- Vorpal has joined. 02:32:02 -!- quintopia has quit (*.net *.split). 02:32:02 -!- olsner has quit (*.net *.split). 02:32:05 -!- hakatashi has quit (*.net *.split). 02:32:06 -!- paul2520 has quit (*.net *.split). 02:32:06 -!- G33kDude has quit (*.net *.split). 02:32:07 -!- mniip has quit (*.net *.split). 02:32:09 -!- rodgort has quit (*.net *.split). 02:32:10 -!- subleq has quit (*.net *.split). 02:32:11 -!- aloril has quit (*.net *.split). 02:32:11 -!- zzo38 has quit (*.net *.split). 02:32:11 -!- Yurume_______ has quit (*.net *.split). 02:32:12 -!- heroux_ has quit (*.net *.split). 02:32:12 -!- Melvar has quit (*.net *.split). 02:32:13 -!- quintopia has joined. 02:32:27 -!- aloril has joined. 02:32:27 -!- paul2520 has joined. 02:32:37 -!- hakatashi has joined. 02:32:38 -!- heroux_ has joined. 02:33:01 -!- Melvar has joined. 02:33:18 -!- Yurume_______ has joined. 02:33:55 -!- rodgort has joined. 02:33:57 -!- G33kDude has joined. 02:34:30 -!- mniip has joined. 02:34:40 -!- shachaf has quit (Quit: Reconnecting). 02:34:46 -!- shachaf has joined. 02:36:38 -!- paul2520 has changed nick to Guest61282. 02:37:53 -!- Guest61282 has quit (Changing host). 02:37:53 -!- Guest61282 has joined. 02:40:04 -!- G33kDude has changed nick to Guest56097. 02:43:01 -!- shachaf has quit (Changing host). 02:43:01 -!- shachaf has joined. 02:52:32 -!- subleq has joined. 02:54:12 -!- olsner has joined. 02:55:39 -!- zzo38 has joined. 02:57:32 -!- Sgeo has quit (Read error: Connection reset by peer). 03:00:33 -!- nfd has joined. 03:03:09 -!- Sgeo has joined. 03:03:46 -!- nfd9001 has quit (Ping timeout: 268 seconds). 03:05:51 -!- lynn_ has quit (*.net *.split). 03:05:51 -!- Lord_of_Life has quit (*.net *.split). 03:05:52 -!- shikhin has quit (*.net *.split). 03:05:53 -!- brandonson has quit (*.net *.split). 03:05:54 -!- erdic has quit (*.net *.split). 03:05:55 -!- sebbu has quit (*.net *.split). 03:05:55 -!- Taneb has quit (*.net *.split). 03:05:56 -!- Storkman_ has quit (*.net *.split). 03:05:58 -!- zemhill____ has quit (*.net *.split). 03:05:58 -!- lambdabot has quit (*.net *.split). 03:06:00 -!- Cale has quit (*.net *.split). 03:06:03 -!- fizzie has quit (*.net *.split). 03:06:03 -!- \oren\ has quit (*.net *.split). 03:06:03 -!- puck has quit (*.net *.split). 03:06:07 -!- trn has quit (*.net *.split). 03:06:36 -!- lynn_ has joined. 03:06:36 -!- Lord_of_Life has joined. 03:06:36 -!- shikhin has joined. 03:06:36 -!- brandonson has joined. 03:06:36 -!- erdic has joined. 03:06:36 -!- sebbu has joined. 03:06:36 -!- Taneb has joined. 03:06:36 -!- Storkman_ has joined. 03:06:36 -!- zemhill____ has joined. 03:06:36 -!- lambdabot has joined. 03:06:56 -!- puckipedia has joined. 03:07:59 -!- Cale has joined. 03:07:59 -!- fizzie has joined. 03:07:59 -!- \oren\ has joined. 03:07:59 -!- trn has joined. 03:25:34 -!- SakiiR1 has joined. 03:26:41 -!- SakiiR1 has quit (Killed (Sigyn (Spam is off topic on freenode.))). 03:51:05 -!- Sgeo_ has joined. 03:51:40 -!- Sgeo has quit (Ping timeout: 268 seconds). 04:20:36 -!- nct56 has joined. 04:44:50 -!- zzo38 has quit (Ping timeout: 272 seconds). 04:46:41 -!- Sgeo__ has joined. 04:49:01 -!- Sgeo_ has quit (Ping timeout: 268 seconds). 04:51:16 -!- Sgeo has joined. 04:52:06 -!- Sgeo__ has quit (Ping timeout: 268 seconds). 05:11:00 -!- nct56 has quit (Quit: Leaving). 06:08:45 -!- olsner has quit (Quit: ZNC - http://znc.in). 06:11:04 -!- olsner has joined. 06:35:37 [[Lambda Calculus to Brainfuck]] https://esolangs.org/w/index.php?diff=57431&oldid=57411 * A * (+106) /* Bored? Let's enjoy an example */ 06:37:25 -!- xkapastel has quit (Quit: Connection closed for inactivity). 06:40:54 [[Lambda Calculus to Brainfuck]] https://esolangs.org/w/index.php?diff=57432&oldid=57431 * A * (+104) 06:51:30 [[Brainfuck]] https://esolangs.org/w/index.php?diff=57433&oldid=57307 * A * (+138) I have another attempt. 06:52:48 [[Lambda Calculus to Brainfuck]] https://esolangs.org/w/index.php?diff=57434&oldid=57432 * A * (+80) 06:54:06 -!- SopaXorzTaker has joined. 07:08:14 -!- tromp_ has joined. 07:09:08 -!- tromp has quit (Ping timeout: 276 seconds). 07:13:06 -!- Sgeo has quit (Ping timeout: 252 seconds). 07:17:05 -!- Sgeo has joined. 07:24:13 -!- ep100 has joined. 07:27:48 -!- imode has quit (Ping timeout: 260 seconds). 07:49:43 [[Ackermann function]] https://esolangs.org/w/index.php?diff=57435&oldid=8525 * A * (+263) And another implementation that exactly obeys the explanation on Wikipedia 07:52:12 [[Ackermann function]] https://esolangs.org/w/index.php?diff=57436&oldid=57435 * A * (-23) 07:55:42 [[Quine]] https://esolangs.org/w/index.php?diff=57437&oldid=11533 * A * (+71) On Wikipedia 08:00:22 -!- AnotherTest has joined. 08:11:23 -!- AnotherTest has quit (Ping timeout: 252 seconds). 08:23:08 -!- Phantom_Hoover has joined. 08:23:09 -!- Phantom_Hoover has quit (Changing host). 08:23:09 -!- Phantom_Hoover has joined. 08:38:27 -!- AnotherTest has joined. 08:58:42 -!- atslash has quit (Quit: Leaving). 09:01:42 -!- AnotherTest has quit (Ping timeout: 264 seconds). 09:05:35 -!- atslash has joined. 09:09:11 -!- AnotherTest has joined. 09:27:27 * Taneb morning 09:59:18 -!- ep100 has quit (Ping timeout: 264 seconds). 10:13:37 -!- arseniiv has joined. 10:24:35 -!- boily has joined. 10:44:19 -!- boily has quit (Quit: FORWARD CHICKEN). 10:44:23 -!- Fogity has quit (Ping timeout: 260 seconds). 10:44:43 -!- Fogity has joined. 10:58:34 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 11:19:23 -!- xkapastel has joined. 11:34:09 -!- Phantom_Hoover has quit (Ping timeout: 252 seconds). 11:50:01 -!- S_Gautam has joined. 13:16:14 [[Printf]] N https://esolangs.org/w/index.php?oldid=57438 * A * (+503) Created page with "printf is a simple programming language. ==Syntax== It is really VERY simple. It is a version of C in which you can't use any of the keywords and there is only a function cal..." 13:16:24 [[Printf]] https://esolangs.org/w/index.php?diff=57439&oldid=57438 * A * (+1) 13:17:06 [[Printf]] https://esolangs.org/w/index.php?diff=57440&oldid=57439 * A * (+0) 13:17:37 [[Printf]] https://esolangs.org/w/index.php?diff=57441&oldid=57440 * A * (+4) 13:25:05 -!- sleepnap has joined. 13:33:30 [[]] https://esolangs.org/w/index.php?diff=57442&oldid=57076 * Fogity * (+285) /* Example programs */ Added Ackermann function 13:55:28 -!- zzo38 has joined. 13:58:26 [[Printf]] https://esolangs.org/w/index.php?diff=57443&oldid=57441 * Zzo38 * (-103) 14:00:42 -!- Guest27432 has joined. 14:02:35 -!- Guest27432 has quit (Remote host closed the connection). 14:11:24 -!- cwre has joined. 14:16:04 -!- cwre has quit (Remote host closed the connection). 14:21:32 [[User talk:A]] https://esolangs.org/w/index.php?diff=57444&oldid=56687 * Arseniiv * (+396) /* Categorization */ new section 14:22:44 hope it wasn’t too sarcastic :D 14:46:48 -!- AnotherTest has quit (Ping timeout: 244 seconds). 14:53:34 -!- Sgeo_ has joined. 14:55:42 -!- Sgeo has quit (Ping timeout: 264 seconds). 15:04:49 -!- rubdos25 has joined. 15:06:54 -!- rubdos25 has quit (Remote host closed the connection). 15:09:02 -!- AnotherTest has joined. 15:12:59 -!- S_Gautam has quit (Quit: Connection closed for inactivity). 15:22:41 -!- bradcomp has joined. 15:54:51 -!- tromp_ has quit (Remote host closed the connection). 16:17:12 -!- laerling has joined. 16:27:30 -!- tromp has joined. 16:31:51 -!- tromp has quit (Ping timeout: 252 seconds). 16:35:14 -!- tromp has joined. 16:37:10 -!- imode has joined. 16:44:54 -!- Fogity has quit (Ping timeout: 264 seconds). 16:48:15 -!- Fogity has joined. 16:55:23 -!- xkapastel has changed nick to parentbot. 16:55:45 -!- parentbot has changed nick to xkapastel. 16:56:49 -!- bradcomp has quit (Ping timeout: 252 seconds). 16:59:20 -!- xkapastel has quit. 17:03:06 -!- tromp has quit (Remote host closed the connection). 17:08:09 -!- bradcomp has joined. 17:23:50 -!- S_Gautam has joined. 17:24:34 -!- Phantom_Hoover has joined. 17:24:35 -!- Phantom_Hoover has quit (Changing host). 17:24:35 -!- Phantom_Hoover has joined. 17:29:39 -!- tromp has joined. 17:37:51 -!- laerling has quit (Ping timeout: 252 seconds). 17:40:28 -!- brandonson has quit (Ping timeout: 252 seconds). 17:43:30 -!- bradcomp has quit (Ping timeout: 244 seconds). 17:50:30 -!- bradcomp has joined. 17:57:28 -!- laerling has joined. 17:58:45 It isn't just window functions in the next version of SQLite, but also a few bug fixes including one having to do with upsert. 18:00:27 -!- ais523 has joined. 18:01:28 has it been proven that Ⅎ requires parentheses to be Turing-complete? 18:04:14 oh, hmm, maybe it's a PDA without them? 18:07:02 yep, without parens a program always expands into a list of funtions that exist within the original program, evaluating consists of popping the first so many list entries and pushing the definition 18:07:06 which can only see a finite depth into the stack 18:07:42 and parens allow multiple functions to be grouped, Underload-style, so that list elements can become arbitrarily complex and thus break through the PDA barrier 18:16:27 This document https://sqlite.org/appfileformat.html mentions four kind of application file formats (fully custom, pile-of-files, wrapped-pile-of-files, SQLite), but also, a SQLite database can be used like wrapped-pile-of-files, and also you can have pile-of-wrapped-pile-of-files, and Microsoft Word format is a wrapped-pile-of-files too actually. 18:17:47 What kind os best depend on the use. 18:22:43 -!- wob_jonas has joined. 18:24:38 -!- brandonson has joined. 18:24:53 -!- LKoen has joined. 18:25:10 ais523: I think Ⅎ requires one level of parenthesis, but not more, to be TC, but I'm not quite sure. 18:26:34 I've been thinking somewhat of a different language with the same goal (the minimal essence of functional programming), which has a somewhat similar goal, but is clearly not the same language. 18:27:30 That language is more complicated to define, because it needs more primitives, but might be slightly easier to implement. 18:28:09 Especially easier to implement if you want non-conservative garbage collection for it. 18:29:40 wob_jonas: one is enough, yes 18:29:43 you can define s with that 18:29:45 and k doesn't need any 18:30:38 I don't have a finalized canon version of my language though, only vague ideas. 18:31:14 My goal was more a compromise towards being very easy to implement, rather than "the essence". 18:32:00 Also more compromise to being somewhat easy to use and somewhat efficient, although still not a production language. 18:32:38 More like a toy language to illustrate language design and implementing an interpreter and programs in it. 18:33:26 come to think of it, this implies that Ⅎ is TC with exactly one pair of parentheses in the whole program 18:34:10 I guess Consumer Society would replace its goals in parts, although that one is more esoteric in design and less easy to implement and less easy to use. 18:34:14 ais523: I finally got around to reading about ALGOL 68. 18:34:27 ais523: wow 18:34:28 Seems like a good language. 18:34:34 that's surprising, but sounds true 18:34:35 What have PL people done anything in the past 50 years? 18:34:57 Algol 68 has some really interesting ideas, but is possibly somewhat impractical 18:35:05 I think it was a failure at the time because nobody could figure out how to implement it 18:35:12 with reasonable efficiency 18:35:59 but yes, it still looks more advanced in a way than "mainstream" imperative languages, we've spent the last 50 years just catching back up to it 18:36:37 shachaf: C (which was a low level language better aligned to the computers of that era), modern C++ (more powerful and expressive than C), and rust (tries to redo stupid historical problems in C++ while having somewhat the same goals, it's a bit young yet and not fully mature, but otoh C++ is now overmature) 18:36:44 and the cutting-edge research has mostly been in different paradigms 18:37:04 wob_jonas: Algol 68 had all sorts of great features that C and C++ don't have. 18:37:24 shachaf: all three of these have similar paradigms and goals as algol and fortran I think, but are updated with what can be done on more modern machines 18:37:33 shachaf: can you be more specific? I don't know algol 68 18:37:37 It was admittedly garbage collected, which is pretty odd for 50 years ago (and maybe odd for today). 18:37:39 what great features specifically? 18:37:52 https://en.wikipedia.org/wiki/Comparison_of_ALGOL_68_and_C%2B%2B talks about some of it. 18:38:04 shachaf: I don't think it was odd 50 years ago. wasn't that already when lisp machines with gc were established? 18:38:15 mind you, some of them only had gc for fixed-size conses 18:38:17 but still 18:38:49 prolog has gc, but is newer 18:38:50 I mean, odd for a language that might be in competition with C. 18:39:07 wob_jonas: Also thanks for mentioning Geo, it's more similar to the things I was looking for than I though. 18:39:25 shachaf: I don't think C was meant to be in direct competition with algol 18:39:48 it was certainly inspired, but then most programming languages are inspired by the other popular programming languages that already existed 18:39:49 I figured out what "break", "continue", "return" etc. mean, I don't remember whether I mentioned. 18:39:52 C is a B derivative that adds a type system 18:40:02 and B was focused on being as easy to implement as possible 18:40:42 shachaf: break, continue, return in what? I admit geo's documentation isn't really complete, and in particular I have no idea what the precise semantics of "var" declarations are. 18:40:57 When you have labeled exit, break/continue/return all just mean exit to a particular label. 18:41:10 Also, it's a weird toy language that I made long ago and frozen, it's not a good language, I don't stand by the decisions I made for it anymore. 18:41:21 shachaf: yeah, we talked aboutr that 18:41:31 OK, I didn't remember whether I put it that way. 18:41:42 So "return x;" just means "exit @return_label x;" 18:42:24 Algol 68 had nonlocal goto. So strange. 18:42:38 ais523: Was it Algol 68 that you mentioned call-by-name semantics for not long ago? 18:42:58 shachaf: I think I mentioned that the C standard and IIRC the C++ standard *define* them that way. the full definition is tricky because they act on both while/do-while/for loops and switches, but 18:43:22 gotos are certainly the easiest way to define them in those languages, because they match how they affect the lexical scope and runtime scope of variables. 18:43:30 s/runtime scope/runtime liveness/ 18:44:04 And the construction and deconstruction of variables and temporaries too in C++. 18:45:55 I'm saying this for C and C++ in particular, it's slightly less true in perl, and even less true in ruby and rust. 18:46:10 Anyway the reason I ended up reading about Algol 68 was that I was trying to figure out what lvalues are. 18:46:25 C has the notion of lvalues and also of pointers, and they're pretty similar. 18:46:45 ais523: what do you mean by "call-by-name"? do you mean just passing function arguments by a pointer/reference to them? because I think fortran has that. 18:46:59 -!- SopaXorzTaker has quit (Remote host closed the connection). 18:47:07 I remember the example ais523 gave was pretty surprising but I don't remember the details now. 18:47:11 shachaf: that's tricky because every language treats lvalues differently. 18:47:44 In Algol 68, as far as I can tell, you don't don't ever declare mutable variables exactly. 18:47:48 shachaf: what do you mean by nonlocal goto? goto across function boundaries? 18:48:12 You can pass a goto label as an argument to a function, and it looks to it like a function pointer. 18:48:35 shachaf: oh, computed/indirect goto. wow. 18:48:53 So the equivalent of "int x = 5;" is something like "int *const x = stack_allocate; *x = 5;" 18:48:58 (With a shorthand syntax.)b 18:49:43 no direct mutable variables is surprising for that age, but I'm not sure if it's a feature over C and C++, because you can use one-element arrays in C and references in C++ in a somewhat similar way. 18:50:14 C++ references are something weird and suspicious. 18:50:29 in fact there's a trick in C where a library header defines an opaque type as a one-element array if such values are to be passed to library functions by reference but can be allocated on the stack. 18:50:40 GMP does that for example 18:51:01 shachaf: they're weird, but part of the weirdness is that it took a long time to figure out the right semantics, so there are some historical mistakes on them 18:51:44 I'm not so sure they've figured out the right semantics anyway. 18:51:48 done right I think references are a good tool, although one that is prone to overusing 18:51:59 shachaf: they're working on it, and some of it is too late to fix 18:52:10 some of it they're still trying to add to future versions 18:52:21 there are multiple problems to be solved 18:52:57 mostly connected with efficient handling of refs to data structures that are not trivial to copy or move or initialize empty or destroy 18:53:19 but also with just the current syntax and library support not being good enough 18:53:27 C++ is so complicated. 18:53:37 I like the Algol system because it seems simpler than the C system. 18:53:55 and how they combine with more questionable features, such as the new initializer-list-arguments and variadic templates 18:54:06 Though the implicit coercions between ref int and int and so on are suspicious. 18:54:42 shachaf: but does the algol system has any inefficiencies, like things you can't do efficiently because of them or that are hard to do efficiently? 18:55:18 especially in low-level programs that want to be efficient at runtime 18:55:22 which C wants to support 18:55:38 I think it'd be the same? 18:55:57 I don't know algol, that's why I'm asking 18:56:33 I don't either. 18:58:10 Rust references are very different, they're less powerful than the C++ ones (at least currently, they're working on some of that), and have very different kinds of magic from the C++ references (and I hate some of the rust magic, but some of it is about traits, and that magic would be already there without references, references just make it worse) 18:59:08 Rust has references? 18:59:15 I thought they just have different kinds of pointers. 19:00:36 shachaf: sort of. there's something they call references, which differ from the pointers it also has (and the pointers differ from C pointers, but that's a different question), they have very different goals from C++ references, but some of the goals are shared. 19:03:03 wob_jonas: here's an example of call-by-name (pseudocode C-like syntax): int x = 3; int f(int y) {x = 5; return y+1;} print(f(x+4)); 19:03:09 mind you, C pointers are easy to almost simulate with rust pointers, so rust is strictly more powerful in them, with the exception that rust doesn't have an offsetof 19:03:11 this prints 10 19:03:25 well, Rust has C pointers too 19:03:52 ais523: no, it has rust pointers, which are similar to C pointers but differ in two ways 19:04:06 well, two ways not counting the lack of offsetof 19:04:12 wob_jonas: you can think of call-by-name as effectively passing the concept of "x+4" as an argument, as opposed to 7 (i.e. the value of x+4) 19:04:55 ais523: wow, that is strange to have in such an old language, especially if it has that by default. that means making automatic closures. 19:05:22 languages took a lot of time until they started to support even explicit closures, except for lisp, most of which had it from the start 19:05:29 hmm... I'm not sure 19:05:34 maybe lisp didn't have them from the start 19:05:57 I don't think it requires closures? it requires some sort of lightweight functional thing, but I don't think it's a closure 19:06:02 because it doesn't capture anything 19:06:42 err, unless you allow recursion, in which case it captures the current stack depth so that it can disambiguate which version of a local variable you mean 19:06:43 both scheme and common lisp has them now, but in scheme and haskell and standard ml, function references and named functions have close to the same syntax and behavior, whereas in common lisp they have different syntax, and in prolog they have different syntax and behavior 19:08:01 ais523: it captures at least a pointer to stack. some C++ closures and gcc C closures are implemented that way, although C++ doesn't strictly speaking guarantees this, 19:08:22 yes, I think "captures a pointer to stack" is the right way to think about this 19:08:41 so it's the same concept as a gcc nested function 19:08:53 which is also suffering from the lack of a good name 19:09:01 although C++/rust closures have a code size hit because they're specialized for each closure body, whereas gcc C closures have a runtime hit, because they're implemented in a way that that their calling convention is compatible with plain C functions 19:09:15 right, the trampoline 19:10:56 ais523: Are you sure Algol 68 does that? 19:10:59 there's also the part where gcc C functions require an executable stack, which people hate these days, but that wasn't yet the case when gcc C closures were invented, because back then most CPU MMUs didn't support non-executable readable memory areas on a flat address arch 19:11:16 shachaf: Algol 68 doesn't do that, call-by-name is an Algol 60 thing 19:11:26 Oh. 19:11:33 Algol 68 changed to call-by-value because people found call-by-name too confusing and too hard to implement 19:11:36 and I think gcc's primary target were flat address CPUs even back then 19:12:15 That makes sense. 19:12:18 as opposed to segmented ones, which did support non-executable readable segments, which in fact was easy to implement in 286 since they already had to support at least three differently executable segments, if not four 19:12:22 more I think 19:12:44 16 bit versus 32 bit, and normal executable segments vs interrupt gates vs system call gates, and I think that's partly orthogonal 19:12:55 32 bit only on the 386 I guess 19:13:47 ais523: I believe fortran has had call by reference from the start, which is easier. it just involves passing a transparent-syntax pointer to the argument, even if the argument is a temporary 19:14:35 "call-by-reference" is basically just call-by-lvalue (whereas "call-by-value" is call-by-rvalue) 19:14:43 programming languages stopped that when functions got cheap enough that people started to make a lot of them, and call by ref became a severe runtime performance hit, especially because cross-compilation-unit it can't be optimized away 19:14:54 ais523: yes. 19:14:54 by-reference and by-value are basically identical, just differ in whether it's an lvalue or rvalue you're passing 19:15:18 I'm a bit skeptical of lvalues, I think. 19:15:22 I think Perl is a good example of an actually call-by-reference language 19:15:29 although it's also capable of return-by-reference, which is just bizarre 19:15:39 yes, but exclusive call-by-reference is not a good idea if you want efficient low-level programming, which was a goal of C from the start 19:15:57 ais523: ... perl is strange though, also for historical reasons 19:16:02 the only use for return-by-reference I've discovered so far is the array syntax in A Pear Tree 19:16:51 What is return-by-reference? 19:16:56 Perl parses "x[3]" as a call to the function x whose argument is an anonymous array reference to an array containing only the element 3 19:16:57 BASIC does call by reference normally but you can specify BYVAL if you want by values instead 19:17:08 C++ operator[] returns references which seems like one of the only justifications for having references maybe. 19:17:19 but it's actually possible to write this function such that you can make it return the array element as an lvalue, so you can still assign to it 19:17:25 ais523: it's even more strange that perl has had builtins returning magical references, namely vec and substr, before it had user-definable magic scalars 19:17:27 ais523: come to think of it, this implies that Ⅎ is TC with exactly one pair of parentheses in the whole program => great and neat, I’ll include it in the article with the now obvious s-k proof 19:17:55 I think they added that syntax for substr because BASIC had it (at least most dialects, some BASICs don't even have strings) 19:18:04 wob_jonas: @_ is magical too, stealing the magic from @_ is a fun way to do programming puzzles 19:18:13 ais523: yeah, I know 19:18:19 I have a link for that too 19:19:15 (BYVAL is only valid for numbers though; it cannot be used with strings, structures, or arrays) 19:21:32 So a pointer is a thing whose value is a memory location; an lvalue is a memory location. Is that right? 19:23:25 ais523: https://www.perlmonks.com/?node_id=302287 question 1 and 3, https://www.perlmonks.com/?node_id=376362 exercise 6 IIRC 19:23:26 Or maybe an lvalue is a thing that has a memory location, instead. 19:23:36 about perl @_ magic 19:23:59 shachaf: again, in what language? 19:24:18 C. 19:24:51 shachaf: in that case, for C pointers to objects and C lvalues, yes, for pointers to functions, usually but not necessarily 19:25:50 and the type of the pointer may restrict what memory locations are allowed, but a void * can point to any data or function (except bitfields) and you can losslessly use it that way 19:26:12 -!- nfd has quit (Ping timeout: 252 seconds). 19:26:25 and a struct {} * can point to any structure or union (which may be a bit more restrictive on crazy architectures) 19:27:08 shachaf: C technically has lvalues to bitfields, and you can't have pointers to them 19:27:24 but they're rare and I hate them 19:27:59 (I hate bitfields, and they'd be basically unusable without lvalues.) 19:28:59 obviously, "a memory location" is quite general, because C is defined in such a way that you can store practically anything in a memory location, possibly with some indirection involved 19:29:07 because you can allocate new memory locations and put anything in them 19:29:37 <\oren\> char * is actually the most general pointer 19:29:42 <\oren\> not void * 19:30:00 wob_jonas: I already know how Perl @_ magic works 19:30:04 it's possibly more insane than you'd think 19:30:16 ais523: sure, I'm just showing some examples of its insane uses 19:30:20 <\oren\> specifically, functions like memcpy take char * not void * 19:30:21 \oren\: did you solve your build system 19:30:24 incidentally, the internal implementation of Perl arrays is sufficiently general to allow them to contain other arrays, and even hashes 19:30:30 (not references to them, the array/hash itself) 19:30:35 <\oren\> shachaf: no 19:30:39 but I'm not sure you can make that happen without XS 19:30:42 I might not know how insane it is, I know recent perl has specific optimizations to avoid the slowdown with @_'s crazyness in many cases when that's not needed 19:30:51 <\oren\> shachaf: in fact it takes >12 hours now 19:32:00 ais523: I think that would break invariants badly, but otoh arbitrary aliasing of scalars usually doesn't, it only breaks some optimizations, and there are some types of aliasing you can only do with XS or non-core modules. 19:32:16 wob_jonas: with that first link, an "intended solution" to question 5 actually got added to the language, presumably after that question was asked 19:33:35 wob_jonas: haha, I like the solution to exercise 1 that sets $[ 19:33:35 ais523: even its implementation? this question allows you to use undocumented features or bugs, and refers to a specific version of perl 19:33:58 wob_jonas: it'd be in a later version 19:34:30 presumably this was as a replacement for the "my $x if 0;" bug 19:35:37 ais523: how do you know what the intended solutions were? I'm not sure xmath ever said explicitly, he only gave hints, and he admitted that people found better solutions for some of the exercises 19:36:02 wob_jonas: you're misreading my comment 19:36:18 I mean that Perl now has an intentional way to create a static variable lexically scoped to a single subroutine 19:36:20 oh, I see 19:36:28 "an" intended solution, not "the" intended solution 19:36:34 yes, that's "scope" 19:37:01 -!- oerjan has joined. 19:37:41 no 19:37:42 "state" 19:37:45 not "scope" 19:42:55 -!- LKoen_ has joined. 19:44:25 wob_jonas: hm i don't know why HackEso didn't respond to you, then. 19:44:29 those crazy old perl puzzles were fun, xmath even credits me with finding an alternate solution he didn't know of 19:45:02 oerjan: it might have been an error on my part, like typoing his name (although I think I checked) or messaging him before I identified to freenode 19:45:27 -!- LKoen has quit (Ping timeout: 252 seconds). 19:45:30 since it did reply to me later in similar conditions, it's probably solved 19:45:34 whatever it was 19:45:38 in fact let me ask him now 19:45:51 does answer me now 19:45:53 and quickly too 19:45:59 good 19:46:14 doesn't take twenty seconds to get swapped in like hackeso did 19:46:19 it was mostly an upgrade 19:46:29 indeed 19:47:02 I should try to install 7za to it so I can extract compressed files downloaded with `fetch more easily 19:47:13 I tried for hackego but failed 19:47:19 maybe it will work if I tried again 19:47:23 but I'm lazy to try now 19:47:30 I tried to install a binary 19:47:41 but I think there was some incompatibility with system libraries 19:50:08 I still can't tell if I should be proud or ashamed of having gotten two consecutive quotes in the hackeso quotedb 19:50:36 [[]] M https://esolangs.org/w/index.php?diff=57445&oldid=57424 * Arseniiv * (+269) more about power 19:51:38 [[]] M https://esolangs.org/w/index.php?diff=57446&oldid=57445 * Arseniiv * (+6) a single word is worth more than a thousand dollars (no) 19:54:38 why is that think "usability unknown"? 19:54:43 Totally different topic. I'm re-reading Leon Lenderman's pop science book. 19:54:52 esoprogrammers are good at using things, if it's TC it's almost certainly usable 19:55:13 I guess exceptions could be languages which were inherently very slow, or the like 19:55:14 why then there is that category? 19:55:28 arseniiv: it's for languages where we don't know if you can produce usable programs in them at all 19:55:37 aaah 19:55:51 For much of the book, he talks about his carreer as the director of a particle accelerator, including being responsible for keeping its budget, and then about convincing president Reagan to fund a more expensive future particle accelerator from state funds. 19:55:55 there are some languages which are sub-TC but obviously usable, like finite-tape brainfuck 19:56:12 but there are some languages which we're not sure whether they approach any sort of meaningful computational class 19:56:30 then I’ll delete that category from both Ⅎ and YE…A 19:57:22 Then a bit later, he gives the simulee that the Big Bang is a "particle-accelerator without a budget constraint", and explains that astrophisicists are examining its consequences with space-based telescopes and making a model about it and that the physics research for astrophysics and particle physics connects. 19:57:35 [[YEOOIIOOIOA]] M https://esolangs.org/w/index.php?diff=57447&oldid=54939 * Arseniiv * (-31) usability known! 19:58:11 Am I the only one who finds the "without budget constraints" part strange? Those space-based telescopes cost a ton of money, and Lenderman must have been familiar with that. 19:58:17 [[]] M https://esolangs.org/w/index.php?diff=57448&oldid=57446 * Arseniiv * (-31) it is completely usable when or if implemented 19:58:52 btw https://esolangs.org/wiki/Category:Usability_unknown is vague on the topic 19:59:26 someone should write something clearer, then 19:59:31 arseniiv: try https://esolangs.org/wiki/Esolang:Categorization , it often gives better desc of the categories 20:00:10 wob_jonas: not much clearer( 20:00:39 I remember I’ve read all that thoroughly when writing YE…A article :) 20:01:24 I keep reading that page just to remember what categories we use. I've made a page that has nine categories. 20:01:38 https://esolangs.org/wiki/Game_of_Life 20:01:41 oh 20:02:01 well, not made, but extended seriously 20:02:42 it's still short, but it was even shorter 20:02:53 and it's an important language because of its popularity 20:02:58 btw doesn’t “Turing tarpits” imply “Turing-complete” (categorizationally speaking)? 20:03:04 you know, like Intercal 20:03:19 yeah, GoL is 20:03:26 …something… 20:03:28 arseniiv: yes, but we still add both categories to most lang pages apparently 20:03:35 arseniiv: it does, but I think we decided to put both categories on 20:03:38 there was a discussion about it a while back 20:03:50 there are a few pages that only have the tarpit, but they might be mistakes 20:03:59 like, there are language pages still missing [[Category:Languages]] 20:04:06 which is a mistake too 20:04:30 [[IPVL]] M https://esolangs.org/w/index.php?diff=57449&oldid=56995 * Oerjan * (-27) Eviscerate non-category 20:04:42 I wish the main namespace was reserved for languages (plus redirects), but we don't want to change that now 20:05:06 -!- xkapastel has joined. 20:05:21 though they say when Conway got to know High life, he said that in a fair world it should be named the life instead of the usual one 20:05:57 there are a few pages that only have the tarpit, but they might be mistakes => oh then I’ll add this one too 20:06:00 just like how the main namespace of Wiktionary is reserved for headword entries (so much that [[Main Page]] is a redirect IIRC), the one for Wikimedia Commons is reserved for galleries, and the one for wikidata is reserved for entries that aren't even in wikitext format 20:06:28 and the one for wikidata is reserved for entries that aren't even in wikitext format => :D hehe 20:06:32 [[]] M https://esolangs.org/w/index.php?diff=57450&oldid=57159 * Oerjan * (-27) Eviscerate non-category 20:06:48 arseniiv: don't believe that to me btw, believe that to ais523 or other trusted people 20:07:56 arseniiv: well, it's fair, because that's the main purpose and the largest amount of entries in wikidata, and those entries are still "wiki" in the sense that they're easy to edit by anyone and have full dated version history unfalsifiable by non-admis readable to everyone 20:08:10 [[Printf]] M https://esolangs.org/w/index.php?diff=57451&oldid=57443 * Oerjan * (-27) No such thing 20:08:48 wob_jonas: believe that to ais523 or other trusted people => reasonable precaution (however I don’t think you’re that far from the consensus) 20:09:16 arseniiv: Commons should probably have had media as its main namespace, but they'd have to modify the mediawiki software for that, which probably wasn't worth the trouble, since media files in their own separate namespace was already supported by default in mediawiki (although commons has some enchancements since) 20:10:51 also, Commons isn't as strange as Wikidata: the media still all come with a description page in wikitext format, which can be edited and read and version historied and dump downloaded and categorized independently from the media content, and I believe you can even create a page in the namespace with zero versions of the media content uploaded, only 20:10:51 shouldn't. 20:12:38 arseniiv: ais and the other wiki admins work hard to enforce the conventions 20:13:04 arseniiv: by the way, I wanted to ask, where is your nick from, is there a canon pronunciation, and does the "iiv" part want to be a roman numeral? 20:13:50 ah this is asked sometimes! 20:14:38 I'd note that tom7 also calls himself Tom Murphy VII, and explains why on his homepage 20:14:49 but iiv isn't a real roman numeral 20:14:52 so that's stranger 20:14:55 iv could still be 20:15:03 which part is asked? 20:15:38 people often ask these questions about nicks of various people online, so it's not too surprising 20:15:58 [[Ackermann function]] https://esolangs.org/w/index.php?diff=57452&oldid=57436 * Oerjan * (-213) There's no real difference other than for negatives, so instead change the shorter one to use unsigned. 20:17:46 I usually get asked if I named myself of the band called "Jonas Brothers" (no, no relation, I hadn't even heard of them until I started using this nick) or 20:18:07 what the "b_" means (nothing much, I just wanted a distinguishing prefix because I previously used "jonas" and still use it on some forums (in the broad sense), but I like the letter "b", it's not too common, and it is the only letter to appear twice in my real world name) 20:18:39 They rarely ask how I pronounce it or why "jonas", but sometimes I volunteer to tell the latter anyway. 20:18:49 [[Brainfuck]] https://esolangs.org/w/index.php?diff=57453&oldid=57433 * Oerjan * (-138) This section is for proofs, let's not add unfinished stuff. 20:19:16 Although some forums have a general thread addressing every user in general for what their nick origin is, so that could count. 20:20:21 On perlmonks the respective thread was for a while called "the node that must not be linked" because it was too long and so put a large demand on the server when many people clicked on a link to it at the same time 20:20:53 hmm, now I wonder how easy it would be to make forum software which worked by editing a static HTML page whenever a comment was posted, incrementally 20:20:57 since threads in that forum are hierarchical, but don't have a paging system, so they show every reply up to a certain depth when you load a thread in the default view 20:22:21 * oerjan assumed arseniiv was a russian surname 20:22:33 I hate interfaces that have a stupid paging system that shows too few entries of a list and are hard to navigate, in general, not just for forum threads. I understand why you need restrictions on how much you of a list show to conserve server and client resources, but many software are overdoing it. 20:22:36 originally, it came from my first name Arseni[i] and a letter from a patronymic (IDK why I did that, it was long ago), *but* it’s completely normal to read it as arseni⋅iv, as when it’s a Roman numeral (but what would it mean? It could mean anything or just itself, I don’t mean) 20:22:36 and for the pronunciation part, I myself use something like /arsʲenʲiˈiv/ (whch is somewhat strange as my name is stressed on the second syllable) 20:23:36 arseniiv: besides tom7, ais523 and sam512 use numerals in their nick. (sam512 has changed his nick to qntm since). it's sort of common to use numerals in nicks. 20:24:01 oerjan: haha maybe there is one like this 20:24:09 Arsenii is a given name? interesting 20:24:26 oerjan: did he say it's russian? 20:24:32 wait does qntm appear here? 20:24:42 arseniiv: he doesn't, and he's not related to esolangs 20:24:49 ah 20:25:06 what a pity he doesn’t 20:25:26 arseniiv: he's mostly known as a sci-fi writer who publishes short story series online, and has an old webcomic, his homepage is http://qntm.org/ 20:25:40 yeah I know :) 20:25:46 but he has a presence on the internet and reacts to emails and comments and messages 20:25:54 we’ve discussed this even(?) 20:25:58 wob_jonas: well it looks russian, and he is. 20:26:26 I wrote him a email once, but I fear it was considered spam, as he hadn’t replied 20:28:30 ok, maybe he only _used to_ react to emails, but he still gives his email address on https://qntm.org/contact and reacts to comments on his webpage. What he has redacted is (what I presume is) his real name. 20:28:45 And also the old alias "sam523" from qntm now. 20:28:57 you can still find traces to it in some links, but they're better hidden. 20:29:29 yes he seemed to write it was his name 20:30:02 I dunno why he does that, since people know him under both of those, and this makes it harder to use a web search to find his webpage based on them (though probably still not too hard) 20:30:38 I know them under those names from back when he used both and haven't started using qntm as a nick 20:31:09 on the other hand, David Madore uses three names too, but is pretty public about all three of them 20:31:14 IIRC he was posting Ed stories somewhere as if it was a diary, so a reader doesn’t suspect it’s a story (unles she have read other ones) and then woah! is it real? 20:31:19 (and even his middle name)( 20:31:40 arseniiv: um... what do you mean it is real? I'm quite sure they're fictional 20:31:52 indeed they are 20:32:01 and I don't think he ever claimed they weren't, out of universe 20:32:39 I mean he used a trope when eh I don’t know how it’s descripted in a small count of words 20:32:52 he posted them on everything2 originally, and I think he still uses the nick sam512 there, plus he has a story about a robot called "sam512", and mentions his real name in his webcomic among others 20:33:27 the one about robot was after all that, wasn’t it? 20:34:03 after everything2 I mean 20:34:20 btw I don’t get hyperlinking in everything2 20:34:28 it’s strange 20:36:26 arseniiv: it's an odd system, yes. but then consider how mandatory automatic hyperlinks to CamelCase words and recommended CamelCase page titles was quite popular back then, eg. the c3 wiki, tiki wiki, and IIRC Wikipedia at its start did that too, and it's a pretty stupid idea, and tiki wiki's stupid formatter rules make it even worse 20:38:28 -!- ais523 has quit (Remote host closed the connection). 20:38:31 in particular, tiki wiki has several automatic formatting features that come up too often in normal text where you don't want them, but it's hard to escape them, because you have to use a bang prefix to escape them, and you have to know the precise formatter rules because if you add a bang prefix to anything that wouldn't be special formatting, it 20:38:31 will show up as a literal bang, 20:38:48 -!- ais523 has joined. 20:38:55 I was to say, last time I’ve seen it, there were links to common words, and what they mean is a mystery until you follow them 20:39:02 these features being at least automatic CamelCase links, superscript formatting of text between carets, and some bracketed stuff 20:39:46 although CamelCase links are definitely not a great idea, agree 20:40:16 mediawiki has much fewer of these stupid formatting features that stand in your way, and much better ways to escape them, although formatting everything indented with spaces as pre blocks is probably a mistake in mediawiki 20:40:44 bang bang my wiki shot me down 20:40:47 arseniiv: they wouldn't be such a bad idea if they were easier to escape, or if they only showed up when the page exists and when you're previewing a page you're editing. 20:41:23 the problem is that no wiki is perfect, and most of them are very hard on the system administrators that have to run them, harder than on useres 20:41:51 (btw how good do you think is Markdown (with common extras) for wikis?) 20:42:55 and I've seen many different types of wikis, including two different ones I used as an internal wiki at my previous job, although only from the user and a bit from the moderator side, not from the system administrator side 20:43:00 one of them was tiki wiki 20:43:54 arseniiv: I don't much like Markdown, and I specifically dislike the StackExchange formatter, which is based on it but changed a lot, but it's better than some other wikis, and still better than tiki wiki 20:45:00 I especially hate the variants of the formatter that StackExchange uses for chat lines and for comments resp (as opposed to questions and answers) 20:46:30 I don't like Markdown much either; I like the MediaWiki format 20:47:27 What I particularly like in MediaWiki is that it allows you to fall back to a large subset of HTML syntax for when its other syntax are hard to use for the formatting you want. I think zzo38 doesn't like this part. 20:48:09 This is convenient because the HTML syntax is sometimes more general, and many people already know enough of it to be able to use some of it on mediawiki without having to read that part of mediawiki manual. 20:48:36 wob_jonas: this is also the intended way to do anything nontrivial in Markdown 20:48:37 StackExchange's Markdown supports only a smaller subset of HTML, although that is partly deliberate, to restrict what formatting you're allowed to use. 20:48:42 -!- bradcomp has quit (Ping timeout: 252 seconds). 20:48:43 which defeats one of the main points of Markdown 20:49:20 ais523: I don't know. I think it's a good idea for a wiki formatting language in general, it's just that Markdown's goals are stupid. 20:49:25 IMO there are three major goals in a markup syntax: a) be easy/fast to write, b) be readable in the raw markup without rendering it (ideally the markup should look very like the end result), c) be fully general 20:49:45 markdown fails somewhat at all three 20:49:59 although its main high point is a) as long as you're doing simple things 20:50:22 I think it might be interesting to create one that goes all-in on b) and c), perhaps even using things like trailing whitespace to disambiguate 20:50:36 If (or when) I design a wiki syntax, then I'll make it mostly based on HTML, with some convenient shorthands like in mediawiki, but even more than mediawiki, because I'll add fewer convenience shortcuts, and I'll make the syntax of custom additions be similar in syntax to HTML. 20:51:06 The Everything2/Perlmonks formatters (one is derived from the other) are aligned to that goal, but the execution isn't perfect. 20:51:34 come to think of it, POD does very well at a), and better at b) and c) than Markdown does 20:51:48 In particular, perlmonks has bracket links, which is good, and convenient custom syntax for both inline code and block code, which is good on a site that discusses a programming language, 20:51:50 Fossil wiki format doesn't support HTML comments or macros; MediaWiki does both, and I think such thing should be added into Fossil as well 20:52:30 -!- bradcomp has joined. 20:52:39 (The system administrator could define macros by use of SQL codes and TH1 codes; if other users define macros then more restrictive SQL codes can be used.) 20:53:56 but the bracket links trigger too easily, which is bad, and the format was made before unicode was introduced, so its source can only contain cp1252, of which the gravest consequence is that you can't put non-cp1252 characters in code (inline or block). 20:54:26 oh no it’s actually unlogged! <-- yeah esowiki or Mediawiki strips out most unicode from the announcements for some reason 20:55:00 In perlmonks, bracket links, special tags "c" and "code" and "spoiler" and "readmore", that aren't just a subset of HTML with restrictions for technical and policy reasons. 20:55:10 umn 20:55:28 s/that aren't/are the only formatter features that aren't/ 20:56:46 And bracket links almost always trigger if you use a shortest sequence of left square bracket then square bracket. 20:57:23 This causes problems especially in chat, because you have to escape indexes like [0] or [$x], which are common in perl code. 20:57:35 you can use the convenient c and code tags for them, but still 20:58:48 Fossil wiki has the same problem, although you can use the command and you can also use HTML character entity codes. 20:59:25 (The command in Fossil wiki also can use numbers such as so that it can work even if the text contains or or whatever) 20:59:39 There's also the popular bbcode, which is mostly popularized by phpbb now, and which has various different variants, which I think is also worse than mediawiki syntax but better than tikiwiki. 20:59:48 I think that feature is good and should be added into MediaWiki and bbcode too. 20:59:54 I use multiple phpbb-based forums regularly, so I meet that a lot. 21:01:30 zzo38: nice. TikiWiki has a sort of nice solution for code by the way: surround it with triple brackets. perlmonks's is similar: surround it with ... or ..., case insensitive but whitespace sensitive, and is automatically a code block if it has newlines in it, inline code otherwise. 21:02:17 Then what if the code contains triple brackets? 21:02:30 (For example, if you are showing a example of a TikiWiki code) 21:03:14 zzo38: I think it has more tricky formatting mechanisms too, but I'm not sure. perhaps not in TikiWiki, but there would be in a well-designed wiki, and I think the triple braces aren't exclusive to tiki 21:03:15 Fossil wiki also allows you to disable all wiki formatting for a wiki page, in case you want to use text only. 21:03:58 zzo38: yes, that's useful for importing large amounts of data that is not wiki-formatted 21:04:24 it would be even nicer if there was some automatic way to upgrade such a page to wiki-formatted so you can add formatted parts 21:04:45 I mean, automatically creating a wiki-format text that is mostly equivalent with the plain text 21:05:01 but that might need some tricky heuristics if you want to use it nicely 21:05:24 because you don't just want to escape the whole text usually, that makes it hard to add formatting 21:05:25 You could perhaps use an external program to do that, I suppose; the Fossil command-line interface can then be used together with it in order to post the changed file. 21:07:00 I hope ais523 will eventually write a vcs that's better than the existing ones. 21:07:17 But both designing and implementing one are very hard tasks. 21:07:28 I've got some distance with the designing 21:07:33 Even if you don't do it from scratch, but use existing vcses. 21:07:37 ais523: yeah, I know. 21:07:40 but haven't started implementing and it'd take way too long 21:07:49 but I also know that both parts are difficult 21:08:59 I have multiple requirements that interact in ways that I don't even know how to define a combined semantics that satisfies all of them. 21:09:55 Oh by the way, I'd like to add one more request to the vcs, and this one I think is easy to implement regardless everything else: 21:11:26 make the official reference documentation available in some collected form such as a manpage or directory of html page like mercurial does, but unlike svn, which only provides it as the outputs of various svn --help commands and unlike hg it's not even easy to discover which such outputs exist. 21:12:14 I want to collect all the svn help outputs in the future, it seems feasable but haven't yet done it. I already know you need at least two depths of recursion from the root. 21:12:47 hg help lists all the help pages right in the top-level hg help message, and collects all of it in the manpage. that's the Right Thing to do 21:13:06 -!- arseniiv has quit (Ping timeout: 264 seconds). 21:14:01 even worse examples are ImageMagick and ffmpeg, but they partly do that because of a lot of pluggable parts developed partly independently (although distributed together) and not enough resources to document them properly 21:15:06 On the plus side, svn has a C api that is documented and is even more stable on the long therm than the command-line, plus lots of other features I like in it. 21:15:13 wob_jonas: one thing I realised is that the name "scapegoat" is awkward as "sg" already exists 21:15:19 I like svn (Apache Subversion is the official name) in general 21:15:28 and the obvious solution is a separate executable per command, "sg-commit" or whatever 21:15:42 (or just symlinks to a single executable) 21:15:43 ais523: or you can use that as the developer codename, and give it a different official name 21:15:47 -!- xkapastel has quit (Remote host closed the connection). 21:15:53 what is the sg that already exists? 21:15:54 that'd also have the advantage of man pages working in a really simple way 21:15:59 wob_jonas: like su but for groups 21:16:04 ouch 21:16:06 ok 21:16:17 ais523: as long as you have a single-level index manpage, that's fine 21:16:43 nowadays very few people have permission setups complex enough for sg to be useful, although it is necessary in those cases where you need it 21:16:55 ais523: also, if possible, ALSO make the docs available as an online webpage, which is useful for windows users, because it's hard to find a working man reader for win32 21:17:19 aimake will generate man pages on UNIX and HTML files on Windows from the same sources 21:17:43 ais523: that's fine if you have a 1-depth index for them too in both formats 21:18:56 ais523: git in theory has its manpages online as HTML, but they messed it up, and some automatically generated parts of the manpages are missing from it. perl has made the same mistake with the perl core and cpan, but there's now a separate http://perldoc.perl.org/ webpage associated with them 21:19:03 which fixes that mistake 21:20:36 also, a lot of software, including perl and svn, has some docs that they claim are only for developers of the project itself and so are only distributed in the source code and not collected together with the main docs, but some of which would actually be useful for non-devs and would be easy to add to the normal set of docs 21:21:06 I mean, that's partly unavoidable, because sometimes you want developer docs and there's a lot of unmaintained junk in it 21:21:10 Linux also does that 21:21:18 but still, you have to be careful with it 21:21:50 -!- cods6 has joined. 21:22:35 at least since svn is a version control system, it's also self-hosting now, and they run a web service for reading its official version control repository, and you can see the developer docs there 21:24:16 SQLite does put the developer documents that are also useful for other uses too are also made available outside of the source codes, such as the document of the SQLite file format and the document of the VDBE opcodes. 21:24:19 -!- xkapastel has joined. 21:24:44 also, I've said this already, and I don't have an immediate need for this, but it would be nice if you put a clear declaration into your official version of ayacc that it is distributed under some free software license, just like you did with uncursed and aimake 21:24:53 the file format isn't just internals, though, it's also important for interoperability 21:25:19 wob_jonas: I'm not sure if the license on ayacc is decided yet? I'm trying to remember 21:25:29 there's no logical reason I can think of not to make it GPLv3 though 21:25:41 that, plus the file format is important to estimate some things about how much disk space and disk access and cpu certain workloads use 21:25:44 still, I have a job right now (for complicated technical reasons I only work on ayacc while unemployed) 21:26:22 ais523: last I've seen, it wasn't, but I think you have made a declaration that's somewhere in the #esoteric logs, which could sort of work in a pinch 21:26:41 -!- cods6 has quit (Remote host closed the connection). 21:26:52 ais523: ayacc declares that all code snippets that go into the generated output are under public domain, 21:27:03 but doesn't declare a license for the rest of the code 21:27:07 yes, that's obviously necessary, unless it's implicit 21:27:14 so I would have written it out of habit 21:27:36 yes, and that declaration still helps 21:27:47 since it lets me more easily distribute a program that uses vanilla ayacc 21:28:04 I can distribute the ayacc output with it so people don't have to run it 21:28:29 not that I have such a program yet, but still 21:28:44 even for what I want to write, I could probably use bison 21:28:54 but I prefer ayacc 21:31:02 a bison/ayacc polyglot is fairly easy 21:31:13 although ayacc has some non-bison features you might want to use 21:32:03 yes, and ayacc generates nicer code output, and ayacc is easier to modify in certain ways that I might want to change, such as adding a new output language or language variant, or adding an extension to its syntax 21:32:08 I was considering both 21:32:19 but only in vague plans that I might not ever do 21:32:27 the output isn't as nice as I'd like yet 21:32:32 it's also probably slower than bison noutput 21:32:48 candidates for language variants are rust and stackless C 21:33:23 as for the extensions, I'll probably have to talk to you about what's feasable and what isn't already possible in ayacc before I try 21:35:41 I'm sort of thinking an extension where I have a language where some production rules are such that they cause shift-reduce conflicts, and I want to be able to write a proof whose checking is assisted by ayacc that despite this, you can express "any valid parse tree" in the language with some easy automatable transformations of the input, turning i 21:35:41 t to a subset of the language that has no shift-reduce conflicts but can still express anything. 21:36:03 Such production rules would be ones that allow eliding parenthesis and similar markers to disambiguate precedence. 21:36:37 I think something like that is possible, but I don't have the details completely thought out. 21:37:44 that seems like an interesting goal but one that's quite different from ayacc's, so if you added it to ayacc you'd essentially just have two different programs bolted together 21:37:46 In particular, it's easy to remove the production rules I mark and test if the remaining language has no shift-reduce conflicts, but you also need a way to annotate why you believe it can express any parse tree and check its proof, 21:38:01 although unlike bison, ayacc does have the concept of a production being a no-op, e.g. "(a)" and "a" being equivalent 21:38:02 and ideally also generate a program that does the transformation on any input. 21:39:34 ais523: I don't think it's that different from ayacc, since ayacc already must be able to verify that a language has no shift-reduce conflicts (with false positives, but here too I want to support only proofs of specific form), and it can already parse the description of a grammar to some form it can manipulate, so automatically removing some marke 21:39:34 d productions would be easy if you extended the syntax. 21:39:48 That's the easy part. The hard part might still be difficult to design and implement. 21:40:26 well, I think what would probably be most usable for this would be that, when a conflict is automatically resolved, ayacc could determine whether there was always a way to force the conflict into the other resolution 21:40:30 It might not be ayacc's goal, but since ayacc has readable code for these tasks, it would help implementing this. 21:40:36 although that'd be useful even with manually resolved conflicts, I guess 21:40:52 ais523: I'm thinking of various manual annotations in the grammar for this. 21:40:57 It doesn't have to be full automatic. 21:41:18 It could also have escape hatches for ambiguities that you can't prove with the annotation language, but prove manually. 21:42:50 Like, an annotation would be that I claim that a particular production like {expr -> expr '+' expr} can always be disambiguated by putting parenthesis around it. 21:43:13 perhaps the report could say something like "'expr PLUS expr . TIMES': shift/reduce ambiguity resolved as SHIFT, alternative available as '( expr PLUS expr ) . TIMES'" 21:43:14 Where in the annotation I tell which "parenthesis" that is. 21:44:16 ais523: well, in very simple cases it might be possible to annotate, but I want it on grammars more trivial than just infix operators with different precedence and parenthesis, for in such simple languages, a proof by hand is also easy 21:44:29 s/possible to annotate/possible to automate/ 21:44:41 wob_jonas: I'm thinking about this idea: look for a no-op rule that can be placed on the LHS in order to make it reduce rather than shift 21:45:17 doing it the other way round (i.e. to make it shift rather than reduce) is harder because ayacc thinks left to right, so it doesn't have any concept of the place where the closing paren would have to go 21:45:34 I need it for cases where from the grammar it's not even obvious that a certain construct means the same as another construct, because it's not implemented by a pass-through rule, either because it's not a primitive construct but a consequence of multiple rules, or because we add debug information that shouldn't change semantics. 21:46:04 yes, I think automation would have to rely on pass-through rules 21:46:10 Because of debug information, you can write a no-op rule in a way that ayacc doesn't know is a no-op rule 21:46:12 I'm not getting ayacc to parse and understand arbitrary semantic actions ;-) 21:46:43 The other case comes up for uglier things like some C++ ambiguities, although C++ might be too ugly to produce such an annotated proof. 21:47:14 C++ has reduce/reduce ambiguities and other things that are hard to handle with an LR parser. 21:47:34 C++ syntax is terribly complicated to even parse correctly these days. 21:47:41 even compilers don't always agree on how it works 21:47:54 Is it a full LR parser or a LALR parser? (I don't like C++ syntax; it is too messy) 21:47:58 `olist 1137 21:47:59 olist 1137: shachaf oerjan Sgeo FireFly boily nortti b_jonas 21:48:17 I still don't understand how a certain template syntax construct is supposed to be parsed, although I think the new versions of the standard clarify it, the standard is just too complicated. 21:48:24 shachaf: oh nice! let me look 21:48:32 the Giant is on a roll 21:48:35 [[]] https://esolangs.org/w/index.php?diff=57454&oldid=57448 * Ais523 * (+248) /* Power */ PDA without parens 21:49:18 hmm... why don't I see the page title in the esowiki bot's change announcement 21:50:05 esowiki isn't very good at Unicode 21:50:42 I see 21:50:42 If it does not support Unicode, then use the percent encoding of the URL. 21:50:52 the URL is fine 21:50:57 it's the page title that is wrong 21:51:09 -!- xa0 has quit (Remote host closed the connection). 21:51:40 you can make an URL to a mediawiki page without even mentioning any escaped form of its name, in at least two ways: by its unique page ID and the change ID of any version of it 21:51:52 this URL does the latter 21:52:36 this is handy for pages of whose escaped title would be too long 21:53:29 -!- xa0 has joined. 21:53:29 -!- xa0 has quit (Excess Flood). 21:54:10 and those two IDs are mentioned in the mediawiki dumps and the api.php output and you can refer to them in the api.php interface, so there's a high chance that they can be preserved or at least tracked to a fork or dump of a wiki 21:54:23 mediawiki does a lot of things well 21:54:49 it's a pity it's implemented in php :-) 21:55:09 it was implemented in php before php even became a sane programming language 21:55:36 dunno why anyone would do that, I guess they didn't know that mediawiki will be so popular and have so many plugins 21:56:38 -!- xa0 has joined. 21:56:38 -!- xa0 has quit (Excess Flood). 21:56:57 -!- LKoen_ has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”). 21:58:07 I would want a SQLite virtual table extension to access remote MediaWiki files. (You can then make a copy of the wiki by the use of INSERT INTO ... SELECT command.) 21:58:18 -!- xa0 has joined. 21:58:18 -!- xa0 has quit (Excess Flood). 21:58:51 zzo38: you could write such an extension, at least for mediawiki instances where the api.php is enabled for at least read use 21:59:01 (not all mediawikis have it enabled) 21:59:18 -!- xa0 has joined. 21:59:18 -!- xa0 has quit (Excess Flood). 21:59:44 obviously you couldn't access data that's hidden by administrators, such as user passwords and deleted versions, but that's on purpose 21:59:46 I would want to support incremental updates, but I don't know if the MediaWiki API supports that. 22:00:10 I know of course there is no need copying user passwords (or any other user data other than user pages, since your own copy will have its own users). 22:00:23 -!- xa0 has joined. 22:00:23 -!- xa0 has quit (Excess Flood). 22:00:46 zzo38: otoh I believe there are already tools for MediaWiki that allow you to copy a remote wiki, and even output it into a new MediaWiki 22:00:50 zzo38: the MediaWiki API basically just does queries against the database, but from a predefined subset of queries (those which won't cause excess database load) 22:01:06 "batch" operations are supposed to be done on downloadable database dumps 22:01:06 -!- xa0 has joined. 22:01:06 -!- xa0 has quit (Excess Flood). 22:01:15 besides api.php, there's also the older [[special:export]] and [[special:import]] , but they can do somewhat less 22:01:28 -!- ChanServ has set channel mode: +o ais523. 22:01:44 -!- ais523 has set channel mode: +b xa0!*@*$##fix_your_connection. 22:02:43 -!- ais523 has set channel mode: -o ais523. 22:02:55 those are still widely used for moving pages between wikis 22:03:00 say if they got created in the wrong place 22:03:06 ais523: yes, and now some of the bigger wikimedia projects also have incremental dumps to preserve server resources (although you could already simulate them on client side with api.php); plus a so-called "tool server", which are servers that have a frequently updated decompressed copy of the projects and where they give shell access to people they 22:03:06 believe can perform useful tasks 22:03:26 Sometimes you only want a few files, so using API can be used too 22:03:40 ais523: yes, and they're also useful for simple batch downloading of some pages for analysis or conversion 22:04:03 ais523: but the api.php can do much more, and has a reasonably well documented and usable interface, at least for the read-only part 22:04:08 I haven't yet used the write part I think 22:05:28 I don't like how it's called "the API", since there's nothing really exclusive in it, it's just a very good coherent subset of API that exists, so I call it the "api.php interface" 22:05:49 wob_jonas: well it's the API because it's the official public endpoint for automated queries 22:05:50 but naming something "the API" is a fault some other projects commit too 22:05:53 which is what an API is 22:06:16 It can be called "remote API" maybe is better 22:06:32 ais523: the dumps are also an official public endpoint for automated queries 22:07:22 in fact index.php and its CGI parameters are well-documented, and it puts a lot of extra info in invisible HTML stuff, so it's also an official public endpoint 22:07:27 but not interactive, which I guess is part of a requirement for an API and I simply didn't realise it until writing this sentence 22:07:42 plus there's the printable format which also helps and is quite official 22:08:13 ais523: perhaps the interactive part is reasonable, it's hard to call it "application" otherwise 22:12:31 -!- AnotherTest has quit (Ping timeout: 252 seconds). 22:20:26 -!- woddf225 has joined. 22:23:23 -!- woddf225 has quit (Remote host closed the connection). 22:26:33 -!- sleepnap has left. 22:32:57 `aglist 611 22:32:58 aglist 611: b_jonas shachaf 22:33:13 I don't think listing on every update is necessary, but maybe when there hasn't been one in a while. 22:36:46 `grwp axiometric 22:36:47 No output. 22:37:16 -!- ais523 has quit (Quit: quit). 22:46:14 -!- oerjan has quit (Quit: Nite). 22:48:24 wob_jonas: I don't think the semantics of "continue" in the C standard is correct. 22:49:14 wob_jonas: It says that in "while (/* ... */) { /* ... */ continue; /* ... */ contin: ; }", "continue" is equivalent to "goto contin". 22:49:34 shachaf: what do you mean by not correct? 22:49:35 But if the /* ... */ after "continue" declares a variable-length array, that's invalid. 22:49:46 Hmm, you're right. 22:49:53 I mean it's not what they're intending, and what everyone implements. 22:49:54 shachaf: and isn't continue also invalid then? 22:50:17 I don't think so? 22:50:29 I guess it is according to the standard. 22:51:06 Never mind what I said about correctness. 22:51:31 C really doesn't like to have implicit destructors when a variable or temporary goes out of scope, and that's one of the main differences from C++, and exiting from the scope of a variable length array would require calling an implicit destructor in the implementation 22:52:13 especially if expect to repeatedly enter that scope in a loop, so the variable length array has to be recreated an arbitrary number of times with different sizes 22:52:41 normally at the end of a function, you can free the space for all vararg arrays as easily as you free temp stack space for ordinary variables 22:52:47 obviously this depends on the target arch 22:52:48 but still 22:53:28 vararg arrays? 22:53:40 variadic length arrays, sorry 22:55:10 of course, a compiled function might still need to explicitly save and restore some registers, but most cpus that C target are built around that concept and many give convenient ways to do that 22:55:28 x86 doesn't, sadly 22:56:00 well, it has implementation optimizations for saving registers to the stack in some ways 22:56:22 and addressing modes to access the stack easily 22:56:27 I think the actual meaning most people imagine and most compilers implement for "continue" would be closer to "while (/* ... */) { { /* ... */ continue; /* ... */ } contin: ; } 22:56:28 so that's still something 22:56:53 shachaf: what's the difference? 22:57:08 in C that is, not C++ 22:57:12 The extra block around the body. 22:57:17 Oh. 22:57:19 yes, but what's the semantic difference 22:57:36 -!- nfd9001 has joined. 22:57:44 If it declares a variable-length then its lifetime is the inner block 22:57:45 array 22:58:04 yes, but wouldn't the lifetime end immediately after the goto anyway? 22:58:17 goto after the declaration of a variable-length array isn't permitted. 22:59:05 I think there's a good reason for that, but I don't really like C VLAs in first place 22:59:45 many people don't like VLAs in C, so I think the people who insisted on adding it had to make some reasonable compromises for how much they can do 23:00:05 I don't like it either 23:00:24 GNU C has zero-length arrays though, which are sometimes helpful. 23:01:11 I especially don't like stack-allocated VLAs, and only somewhat don't like VLA function parameters 23:01:49 zzo38: zero-length arrays are nice in theory, and it's good that rust supports them and other zero-length objects specially, but I don't think they're a good idea in C, 23:02:34 because allowing them causes incompatibilities in existing programs that use the nonexistance of zero-length arrays as a replacement for the newer static_assert, such as in macros 23:03:12 you can still use negative length arrays for that, and some other portable tricks, but old programs don't know that they have to 23:03:28 programs targeting only newer compilers should use static_assert of course 23:03:35 You can tell GCC to compile in the old mode if you want to though 23:03:37 but C wants to preserve compatibility hard 23:03:43 zzo38: yes, that's true, but still 23:03:49 it's an error that's easy to make accidentally 23:04:01 and hard to detect automatically 23:04:30 it's not even easy to put a warning that catches it, even in a smart compiler, with it mostly coming from macros 23:05:53 a lesser problem is that it also breaks some invariants that some macros might try to rely on, such as that every object has a sizeof at least 1. 23:07:10 that's also why maxint_t is a bad design: it has to be fixed in an abi, and can't be increased when the language or abi adds a larger integer type, which is why even though gnu cc has 128-bit integers, maxint_t is 64-bit. 23:07:44 mind you, technically neither contradicts the standard, since they can just claim that 128-bit integers aren't an integer type, it's just a type similar to integer types, but still 23:08:43 Oh, the C++ standard has it right, it puts an extra block around the loop body before the label. 23:09:53 I have a similar smaller problem with the current proposal for making void a real type in programs: it allows programs to overload the comma operator with void as an argument and a user-defined class as another argument, but existing macros or generic functions can rely on that such overloads can't exist, and using the comma operator with a void va 23:09:53 lue (in either order) is useful in generic code. 23:10:04 This is also something that you can work around in new code, but it's ugly. 23:10:27 Luckily that one could be fixed by changing the proposal slightly to forbid such overloads, but the current proposal doesn't do that. 23:11:11 shachaf: like I said, that's because there's a genuine goal difference between C and C++ about implicit destructors. C wants to forbid them, C++ wants to allow them as much as it can 23:11:36 Right. 23:12:13 although I'm still not sure what difference the inner braces make in C++ 23:12:53 but at least it's plausible to me that C++ may have a difference there that isn't present in C 23:13:17 What do you mean? 23:14:00 The difference is that any destructors for variables declared in the inner block will run at the end of that block. 23:14:26 Or, well, that's a bad description. 23:14:29 well, scope braces in C++ affect implicit destructors of variables and temporaries, and C doesn't have such implicit destructors, so maybe I'm missing some obscure case in C++ where the braces matter 23:14:36 The difference is that it doesn't goto past any variable declaration. 23:14:51 oh, so the problem is _constructors_, not destructors 23:15:03 Well, it's both. 23:15:16 The destructors get run at the end of the block, so you can't have the variables uninitialized. 23:15:32 C also doesn't have variable constructors, other than for variadic-length arrays, and so doesn't forbid gotoing past a variable declaration, whereas C++ forbids that 23:15:59 wouldn't destructors already be ran because of the outer close braces? 23:16:08 skipping constructors I can see 23:17:27 I'm confused. 23:18:44 If you write "{ A a; if (p) goto exit; B b; } exit:", then when p is true, it'll run A(), B(), ~B(), ~A() 23:18:53 And when p is false, it'll run A(), ~A() 23:18:55 Right? 23:19:37 shachaf: you've already convinced me that it's useful to add the extra brace in C++ 23:19:43 Oh. 23:19:53 Then the same issue exists in C with VLAs. 23:20:15 -!- laerling has quit (Remote host closed the connection). 23:20:51 I just still claim it's not useful in C, because it probably only makes a difference for VLAs and some nonstandard extensions, and there's a good reason to forbid continuing a loop with a VLA declared in it in C because that would need an implicit destructor in practice 23:21:40 but I guess you're right that it's already allowed with the inner braces in C 23:21:45 so perhaps it could be allowed with continue too 23:21:50 I don't know 23:22:10 you could ask on ##C, they're friendly and good at such questions 23:22:15 on freenode that is 23:22:19 ##C is friendly? 23:22:30 not to newbies 23:22:38 and doesn't always answer every question you ask 23:22:54 but it usually doesn't hate people who are not newbies to IRC for asking questions about the C standard 23:23:16 I trust you know the general guidelines about asking a question on IRC 23:23:33 they don't like off-topic questions or newbies that don't keep common IRC ethics 23:23:50 and they don't answer every question, but that would be hard to expect from even the best channels 23:24:30 also, don't ask questions directly about differences between C++ and C in either ##C or ##C++, they don't like each other's language 23:24:56 many of the regulars passionately hate the other language 23:25:30 so it probably makes sense to ask this question above here in #esoteric 23:25:48 but you could phrase it in such a way that it's only about C vlas without mentioning C++, and ask in ##C 23:26:47 both channels also don't like questions about nonstandard extensions or libraries that aren't the standard library or system-dependent questions 23:27:11 they want to think that the standards exist in a vacuum and don't care about practical work in the language 23:27:31 so there are questions you can't easily ask anywhere because it's off-topic between the cracks on every good channel 23:28:16 mind you, there are some other channels on freenode that help in some of those questions 23:28:49 but some questions are still hard to find a good channel for 23:29:06 that's why channels that are geeky but not very on-topic are useful 23:29:14 ##C and ##C++ aren't like that 23:29:45 #esoteric is, and so is #rubik 23:29:53 #rubik is better for vim questions than ##vim actually 23:30:08 well, perhaps 23:30:11 ##vim isn't bad either 23:30:40 on the flip side, some channels are so off-topic that it's hard to get answers to on-topic questions on them 23:31:12 Like #esoteric? 23:32:06 shachaf: no, #esoteric is relatively good for getting answers about esoteric programming languages 23:32:10 compared to some channels 23:32:37 have you tried #English ? it rarely answers questions about the English language, and keeps talking about world politics and stuff like that instead 23:32:51 um, I mean ##English 23:33:26 #esoteric and #rubik are at least 80% off-topic talk, but it still handles on-topic questions well 23:33:39 -!- nfd9001 has quit (Read error: Connection reset by peer). 23:34:09 that's a good thing, it means the channels are useful as a community, not just for answering questions about a topic 23:34:17 I always like when internet forums serve such a purpose 23:34:35 and many others do, and those are the places I frequent 23:34:44 well, some of those obviously 23:34:47 not all of those 23:35:54 -!- bradcomp has quit (Ping timeout: 252 seconds). 23:49:55 -!- imode has quit (Quit: WeeChat 2.2). 23:58:42 -!- imode has joined.