00:00:01 except in songs, which is strange 00:00:42 <\oren\_> of course there is also the question of how much a literary corpus stabilizes the language 00:01:22 <\oren\_> like, do we know whther english language change has slowed down since the rise of literacy? 00:02:14 <\oren\_> french is still wirtten the way frech was spoken a long time ago right? 00:02:48 <\oren\_> so its possible it can't drift beyond a certain distance from the wirtten form 00:03:45 with modern telecoms and internet, languages are drifting closer together. 00:03:51 \oren\: yes, but it's not just drifting randomly, it's a filter layer of systematic simple changes over the written form 00:04:03 written French is completely different from spoken French. 00:04:23 boily: of course it is. spoken french is horrible and hard to understand. 00:04:57 <\oren\_> saint, sain, sains, saints, sein, seins 00:04:59 it doesn't have enough clues to be able to tell where the words end or what speakers are even saying 00:05:16 write, right, rite, wright 00:06:02 seau, sceau, sot, saut... 00:06:05 <\oren\_> wr-r merger is over a pretty rare sound though? 00:06:44 <\oren\_> the most common problem I see with english orthography is the ough 00:06:55 I just deleted that wisdom entry, but the list is: write, wrong, wrist, wrap, wreck, wrest, wrestle, wriggle, wrinkle, wrath, wraith, wreath, wrangle, wren, wright, wrought, wring, writ, writhe, wry 00:07:07 list of words starting with wr 00:07:35 <\oren\_> yeah and most don't have conterparts in r- 00:07:45 most? let me see 00:09:08 <\oren\_> rite, rap, rec, rest, right, rot, ring, rye 00:09:36 <\oren\_> 8/20 00:10:48 <\oren\_> kn is rarer though 00:11:31 <\oren\_> i think 00:11:34 yes, the ones that have are probably write/right/rite/wright, wrap/rap, wrest/rest, wring/ring, wry/rye, *wrought/rote only if you speak in a Hungarian accent that can't distinguish between the two long o sounds 00:12:05 oh right, "rot" if you speak that sort of English accent 00:12:15 <\oren\_> wob_jonas: yeah 00:12:17 "rec"... ok 00:12:28 <\oren\_> liek, the rec room 00:13:38 -!- xkapastel has joined. 00:13:59 the kn list is: know, knife, knock, knee, knight, knob, knot, knit, knack, knout, knuckle 00:14:38 and some of the gn words have homophones too: gnaw, gnash, gnome, gnu, gnat 00:14:44 <\oren\_> knave, 00:15:02 wow, why is knave not on my list? 00:15:06 <\oren\_> knelt 00:15:26 "knelt" as in the past tense of "kneel"? 00:15:39 <\oren\_> hmm i wonder if kneel is related to knee 00:15:46 I assume it does 00:16:54 I'll add "knave" to the list now 00:18:54 <\oren\_> hmm, apparently old english also had a "mn" sound that merged into "m" 00:19:54 \oren\: really? I assumed it wasn't really much of a sound in old English, it just appears in that one greek loanword and the lazy English don't bother pronouncing it, same as with the six or so ps- words 00:20:54 -!- alercah_ has changed nick to alercah. 00:21:48 <\oren\_> oh, there's also "sw" 00:22:26 huh? but isn't sw just pronounced as both consonants one after the other? 00:22:31 in words like "swift" 00:22:34 <\oren\_> not in sword 00:23:01 oh right, that one stupid word. but that's not for this list, because it's not the initial consonant that's dropped 00:23:07 <\oren\_> right 00:23:22 it's just an inconvenient consonant in the middle, that's much less strange to me than dropping the very first sound 00:23:31 <\oren\_> also answer 00:23:39 <\oren\_> ansr 00:24:12 -!- augur has quit (Remote host closed the connection). 00:24:18 \oren\: dunno, I can't pronounce "w" properly anyway, so I'm just happy with words where I don't have to pronounce it 00:25:26 in Hungarian, so few words have the "w" sound that teachers are in a denial that it even exists, and the spelling doesn't reveal when you're supposed to pronounce one, sort of like in french, only in french it's very common, but in hungarian we only get it in words of greek origin 00:26:35 it's so crazy I'm sometimes even wondering if I should start to use a nonstandard spelling for those words 00:27:32 <\oren\_> in english people often try to spell words and spell a different word that sounds similar 00:27:51 <\oren\_> like defiantly versus definitely 00:28:14 <\oren\_> what if that became a fully general trend 00:28:35 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client). 00:28:44 -!- wob_jonas has joined. 00:28:46 it's a class of errors that native speakers commit more frequently 00:29:09 since other people are more likely to remember the written form 00:29:16 "sign" vs "sine" is an example 00:29:35 "know" vs "no" even more so probably 00:29:52 <\oren\_> ye 00:30:10 let me look up what was the error of possibly this kind that I recently made 00:32:22 I can't find it. damn 00:32:33 Westlake's "Dortmunder" books use "could of" instead of "could have" in dialogue, though I'm pretty sure that's intentional. 00:34:07 yes, that's another very common one 00:34:27 -!- sleffy has quit (Ping timeout: 240 seconds). 00:37:47 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client). 00:39:53 -!- Cale_ has quit (Remote host closed the connection). 00:50:04 -!- LKoen has joined. 01:13:10 -!- LKoen has quit (Remote host closed the connection). 01:14:09 -!- LKoen has joined. 01:20:55 -!- augur has joined. 01:22:54 -!- dingbat has quit (Quit: Connection closed for inactivity). 01:27:56 -!- sprocklem has quit (Ping timeout: 276 seconds). 01:30:39 -!- LKoen has quit (Remote host closed the connection). 01:38:42 -!- augur has quit (Quit: Leaving...). 01:46:43 -!- variable has joined. 01:49:08 `5 w 01:49:15 1/2:qdb//qdb is used like: `quote; `quote regexp; `quote id; `addquote ...; `delquote id; `pastequotes regexp; `pastenquotes [n]; see also quoteformat \ music//The result was a short burst of the most hideous cacophony in G minor. \ astronomy//Astronomy is the study of stars, such as Julia Child and Gordon Ramsay, typically through long-dista 01:49:17 `n 01:49:17 2/2:nce viewing devices. Despite the name, it does not involve the study of the astrointestinal tract. \ lem//Stanisław Lem was a Polish logician who discovered the law of excluded middle. \ fish//Come and dance and love the fish! Mister Disco summoned it. 01:50:10 * boily trout slaps fungot 01:50:11 boily: i doubt it would make linguine insecure one just in case... the hd doesn't get warm in mine, meaning i have physical memory? :) taken me all night 01:54:55 -!- LKoen has joined. 01:54:57 -!- LKoen has quit (Remote host closed the connection). 02:23:54 -!- sleffy has joined. 02:29:35 -!- sleffy has quit (Ping timeout: 240 seconds). 02:38:42 -!- boily has quit (Quit: ACROBATIC CHICKEN). 03:04:16 -!- sprocklem has joined. 03:07:03 -!- sleffy has joined. 03:07:20 -!- heroux has quit (Ping timeout: 268 seconds). 03:23:20 -!- xkapastel has quit (Quit: Connection closed for inactivity). 03:37:53 -!- sleffy has quit (Ping timeout: 240 seconds). 03:47:43 -!- sleffy has joined. 04:09:31 -!- variable has changed nick to constant. 04:18:11 -!- augur has joined. 04:25:02 -!- augur has quit (Remote host closed the connection). 04:42:07 -!- moei has quit (Quit: Leaving...). 04:56:34 -!- augur has joined. 05:50:08 -!- LeoLambda has quit (Ping timeout: 268 seconds). 05:56:48 -!- LeoLambda has joined. 06:28:22 -!- augur has quit (Remote host closed the connection). 06:33:00 [[Special:Log/newusers]] create * Peril * New user account 06:39:14 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=54256&oldid=54252 * Peril * (+268) /* Introductions */ 06:49:52 [[Brainfuck, but every + is replaced with the bee movie script]] https://esolangs.org/w/index.php?diff=54257&oldid=51207 * Peril * (+520) There are probably way better ways of doing what I did, but I figured it out by myself in under a minute and I thought I ought to add it to the page. 07:03:43 -!- lifthrasiir has quit (Quit: No Ping reply in 180 seconds.). 07:05:08 -!- lifthrasiir has joined. 07:07:08 -!- Vorpal has quit (Ping timeout: 256 seconds). 07:12:57 -!- Vorpal has joined. 07:33:53 -!- mniip has quit (Ping timeout: 240 seconds). 07:40:33 -!- sleffy has quit (Ping timeout: 240 seconds). 07:50:42 -!- erkin has joined. 08:06:23 -!- Hooloovo0 has quit (Ping timeout: 276 seconds). 08:10:47 -!- Hoolootwo has joined. 08:42:33 -!- ais523 has joined. 08:56:33 -!- heroux has joined. 09:12:18 -!- LKoen has joined. 09:12:46 -!- Hoolootwo has changed nick to Hooloovo0. 09:13:46 -!- AnotherTest has joined. 09:17:54 -!- moei has joined. 09:31:13 -!- AnotherTest has quit (Ping timeout: 248 seconds). 09:43:35 -!- erkin has quit (Quit: Ouch! Got SIGIRL, dying...). 09:57:43 -!- Phantom_Hoover has joined. 10:06:05 -!- LKoen has quit (Remote host closed the connection). 11:21:33 -!- ais523 has quit (Ping timeout: 240 seconds). 11:33:23 -!- atslash has joined. 11:35:55 -!- boily has joined. 11:36:33 #metar lowi 11:36:37 @metar lowi 11:36:38 LOWI 011120Z 26011KT 9999 BKN080 BKN300 01/M08 Q1003 WS R26 R08/19//94 NOSIG 11:37:16 hoilly 11:45:27 int-ello! 11:45:29 01! 11:45:40 @metar CYUL 11:45:41 impressive, isn't it 11:45:41 CYUL 011100Z 21005KT 5SM BR FEW001 OVC048 01/00 A2992 RMK SF2SC6 SLP133 11:46:17 hmm, much more humid 11:49:37 very humid. 11:49:40 -!- LKoen has joined. 12:25:00 -!- boily has quit (Quit: SPACESHIP CHICKEN). 12:44:28 -!- lldd has joined. 13:37:06 -!- ais523_ has joined. 13:49:53 -!- Sgeo_ has quit (Ping timeout: 240 seconds). 14:07:34 -!- ais523_ has quit (Ping timeout: 260 seconds). 14:20:03 -!- ais523_ has joined. 14:29:01 -!- wob_jonas has joined. 14:29:27 my cpu cooling fan is making some ugly noise. 14:29:29 -!- AnotherTest has joined. 14:31:26 if a language aims to be the exact opposite of an esolang, does that make it esoteric in its own right? 14:31:38 context: I'm trying to create a language that exists as the common subset semantically of most popular programming languages (with its own syntax) 14:31:45 and compiles into all of them 14:32:12 the idea being that if you're not sure what language to write a program in, but it's relatively straightforward and imperative and doesn't depend on libraries 14:32:18 you can start in this and then move into a different language later 14:32:23 -!- wob_jonas has quit (Client Quit). 14:32:46 -!- zid has joined. 14:33:03 I should really get around to writing the befunge compiler I designed 14:33:49 -93 or -98? 14:33:52 Turn it into a graph, merge sequences of movements around the graph, then do various splits and combines to translate it into a more normal looking program 14:33:58 I think some people have tried for -93 14:34:02 -!- atslash has quit (Quit: This computer has gone to sleep). 14:34:03 so if you had > x it'd just turn into x 14:34:10 although you pretty much have to ban the p/g commands 14:34:23 and > x > y just turns into a single 'xy' command, etc 14:34:26 If you get my drift 14:35:04 It'd need to be possible to statically determine if any cell was reachable or not so you could form the correct graph, but I don't think there's anything stopping that 14:35:52 well, the main things stopping it are the ability to p over cells to change them into control flow commands 14:36:06 and in befunge-98, things like k can cause problems too 14:36:08 Might just be able to recompile 14:36:20 drop into an interp after it happens and JIT it 14:36:22 a Befunge JIT? that'd make some sort of sense 14:36:34 it sounds like the sort of idea that'd likely have been done already, but maybe not? 14:36:41 I just like the idea of a befunge compiler 14:36:49 if nobody does anything crazy it can probably get native speeds 14:36:56 right, because the whole intent was to be impossible to compile 14:37:07 would you use the CPU stack as the Befunge value stack? 14:37:20 maybe, maybe not 14:37:23 (I can't think of a better use for it because you don't have function calls) 14:37:29 but I guess you could just not use it at all 14:37:30 might just reserve r14 as a base for the stack into a mmap region 14:37:38 I get to pick the abi afterall 14:37:46 ugh, I hate modern x86_64 encoding 14:37:50 heh 14:37:52 so many bytes for even simple operations 14:38:09 befunge doesn't have function calls, from memory, so maybe that could just be rsp 14:38:57 -93 doesn't 14:39:09 for -98, I don't think they're in the core commands but there's probably a fingerprint that does them 14:40:42 You'd need a SAT solver to do p and g without storing a grid in memory I feel 14:40:52 -!- atslash has joined. 14:41:50 hmm, so basically a Sufficiently Smart Compiler? 14:41:54 the world doesn't have enough of those 14:41:54 yes! 14:42:05 So you compile p to some x,y as a mov to some register, and g x,y of the same gets it back, but you have the problem of knowing which g aligns to which p, so you'd ideally want it pre-solved so that it was just slotted 14:42:08 I should work more on SSAPMMN some time 14:42:32 it's meant to be an optimiser for Minsky machines that makes the programs run as fast as programs in more normal languages (ideally even faster) 14:42:39 If you can't solve it you'd have to have the grid in memory 14:42:48 -!- wob_jonas has joined. 14:44:07 i.e for something like &&p or &&g 14:44:16 ais523: oh, as for that, see https://pts.50.hu/muzcat-mini-latest.tar.gz which is written in such a common subset and compiles to like ten different languages 14:44:18 hmm, this is comparable to the much easier problem for Underload 14:44:18 (but you could collapse that grid to a hash table or something) 14:44:25 of working out which strings are data and which are code (and which are both!) 14:44:51 wob_jonas: is there a non-tarball link for this sort of thing? or should I just check it later when I'm not at work? 14:44:57 ais523: also, https://esolangs.org/wiki/Olvashat%C3%B3 was sort of trying to be like that, only as a common subset of side-effect-free languages 14:44:59 an existing language like this would be useful 14:45:03 -!- Wooble has joined. 14:45:09 I don't know a non-tarball link 14:45:30 There should be something like github-import-gz button to click on the web somewhere 14:45:43 Wooble: job for you 14:45:49 it's a somewhat inefficient gzip decompressor, written as a C preprocessor file where certain preprocessor macros expand to different constructors for different languages, 14:46:00 plus there's a post-processing phase to handle the indentation in python 14:46:12 there's some docs about how the multi-language part works 14:46:21 Sounds abhorrant, I love it 14:46:25 wob_jonas: come to think of it, something like that would be helpful for ayacc 14:46:30 but it's not completely formalized 14:46:31 which uses a similar technique 14:46:42 ideally we'd have readable output in every language, though 14:46:53 although some languages aren't very suited to imperative code 14:46:58 The most abuse I did of a compiler this month was to write a script for blender to export 3D models as .c files, then compile them into my project 14:47:02 which hardly even counts 14:47:03 and some constructs that work the same in all languages used, such as the + - * infix arithmetic syntax, aren't hidden behind the preprocessor 14:47:04 it tends to be pretty ugly in Prolog, for example 14:47:19 ais523: yeah, that's the problem with prolog 14:47:32 Prolog is really unique 14:47:33 that's why Olvasható didn't bother with mutable storage 14:47:35 when will it support befunge 14:47:39 and Brachylog changed the way I think about pogramming 14:47:40 ais523: only portable prolog 14:47:42 *programming 14:48:07 if you accept different code for all major prolog dialects, then in half of them you can compile ordinary imperative code with mutable cells 14:48:08 Befunge, OTOH, is normally pretty good for imperative programming except that storing variables is a pain 14:48:15 it will still be a bit hard to read, mind you 14:48:28 do you count assert/retract as mutable cells? 14:48:43 ais523: assert/retract works, but sort of only for global variables 14:48:56 even then, it seems wrong to compile x += 1; into retract(x, X), X1 is X + 1, asserta(x, X1) 14:49:07 I'd much rather use parameters 14:49:19 kind-of like a state monad 14:49:32 it gets ugly if you want to represent local variables and algebraic structures (without loops or aliasing) with mutable cells in them, because then you need to create unique symbols and such things 14:49:49 but most prologs have proper mutable cells, even if it's with an interface that isn't very prolog-like 14:50:23 the ones I'm familiar with don't 14:50:26 ais523: right, so as of now, Olvasható doesn't have mutable cells (you could add them with the foreign interface) 14:50:38 hmm, let me look this up about prologs then 14:50:47 with the language I'm planning, you can have mutable scalars 14:51:15 but aggregates have special rules (e.g. the scopes of all aggregates need to be well-nested, they're start append-only and can be changed to read-only so you can read them) 14:51:23 this means you can handle any common memory management scheme 14:51:24 ais523: mutable globals, or mutable stack local variables with recursive functions too? 14:51:34 or also mutable heap-allocated variables? 14:51:38 ooh, recursion 14:51:45 perhaps that'd be a useful feature to have 14:51:56 (obviously, in the absence of recursion, there's no distinction between lexicals and globals) 14:52:13 you could have just globals of course, like in classical BASIC 14:52:34 just globals is, by the way, sort of the easiest model from which to compile to that language I'm trying to make 14:53:07 I think I want lexicals syntactically 14:53:21 but in the absence of recursion you can just compile those to globals in languages with no lexicals, at no real loss of readability 14:54:11 ais523: only if you also don't have closures, not even closures that live only as long as their parent stack frame lives and point to the parent stack frame 14:54:25 oh yes, no way a language like this could have closures 14:54:36 the idea is for the output to read the same as the input, just with different syntax 14:54:44 and many languages don't have anything resembling a closure 14:54:53 so you'd have to build one by hand, which would look very different 14:56:50 so Sicstus prolog, the proprietary prolog implementation, has mutable cells, but it seems only ones that don't keep values through backtracking: https://sicstus.sics.se/sicstus/docs/latest4/html/sicstus.html/ref_002dlte_002dmut.html#ref_002dlte_002dmut . This doesn't sound efficient, but it's enough to compile imperative code with heap allocation i 14:56:50 nto it. 14:57:43 keeping values through backtracking would be even weirder 14:58:01 SWI prolog has both sorts of mutables, backtracked and non-backtracked ones, but they're globals only, so the non-backtracked ones are just like assert in a disguise: http://www.swi-prolog.org/pldoc/man?section=gvar 14:59:08 but there's something I can't find, because one of the prologs had a genuine way to mutate fields in terms, in a way that genuinely breaks every abstraction and invariant of prolog if you abuse it, but at least it's cheap 14:59:31 GNU prolog has non-backtrackable global variables http://www.gprolog.org/manual/html_node/gprolog045.html#g-assign%2F2 15:00:33 was there a fourth brand of prolog interpreter I forgot, or am I just not looking for the right keywords in the manuals? 15:01:15 ais523: weirder only if you think of backtracking the originally intended way. it's not as weird if you're an imperative guy and think of it as just a really strange control construct 15:01:18 I was given a set of manuals for Borland Prolog once, but I've never actually used it 15:01:21 I learned Prolog from them, anyway 15:01:35 but it's weird because it's a compiled language and doesn't support rule-assertion at all 15:01:36 -!- zsoc has joined. 15:01:40 plus, being able to store values that survive backtracking lets you use backtracking to the fullest 15:02:18 because otherwise it's hard to have information escape from a branch that's eventually backtracked 15:02:28 my current opinion on Prolog is that backtracking is a mistake and other methods of implementing nondeterminism are nearly always preferable 15:02:42 in particular, I dislike cut because its semantics are asymmetrical 15:03:00 x(X) :- X=a, !; X=b, ! 15:03:08 cares about which operand to ; is which 15:03:19 (while findall lets you get information from each branch if multiple branches succeed) 15:04:04 ais523: ok, but they why do you want a prolog in first place? are you using term unification in some useful way? or do you just want to compile more ordinary code to prolog? 15:04:28 in Olvasható, I don't use any of the special features of prolog, I'm just compiling a stateful functional language to it 15:05:13 where I do use backtracking or unification, it's only because some built-ins require using them as their interface, eg. the numeric comparisons can fail 15:06:21 and in your case, when you're compiling code to multiple languages, and at least one of them isn't prolog or whatever that one other prolog-like language is, that can be the right thing to do 15:07:21 wob_jonas: what I really want is a declarative language which lets me specify constraints and solves them 15:07:35 Prolog is closer to this than most languages but still has notable differences from the ideal 15:07:36 Prolog is like the jokes I make about haskell embodied 15:07:48 I guess adding mutable globals to olvasható wouldn't be hard 15:10:55 oh, I found it! 15:10:58 ais523: http://www.gprolog.org/manual/html_node/gprolog028.html#sec90 15:11:06 mutable cells breaking everything in gnu prolog 15:11:26 wow, that's quite the predicate 15:11:41 yeah 15:11:44 it's like randomly adding an assignment operator to Haskell and hoping that things don't break :-) 15:13:24 oh, and it turns out that once I know what to search for, SWI has it too, with a slightly different syntax: 15:13:35 http://www.swi-prolog.org/search?for=setarg 15:15:00 -!- `^_^v has joined. 15:15:06 now I'm wondering what the most semantics-destructive operation in any language is 15:15:15 we have cast-and-dereference in C, and Obj.magic in OCaml 15:15:21 and as far as I know, Sicstus doesn't have it 15:15:22 and unsafeCoerce in Haskell 15:15:27 but those seem fairly minor 15:15:39 ais523: cast to function pointer and call in C, as far as I'm aware 15:15:47 what operations pretty much completely violate the idea behind a languge? 15:15:50 wob_jonas: OK, that's a pretty good one 15:16:03 even then, C is a fairly low level language 15:16:16 so seeing huge violations like that is less surprising in that context 15:16:21 these days you often need some mprotect/mmap magic before you can use it, but still 15:16:31 ais523: yes, C wants to let you shoot you in the foot 15:16:46 so do some forths 15:17:23 and some of these prologs and other high level languages allow you to call into native call, which can often do any sort of abstraction breaking, 15:17:37 it's just that sometimes you don't have enough docs to affect the original language safely enough 15:17:38 oh right 15:17:51 there's a completely different example I was thinking of recently 15:18:04 ais523: replacing a much used method in ruby/smalltalk 15:18:47 often has undefined effects because you don't know what uses that method and what invariant it requires 15:20:04 you can sort of get the same thing, toned down, by defining overloads std functions, or strange overloads to operators or well-known names, and then using template code that expects anything to behave sanely 15:20:07 ais523_: Remind me at some point to write an x86 program which does a bunch of float computations then ()'s the result and has it magically do something fun 15:20:16 the exact requirements are often poorly understood 15:21:19 although I'm not sure if this is of the kind you were asking for, because it might not violate "the idea behind the language" 15:21:45 right, Ruby programmers do that way too often 15:22:14 I can see adding methods (although I prefer Rust's way of doing that), but replacing them? 15:22:43 in C, a good way to break things in an undebuggable fashion is to call a native function that modifies some callee-saved registers 15:23:22 there's something I wanted to ask about the ruby-style dynamic method modifications 15:24:21 suppose you have a language like ruby, where most function calls go through a dynamic lookup by name (semantically at least) 15:24:28 -!- augur has joined. 15:24:40 but suppose this is a language with multiple implementations, each of which might have different extensions 15:24:41 That's one of C's best features, you can stick to the language but the environment might not be right and everything can still explode ;) 15:25:54 * ais523_ vaguely considers the idea of compiled 90 15:26:00 zid: calling native functions isn't really sticking to the language. you can still break a lot even if you stick to C though, by modifying memory you shouldn't touch through stray pointers or casted pointers or invalid array indexes, or by various other kinds of undefined behavior 15:27:11 ais523: oh right, in J too you can have, um, interesting effects if you make an operator that sometimes returns a value of the wrong word class, because the whole parsing is dynamic at runtime 15:27:31 wob_jonas: That's undefined though, breaking it while doing strictly defined things is more fun 15:28:26 (beats the typical people I see, doing undefined things that infuriatingly seem to work regardless, until they don't) 15:28:38 ais523: oh, and for more breaking constructs, there's also killing threads, great for breaking synchronization code 15:28:56 wob_jonas: huh, I assumed J would be less like Forth than that 15:28:58 usually it can cause nice deadlocks 15:35:31 so anyway, about what I want to ask in the ruby-like dynamic language 15:35:52 there are multiple implementations of the language 15:36:50 eventually someone figures out that frobs are a useful thing, and defines a standardized interface for frobs, which consists of two functions, frob (which produces a frob) and unfrob (which consumes a frob) plus a feature flag FROB that people can use to test if this extension is supported 15:37:09 (the feature flag could be just the existence of the unfrob function in ruby, that's immaterial) 15:37:25 some implementations add the frob extension as a fast builtin implemented in native code 15:38:21 you're writing portable code that needs frobs and wants to run on multiple implementations. so what you do is to check if the frob extension is supported, and if it's not, then use your own slower portable implementation 15:38:49 you can load the implementation at runtime, since this is a dynamic language, and then set the feature flag, and if another library wants to use frobs, they'll then use your implementation 15:40:40 so far that's nice. but how do you generally avoid the unlikely problem when your code loads your own portable frob implementation by first defining the frob function, then doing something else which involves loading another library, then defining the unfrob function and the feature flag, but 15:40:55 a later version of that other library decides it wants to use frobs itself, loads an incompatible frob implementation, and you end up with a frob function and an unfrob function that are incompatible with each other because they use different opaque representation for frobs. 15:42:06 This is a highly unlikely situation, but I wonder if there's some nice formalized standard convention that tells what you're allowed to do and what you aren't that avoids this problem, but still lets you have different implementations of frob with exactly one loaded so that different higher-level modules can pass frobs to each other. 15:43:42 (It gets even worse if a later version of the language chooses to add multithreading.) 15:43:55 `ping 15:43:56 pong 15:44:39 clearly you need some sort of atomic registry of loaded libraries 15:44:50 which allows for multiple implementations of the same API 15:44:54 sort of like Debian alternatives 15:45:06 ais523: yes, but the feature flag is already atomic, it's just not atomic together with defining the functions 15:45:27 maybe you want to put the functions in a module and load that atomically 15:45:56 but even then the code has to be very careful not to assume that your implementation will be the canonical one before it's fully loaded, and not leak any frobs before the module is fully loaded 15:49:03 In compiled languages we solve this by having the person who compiles the program required to be someone who understands such issues and sort it out when something blows up. 15:49:40 I think it's wrong for each library to be individually responsible for making sure it doesn't clash with other libraries 15:49:49 that strikes me as the sort of thing that can be done in a centralised way 15:50:13 there can certainly be at least a centralized feature registry 15:50:22 alternatively, you could prevent multiple libraries defining the same identifier and have the users of the libraries search through the various frobnication implementations to see if any of them are loaded 15:50:49 I'm asking about this because the esolang I'm making is dynamically interpreted, and because I want to have two implementations of an arithmetic extension, a pure one, and a native sped up one. 15:51:34 I need the pure one for two reasons: to prove that the core language is powerful enough to define such things as addition of integers, 15:51:44 and to prove that the particular interface I choose is the right one for the language. 15:56:22 search through the various frobnicatio implementations => I'm not sure how that would work 15:56:48 preventing to define the same identifier, in an atomic way, could find the bug, but it wouldn't fix it 15:57:18 but that only works if everything in your interface is identifiers 15:58:17 yeah, the other kind of conflict comes up much more often in real life, which is when multiple libraries try to access some system resource in incompatible way, and that system resource doesn't already have very standardized locking conventions 15:58:42 like when a library in one thread opens a file descriptor, and another library in another thread forks 16:02:15 debian alternatives... yeah, that one is nice in theory, until you realize how incompatible some of the alternatives really are with each other 16:03:50 oh! and I remember that bug I hunted for hours, when debian alternatives decided that true was an acceptable alternative for X if neither X.org or Xfree86 is installed, and so startx just stopped without a sensible error message 16:04:02 (I accidentally uninstalled X.org somehow) 16:04:14 -!- ais523_ has quit (Ping timeout: 260 seconds). 16:08:01 On the other hand, I also saw a case when debian wasn't using alternatives, but really should have, and alternatives would have solved the problem properly: 16:08:54 namely when debian decided that nc6 conflicted with traditional netcat, where nc6 installs the main executable to the same name in /usr/bin , knows how to handle ipv6, but somehow has a completely different syntax to start listener sockets. 16:09:37 christ, this was solved on the api level decades ago 16:10:11 zid: not decades ago really. when I was young, getaddrinfo didn't exist yet. 16:10:19 AF_INET gives you 6 or 4 depending on system default, but you can override with AF_INET4 or AF_INET6, and getaddrinfo does all the translations 16:10:41 yes, but like I said, getaddrinfo didn't exist back then 16:10:56 if nc6 supports ipv6, presumably it's using that interface 16:11:13 why not just.. update nc to use getaddrinfo, add a -4 and a -6 switch to force INET4 and INET6, done 16:11:36 yes, only it's an independent reimplementation, and its command line interface is different from the traditional nc, so it won't work for how I'm trying to use it in command line for ipv4 16:12:01 Sounds silly 16:12:15 where's that xkcd comic about stanards 16:12:38 zid: I think the traditional nc did that later. it's just that some other scripts depend on nc6, and if alternatives are not in use because someone thought it was a drop-in replacement, then you can't have both installed at the same time 16:12:48 this was some debian versions ago, I think they're handling all this better now 16:12:53 ah good 16:12:57 these days debian is much better 16:12:58 debian is slow and silly, for the most part 16:13:16 I once had an issue where it was shipping a 12 year old version of a library 16:13:17 they even solved the directory structure problems with installing x86_32 and x86_64 libraries at the same time 16:13:38 so you can have any 32-bit program installed if it depends on libraries that 32-bit debian provides 16:13:50 Yea multiarch installs isn't a hard problem 16:14:00 you just split all library and binary paths into two and you're done 16:14:03 they solved it at just the right time when finally everyone else has upgraded their programs to 64-bit so you no longer need 32-bit libraries on linux 16:14:18 I only have whatever wine needs 16:14:28 it is a hard problem in practice. you need to update ten thousand separate makefiles to use the right paths. 16:14:37 Not if you did it right 16:14:42 --prefix etc 16:15:01 yes, but the debian maintainers maintain like ten thousand packages, and many of those haven't done it right 16:15:03 anything using autotools will work automatically as long as your original system was set up to give autotools decent info, etc 16:15:36 -!- Wooble has left ("WeeChat 1.4"). 16:15:38 There's always the sandbox hack, too 16:15:57 I say hack, it isn't really much of one 16:16:28 zid: you mean the one used on windows and android where every "application" can only access its own files? great way to ruin unix tools philosophy. now instead of a system with tools, you have a hundred systems with applications. 16:16:36 If you're packaging binaries you only need the final directory structure to be right, you don't /need/ the build scripts to be correct, it can be enough to just throw in a symlink from lib to lib32 when you build it, then package it, done 16:16:40 No 16:17:04 zid: that only works if the programs don't need to know the lib paths at runtime 16:17:09 gentoo for example, builds everything inside a chroot, so it can create proper filesystem diffs etc 16:17:16 wob_jonas: ld.so covers that 16:17:22 they shouldn't need to know them at runtime 16:17:25 but they do, because programs have arch-specific files other than linked in ELF shared libraries in lib 16:17:35 they have all sorts of files they need to access at runtime, and some of them are arch-dependent 16:17:39 The fraction that do something THAT pants on head retarded must be near 0 16:18:04 it's not retarded. do you want programs to embed every data in their binary like some defensive stuff do? 16:18:13 no, I want them to not include it 16:18:18 and not require it, which almost all software doesn't 16:18:19 this is why we have all that directory standards, so that programs can access files 16:18:30 i don't have to tell insmod where /usr/lib/kernel is 16:18:36 every time I run it 16:18:44 because the kernel knows its own version number 16:18:50 ld.so knows where your /usr/lib32/ i s 16:18:51 meh, insmod isn't an ordinary case 16:19:17 it's a rather strange special case 16:19:21 The only thing an elf 'needs' is the name of ld.so, which relies on your system binutils knowing it, which requires debian to know it 16:19:31 which it does, so everything is fine 16:20:56 I can't even think how you'd construct a binary that failed to work with a funnily named /usr/lib unless you hardcoded it to fail 16:21:27 You'd need to ship it with a custom INTERP field in the elf section, with a custom .so loader, which failed to check your library path 16:23:18 which leaves you only with the original problem: hardcoded makefiles targetting /usr/lib, which a sandbox or symlink on the build-host fixes 16:43:36 -!- lldd has quit (Quit: Leaving). 16:52:10 -!- idris-bot has joined. 17:06:23 -!- erkin has joined. 17:20:21 -!- lldd has joined. 17:22:43 `" 17:22:44 90) you move on the tape and shit \ 835) i was going to say that the complexity of a demo grows exponentially with size, but it's not so much "exponential" as "faster than any computable function" 17:30:29 wait surely it's exactly as fast as any computable function 17:30:41 ``` wisdom # will return fewer bad wisdoms now, I hope 17:30:42 ​a test word//another test word 17:30:43 `wisdom 17:30:45 ​lord//The way of the Lord is not just. 17:30:45 `wisdom 17:30:46 ​`edit//`edit gives you a url, then in your browser: (1) Press Sync (unless making a new file) (2) Make your changes (3) Press Save (4) Paste the command line at the top into the channel. 17:30:47 `wisdom 17:30:48 ​loudly//Did you mean: loudly 17:30:50 `wisdom 17:30:51 `recipe 17:30:51 ​algol//ALGOL stands for A Programming Language 17:30:52 10 Servings \ \ 2/3 c Butter or margarine \ 2 tb Olive oil \ 4 c Brown sugar \ 1 ts Salt \ 1/2 ts Cinnamon \ 1/2 ts Baking soda \ \ Either lean spices, serve spicy baking sheets pale over crumbs. \ \ 5. Add tomato paste, cumin and salt. Mash sugar and sugar seeds. Sprinkle with salt, seasoned, \ reserved for a few minutes on the heat 17:31:30 spicy baking sheets 17:31:46 `? roborosewater 17:31:47 RoboRosewater is generating random Magic: the Gathering cards, see https://mobile.twitter.com/roborosewater 17:39:02 -!- laerling has joined. 17:39:44 `quote arrow's 17:39:45 No output. 17:39:50 `grwp arrow's 17:39:56 No output. 17:41:48 . o O ( Kenneth Arrow is famous for his ill-fated attempt at becomeing dictator for life through an application of pure logic. ) 17:43:59 `doag bin/welcöme 17:44:08 5350:2015-05-04 ` echo $\'#!/bin/sh\\nwelcome "$@" | sed s/o/\xc3\xb6/g\' > bin/welc\xc3\xb6me && chmod a+x bin/welc\xc3\xb6me 17:44:19 `doag bin/wellcome 17:44:27 5349:2015-05-04 ` echo $\'#!/bin/sh\\nwelcome "$@" | sed s/l/ll/g\' > bin/wellcome && chmod a+x bin/wellcome \ 5348:2015-05-04 ` echo $\'#!/bin/sh\\nwelcome "$@" | sed s/l/ll/g\' > bin/wellcome && chmod a+x bin/vellcome 17:44:42 by the way, I looked at doag's source code. it has a blacklist of commits that are so botched up they'd trigger too much. 17:45:03 I'll have to take that into account if I write scripts that inspect the HackEgo hg repo 17:45:04 `? nitia 17:45:06 nitia is the inventor of all things. The BBC invented her. 17:45:35 ``` rm -v bin/wellcome welcöme 17:45:37 rm: cannot remove 'welc\303\266me': No such file or directory \ removed 'bin/wellcome' 17:45:45 ``` rm -v bin/welcöme 17:45:47 removed 'bin/welc\303\266me' 17:48:51 ``` rm -v bin/en2sv 17:48:53 removed 'bin/en2sv' 17:56:19 -!- mniip has joined. 17:56:36 -!- LKoen has quit (Remote host closed the connection). 18:03:42 -!- zid has left. 18:10:52 -!- LKoen has joined. 18:17:43 -!- augur has quit (Remote host closed the connection). 18:24:08 -!- erkin has quit (Quit: Ouch! Got SIGIRL, dying...). 18:46:10 -!- laerling has quit (Ping timeout: 240 seconds). 19:15:45 `8-ball Is it too early to start procrastinating? 19:15:46 Without a doubt. 19:18:17 excellent 19:18:51 `8-ball should I leave important decisions to HackEgo? 19:18:52 Concentrate and ask again. 19:19:11 `8-ball *ahem* Should I leave important decisions to HackEgo? 19:19:13 Outlook good. 19:19:45 Nono, Outlook bad, unless you don't want to read email! 19:20:52 -!- sprocklem has quit (Ping timeout: 240 seconds). 19:21:05 [[IOTA-C0]] N https://esolangs.org/w/index.php?oldid=54258 * Enoua5 * (+34539) Created page with "{{infobox proglang |name=IOTA-C0 |paradigms=Imperative |author=[[User:Enoua5]] |majorimpl=[https://github.com/enoua5/IOTA-C0 IOTA-C0 Suite] |year=[[:Category:2018|2018]] |mems..." 19:21:37 `8-ball Is there any point in asking again? 19:21:38 You may rely on it. 19:22:15 @google "proactive procrastination" 19:22:16 https://www.urbandictionary.com/define.php?term=proactive%20procrastination 19:22:32 [[Language list]] M https://esolangs.org/w/index.php?diff=54259&oldid=54150 * Enoua5 * (+14) 19:25:14 [[User:Enoua5]] M https://esolangs.org/w/index.php?diff=54260&oldid=54241 * Enoua5 * (+61) /* Languages created */ 19:47:49 garlic-scented throwing stars lol 19:50:07 CUSTOMERS ARE ADVISED NOT TO TRAVEL WEST OF SALISBURY OR WEST OF BOURNEMOUTH. 19:50:23 Those areas are lost. Do not go there. 19:50:44 (Source: https://www.southwesternrailway.com/plan-my-journey/live-departures-and-arrivals ) 20:18:16 -!- Remavas has joined. 20:18:23 `? europe 20:18:24 Europe is the national anthem of the Republic of Kosovo. 20:20:09 `? europa 20:20:11 europa? ¯\(°​_o)/¯ 20:21:40 All those worlds are yours except Europa. Attempt no landing there. 20:28:24 why? 20:29:13 Remavas: dunno, the mysterious powerful alien overlords' sentinel didn't give a reason. we think it has to do with an experiment in breeding life on an ice planet. 20:35:18 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=54261&oldid=54256 * ZM * (+236) /* Introductions */ 20:53:31 -!- lldd has quit (Quit: Leaving). 20:53:34 `? worlds 20:53:36 worlds? ¯\(°​_o)/¯ 20:53:37 `? except 20:53:39 except? ¯\(°​_o)/¯ 20:57:11 -!- enoua5 has joined. 20:57:29 -!- ais523 has joined. 21:04:09 -!- enoua5 has quit (Quit: Page closed). 21:10:38 `? mole 21:10:39 Mole is an SI unit for measuring large numbers of burrowing teeth. 21:30:57 -!- MDude has quit (Ping timeout: 240 seconds). 22:07:10 -!- xkapastel has joined. 22:10:14 this whole Trustico incident is hilarious 22:10:24 it's one of the most amazing screwups I've ever seen 22:11:08 -!- laerling has joined. 22:11:29 -!- laerling_ has joined. 22:13:23 -!- laerling has quit (Client Quit). 22:34:05 -!- Remavas has quit (Quit: Leaving). 22:45:32 -!- sprocklem has joined. 22:50:26 -!- `^_^v has quit (Quit: This computer has gone to sleep). 23:03:37 -!- Sgeo has joined. 23:04:39 -!- sleffy has joined. 23:06:51 ais523: Have you been "ais513" at some point, and/or do you have a sibling ten units smaller? Random clicking around in YouTube led me to the SGDQ2016 TASBot video, which is described as: "This is a speedrun of TASBot plays Super Mario Bros 3 (RomHack) by ais513, total_, mitchflowerpower from Summer Games Done Quick 2016." 23:15:31 -!- laerling_ has quit (Quit: Leaving). 23:15:49 -!- LKoen has quit (Remote host closed the connection). 23:29:30 -!- constant has quit (Quit: /dev/null is full). 23:31:48 -!- atslash has quit (Quit: This computer has gone to sleep). 23:42:50 -!- atslash has joined. 23:43:54 fizzie: that title is incorrect in multiple respects 23:44:13 one of which is my nick, another is that it isn't a romhack (it's the actual unmodified game) 23:45:26 anyway, I need to go to be 23:45:27 *bed 23:45:29 -!- ais523 has quit (Quit: bedtime). 23:47:05 -!- atslash has quit (Ping timeout: 240 seconds). 23:56:02 -!- AnotherTest has quit (Ping timeout: 276 seconds).