< 1561939370 907414 :b_jonas!~x@catv-176-63-24-84.catv.broadband.hu QUIT :Quit: leaving < 1561940844 720172 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :How to reset the file system journal? I get error messages such as "JBD2: Spotted dirty metadata buffer (dev = sda3, blocknr = 0). There's a risk of filesystem corruption in case of system crash." Will resetting the journal fix this error? The filesystem is working OK despite the error message. < 1561941366 72510 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(Also, can I reset the journal without losing data?) < 1561943541 735552 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Silly syntax question: Is there a language that uses sigils for types? < 1561943560 472484 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :how do you define a sigil < 1561943581 691908 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :when people complained about Rust having ~T and @T and &T they usually called 'em sigils < 1561943583 256704 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Well, I mean any syntactic marker other than uppercase. < 1561943585 82577 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :and &T still exists < 1561943595 550668 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :and C++ has it too < 1561943596 519669 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, I mean marking that something is a type syntactically. < 1561943599 576613 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :ah < 1561943615 609867 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :i don't know < 1561943634 94770 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :kmc: I used to think that your assessment of C++ as an esolang was a bit silly but nowadays I mostly think it's just true. < 1561943670 500897 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :(I mean, I used to think it was slightly true and somewhat silly. But now I think it's much more clearly true.) < 1561943803 825555 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :what changed your mind? < 1561943869 643617 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Something like realizing what a scow C++ is and how it got to be that way. < 1561943878 215952 :arseniiv_!~arseniiv@136.169.231.226 QUIT :Ping timeout: 246 seconds < 1561943895 664437 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :BASIC uses suffixes for types (although you can also use AS to specify types), and so does OAA (a compiler that targets the OASYS text adventure games VM) < 1561943940 696714 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :My story for things like templates is, originally they added some simple template features that weren't that terrible, just a replacement for C macro templates or something. < 1561943951 137535 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :like A$ for a string? < 1561943981 495774 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :shachaf: SFINAE is maybe the prototypical example in my mind of a feature that turned out to be much more useful than intended, in a bizarre way < 1561943990 395379 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Then because of the (legitimate!) latent demand for metaprogramming features, people started doing complicated things with templates. < 1561943991 974330 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Yes, A$ names a string variable in BASIC. < 1561944005 757604 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :Haskell typeclasses are sort of like that too but the unanticipated applications of typeclasses are mostly fairly reasonable to use < 1561944027 500805 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :The C++ committee saw people doing these things, and instead of adding reasonable metaprogramming features, they decided to add tempalte features to allow for even more ridiculous metaprogramming nonsense. < 1561944036 583635 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yep, things like SFINAE. < 1561944039 58193 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :pretty much < 1561944047 976248 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(In OAA, not only are there suffixes for data types, but also prefixes; for example ,A$ means a local string variable, and %A$ is a global string variable, and &A$ is a method that returns a string.) < 1561944049 460213 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :otoh, it means that C++ metaprogramming is much more type-aware than many languages' systems < 1561944051 254774 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :And now everyone is stuck in this absurd local optimum which is so far from anything reasonable. < 1561944068 626980 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :the ability to do compile-time dispatch on various properties of a type is very powerful < 1561944072 151658 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :and very useful in a systems language < 1561944083 886604 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :to enable optimizations, etc < 1561944099 634667 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :there is probably a way to design a sensible type-aware metaprogramming system < 1561944101 871146 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but < 1561944107 243740 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Anyway there's the esolang attitude of "given these ridiculous constraints, how can I accomplish all sorts of things?" that leads people to enjoy template metaprogramming. < 1561944119 931769 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :it sounds like a hard problem to me < 1561944120 16839 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It's not about doing good engineering but about solving fun puzzles. < 1561944126 591265 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :macro systems are already hard enough and they are not type-aware < 1561944130 144568 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :(for the most part) < 1561944145 396721 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :C++ templates can't even be parsed without instantiating them. It's so bad. < 1561944147 97130 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :and I don't just mean "knowing the types of generated expressions" but things like type traits. < 1561944150 831115 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :this is true < 1561944154 770603 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :the syntax is wretched < 1561944164 809136 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :By the way I agree that pretty much the same thing happened in Haskell. < 1561944167 349051 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but as weird as templates are < 1561944175 640530 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :they have some essentially unique capabilities < 1561944184 391194 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :There were some reasonable type system features and then people were all about doing things in the type system and writing in this silly Prolog variant. < 1561944194 994917 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :that are very useful in C++'s niche < 1561944196 350497 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :(Meanwhile C++ people are writing in this silly ML variant. Golly.) < 1561944197 232515 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :I had the other idea (I mentioned before), types with characteristics, and the values of characteristics of types can be macros; this can be used for type-aware metaprogramming. < 1561944198 494633 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :yes that is true < 1561944255 39763 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I suspect macros or code generation are much better than a lot of uses of C++ templates. < 1561944265 350314 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :many of them < 1561944271 94771 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(Such type-aware metaprogramming actually becomes mandatory to get it to work at all, although most of it is put in standard header files (both system-dependent and system-independent), so you normally do not need to deal with it.) < 1561944271 436634 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but many others can't be done with code generation < 1561944272 891177 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Did you know edwardk once implemented IEEE floating point arithmetic in C++ templates to generate constants or something? < 1561944295 362024 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :e.g. the ability to provide one of multiple implementations of a generic function depending on some property of the type(s) it is instantiated with. < 1561944304 762475 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :which, again, is really useful in high performance systems code < 1561944311 408609 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :This is 100% about solving fun puzzles rather than solving actual problems. < 1561944340 267986 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think static dispatch based on types is a reasonable feature but C++ has such a bad implementation of it. < 1561944343 692914 :int-e!~noone@int-e.eu PRIVMSG #esoteric :with enough templates you can compile straight into c-like code that the compiler can actually digest... < 1561944371 746262 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Another way that C++ is ridiculous it that it pretty much requires an optimizer to generate reasonable code. < 1561944380 743291 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :C code is pretty much fine with no optimizations. < 1561944401 376207 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :I wonder if maybe metalanguages (whether designed or evolved) are the wrong way to do things, and instead we should have languages with no meta/object-level distinction, which have powerful introspection facilities, and compile-time partial evaluation < 1561944413 761214 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :C++ already has powerful constexpr too < 1561944422 594300 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :this would avoid the need for both < 1561944447 136922 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :a simplistic way to put this is to have eval as a constexpr function < 1561944456 327454 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :which wouldn't necessarily be present at runtime < 1561944459 866624 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :i mean, probably wouldn't be < 1561944477 362595 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Zig's "comptime" seems pretty reasonable to me and it's a much simpler language than C++. < 1561944490 812499 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :shachaf: re optimizations, while that is inconvenient, it is not a design flaw of C++ but rather a consequence of the problem it's trying to solve, which is much different from the problem C is trying to solve < 1561944495 127220 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :C is a low-abstraction language < 1561944497 174886 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :kmc: I think that is good for interpreted languages, but programming languages that compile code into native code I think will need the ability to do separate metaprogramming (although metaprogramming could be done using the same programming language as the mainly compiled code, if needed). < 1561944506 466028 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :C++ is a very high-abstraction language which nevertheless tries to produce C-level performance < 1561944517 609805 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :this means a huge need for optimizing out those abstractions < 1561944520 939548 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think it's clearly true that you should be able to run arbitrary code in the same language at compiletime (though I could think of some arguments against it, I guess). < 1561944521 212844 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :it's the same in Rust < 1561944528 359379 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :even though Rust is less insane than C++ in many ways < 1561944591 335590 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think if you had macros or something generating reasonable C-style code instead of templates, you could get much better performance for abstractions. < 1561944595 73651 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :zzo38: I am thinking in terms of Futamura projections, where a compiler is a partial evaluator for an interpreter < 1561944607 611003 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Anyway I'm not opposed to optimization, I just think C++ has a pretty bad attitude toward it. < 1561944618 587797 :int-e!~noone@int-e.eu PRIVMSG #esoteric :. o O ( Futurama projections. ) < 1561944622 195065 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :shachaf: that wouldn't allow you to (for example) turn chains of iterator HOFs into flat loops < 1561944627 985697 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :which is something both C++ and Rust can do < 1561944634 265397 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :The C++ coroutine proposal says that coroutines sometimes need to allocate but they expect that an investment of $x million into research-level optimizations will make that not a problem. < 1561944635 395809 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :int-e: good news, everyone! < 1561944641 641475 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :lol < 1561944679 884091 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :By the way I think my current opinion on optimizations is that they should never change asymptotic performance of code, only constant factors. < 1561944726 303044 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :This means that e.g. tail-call elimination is bad -- if you want tail calls to turn into jumps, you should have a language construct that guarantees a jump and fails if it's not possible (because of a destructor or whatever). < 1561944739 335722 :int-e!~noone@int-e.eu PRIVMSG #esoteric :?! < 1561944739 426404 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :Maybe you meant: v @ ? . < 1561944758 441633 :int-e!~noone@int-e.eu PRIVMSG #esoteric :So you're looking at all the resources, including stack usage, here? < 1561944772 778755 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think so? < 1561944791 411235 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Of course this depends on your goal. If you don't care about predictable software it probably matters less. < 1561944795 922778 :int-e!~noone@int-e.eu PRIVMSG #esoteric :I was going to agree, but tail call optimization is so benign... and hard to get wrong... I want it. < 1561944802 675395 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 268 seconds < 1561944815 185431 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I want it too! So there should be some kind of language construct that guarantees it. < 1561944864 202722 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I suspect tail recursion is just in a language like C or C++, though. Much better to write while (true). < 1561944879 738307 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Tail call elimination is more useful for mutually recursive things like parsers. < 1561944938 8724 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :there's a proposal for Rust that's been kicking around for a long time < 1561944941 738726 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :for a syntax like "become f(x)" < 1561944950 825610 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yes, that's the kind of thing I mean. < 1561944953 366007 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :this would be a tail call to f(x), but also runs destructors /before/ the call < 1561944960 756288 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :so it has different semantics from a normal call < 1561944962 533534 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :(Assuming it means what it looks like, I haven't seen the proposal.) < 1561944970 207252 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, not what I was thinking of, but that works too. < 1561944974 620789 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :which is why it can't be done as an optimization < 1561944978 108463 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1561944980 691749 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :and that's probably wise < 1561944987 614852 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :LLVM allows explicitly specifying tail calls or not tail calls. < 1561944999 197068 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :That seems like a pretty strange feature to me. < 1561945001 814532 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :in a lot of cases, it's fine to run destructors before the tail call, and of course anything moved into the tail call isn't destroyed < 1561945075 936516 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(Since my idea of the program language is that you can use all features of LLVM, this means that specifying explicitly the tail call or not tail calls is possible to do.) < 1561945122 483629 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :since Rust has memory safety by default, destroying stuff before the tail call isn't going to get you in trouble wrt passing a pointer to that stuff < 1561945171 704271 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :kmc: By the way, I was thinking about something you said a while ago, about the benefits of dynamically typed programming languages. < 1561945177 855689 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :(and that extends to things like RAII lock objects too, because the only way to access the thing protected by a lock is through the lock object or a reference whose lifetime is tied to the lock object) < 1561945181 921386 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :(which is a really cool design) < 1561945224 682563 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :You gave some examples that I don't remember, but one of them was something like "copy all the fields of object x into object y that has a different type". < 1561945269 802271 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think something like that is much better covered with some kind of dynamic-ish compiletime code that generates statically-typed runtime code to actually copy the fields. < 1561945355 749790 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :There's no reason you couldn't write "for each field of object x", it just has to be a compiletime loop rather than a runtime loop. < 1561945367 1778 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I feel like this is true for a lot of the benefits of dynamically-typed languages. < 1561945367 320063 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :yes but should we even have such a distinction < 1561945376 119446 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :or write a runtime loop and rely on the compiler to optimize it < 1561945384 437850 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :possibly with an annotation to throw a compiler error if it can't < 1561945388 699837 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :A runtime loop that uses reflection? < 1561945391 314834 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :yeah < 1561945409 482135 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'm a bit skeptical. < 1561945414 689080 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :that's what i expected < 1561945424 66070 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :based on your opinions above re: C++'s reliance on optimization < 1561945425 109656 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :If nothing else, I want it to be a type error at compiletime if one of the fields in x doesn't exist in y. < 1561945439 32051 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :that can be arranged < 1561945447 112116 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, that argument isn't on performance grounds. < 1561945449 62650 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :it would be a "runtime error" in the constexpr engine < 1561945455 362842 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :which is a compile-time error < 1561945466 49493 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :OK, so that sounds like the right thing? < 1561945470 869437 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :and again, you can say such and such function must evaluate out at compile time < 1561945477 411105 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :so you won't get any surprise runtime errors < 1561945483 881691 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but semantically, you only have object-level code and no meta-code < 1561945485 186587 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :idk < 1561945490 961526 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'm happy with writing "compiletime for (name, type : fields(x)) { ... }" < 1561945495 588547 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :this conversation is very interesting but i think i will go do other things < 1561945497 837432 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :<3 < 1561945527 972475 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It seems kind of odd to require that thing to always be interpretable with runtime semantics, since there are all sorts of things the compiler has access to that the running program might not. < 1561945533 920055 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :sgtm < 1561945680 813269 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :kmc: You probably didn't see my conversation about arguments the other but I have a bunch of ideas of things along those lines that could exist easily at compiletime but don't make much sense at runtime. < 1561945737 123313 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I don't think macros that operate on an AST really make sense at runtime, but you could easily have them at compiletime (with the same language). < 1561945810 31191 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`? cats < 1561945813 800148 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :Cats are cool, but should be illegal. < 1561945855 721764 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Yes, and is what I intended you can have macros that operate on the AST at compile time only < 1561945974 945731 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :ASTs aren't the only kind of value I'm thinking of, though. < 1561946639 340126 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Yes, there are other stuff that you can do too, such as types and type characteristics < 1561947315 999797 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :fexprs < 1561947318 39433 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :fexprs are love < 1561947323 73796 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :fexprs are you > 1561947545 253940 PRIVMSG #esoteric :14[[07Don't14]]4 M10 02https://esolangs.org/w/index.php?diff=63815&oldid=63813 5* 03A 5* (+66) 10 < 1561947845 291103 :Hooloovo0!Hooloovoo@sorunome.de PRIVMSG #esoteric :fexpr is you < 1561948362 164461 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :In general there are many language features you can use to do compiletime-ish things at runtime. < 1561948433 75788 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Often they have different semantics, and almost always different performance, so I'm not sure whether always making the code look identical is particularly valuable. < 1561948473 183672 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Ironically C++ is quite bad at a simple thing I want to be able to do, which is to pass an argument either at compiletime when it's known or at runtime or at runtime when it's not. < 1561948582 192804 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :(It's ironic because I think that kind of thing is nominally what C++ is trying to accomplish.) < 1561948776 642101 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :well that's one reason why people rely so much on inlining < 1561948779 296615 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but it's not ideal, yes < 1561948846 398742 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Well, I'm also thinking of the variant where something is either a field on a struct or a value known at compiletime. < 1561948865 475956 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :E.g. the size of an array. < 1561948903 869322 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Even a lot of inlining won't prevent the value from being needlessly stored in memory. > 1561948908 633967 PRIVMSG #esoteric :14[[07User talk:A14]]4 M10 02https://esolangs.org/w/index.php?diff=63816&oldid=63803 5* 03A 5* (-19) 10I have to make edits every day. < 1561949024 69711 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :maybe i'll cook some delicious food > 1561949715 44006 PRIVMSG #esoteric :14[[07User talk:A14]]4 10 02https://esolangs.org/w/index.php?diff=63817&oldid=63816 5* 03A 5* (+2823) 10/* Write some nonsense here */ > 1561950609 665075 PRIVMSG #esoteric :14[[07User talk:A14]]4 M10 02https://esolangs.org/w/index.php?diff=63818&oldid=63817 5* 03A 5* (-332) 10/* The magic of H */ < 1561950818 601595 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :In my NNTP client software I put in the following SQL code: INSERT INTO `NEWSGROUPS`(`NAME`, `LAST`) SELECT `NAME`, `LAST` FROM `_UPDATEGROUPS` WHERE 1 ON CONFLICT(`NAME`) DO UPDATE SET `LAST` = EXCLUDED.`LAST`; the conflict is actually guaranteed; it will never add new rows to the table. Is this the best way or is there a better way to do what I am trying to do here? > 1561950926 732275 PRIVMSG #esoteric :14[[07User talk:A14]]4 M10 02https://esolangs.org/w/index.php?diff=63819&oldid=63818 5* 03A 5* (-209) 10/* H */ > 1561951407 494968 PRIVMSG #esoteric :14[[07User talk:A14]]4 M10 02https://esolangs.org/w/index.php?diff=63820&oldid=63819 5* 03A 5* (+1189) 10/* H Reference */ > 1561951496 578649 PRIVMSG #esoteric :14[[07User talk:A14]]4 10 02https://esolangs.org/w/index.php?diff=63821&oldid=63820 5* 03A 5* (+15) 10/* Adding if statements and functions without adding any keywords */ > 1561951958 816824 PRIVMSG #esoteric :14[[07User talk:A14]]4 M10 02https://esolangs.org/w/index.php?diff=63822&oldid=63821 5* 03A 5* (-71) 10/* H Quine via adding one operator */ > 1561953805 834285 PRIVMSG #esoteric :14[[07User talk:A14]]4 M10 02https://esolangs.org/w/index.php?diff=63823&oldid=63822 5* 03A 5* (+166) 10/* H Quine via adding one operator */ > 1561954357 753465 PRIVMSG #esoteric :14[[07User talk:A14]]4 M10 02https://esolangs.org/w/index.php?diff=63824&oldid=63823 5* 03A 5* (+192) 10/* H Quine via adding one operator */ > 1561954562 445714 PRIVMSG #esoteric :14[[07User talk:A14]]4 M10 02https://esolangs.org/w/index.php?diff=63825&oldid=63824 5* 03A 5* (+18) 10/* H Quine via adding one operator */ > 1561956356 507948 PRIVMSG #esoteric :14[[07User talk:A14]]4 M10 02https://esolangs.org/w/index.php?diff=63826&oldid=63825 5* 03A 5* (+73) 10/* H Quine via adding one operator */ < 1561957824 928057 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :shachaf: http://www.worldinhome.com/what-is-language-c/ < 1561957827 281965 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :"In an effort to keep up the movability of each the C and C++ languages, the Yankee National Standards Institute (ANSI) developed a type of consistency for C and C++ programming." < 1561958421 830864 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :i'm cooking delicious food and it's going to be tg < 1561958714 254082 :sprocklem!~sprocklem@unaffiliated/sprocklem JOIN :#esoteric < 1561959562 961129 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :ooh, what is it < 1561959751 225234 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :some nonsense with onions and tomatoes and rice and a trillion spices < 1561960030 856663 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :that sounds nice < 1561960089 349728 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :it's going to be so good < 1561960792 926678 :xkapastel!uid17782@gateway/web/irccloud.com/x-doouscodqifisovn JOIN :#esoteric < 1561961272 571870 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :I hope you enjoy it :) < 1561961309 420228 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :it is good but i think i used too much water for the rice < 1561961335 15284 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :i was going to award myself a billion points for this dish but i think i'm only going to give myself about 2 million < 1561961345 278000 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :it's still tg < 1561961397 628839 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :I'm tired from a busy weekend and I'm going to sleep < 1561961409 166125 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :I hope to earn a billion sleep points < 1561961416 335379 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :good night < 1561961439 878563 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :you too :) < 1561967353 471227 :APic!apic@apic.name QUIT :Ping timeout: 245 seconds < 1561968565 300971 :mniip!mniip@freenode/staff/mniip QUIT :Read error: Connection reset by peer < 1561968687 869556 :mniip!mniip@freenode/staff/mniip JOIN :#esoteric < 1561968847 267376 :AnotherTest!~turingcom@ptr-82l26zcdc6imrwoapg3.18120a2.ip6.access.telenet.be JOIN :#esoteric < 1561971334 703839 :salpynx!794954f8@121.73.84.248 JOIN :#esoteric < 1561973127 266618 :arseniiv_!~arseniiv@136.169.231.226 JOIN :#esoteric < 1561973276 887622 :arseniiv_!~arseniiv@136.169.231.226 NICK :arseniiv < 1561973319 272281 :arseniiv!~arseniiv@136.169.231.226 PRIVMSG #esoteric :@metar UWUU < 1561973320 546587 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :UWUU 010900Z 32006MPS 9999 OVC011 15/14 Q1003 R32L/0///60 NOSIG < 1561973345 559796 :arseniiv!~arseniiv@136.169.231.226 PRIVMSG #esoteric :what kind of summer is THAT < 1561973399 40551 :arseniiv!~arseniiv@136.169.231.226 PRIVMSG #esoteric :it seems the Earth tilted overnight in an unfortunate fashion and I am now living in a polar region < 1561975128 233102 :xkapastel!uid17782@gateway/web/irccloud.com/x-doouscodqifisovn QUIT :Quit: Connection closed for inactivity < 1561975792 975544 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :shachaf : "This means that e.g. tail-call elimination is bad" -- so you want "proper tail recursion", rather than TCO ? < 1561975887 202217 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Do I? < 1561975896 684699 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What is "proper tail recursion"? < 1561975981 495104 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :imho, it's somewhat of a misnomer, since it's not about recursion, per se < 1561976041 439029 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :it's a language property in Scheme, that an implementation is to be able to handle an unbounded number of active tail calls, in bounded space (so it's about operational semantics) < 1561976063 61972 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :doesn't mandate a particular way to implement that < 1561976099 60778 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :the point is that it's not an optimization, something which an implementation may or may not choose to do. it's something you can rely on < 1561976218 976971 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :also, given that there's a relatively simple lexical (conservative) check you can do in your head to check if a call is in tail position wrt to some wrapping context, it's something you can practically use < 1561976345 538092 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :As I mentioned, I don't think tail recursion is very important, at least in a language like C -- you can just write while (true). < 1561976381 53160 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think I'm fine with the "foo() { return bar(); }" always being two stack frames. Or it can always be one stack frame, as long as it's predictable. < 1561976415 663276 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :In a language like C++, "foo() { Thing x; return bar(); }" could run the destructor for x after bar(), in which case it looks like a tail call but isn't. < 1561976442 631347 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :iirc MIT Scheme (?) keeps around the last hundred or so calls to (distinct) procedures, for debugging purposes, which is fine. and Chicken produces C code which never returns normally (using CPS. instead the "stack" is GCed and compacted, when full, iirc. so it's basically a heap) < 1561976460 851485 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I was suggesting a version of "return" where it's an error if it can't be implemented with a jump instead of a call. < 1561976492 325455 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :i agree about predictability < 1561976515 138202 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :ACTION nods < 1561976544 960716 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I have the same opinion about things like fusion in Haskell. < 1561976568 488592 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :yes < 1561976592 830506 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I don't really like "best-effort" optimizations that people need to rely on. If you want your thing to be compiled into a particular thing, you should express it in terms of something that guarantees it. < 1561976663 866244 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :my ideas about "unboxed variants" (by which i don't mean putting the tag in a separate register) are going in the direction of having the system complain statically if you don't get the expected fusion / virtual data structures you expect < 1561976674 166615 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :aye < 1561976735 213624 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What are your ideas about "unboxed variants"? < 1561976755 218673 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I can't remember whether you told me once when I was all about wanting unboxed sums in GHC. < 1561976846 887599 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :"Multi-return function call" by Olin Shivers in 2004-09,2006-0[79] at , which is about multiple alternative continuations, and a notion of "semi-tail calls" < 1561976881 371217 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Right, I remember you were saying something about multiple continuations. < 1561976917 175008 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :i had an example (translated from that paper into, imho, more suitable terms) in pseudo-Haskell, on .. < 1561976943 760158 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Can't trust anyone. < 1561976961 591575 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :ACTION smiles < 1561976967 390933 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :There was one paste I would refer to every couple of years on hpaste.org, but fortunately I downloaded a copy before it disappeared. < 1561976985 465838 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, maybe sometime you can help me think about efficient implementation of coroutines. I feel like almost no one implements them in the right way. < 1561977057 942201 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :imagine if you had a function with e.g. return type `Either Integer [Integer]'. it's common for a caller to immediately do a `case' analysis on the result (or else just pass the result on, for its caller to check, &c.) < 1561977096 500227 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :In that case you can pass continuations, right. < 1561977118 698667 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Isn't the cost of an indirect jump instead of a call-return and conditional jump pretty high? < 1561977119 893065 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :so the idea is that we take the continuation of the call, which consists of this `case' (with some wrapping context), and we unbox it, passing the branches as separate, alternative, return points < 1561977248 572461 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :well, if you're doing recursive loops, it can commonly be the case that you'd just pass on most of the return points, unchanged (that'd be a semi-tail call). and so if you return via such a continuation, you'd skip most of the activation frames which would otherwise have to interpret the tag < 1561977283 4784 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :(so this seems a little bit related to codensity, yes) < 1561977319 500154 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :but it would remain to be seen how well it would work out in practice, yes > 1561977352 163649 PRIVMSG #esoteric :14[[07Special:Log/upload14]]4 upload10 02 5* 03Cortex 5* 10uploaded "[[02File:Cheese Dodecahedron.jpeg10]]": Cheese Dodecahedron. < 1561977386 983364 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Hmm, what would the code for that look like? < 1561977404 964217 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'm imagining something where the alternative would also be a lot of tail calls with no case analysis except at the end. < 1561977415 418151 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :i also have a feeling that one could involve composable continuations here, to get "unboxed lists" (e.g.), in which the list structure is virtual. iow we'd get a kind of fusion, with static error if we don't get the fusion we expect > 1561977424 605459 PRIVMSG #esoteric :14[[07User:Cortex/Cheese Dodecahedron14]]4 N10 02https://esolangs.org/w/index.php?oldid=63828 5* 03Cortex 5* (+59) 10Created page with "[[File:Cheese Dodecahedron.jpeg|thumb|Cheese Dodecahedron]]" < 1561977495 392225 :brett-soric!~brett@ppp203-122-220-93.static.internode.on.net JOIN :#esoteric < 1561977749 511357 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :i'm imagining using ordinary pattern-matching syntax, e.g. with `case', but on values of a type of another kind. there'd possibly need to be some extra syntax for passing on the same alternative continuation < 1561977843 613266 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :if you have a call `case foo ... of Left# x -> ..x..; Right# y -> Right# y', the intention is to pass on the `Right#' continuation to `foo ...', not eta expanding it. so it would perhaps be nice to have some more obvious way to indicate that < 1561977938 50364 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :(if one could "use function extensionality" to write that branch simply as `Right# -> Right#', then that might work nicely) < 1561978008 472466 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :i'm not really sure of what situation with "lot of tail calls with no case analysis except at the end" you were imagining ? < 1561978147 727552 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :(btw, instead of `Either# Integer [Integer]', you can use `forall o. (Integer -> o) -> ([Integer] -> o) -> o'. but then you have to use explicit CPS. and perhaps not allowing them to be just any old function would allow more efficient implementation ?) < 1561978242 426036 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :oh, and i should probably try to look more into different implementations of coroutines. what would you say is better and worse ways that have been used ? < 1561978642 331845 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`? password < 1561978643 328369 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :The password of the month has been erroneously sent to the NSA. We apologize for the inconvenience. < 1561978660 446171 :int-e!~noone@int-e.eu PRIVMSG #esoteric :. o O ( The password of the month is highly controversial. ) < 1561978819 964968 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :ski: I have wondered about something related to this, now that I think of it, where you pass multiple return addresses to a function. < 1561978829 381337 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I don't remember the context right now, though. < 1561978910 615252 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Let me see. < 1561978951 887432 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'm not sure I can say everything about coroutines, but I can say a bit. This is in the context of a C-like language. < 1561979017 400821 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :One approach, of course, is to allocate a stack for each coroutine, and switch between them with a function call that saves and restores a few registers (including the stack pointer and return address). < 1561979049 938157 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :This is nice because you can just call any old function and even a nested function might switch away from the coroutine and then switch back later. < 1561979079 574941 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :(For example asynchronous I/O is one application of this -- you can make functions that look just like calls that block a thread but they're just blocking the coroutine -- functioning as a userspace thread.) > 1561979168 125850 PRIVMSG #esoteric :14[[07User talk:A14]]4 M10 02https://esolangs.org/w/index.php?diff=63829&oldid=63826 5* 03A 5* (+136) 10/* H Reference */ < 1561979392 144121 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :This has a few downsides, mostly related to this being an unexpected use of the stack pointer. < 1561979435 22680 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :You have to allocate some amount of stack space up-front, and the compiler and non-coroutine-aware functions have no reason to be sparing with it. < 1561979538 160201 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Worse, if you have a lot of coroutines, every time you do a context switch, your stack probably won't be in the cache. If you call some function that uses a bunch of stack space that doesn't need to be saved between context switches, that'll be a bunch of unnecessary cache misses. < 1561979867 659345 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Does that seem reasonable? < 1561979938 987560 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :ACTION nods > 1561980183 173005 PRIVMSG #esoteric :14[[07User talk:A14]]4 M10 02https://esolangs.org/w/index.php?diff=63830&oldid=63829 5* 03A 5* (+43) 10 > 1561980250 474389 PRIVMSG #esoteric :14[[07User:A/H spec14]]4 N10 02https://esolangs.org/w/index.php?oldid=63831 5* 03A 5* (+3212) 10Created page with "== H Reference== Credits to [https://codegolf.meta.stackexchange.com/questions/2140/sandbox-for-proposed-challenges/17827#17827 Programming Puzzles and Code Golf StackExchange..." > 1561980252 413048 PRIVMSG #esoteric :14[[07User talk:A14]]4 10 02https://esolangs.org/w/index.php?diff=63832&oldid=63830 5* 03A 5* (-3213) 10 < 1561980260 765087 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, you were still here. < 1561980305 432925 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :So the thing a coroutine does, of course, is implement a state machine, where the state is represented in the stack. < 1561980372 229483 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :So you might implement it yourself manually -- struct Coroutine { enum State state; int x; char y; bool z; }; or something. < 1561980390 80046 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :And the question is how to get the compiler to generate that for you. < 1561980415 477839 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Then your program can keep using the regular stack for regular things, and only use the "coroutine stack" for things that explicitly need to be saved between calls. < 1561980454 9011 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :In fact the compiler can probably generate something more efficient than that struct, because it can do standard liveness analysis and allocate space in the state struct better. < 1561980502 494502 :brett-soric!~brett@ppp203-122-220-93.static.internode.on.net PART :#esoteric < 1561980508 856319 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :So it might look more like struct Coroutine { enum State state; char buf[REIFIED_STACK_SIZE]; };, where the compiler allocates space out of buf. < 1561980538 460022 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Another thing is that "enum State" could just be an instruction pointer. < 1561980561 172568 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :That seems like the sort of thing you'd want. Right? < 1561980581 56250 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :hm, i suppose i'm not following how this state machine thing connects to the "pass the baton" view of coroutines ? < 1561980647 691325 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :A concrete example would be useful here. < 1561980663 380626 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What do you mean by "pass the baton"? < 1561980674 428907 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :(I mean a concrete example from me, of course.) > 1561980950 594792 PRIVMSG #esoteric :14[[07Esolang:Community portal14]]4 M10 02https://esolangs.org/w/index.php?diff=63833&oldid=58895 5* 03A 5* (-4) 10"PPCG" is not called that anymore... I can only find this reference. < 1561980968 254102 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :@time < 1561980970 873014 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :Local time for shachaf is Mon Jul 1 04:36:08 2019 < 1561980979 210864 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think I'll go to sleep and say more later. > 1561980983 889623 PRIVMSG #esoteric :14[[07User:A/H spec14]]4 M10 02https://esolangs.org/w/index.php?diff=63834&oldid=63831 5* 03A 5* (-4) 10 < 1561981001 158600 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :i mean instead of having a caller and a callee, and the caller calls the callee, possibly passing some parameters, and the callee eventually returns some results to whatever caller called it -- so that the caller "knows" the callee, but not vice versa, and also the callee is "subordinate" to the caller, so that there's a fairly assymetric relationship < 1561981064 810270 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :you'd have two (or more) coroutines which execute for a bit, and then pass on information (and control, the "baton") to the other coroutine, which then finds itself in a more symmetrical relation to the first one < 1561981158 881543 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Right, there are at least two sorts of models of coroutines, one which is more like userspace threads, and one where they activate each other explicitly. < 1561981181 332115 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'm not quite sure whether they need to be treated differently or not. < 1561981220 310050 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But I think either approach I mentioned should work for either one? < 1561981238 575830 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :So far what I said is really just about how to store the state. < 1561981241 107503 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :yea, it's not really clear to me either < 1561981257 705310 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :i didn't really follow the second approach < 1561981309 196533 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Because I was very vague about it, is why. < 1561981345 484548 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :if you need to sleep, i probably shouldn't be keeping you up < 1561981358 288810 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I need a few concrete examples of the different styles to explain this well, and I don't have any. < 1561981366 903036 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :ACTION nods < 1561981374 826018 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Let's say you have Python-style generators as another (?) sort of style. < 1561981415 489973 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :foo() { for (int i = 0; i < 10; i++) { yield(i); } } < 1561981427 908174 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Hmm, I'll make it a bit more complicated. < 1561981456 536608 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :sortof like a lazy list, or backtracking a la Prolog, i suppose (i don't know enough details of quirks and limitations of Python-style generators to compare well) < 1561981463 206041 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :foo() { for (int i = 0; i < 10; i++) yield(i); for (int j = 0; j < 5; j++) yield(j); } < 1561981469 918985 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, then maybe it's not a great example. :-) < 1561981478 63171 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But you can see easily enough what that does. < 1561981482 956427 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :yes < 1561981491 961374 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :To make it work in the framework above, you can imagine something like this: < 1561981545 831188 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :enum State { ONE, TWO, DONE }; struct Coroutine { enum State state; int i; int j; }; < 1561981573 196947 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :init_coroutine(struct Coroutine *c) { c->state = ONE; c->i = 0; } < 1561981660 476530 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :int step_coroutine(struct Coroutine *c) { int v; switch (c->state) { case ONE: v = c->i++; if (c->i == 10) { c->state = TWO; }; break; case TWO: v = c->j++; if (c->j == 5) { c->state = DONE: }; break; default: assert(0); }; return v; } < 1561981697 773850 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, I forgot, the c->i == 10 case should also set j to 0. (And if this was implemented more efficiently they'd be stored in the same memory.) < 1561981714 163856 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :This is an extremely boring contrived case, I should come up with a realistic one. < 1561981844 581746 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :i think i was thinking of a similar example (`(++)'), when i was playing with refactoring `[a]' to `forall o. (exists s. (s,s -> o,s -> a -> s)) -> o' < 1561982026 161088 :salpynx!794954f8@121.73.84.248 QUIT :Remote host closed the connection < 1561982297 398502 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :OK, I'll really go to sleep now. < 1561982354 877774 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :good night, pleasant dreams < 1561982454 907087 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :kmc probably racked up 600 million sleep points by now < 1561982456 874476 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :i'm so far behind < 1561982995 666346 :APic!apic@apic.name JOIN :#esoteric < 1561983325 881349 :mniip!mniip@freenode/staff/mniip QUIT :Read error: Connection reset by peer < 1561983400 472778 :mniip!mniip@freenode/staff/mniip JOIN :#esoteric < 1561984260 861629 :Taneb!~Taneb@runciman.hacksoc.org PRIVMSG #esoteric :I'm racking them up right now > 1561984778 218143 PRIVMSG #esoteric :14[[07User:A/H spec14]]4 M10 02https://esolangs.org/w/index.php?diff=63835&oldid=63834 5* 03A 5* (-1) 10/* H Quine via adding one operator */ > 1561984861 14737 PRIVMSG #esoteric :14[[07User:A/H spec14]]4 M10 02https://esolangs.org/w/index.php?diff=63836&oldid=63835 5* 03A 5* (-188) 10/* H Quine via adding one operator */ < 1561985769 571860 :arseniiv_!~arseniiv@136.169.239.68 JOIN :#esoteric < 1561985953 295711 :arseniiv!~arseniiv@136.169.231.226 QUIT :Ping timeout: 245 seconds < 1561986220 783595 :xkapastel!uid17782@gateway/web/irccloud.com/x-ejczxxvjqxmhvqth JOIN :#esoteric > 1561987289 706750 PRIVMSG #esoteric :14[[07ThisIsTheFoxe14]]4 N10 02https://esolangs.org/w/index.php?oldid=63837 5* 03ThisIsTheFoxe 5* (+77) 10can I redirect a page like that? .-. > 1561987369 950247 PRIVMSG #esoteric :14[[07User:ThisIsTheFoxe14]]4 M10 02https://esolangs.org/w/index.php?diff=63838&oldid=63786 5* 03ThisIsTheFoxe 5* (-2) 10style change > 1561987458 273469 PRIVMSG #esoteric :14[[07ThisIsTheFoxe14]]4 M10 02https://esolangs.org/w/index.php?diff=63839&oldid=63837 5* 03ThisIsTheFoxe 5* (-15) 10redirect allowed? .-. > 1561987513 671845 PRIVMSG #esoteric :14[[07User:ThisIsTheFoxe14]]4 M10 02https://esolangs.org/w/index.php?diff=63840&oldid=63838 5* 03ThisIsTheFoxe 5* (+1) 10/* DubDubMachine */ > 1561987682 969480 PRIVMSG #esoteric :14[[07User:ThisIsTheFoxe14]]4 M10 02https://esolangs.org/w/index.php?diff=63841&oldid=63840 5* 03ThisIsTheFoxe 5* (+180) 10about me .-. > 1561987703 912519 PRIVMSG #esoteric :14[[07User:ThisIsTheFoxe14]]4 M10 02https://esolangs.org/w/index.php?diff=63842&oldid=63841 5* 03ThisIsTheFoxe 5* (-4) 10/* About Me */ semantics .-. > 1561987955 349904 PRIVMSG #esoteric :14[[07Esolang:Introduce yourself14]]4 M10 02https://esolangs.org/w/index.php?diff=63843&oldid=63769 5* 03ThisIsTheFoxe 5* (-10) 10Updated my signature > 1561988028 996534 PRIVMSG #esoteric :14[[07ThisIsTheFoxe14]]4 10 02https://esolangs.org/w/index.php?diff=63844&oldid=63839 5* 03ThisIsTheFoxe 5* (-62) 10I am stupid. Pls `rm this.page` < 1561988059 202719 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1561988127 197472 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 245 seconds < 1561988132 103816 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 NICK :Lord_of_Life > 1561988303 202735 PRIVMSG #esoteric :14[[07ThisIsTheFoxe14]]4 10 02https://esolangs.org/w/index.php?diff=63845&oldid=63844 5* 03ThisIsTheFoxe 5* (+12) 10 > 1561988471 336845 PRIVMSG #esoteric :14[[07ThisIsTheFoxe14]]4 10 02https://esolangs.org/w/index.php?diff=63846&oldid=63845 5* 03ThisIsTheFoxe 5* (+54) 10pls dilet dis > 1561989346 280090 PRIVMSG #esoteric :14[[07L33t14]]4 10 02https://esolangs.org/w/index.php?diff=63847&oldid=30840 5* 03ThisIsTheFoxe 5* (+4577) 10added a few examples > 1561989458 409885 PRIVMSG #esoteric :14[[07L33t14]]4 10 02https://esolangs.org/w/index.php?diff=63848&oldid=63847 5* 03ThisIsTheFoxe 5* (+285) 10/* Fibbonacci */ < 1561989533 774552 :int-e!~noone@int-e.eu PRIVMSG #esoteric :. o O ( poor ais523 ) > 1561989942 15825 PRIVMSG #esoteric :14[[07DubDubMachine14]]4 10 02https://esolangs.org/w/index.php?diff=63849&oldid=63791 5* 03ThisIsTheFoxe 5* (-44) 10/* Examples */ > 1561989979 584305 PRIVMSG #esoteric :14[[07DubDubMachine14]]4 M10 02https://esolangs.org/w/index.php?diff=63850&oldid=63849 5* 03ThisIsTheFoxe 5* (+2) 10finished cat program > 1561991429 459989 PRIVMSG #esoteric :14[[07DubDubMachine14]]4 10 02https://esolangs.org/w/index.php?diff=63851&oldid=63850 5* 03ThisIsTheFoxe 5* (+293) 10Added more examples > 1561991528 349172 PRIVMSG #esoteric :14[[07DubDubMachine14]]4 M10 02https://esolangs.org/w/index.php?diff=63852&oldid=63851 5* 03ThisIsTheFoxe 5* (+12) 10/* Cat program */ < 1561992238 141172 :arseniiv_!~arseniiv@136.169.239.68 PRIVMSG #esoteric :how do you think, is it possible to build an arbitratry tree′ in Punctree? < 1561992296 201174 :arseniiv_!~arseniiv@136.169.239.68 NICK :arseniiv < 1561993145 294877 :int-e!~noone@int-e.eu PRIVMSG #esoteric :arseniiv: _ + ~ should be enough to build an arbitrary context? < 1561993201 796256 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(Would you mind terribly if I replaced all "tree'" by "context"?) < 1561993212 280861 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :no, I wouldn’t < 1561993291 281729 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :hm I seemed to have a time to forget full semantics of + < 1561993310 802318 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :maybe yes, then < 1561993943 471162 :int-e!~noone@int-e.eu PRIVMSG #esoteric :arseniiv: Hmm, do you intend to treat 2 t t' as a zipper? (I think not.) < 1561993998 504402 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(i.e., a pair where the second component is a context) < 1561994023 764514 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :int-e: no, I didn’t intent < 1561994036 135078 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :though I don’t know if I’ll change my mind :D < 1561994053 826414 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :s/intent/intend < 1561994107 323426 :int-e!~noone@int-e.eu PRIVMSG #esoteric :I mean I'm going over the whole text right now anyway... so I'll change that u != _ to u = 2 t' t there. < 1561994136 989727 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(I'm only up to "In this language there are no trees [...]"...) < 1561994139 986876 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :where specifically? < 1561994255 757927 :int-e!~noone@int-e.eu PRIVMSG #esoteric :arseniiv: I'd hope that text snippet is unique? It's at the start of the paragraph. < 1561994269 276941 :int-e!~noone@int-e.eu PRIVMSG #esoteric :In this language there are no trees, but remember that ''u′'' = 2 ''t′'' ''t'' is a context, and a zipper is a pair isomorphic to ''u''. So further we’ll treat ''u′'' = 2 ''t′'' ''t'' as a zipper (''t′'', ''t''), too. < 1561994277 97452 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :I didn’t find it :D < 1561994280 602376 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :ah, that one < 1561994361 511855 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :I was searching the wrong thing < 1561994392 419007 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :you are right < 1561994430 394969 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :don’t know why I overgeneralized it that time > 1561994488 610915 PRIVMSG #esoteric :14[[07Punctree14]]4 M10 02https://esolangs.org/w/index.php?diff=63853&oldid=63814 5* 03Arseniiv 5* (+13) 10/* Values */ degeneralization < 1561994629 535814 :int-e!~noone@int-e.eu PRIVMSG #esoteric :aaaargh < 1561994753 749219 :int-e!~noone@int-e.eu PRIVMSG #esoteric :arseniiv: why why why did you edit when I announced that I was editing... > 1561994818 958610 PRIVMSG #esoteric :14[[07Punctree14]]4 10 02https://esolangs.org/w/index.php?diff=63854&oldid=63853 5* 03Int-e 5* (+90) 10Main change: tree' --> context. But I did some proof-reading as well. < 1561994832 583387 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :int-e: I thought you hadn’t yet started < 1561994835 816392 :int-e!~noone@int-e.eu PRIVMSG #esoteric :arseniiv: (mediawiki is terrible at merging) < 1561994857 544262 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :sorry :) < 1561994873 831906 :int-e!~noone@int-e.eu PRIVMSG #esoteric :anyway, there you go... please review, and feel free to revert if you disagree < 1561994925 16568 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :only if to check what proofreading entailed < 1561994998 599346 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Ah. Θ ::= T | T′ is wrong now. But I'll wait for you. < 1561995409 407336 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :i think it’s all good, thank you. BTW I do think “context” is actually easier to read. Though originally I treated π₁ and π₂ as solely tree operations, maybe placing α, β there makes a better note that they are no good for a context < 1561995435 542103 :int-e!~noone@int-e.eu PRIVMSG #esoteric :arseniiv: And sorry for that outburst... it was mostly theatrical, but I'm not sure whether IRC carried that part of the message. < 1561995457 217736 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :int-e: which one? < 1561995464 871523 :int-e!~noone@int-e.eu PRIVMSG #esoteric :" aaaargh" > 1561995495 920077 PRIVMSG #esoteric :14[[07Punctree14]]4 M10 02https://esolangs.org/w/index.php?diff=63855&oldid=63854 5* 03Int-e 5* (-2) 10/* Values */ fixup: T -> C < 1561995507 288614 :int-e!~noone@int-e.eu PRIVMSG #esoteric :esowiki: wanna learn unicode? < 1561995508 303949 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :I might not notice it for what it is. Ah, that one. No, it’s totally okay < 1561995587 38341 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :it was fun when esowiki mentioned edits < 1561995621 164550 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :now I feel like it just can’t find those characters in time like me now < 1561995693 263936 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :Tifinagh letters are nice < 1561995772 679500 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :like you’re in a dream and trying to read some latin/cyrillic/greek text and then you notice it’s all not quite right < 1561995794 345664 :int-e!~noone@int-e.eu PRIVMSG #esoteric :I mostly don't bother with Unicode. I'd need to investigate X11 input methods... I played around with scim ages ago but never grew used to it, and the fact that the behavior depends on the toolkit was annoying. < 1561995825 726027 :int-e!~noone@int-e.eu PRIVMSG #esoteric :When I do use Unicode I use gucharmap. So it's *very* slow and tedious. < 1561995851 820774 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :(why do I use Windows charmap at all? There are better programs to search characters, with better name search even) < 1561995871 122886 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :oh, a Windows one is at least fast < 1561995890 778528 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :though maybe when using a pretty small font < 1561995971 535778 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Excess Flood < 1561995993 356479 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :usually I input characters I may need with AutoHotkey, but I hadn’t bothered adding that reversed F to the script < 1561996047 996344 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1561996111 458320 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :here it is, finally: Ⅎ — and no one needs it now < 1561997228 286733 :MDude!~MDude@74.5.156.180 JOIN :#esoteric < 1561997358 563363 :int-e!~noone@int-e.eu PRIVMSG #esoteric :arseniiv: "bars are invisible" ... if we have ... | x | as the stack, can we pop the x from underneath the bar? < 1561997388 57730 :int-e!~noone@int-e.eu PRIVMSG #esoteric :ACTION isn't sure what the bars are all about tbh. < 1561997440 660157 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :int-e: yeah we can < 1561997467 155221 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :yes, bars were a mistake. I should have made something like pointers to elements of the stack instead < 1561998890 173664 :yharnam!~user@128.187.112.3 JOIN :#esoteric < 1561999500 675800 :int-e!~noone@int-e.eu PRIVMSG #esoteric :arseniiv: Hmm, what does eval() do, exactly? Run the code, then inspect the top of the stack? Is the top of the stack kept? < 1561999554 675358 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(Is the modified stack kept or is the original stack restored? "When evaluating a code block, no special things are done to the stack before or after it." is not entirely clear.) < 1561999678 161839 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :oh, there’s another inaccuracy. eval(body) and eval(else_) were intended to be simply “run and that’s all”, but eval(cond) is “run and then pop the value”. It definitely needs to be rewritten, I’ll do something < 1561999688 268263 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :int-e: ^ < 1561999744 459482 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :in the interpreter I actually popped after “eval”(cond) and didn’t do anything after “eval”(body/else_) < 1561999770 550378 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :oh, “else_” with an underscore is what I called it in Python < 1561999883 222753 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :I’ll promote that description to a subsection < 1562000366 608090 :int-e!~noone@int-e.eu PRIVMSG #esoteric :arseniiv: http://paste.debian.net/1089917/ is s start of an interpreter but I didn't bother with the bars, and I have not tested anything < 1562000400 708275 :int-e!~noone@int-e.eu PRIVMSG #esoteric :hmm hmm < 1562000485 16321 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :int-e: nice! Don’t you want to represent C as a zipper-without-a-subtree though? (isomorphic to [(Direction, T)] where data Direction = L | R) < 1562000532 235047 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :though with singly-linked lists it will be undesirable for some operations < 1562000679 133439 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Now downloading articles from the server is implemented in bystand. < 1562000791 548593 :int-e!~noone@int-e.eu PRIVMSG #esoteric :arseniiv: I didn't really consider that. < 1562000816 32278 :int-e!~noone@int-e.eu PRIVMSG #esoteric :arseniiv: I find what I have easier to think about. > 1562000892 393968 PRIVMSG #esoteric :14[[07Punctree14]]4 M10 02https://esolangs.org/w/index.php?diff=63856&oldid=63855 5* 03Arseniiv 5* (+523) 10/* Syntax */ + Loop command < 1562000922 423452 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :aaah I was going to preview it and clicked the wrong button < 1562001027 105152 :sprocklem!~sprocklem@unaffiliated/sprocklem QUIT :Ping timeout: 245 seconds > 1562001110 483126 PRIVMSG #esoteric :14[[07Punctree14]]4 M10 02https://esolangs.org/w/index.php?diff=63857&oldid=63856 5* 03Arseniiv 5* (+38) 10/* Loop command */ now it looks as intended < 1562001128 820346 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :hopefully it will be less confusing < 1562001187 52491 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :also how do you find my mix of C-like and Pascal-like syntax in pseudocode? < 1562001202 459879 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :isn’t it lovely < 1562001242 885975 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover JOIN :#esoteric < 1562001559 633425 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Is there a fgets() function that allocates the memory needed to store it, in some program? < 1562001730 831776 :int-e!~noone@int-e.eu PRIVMSG #esoteric :arseniiv: From an efficiency perspective you are probably right that one should represent contexts as a sequence of pairs like that... and then use Data.Seq or something similar that offers efficient concatenation and destruction on both ends. < 1562001797 974767 :xkapastel!uid17782@gateway/web/irccloud.com/x-ejczxxvjqxmhvqth QUIT :Quit: Connection closed for inactivity < 1562001831 464570 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :int-e: though, I started with tree-like definition too < 1562001856 106908 :int-e!~noone@int-e.eu PRIVMSG #esoteric :KISS < 1562001857 536440 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :(and then I got unsatisfied and changed to a zippery one) < 1562001883 721547 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :main complexities in my code are from elsewhere, BTW < 1562001910 988314 :int-e!~noone@int-e.eu PRIVMSG #esoteric :I bet you can go crazy trying to optimize the stack representation < 1562002466 7141 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :hm I tried that for some extent but surrendered and made it a literal stack of values and bars < 1562002507 350021 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :and then after each stack action, two topmost bar positions are recalculated < 1562002631 311179 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :hopefully I’m not Knuth enough < 1562002790 268141 :xkapastel!uid17782@gateway/web/irccloud.com/x-anqaybjjbpbwldms JOIN :#esoteric < 1562002806 88751 :int-e!~noone@int-e.eu PRIVMSG #esoteric :What's bad about being Knuth? Aside from his age, perhaps. < 1562003229 528914 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :many microoptimizations < 1562003232 784942 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :doing them < 1562003283 830097 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :I think Knuth is a good computer programmer < 1562003287 290308 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :also writing a book which almost no one else could continue < 1562003305 556237 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :agree he is good < 1562003334 341148 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Yes, I want to read the book; I have read a few and it is good. < 1562003339 490339 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :and he had an influence on the world < 1562003378 194050 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :but I’m glad I’m not him. Two Knuths would be tg :P < 1562003404 748080 :int-e!~noone@int-e.eu PRIVMSG #esoteric :arseniiv: I'll grant that he's not modern. He grew up at a time when all those microptimizations made a difference. < 1562003426 580229 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Nowadays... that has become rare. < 1562003430 692744 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :agree too < 1562003440 401349 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :on both of those < 1562003480 500945 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(what's cheaper... 10h of software engineering time or buying an extra AWS instance for running a 50h computation?) < 1562003512 916456 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :I will use microoptimizations when writing in assembly language especially. < 1562003575 264684 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :though I talked with a couple of people for whom such optimizations were a must for a reason (small microcontrollers and a code to search for graphs with specified rare properties) < 1562003580 329606 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(And found a lot of existing code that is not optimized so well.) < 1562003603 63421 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Microoptimizations pay off when they are reused often in computation bottlenecks. So... in hardware, in compiler output, in some drivers. < 1562003634 244933 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Microcontrollers for mass produced items probably still count. < 1562003679 420083 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :yeah, bottleneck argument is basically a specialized “optimize after profiling” argument < 1562003719 379191 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :The trick that I used to speed up address decoding and bank switching in Famizork is one that I don't know if anyone else has used it. < 1562003949 39811 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Also, in some kind of computers, you can use unofficial instructions for optimizations. < 1562004022 617521 :int-e!~noone@int-e.eu PRIVMSG #esoteric :arseniiv: Hah. How often does the term "software stack" occur in TAoCP? < 1562004107 642297 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :int-e: I presume less than once? < 1562004164 8591 :int-e!~noone@int-e.eu PRIVMSG #esoteric :I'm honestly not sure. < 1562004229 420509 :int-e!~noone@int-e.eu PRIVMSG #esoteric :But if it does occur I expect that it will be a counterpart to "hardware stack" which could either refer to built-in push, pop, call, ret (operating on memory), or to some limited stack built into the CPU. < 1562004310 556510 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :MMIX uses a register stack. > 1562004524 23743 PRIVMSG #esoteric :14[[07Deadfish14]]4 10 02https://esolangs.org/w/index.php?diff=63858&oldid=63774 5* 03Areallycoolusername 5* (+8) 10/* Implementations */ < 1562004526 818612 :yharnam!~user@128.187.112.3 QUIT :Remote host closed the connection < 1562004677 906907 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :And, on MMIX the return address is not stored in the register stack; only the local registers are. < 1562005191 427383 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu JOIN :#esoteric < 1562005204 130361 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu PRIVMSG #esoteric :`olist 1169 < 1562005207 29684 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :olist 1169: shachaf oerjan Sgeo FireFly boily nortti b_jonas > 1562005498 948168 PRIVMSG #esoteric :14[[07Deadfish14]]4 10 02https://esolangs.org/w/index.php?diff=63859&oldid=63858 5* 03Areallycoolusername 5* (+23) 10/* Implementations */ < 1562005695 690143 :Guest17850!~liz@meowface.org QUIT :Changing host < 1562005695 690199 :Guest17850!~liz@unaffiliated/lizzie JOIN :#esoteric < 1562005697 372905 :Guest17850!~liz@unaffiliated/lizzie NICK :lizzie < 1562006033 440533 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Does GNU linker support linking time assertions in the program? < 1562006048 113579 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Does LLVM support it? < 1562006491 973031 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu PRIVMSG #esoteric :oh nice, int-e's complains about arseniiv's esolang writeup overlap with mine < 1562006633 99963 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu PRIVMSG #esoteric :zzo38: re fgets, do you mean malloc-allocates the space at each call? if so, yes, called getline. < 1562006750 631760 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :O, yes, it is. It says they were originally GNU extensions but are now POSIX. < 1562006775 87091 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :kmc: how many sleep points did you earn < 1562006882 248144 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :shachaf: not that many :( < 1562006884 257121 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :I dunno < 1562006887 712233 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu PRIVMSG #esoteric :zzo38: re fgets, do you mean malloc-allocates the space at each call? if so, yes, called getline. < 1562006890 955144 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :maybe I should drink less caffeine < 1562006894 941269 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu PRIVMSG #esoteric :shachaf: re sigils, besides BASIC, there's also INTERCAL < 1562006913 556120 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu PRIVMSG #esoteric :zzo38: yes, it originates from gnu libc < 1562006917 504743 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :kmc: oh no < 1562006951 814882 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :kmc: i award you 800 million cuddly points < 1562006963 393313 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :consolation prize < 1562006980 640599 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :aww < 1562006982 176758 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :hugs < 1562006983 651833 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :b_jonas: Does BASIC even have identifiers that refer to types? < 1562006996 126416 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Yes, INTERCAL also uses sigils for types, with prefix instead of a suffix like BASIC < 1562006997 113153 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu PRIVMSG #esoteric :zzo38: related gnu libc extensions are asprintf, and the "a" flag in scanf (which actually technically conflicts with the C standard definintion, because "%a" is supposed to be equivale to to "%g", but glibc definitely has priority there) < 1562007009 817596 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu PRIVMSG #esoteric :shachaf: that depends on which BASIC dialect you ask < 1562007021 438829 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :BASIC does have names of types, such as INTEGER and LONG and so on. < 1562007041 580820 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :where % is INTEGER, & is LONG, ! is SINGLE, and # is DOUBLE. < 1562007045 640794 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu PRIVMSG #esoteric :shachaf: newer versions of BASIC do have identifiers that refer to types, older ones don't < 1562007113 106910 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But I'm not talking about using a sigil to indicate what the type of something is. < 1562007126 860053 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'm talking about indicating syntactically whether an identifier is a type. < 1562007140 257553 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :For example Haskell uses an uppercase letter. < 1562007158 191429 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :zzo38: I remember something like $ for string also, is it from another Basic dialect? < 1562007201 412896 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Yes, $ is for strings. < 1562007214 881249 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(I forgot that one) < 1562007231 471656 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :shachaf: No, there is no such thing in BASIC. < 1562007257 712028 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :for each string, Basic awards us a $ < 1562007259 553776 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(A variable can also have the same name as a structure type in BASIC.) < 1562007277 68368 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :we need writing long string-heavy programs < 1562007484 97746 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :The "OAC" compiler for OASYS text adventure game system has no sigils and no reserved words either, and uses type names without any syntactic indication. The "OAA" compiler does uses sigils, both prefixes and suffixes. < 1562007487 951350 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Suffixes are @ for a pointer to a object, # for a integer (either 16-bits or 32-bits), $ for a index into the string table, ^ for a pointer (only for locals and return values), and nothing for void (only for return values). > 1562007506 313365 PRIVMSG #esoteric :14[[07User:ThisIsTheFoxe14]]4 10 02https://esolangs.org/w/index.php?diff=63860&oldid=63842 5* 03Total Vacuum 5* (+0) 10 < 1562007547 94320 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Prefixes are , for locals (including arguments), . for properties, & for methods, * and ? for classes, % for global variables, and ! for preallocated objects. < 1562007582 766284 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :And, unlike BASIC, the prefix and suffix alone are sufficient you do not need to add letters in between. > 1562007963 657931 PRIVMSG #esoteric :14[[07Deadfish14]]4 10 02https://esolangs.org/w/index.php?diff=63861&oldid=63859 5* 03Areallycoolusername 5* (+5) 10/* C++ Codegolfed */ < 1562009878 318413 :MDude!~MDude@74.5.156.180 QUIT :Ping timeout: 245 seconds < 1562009910 289401 :FreeFull!~freefull@defocus/sausage-lover JOIN :#esoteric < 1562011737 484815 :user24!~user24@p2E50C34D.dip0.t-ipconnect.de JOIN :#esoteric < 1562013441 437560 :atslash!~atslash@static.231.107.9.5.clients.your-server.de QUIT :Quit: This computer has gone to sleep < 1562014732 268914 :AnotherTest!~turingcom@ptr-82l26zcdc6imrwoapg3.18120a2.ip6.access.telenet.be QUIT :Ping timeout: 252 seconds < 1562019391 934448 :user24!~user24@p2E50C34D.dip0.t-ipconnect.de QUIT :Quit: Leaving < 1562019498 384961 :uplime!uplime@learnprogramming/staff/nchambers NICK :^ < 1562019866 285113 :nfd!~nfd9001@c-67-183-33-240.hsd1.wa.comcast.net JOIN :#esoteric < 1562020012 272050 :nfd9001!~nfd9001@2601:602:8500:2443:ccae:926b:8e0b:3158 QUIT :Ping timeout: 252 seconds < 1562021480 961313 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu PRIVMSG #esoteric :`? bitcoin < 1562021482 101454 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :bitcoins are coins that have been drilled through with a bit, and can be strung together in long chains. This practice dates to ancient China, and the Chinese remain experts in bitcoin manufacturing. A chain can support up to 21 million coins before breaking. < 1562021646 957272 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`cwlprits bitcoin < 1562021652 669854 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :Jafët < 1562021671 476152 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu PRIVMSG #esoteric :A bitcoin also means a coin of which a criminal bites off a small part to obtain a small amount of gold, but then passes the coin on as if it had the full original value. Isaac Newton invented a machine that puts a regular ridged pattern around the edge of the coin so that bitcoins can be easily recognized. < 1562021674 780589 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :wow, that must've been a century ago < 1562021677 348160 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`dowg bitcoin < 1562021678 933948 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :10459:2017-03-20 learn bitcoins are coins that have been drilled through with a bit, and can be strung together in long chains. This practice dates to ancient China, and the Chinese remain experts in bitcoin manufacturing. A chain can support up to 21 million coins before breaking. < 1562021704 208555 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Why did Isaac Newton invent it? < 1562021811 505059 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu PRIVMSG #esoteric :shachaf: his job was catching counterfeiters < 1562021903 539161 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu PRIVMSG #esoteric :also maybe it helped his alchemy experiments < 1562022570 240120 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :I thought he invented it because he was made master of the mint, which was done because the mint could mostly run by itself, but he insisted to do something about it anyways. < 1562022615 769143 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`? password < 1562022617 977312 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :The password of the month has been erroneously sent to the NSA. We apologize for the inconvenience. < 1562022643 469099 :int-e!~noone@int-e.eu PRIVMSG #esoteric :. o O ( This was your second monthly password reminder. ) < 1562022891 210152 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu PRIVMSG #esoteric :don't look at me, unless you want another random dictionary words password like I set the last time < 1562022945 477986 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`learn The password of the month is int-e's job. < 1562022947 551630 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :Relearned 'password': The password of the month is int-e's job. < 1562022976 658303 :int-e!~noone@int-e.eu PRIVMSG #esoteric :I guess that's a fair assessment. < 1562022996 762635 :int-e!~noone@int-e.eu PRIVMSG #esoteric :But now I have 39 days to plan my revenge! < 1562023011 424530 :int-e!~noone@int-e.eu PRIVMSG #esoteric :30. < 1562023013 130491 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Is this month 39 days long? < 1562023014 868064 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Ah. < 1562023056 130886 :int-e!~noone@int-e.eu PRIVMSG #esoteric :No, the keyboard jumped. < 1562023078 847354 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(It's the only explanation! My typing is perfect!!!1) < 1562023168 556206 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu PRIVMSG #esoteric :The password of the month is notable housing compliment vitamin. < 1562023495 939874 :b_jonas!~x@catv-176-63-24-187.catv.broadband.hu QUIT :Quit: leaving < 1562023695 386994 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`? july < 1562023696 520179 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :july? ¯\(°​_o)/¯ < 1562023707 441728 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :July is the month of the password. < 1562025092 411188 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover QUIT :Read error: Connection reset by peer < 1562025114 715188 :int-e!~noone@int-e.eu PRIVMSG #esoteric :. o O ( cute: http://paste.debian.net/1089950/ ) < 1562025192 565257 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :int-e: oh no, they got your deployment-config.json < 1562025248 310146 :int-e!~noone@int-e.eu PRIVMSG #esoteric :yeah wtf is that anyway < 1562025279 154885 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :oh, it seems the interpreter started working! < 1562025297 875237 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :°> +a < 1562025297 944334 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :[Compile error] Unknown character ‘a’ at 1. < 1562025357 78783 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :just kidding. It can do more < 1562025408 851025 :arseniiv!~arseniiv@136.169.239.68 PRIVMSG #esoteric :also it’s quite polite and says bye on exit < 1562025422 124226 :int-e!~noone@int-e.eu PRIVMSG #esoteric :https://github.com/amoussard/sftp-deployment/issues/130 < 1562025456 802112 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :presumably deployment-config is the opposite of employment-config < 1562025517 616175 :int-e!~noone@int-e.eu PRIVMSG #esoteric :hmm https://github.com/IanEdington/deploy-php/blob/master/deployment-config.json#L16 < 1562025539 711397 :ski!~ski@remote11.chalmers.se PRIVMSG #esoteric :ACTION was about to remark on how far the `0' key is from the `9' key < 1562025559 927727 :int-e!~noone@int-e.eu PRIVMSG #esoteric :ski: yes, they're miles and miles apart... if you use the numeric keypad < 1562025578 111475 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I haven't used a computer with a numeric keypad in years. < 1562025599 645396 :int-e!~noone@int-e.eu PRIVMSG #esoteric :my computer doesn't have a numeric keypad either ;-) my keyboard does.