←2014-05-22 2014-05-23 2014-05-24→ ↑2014 ↑all
00:01:02 -!- tertu has joined.
00:04:11 -!- nooodl has quit (Quit: Ik ga weg).
00:04:18 -!- tromp_ has quit (Read error: Connection reset by peer).
00:07:13 <Bike> i got confused and thought 'grenade stack' was the name of the exploit random fields harden
00:07:22 <Bike> against
00:08:25 <Bike> what's #![experimental] do?
00:09:41 <kmc> using it will cause a warning unless you have #[allow(experimental)] at the use site
00:10:02 <kmc> #[foo] is an attribute that applies to the next item (function definition, module, struct definition, etc.)
00:10:11 <kmc> #![foo] is an attribute that applies to the item which contains the attribute
00:10:30 <quintopia> kmc: love that snarky reply
00:10:35 <kmc> often a whole file (which is a module)
00:15:41 -!- BeingUntoDeath has joined.
00:19:20 <kmc> unfortunately you can't put #[allow(experimental)] on an arbitrary block of code, just an item
00:19:45 <kmc> resulting in this nonsense: https://github.com/kmcallister/html5/blob/master/macros/atom/mod.rs#L64-L72
00:22:25 <Bike> that sucks.
00:25:00 <kmc> yeah
00:25:05 <kmc> maybe I'll fix it!!
00:26:42 <kmc> probably not
00:41:50 <elliott> oerjan: you can do [2,1..0], if you didn't know
00:42:45 <kmc> > [1,3,3..7]
00:42:47 <lambdabot> <hint>:1:7: parse error on input ‘..’
00:48:28 <oerjan> elliott: no i was just testing a corner case in some SO code
00:49:21 <oerjan> hm or was it reddit
00:55:07 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
01:07:30 <kmc> wow. I have a function that does assert!(self.foo.is_none()) and another which sets self.foo = Some(x), but the latter function is never called, so rustc warns me that the assert is dead code
01:07:34 <kmc> i am impressed
01:12:24 <Bike> that makes me wonder if you should be able to tell the compiler it's okay if certain forms, like an assert, are dead/can be removed
01:13:13 -!- Sgeo has joined.
01:13:56 <kmc> I think you can
01:14:05 <kmc> by making the assert!() macro expand into something with #[allow(dead_code)]
01:15:55 <kmc> oh, hm, I thought the function containing the assert wasn't dead but it actually was
01:15:58 <kmc> oh, I am less impressed
01:16:20 <Bike> haha
01:18:53 -!- tertu has quit (Ping timeout: 265 seconds).
01:20:31 -!- yorick has quit (Read error: Connection reset by peer).
01:27:24 <Sgeo> Is the HTML5 parsing algorithm interesting in any way other than being thoroughly specified?
01:27:30 <Sgeo> I'm wondering if I should attempt to read it
01:28:55 -!- xk002 has joined.
01:30:39 <kmc> it's astoundingly complicated
01:31:10 <Bike> nothing can be explained
01:31:12 <kmc> but not in a particularly interesting way
01:31:21 <kmc> it's mostly a record of historical mistakes
01:31:28 <kmc> it's the most descriptivist technical standard I've ever seen
01:31:37 -!- boily has quit (Quit: FLABBERGASTING CHICKEN).
01:31:38 <Bike> instead of that, help me understand poincare compactification. imo better than html
01:31:38 <kmc> (well, the entirety of the WHATWG webapps spec)
01:31:55 <kmc> I'm finding writing a HTML parser to be interesting, though, but more because there are interesting implementation challenges
01:32:04 <kmc> and lots of excuses to use macros
01:32:10 <Sgeo> Well, that's interesting as a record of historical mistakes. Does it explain the mistakes and where they're found and how they came about?
01:32:13 <Sgeo> I'd like to see that
01:32:15 <kmc> not very well
01:32:30 <kmc> "why is my build bot failing... oh, because I'm using language features that aren't merged upstream yet"
01:34:07 <Bike> i'm continually amused by how ahistorical the sciences are
01:34:20 <kmc> macros are the reason my tokenizer is 900 lines instead of 6,000 like the others
01:34:31 <Bike> today i saw a wikipedia article that said one algorithm could be considered as an improvement of another, with the minor caveat that the improved algorithm was invented first
01:35:03 <kmc> heh
01:36:42 <Sgeo> kmc: missing abstractions in the language, or is it hard to imagine a language that would provide those macros natively?
01:37:18 <kmc> it's just concision
01:37:28 <kmc> but in Haskell it might be a monad DSL rather than a macro DSL
01:40:43 <Sgeo> "When authors use the canvas element, they must also provide content that, when presented to the user, conveys essentially the same function or purpose as the bitmap canvas."
01:40:59 <Sgeo> Seems easy enough for arbitrary HTML5 games
01:41:33 <kmc> haha
01:43:55 <Sgeo> If the canvas has no pixels (i.e. either its horizontal dimension or its vertical dimension is zero) then the method must return the string "data:,". (This is the shortest data: URL; it represents the empty string in a text/plain resource.)
01:43:56 <Sgeo> wat
01:44:22 <Sgeo> ...why would you want to do that instead of a 0 size png resource?
01:45:45 <Bike> maybe the canvas is resizeable
01:46:16 <Sgeo> I meant why give a text/plain for an image just because it's weird
01:46:45 <Bike> like, you have a drawing application that's resizeable, and it has an export-as-dataurl function, say.
01:47:09 <kmc> Sgeo: feast your eyes on this nonsense http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#already-started
01:47:27 <kmc> er, drop the anchor from that url
01:48:43 <Sgeo> "where possible", I'm fine with that. Although I guess that's distinct from "where feasible", so maybe not.
01:50:31 -!- Slereah has joined.
01:53:09 <kmc> "If the stack of script settings objects is empty, perform a microtask checkpoint." what is this i don't even
01:53:39 <Sgeo> workers?
01:53:40 <kmc> this is like deciding to standardize Perl by translating the interpreter from C to English
01:58:36 -!- Slereah_ has quit (*.net *.split).
02:02:32 <ion> hah
02:06:42 <Sgeo> http://en.wikipedia.org/wiki/HTML5_File_API
02:06:53 <Sgeo> Why does this link to the Geolocation API?
02:13:00 <kmc> is it bad if the majority of my parsing logic is in match-arm guards (containing more matches) of 50+ lines
02:23:25 <Sgeo> Neat, I can make images based off of canvas elements with just a bit more difficulty than downloading an img
02:23:53 <Sgeo> Why is .toDataURL() on the canvas element and not the context?
02:25:25 <kmc> like so https://github.com/kmcallister/html5/blob/master/src/tree_builder/mod.rs#L352-L422
02:25:31 <kmc> beats me Sgeo
02:25:52 <Sgeo> The Canvas API is so... imperative
02:29:35 <Sgeo> http://diveintohtml5.info/semantics.html
02:32:23 -!- realzies has quit (Ping timeout: 252 seconds).
02:32:24 <Bike> dive into
02:32:29 -!- tertu has joined.
02:34:47 -!- realz has joined.
02:45:15 <Sgeo> "That this step happens before the next one honoring the HTTP Content-Type header is a willful violation of the HTTP specification, motivated by a desire to be maximally compatible with legacy content."
02:45:34 <Sgeo> So.... is the HTTP spec ... incorrect, then? Or ...?
02:45:50 <Sgeo> When two specs fight, what should someone trying to be maximally conformant do?
02:46:10 <Bike> groan loudly
02:47:37 <kmc> flip a coin
02:48:02 <kmc> ryeall, do whichever one makes fewer users angry
02:48:04 <kmc> really*
02:48:21 <kmc> there are two chickens in my backyard
02:48:31 <kmc> they had a staring contest with a cat
02:59:45 -!- tromp_ has joined.
03:31:09 -!- xk002 has quit (Ping timeout: 252 seconds).
03:38:49 -!- idris-bot has quit (Quit: Terminated).
03:51:41 <Sgeo> oerjan: did you read new Freefall?
03:51:57 -!- BeingUntoDeath has quit.
03:55:07 <oerjan> was just about to
03:55:57 <oerjan> ouch
04:01:29 -!- MDude has changed nick to MDream.
04:03:50 -!- augur has joined.
04:05:19 <madbr> sgeo : of course the canvas api is imperative... has to be usable by less experimented coders
04:08:35 -!- Sorella has quit (Quit: It is tiem!).
04:17:49 <fizzie> Sgeo: Good thing to keep in mind with .toDataURL is that it has size limits in some browsers.
04:18:44 <fizzie> Or, rather, data: URIs do.
04:18:47 <fizzie> https://code.google.com/p/chromium/issues/detail?id=45395
04:20:20 <Sgeo> Huh, MDN has Chrome-specific information
04:20:22 <Sgeo> "Chrome supports the image/webp type."
04:21:07 <fizzie> (1.5 megs -- two + base64 overhead -- is not very much for a .png file.)
04:21:22 <kmc> the web: where even moving an image from an image renderer to an image viewer involves a wacky, text-based format with implementation-specific limitations
04:23:10 <fizzie> I think I worked around it by parsing the data: URI manually into a blob, and then producing a URL for that.
04:24:27 <fizzie> Chrome does "new Blob(...)" and URL.createObjectURL just fine, but not the toBlob method on the canvas.
04:24:44 <fizzie> Or did when I was writing this, anyway.
04:28:19 -!- oerjan has quit (Quit: leaving).
04:37:47 -!- tertu has quit (Ping timeout: 252 seconds).
04:38:44 -!- diginet_ has changed nick to diginet\.
04:38:48 -!- diginet\ has changed nick to diginet.
04:42:48 -!- conehead has joined.
04:45:27 -!- tertu has joined.
04:45:38 <Sgeo> Yay Firefox OS, the most open mobile OS ever, with neat features such as APIs that can only be used by apps preinstalled by the OEM
04:50:26 <Bike> as god intended
04:54:15 <Sgeo> It is interesting how Firefox OS app SOP is normal SOP * app
04:54:21 <Sgeo> iiuc
05:00:10 <Bike> use your words, sgeo
05:00:51 <Sgeo> It is interested how Firefox OS Single-origin Policy is effectively a pair of the normal website origin and the app itself
05:22:33 -!- Animatronicity has joined.
05:23:36 -!- Animatronicity has quit (Client Quit).
05:31:33 -!- tertu has quit (Ping timeout: 276 seconds).
05:31:56 -!- tertu has joined.
05:34:54 <Sgeo> 258EAFA5-E914-47DA-95CA-C5AB0DC85B11
05:42:15 <Sgeo> ooh, arbitrary Blobs can be sent using WebSocket
05:43:05 <Sgeo> I guess there are more obvious ways to send that data
05:43:45 -!- Bike_ has joined.
05:45:52 -!- Bike_ has changed nick to Bicyclidine.
05:48:16 <Sgeo> "Throughout the web platform "activate" is intentionally misnamed as "click"."
05:48:23 <Sgeo> "User agents are strongly encouraged to make window.focus() work from within the event listener for the event named click as a means of focusing the browsing context related to the notification."
06:03:38 -!- Slereah_ has joined.
06:05:07 -!- Slereah has quit (Ping timeout: 240 seconds).
06:10:49 -!- tertu has quit (Ping timeout: 265 seconds).
06:14:30 -!- madbr has quit (Quit: Rouringu de hajikunda!).
06:23:12 -!- Slereah has joined.
06:23:35 <fizzie> Heh, "semi-honest".
06:25:41 -!- Slereah_ has quit (Ping timeout: 252 seconds).
06:26:08 -!- MoALTz has quit (Quit: Leaving).
06:29:39 <fizzie> http://sprunge.us/jgiW also rather funny footer for a spam email.
06:30:52 <Bicyclidine> 6500000000 million
06:31:50 -!- FreeFull has quit.
06:32:58 <fizzie> That's a lot of money.
06:34:26 <fizzie> (In fact, the SpamAssassin rule "LOTS_OF_MONEY" also triggered on it.)
06:35:48 <Sgeo> "Trying to help friend NOT get caught by spamassassin"
06:37:22 <kmc> today i got spam that claimed to be from "LTG Keith B. Alexander, USA. Commander, U.S. Cyber Command, Director, National Security Agency, Chief, Central Security Service"
06:37:33 <kmc> saying that i had won some large amount of money
06:39:15 <Sgeo> I would love to see an email that triggers every SpamAssassin rule highly
06:39:16 <fizzie> I think I've gotten email from Keith too.
06:39:59 <Sgeo> # Pretty good for most folks, except for jm: I have a really stupid
06:39:59 <Sgeo> # e-commerce bunch obfuscating their URLs with this for some reason. screw 'em
06:40:07 <fizzie> Maybe I should archive spam, too.
06:40:28 <fizzie> I did collect a few thousand messages once for some reason or another.
06:40:35 <fizzie> fungot: Would you like to sound like a spammer?
06:40:36 <fungot> fizzie: this way :) escaping/ conclusion, from a fnord projection, which at no great distance from/ town to/ port is eighteen leagues, and that its variation was a subsequent, often a desire to see/ lion in his desert,/ tiger tearing his prey in/ jungle, or/ beginning :) hooker's letter to you, so much/ more striking, as from/ sketches above given it is obvious that a variation occurred sufficiently marked to catch/ fancier's e
06:40:46 <fizzie> ^style irc
06:40:46 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
06:40:49 <fizzie> Enough with the smileys.
06:43:45 <Sgeo> I can't find LOTS_OF_MONEY, where is it?
06:45:26 <fizzie> I don't know, it's the iki.fi SA.
06:45:33 <fizzie> They might have customized.
06:45:50 <Sgeo> I think I saw something suggesting it was removed
06:47:06 <fizzie> Google does find some references.
06:47:26 <fizzie> At least one config file with a definition, too.
06:50:11 <Sgeo> http://svn.apache.org/repos/asf/spamassassin/trunk/rules/20_phrases.cf this talks about money but not LOTS_OF_MONEY
06:50:13 <Sgeo> :/
06:52:21 <fizzie> http://svn.apache.org/repos/asf/spamassassin/trunk/rules/73_sandbox_manual_scores.cf
06:52:39 <fizzie> Gives a score for LOTS_OF_MONEY; does not define it.
06:54:11 <Sgeo> https://issues.apache.org/SpamAssassin/show_bug.cgi?id=6504
06:54:13 <Sgeo> Had a 0 score
06:56:29 -!- trout has changed nick to constant.
06:56:34 <fizzie> http://ruleqa.spamassassin.org/20140421-r1588859-n/LOTS_OF_MONEY/detail has statistics for it.
06:57:22 -!- password2 has joined.
06:58:55 <Sgeo> Detailed results for rule LOTS_OF_MONEY, from source file HASH(0xac14038). Source file was last modified on 1970-01-01 00:00:00 UTC.
06:59:24 <Sgeo> Geez, needed a spam filter even back then?
07:02:00 -!- conehead has quit (Quit: Computer has gone to sleep).
07:02:43 <shachaf> kmc: rust doesn't support parameterizing on non-*-kinded things at all, right?
07:02:54 <shachaf> not just in traits but anywhere
07:03:34 -!- KingOfKarlsruhe has joined.
07:03:34 <fizzie> HASH(0xac14038), the best source file.
07:04:02 <kmc> shachaf: believe so
07:04:47 <shachaf> what a scow :'(
07:09:00 -!- MindlessDrone has joined.
07:15:00 -!- idris-bot has joined.
07:19:35 <kmc> Rust kind of has the GHC thing where you have to turn on a bunch of language extensions to get anything done
07:19:58 <kmc> using debug!() and friends now requires #![feature(phase)] #[phase(syntax, link)] extern crate log;
07:21:35 -!- Bicyclidine has quit (Ping timeout: 252 seconds).
07:21:49 <lifthrasiir> kmc: which is a PITA
07:22:41 <kmc> yep
07:23:02 <kmc> do you know if that will be fixed for 1.0?
07:23:20 <lifthrasiir> I'm not sure
07:23:31 -!- slereah_ has joined.
07:23:35 <lifthrasiir> but in my opinion that has to be handled automatically
07:25:37 <kmc> how would you do it?
07:27:50 <lifthrasiir> kmc: parse the code, read metadata for each `extern crate` item present, load the syntax extensions (#[macro_export] or #[macro_registrar]) if the crate is marked to provide such things, then expand macros.
07:28:37 <lifthrasiir> it does have a disadvantage on the error reporting though
07:29:21 <kmc> what's that?
07:30:35 <lifthrasiir> well, loadable syntax extensions with #[macro_registrar] should be compiled as dylib, but there would be no error message when the user failed or forgot to compile that dylib
07:30:55 <lifthrasiir> and the user will be met with a useless error message that a certain syntax extension is not available
07:31:08 <lifthrasiir> s/useless/less-than-optimal/
07:31:56 <kmc> rustc should warn if you build a crate with a #[macro_registrar] as anything other than a dylib
07:32:38 <lifthrasiir> technically it can be built as rlib, but yeah, it is not a good choice to do so
07:33:07 <kmc> you can't use the syntax extensions if it's an rlib, right?
07:33:57 <lifthrasiir> yes, but it *can* be usable when #[phase(syntax,link)] is in use
07:34:23 <lifthrasiir> (but it will also push a libsyntax dependency to the compiled binary, which is why it is discouraged)
07:35:09 <kmc> if you need to support an rlib build you could do something like #[cfg(dylib)] #[macro_registrar] ...
07:35:17 <kmc> (I don't know if that's a real cfg option but it could exist, anyway)
07:35:21 <lifthrasiir> that sounds doable :)
07:35:43 <kmc> also I think it is useful to build libraries that some consumers will load at link phase and others not
07:36:00 <kmc> so probably it should only infer from metadata if no #[phase(...)] attribute is present
07:36:50 <lifthrasiir> kmc: so that the ordinary #[macro_export] wouldn't need #[phase] but #[macro_registrar] would?
07:37:10 <kmc> i hadn't considered that
07:37:22 <kmc> I was just thinking you could do #[phase(link)] extern crate foo;
07:37:28 -!- shikhin has joined.
07:37:58 <lifthrasiir> and #![feature(phase)] :p
07:38:15 <lifthrasiir> well, anyway
07:38:20 <kmc> er, I meant "some consumers will load at syntax phase and others not"
07:38:26 <kmc> but I guess you might want both
07:38:33 <lifthrasiir> ah?
07:39:04 <kmc> I have considered (but haven't implemented) macros where the registrar does some non-trivial initialization
07:39:12 <kmc> which might be expensive or depend on external resources that are not always present
07:39:57 <lifthrasiir> kmc: something like, well, sfackler's phf/phf_mac crates?
07:40:18 <kmc> you mean that you can avoid this by splitting the macros into their own crate?
07:40:23 <kmc> that's true, but it might be undesirable for other reasons
07:40:29 <kmc> i'm not sure really
07:40:52 <lifthrasiir> I do think, under your suggestion to use #[cfg(dylib)], they can be merged
07:41:21 -!- constant has changed nick to trout.
07:41:31 <kmc> it's also good not to have the macros bloating the library at runtime, but that shouldn't matter much with demand paging
07:43:20 <kmc> of course if you want to use those same macros in implementing the runtime part of the library, you will need two crates
07:44:18 <kmc> I can imagine having a crate for the runtime part of the library, a crate for private macros to be used in implementing the library, and another crate for macros intended for use by library consumers
07:44:27 <olsner> demand paging only really helps if you have at least 4kB of garbage and it gets put together in the same page
07:44:29 <olsner> but dead code stripping should get rid of it?
07:44:52 <kmc> since there's no way to control the scope of macros with granularity finer than a crate
07:45:20 <kmc> olsner: only link-time dead code stripping
07:45:31 <kmc> which isn't too hard for static linking
07:47:06 <kmc> but can't be done for dynamic linking afaik
07:47:59 <kmc> you could also build the same crate multiple times with different cfg options for each of those roles
07:48:04 <kmc> it doesn't seem like a good idea, though
07:51:50 -!- password2 has quit (Ping timeout: 240 seconds).
08:05:52 -!- edwardk has quit (Quit: Computer has gone to sleep.).
08:10:29 -!- Tritonio has joined.
08:24:20 <kmc> is this a common C idiom? unsigned int i; for (i = 14; ~i; i--)
08:24:26 <kmc> to count down from 14 to 0 inclusive
08:27:48 -!- Patashu has joined.
08:28:07 <scoofy> looks legit
08:28:16 <scoofy> although i haven't seen that anywhere
08:28:35 <slereah_> ~i?
08:28:50 <scoofy> (bitwise not) i
08:28:53 <slereah_> Oh
08:29:09 <slereah_> Is ~ faster than !?
08:29:10 <fizzie> I don't think I've seen that anywhere either.
08:29:21 <fizzie> It's not the same as !.
08:29:26 <scoofy> uses the fact that bitise inverse is negative of number minus 1
08:29:40 <scoofy> so ~0 = -1
08:29:50 <slereah_> But it is unsigned
08:30:20 <fizzie> ~0 is kind of unrelated.
08:30:50 <fizzie> Well, I guess it's related the other way around, from ~-1 == 0.
08:30:54 <scoofy> ~(4294967295) == 0
08:31:06 <kmc> is ~-1 defined by the spec?
08:31:13 <fizzie> (Or ~UINT_MAX for that.)
08:31:24 <scoofy> well it also works with (signed int)
08:31:24 <fizzie> No, it was just a simplification.
08:31:26 <scoofy> doesn't matter
08:31:27 <kmc> it seems like you couldn't define it without assuming a particular sign representation
08:31:35 <scoofy> ~0 = -1 (which is 'true')
08:31:42 <scoofy> ~(-1) = 0 (which is 'false')
08:31:51 <slereah_> Isn't 0-- undefined behaviour for unsigned ints?
08:32:00 <kmc> no, only for signed
08:32:10 <slereah_> Whaaat
08:32:15 <slereah_> 0-- for signed is just -1
08:32:28 <kmc> unsigned ints are defined to wrap around, which is how you know the number before 0 is ~0
08:32:45 <kmc> (whether or not it has the same representation as the signed integer -1 is not defined, though)
08:33:09 <scoofy> signed integer '-1' not defined? how does that make sense
08:33:27 <fizzie> I assume that was in re INT_MIN minus one.
08:33:28 <scoofy> there's no wrap around involved
08:33:33 <scoofy> there's no INT_MIN
08:33:35 <scoofy> in the signed case
08:33:39 <scoofy> involved
08:33:51 <scoofy> it counts down from 14 to 0, ~i counts up from -15 to -1
08:33:56 <kmc> scoofy: whether ((unsigned int) ~0) and ((signed int) -1) are the same bytes in memory is undefined
08:33:58 <scoofy> there's no wrap around
08:34:04 <fizzie> Yes, I don't think it was any longer in that context.
08:34:07 <scoofy> that's not the question
08:34:49 <kmc> i see
08:34:50 <scoofy> assuming twos complement, ~i = (-i)-1
08:34:51 <fizzie> And the signed int version clearly isn't guaranteed to work, since integer representation isn't fixed.
08:35:08 <kmc> if I used that idiom I would worry that someone (including me) would copy it and use it for a signed integer
08:35:20 <scoofy> kmc, you _can_ use it for a signed int
08:35:52 <scoofy> you can try yourself
08:35:52 <scoofy> http://morpheus.spectralhead.com/s/cnt.c.txt
08:36:11 <scoofy> does the same as the unsigned one
08:36:13 <fizzie> Sure, if you don't mind it working differently depending on the signed integer representation.
08:36:16 <kmc> did you try it on a machine which is not 2's complement
08:36:21 <scoofy> nope, and it would not work there
08:36:26 <kmc> right, so it's not a C idiom
08:36:34 <kmc> it's undefined behavior which happens to work in certain C compilers
08:36:39 <scoofy> we're spekaing about the (signed) case
08:36:45 <scoofy> the original code used (unsigned int)
08:36:55 <kmc> but compilers can and do optimize under the assumption that signed integer overflow/underflow does not happen
08:37:13 <scoofy> there's no overflow/underflow involved, as i understand
08:37:18 <scoofy> it's a binary negation
08:38:22 <kmc> if I rewrite the loop as for (i = 14; i != 0xFFFFFFFF; i--) is it more clear why there is underflow occurring?
08:38:45 <scoofy> ok, i see what you mean
08:38:53 <scoofy> but the underflow occurs only in the unsigned case
08:38:55 <scoofy> not in the signed case
08:38:59 <kmc> ...true
08:39:19 <kmc> so I'm wondering if ~-1 is also UB
08:39:28 <fizzie> It's also not underflow, technically.
08:40:27 <fizzie> You can only get underflow with floats.
08:40:37 <fizzie> And it's not overflow either, if you go by the C standard definitions of those terms.
08:41:02 <kmc> 0-1 isn't overflow?
08:41:29 <fizzie> No, though only as a matter of definition.
08:41:38 <kmc> C is weird -_-
08:41:40 <fizzie> "A computation involving unsigned integers can never overflow, because a result that cannot be represented is reduced modulo [etc.]"
08:41:49 <kmc> yeah, okay
08:42:08 <fizzie> (C11 6.2.5p9)
08:43:39 <scoofy> what does the standard say about ((unsigned int)0)-1 ?
08:44:44 <fizzie> What I just quoted, after converting the 1 to unsigned int too.
08:47:01 <fizzie> As for ~ on signed integers, I don't think it's necessarily undefined (it's defined in terms of what happens to the bits, not in terms of the value), though with the two other signed-integer representations it might result in a trap representation if applied to 0.
08:47:31 <kmc> the C spec gives only three options for signed integers?
08:47:45 <fizzie> Nowadays, yes.
08:47:51 <fizzie> Where "nowadays" means C99.
08:47:56 <kmc> interesting
08:47:59 <fizzie> From what I recall, it was more open in C89.
08:48:16 <kmc> but signed overflow is still UB (and not implementation-defined to be one of those three) because it was UB in C89?
08:48:42 <fizzie> I wouldn't know about "because", but it's explicitly UB.
08:49:21 <kmc> the options are 2's complement, 1's complement, and sign bit?
08:49:33 <fizzie> Yes, unsurprisingly.
08:50:07 <mroman> still UB? :(
08:50:32 <scoofy> C defines lots of things as UB
08:50:51 <Taneb> Last night I saw a poster promoting Asexual Awareness Week
08:50:53 <fizzie> I have a feeling the signed overflow is UB to cater for (real or hypothetical) machines where signed-integer arithmetic traps on overflow rather than doing something else.
08:50:57 <Taneb> Asexual Awareness Week was in October
08:51:21 <kmc> fizzie: ah, interesting
08:51:42 <kmc> Taneb: poster-posting is a tragedy of the commons
08:51:46 <kmc> or maybe it's the same week every year?
08:52:23 <Taneb> It just had some variant of "Be aware of asexuals! It's asexual awareness week"
08:52:30 <Taneb> Without any reference to the date
08:52:35 <Taneb> I think I spotted it in the actual week
08:53:38 <fizzie> If it's written exactly like that, I'd get the feeling that it's trying to warn people about a danger.
08:53:51 <Taneb> fizzie, it's written substantially friendlier
08:54:49 <fizzie> One of our "miscellaneous stuff" boards was advertising a proofreading service with the slogan "the difference between knowing your shit and knowing you're shit".
08:55:21 <kmc> nice
08:55:57 <fizzie> http://psedit.me/ these jokers
08:57:43 -!- xk002 has joined.
08:58:57 -!- Patashu has quit (Disconnected by services).
08:58:57 -!- Patashu_ has joined.
09:02:47 -!- xk002 has quit (Ping timeout: 276 seconds).
09:03:37 -!- xk002 has joined.
09:08:35 <scoofy> why should i care if someone is asexual?
09:08:55 <scoofy> i mean, why would it need to have an 'awareness week' for that?
09:09:39 <slereah_> In case you want to fuck them?
09:11:38 <Taneb> scoofy, I think it's more being aware that such people exist
09:11:43 <Taneb> Rather than any specific examples
09:11:53 <scoofy> ok, they exist. so?
09:12:04 <Taneb> Appreciate it.
09:12:09 <Taneb> Beyond that, nothing.
09:12:24 <scoofy> there should be 'gay unicorn awaress week'
09:12:28 <scoofy> just to appreciate it
09:12:33 <Taneb> I am not aware of gay unicorns
09:12:40 <scoofy> see? that's the whole point!
09:12:42 <scoofy> now you are
09:13:02 <Taneb> Whereas I know a number of asexuals, including myself
09:13:02 <fowl> people are trying to shoot down bigfoot month for the same reason
09:13:36 <fowl> Taneb, that means you look like a ken doll down there, right
09:14:06 <Taneb> Yes. I am entirely plastic from the knees down.
09:14:38 <kmc> I kind of want to give a serious answer to scoofy's question, but I kind of would rather stab myself in the balls with broken glass than start a discussion on the subject of identity politics at 2 AM when I should already be asleep
09:14:52 <kmc> so maybe tomorrow
09:14:56 <scoofy> kmc, then you'd become asexual, i guess...
09:15:00 <scoofy> afterwards
09:15:04 <kmc> not necessarily
09:15:12 <scoofy> depending on how successful you are with the stabbing
09:15:17 <kmc> badness 10,000
09:15:21 <kmc> anyway good night all :)
09:15:23 <scoofy> nite
09:15:25 * kmc -> zzzzzzz
09:16:24 <fizzie> Sounds like an overfull hbox there.
09:16:59 <fizzie> Or maybe it's underfull that has a badness.
09:38:18 -!- edwardk has joined.
09:45:21 <int-e> So does TeX have a badness overflow error?
09:49:46 -!- shikhin has quit (Ping timeout: 265 seconds).
09:53:41 -!- xk002 has quit (Ping timeout: 264 seconds).
10:17:52 -!- edwardk has quit (Quit: Computer has gone to sleep.).
10:18:41 <fizzie> It's clamped to [0, 10000], but I don't know it is actually computed.
10:22:47 -!- Burton has quit (Ping timeout: 245 seconds).
10:33:46 -!- Burton has joined.
11:05:39 -!- Phantom_Hoover has joined.
11:07:00 <int-e> lovely. "TeX assigns a numerical value called 'badness' to each line that it sets, in order to assess the quality of spacing. The exact rules for badness are different for different fonts, and they will be discussed in Chapter 14 [...]"
11:09:22 -!- Frooxius has quit (Read error: Connection reset by peer).
11:13:32 <int-e> Aha, it depends on how much of the "flexible space" in a line is used. If the allowed length is foo + bar - baz, and the actual length is foo + f*bar (or foo - f*baz) with f>=0, then the "badness" is 100 * f^3, clamped to 10000.
11:13:51 <int-e> And then it gets messy :)
11:23:19 -!- Frooxius has joined.
11:40:33 -!- edwardk has joined.
11:40:38 <int-e> tromp_: Have you tried implementing the Goodstein function with recursion (in blc)?
11:43:46 -!- yorick has joined.
11:48:32 -!- edwardk has quit (Ping timeout: 276 seconds).
12:20:50 -!- Sgeo has quit (Read error: Connection reset by peer).
12:26:34 -!- Froox has joined.
12:26:34 -!- Frooxius has quit (Read error: Connection reset by peer).
12:26:44 -!- idris-bot has quit (Quit: Terminated).
12:26:59 -!- idris-bot has joined.
13:16:56 -!- xk002 has joined.
13:25:47 -!- jhj1 has quit (Ping timeout: 252 seconds).
13:37:50 -!- hk3380 has quit (Ping timeout: 240 seconds).
14:02:25 -!- KingOfKarlsruhe has quit (Quit: Leaving.).
14:11:45 <HackEgo> [wiki] [[Dogescript]] http://esolangs.org/w/index.php?diff=39644&oldid=39244 * 164.41.209.81 * (+86)
14:17:32 -!- Phantom_Hoover has quit (Ping timeout: 265 seconds).
14:23:34 -!- edwardk has joined.
14:27:02 -!- Phantom_Hoover has joined.
14:27:51 -!- tertu has joined.
14:30:27 -!- edwardk has quit (Read error: Connection reset by peer).
14:31:24 -!- edwardk has joined.
14:35:53 -!- hk3380 has joined.
14:36:15 -!- edwardk has quit (Read error: Connection reset by peer).
14:37:22 -!- edwardk has joined.
14:41:46 -!- AnotherTest has joined.
14:51:11 -!- oerjan has joined.
14:51:28 -!- conehead has joined.
14:52:52 -!- edwardk has quit (Read error: Connection reset by peer).
14:53:40 -!- edwardk has joined.
14:59:02 -!- edwardk has quit (Ping timeout: 240 seconds).
15:09:29 <mroman> I was recently thinking about an esolang where the concept of storage is somewhat based on time
15:09:53 <mroman> There's no storage except old states of the program
15:09:54 <slereah_> I had that idea once
15:10:00 <slereah_> Except it was
15:10:05 <slereah_> Instead of memory cells
15:10:06 <slereah_> Clocks
15:10:14 <mroman> I.e. for a brainfuck derivative that would mean, that you have one cell
15:10:23 <mroman> and everytime you change the cell it's previous state is recorded
15:10:23 <slereah_> And the instructions were either waiting or store the current time
15:10:27 <slereah_> As you can imagine
15:10:27 <mroman> and you can access past states
15:10:32 <slereah_> It was not very practical
15:11:35 <mroman> I.e. (where r reads a past state and <,> travel around the time) ++<<r would set the cell to zero again
15:11:39 <mroman> (assuming inital state was zero)
15:11:43 <oerjan> mroman: http://www-formal.stanford.edu/jmc/elephant/elephant.html (why is there no wikipedia article...)
15:13:12 -!- Patashu_ has quit (Ping timeout: 245 seconds).
15:30:41 <int-e> @djinn (Not (Not a) -> Not (Not b)) -> (Not b -> Not a)
15:30:42 <lambdabot> f a b c = void (a (\ d -> d c) b)
15:31:56 <oerjan> @djinn Not (Not (Not a)) -> Not a
15:31:56 <lambdabot> f a b = void (a (\ c -> c b))
15:32:17 <oerjan> p. similar
15:32:24 <oerjan> (and of course equivalent)
15:32:54 <int-e> @djinn (((a -> r) -> r) -> ((b -> r) -> r)) -> (b -> r) -> a -> r
15:32:55 <lambdabot> f a b c = a (\ d -> d c) b
15:33:40 <oerjan> hm so the void is not actually needed
15:34:23 <oerjan> @djinn (((a -> r) -> r) -> r) -> a -> r
15:34:23 <lambdabot> f a b = a (\ c -> c b)
15:34:32 <oerjan> @djinn-env
15:34:32 <lambdabot> data () = ()
15:34:32 <lambdabot> data Either a b = Left a | Right b
15:34:32 <lambdabot> data Maybe a = Nothing | Just a
15:34:32 <lambdabot> data Bool = False | True
15:34:32 <lambdabot> data Void
15:34:34 <lambdabot> type Not x = x -> Void
15:34:36 <lambdabot> class Monad m where return :: a -> m a; (>>=) :: m a -> (a -> m b) -> m b
15:34:38 <lambdabot> class Eq a where (==) :: a -> a -> Bool
15:34:51 <int-e> it doesn't seem to know that void :: Void -> Void == id
15:34:56 <oerjan> ah
15:35:51 <int-e> @djinn (((a -> a' -> r) -> r) -> ((b -> b' -> r) -> r)) -> (b -> b' -> r) -> a -> a' -> r
15:35:52 <lambdabot> f a b c d = a (\ e -> e c d) b
15:36:28 <MDream> A clock language could be alright, if the clock is fast enough.
15:36:39 -!- MDream has changed nick to MDude.
15:38:17 <oerjan> @djinn Not (Not (a,a')) -> Not (Not (b,b')) -> Not (b,b') -> Not (a,a')
15:38:18 <lambdabot> f a b c _ = void (a (\ _ -> void (b (\ (d, e) -> c (d, e)))))
15:38:38 -!- Tritonio has quit (Ping timeout: 240 seconds).
15:39:02 <oerjan> wait that looks pretty redundant
15:40:02 <oerjan> @djinn Not (a, Not a)
15:40:03 <lambdabot> f (a, b) = b a
15:48:18 <MDude> Is there already a language where the only control flow is looping from the end of the program back to the start if it hasn't been closed?
15:50:07 <oerjan> several, i think
15:51:34 -!- slereah_ has quit (Quit: Leaving).
15:53:06 -!- oerjan has quit (Quit: leaving).
16:09:55 <int-e> @djinn ((i -> a) -> (i -> b)) -> b -> a
16:09:55 <lambdabot> -- f cannot be realized.
16:10:55 <mroman> MDude: I'm assuming recursion doesn't count?
16:11:07 <mroman> but yeah, especially string replacement languages work like that I think
16:11:33 <MDude> It only counts if it only happens once, at the end.
16:11:52 <mroman> so you can only execute the same code twice at most?
16:12:04 <MDude> Er, no.
16:12:10 <MDude> I mean if the command only appears once.
16:12:17 <mroman> ah
16:12:17 <mroman> ok
16:12:32 <mroman> so restricted tail recursion is ok
16:13:55 <mroman> http://esolangs.org/wiki//// <- maybe
16:15:52 <MDude> Alright, so I think none of them are quite what I was thinking.
16:16:09 <mroman> If you have state you can do stuff like
16:16:26 <mroman> IF state == 0 THEN doThat; ELSEIF state == 1 THEN doThat ELSE STARTFROMBEGINNING
16:16:57 <mroman> which means you can set what to do next etc.
16:18:50 <mroman> That's essentially the trick I'm using for my thingy here which allows only one function and recursion
16:19:13 <MDude> I think that's neat too, though a different idea, in that IF is a kind of flow control.
16:19:40 <mroman> it is.
16:20:38 <nortti> did I misunderstand or will start from beginning only run in case state is a var that does not cause any computation?
16:21:13 <nortti> thus, resulting in either one-cycle programs or those that loop infinetely and do nothing
16:21:38 <MDude> State might not be a boolean, in which case it'll go to the start if it's more than 1.
16:21:53 -!- mhi^ has joined.
16:22:13 <nortti> and then run through the same if-thingie again, yet again jumping to start
16:22:24 <nortti> or is that only part of the code?
16:22:43 <MDude> I actually think a system like that could effectively run loops.
16:22:59 <MDude> Just use if statments to skip everything but the loop while it's running.
16:24:38 -!- FreeFull has joined.
16:25:04 <MDude> Emulating loops like that might actually be kind of useful for something like keeping a hung script from freezing the whole browser.
16:26:05 <MDude> Since even if it's stuck in a loop, each cycle of it is followed by a pause while the rest of the browser does its thing.
16:26:25 <nortti> sounds like a co-operatively multitasking system
16:26:36 <MDude> Yes.
16:27:05 <MDude> The problem is that programs aren't made to cooperate for some reason?
16:27:26 <MDude> Because browsing locking themselves up is entirely something that happens.
16:27:57 <nortti> even with threaded browsers on pre-emptive multitask systems
16:28:26 <MDude> I'll just go make co-operatively multitasked EMCAscript sometime or something.
16:28:53 <nortti> impl?
16:29:04 <nortti> *implementation
16:29:58 <MDude> I guess? I don't think I could do that soon, I haven't really been that great at coding.
16:30:42 <MDude> Could try just writing the actual scripts with that resctriction, though.
16:32:31 <FreeFull> MDude: Browsers are made to make javascript go as fast as possible
16:33:24 <MDude> Yes.
16:33:31 <MDude> And I disagree with that design choice.
16:35:25 <nortti> well, for replacing native code, it is kinda necessary. on the merits of replacing native code with a language with so 'interesting' as js may be debated, but js-heavy sites/browsers apps are here to stay
16:35:45 <nortti> +'features'
16:36:30 <MDude> I'd have to see how much slower cooperative Javascript is, but for that ti'd need to exist.
16:36:33 <MDude> *it'd
16:37:37 <nortti> there is also the targetted optimization
16:46:18 -!- MoALTz has joined.
16:47:00 <fizzie> Huh, Google Maps for Android 8 has (re-)acquired an UI to manage offline maps, but for everything in Kyoto/Tokyo it just keeps saying "area unavailable".
16:48:52 <HackEgo> [wiki] [[0(nop^)]] http://esolangs.org/w/index.php?diff=39645&oldid=39642 * John Misciagno * (+40)
16:53:41 <tertu> isn't there a term for that style of loop design? "(something) executive?"
16:56:27 -!- idris-bot has quit (Quit: Terminated).
16:56:42 -!- idris-bot has joined.
16:56:44 -!- edwardk has joined.
17:04:27 -!- edwardk has quit (Ping timeout: 245 seconds).
17:12:23 -!- MindlessDrone has quit (Ping timeout: 252 seconds).
17:13:22 -!- MoALTz has quit (Quit: Leaving).
17:15:18 -!- MoALTz has joined.
17:23:23 <mroman> MDude: It also happens that if a Browser freezes Windows Explorer (and thus the whole god damn GUI) becomes unresponsible
17:23:41 <MDude> That can happen.
17:23:51 <mroman> That's most likely the biggest design fault that persists since the ancient days
17:25:39 <mroman> amongs many other design faults
17:25:42 <MDude> Sometimes it can just chug along so slowly it's just practially frozen, and the rest of the explorer can respond slowly.
17:25:44 <mroman> *amongst
17:25:59 <nortti> among them, integrating browser with OS
17:26:33 <MDude> Not like it's a problem exclusive to IE.
17:26:33 -!- MindlessDrone has joined.
17:26:41 <mroman> and programs having full access to the whol file system
17:26:51 <mroman> which has been somewhat fixed in windows vista+
17:26:52 <mroman> I think
17:26:58 <mroman> those Virtual AppData Roaming quirk
17:27:06 -!- drdanmaku has joined.
17:27:13 <mroman> which frankly, I think, produces more problems than it solves
17:27:55 <MDude> I'll just need to make a hardware-based OS where the task manager lives on its own microcontroller next to the cpu.
17:28:08 <MDude> Then nothing can freeze it.
17:29:01 <mroman> and how do you tackle all the driver problems?
17:29:47 <mroman> I honestly beleive that something like how Apple does it must be the solution
17:29:47 <MDude> I'll sell it as a children's toy, it'll be a step up from everything else in that market.
17:30:00 <mroman> s/ei/ie
17:31:40 <MDude> Or make it just make it portable enough that people are fine with only using it with the hardware it's preinstalled on.
17:31:49 <MDude> That's how cell phones and tablets do it.
17:32:29 <MDude> Or maybe I'll call it a vidoe game console.
17:32:44 <MDude> *video
17:33:16 <HackEgo> [wiki] [[Goldfish]] N http://esolangs.org/w/index.php?oldid=39646 * GermanyBoy * (+2749) Created page with "'''Goldfish''' is an esoteric programming language by [[User:GermanyBoy]] inspired by [[Deadfish i]]. Only way to store data is creating functions and static variables inside ..."
17:33:23 <MDude> Also, minus that extraneous isntance of "make it".
17:33:25 <mroman> ah
17:33:30 <mroman> a deadfish derivative
17:33:35 <mroman> is that the guy from @text?
17:34:00 <HackEgo> [wiki] [[Language list]] http://esolangs.org/w/index.php?diff=39647&oldid=39622 * GermanyBoy * (+15) /* G */
17:34:16 <HackEgo> [wiki] [[User:GermanyBoy]] http://esolangs.org/w/index.php?diff=39648&oldid=39551 * GermanyBoy * (+15)
17:34:19 <mroman> oh
17:34:20 <mroman> pardon me
17:37:28 <mroman> oh. That Elehpant thing is from the LISP-Guy
17:41:57 <HackEgo> [wiki] [[Goldfish]] http://esolangs.org/w/index.php?diff=39649&oldid=39646 * GermanyBoy * (-10) /* Truth-machine */
17:42:15 -!- shikhin has joined.
17:46:20 -!- kmels has joined.
17:54:06 -!- Bicyclidine has joined.
18:01:19 -!- MindlessDrone has quit (Ping timeout: 265 seconds).
18:02:43 -!- hk3380 has quit (Ping timeout: 252 seconds).
18:09:26 -!- xk002 has quit (Ping timeout: 276 seconds).
18:11:28 <HackEgo> [wiki] [[Goldfish]] http://esolangs.org/w/index.php?diff=39650&oldid=39649 * GermanyBoy * (+24)
18:11:55 -!- augur has quit (Ping timeout: 240 seconds).
18:15:09 -!- MindlessDrone has joined.
18:18:39 -!- shikhin has quit (Remote host closed the connection).
18:19:07 <fizzie> What is it with technology never working out right? Now the tablet will no longer talk (over USB-OTG) to the memory card reader.
18:21:08 -!- Bicyclidine has quit (Ping timeout: 265 seconds).
18:21:26 <fizzie> (And the extra-stupid "EOS Remote" Android app forcibly resizes downloads to 1920x1280 with no option to turn that off, so can't work-around that way either.)
18:25:08 -!- xk002 has joined.
18:28:28 -!- sign has changed nick to hexagon.
18:29:33 -!- hexagon has changed nick to sign.
18:34:47 -!- hk3380 has joined.
18:46:36 <HackEgo> [wiki] [[ΜCurse]] http://esolangs.org/w/index.php?diff=39651&oldid=39643 * Sacchan * (+210) /* Example Programs */
18:46:55 <HackEgo> [wiki] [[ΜCurse]] http://esolangs.org/w/index.php?diff=39652&oldid=39651 * Sacchan * (+3)
18:47:12 <HackEgo> [wiki] [[ΜCurse]] http://esolangs.org/w/index.php?diff=39653&oldid=39652 * Sacchan * (-3)
18:49:05 -!- edwardk has joined.
19:00:33 -!- xk002 has quit (Ping timeout: 252 seconds).
19:13:19 -!- xk002 has joined.
19:22:02 -!- kmels has quit (Ping timeout: 265 seconds).
19:22:40 -!- kmels has joined.
19:30:20 -!- kmels has quit (Ping timeout: 252 seconds).
19:30:32 -!- kmels has joined.
19:38:00 -!- mihow has joined.
19:44:49 <HackEgo> [wiki] [[@text]] http://esolangs.org/w/index.php?diff=39654&oldid=39529 * 96.52.124.86 * (+11)
19:45:51 <HackEgo> [wiki] [[@text]] http://esolangs.org/w/index.php?diff=39655&oldid=39654 * 96.52.124.86 * (-11)
19:50:55 <HackEgo> [wiki] [[User:Icepy]] M http://esolangs.org/w/index.php?diff=39656&oldid=39519 * Icepy * (+106)
19:52:06 <HackEgo> [wiki] [[User:Icepy]] http://esolangs.org/w/index.php?diff=39657&oldid=39656 * Icepy * (+4)
19:53:36 <kmc> scoofy: I think the point of asexual awareness week is e.g. to convince people that, if someone tells you they're asexual, you shouldn't respond by saying they just haven't found the right person yet
19:53:59 <kmc> just like you wouldn't tell a gay man that he hasn't met the right woman yet
19:55:13 <kmc> those sorts of attitudes towards asexual people are pretty common
19:55:24 <kmc> even (especially?) among people who are okay with every kind of weird sex under the sun
19:55:41 <shachaf> that seems like a pretty bizarre response
19:55:58 <Taneb> shachaf, I've had that response in the past
19:57:19 <kmc> scoofy: if you don't have those kinds of attitudes then yeah, there is probably no reason for you to be especially aware of asexual people during asexual awareness week
19:57:47 <kmc> I've come to realize that an endless push for More Awareness on things I already pretty much understand has actually been quite harmful to me
20:00:52 <mroman> kmc: there are probably soooo many things one should be aware of and how one shouldn't respond to certain things
20:01:08 <mroman> that it's kinda weird to expect everybody to know all these things
20:01:14 <MDude> I wouldn't expect people to be particularly reactive to asexuals.
20:01:38 <MDude> I mean, most people only get in a relationship with one person at a time.
20:02:19 <MDude> Being in no relationships at a time doesn't really change much other than reducing the already low chance that said relationship is with you.
20:04:17 <HackEgo> [wiki] [[5command]] N http://esolangs.org/w/index.php?oldid=39658 * Icepy * (+501) Created page with "5command is an [[esoteric programming language]] created by [[User:Icepy]] that has a very small command set of only 5 commands. 5commands is a [[tape based language]] that ju..."
20:04:44 <mroman> although that must'n mean you shouldn't raise awareness
20:05:04 <kmc> MDude: yeah but ask some asexual people about the reactions they get when they say they aren't interested in sex /at all/
20:05:06 <mroman> but being on the non-mainstream side you gotta know that it's probably going to annoy a lot of people
20:05:34 <mroman> kmc: I think they won't believe it and just ignore it
20:05:42 -!- ^v has changed nick to v^.
20:06:01 -!- v^ has changed nick to ^v.
20:06:04 <mroman> (@reactions)
20:06:11 <kmc> you really don't need to guess
20:06:16 <kmc> you can ask actual living breathing human beings about it
20:06:30 <MDude> I'm imagining this would mostly be in the context of talking to people who want to make sure all their friends get hooked up in some way.
20:07:17 <MDude> Or take them all to strip clubs or something.
20:07:20 <kmc> you hear this a lot... "i don't think women would really end up in that position" "i don't think someone would mention race in that situation"
20:07:26 <kmc> you don't have to guess
20:07:31 <kmc> you can ask actual people what happens to them
20:07:34 <kmc> the answer may surprise you
20:07:54 -!- augur has joined.
20:08:02 <HackEgo> [wiki] [[5command]] M http://esolangs.org/w/index.php?diff=39659&oldid=39658 * Icepy * (+68)
20:08:48 <HackEgo> [wiki] [[5command]] M http://esolangs.org/w/index.php?diff=39660&oldid=39659 * Icepy * (+2)
20:09:02 <mroman> So far I've only heard people talking about depressive persons
20:09:16 <mroman> like "they're pathetic. Everyday is a new day. They just gotta man-up"
20:09:16 <MDude> Oh I'm sure people sya dumb things all the time, they do that regardless of subject matter.
20:09:35 <kmc> for people who do like sex, it often seems like such a wonderful and important part of life that they have a hard time relating to someone who just doesn't like it
20:10:45 <int-e> mroman: those people don't understand that every day is yet another torment
20:11:50 <mroman> int-e: I know.
20:12:20 -!- zzo38 has joined.
20:12:35 <HackEgo> [wiki] [[5command]] http://esolangs.org/w/index.php?diff=39661&oldid=39660 * Icepy * (+5)
20:13:19 <mroman> first hand, actually
20:14:44 <MDude> Hmmm. I wonder if 5command only outputs the tape at the end of the program, or if it outputs after each step.
20:14:48 <kmc> this is a tricky one
20:15:04 <MDude> If the latter, I don't see why there's a no-op.
20:15:23 <kmc> I have much first-hand experience as well, and I would say that there is a kernel of truth to "every day is a new day, you have to make an attempt"
20:15:52 <kmc> you do have to make an attempt to feel better, it's just really really hard for reasons that are opaque to people who haven't experienced depression
20:16:02 <mroman> kmc: Yes. It has some thruth.
20:16:09 <kmc> and you have to forgive yourself for utterly failing at the most basic attempts
20:16:12 <mroman> but only because tomorrow exists
20:16:15 <kmc> or else it's just a downward spiral
20:16:38 <kmc> "every day is a new day" works the other way too, sometimes I'll feel great and then go to sleep and wake up feeling like shit
20:16:48 <kmc> makes me want to stay up as long as possible when I'm in a good mood
20:16:49 <HackEgo> [wiki] [[Joke language list]] http://esolangs.org/w/index.php?diff=39662&oldid=39437 * Icepy * (+53)
20:17:05 <mroman> kmc: I thought I was the only one
20:17:17 <kmc> you do that too?
20:17:19 <mroman> Some rare times I'm somewhat happy I don't wanna fall asleep
20:17:36 <HackEgo> [wiki] [[Joke language list]] M http://esolangs.org/w/index.php?diff=39663&oldid=39662 * Icepy * (-2)
20:17:51 <mroman> usually you just wan't the day to be over
20:18:03 <mroman> like... ideally you would sleep like 22h hours a day
20:18:15 <mroman> sadly that's not possible (yet)
20:18:38 <Phantom_Hoover> no, what you have to do is stutter in and out of sleep until you wake up feeling great
20:18:59 <mroman> there's no such thing as waking up feeling great
20:19:19 <MDude> Then peak antisadness.
20:19:38 <mroman> If I could choose I wouldn't even wanna wake up
20:20:39 <mroman> I sometimes feel like being depressive is the natural state
20:21:02 <mroman> and everybody else has some weird sickness that makes them ignore things
20:21:06 <HackEgo> [wiki] [[5command]] M http://esolangs.org/w/index.php?diff=39664&oldid=39661 * Icepy * (-9)
20:21:23 <mroman> I.e. the fact that your health declines
20:21:30 <mroman> the fact that people around you are gonna die
20:21:37 <mroman> etc. etc.
20:21:48 <int-e> Phantom_Hoover: are you a morning person? (I just stumbled on the first paragraph here: https://en.wikipedia.org/wiki/Sleep_deprivation#Treatment_for_depression )
20:22:22 <HackEgo> [wiki] [[5command]] M http://esolangs.org/w/index.php?diff=39665&oldid=39664 * Icepy * (-65)
20:22:48 <Phantom_Hoover> no, i was joking
20:23:03 -!- hk3380 has quit (Ping timeout: 252 seconds).
20:24:40 <mroman> also I don't know why people think that shrinks can "heal" stuff
20:25:10 <MDude> Just because they're technically in a medical discipline.
20:25:43 -!- edwardk_ has joined.
20:26:05 <int-e> tromp_: phew, I've finally shown to my satisfaction that the CPS step in the factorial derivation works. It's actually quite nasty, because of the contravariant nature of the transformation. So I ended up doing it in two steps, the first of which uses the (contravariant) identity g (f^n x) = (. f)^n g x, while the second one converts between ((a -> b -> r) -> r) -> r and a -> b -> r.
20:26:26 -!- edwardk has quit (Ping timeout: 252 seconds).
20:26:28 -!- hk3380 has joined.
20:26:30 <mroman> MDude: So is a guy who does biopsies.
20:26:50 <mroman> *autopsy
20:27:39 <MDude> Oh ok, I was going to say biopsies are probably seen as healers even though they only diagnose.
20:28:33 <int-e> on a lighter note, being depressed doesn't mean that the world is not going to hell.
20:29:52 <mroman> ?
20:29:53 <kmc> as far as I can tell, there are a bunch of different things that help different people to varying degrees
20:29:59 <kmc> including drugs (prescription and otherwise)
20:30:05 <kmc> none of them are going to "heal" you
20:30:42 <kmc> I have been doing a number of these things, especially since the beginning of this year, and I do feel significantly better now
20:30:50 <kmc> but who can say whether I would have felt better without any of it
20:31:05 <kmc> or whether the things are arbitrary and it's the doing something that's alleged to make you feel better that makes me feel better
20:32:05 <kmc> I find it comforting to remember that, in terms of the ancestral environment, we are all really really far from home and nobody has a fucking clue how anything in the world works or what will happen next
20:33:20 <kmc> and nothing is at steady state
20:33:48 <kmc> if my brain doesn't work right, at least there's no real reason to expect it would :P
20:33:54 -!- tswett has joined.
20:34:24 -!- mihow has quit (Quit: mihow).
20:35:15 <kmc> this whole human thing is an out of control chain reaction that started just moments ago in evolutionary (let alone cosmological) time
20:35:38 <mroman> Yeah.
20:35:45 <kmc> enjoy the ride, keep your arms inside the vehicle at all times
20:35:49 <mroman> But why do I have to suffer just because evolution did some things?
20:35:56 <tswett> I wanna create a Brainfuck variant where the tape has 0s and 1s, initially all 0s, which has the property that if you change a 0 to a 1 during execution of the program, this doesn't result in a 1 becoming a 0 further down the line.
20:36:14 <mroman> It's hard to justify it I think.
20:36:22 <kmc> mroman: there is no answer to that question
20:36:27 <MDude> So you want to make a write-once memory system?
20:36:27 <kmc> which is a hard pill to swallow
20:36:46 <MDude> Or can 1s become zeroes, but only invariantly?
20:36:58 <mroman> and considering that religions were pretty much wrong
20:36:58 <kmc> another thought I had recently is: the comfort of knowing that even if your life does have some meaning, you will never ever figure out what it is
20:37:04 <tswett> Ones could potentially become zeroes invariantly.
20:37:06 <mroman> and there's really *nothing* after death
20:37:13 <mroman> than it doesn't really matter anyway
20:37:14 <zzo38> tswett: I think there is a Turing-complete system where marked cells never become unmarked later on.
20:37:17 <mroman> *then
20:37:45 <tswett> zzo38: yeah, but you can still do X if a cell contains 0 and Y if a cell contains 1, such that X results in 1s being in places where Y wouldn't have them.
20:37:46 <mroman> *if religions were wrong
20:37:55 <tswett> Like, essentially, the only thing that should be impossible is doing a "not".
20:38:19 <mroman> If I hadn't been brainwashed as a kid to christianity to some degree chances are pretty high I wouldn't be here right now
20:38:27 <zzo38> Yes you can still have decision like that
20:38:58 <tswett> So, much of it can remain the same. + sets a cell to 1, - sets a cell to 0, < and > move left and right.
20:38:59 <kmc> mroman: sure, it doesn't matter, the same way the outcome of a game doesn't matter, but you can still have fun playing
20:39:03 <kmc> I don't totally endorse that view though
20:39:12 <kmc> and I know firsthand that this kind of existentialism 101 is not really that comforting
20:39:16 <kmc> but I don't have a better answer
20:39:25 <mroman> as far as I see it I can't win the game anymore
20:39:37 <MDude> I like to think of purpose being a result of life, rather than the oter way around.
20:39:43 <mroman> which makes playing it rather annoying than fun
20:39:49 <zzo38> mroman: Some people may like to be Christian, and some people aren't; I don't have a problem with that in general. Believe what you like; some things are unknowable, and some things it isn't even meaningful to say is one way or another.
20:39:53 <kmc> you can't win at tetris either
20:39:55 <mroman> although I can't tell you what I'd consider "winning the game"
20:39:57 <zzo38> What game you can't win anymore?
20:40:09 <MDude> As in, purpose is defined, directly or inderectly, by what a living thing cares about.
20:40:15 <kmc> maybe that's why I spent so much time playing tetris and thinking about existentialism as a kid
20:40:18 <kmc> now I play 2048 instead
20:40:30 <kmc> which one can win but only in a meaningless way
20:40:46 <int-e> by reaching 8192?
20:40:46 <mroman> zzo38: I was raised christian. That leaves traces.
20:40:57 <mroman> If I were raised an atheist I think i'd be 100% certain that there's nothing after death
20:41:01 <MDude> So for life to have a purpose there must be life that cares about it.
20:41:18 <tswett> Then [] should essentially be a "loop while 1", but it should somehow make it so that <, >, and - don't result in there later on being 0s where there could be 1s.
20:41:27 <mroman> which means I could kill myself without risking that one
20:41:52 <kmc> I'm an atheist but I don't believe that there's nothing after death, exactly
20:41:58 <kmc> there's nothing after death for you or for me
20:42:26 <zzo38> OK, there are traces. I think is OK you can learn many religious and non-religious things.
20:42:27 <kmc> but "you" and "me" are just crude heuristic labels for describing incredibly complicated and mysterious phenomena
20:42:37 <tswett> Ooh, here's an idea.
20:42:37 <kmc> if you let go of the ego a bit, death isn't so scary
20:42:41 <int-e> mroman: nah, there are more anchors. I don't want to hurt my family, friends or acquaintences in that way.
20:42:53 <mroman> int-e: true
20:43:00 <tswett> [] just means "fork and loop forever". All threads operate on the same tape, and all of them move simultaneously.
20:43:01 <kmc> "In the neon sign, scrolling up and down / I am born again"
20:43:02 <mroman> but to some degree you're already hurting them by being depressive
20:43:03 <MDude> I think the question of wether a purpose has life to it is more interesting than the reverse.
20:43:14 <tswett> Well, no, it's not quite the case that all threads operate on the same tape.
20:43:18 <zzo38> To me, it is a bit unsure what exactly is meant by "what is after death". I can say after death is decomposition and stuff like that.
20:43:19 <mroman> and I know that someday they won't give a shit anymore to protect themselves
20:43:24 <tswett> If a thread does +, all tapes see that. If a thread does -, only its own tape sees that.
20:44:01 <tswett> There's also a command %, meaning "die unless 1".
20:44:32 <zzo38> Some things seem to show that there may be some kind of "psychic awareness" after "near death", but other experiments show otherwise, so it is unknown. In fact, it doesn't seem to quite know what exactly such a thing would mean, anyways.
20:44:55 <mroman> Live only needs a purpose if you don't enjoy it. The purpose is just there to justify your suffering
20:45:06 <kmc> neutral monism is best monism
20:45:32 <tswett> mroman: so, it sounds like you don't enjoy life.
20:45:41 <mroman> Obiously not.
20:45:44 <mroman> +v
20:46:06 <zzo38> kmc: I am also neutral monism
20:46:36 <mroman> I would enjoy it if you invent the artificial comma capsule thingy
20:46:43 <mroman> that thing you see in science fiction movies
20:47:03 <mroman> you enter the capsule and you're immediately put into a sleep state
20:47:13 <mroman> like freezing/unfreezing or whatever
20:47:14 <MDude> I only have apostrophe capsules.
20:47:24 <zzo38> You say about purpose of life, but really it is just a part of a larger system, which is the entire universe and of the multiverse (if any). That is the purpose.
20:47:47 <mroman> so you could work like 3/4 hours a day to pay off the capsule
20:47:56 <mroman> and the other 20h you'd be in the capsule
20:48:01 <tswett> I think it's kind of interesting how so many of our names of punctuation marks come from Greek.
20:48:18 <mroman> that'd be kinda my dream life
20:48:19 <tswett> Comma, colon, semicolon, apostrophe.
20:48:33 <tswett> mroman: so your dream is the elimination of leisure time?
20:49:12 <mroman> it's part of it ,yes
20:49:38 <tswett> I definitely take too much leisure time.
20:49:41 <tswett> Now, for example.
20:50:00 <tswett> (wish I could stay and chat, bye)
20:50:02 -!- tswett has quit (Quit: tswett).
20:50:53 -!- edwardk_ has changed nick to edwardk.
20:50:53 <kmc> zzo38: yeah, I learned about it from you
20:51:36 <mroman> but mostly it's also about the day only being 3 to 4 hours long
20:52:33 <Phantom_Hoover> what does it matter if you're sleeping 8 hours or 20
20:53:05 <mroman> well you have to suffer fewer hours per day
20:53:26 <mroman> if you sleep 8 hours there's still 16 hours of the day left
20:53:45 <mroman> that's way too much
20:55:06 <mroman> I'd be only working to pay off the capsule so you don't live of other people's money
20:55:12 <mroman> because people don't like that
20:56:52 -!- Phantom_Hoover has left ("Leaving").
20:57:07 <mroman> he. I made him leave :)
20:57:14 <mroman> well... I'm gonna shut up now
20:58:35 <mroman> gn8
20:59:31 <shachaf> kmc: You were talking about using rank/select to index into UTF-8 encoded text efficiently, right?
21:02:58 <kmc> yes
21:06:13 <zzo38> What is rank/select to index into UTF-8 encoded text?
21:06:22 <kmc> shachaf: do you have new information about it?
21:07:21 <zzo38> What SQLite does is considers any byte 0x01-0xBF to be a single character, and any byte 0xC0-0xFF followed by zero or more bytes in the 0x80-0xBF range to be a single character.
21:09:45 <zzo38> When trying to convert to/from codepoints there are many other problems, but I have written an extension with functions CHR_U and ORD_U which avoid these problems. The built-in UNICODE function assumes codepoints are signed 32-bit integers, although my function ORD_U uses signed 64-bit integers instead (although only 36-bits will be used). The built-in CHAR function cannot encode surrogates or out-of-range Unicode characters.
21:11:28 -!- MindlessDrone has quit (Quit: MindlessDrone).
21:18:40 <shachaf> kmc: edwardk was just talking about it in the other channel.
21:18:43 <kmc> okay
21:18:46 <kmc> what does he think?
21:19:00 <edwardk> kmc: works fine
21:19:15 <kmc> cool, do you think it's efficient on a practical level?
21:19:35 <edwardk> kmc: for large enough text fragments definitely
21:19:49 <kmc> edwardk: I had some thoughts about JavaScript text representation: https://groups.google.com/forum/#!msg/mozilla.dev.servo/1K2-Qy27e3A/--z3h3VhvHIJ
21:19:54 <edwardk> github.com/ekmett/succinct offers up rank/select structures
21:20:19 <kmc> cool
21:20:26 <kmc> you don't happen to have a Rust implementation do you? ;)
21:20:43 <edwardk> nah. can't abstract over stuff i want to abstract in rust ;)
21:21:15 <edwardk> to be fair that is also true of haskell from time to time ;)
21:21:16 -!- Phantom_Hoover has joined.
21:22:05 -!- nooodl has joined.
21:23:29 <kmc> yeah
21:23:39 -!- xk002 has quit (Ping timeout: 252 seconds).
21:24:28 <edwardk> the tricky part is you want efficient select performance not rank, so Elias-Fano, etc. gets a bit tricky to do well
21:29:23 <zzo38> I still do not quite understand, what is rank/select to index into UTF-8 encoded text efficiently?
21:29:49 -!- tertu has quit (Disconnected by services).
21:29:49 -!- ter2 has joined.
21:31:17 <edwardk> rank lets you count up the number of occurrences of a symbol in an alphabet up to a given point in O(1) time using very near optimal space. select lets you jump directly to the kth occurrence of a symbol. lets let the symbols be 1 or 0 for whether it is a UTF8 head byte or a UTF8 tail byte. store that bitvector as an array and add a select structure that lets you quickly jump to the kth 1
21:31:45 <edwardk> now if you want to drop k elements from Data.Text you use select k 1s, and drop to thre
21:32:32 <edwardk> if you want to take k elements you go to select k 1s - 1and run to there.
21:33:06 <edwardk> it is a precursor to more advanced structures like fm-indices, wavelet trees, compressed suffix arrays, etc.
21:34:06 -!- mhi^ has quit (Quit: Lost terminal).
21:34:21 <zzo38> OK
21:36:41 <zzo38> I would suppose then, if the byte 0x80 to 0xBF then it is not a first byte of a UTF-8 character, and otherwise it is a first byte of a UTF-8 character.
21:43:29 <shachaf> edwardk: I imagine that for UTF-8 you would just store a sparse bit vector of all the continuation bytes or something like that?
21:43:57 <shachaf> I guess it depends on what you expect strings to be like.
21:44:07 <edwardk> shachaf: you'd want a select structure that can find the head bytes.
21:45:14 <shachaf> I guess so.
21:45:16 <edwardk> rank doesn't care which way it splits, but select structures are built for one value or the other (or both)
21:45:40 <edwardk> so here it is more useful to be able to find heads
21:46:27 <edwardk> now with text we don't use utf-8 currently, so it'd be surrogate pair leads
21:46:43 <edwardk> and most of the type there'd be no non-plane 0 codepoints
21:46:52 <edwardk> so the structure'd usually be trivial
21:46:57 <zzo38> O, so you are using UTF-16?
21:47:13 <edwardk> I was assumng for Data.Text which is UTF-16
21:47:35 <edwardk> but its the same problem as for UTF-8
21:47:48 <edwardk> UTF-16 annoys me
21:48:17 <zzo38> UTF-16 is not compatible with ASCII, though.
21:48:46 <shachaf> What was the reason in the end for sticking with UTF-16?
21:48:48 <shachaf> ICU?
21:50:07 <zzo38> UTF-8 is also not limited to the Unicode range.
21:55:55 -!- john3213 has joined.
21:58:13 <zzo38> The VGM file format uses UTF-16. A VGM compiler I wrote expects the input to be in ASCII format, however comments can be in any format, and any text which is copied directly to the VGM file can be in UTF-8 or CESU-8 format. (Nothing special is needed to support CESU-8, so it just automatically does support CESU-8.)
21:59:23 -!- AnotherTest has quit (Ping timeout: 252 seconds).
22:00:57 -!- john3213 has left.
22:02:57 <edwardk> shachaf: performance was better
22:04:53 <shachaf> I think I heard mixed opinions about that. But I don't remember, it's been a while.
22:05:08 <shachaf> That was jaspervdj's project, right?
22:05:33 <shachaf> Are there up-to-date code and benchmarks?
22:05:40 -!- MDream has joined.
22:06:32 -!- MDude has quit (Ping timeout: 252 seconds).
22:06:46 <edwardk> shachaf: in the end the only thing jasper's code was faster at was going to/from utf-8. everything else was 5-10% slower
22:06:56 <edwardk> i mentored the project that year
22:07:02 -!- mhi^ has joined.
22:07:12 <edwardk> its since bitrotted away
22:08:47 * impomatic hates bitrot
22:09:13 -!- nooodl_ has joined.
22:09:46 <Phantom_Hoover> definitely among by bottom 3 rots
22:12:39 -!- nooodl has quit (Ping timeout: 265 seconds).
22:22:46 <MDream> Just wait for it to be rotated by 26 and it'll be the same again.
22:25:20 <Bike> it's unicode, you have to rotate by U+2FFFF PILE OF POO WINKING AT CATGIRL
22:26:46 -!- MoALTz_ has joined.
22:29:33 -!- MoALTz has quit (Ping timeout: 252 seconds).
22:30:11 -!- tswett has joined.
22:30:19 <tswett> Ahoy.
22:30:28 <tswett> If I'm not mistaken, this is Graham's number using Church numerals:
22:30:30 <tswett> 64 (\n -> (pred n) (\ar b' e' -> (pred e') (ar b') b') 27) 4
22:32:27 <tswett> Of course, it'd be larger if you removed the "pred"s.
22:35:37 -!- edwardk has quit (Quit: Computer has gone to sleep.).
22:39:42 -!- oerjan has joined.
22:40:33 <Bike> i guess you could make an infinite sequence that's the rightmost digits of fix (3^). that'd be cool
22:40:53 <tswett> The 10-adic solution to x = 3^x.
22:41:28 <Bike> ye
22:41:30 <tswett> There's some amazing theorem which states that the function f(x) = 3^x - x takes on all but at most one value.
22:41:56 <oerjan> Bike: discussing graham's number?
22:42:02 <tswett> Over the complex numbers, that is.
22:42:06 <Bike> tswett brought it up
22:42:12 <Bike> yeah, picard's theorem
22:42:13 <Bike> a good theorem.
22:42:53 <oerjan> it doesn't necessarily have to exclude one value, mind you, i think
22:42:57 -!- Sgeo has joined.
22:43:12 <Bike> yeah it's either all of C or C minus some dumbass point
22:43:25 <Bike> because if you have two or more points you have to be periodic or sumfin
22:43:29 <oerjan> whether 3^x - x does i'm not sure. actually that would be equivalent to e^x - x + a constant, i think
22:43:43 <oerjan> (in range)
22:44:15 <Bike> (log 3)e^x - x, anyway
22:44:41 <oerjan> Bike: yes, i'm just thinking you can extract that log 3 by substituting x with something
22:45:20 <oerjan> 3^x - x = e^(x*ln 3) - (x*ln 3) + ... hm or can you
22:45:42 <Bike> substitute y = x - ln3!!
22:46:08 <Bike> disclaimer i am tired and apathetic
22:46:35 <oerjan> something linear, maybe.
22:46:38 * tswett visualizes 3^x - x.
22:46:38 -!- Sorella has joined.
22:46:48 <Bike> 3^(x-ln3) = (ln3)e^(x-ln3) = (ln3)(e^x)/(e^ln3) oh
22:46:54 <Bike> so x - ln ln 3?
22:46:59 * tswett fails to come to a conclusion.
22:47:13 <Bike> tswett: just ignore the linear term brooooooooooo
22:47:25 <oerjan> Bike: i don't see your first =
22:47:46 <Bike> eh? a^x = (ln a)e^x, surely
22:47:53 <tswett> e^(x ln a), surely?
22:48:00 <oerjan> no, it's e^(x l...right tswett
22:48:01 <Bike> oh
22:48:08 <Bike> wow i'm tired
22:50:02 -!- conehead has quit (Quit: Computer has gone to sleep).
22:50:15 -!- xk002 has joined.
22:50:24 <Bike> y = x/ln3, then? so 3^(x/ln3) = e^(x*ln3/ln3)? or have i forgotten what a three is
22:50:39 <tswett> In Lispy notation, we've got this: (apply (apply 64 (lambda n _ (apply (apply (apply pred n) (lambda a _ (lambda b _ (lambda e _ (apply (apply (apply pred e) (apply ar b)) b))))) 27))) 4)
22:50:46 <oerjan> you might like, not confuse x and y twh
22:51:10 <tswett> Where _ means "this is supposed to be a type signature but I haven't bothered to figure out what".
22:51:22 <Bike> ehhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
22:52:11 <oerjan> 3[A
22:52:13 <oerjan> oops
22:52:30 <tswett> Conclusion: Graham's number can be written in the calculus of constructions using a few dozen symbols tops.
22:52:45 <oerjan> 3^y - y = e^x - x/ln 3
22:52:47 <tswett> It's not an Unreasonably Large Number.
22:52:50 <Bike> tswett: is that surprising
22:52:55 <tswett> Bike: nope.
22:53:05 <Bike> imo it seems much larger when you remember it's a dimensionality :V
22:53:06 <tswett> But it makes Graham's number sound pretty small.
22:53:38 <Bike> can't you just skip to grzegorczyk and call it good
22:54:40 <oerjan> tswett: hey we (well, someone, quintopia maybe?) did goodstein sequence in system F the other day, graham's number is like piece of cake in comparison
22:55:18 <oerjan> as in, i found something on wikipedia implying it possible and someone else wrote down a definition
22:56:22 <oerjan> oh hm to get rid of that /ln 3 you need to substitute it back in additively, i think
22:57:18 -!- conehead has joined.
22:57:25 <oerjan> x = z - ln 3
22:57:47 <tswett> So if System F can do it, surely the CoC can do it.
22:58:24 <oerjan> then 3^y - y = e^x - x/ln 3 = e^z/ln 3 - z/ln 3 + (ln 3)^2
22:58:59 <oerjan> = (e^z - z)/ln 3 + (ln 3)^2
22:59:37 <oerjan> so the ranges of the functions are just linear maps of each other
22:59:51 <oerjan> which means either both leave out a point, or neither
23:01:05 <tswett> Okay. Goodstein's theorem really seems a little obvious.
23:01:46 <Bike> the one that's unprovable in peano?
23:02:10 <tswett> Yeah.
23:03:06 <int-e> oerjan, tswett: I did; see https://github.com/tromp/AIT/blob/master/goodstein.hs
23:03:20 <tswett> It comes down to the fact that a certain recursion scheme is well-founded.
23:04:03 <tswett> The recursion scheme uses a decreasing sequence of ordinal numbers less than epsilon_0.
23:04:24 <int-e> (it's in tromp's repo because there is also a lambda code version of essentially the same code in there now)
23:05:22 <tswett> That's an interesting definition of an ordinal number.
23:05:34 <tswett> "forall r. ((N -> r) -> r) -> (r -> r) -> r -> r"
23:05:39 <oerjan> int-e: ah, sorry for not remembering
23:06:08 <int-e> oerjan: don't worry about it
23:06:33 <zzo38> tswett: What does N mean here, then?
23:06:35 <tswett> So it takes a blobble, a function on blobbles, and a function turning an infinite sequence of blobbles into a blobble. It turns all this into a single blobble.
23:06:38 <tswett> zzo38: natural numbers.
23:06:42 <zzo38> OK
23:07:09 <tswett> So it sounds a lot like taking zero, a successor function, and a limit function.
23:07:30 <oerjan> tswett: afaiu that's what it is, in church representation
23:07:50 <tswett> Of course, that representation can't represent all ordinal numbers.
23:07:52 <int-e> tswett: it only works for countable ordinals
23:07:56 <tswett> At best, it represents the countable ones.
23:07:56 <oerjan> although i don't really understand how that works to actually do ordinal number stuff
23:08:33 <tswett> The calculus of constructions is so strong, I bet you could use it to prove that the calculus of constructions is strongly normalizing.
23:08:51 <tswett> (The amount I bet is -$200.)
23:08:58 <int-e> (and you run into problems actually constructing them, but in principle every countable ordinal can be represented in that way.)
23:09:28 <Bike> all this has shockingly little to do with my question about grobner bases, smh
23:09:56 <tswett> Smacking my halibut.
23:09:57 <int-e> there was a question... hmm.
23:10:21 <oerjan> oops my y to z above is nonsense
23:10:54 <oerjan> it needs to be x = z - ln (ln 3), i think
23:11:22 <Bike> the question was: what the heck are grobner bases
23:12:00 <oerjan> then e^x - x/ln 3 = e^z/ln 3 - z/ln 3 + ln 3 ln (ln 3) = (e^z - z)/ln 3 + ln 3 ln (ln 3)
23:12:46 <HackEgo> [wiki] [[0(nop^)]] http://esolangs.org/w/index.php?diff=39666&oldid=39645 * John Misciagno * (+260)
23:13:09 <oerjan> argh still wrong. + ln (ln 3) / ln 3
23:13:28 <Bike> apparently solving systems of polynomials is "not easy" and also "you can get to P and NP somehow from trying"
23:13:50 <oerjan> well the essence still holds, anyway
23:16:03 <int-e> Bike: AFAIK Gröbner bases represent ideals in polnomial rings; they are special in that one can decide whether a polnomial is in the ideal by taking it's largest monomial (in a total order on monomials) and replace it by a linear combination of smaller ones using a polynomial in the gröbner basis; this procedure terminates and you either end up with 0 (and the polynomial is in the ideal) or not (and it's not).
23:17:16 <Bike> oh.
23:17:19 <Bike> ok.
23:17:21 <int-e> as for polynomials you can also run into https://en.wikipedia.org/wiki/Hilbert%27s_tenth_problem
23:17:32 <Bike> i guess i'll think hard and figure out what this has to do with solving
23:17:51 <Bike> wait, what do diophantines have to do with it ._.
23:26:35 <int-e> it's another kind of polynomial equations
23:26:53 <oerjan> <fizzie> I have a feeling the signed overflow is UB to cater for (real or hypothetical) machines where signed-integer arithmetic traps on overflow rather than doing something else. <-- what istr reading is that it's UB to allow optimizations that only work if there is no overflow hth
23:26:56 <int-e> (restricted to integer coefficients and variables)
23:27:15 <oerjan> so it doesn't actually have anything to do with ambiguousness of representation at all
23:27:24 <oerjan> (or not just that, anyway)
23:28:15 <oerjan> hm the fizzie is idle
23:28:20 <Bike> well, yes, i don't care about that limitation here though is all
23:29:33 <oerjan> @tell fizzie <fizzie> I have a feeling the signed overflow is UB to cater for (real or hypothetical) machines where signed-integer arithmetic traps on overflow rather than doing something else. <-- what istr reading is that it's UB to allow optimizations that only work if there is no overflow. so it isn't just about ambiguousness of representation, if at all.
23:29:33 <lambdabot> Consider it noted.
23:33:45 -!- Patashu has joined.
23:38:31 -!- mihow has joined.
23:40:54 -!- nooodl_ has quit (Quit: Ik ga weg).
23:46:19 -!- Patashu_ has joined.
23:46:19 -!- Patashu has quit (Disconnected by services).
23:56:04 <tswett> Optimizations that only work if there's no overflow, eh?
23:57:55 <zzo38> LLVM can explicitly specify if there is no signed overflow and no unsigned overflow.
23:58:13 <oerjan> i think the c faq had examples
23:58:53 <tswett> IIRC, in C, unsigned integer overflow is defined to wrap around and signed integer overflow is undefined behavior. I guess you could use a signed 16-bit integer to represent an unsigned 8-bit integer with undefined behavior on overflow.
←2014-05-22 2014-05-23 2014-05-24→ ↑2014 ↑all