00:00:48 <oerjan> yeah ?where was the loophole i was thinking of.
00:01:08 <Bike> god help us if someone makes a bot triggered by "I" or a space
00:01:48 <int-e> @where+ loop @where q
00:02:20 <int-e> yeah. it really should just add a space to everything :)
00:03:41 <jconn> oerjan: |syntax error
00:04:11 <oerjan> i think jconn and lambdabot can loop.
00:04:33 <oerjan> well, assuming J can output formatted text.
00:04:44 <shachaf> do you know that great feature where lambdabot checks whether a nick ends in "bot"
00:05:22 <shachaf> elliott discovered it when testing in the channel "#lambdabot"
00:05:46 <shachaf> do you know that great feature where lambdabot checked whether a nick ends in "bot"
00:07:11 <nooodl> did it just silently ignore every command you'd give in #lambdabot. if so that sounds... fun
00:14:15 -!- tertu has quit (Ping timeout: 272 seconds).
00:15:10 -!- nooodl has quit (Quit: Ik ga weg).
00:17:54 -!- Sgeo has joined.
00:19:08 -!- tertu has joined.
00:32:20 -!- Oj742 has joined.
00:35:14 -!- Slereah_ has joined.
00:36:21 -!- Slereah has quit (Ping timeout: 240 seconds).
00:49:42 -!- Oj742 has quit (Ping timeout: 246 seconds).
00:56:36 <oerjan> !malbolge (=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc
00:57:13 -!- Taneb has quit (Quit: Leaving).
00:58:38 <Bike> huh, i thought malbolge programs were generally longer
00:59:08 <oerjan> User:ErichS8 at wikipedia has been greatly improving it
01:04:11 <oerjan> hm the one in our wiki's hello world page is none of the ones in wikipedia.
01:04:26 <Bike> "After each instruction is executed, the guilty instruction gets encrypted[...] after a jump, Malbolge will encrypt the innocent instruction just prior" this seems unwikipedian
01:04:34 <Bike> good pun though
01:04:50 <oerjan> but _starts_ with the same code as the newest short version.
01:05:12 <oerjan> !malbolge (=<`#9]~6ZY32Vw/.R,+Op(L,+k#Gh&}Cdz@aw=;zyKw%ut4Uqp0/mlejihtfrHcbaC2^W\>Z,XW)UTSL53\HGFjW
01:05:23 <oerjan> oh it's not exactly the same text.
01:06:09 -!- typeclassy has quit (Ping timeout: 246 seconds).
01:06:21 <oerjan> first 14 chars are the same.
01:09:46 <oerjan> mtve: hey you made the one in the wiki http://esolangs.org/w/index.php?title=Hello_world_program_in_esoteric_languages&diff=6158&oldid=5803
01:12:39 <HackEgo> 2013-03-15 11:37:33: <mtve> i like kenrube's homepage btw (not really sure its his, but it was mentioned somewhere linked to him) - http://www.yyyyyyy.info/
01:25:49 -!- Phantom__Hoover has quit (Ping timeout: 272 seconds).
01:35:41 -!- oerjan has quit (Quit: nuit).
02:00:01 -!- Sprocklem has joined.
02:29:34 <ion> http://arstechnica.com/tech-policy/2013/11/newegg-trial-crypto-legend-diffie-takes-the-stand-to-knock-out-patent/
02:29:40 -!- Sprocklem has quit (Ping timeout: 246 seconds).
02:34:47 -!- yorick has quit (Remote host closed the connection).
02:39:03 <Bike> discovery: opencl is really boring
02:40:18 -!- Sorella`` has changed nick to Sorella.
02:40:19 -!- Sorella has quit (Changing host).
02:40:19 -!- Sorella has joined.
02:40:24 <Bike> why does seemingly every C library define a typedef around int and other basic types
02:45:05 -!- Taneb has joined.
02:45:13 <Taneb> Missing: Taneb's sleep schedule
02:50:16 -!- Sprocklem has joined.
02:50:31 <ion> Sorry, i borrowed it.
02:50:49 <Taneb> ion, give it back when you're done
02:51:10 <ion> Crap. It seems i have lost it, too.
02:59:26 <Sgeo> I must be some kind of cruel, heartless neurogengineer
02:59:58 <Sgeo> Don't know if I already mentioned my latest norn cruelty or not
03:00:02 <Bike> did you decerberate a cat
03:00:22 <Bike> look did you mutilate a fucking cat or not fuck this language fuck science fuck everything
03:00:36 <Sgeo> No cats were mutilated in the mutilation of norns
03:03:01 -!- zzo38 has joined.
03:03:24 <Sgeo> Made a norn that's blind to anything that's moving, relative to its own location. Norns tend to move around a lot, especially when they can't do anything, e.g. if they're blind
03:04:13 -!- typeclassy has joined.
03:04:19 <Bike> pointless nerd shit. i want to see blood sgeo
03:04:39 <Bike> blood on your hands
03:05:23 <Sgeo> Taneb: a species of virtual creature in the Creatures series of games
03:09:35 -!- typeclassy has quit (Read error: Connection reset by peer).
03:13:24 -!- typeclassy has joined.
03:24:27 -!- typeclassy has quit (Ping timeout: 265 seconds).
03:25:25 -!- realz has quit (Ping timeout: 245 seconds).
03:39:51 -!- carado has quit (Ping timeout: 252 seconds).
03:41:28 -!- parduse has joined.
03:41:44 -!- parduse has left.
03:55:33 -!- tertu has quit (Ping timeout: 272 seconds).
04:02:32 -!- Taneb has quit (Quit: Leaving).
04:04:11 -!- nisstyre has joined.
04:10:40 -!- Oj742 has joined.
04:59:20 -!- tertu has joined.
05:06:17 -!- zzo38 has quit (Remote host closed the connection).
05:14:47 -!- typeclassy has joined.
05:15:36 <pikhq> Bike: There are a lot of utterly incompetent C coders out there.
05:15:53 <Bike> this is an industry standard, though...
05:15:53 <pikhq> Bike: There's also a lot of stupid cargo cult stuff going on.
05:16:13 <pikhq> Yes, but even zlib is in freaking terrible C.
05:17:15 <Bike> i just, i don't get it. what's the thought process behind foo_int
05:17:29 <pikhq> typedef unsigned char Byte;
05:18:00 <pikhq> typedef unsigned char FAR Bytef; // Yes, because DOS is *that* important in software released today.
05:18:25 <pikhq> And yes, believe it or not zlib still is littered with far pointer annotations.
05:18:43 <pikhq> Just in case you wanna use your 286.
05:18:49 <lifthrasiir> I think the modern descendant of DOS now supports x64 as well :S
05:19:31 <pikhq> Eh, WinNT is about as much DOS as Linux is.
05:21:20 <pikhq> Bike: Part of the issue is, so few people write good C that there's nothing to learn good C style *from*.
05:21:37 <pikhq> I mean, shit, people use int instead of size_t for goodness sake.
05:22:10 <Bike> this explains a lot about my formative years programming.
05:22:37 <Bike> in that i read a lot of C and didn't understand a bit of it
05:22:47 <lifthrasiir> pikhq: and intptr_t and uintptr_t and int_fastN_t etc.
05:23:12 <pikhq> lifthrasiir: To be fair-ish, intptr_t, uintptr_t, intN_t, etc. are C99-isms.
05:23:31 <pikhq> And Microsoft's compiler is still stuck in 1989.
05:23:39 <Bike> right now i'm kind of weirded out that opencl not only has a runtime compiler but lets you call it asynchronously by specifying a callback function (??)
05:23:52 <lifthrasiir> right, but that has changed printf formatting specifications as well, and there is not much need for two copies of printf in libc.
05:24:27 <pikhq> Meh, Microsoft's C library is also psycho broken in many other regards.
05:24:55 <pikhq> (SUPPORT UTF-8 YOU PSYCHOTIC BASTARDS)
05:26:02 <pikhq> Yeah, z is the size_t or ssize_t length modifier.
05:26:03 <lifthrasiir> pikhq: I think once upon a time msvcrt did not support floating point printing in printf() unless there are no floating point library (analogous to libm, but automatically linked) used. is this still a case?
05:26:14 <Bike> what's wrong with it?
05:27:11 * pikhq looks forward to the days of i686-windows-musl
05:27:15 <lifthrasiir> Bike: there are bunch of other prefixes for such integral-but-i-dunno-its-size pseudo-types.
05:27:46 <pikhq> Only 2 others. j is intmax_t and t is ptrdiff_t.
05:28:04 <pikhq> The intN_t types have preprocessor defines.
05:28:40 <pikhq> Suboptimal, but eh.
05:29:07 <pikhq> In a sense they're the least intrusive way of doing so. Especially since they're only exposed by inttypes.h
05:29:44 <Bike> this conversation has gotten away from me but now i know uint_least32_t and uint_fast32_t are distinct
05:30:19 <pikhq> Bike: Nominally distinct. They're pretty likely to be typedef'd the same though.
05:30:31 <Bike> diggin all these constants. INTMAX_MIN
05:30:58 <pikhq> And you can just use "unsigned int" instead of uint_least32_t on POSIX...
05:40:23 <pikhq> Seriously, have you ever looked at zlib's source?
05:41:41 <pikhq> https://github.com/madler/zlib/blob/master/adler32.c Freaking adler32 was made this complicated.
05:42:28 <Bike> "#define local static" i see.
05:43:27 <pikhq> uint32_t adler32(uint32_t adler, const char *buf, size_t len) {uint16_t sum1 = adler, sum2 = adler>>16;for(;len;len--,buf++){sum1+=*buf;sum2+=sum1;sum1%=65521;sum2%=65521;}return (sum1 << 16) | sum2; }
05:44:00 <pikhq> It's not a hard function.
05:44:16 <Bike> oh i'm liking ZEXPORT what's that do
05:44:33 <lifthrasiir> except that division by 65521 is expensive.
05:44:44 <pikhq> On Windows, __declspec(dllexport). On BeOS, __declspec(dllexport). Elsewhere, nothing.
05:46:26 <lifthrasiir> pikhq: anyway, I think a freshly-redesigned version of zlib would be better to manage, there are actually several known issues with zlib's performance.
05:47:02 <pikhq> lifthrasiir: Fine, while(len){ size_t i = 0;for(;i < 5552 && i < len;i++) { sum1+=buf[i]; sum2+=sum1; } sum1%=65521; sum2%=65521; buf+=i;len-=i; }
05:47:40 * pikhq looks at ~/src/pikhq-zlib
05:49:39 -!- Sprocklem has quit (Ping timeout: 272 seconds).
05:51:46 <pikhq> It's not even *that* big of an interface, just kinda ugly.
05:54:27 <pikhq> http://sprunge.us/HLVF Like, that's the whole thing.
05:55:30 <Bike> what's the difference between a voidpf and a voidp.
05:55:51 <pikhq> On DOS, a voidpf is far.
05:56:22 <Bike> oh i like all that stuff to get a 32 bit int
05:56:46 <pikhq> This is the actual interface that it exports, not the official header.
05:56:56 <pikhq> The official header is an order of magnitude larger.
05:57:50 <pikhq> https://github.com/madler/zlib/blob/master/zlib.h
06:00:28 <Bike> The application can compare zlibVersion and ZLIB_VERSION for consistency. If the first character differs, the library code actually used is not compatible with the zlib.h header file used by the application. This check is automatically made by deflateInit and inflateInit.
06:03:18 -!- Oj742 has quit (Ping timeout: 246 seconds).
06:03:30 <pikhq> Yeah, zlib's a bit... special.
06:09:11 -!- typeclassy has quit (Ping timeout: 240 seconds).
06:09:35 -!- tertu has quit (Ping timeout: 245 seconds).
06:09:47 -!- zzo38 has joined.
06:16:18 -!- tertu has joined.
06:32:05 <Bike> huh, i hd no idea half-precision floats exist
06:33:47 <Fiora> I think they're mainly for storange and less so calculation?
06:34:01 <Fiora> though that guess kinda comes from the fact that intel added functions to convert to/from FP16 but no arithmetic on them
06:34:08 <Fiora> s/functions/instructions/?
06:34:18 <Bike> that's what wikipedia said
06:34:23 <Bike> but opencl c has 'em
06:34:51 <Fiora> I wonder if GPUs have them as a thing.
06:35:47 <Bike> "The half data type can only be used to declare a pointer to a buffer that contains half values.
06:35:51 <Bike> so, yeah, storage only.
06:36:31 <Bike> you have to use builtins to get a real float out of em
06:36:43 <Bike> and do, like, arithmetic.
06:38:13 <Bike> and there are length three vectors. ok then!
06:39:36 <Bike> float4 f = (float4)((float2)(1.0f, 2.0f), (float2)(3.0f, 4.0f));
06:39:40 <Bike> i feel right at home.
06:41:02 <Bike> oh man there are arbitrary permutations of vectors. rad i guess
06:42:09 <Bike> x = (float16)(a.xxxx, b.xyz, c.xyz, d.xyz, a.yzw) // now x is four of a.x, then b, c, d, then a permuted a.
06:49:54 <Bike> "A divide by zero with integer types does not cause an exception but will result in an unspecified value." fuck the police
06:55:39 -!- Slereah_ has quit (Read error: Connection reset by peer).
06:55:52 -!- Slereah has joined.
07:24:10 <fizzie> I have a vague recollection some system somewhere had those as a built-in data type.
07:26:21 <zzo38> What programs would use 8-bit floats?
07:28:51 <fizzie> I can't think of an example offhand. http://www.mrob.com/pub/math/floatformats.html (see "Microfloats") points out that the IBM PC keyboard repeat rate is set using what's essentially a floating-point format.
07:29:44 -!- FreeFull has quit.
07:29:50 <lifthrasiir> μ-law also acts as a sort of a floating point type.
07:32:14 <fizzie> That's also mentioned on the page.
07:50:25 -!- Vorpal has quit (Ping timeout: 245 seconds).
07:58:29 -!- tertu has quit (Ping timeout: 248 seconds).
08:05:42 -!- Vorpal has joined.
08:13:56 <zzo38> I think it would be useful, if PuTTY would have an option which, if enabled, does something special with SCROLL LOCK. How is such a feature made suggested? What I wanted it to do is: If scroll lock is on, it does two things: [1] Disables the "reset scrollback" options. [2] Makes the up/down/pgup/pgdn keys to scroll the window instead of sending to the server.
08:14:34 <zzo38> Is it would seem useful to you, too?
08:17:02 <zzo38> Bike: Might it be better if it would be defined to instead mean, it is undefined whether integer division by zero will cause an exception or an unspecified result?
08:17:13 -!- tromp__ has quit (Ping timeout: 272 seconds).
08:17:55 -!- tromp__ has joined.
08:34:01 -!- Phantom_Hoover has joined.
08:40:58 -!- zzo38 has quit (Remote host closed the connection).
08:41:53 -!- Phantom__Hoover has joined.
08:42:49 -!- Phantom_Hoover has quit (Ping timeout: 252 seconds).
08:56:35 <FireFly> Bike: yeah, GLSL also has the permutation thing. it's really useful when you're writing vector-intensive stuff
09:04:09 -!- Phantom_Hoover has joined.
09:05:12 -!- Phantom__Hoover has quit (Ping timeout: 265 seconds).
09:17:39 -!- ais523_ has joined.
09:22:52 <ais523_> public computer, no compose key :(
09:26:45 -!- Phantom__Hoover has joined.
09:27:13 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
09:30:40 <fizzie> `run unicode 'COMPOSITION SYMBOL' 'COMBINING ENCLOSING KEYCAP' # ais523_: There you go, a compose key.
09:30:59 <ais523_> fizzie: it doesn't render properly on this OS :-(
09:32:02 <fizzie> It renders quite badly in my terminal, too. (Mostly okay in the browser.)
09:49:21 -!- Phantom_Hoover has joined.
09:49:28 -!- Phantom_Hoover has quit (Changing host).
09:49:28 -!- Phantom_Hoover has joined.
09:50:16 -!- Phantom__Hoover has quit (Ping timeout: 264 seconds).
09:54:24 <ion> http://arstechnica.com/tech-policy/2013/11/jury-newegg-infringes-spangenberg-patent-must-pay-2-3-million/
09:58:30 <fizzie> "The lawyers from both teams took in the verdict without emotion and shook hands following the verdict." "The weather shifted dramatically since the beginning of trial, and it was cold and rainy then." "Diffie looked the part of the eccentric genius, resplendent with his long white hair and beard. He spoke with a booming voice but carefully articulated manner; he was professorial but not ...
09:58:36 <fizzie> ... overbearing." That's a p. weird way of reporting.
09:58:43 <ion> fizzie: yeah
09:58:56 -!- Phantom__Hoover has joined.
09:59:05 -!- Phantom_Hoover has quit (Ping timeout: 252 seconds).
10:00:52 -!- ais523_ has quit (Quit: Page closed).
10:18:06 -!- tromp__ has quit (Remote host closed the connection).
10:18:09 -!- Phantom__Hoover has quit (Ping timeout: 252 seconds).
10:19:40 -!- tromp__ has joined.
10:33:43 -!- carado has joined.
11:18:28 -!- Slereah has quit (Ping timeout: 245 seconds).
11:26:57 -!- tromp__ has quit (Remote host closed the connection).
11:28:29 -!- tromp__ has joined.
11:35:04 -!- Jafet has quit (Quit: Quit).
11:35:23 -!- Jafet has joined.
11:35:24 -!- Jafet has quit (Changing host).
11:35:25 -!- Jafet has joined.
11:35:30 -!- Jafet has left.
11:38:33 -!- Slereah has joined.
12:23:51 -!- myndzi has quit (Ping timeout: 240 seconds).
12:32:45 -!- myndzi has joined.
12:41:32 -!- Sgeo has quit (Read error: Connection reset by peer).
13:06:42 -!- yorick has joined.
13:07:28 -!- boily has joined.
13:07:36 -!- metasepia has joined.
13:14:16 -!- Frooxius has quit (Read error: Connection reset by peer).
13:15:35 -!- Frooxius has joined.
13:27:50 <boily> quintopia: bontopia matin!
13:39:41 -!- Frooxius has quit (Read error: Connection reset by peer).
13:41:53 -!- Frooxius has joined.
13:42:50 * boily ties Bike and Frooxius together. “With their disconnection powers combined, may they be Present in this Channel and Not Leave!”
13:45:25 -!- oerjan has joined.
13:49:50 <HackEgo> Sgeo is a language nomad. (Not to be confused with a language monad.) He invented Metaplace sex, thus killing it within a month.
13:50:59 -!- Taneb has joined.
13:51:01 <oerjan> `run sed -i 's/$/ He was Doctor Mengele in his previous life, as evidenced by his norn experiments./' wisdom/sgeo
13:51:14 <oerjan> i think the evidence is clear by now.
13:51:18 <HackEgo> Taneb is not elliott, no matter who you ask. He also isn't a rabbi although he has pretended in the past. He has at least two backup keyboards, and five genders. (See also: d-modules)
13:52:37 <boily> oerjan: are you writing down the SGSGS?
13:52:40 <Taneb> It is true that I am not elliott.
13:52:52 <Taneb> I have played the Rabbi in Fiddle orn the Roof
13:52:56 <boily> Strange and Great SGeo Saga.
13:53:17 <Taneb> I used to have two spare keyboards, but I have since thrown one out because it did not work
13:53:19 <oerjan> Taneb: i didn't hear you say any more about it, so i assume the latest auditions didn't go too well.
13:53:28 <Taneb> oerjan: didn't get any parts
13:53:38 <Taneb> Also I realised I really don't have the time
13:53:48 <boily> mechanical keyboards are proliferating in our workplace. mwah ah ah.
13:54:01 <Taneb> The gender thing I can't remember why, probably the kind of joke I make about myself
13:54:37 <Taneb> Someone sharing my surname is cited on the wikipedia page for d-modules
13:54:38 <oerjan> that's because one of the genders is amnesiosexual hth
13:54:44 <HackEgo> Tanebventions include D-modules, automatic squirrel feeders, the torus, and Go.
13:54:55 <Taneb> When did the torus get there
13:55:31 <oerjan> sadly there is no way to find out unless you dare to poke into the murky depths of our hg browser.
13:56:06 -!- augur has quit (Remote host closed the connection).
13:56:22 <boily> I have a vague feeling Taneb's torus is related to chess and pineapples...
13:56:25 -!- augur has joined.
13:56:30 <Taneb> `? people who taneb is not
13:56:32 <HackEgo> elliott, a rabbi, Mark Zuckerberg, James Bond
13:56:44 <Taneb> That is an exhaustive list
13:56:45 -!- augur has quit (Remote host closed the connection).
13:57:11 -!- augur has joined.
13:57:12 <Taneb> Hmm, adding torus I think predates the pdf
13:57:33 <HackEgo> Topologically, a torus is just a torus. Taneb invented them.
13:57:45 <oerjan> http://codu.org/projects/hackbot/fshg/index.cgi/rev/b3ecbbf31355 <-- you definitely are amnesiosexual
13:57:48 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
13:58:29 <oerjan> oh right you keep adding that s
13:59:37 <oerjan> `learn Impomatic never did anything weird enough to get into this database.
14:00:07 <oerjan> `learn impomatic never did anything weird enough to get into this database.
14:00:44 <Taneb> <Taneb> Phantom_Hoover, topologically, a torus is a torus (I think)
14:01:09 -!- augur has quit (Ping timeout: 240 seconds).
14:01:37 <Taneb> In response to <Phantom_Hoover> "Topologically, an elliptic curve is a torus." dude
14:02:25 <boily> browsing the PDF sources, apparently Sgeo is also a wall.
14:04:38 <Taneb> Could one argue that FALSE is the first modern esolang?
14:06:08 <boily> modern? that'd imply we had a classical, a baroque, and a romantic esolanging periods.
14:06:27 <Taneb> boily: classical = P'', baroque = INTERCAL, romantic = Biota
14:07:55 -!- Slereah has quit (Ping timeout: 246 seconds).
14:12:24 <Taneb> @ask ais523 May I "interview" you for an essay on the impact of Turing's paper On Computable Numbers?
14:18:39 <impomatic> Biota wasn't the first 2D programming language.
14:21:47 <impomatic> Mouse reminds me of FALSE and was quite a few years earlier. (I have a copy of Grogono's book)
14:23:26 -!- Taneb has quit (Quit: Page closed).
14:39:52 -!- mrhmouse has joined.
14:45:32 -!- metasepia has quit (Remote host closed the connection).
14:45:37 -!- Phantom__Hoover has joined.
14:46:27 -!- metasepia has joined.
14:46:33 <metasepia> CYUL 261420Z 22012KT 12SM -SHSN BKN030 BKN050 OVC080 01/M04 A3017 RMK SC5SC1AC2 SLP217
14:47:10 <metasepia> ENVA 261420Z 25012KT 9999 VCSH BKN025 07/04 Q1011 TEMPO 25030G40KT RMK WIND 670FT 26017G30KT
14:50:30 <boily> here they are called «abris tempo» → http://www.abristempo.com/
14:53:11 -!- tertu has joined.
14:59:51 -!- Phantom_Hoover has joined.
15:00:56 -!- Phantom__Hoover has quit (Ping timeout: 265 seconds).
15:01:55 -!- realzies has joined.
15:02:26 <HackEgo> realzies: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/wiki/Main_Page>. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
15:06:12 <boily> quintopia: the package, it was received :D
15:06:35 * boily claps with small hands *CLACKACLACKACLACKACLACKACLACKA*
15:06:55 <oerjan> but but these packages were obviously destined to be eternally in transit!
15:07:15 <oerjan> you have doomed us all
15:07:40 <oerjan> boily: your hands sound suspiciously wooden
15:07:41 <boily> the Doom was already Sealed when Roujo and I met irl.
15:07:48 <boily> oerjan: plasticky.
15:07:58 <quintopia> oerjan: we can restore the balance by putting another package in transit asap
15:08:09 <oerjan> quintopia: ah, good thinking
15:09:20 <oerjan> i sense a disturbance in the force
15:10:26 <quintopia> someone else has suggested the world will end anyway due to the alignment of thanksgiving and the start of hanukkah
15:10:45 <oerjan> yes, clearly this has never happened before.
15:11:19 <oerjan> quintopia: maybe it will instead cause thanksgiving to last 8 times as long as usual.
15:12:17 <oerjan> this will _seem_ welcome, until they discover on the 3rd day that this does not extend to turkey supply.
15:12:49 <quintopia> thanksgiving leftovers always last well over a week
15:13:19 <boily> realzies: what brings you here?
15:13:42 <boily> oh. so were you already `relcomed?
15:13:53 <realzies> but I don't remember why I joined
15:13:59 <realzies> ah esoteric programming, sounded interesting
15:14:52 <boily> quintopia: here we have réveillon leftovers. a little bit later in the year, but just about the same: lots of meat and gravy and sauces and things that make you fat even if they had some fruits in them at some time.
15:15:50 <oerjan> "Jean-Baptiste Réveillon, (Paris, 1725 – Paris, 1811) was a French wallpaper manufacturer. Réveillon's career was an exemplary story of the self-made businessman in the Ancien Régime."
15:16:30 <oerjan> quintopia: if you look closely, you can see something missing...
15:16:33 <boily> oerjan: https://fr.wikipedia.org/wiki/R%C3%A9veillon_de_No%C3%ABl
15:17:52 * boily casts a nasty look over at fizzie. “I WANT MY FUNGOT FIX!”
15:18:34 <quintopia> "instant magique pour les enfants". yes please! <3 magic
15:19:44 <oerjan> boily: i note the cross-language links for that are generally like "christmas eve"
15:20:00 <quintopia> boily: it's probably good you got some time off. you seem a bit overly attached. this could be the sign of addiction
15:20:30 <oerjan> but the english wp also has Réveillon by itself
15:22:13 <quintopia> oerjan: do you know anything about polar representation of quaternions
15:22:26 <boily> quintopia: I can quit fungotting any time I want.
15:23:11 <oerjan> hm the picture in french wp is actually swedish christmas eve. by carl larsson, who is of course _the_ painter to use for such.
15:23:56 <boily> quintopia: as oerjan said, “no.”
15:26:48 <oerjan> ooh Réveillon made the paper for the montgolfier balloons
15:28:54 <oerjan> "His wine cellar, containing 2,000 bottles of wine, was pillaged and quickly consumed by the riotious mob. Réveillon and his family escaped by climbing a wall and fleeing to the nearby Bastille."
15:29:20 -!- AnotherTest has joined.
15:34:27 -!- fungot has joined.
15:42:28 -!- Sprocklem has joined.
15:43:04 <boily> fungot: hi there! (and nothing about my mother.)
15:43:04 <fungot> boily: yeah, it kinda is. :) must've been a burp. first time that's happened in a recent email he sent from think.com was in 1993.
15:45:04 <fungot> mrhmouse: it features dolph lundgren. nuff said. :) for me, then period fnord me like that before: mors said i suck. choose two. i'd rather use some sort of
15:57:46 -!- nooodl has joined.
15:58:24 * boily cringes at the sight of that missspelling
15:58:45 <oerjan> the last u was note ven intended
16:00:10 <quintopia> it's the hardest word to spell ever, so...
16:01:00 <boily> YOUR RITED IT WELL.
16:01:35 <quintopia> it has too many vowels relative to consonants
16:01:37 * boily mutters to himself... «à cause que le monde ont de la misère tant que ça avec l'orthographe...»
16:02:05 <boily> the vowels are short!
16:04:24 <boily> hm. that reminds me it's been a long time since I've last disturbed Koen_ with my "horrible" accent :D
16:04:27 <oerjan> i think that's the only plausible simplification
16:04:52 <boily> oerjan: that'd be logicaler, but then you're going against the Académie Française of Décisions Stupides concerning la Langue Française.
16:06:23 <oerjan> boily: maybe someone could arrange to have the academie and the OQLF have an ... accident?
16:19:40 -!- FreeFull has joined.
16:23:51 -!- Slereah has joined.
16:33:36 <boily> oerjan: for the right price, I could.
16:33:46 <boily> (hey, people outside of Québec know about the OQLF! :D)
16:34:34 <oerjan> from this channel, no less
16:34:55 -!- AnotherTest has quit (Ping timeout: 246 seconds).
16:40:43 -!- MindlessDrone has joined.
16:47:16 <Slereah> Does the CPU automatically increment the instruction pointer with each instruction, and if so, what happens once the code reaches the end of the code segment (or addressable memory, even)
16:47:48 -!- Phantom__Hoover has joined.
16:49:40 -!- Phantom_Hoover has quit (Ping timeout: 265 seconds).
16:52:36 <nooodl> i still haven't heard enough canadian french to imagine what boily's accent sounds like
16:52:57 -!- carado has quit (Ping timeout: 252 seconds).
16:53:41 <Slereah> Quebecer accent is hilarious
16:53:44 <Slereah> At least to us french people
16:56:00 -!- ais523 has joined.
16:56:30 <boily> nooodl: sample → http://www.radio-canada.ca/widgets/mediaconsole/medianet/6893298
16:57:29 <lambdabot> You have 2 new messages. '/msg lambdabot @messages' to read them.
16:58:12 <ais523> @tell Taneb I'm not opposed to the idea, but given that I've never actually read that paper, it may be a less informative paper interview than you expect
16:58:39 <ais523> a question that this channel has a decent chance of knowing the answer of
16:58:52 <ais523> is there a monad for which a >>= b is defined as a b?
16:58:57 <ais523> (and does it have a name?)
16:59:33 <ais523> shachaf: I don't think so, but that might inspire me
16:59:44 <ais523> I realised that something I did for work looked a lot like do-notation
16:59:46 <oerjan> shachaf's is the Identity monad.
16:59:52 <ais523> then tried to work out the monad it was the do notation for
17:00:29 <nooodl> well you'd have (a :: m p) and (b :: p -> m q) and (a >>= b :: m q)
17:00:48 <ais523> my do-notation looks something like "(a, b, c) <- x; (d,e) <- y a b; (f) <- z c d e"
17:00:58 <nooodl> the only application you can get outta there is "b a" where m is Identity
17:01:23 <ais523> which desugars into \q.x(\(a,b,c).y(\(d,e).z(\f.q)))
17:01:58 <shachaf> OK, maybe that's a continuation monad of some sort?
17:02:10 <oerjan> ais523: given that a >>= return = a for all monads, what would return be in yours?
17:02:23 <shachaf> Or trying to be one somehow.
17:02:38 <ais523> oerjan: I'm not sure, I just noticed the similarity to do-notation
17:02:43 -!- Sprocklem has quit (Ping timeout: 265 seconds).
17:02:57 <ais523> which made me think there might be a monad in there somewhere
17:03:29 -!- carado has joined.
17:03:39 <oerjan> you would need a return = a (with some newtype wrapping for the types to even work)
17:03:59 <ais523> perhaps a >>= b = a b is the wrong definition
17:04:13 <shachaf> I'm not sure I understand your desugaring.
17:04:29 <ais523> that seems a lot saner
17:05:44 <oerjan> now you need return x . b = b x
17:06:03 <ais523> wait, which way round does compose go?
17:06:26 <ais523> \x.(a >>= b) x = b(a(x))
17:06:40 <lambdabot> Couldn't match expected type `t1 -> t0' with actual type `Expr'
17:06:40 <lambdabot> The function `b' is applied to one argument,
17:06:49 <ais523> :t \b -> \a -> \x -> b(a(x))
17:06:50 <lambdabot> (t1 -> t) -> (t2 -> t1) -> t2 -> t
17:07:06 <ais523> OK, then (>>=) = flip (.)
17:07:14 <ais523> sorry for being so bad at Haskell :-(
17:07:25 <shachaf> ais523: What happens to the "y a b" and "z c d e" in your desugaring?
17:08:29 <ais523> it produces \q->x(\(a,b,c)->(y a b)(\(d,e)->(z c d e))(\f->q)))
17:08:59 <ais523> apologies for the gratuitous Verity
17:09:10 <ais523> I'll try to remember that Haskell uses -> not . in its lambdas
17:09:35 <shachaf> I'm not sure I see how that "q" thing is working.
17:09:36 <oerjan> ais523: i think you still have some parentheses wrong there, but otherwise it's the Cont monad.
17:09:49 <ais523> I can believe that this is Cont
17:10:29 <ais523> the application for this is that I'm trying to write a linker
17:10:40 <lambdabot> Source not found. Do you think like you type?
17:10:46 <lambdabot> Source not found. You untyped fool!
17:10:56 <lambdabot> m >>= k = Cont $ \c -> runCont m $ \a -> runCont (k a) c
17:11:12 <shachaf> @djinn-add type Contt r a = (a -> r) -> r
17:11:16 <ais523> that links together various libraries which are basically just open terms
17:11:21 <oerjan> int-e: please fix @src to be parenthesis-insensitive thx
17:11:27 <shachaf> @djinn Contt r a -> (a -> Contt r b) -> Contt r b
17:11:50 <oerjan> @tell int-e please fix @src to be parenthesis-insensitive thx
17:12:57 <oerjan> ais523: oh your \q is actually correct
17:12:59 -!- Phantom_Hoover has joined.
17:13:29 <quintopia> why don't we ever get to talk to keymaker
17:13:30 <ais523> oerjan: I thought it would be, otherwise I don't see how >>= would be associative
17:13:41 <shachaf> Oh, another reason it didn't make sense is that you don't have a ... at the end of the do block.
17:13:51 <shachaf> You don't actually mean a lone "q" at the end there, I guess.
17:14:16 -!- Phantom__Hoover has quit (Ping timeout: 264 seconds).
17:14:21 <ais523> I don't have a lone \q at the start either, though
17:14:55 <oerjan> <quintopia> why don't we ever get to talk to keymaker <-- i don't think he uses irc?
17:15:07 <shachaf> A do block can't end on a <-, anyway.
17:17:10 <HackEgo> not lately; try `seen output ever
17:17:20 <HackEgo> #! /usr/bin/env perl \ ($n,$e)=split /\s+/, join(" ",@ARGV); $n=~s/ *$//; $c="ls -r /var/irclogs/_esoteric/????-??-??.txt"; $c.=" | head -n 30" unless $e eq "ever"; @f=split /\s+/, `$c`; for $f (@f) { open F,"<$f"; @l=grep(/^..:..:..: <$n>/i,<F>); close F; if (@l) { $b=$f; $b=~s#.*/(.*?).txt#$1#; print "$b $l[-1]"; exit 1; } } print $e eq "ever
17:17:31 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/seen
17:17:36 <quintopia> but you're not *really* a part of the community if you're not in the channel RIGHT
17:18:18 <oerjan> it's not supposed to give no output if it doesn't find somewhere, so it's probably timing out
17:18:39 <oerjan> which of course means he hasn't been here in a _long_ time.
17:18:55 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.28419
17:19:25 <oerjan> heh he was here in 2004
17:19:59 <oerjan> `pastelogs keymaker has
17:20:08 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32253
17:20:37 <quintopia> i was not here in 2004. i didn't even create spiral until 2004.
17:21:34 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/pastelogs
17:21:52 <quintopia> so maybe that was when keymaker came into existence
17:21:59 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/pastelog
17:22:30 <oerjan> the stopping is written into the pastelogs program.
17:22:40 -!- Phantom_Hoover has quit (Ping timeout: 264 seconds).
17:24:18 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20577
17:24:53 <quintopia> so, anyway speaking of keymaker, Etre really is a tour de force in my opinion. there couldn't have been an easier lang to implement in SELECT.
17:25:57 * quintopia foresees a future in which all new imperative tape languages are reduced from Etre rather than BF
17:28:06 -!- oerjan has quit (Quit: that's irrelevant to TC-ness, boily).
17:28:53 <ais523> quintopia: it's necessary for BF-completeness
17:28:57 <ais523> which is a real, interesting category
17:29:33 <ais523> fwiw, if I have a lang that's really /really/ eso and want to prove it TC, then cyclic tag tends to be easiest
17:31:38 <ais523> BCT is a specific syntax for cyclic tag
17:31:58 <ais523> just like you can invent a syntax for Turing machines, say
17:32:13 <ais523> but Turing machines are a concept that exists independent of syntax
17:32:26 <quintopia> is it? i thought it was just specifying the alphabet was 10 and a specific rule for when to apply the production
17:33:13 <ais523> cyclic tag always has an alphabet of two symbols
17:33:22 <ais523> it's the original tag that can have more
17:33:31 <quintopia> cyclic tag would have been harder to implement than etre for SELECT.
17:34:18 -!- FreeFull has quit (Ping timeout: 245 seconds).
17:34:35 <ais523> hmm, really? that surprises me
17:35:16 <ais523> etre needs an extendable tape, whereas cyclic tag needs a queue, which mostly uses the same structure but doesn't need an internal pointer
17:36:21 -!- FreeFull has joined.
17:36:26 <quintopia> but an infinite tape is already a feature in SELECT
17:37:12 -!- impomatic has left.
17:37:23 <quintopia> as it is in most imperative tape languages
17:44:03 <ais523> yeah but I consider those uninteresting :-)
17:45:31 <quintopia> they don't have to be uninteresting. depends on what your goals are
17:46:40 <quintopia> speaking of which, i came up with a new lang. partially. basically it's oklopol's minigolf idea in 3D. interesting because i have a TC proof.
17:46:42 <boily> something I haven't seen yet: a Game of Life where cells are fragments of a 2D esolang.
17:47:14 <quintopia> (although i am not trying to encode anything in the decimal digits)
17:49:12 <boily> quintopia: after reimplementating metasepia.
17:49:42 <quintopia> boily: inventing a languabe is not nearly so time-consuming as implementing *anything*
17:50:52 <fizzie> Eat a languava, it's healthy.
17:50:56 <boily> `run echo 'Languabes are edible and fun. They provide a quick implementation energy boost!' >wisdom/languabe
17:53:04 -!- nisstyre has quit (Quit: Leaving).
17:55:18 <shachaf> Did you figure out your monad?
17:57:56 <ais523> shachaf: yeah, it was Cont
17:58:49 <shachaf> Codensity is even better, of course.
18:16:15 <ais523> btw, today I had a complaint that Verity wasn't sexp-based, making it harder to implement a macro syste
18:16:29 <ais523> my conclusion for this is that the world generally needs better ways to manipulate parse trees
18:16:50 <Bike> @tell zzo38 i don't think opencl c even has provisions for exceptions
18:17:22 <ais523> how would you implement an exception happening in some threads and not others?
18:17:45 <ais523> even if statements are a little tricky to implement at anything finer-grained than the warp level
18:18:08 <ais523> closest you can get is to do the calculations anyway and just not store the data anywhere
18:18:44 <ais523> incidentally, Don Knuth apparently uses this technique when writing INTERCAL
18:19:04 <ais523> not because it's necessary, but because he finds it easier than actually writing a control flow statement
18:22:07 <quintopia> i like don. he seems like a p cool guy.
18:22:09 <boily> fungot: how many warps do you support?
18:22:09 <fungot> boily: hmm. when was it pebble and co surge?
18:22:49 <boily> fungot: pebbles are smart watches. the co-everything are propagated by Nutty Categoricists.
18:22:50 <fungot> boily: forth is worth learning ( for chicken at least behaves much like emacs lisp to me. all you need is
18:23:37 <ais523> quintopia: his secretary has actually emailed me, because esr CCed me on an email to him and it went reply-all from then on
18:23:49 <ais523> he was commissioning a new version of C-INTERCAL
18:23:54 <ais523> some day, we may find out why
18:23:56 <shachaf> his secretary has emailed me also
18:24:42 <quintopia> ais523: why is a new version necessary? is the spec changing?
18:25:05 <ais523> quintopia: he just wanted a bugfix release, it seems
18:25:14 <shachaf> i was accidentally removed from the bank of san serriffe page
18:25:15 <ais523> just to make sure everything was up to date
18:25:50 <ais523> yes, we find them every now and then
18:26:20 <ais523> here's a particularly nasty one I fixed a couple of months ago: https://gitorious.org/intercal/intercal/commit/a905156af4fd2ab88036f59c13321081bd203d47
18:32:38 <ais523> even better, the bug was in the build system so you don't need to know any INTERCAL to understand it
18:35:43 <ais523> quintopia: ick is the Intercal compiler library
18:35:49 <ais523> and pit is the directory containing the testsuite
18:37:16 -!- activ_Trinidad has joined.
18:37:24 <boily> `relcome activ_Trinidad
18:37:27 <HackEgo> activ_Trinidad: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/wiki/Main_Page>. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
18:37:46 <HackEgo> activ_Trinidad: ¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: http://esolangs.org/wiki/Main_Page. (Para el otro tipo de esoterismo, prueba #esoteric en irc.dal.ne
18:37:49 <Slereah> How many bots are around nowadays
18:38:12 -!- nisstyre has joined.
18:38:43 <nooodl> where is the bot prefix list again
18:38:58 <mrhmouse> nooodl: there's a bot prefix list?
18:39:39 <fungot> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, jconn ) , blsqbot !
18:40:02 <quintopia> (if things were sane, it would be accessible by just saying "prefices" on its own line without any prefix)
18:40:40 <HackEgo> not lately; try `seen blsqbot ever
18:40:45 <HackEgo> 2013-03-08 14:18:29: <blsqbot> Pong!
18:44:10 <HackEgo> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, jconn ) , blsqbot !
18:44:14 <EgoBot> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, jconn ) , blsqbot !
18:44:54 <mrhmouse> Doesn't lambdabot also respond to > ?
18:45:30 <fizzie> It's not quite the same sort of prefix, but admittedly it is a kind of a prefix.
18:45:46 <mrhmouse> well, I mean, it invokes lambdabot
18:45:58 -!- activ_Trinidad has quit (Remote host closed the connection).
18:46:07 <fizzie> lambdabot: You're such a prefix-hog.
18:46:32 -!- activ_Trinidad has joined.
18:46:35 <mrhmouse> at least it doesn't respond to its name
18:46:43 <shachaf> @pinky Are you thinking what fizzie is thinking?
18:46:43 <lambdabot> But where will we find an open tattoo parlor at this time of night?
18:46:55 <fizzie> I don't think I'm thinking the same.
18:46:56 <lambdabot> Maybe you meant: . 1337 ? @ activity activity-full admin all-dicts arr ask b52s bf bid botsnack bouvier brain bug check choice-add choose cide clear-messages clear-topic compose define dequeue-topic devils dice dict-help djinn djinn-add djinn-clr djinn-del djinn-env djinn-names djinn-ver do docs dummy easton echo elements elite eval faq farber
18:46:56 <lambdabot> flush foldoc forget fortune free freshname gazetteer get-shapr get-topic ghc girl19 google googleit gsite gwiki hackage haskellers help hitchcock hoogle hoogle+ id ignore index instances instances-importing irc-connect irc-password jargon join karma karma+ karma- karma-all keal kind l33t learn leave leet let list listall listchans listmodules
18:46:56 <lambdabot> listservers localtime localtime-reply messages messages-loud messages? more msg nazi-off nazi-on nixon oeis offline palomer part paste ping pinky pl pl-resume pointful pointless pointy poll-add poll-close poll-list poll-remove poll-result poll-show pop-topic pretty print-notices protontorpedo purge-notices push-topic queue-topic quit quote rc
18:46:56 <lambdabot> reconnect remember repoint roll run sequence set-topic shift-topic shootout show slap smack spell spell-all src tell thank you thanks thesaurus thx tic-tac-toe ticker time todo todo-add todo-delete type undefine undo unlambda unmtl unpf unpl unpointless unshift-topic uptime url v vera version vote what where where+ wiki wn world02 yarr yhjulwwiefzo
18:47:02 <quintopia> to anyone good at hackego: the bienvenido message drops a "t" at the end
18:47:18 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
18:47:30 <shachaf> @help yhjulwwiefzojcbxybbruweejw
18:49:03 <lambdabot> Look and Say sequence: describe the previous term! (method A - initial term ...
18:49:24 -!- Nisstyre-laptop has joined.
18:50:04 -!- Nisstyre-laptop has quit (Read error: Connection reset by peer).
18:50:16 <lambdabot> ["(++)","ConfusedWithVixenSituation","FlavaOfJRuby","Prelude-(.)?","best-programming-language","best-spoken-language","food","funniest-thing-in-the-whole-world","naming","nethack","president","prove->","remove@src","sleep"]
18:50:33 <shachaf> @poll-result funniest-thing-in-the-whole-world
18:50:33 <lambdabot> Poll results for funniest-thing-in-the-whole-world (Open): unintentionally-funny-situations=1, Poles=1
18:50:50 <lambdabot> Poll results for nethack (Open): Val_Dwa_Fem_Law=1, Wiz_Elf_Mal_Cha=1
18:51:03 <ais523> that wizard should be a gnome :-(
18:51:26 <fizzie> @poll-result best-spoken-language
18:51:26 <lambdabot> Poll results for best-spoken-language (Open): magyar=3, Polish=484, Welsh=1, Georgian=2, Manx=1, norwegian=8
18:51:26 <ais523> shachaf: you get to play neutral
18:51:29 <ais523> and their caps are easily high enough
18:51:31 <shachaf> I always played Wiz_Elf_Mal_Cha back in the day.
18:51:36 <ais523> and they're not human, which is the really important thing
18:51:41 <fizzie> Wow, that's quite a win for Polish.
18:51:45 <shachaf> What's the advantage of being neutral?
18:51:59 <ais523> no chaotic disadvantages, and you get the best artifact selection
18:52:24 <shachaf> You can get Magicbane and the quest artifact anyway.
18:52:33 -!- activ_Trinidad has quit (Remote host closed the connection).
18:52:45 <shachaf> What are the chaotic disadvantages?
18:52:55 <shachaf> And the artifact advantages?
18:53:01 <shachaf> (I haven't played NetHack in quite a while.)
18:54:06 <ais523> artifact advantages: there is 1 useful lawful artifact and basically 0 useful chaotic artifacts (best is the MKoT, which isn't really good)
18:54:13 <ais523> also the lawful artifact's only really good on speedruns
18:54:18 <ais523> there are like 5 or 6 viable neutral artifacts
18:54:24 -!- activ_Trinidad has joined.
18:54:46 <ais523> chaotic disadvantages (and advantages) are all minor but there are a lot of them
18:54:51 <ais523> quite a lot to keep in track
18:54:58 <ais523> god mollification is a big one, it's harder for chaotics
18:55:33 <shachaf> I remember there being less of a penalty for killing shopkeepers, or something.
18:56:18 <ais523> yeah, but if you're powerful enough to kill the shopkeeper, the penalty mostly doesn't matter anyway
18:56:42 <shachaf> Maybe I should play NetHack 4.
18:57:43 <ais523> shachaf: you might want to wait a couple of weeks, we're working on a stable version atm
18:58:12 <Slereah> I'm trying to do stuff with the stack, but the assembler bitches when I do this :
18:58:30 <Slereah> Is it a syntax problem or can you not move the stack pointer?
18:58:41 <shachaf> I'm not sure what that's supposed to mean.
18:58:44 <ais523> what's the comma after 2 for
18:58:55 <shachaf> what's the mov after the comma for
18:59:12 <Slereah> I just wanted to paste it here in one line
18:59:40 <Slereah> I get "reserved word used as symbol"
19:00:13 <ais523> I was wondering whether derefencing sp is allowed, but it probably is due to omit-frame-pointer
19:00:34 <Slereah> for mov dx, [sp], no idea which part
19:00:42 <shachaf> Yes, it should be fine (at least on 32-bit x86?).
19:00:44 <shachaf> I don't know Intel syntax very well.
19:02:16 <shachaf> Do you need to specify "dword" or something?
19:04:35 <shachaf> I guess it'd be "word" or whatever it's called. But I don't think that's the issue.
19:06:52 -!- Taneb has joined.
19:06:52 <Slereah> Right, I think addresses are 4 bytes
19:07:05 <shachaf> Why are you using sp, then?
19:07:18 <Slereah> Just looking at the content of the stack
19:08:45 <quintopia> if he had esp, he'd already know the answer
19:08:53 <quintopia> he'd just read some intel guru's mind
19:08:58 <Slereah> Yes, but when you use it in an address, it points to a 4 bytes object, no?
19:09:20 <Slereah> Which I guess is the problem
19:09:49 <Slereah> So it would either be mov edx,[sp] or mov dx, byte ptr [sp], I guess
19:14:38 <kmc> you shouldn't need "word ptr" for "mov dx, [sp]" because the size is known from the destination being a 16-bit register
19:15:29 <kmc> and I thought Slereah is doing 16-bit programmin'
19:15:52 <shachaf> I thought so too, but in that case what's the "addresses are 4 bytes" deal?
19:15:59 <kmc> wrongness?
19:16:33 <Slereah> Then I don't know the problem
19:16:52 <kmc> I think maybe [sp] addressing modes just don't exist in 16-bit
19:17:03 <kmc> does the code assemble if you change sp to another register?
19:17:34 <kmc> 16-bit x86 is less orthogonal than the newer versions; it's more of a thing that ax is the "accumulator" and bx is the "base" and such
19:17:42 <kmc> this affects what you can do with them
19:17:53 <shachaf> Oh, looks like that's right.
19:18:10 <Slereah> Maybe flat assembler doesn't use []
19:18:19 <shachaf> I tried getting this working here and it didn't work with mov edx,[esp] either.
19:18:31 <shachaf> But I think that was an issue with GNU as's Intel mode or something.
19:18:44 <shachaf> Because I did manage to get code that disassembled to that.
19:18:49 <Slereah> So I guess sp is the problem
19:18:58 <Slereah> Is there a way to get the value of the stack pointer?
19:19:10 <kmc> Slereah: yeah, you can use bp, si, di, bx as pointers, but maybe not the other regs in 16-bit mode
19:19:31 <kmc> Slereah: mov ax, sp
19:19:46 <Slereah> So I guess what I want is like
19:21:26 -!- Sprocklem has joined.
19:21:35 <Slereah> Any less circuitous way to get a value from the stack without popping it?
19:22:16 <kmc> you could just pop and then sub sp, 2 ;P
19:22:35 <shachaf> I think that's probably more circuitous, though.
19:22:43 <Slereah> Wouldn't I need add sp, 2?
19:22:47 <Slereah> To put the pointer back up?
19:22:55 <kmc> the stack grows towards smaller addresses
19:22:57 -!- AnotherTest has joined.
19:23:12 <kmc> this confuses roughly everyone at some point
19:23:16 <Slereah> I guess both are as circuitous
19:23:56 <shachaf> how did i find out all these things
19:24:03 <shachaf> probably by looking at disassembled code
19:24:34 <Slereah> I wish assembly was a bit less stringent with its functiond
19:24:44 <Slereah> Just treating all registers the same way
19:24:48 <Slereah> Except for specific functions
19:24:57 <shachaf> why are you writing 16-bit x86
19:25:02 <kmc> well, the newer versions of x86 are more like that
19:25:08 <kmc> and other architectures even moreso
19:25:27 <kmc> in the original ARM architecture, even the instruction pointer is an ordinary register that can be used as an operand for anything else
19:25:38 <kmc> Slereah: it does, however you'd need to write the code to switch to 32-bit mode yourself, which is gross
19:25:45 <kmc> or hook into some "dos extender"
19:25:54 <Slereah> I'll wait to be a bit more experimented first
19:25:57 <kmc> you could just write 32-bit Linux programs in assembly instead
19:26:01 <kmc> 16-bit is fun
19:26:06 <kmc> you can write a boot sector graphics demo :)
19:26:17 <Slereah> I find it weird that they always say "you can't change the IP!" everywhere
19:26:24 <Slereah> But JMP is basically mov ip
19:27:01 <kmc> you can even do "jmp [some_addr]" which is like "mov ip, [some_addr]"
19:27:03 <kmc> or "jmp ax"
19:27:25 <shachaf> there's even conditional move into ip
19:27:30 <ais523> you can actually do a mov ip on a PIC, but the jmp is more efficient because there are only two registers you can assign a constant to, and one of them's the IP
19:28:07 <Slereah> Can I move the IP in such a way that the variables are interpreted as functions?
19:28:41 <Slereah> 123456 is [opcode 12] 34 56
19:28:50 -!- muskrat has joined.
19:28:53 <Slereah> And then it reads as [opcode 34] 56
19:29:07 <ais523> sometimes that's used for golfing, or obfuscatoin
19:29:13 -!- muskrat has quit (Client Quit).
19:29:38 -!- activ_Trinidad has left.
19:31:28 -!- MindlessDrone has quit (Quit: MindlessDrone).
19:39:55 <HackEgo> pbflist: shachaf Sgeo quintopia ion
19:40:02 <HackEgo> pbflist: shachaf Sgeo quintopia ion
19:40:42 <boily> `peanut-butter-fjelly-list
19:40:44 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: peanut-butter-fjelly-list: not found
19:41:12 <shachaf> You would've gotten higher-quality updates, and earlier.
19:45:07 <kmc> _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR operator int __nat::*() const {return 0;}
19:45:30 <ais523> I can see why that was wanted always inline
19:45:35 <ais523> and it looks like an excellent candidate for constexpr
19:45:54 * kmc can't parse operator int __nat::*()
19:46:05 <kmc> "operator int" is a fine name for a function
19:46:08 <ais523> yeah, constexpr is useful in case you want to parse something in terms of it
19:46:18 <ais523> kmc: isn't that the name of the "(int)" cast that casts things to int?
19:46:28 <kmc> yeah but what's the "__nat::*()" doing
19:47:12 <ais523> gah, my attempted fix to the random compose key breakages didn't help
19:47:40 <kmc> shachaf: it's from libc++ i guess
19:47:45 <kmc> "it's from compiler errors"
19:47:51 <ais523> perhaps it's an int*, with a weird order
19:48:18 <Slereah> Man the part that's really gonna be shitty is when I'll have to learn protected mode
19:48:25 <Slereah> Can't understand much so far
19:48:34 <shachaf> Oh, https://llvm.org/viewvc/llvm-project/libcxx/trunk/include/cstddef?revision=111750&pathrev=113270 clears up a bit about it, maybe.
19:48:53 <kmc> Slereah: writing ordinary userspace code to run under a typical protected mode OS is nice and simple
19:49:05 <kmc> Slereah: putting the CPU into protected mode yourself, i.e. writing a protected mode OS, is not simple
19:49:34 <Slereah> I can't seem to quite grasp it
19:49:39 <kmc> what about it
19:50:26 <Slereah> The global descriptor table, I guess
19:50:49 <kmc> the basic thing is that in real mode, the segment selector registers (cs ds es ss fs gs) are just a value that gets multiplied by 16 and added to your address, but in protected mode they are indexes into one of these descriptor tables
19:51:08 <kmc> each entry ("segment descriptor") in the descriptor table describes a segment
19:51:08 <Slereah> But how do you fill these tables
19:51:21 <kmc> they live in memory
19:51:34 <shachaf> What is the type "int T::*"?
19:51:39 <Slereah> And why does the code even have overlapping segments?
19:51:49 <kmc> you just build those structures in memory and then use the "sgdt" instruction to set the global descriptor table base
19:52:26 <kmc> Slereah: what about it's weird?
19:52:28 <kmc> or what do you mean
19:52:51 <fizzie> (It's like, LGDT loads the GDT register from memory, and SGDT stores it into memory, like other L/S pairs.)
19:53:07 <Slereah> Why aren't the address built as DS * 1000h + DI instead of * 10h
19:53:21 <kmc> you're back to real mode now
19:53:42 <Slereah> I guess what I'm asking is, why did they even need protected mode to access all memory
19:54:06 <kmc> because real mode had already been defined that way
19:54:10 <kmc> but I think I can explain why, too
19:54:34 <kmc> basically it's handy for a kind of position independent code
19:54:36 <fizzie> shachaf: "ptr-operator: * cv-qualifier-seq_opt | & | ::_opt nested-name-specifier * cv-qualifier-seq_opt" is part of the C++ declarator syntax, but I can't quite figure out what it means.
19:54:50 <kmc> your code doesn't need to know where it lives in physical memory, as long as CS is properly initialized when it runs
19:55:40 <Slereah> Yes, but in that case, why not let DI or whatever offset run the full course of the segment
19:56:00 <Slereah> Sure, but then you get overlap
19:56:08 <kmc> a "segment" in the real mode context is just 2^16 consecutive bytes
19:56:20 <kmc> with 16-byte alignment
19:56:49 <kmc> if you're adjusting CS to relocate code then you want it to be *10h so that you can put it on any 16-byte-aligned address
19:57:08 <kmc> if it were *10000h then you could only put it at one of 16 different points
19:57:15 <kmc> Slereah: yes, meaning the address is a multiple of 16
19:57:40 <kmc> (one of 16 different points, assuming the physical address size is still 20 bits)
19:58:19 <Slereah> So does the protected mode allow you 2^32 addresses by having the two address arguments not overlap?
19:58:28 <shachaf> template <class _Tp, class _Up>
19:58:28 <shachaf> operator _Tp _Up::* () const {return 0;}
19:58:28 <Slereah> (And be indexed by a table as a nicety)
19:59:09 <fizzie> shachaf: Actually, are you sure operator int __nat::*() const {return 0;} isn't just the same as int __nat::operator *() const { return 0; } ?
19:59:42 <fizzie> As in, an overload for the unary * with a return type of int.
19:59:53 <kmc> Slereah: well, firstly, let's ignore the 286's weirdo 16-bit protected mode
20:00:06 <shachaf> fizzie: Yes, because it gives a different error message.
20:00:20 <kmc> in that case, "protected mode" also means "32-bit mode", and the base specified in a segment descriptor is 32 bits
20:00:28 <kmc> so they still overlap... 32-bit base plus 32-bit pointer
20:00:50 <Slereah> Backward compatibility is nice but damn, you have to drag some shit
20:00:52 <kmc> in fact there's no multiply now
20:01:12 <kmc> i mean this overlapping isn't backwards compat though
20:01:17 <kmc> it's a totally different CPU mode
20:01:25 <Slereah> Yeah, but the fact that real mode is still around
20:01:43 <Slereah> And still being real mode in 16 bits
20:01:46 <kmc> not only that but there's a new "Virtual 8086" mode in the 386 which lets you run real mode code within a protected mode OS
20:01:55 <Slereah> Apparently there's a long mode with 64 bits registers
20:01:59 <kmc> that's right
20:02:06 <kmc> that's x86-64 i.e. amd64
20:02:09 <Slereah> And yet the CPU still has to drag around the 16 bits mode
20:02:15 <Slereah> Like some old grmapa in a wheelchair
20:02:31 <kmc> at least with EFI you don't need to write 16-bit code when you write an OS, anymore
20:03:00 <Slereah> Are there any CPUs that don't have backward compatibility issues like that?
20:03:06 <Slereah> And are just servicable on their own
20:03:18 <kmc> non-x86 CPUs
20:03:20 <tertu> i wonder to what extent real mode is basically a complete 8086
20:03:29 <kmc> like, Alpha was 64-bit from the beginning
20:04:01 <kmc> i don't know if there are (say) MIPS64 or AArch64 (64-bit ARM) chips that only run in those modes
20:04:04 <kmc> i expect not
20:04:33 <kmc> if you're putting a soft MIPS64 in your FPGA, you probably don't want to waste FPGA resources on compat modes
20:04:38 <kmc> so I bet you can disable them for that
20:04:56 <tertu> Intel did make a 386 or two that could only run in 32-bit protected mode, but nothing like that since then
20:05:10 <kmc> and anyway MIPS and ARM and PowerPC don't have any legacy 16-bit mode like x86 has
20:05:13 <Slereah> I wonder how far back the compatibility extends
20:05:19 <kmc> tertu: oh, interesting! do you have some info on that?
20:05:29 <Slereah> Like could you still install the old DOS on modern CPUs
20:05:50 <tertu> https://en.wikipedia.org/wiki/Intel_80376
20:05:57 <tertu> yeah DOS runs on modern cpus
20:06:06 <tertu> compatibility goes back to the 8086
20:06:12 <kmc> tertu: nice
20:06:22 <tertu> try sticking a freedos boot cd in your computer, it'll work and that's all real mode code
20:06:23 <kmc> i'm always interested in non-PC-compatible x86 platforms
20:07:07 -!- impomatic has joined.
20:07:08 <Slereah> One day we will have quantum computers and they will have a fucking 16 qbit mode
20:07:29 <Slereah> There's gonna be 16 atoms just there to run the DOS
20:07:41 <tertu> yeah I like seeing the x86 used in non-pc things
20:07:53 <boily> (A)bort, (R)etry, (D)o both
20:07:59 <tertu> nowadays the chips are so tied to being pcs though
20:08:08 <kmc> the OLPC XO-1 is an x86 platform with OpenFirmware
20:08:59 <Slereah> I wish there were quantum computers out by now
20:09:03 <tertu> at some point somebody's going to just go fuck ISA, fuck all this 80s legacy shit
20:09:10 <Slereah> I could at least use my half quantum physics half software engineering diploma
20:09:19 <kmc> the 80s are here to stay man
20:09:21 <Slereah> I wonder what quantum assembly looks like
20:09:36 <kmc> cool you have a quantum physics diploma?
20:09:38 <impomatic> There's a quantum version of Core War
20:09:41 <tertu> right now i think quantum computers work by physically arranging bits somehow
20:09:50 <tertu> like they're at the eniac stages
20:09:55 <shachaf> fizzie: Oh, I think it's a member pointer.
20:10:17 <tertu> yeah but no stored program
20:10:20 <tertu> you had to wire it in
20:10:21 <Slereah> Or did they recode it by rewiring?
20:10:31 <tertu> eventually they hacked it up to support stored programs though
20:10:58 <fizzie> shachaf: I had just arrived at that same conclusion.
20:11:00 <tertu> but that was after other computers that actually supported it from the start were built
20:11:02 <boily> in the future, we'll have holographic cubes. (mind you, those will be 80-column cubes, EBCDIC)
20:11:22 <Slereah> http://arxiv.org/ftp/quant-ph/papers/0201/0201082.pdf
20:11:35 <Slereah> I want to put that on my resume
20:11:47 <Slereah> I am an expert in quantum COBOL
20:11:52 <kmc> shachaf: ?
20:11:57 <fizzie> shachaf: In retrospect, I guess that should've been pretty obvious, and I thought of it, but then for some reason discarded the idea.
20:12:05 <impomatic> Quantum Core War is described here http://www.freelogy.org/wiki/Coreworld_QTAAS
20:12:05 <Slereah> Imagine the esolangs you could do
20:12:31 <shachaf> kmc: It's pointer-to-member syntax.
20:12:36 <shachaf> E.g. http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Flanguage%2Fref%2Fcplr034.htm
20:12:43 <boily> in a world... saturated with quantum brainfuck derivatives... a young boy is about to discover his destiny...
20:13:09 <kmc> shachaf: yeah i thought it might be
20:13:10 <fizzie> So, a conversion operator into a pointer-to-int-member-of-__nat.
20:13:20 <kmc> but couldn't make it fit
20:13:33 <tertu> also for anybody who knows modern x86 architecture: do individual PCIX devices get assigned IO ports still
20:13:43 <kmc> but what fizzie said makes sense
20:13:46 <kmc> and is also terrifying
20:14:03 <boily> hm? I fail to see the terror in fizzie's utterances.
20:14:29 <fizzie> boily: Then you've been C++-infected. We're going to have to put you out, sorry.
20:15:04 <kmc> how i learned to stop worrying and love c++
20:16:09 <boily> fizzie: oh well. my only regret is to not have eaten as much sushi as I would have liked.
20:17:17 <Slereah> I wonder how close is a commercially available quantum CPU
20:17:29 <kmc> there's that one company which claims to sell a quantum computer
20:17:32 <kmc> but people think it's bullshit maybe
20:17:48 <kmc> http://en.wikipedia.org/wiki/D-Wave_Systems
20:18:15 <kmc> it might be more of a special purpose device for quantum annealing, and not something which can implement an arbitrary quantum circuit
20:19:27 <boily> can we emulate quantomputing on regular hardware?
20:19:42 <Slereah> It's a pretty old result, actually
20:19:55 <Slereah> Probabilistic Turing machines have the same power as regular Turing machines
20:20:08 -!- muskrat has joined.
20:20:36 <Slereah> Either by emulating all possible outputs, or if you can cheat, pseudo randum generator
20:21:21 <kmc> i don't think doing it with a PRNG is satisfactory for the computability-theoretic result
20:21:27 <kmc> but people do things like that in complexity theory
20:22:07 <kmc> if you can invent a PRNG which no poly-time algo can distinguish from true randomness, then you've proven BPP = P
20:22:12 <kmc> this is called derandomization
20:22:21 -!- Slereah_ has joined.
20:22:23 <Slereah_> Like, if you have QUANTUM BRAINFUCK
20:22:29 <Slereah_> If there's a probability popping up
20:22:42 <Slereah_> And work on the two tapes with the program
20:22:43 <kmc> of course it's not known whether BPP = P; nobody has been able to do this yet
20:22:49 <ais523> why do so many people not understand how quantum computers work
20:22:55 <ais523> kmc: does P = NP iply that?
20:23:06 <kmc> ais523: yes, BPP is contained in NP
20:23:19 <kmc> Slereah_: https://complexityzoo.uwaterloo.ca/Complexity_Zoo:B#bpp
20:23:44 <kmc> that definition of BPP actually doesn't refer to "randomness" per se
20:23:49 <kmc> and makes it more obvious that BPP is in NP
20:24:13 <kmc> but basically, BPP is the class of problems that can be solved efficiently on a TM if you have randomness
20:24:41 <kmc> the probability of a wrong answer needs to be sufficiently far from 1/2 that you can run the machine n times to get an O(2^n) reduction in the error rate
20:25:00 -!- Slereah has quit (Ping timeout: 245 seconds).
20:25:23 <Taneb> ais523, as the person credited with the proof of the universality of Wolfram's 2-3 machine, how important do you think it is to prove or disprove the Turing-completeness of things?
20:25:38 <Slereah_> He has a sick sexual fetish for it
20:26:38 <ais523> Taneb: I think it's fun, but except when you're trying to design a sandbox or similar intentionally sub-TC system, it's less practically important than the question of whether it can run practically useful programs in a reasonable amount of time
20:27:26 <kmc> ais523: I think people misunderstand quantum computers because there are a lot of appealing but false analogies to classical computers, and because quantum mechanics is fucking weird
20:27:37 <ais523> elliott: I'm using Helvetica for parts of my thesis, but it keeps giving me the uncanny valley effect because it's not Arial
20:27:43 <ais523> like, it's more perfect, but it seems wrong as a result
20:27:47 <kmc> and maybe a little bit of the "programmers are experts at everything and can work anything out from first principles" bias
20:27:47 <Slereah_> I don't think QM is *that* relevant to quantum computing
20:28:01 <Slereah_> Basically it's just the state superposition that is relevant to it
20:28:09 <kmc> and measurement
20:28:20 <ais523> and the fact that you can rotate probabilities
20:29:15 <Slereah_> The SUPERTURING computer designs
20:29:21 <Slereah_> They will never be fucking built
20:29:21 <ais523> actually rotating probabilities is probably the weirdest part, it's necessary for any sort of understanding of how quantum computers work
20:29:25 <ais523> and yet it intuitively makes no sense
20:29:43 <Slereah_> What is the probability rotation in quantum terms?
20:29:51 <kmc> the state of a QC isn't directly made of probabilities either
20:30:30 <ais523> Slereah_: well probabilities of things in quantum mechanics are given by (possibly entangled) phasors
20:30:35 <ais523> the probability is the square of the length of the phasor
20:30:42 <ais523> and the phasors can be rotated so that probabilities cancel out
20:31:13 <Slereah_> Is that QC talk for "Hilbert space vector"
20:31:19 <ais523> the aim of a quantum computer program is to start with a random value, then entangle the phasors in such a way that the ones for the incorrect results cancel out
20:31:31 <ais523> giving you a high chance of getting the correct answer
20:31:36 <ais523> and they're basically just vectors in the plane
20:31:39 <kmc> entangle the phasors! detach the saucer section!
20:31:41 <ais523> capped at a maximum length of 1
20:33:53 <boily> if I get a quantum computer, will I be able to go on Facebook?
20:34:17 <Slereah_> Oh, and there's no JMP in quantum assembly
20:34:25 <fizzie> Is that the one where you can be in multiple relationship statii at once?
20:34:36 <kmc> that would be convenient
20:34:41 <shachaf> where did the second 'i' come from
20:34:56 <ais523> shachaf: it's fun to pronounce
20:35:10 <shachaf> yes, but does it make sense
20:35:17 <ais523> although the second declension male plural would be stati because the original word is status not statius
20:35:24 <ais523> and I'm not sure it's a second declension male word in the first place
20:35:27 <kmc> i think molecular orbitals are a better analogy for poly relationships, though
20:35:30 <kmc> delocalized pi bonds
20:35:42 <fizzie> It's probably an incorrect Latin plural, I don't know any Latin.
20:35:52 <shachaf> i've seen it for words like "radius" but that has an 'i' already
20:35:52 <kmc> might have something to do with the fact that i'm dating a physical chemist (or chemical physicist?) by education
20:36:32 <shachaf> and for words like hawaius
20:36:54 <boily> esotericians' relationships are as weird as the languages they create.
20:37:15 <ais523> kmc: you're educated to date specific people?
20:38:08 <Slereah_> What esolang is your relationship like
20:38:15 <kmc> boily: i haven't even created any esolangs yet
20:38:19 <fizzie> shachaf: Fun fact: individual characters of ASCII are called "ascius".
20:38:28 <kmc> although "x86 with no registers" probably counts, once I write that up
20:38:47 <Slereah_> How do you do x86 with no registers
20:38:52 -!- muskrat has quit (Read error: Connection reset by peer).
20:38:58 <Slereah_> Are there any instructions that use no registers?
20:39:01 <kmc> Slereah_: i'll send you a link when it's done
20:39:19 <kmc> mov dword ptr [some_addr], 1234
20:39:22 <kmc> add dword ptr [some_addr], 1234
20:39:27 <kmc> jmp [some_addr]
20:39:31 <kmc> these are the main tools
20:39:37 <shachaf> `learn ascii is the plural of ascius
20:39:50 <kmc> plus self-modifying code
20:40:01 <kmc> but it's cheating to modify an instruction into one that uses registers
20:40:22 <kmc> I just modify the address and immediate operands of those instructions
20:40:24 <Slereah_> Esolangs are all about cheating
20:40:25 -!- muskrat has joined.
20:40:48 <kmc> I wanted to define a legitimately difficult subset and then work my way out of it
20:41:00 <kmc> if you can modify the instructions to use registers then it's pretty much trivial
20:41:11 <Slereah_> Well, if you have jumps and addition
20:41:24 <Slereah_> Do you know µ-recursive functions?
20:41:35 <Slereah_> That's probably the easiest parallel
20:41:49 <kmc> i wrote a compiler from brainfuck
20:41:54 <kmc> but that's probably not the easiest way
20:42:06 <kmc> i just like it because it's a pretty normal programming language, not too esoteric
20:42:22 <kmc> and yet we can compile it into this nonsense
20:42:52 <kmc> i'm fine writing to registers if we never depend on their contents
20:43:07 <Slereah_> Just remove the registers by hand
20:43:26 <kmc> i have a program which uses ptrace() to zero out all the registers after every instruction
20:43:45 <kmc> anyway I'll send you the link when it's done ;P
20:43:56 <kmc> lunchtime ->
20:44:18 <shachaf> kmc: are you allowed to use rip-relative addressing
20:45:08 <kmc> probably but i don't think it's useful so i didn't make up my mind about it
20:45:45 <Slereah_> Are you allowed to use the stack?
20:47:58 -!- Sprocklem has quit (Ping timeout: 246 seconds).
20:49:44 <shachaf> Not the stack pointer register, presumably.
20:50:39 <ais523> kmc: this reminds me of Malbolge, but easier
20:51:37 <Slereah_> I think if you can use the stack
20:52:30 <Slereah_> You can use INC and DEC, create function calls and do a loop for a µ-functions
20:52:41 <Slereah_> You can do µ recursive functions, which are TC
20:54:43 -!- AnotherTest has quit (Ping timeout: 265 seconds).
20:55:23 -!- Frooxius has quit (Quit: *bubbles away*).
20:57:18 -!- Oj742 has joined.
20:58:03 <fizzie> From what I recall about the rules, I think the stack wasn't allowed.
20:58:23 -!- muskrat has quit (Read error: Connection reset by peer).
20:59:09 <ais523> I used the stack a lot when writing ASCII-only programs
20:59:31 -!- muskrat has joined.
21:00:15 <Slereah_> Well you can probably still do function calls without the stack
21:00:20 <Slereah_> It's just gonna be a bit more tricky
21:04:17 <kmc> no you can't use the stack because those instructions depend on the value of sp
21:04:31 <fizzie> You can always use a manual stack, of course. (E.g. just keep the stack pointer in the immediate operand of a "mov dword ptr [foo], 1234; jmp [bar]", and when you want to write the stack pointer somewhere -- probably to some register -- self-modify the foo displacement to point at where you want, and the bar to next instruction, and jump to that snippet.)
21:04:48 <fizzie> Er, "register" should've been "operand".
21:05:04 <ais523> I think this should be doable without self-modifying code
21:05:17 <kmc> let me know if you figure out a way :)
21:05:19 <Slereah_> Just µ recursive functions should be doable pretty easily
21:05:35 <ais523> you could do something like MiniMAX, I guess
21:05:51 <kmc> i ended up needing only one level of non-tail calls so I didn't have to implement a stack, just a single place to store a return address
21:05:53 <ais523> except the difficulty you have doing addition
21:05:57 <ais523> because one of the arguments has to be a constant
21:10:12 <fizzie> If you wan't "unbounded" (up to the address space size, anyway) memory, I don't see how you can do it without self-modifying the operands, since otherwise you can only touch memory mentioned in the "source".
21:11:35 <Slereah_> And if you try functions you need to store the arguments somewhere
21:12:17 <kmc> you can just store those in memory right
21:13:16 <Slereah_> Yeah, but how can you access it
21:13:37 <Slereah_> If you only use numbers, you won't be able to use arbitrarily large numbers of recursions and function calls
21:14:43 <fizzie> Clearly the next Intel instruction set rehash should add a double-indirect addressing mode.
21:15:25 <fizzie> "If the 6502 could do it..."
21:15:52 <fizzie> That seems like a reasonable syntax for it.
21:16:05 -!- yiyus has joined.
21:18:33 <ais523> fizzie: you can touch unmentioned memory via indirects, can't you?
21:19:01 <fizzie> ais523: What indirects?
21:19:12 <ais523> you can store values in unmentioned memory
21:19:24 <ais523> but you can't read them, except to store a different value back in the same memory
21:19:24 <fizzie> ais523: I don't see how you can do that either.
21:19:42 <fizzie> ais523: Stores to address 123.
21:19:56 <ais523> I'm getting my syntaxes muddled
21:20:09 <ais523> even with double indirects I don't see how you can usefully read distant memory
21:20:32 <ais523> and being TC without the ability to read (only write and add constants) seems dubious, if not completely impossible
21:20:37 <Slereah_> You can just use some memory as a data pointer?
21:20:51 <ais523> Slereah_: apparently I was mistaken
21:21:04 <ais523> so yes, you'd need self-modifying code to make this work
21:21:32 <Slereah_> Wait, don't you need the instruction pointer for that?
21:21:36 -!- sebbu2 has joined.
21:21:36 -!- sebbu2 has quit (Changing host).
21:21:36 -!- sebbu2 has joined.
21:21:46 <Slereah_> Well I guess you can know the exact position of your code
21:21:47 <ais523> Slereah_: you can write to absolute addresses
21:22:20 <boily> can you do introspection in assembly?
21:22:24 <ais523> the idea of "double indirects, no self-modifying" has me thinking, though
21:22:32 <ais523> actually it's easy, if you can JMP to a double indirect
21:22:49 <ais523> this is a different esolang I'm thinking of now
21:22:59 <ais523> hmm… can it be done with computed or conditional jumps?
21:23:05 -!- sebbu has quit (Ping timeout: 240 seconds).
21:23:09 <ais523> err, no computed or conditional jumps
21:23:17 <ais523> just running the same commands over and over again, forever
21:23:33 <Slereah_> I guess you can simulate double indirect using a self modifying code
21:23:45 <Slereah_> Just do some mov [address], value
21:23:52 <Slereah_> And modify the code to change the address
21:24:23 <Slereah_> Then implement a stack or whatnot
21:24:48 <fizzie> ais523: You can do the usual sort of "conditional" jump by having an indirect "jmp [0]" and then doing a double-indirect "mov [[foo]], newcode" -- that'll make a conditional jump to newcode if the value at foo is 0.
21:24:49 <kmc> anyway reads are the hard part, I think
21:25:35 <fizzie> I guess that kind of thing could be used to "read" a bounded value.
21:25:37 <ais523> kmc: not really; use only 0 and (insert small constant here, something around 12 or 16) for your data
21:25:52 <ais523> then to read, add, indirect jump, get the destination to subtract again
21:26:44 <fizzie> Ah, I suppose you don't even need the double-indirect for that approach.
21:27:03 <ais523> this is basically how MiniMAX works
21:27:15 <ais523> except that MiniMAX uses a VM (that has an 8-byte implementation)
21:27:39 <kmc> yeah that's like what i did ais523
21:27:46 <kmc> i still consider that the hard part, compared to writes
21:28:07 <Slereah_> Now try to write an OS without registers
21:29:37 <fizzie> Regarding hardware access, can't write to I/O ports (not that they're probably all that important these days?) without registers.
21:29:57 <Slereah_> Them ports sure love the accumulator
21:30:27 -!- boily has quit (Quit: ACCUMULATING CHICKEN!).
21:30:29 -!- metasepia has quit (Remote host closed the connection).
21:31:22 <Slereah_> Can't think of any way to access any hardware, yeah
21:32:04 <fizzie> You could access memory-mapped hardware just fine. Well, for some values of "fine". (If you start from real mode, I don't think you can get to any sort of usable protected mode without loading segment registers.)
21:32:39 <Slereah_> Even the interrupts needs the accumulatore
21:33:05 <Slereah_> I guess you'll just have to use your imagination for the GUI
21:33:33 -!- impomatic has quit (Ping timeout: 252 seconds).
21:35:54 -!- impomatic has joined.
21:38:05 <shachaf> fizzie: did you know that that "return 0;" gets compiled to "mov $-1, %rax"
21:38:38 <kmc> in AT&T assembler syntax yeah
21:38:51 <kmc> and the operand order is reversed from intel
21:39:18 <kmc> there's no negative zero in two's compliment integer arithmetic
21:39:45 <Slereah_> And their divisions would give +- infinity
21:39:55 <kmc> there's no infinity in integer arithmetic, either
21:39:57 <Slereah_> I think floating points has signed infinities
21:40:34 <kmc> +Infinity represents an unknown positive value which is too large to represent
21:41:08 <kmc> and NaN represents a value about which nothing is known
21:41:17 <kmc> which is why NaN ≠ NaN i guess
21:41:33 <shachaf> kmc, fungot: you're both cute imo
21:41:33 <fungot> shachaf: they only need to remove the adverts, come to think of a regex as a string that the host language without using call/ cc
21:41:46 <kmc> thanks shachaf
21:41:47 <shachaf> but fungot produces better ebooks
21:41:47 <fungot> shachaf: totally hilarious.
21:42:37 <mrhmouse> fungot's ebooks are extremely hilarious
21:42:37 <fungot> mrhmouse: use the fink package?
21:45:22 -!- muskrat has quit (Read error: Connection reset by peer).
21:45:49 -!- muskrat has joined.
21:45:59 -!- Oj742 has quit (Ping timeout: 272 seconds).
21:52:09 <Slereah_> Wait, can you do a conditional jump without registers?
21:52:28 <Slereah_> The µ function idea I had kinda hinged on that
21:53:04 <Slereah_> Ah yes, we discussed it earlier
21:55:56 -!- muskrat has quit (Quit: Leaving).
22:00:23 <shachaf> ion: i'm surprised you haven't been through the who-sent-you cslounge dance yet
22:03:59 <shachaf> so maybe i'll fly to san jose in december
22:04:16 <mroman_> shachaf: Are you *sure* that is a return 0;?
22:05:13 <mroman_> maybe you're not using the return value and the compiler decided to pre-load some constant into rax?
22:05:43 <shachaf> I didn't try it but I believe the person who did try it because returning 0 wouldn't make sense.
22:14:02 <shachaf> Because in the g++ implementation 0 is (/could be) a pointer to the first member.
22:16:44 <mroman_> for int foo() { return 0; }?
22:17:38 <shachaf> No, for the code discussed above.
22:18:20 <shachaf> int T::*foo() { return 0; }
22:19:14 <kmc> oh, you're saying that a NULL function pointer is not represented by the integral value 0?
22:19:20 <kmc> NULL member pointer, I mean
22:19:23 <kmc> interesting
22:19:52 <Slereah_> I think it's implementation dependant
22:19:58 <kmc> right I meant in this implementation
22:20:33 <mroman_> Then I'm not surprised at all
22:21:12 <fizzie> shachaf: Huh, so it does.
22:21:35 <fizzie> http://sprunge.us/YChV
22:22:08 <shachaf> fizzie: g++ -O2 -S -o/dev/stdout tmp.cc
22:22:17 <fizzie> Member pointer representations are a terribly complicated thing, anyway.
22:23:18 <fizzie> Or at least pointers to member functions.
22:23:29 <fizzie> http://www.codeproject.com/Articles/7150/Member-Function-Pointers-and-the-Fastest-Possible "Implementations of Member Function Pointers" has a nice table.
22:26:55 -!- typeclassy has joined.
22:27:28 <shachaf> fizzie: https://codereview.appspot.com/22170044/ hth
22:28:37 -!- mrhmouse has quit (Read error: Connection reset by peer).
22:29:17 <shachaf> Probably http://godoc.org/code.google.com/p/go.tools/cmd/vet
22:29:18 <fizzie> (Except a non-stationary veterinarian.)
22:29:35 <shachaf> Anyway I meant the collapsed messages earlier in the thread.
22:30:15 <fizzie> Well it's about stdin anyway! Nothing to do with using - for stdout.
22:32:30 <fizzie> Also - is the convention "too bad" "so sad"
22:35:04 <fizzie> (Also, I didn't know "null member pointer value" even existed, v. fancy.)
22:40:25 <fizzie> [[ A prvalue of type "pointer to member of B of type cv T", where B is a class type, can be converted to a prvalue of type "pointer to member of D of type cv T", where D is a derived class (Clause 10) of B. If B is an inaccessible (Clause 11), ambiguous (10.2), or virtual (10.1) base class of D, or a base class of a virtual base class of D, a program that necessitates this conversion is ...
22:40:31 <fizzie> ... ill-formed. The result of the conversion refers to the same member as the pointer to member before the conversion took place, but it refers to the base class member as if it were a member of the derived class. The result refers to the member in D's instance of B. Since the result has type "pointer to member of D of type cv T", it can be dereferenced with a D object. The result is the same ...
22:40:37 <fizzie> ... as if the pointer to member of B were dereferenced with the B subobject of D."
22:40:40 <fizzie> Well, that's good to know.
22:47:50 -!- augur has joined.
22:56:47 -!- sebbu2 has changed nick to sebbu.
22:57:00 -!- nooodl has quit (Ping timeout: 265 seconds).
23:08:01 <ais523> what's a TIL except I didn't learn it today, rather a few days ago?
23:08:26 <ais523> well, AFDAIL that BNF was invented for the original Algol 60 spec
23:08:26 <shachaf> kmc says "shachaf: did you know [...]"
23:08:32 <ais523> which lists Backus and Naur as authors
23:13:04 -!- oerjan has joined.
23:26:47 <oerjan> <quintopia> hackego has it? <-- the prefixes command is in all of fungot, HackEgo and EgoBot, which are the bots i know how to update a command in.
23:26:47 <fungot> oerjan: are you serious? what else is there to call/ cc
23:27:47 * oerjan swats everyone for being idle -----###
23:28:07 <oerjan> @tell quintopia <quintopia> hackego has it? <-- the prefixes command is in all of fungot, HackEgo and EgoBot, which are the bots i know how to update a command in.
23:28:08 <fungot> oerjan: plus i got some really nice fnord. but if you told me, i hate google doing that.
23:31:07 <oerjan> <quintopia> to anyone good at hackego: the bienvenido message drops a "t" at the end <-- oops
23:31:16 <HackEgo> ¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: http://esolangs.org/wiki/Main_Page. (Para el otro tipo de esoterismo, prueba #esoteric en irc.dal.net.)
23:31:17 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ^!: not found
23:31:57 <oerjan> i think it's simply over HackEgo's limit with a nick, because of the "Most people here don't speak Spanish" addition.
23:32:34 <ais523> has that variant ever been used in anger?
23:33:29 <oerjan> ais523: i use it when someone shows up who says "hola" as their first message :P
23:33:44 <oerjan> which happens surprisingly often.
23:33:49 <ais523> have they been Spanish speakers? or just people who hola'd out of the blue?
23:34:15 <oerjan> ais523: mostly Spanish speakers, although the last time i did it wasn't.
23:34:26 <oerjan> (also it's not always literally "hola")
23:35:13 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: 안녕하세요: not found
23:35:14 <oerjan> we have the theory it happens because #esoteric starts with es. although i don't think that has ever really been confirmed.
23:35:42 <oerjan> apparently `bienvenido cuts off it the nick is longer than 12 chars.
23:36:03 <oerjan> which happened earlier today, but isn't common.
23:36:44 <oerjan> it dropped "t.)", and the nick was 14, so longer than 11.
23:37:10 <oerjan> isn't 14 the absolute limit?
23:37:32 <ais523> `welcome fourteenletter
23:37:34 <HackEgo> fourteenletter: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/wiki/Main_Page>. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
23:37:43 <ais523> `bienvenido fourteenletter
23:37:45 <HackEgo> fourteenletter: ¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: http://esolangs.org/wiki/Main_Page. (Para el otro tipo de esoterismo, prueba #esoteric en irc.dal.ne
23:37:54 <ais523> seems pretty conclusive
23:38:05 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: nick: not found
23:38:10 -!- oerjan has changed nick to fifteenletter12.
23:38:12 <ais523> (I use "twelveletter" as a test name when I'm trying to test if there's room in the status area)
23:38:13 -!- fifteenletter12 has changed nick to fifteenletter123.
23:38:26 <ais523> fifteenletter123: bu that's 16 letters
23:38:29 -!- fifteenletter123 has changed nick to oerjan.
23:38:30 <ais523> you should be sixteenletter123
23:38:50 <ais523> actually, it's only 13 letters
23:38:57 <ais523> it's 16 /characters/ but "123" are not letters
23:38:58 <oerjan> in any case there's a simple fix.
23:39:30 <oerjan> `run sed -i 's!wiki/Main_Page!!' wisdom/bienvenido
23:39:31 <HackEgo> sed: can't read wisdom/bienvenido: No such file or directory
23:39:37 <ais523> oerjan: hmm, all the fixes I thought of were massively complicated
23:39:43 <ais523> but then I was trying to fix something else
23:39:44 <oerjan> `run sed -i 's!wiki/Main_Page!!' wisdom/welcome.es
23:40:16 <HackEgo> #!/usr/bin/perl -w \ if (defined($_=shift)) { s/ *$//; s/ +/ @ /g; exec "bin/@", $_ . " ? welcome.es"; } else { exec "bin/?", "welcome.es"; }
23:40:28 <HackEgo> ¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: http://esolangs.org/. (Para el otro tipo de esoterismo, prueba #esoteric en irc.dal.net.)
23:40:34 -!- ais523 has quit.
23:40:37 <oerjan> `bienvenido sixteenletters12
23:40:39 <HackEgo> sixteenletters12: ¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: http://esolangs.org/. (Para el otro tipo de esoterismo, prueba #esoteric en irc.dal.net.)
23:45:30 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
23:46:19 <oerjan> (just testing if the lambdabot: ? spam is only for lambdabot: ? or something more general. seems it isn't.)
23:49:32 <oerjan> @poll-result remove@src
23:49:32 <lambdabot> Poll results for remove@src (Closed): no=1, yes=1
23:50:19 -!- typeclassy has quit (Ping timeout: 252 seconds).
23:51:31 <lambdabot> ["(++)","ConfusedWithVixenSituation","FlavaOfJRuby","Prelude-(.)?","best-programming-language","best-spoken-language","food","funniest-thing-in-the-whole-world","naming","nethack","president","prove->","remove@src","sleep"]
23:51:35 <lambdabot> Poll results for (++) (Open): (++)::Semigroup_m=>m->m->m=1, (++)::Monoid_m=>m->m->m=2, (++)::[a]->[a]->[a]=2
23:51:50 <shachaf> @poll-result best-programming-language
23:51:50 <lambdabot> Poll results for best-programming-language (Open): COBOL=2, PHP=1, Coq=0, Agda=0, anything-else=0, Haskell=0
23:52:02 <lambdabot> Poll results for naming (Closed): Lovelace=1, Babbage=0
23:52:14 <lambdabot> Poll results for sleep (Open): no=1, yes=7
23:52:17 -!- typeclassy has joined.
23:52:21 <shachaf> hmm, p. sure i made that last one
23:52:26 <lambdabot> Poll results for prove-> (Open): proven=1, proved=0
23:52:42 <lambdabot> Poll results for president (Open): cthulhu=3, kmc=1, copumpkin=5
23:53:06 <lambdabot> Poll results for food (Open): quesadilla=2, meatball-sub=2
23:53:37 <Bike> man, tough choice.
23:53:47 <lambdabot> poll-add <name> Adds a new poll, with no candidates
23:53:53 <lambdabot> poll provides: poll-list poll-show poll-add choice-add vote poll-result poll-close poll-remove
23:54:01 <lambdabot> choice-add <poll> <choice> Adds a new choice to the given poll
23:54:11 <oerjan> @choice-add food lutefisk
23:54:11 <lambdabot> New candidate "lutefisk", added to poll "food".
23:54:43 <Bike> @choice-add best-programming-language SNOBOL
23:54:43 <lambdabot> New candidate "SNOBOL", added to poll "best-programming-language".
23:54:49 <Bike> @vote best-programming-language SNOBOL
23:56:01 <shachaf> @poll-result best-spoken-language
23:56:01 <lambdabot> Poll results for best-spoken-language (Open): magyar=3, Polish=484, Welsh=1, Georgian=2, Manx=1, norwegian=8
23:56:24 <oerjan> @vote best-spoken-language Georgian
23:57:33 -!- Phantom_Hoover has joined.
23:57:50 -!- sebbu has quit (Ping timeout: 240 seconds).