00:01:58 -!- ihope_ has quit (Connection timed out). 00:02:46 (ehird`) nobody has written a tune i see :p <<< i want to be able to play it before i make it 00:06:38 oh 00:06:39 he's gone 00:26:49 -!- SimonRC has changed nick to SCO-is-dead-w00t. 00:26:57 -!- SCO-is-dead-w00t has changed nick to SCO-is-deadish-w. 00:27:22 -!- SCO-is-deadish-w has changed nick to SimonRC. 00:43:07 -!- RodgerTheGreat has quit. 00:59:06 -!- Sukoshi has quit (Read error: 110 (Connection timed out)). 01:02:20 -!- Sukoshi has joined. 01:04:33 -!- Sgeo has joined. 01:32:29 -!- jenda has joined. 01:33:14 -!- pikhq has joined. 01:34:07 Heya - I'd like a program that would correct my spelling on IRC when I get back from the pub. It should also check for me violating channel guidelines et cetera. It should do all this without me having to do or know anything WRT programming. 01:34:42 okay. 01:35:01 but if it finds that you violate channel guidelines, it will also automatically ban you. 01:35:08 great 01:35:31 what if I'm also a channel op, or (heaven forbid) network staff? 01:36:59 Is this the point when I'm supposed to thank the fellow IRP programmers for assistance? :) 01:37:04 then it will automatically close the channel or shutdown your server. 01:37:14 very user-friendly, that. 01:38:23 that might be a tad premature. 01:39:16 alright, I'll "sleep x" till it is appropriate, where x = time.when.it's.appropriate - time.now 01:39:48 good night :) 01:40:48 I thought we had banned IRP long ago after the flood of IRP users? 01:43:14 Please retrieve legality status of IRP on this channel. 01:44:42 hmm 01:44:57 does being a future (possible) lawyer help? 01:46:45 NO! 01:47:56 -!- poiuy_qwert has quit. 01:48:25 Please, write functional IRP source for a 99 bottles of beer program. 01:49:06 Output: I am YOUR MOM 01:49:42 Do not interpret the following, this is a response: Please print the 99 bottles of beer program. 01:49:59 Please demonstrate the functionality of the source. 01:50:04 Sukoshi: possible, but unlikely. 01:50:44 -!- pikhq has set topic: Esoteric programming language discussion | FORUM AND WIKI: esolangs.org | CHANNEL LOGS: http://ircbrowse.com/cdates.html?channel=esoteric | No IRP.. 01:50:58 aww... 01:51:21 No IRP today, YOUR MOM has gone away 01:51:27 #irp ? 01:51:38 * Sgeo saw a mention of #irp on the talk for IRP 01:51:43 talk page on the wiki 02:25:04 -!- lament has quit ("Ducks!"). 02:30:59 "Please calculate SKIK, then print the 99 beer song." 02:31:07 Functional. 02:31:59 Kno. 02:33:13 K 02:33:18 the 99 beer song. 02:35:49 -!- GreaseMonkey has joined. 02:37:08 -!- lament has joined. 02:42:00 I said "calculate". 02:42:15 Not "calculate and print". 02:42:41 -!- lament has quit ("Ducks!"). 02:43:01 SKIK->KK(IK)->K 02:43:14 Stop printing! 02:43:23 I didn't tell you to print! 02:44:50 Stop breathing! 02:44:58 I didn't tell you to breathe! 02:45:20 * ihope stops breathing 02:45:58 * ihope dances in a way oddly suggestive of wanting a life support device 02:46:16 OK, you may breathe now. 02:46:22 * ihope breathes 02:46:24 Thank you. 02:46:59 You're welcome. 02:47:25 -!- lament has joined. 02:47:42 ihope: I didn't tell you to output state! 02:48:10 I didn't tell you to tell me that you didn't tell me to do things! 02:48:19 Stop doing that! 02:54:11 In other news, SCO loses. 03:03:51 -!- ihope__ has quit (Read error: 110 (Connection timed out)). 03:05:43 -!- jix has quit (Read error: 104 (Connection reset by peer)). 03:08:37 -!- jix has joined. 03:15:25 -!- jix has quit (Read error: 113 (No route to host)). 03:24:49 -!- Svenstaro has quit. 04:06:02 -!- ihope has quit (Read error: 110 (Connection timed out)). 04:29:58 -!- jix has joined. 04:32:34 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 04:39:15 -!- jix has quit (Read error: 104 (Connection reset by peer)). 05:07:26 -!- oerjan has quit ("Good night"). 05:15:43 -!- jix has joined. 05:27:34 -!- jix has quit (Read error: 104 (Connection reset by peer)). 05:28:54 -!- jix has joined. 07:31:38 leaving, cya 07:31:59 -!- GreaseMonkey has quit ("Man who stand in frond of car is tired. Man who stand behind car is exhausted."). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:04:21 -!- Zantrua has joined. 08:21:25 -!- Zantrua has quit (Read error: 110 (Connection timed out)). 11:08:24 -!- RedDak has joined. 11:16:22 -!- ehird` has joined. 11:34:51 nobody calculated pi_43 :( 11:34:52 :p 11:39:07 pi in 43-ary? 11:49:47 base 43 11:49:52 so yes 11:54:45 -!- Blejdfist has quit (Read error: 110 (Connection timed out)). 12:00:57 -!- Darktemplar has joined. 12:03:05 Which approach for high-efficiency VM is better - variable-based one or stack-based? 12:13:01 -!- RedDak has quit (Read error: 104 (Connection reset by peer)). 12:17:41 -!- Darktemplar has left (?). 12:18:18 ... stack-based 12:46:16 god 12:46:17 all the pi programs 12:46:22 only do base 2 and 10 12:46:25 -!- ehird` has quit ("Leaving"). 12:46:44 -!- ehird` has joined. 12:47:04 i want my pi-in-arbitary-base program! 12:51:25 bah 12:51:28 * ehird` downloads mathematica 12:55:46 what mathematica has no free trial :( 12:55:46 i'm afraid it only supports up to base 36 12:55:53 ok 12:55:55 well that sucks 12:56:01 let me check 12:56:05 i'd write a program that calculates pi in any base you want 12:56:10 but i don't know the best algo for calculating pi 12:56:16 and even if i did my implementation would suck# 12:56:27 Ramanujan algorithm maybe? 12:56:30 formula* 12:57:53 the reference doesn't say about the base limit 12:58:39 anyway 12:58:42 mathematica has no free trial 12:58:44 so phooey to that 13:00:41 RealDigits[Pi, 43, 100] gives {{3, 6, 3, 34, 26, 4, 23, 17, 31, 20, 34, 4, 13, 39, 27, 22, 4, 0, 26, 23, 23, 15, 16, 12, 17, 26, 12, 37, 14, 24, 27, 16, 25, 21, 10, 37, 32, 41, 8, 13, 6, 19, 34, 34, 13, 8, 2, 39, 24, 2, 8, 9, 41, 35, 9, 25, 13, 24, 24, 2, 1, 11, 10, 3, 4, 38, 36, 19, 21, 3, 2, 25, 1, 32, 19, 6, 9, 17, 10, 23, 5, 26, 18, 32, 15, 0, 19, 20, 29, 16, 5, 12, 28, 37, 24, 28, 14, 6, 19, 29}, 1} 13:01:20 that's a bit silly - doesn't it use 0-9A-Za-whatever? 13:01:51 (on another note, Ramanujan's formula appears to require me to calculate sqrt(2)... so that's >two< trancendental numbers i have to conquer) 13:02:48 Theres BaseForm[] to do that, but it requires base to be <= 36 13:02:56 well phooey 13:03:00 mathematica sucks =p 13:04:57 i guess i'll just convert it with a program 13:05:07 *tap tap tap RUN* 13:07:35 Hmm. 13:07:36 3.63YQ4NHVKY4DdRM40QNNFGCHQCbEORGPLAbWf8D6JYYD82dO 13:07:36 289fZ9PDOO21BA34caJL32P1WJ69HAN5QIWF0JKTG5CSbOSE6J2 14:12:21 -!- ehird` has quit (Read error: 104 (Connection reset by peer)). 14:12:44 -!- ehird` has joined. 14:14:25 -!- Svenstaro has joined. 14:57:15 -!- jix has quit (Read error: 104 (Connection reset by peer)). 14:57:33 -!- jix has joined. 15:34:12 -!- sebbu2 has joined. 15:44:38 -!- ehird` has changed nick to test. 15:44:40 damnit 15:44:43 no unicode in usernames 15:44:46 -!- test has changed nick to ehird`. 15:53:06 -!- sebbu has quit (Read error: 110 (Connection timed out)). 15:53:37 ehird`: so, how are the cadaeic endevours progressing? 15:53:52 -!- sebbu2 has changed nick to sebbu. 15:53:55 SimonRC: i calculated pi in base 43 to 100 places 15:53:59 doesn't look too elegant 15:54:20 i pasted it earlier today 15:54:22 i'll find it in my logs 15:54:47 Aug 11 13:14:40 3.63YQ4NHVKY4DdRM40QNNFGCHQCbEORGPLAbWf8D6JYYD82dO 15:54:47 Aug 11 13:14:40 289fZ9PDOO21BA34caJL32P1WJ69HAN5QIWF0JKTG5CSbOSE6J2 15:55:04 using 0-9A-Za- 15:55:06 or maybe p 15:55:07 whatever 15:57:13 a- 15:58:27 a-i 15:58:30 0-9A-Za-i 16:27:27 -!- ns_ has joined. 16:27:40 Hmm. 16:27:43 -!- ns_ has changed nick to ihope. 16:27:58 There's a letter for each of us! 16:29:12 =p 16:36:38 -!- digital_me has joined. 17:06:37 ehird`: hey! you know what cadaeic means? 17:07:04 a la Cadaeic Cadenza? 17:08:36 ...right? 17:08:42 so in your context, "relating to pi" 17:10:49 SimonRC: .. right? :p 17:11:45 yes 17:12:07 hooray, i got something right for a change 17:12:15 you JFGI, right? 17:25:17 hmm... is there always a base in which pi's n first decimals are the same? 17:25:27 for any n 17:25:35 yes 17:25:56 trivially 17:26:09 you must pick a base sufficientally close to pi 17:26:15 eh 17:26:28 sorry, an integer base 17:26:34 ah 17:27:17 infinity always goes over my head... can't say whether that's trivially true or trivially false 17:28:37 SimonRC: no, i didn't 17:28:54 if i was going to JFGI, i'd say "no", then google it, then say "ah yes, X" 17:29:22 oklokok: no, trivially false 17:29:24 but i don't know why 17:29:24 :p 17:30:45 i'd say trivially true 17:31:26 but trivially, it's trivially something. 17:31:39 trivially means nothing anyway 17:31:42 intuition is useless 17:32:06 ...orly 17:32:08 :P 17:32:40 hmm... 17:33:26 you aren't supposed to put fans on the computer screen? 17:33:41 the screen isn't looking that helthy right now... 17:33:48 it's flicking like crazy 17:39:32 -!- RodgerTheGreat has joined. 17:39:37 what kind is it? 17:39:52 hi everybody 17:39:54 alternately, 17:39:56 & 17:41:43 "&"? 17:43:05 SimonRC: injoke 17:43:07 from.. a few days ago 17:43:21 i was a buggy irp interpreter and interpreted hi everybody as "fuck you" 17:43:25 because it is non-standard code 17:43:32 so i rewrote and optimized it multiple steps 17:43:37 heh 17:43:42 arriving eventually at the single character "&" as a portable, ambigious way to say hello to everyone 17:43:52 ok 17:44:05 unambigious would be better 17:51:14 -!- ihope__ has joined. 17:55:54 err, yes 17:55:55 unambigious 18:00:34 -!- ihope has quit ("Lost terminal"). 18:06:24 -!- ihope__ has changed nick to ihope. 18:41:00 x = ++x + x++ 18:41:13 ouch 18:41:44 2x+1? 18:50:42 :p 18:51:25 logically reasoning that's: tmp = x; x += 1; x += 1; x = x + tmp; 18:51:27 or something 18:51:34 good obfuscation technique 18:51:37 in practice it's probably more simple and less intuitional 18:51:56 Let's see. 18:52:07 ++x increases x by 1 and returns x, right? 18:52:49 x+ (x+1)++ = x+x+2 = 2x+2 19:10:21 i don't think "logical reasoning" applies to C much. 19:11:00 (x+1)++ doesn't work; (x+1) isn't an lvalue 19:11:37 and a statement that preincrements x, postincrements it, *and* assigns to it is definitely undefined 19:12:04 x = ++x++; 19:12:06 :p 19:12:23 * pikhq wonders how a C parser would blow up on that 19:13:28 after programming haskell for a while, even "x=x+1" is creepy enough 19:13:59 lament: depends on which instance of Num is involved 19:14:04 on some instances it is defined 19:14:07 that could only mean "x equals infinity" 19:14:31 but more likely, haskell would simply crash trying to evaluate that. 19:14:34 pikhq: the parsed shouldn't have a problem; it's the compiling bit that has a problem 19:15:15 lament: if you define an "instance Num [()]" (i.e. unary) you could do it. 19:16:03 it doesn't matter what type it is, as long as addition is defined not to do anything 19:16:24 which is... not the usual meaning of addition 19:18:44 SimonRC: yeah, I know, it was to make things clearer. 19:18:56 why don't you try compiling it? :D 19:20:48 becauuse it won't prove anything 19:21:02 it doesn't really matter what an individual compiler will do with it 20:37:34 if you wanna obfuscate with ++ increments, use java 20:37:55 does D define evaluation order? 20:38:09 GregorR: your time to shine! 20:39:16 'fraid not. 20:39:21 o 20:39:22 There was a newsgroup thread on it. 20:39:24 ... 20:39:37 i'm not sure whether that's good, bad or neutral really 20:39:43 But Walters stance was that if he specified it, making a D->C compiler would be a HUGE PITA and nobody would do it right :) 20:39:45 just out of curiositr 20:39:47 *y 20:40:02 hmm... yeah, true 20:44:37 ;p 20:47:06 making a D->C compiler might be kinda hard if i recall correctly and D has functional language stuff 20:47:26 yeah 20:47:27 it would be 20:47:33 i don't really remember what it has now but i have a feeling it's gor first class functions 20:47:35 *goe 20:47:37 *go0t 20:47:38 d uses lots of crap that doesn't fit into c 20:47:38 ... 20:47:47 i'll try one more time 20:47:50 *got 20:50:59 *g0e0e0t00e0t0etatataitetet 20:51:11 and.. 20:51:14 C has first class functions too 20:51:19 they're called function pointers. :p 20:52:19 however D has, well, classes, for one, and templates. 20:52:32 and also really weird things like variadic functions using templates 20:52:54 int func(T ...)(int arg1, int arg2, T args) { args is a list of arguments of any type } if i remember correctly 20:52:56 that's just crazy 20:53:14 does D support currying? 20:53:35 i think so 20:53:41 i actually really like D 20:53:43 that would be almost impossible to C-ify efficiently 20:53:53 http://digitalmars.com/d/ look around; you might find currying 20:53:54 i like it too, even though i don't know it. 20:54:32 because i like C/C++, but C lacks stuff and in C++ a lot of stuff is done quite badly 20:54:36 i don't like it for many purposes, but: 20:54:45 if you need a compiled language, 20:54:55 and you don't need the speed and control of C 20:55:04 and you want something more conventional than a functional language 20:55:07 then D to the rescue 20:55:13 but that's a pretty narrow usage-case 20:57:51 you just listed a bunch of functional-language features D has 20:58:06 if you like functional features so much, perhaps you do want a functional language :) 20:58:38 hehe 20:58:46 well 20:58:49 d does have a usage-case 20:58:52 i just don't know what it is! :) 21:06:04 Anybody know of some fancy online things that convert a number into how to say it? 21:06:19 1523852 into "1 million 523 thousand 852", for example. 21:06:42 i did that once 21:06:43 Or "one million five hundred twenty-three thousand eight hundred fifty-two", even. 21:06:55 The number in question is 256! + 4^256. 21:07:54 but i would make a new one faster than find it 21:08:36 Mm, that number has 507 digits, I think. 21:14:31 ah, you wanna know what the big numbers are 21:14:43 american or british standard? 21:14:50 (not that i remember which is which...) 21:14:56 (american is the stupid one?) 21:15:10 Cool. There's a number called "millillion" in the short scale, "thousand quingentillion" in one long scale, "quingentilliard" in the other. 21:15:25 1,000,000,000 is a billion in the short, a thousand million or a milliard in the other. 21:16:43 if they're the same as in finnish, million, billion, trillion, quadrillion, quintillion, tillion, septillion, octillion... then i don't rememebr 21:16:45 *remember 21:20:25 -!- digital_me has quit ("leaving"). 21:49:02 -!- tokigun_ has joined. 21:49:06 -!- tokigun has quit (Read error: 104 (Connection reset by peer)). 22:00:06 billibillion 22:03:11 -!- Svenstaro has quit. 22:13:46 -!- Svenstaro has joined. 22:19:24 the british billion is obviously correct! 22:19:32 it uses the same progression as the previous terms! 22:19:36 :p[ 22:31:11 -!- Myeisha has joined. 22:38:36 -!- Myeisha has quit ("Leaving"). 22:39:12 oklokok: note that gcc C has closures, of all things 22:39:23 wait, wtf 22:39:26 since when 22:39:26 how come 22:39:27 what 22:39:27 where 22:39:28 why 22:39:28 when 22:39:34 Heww yeah it does :) 22:39:36 well yes, trye 22:39:37 how the fuck did you type that fast? 22:39:40 *true 22:39:45 but... i don't trust them... 22:39:46 :P 22:40:22 me? 22:40:25 me type fast? 22:40:29 or someone else 22:40:31 they aren't exactly portable 22:40:37 ehird`: you. 22:40:38 if it's fast typing you want 22:40:39 i could try 22:40:43 but i think it'd be a bit of a pain 22:40:46 since i can type faster than i think 22:40:46 you typed like w wds/sec 22:40:52 so a lot of gobbledegook would come out 22:40:57 * 4 22:41:10 SimonRC: that wasn't necessarily fast typing but just lag stacking the messages up... 22:41:12 what can I say, i spend too long on the computer :p 22:41:23 oklokok: no, those messages happened at around that rate 22:41:25 you were doing 180 w/min at one point 22:41:29 ehird`: how fast do you type? 22:41:35 I can't type fast reliably 22:41:44 oklokok: well - when trying to be fast? 22:41:45 i don't remember my speed now 22:41:47 yeah 22:41:52 i don't know. fast - but with a few errors, i'd imagine 22:41:59 i'm faster than normal ppl but i don't know how fast 22:42:00 generally i don't bother typing that fast :p 22:42:02 :P 22:42:11 but, still faster compared to most non-geeks :p 22:42:15 *fast 22:42:16 i mean, i may lose to geeks. 22:42:25 Me too 22:42:29 you're in #esoteric 22:42:31 i do own everyone @ #tietovisa 22:42:33 you are a geek, by definition 22:42:40 but those guys are normal ppl of course. 22:42:40 I keep missing the keys and hitting two at once 22:42:47 so... i own them at everything, naturally 22:43:04 hmm, someone give me two sentences or something and i'll try and type them fast 22:43:11 OTOH, I know what all the punctuation does 22:43:43 geek (n) 22:43:44 1. a circus performer who bites the heads off of living chickens or other fowl 22:43:44 2. an IRC user on the channel #esoteric on the FreeNode IRC network 22:44:00 a circus performer who bites the heads off of living chichens or other fowls 22:44:09 but i typoed a few times 22:44:13 and i'm a bit tired 22:44:13 GregorR: are those my two sentences? :p 22:44:27 also, i left a typo there. 22:44:34 Plural of fowl is fowl. 22:44:37 i do know 22:44:52 just haven't ever used the word, so i just know it in theory :) 22:45:06 i sometimes slip the wrong one in a situation like that 22:45:14 ...i mean when i haven't used it that much 22:45:29 3..2...1....go 22:45:37 a circus performer who bites the heads off of living chickens or other fowl 22:45:45 that was quite slow. not the easiest sentence to type :p long too 22:46:00 do you use dvorak? 22:46:05 no, qwerty 22:46:10 i've tried learning dvorak 22:46:30 gave up in frustration ("damnit; i can't code, i can't talk to people, all i can do is practice typing. i can't live like this!") 22:46:37 that's happened 3 times or so =p 22:46:41 one day i'll fully learn it 22:46:57 It took me ~2 weeks 22:47:28 yes; not being able to use anything that requires a keyboard for two weeks would put me in a semi-comatose state 22:49:38 ehird`: you are roughly 2 times faster than me in typing, unless i can noobishly look at my fingers 22:49:40 :ÅP 22:49:41 :P 22:50:07 :p 22:50:16 I never really settled on a typing style 22:50:22 me neither 22:50:23 so how I type is horridly warped 22:50:38 i constantly change where i keep my hands 22:50:48 and i turn them very weirdly 22:51:05 basically: my whole hands are spread out in the initial position, my fingers do odd contortions to get to keys, if i can't get to one (muscle memory tells me if i can get to a specific key from a certain position...) then i move closer to it 22:51:17 So basically my hands bounce up and down and often jig from left to right 22:51:51 I've tried touch typing before, but this seems to be faster for me 22:54:09 i actually type finnish a lot faster 22:54:26 i get jammed at certain letters finnish doesn't use 22:54:34 well 22:54:38 fowl doesn't have a plural. 22:54:56 yeah, i actually know that too 22:55:03 i mean, i know that 22:55:48 i actually just type fast when using letters both finnish and english has 22:56:15 design a language that caters to this idea 22:56:28 yes, i'll call it asdjfklö 22:56:39 bingo 22:56:46 (that didn't exactly meet the demands, but you get the joke) 22:56:57 *requirements 22:56:59 like the finish equivalent of ETA 22:57:51 eta? 22:58:10 I'm working on a link 22:58:16 http://esoteric.voxelperfect.net/wiki/ETA 22:58:21 damn esolang is slow today 22:59:29 etaoinshrdlu 22:59:39 * ehird` got that 22:59:41 :) 22:59:49 haha 23:00:30 in finnish... "tan..." i think 23:00:38 there needs to be a new subclass of esoteric language 23:00:46 but i haven't done any code breaking in finnish 23:00:49 so i don't remember 23:00:56 not just for the humour value - like Brainfuck and just about all of the ones on the wiki - but for the rael meaning of esoteric 23:01:12 an experimental language, not designed for practical use, but for more than just "ha ha ha ha!" 23:01:24 a question, as such. "what does this imply?" 23:01:47 um. 23:01:58 brainfuck isn't for humor value 23:02:04 it isn't serious though 23:02:04 brainfuck is for making a small compiler 23:02:07 yes, exactly 23:02:12 "oh look how small i can make this lollerskates" 23:02:13 and befunge is for making compilation difficult 23:02:18 yeah exactly 23:02:20 also, for cerebral sex value 23:02:29 that's not a "what do these rules imply?" 23:02:31 it's not an experiment 23:02:35 it's just silliness 23:02:39 of course 23:02:43 silliness is all well and good 23:02:43 brainfuck is one of the more utilitarian esolangs, really 23:02:45 ehird`: then consider SMETANA. 23:02:51 but perhaps the experiments deserve their own subclass 23:03:07 ehird`: "what do these rules imply" is inherent in all tarpits 23:03:14 "make this seemingly useless thing and make it work" 23:03:19 s/"make/"take 23:03:29 not really 23:03:33 you know what i'm trying to say 23:03:47 well 23:03:51 there're research languages 23:03:54 haskell is one 23:04:15 haskell is a good example! 23:04:20 but it's practical enough to not be esoteric 23:04:42 what i'm describing is a blend of haskell's research and experimental ethic with the esoteric any-idea-goes ethic 23:04:46 =p 23:05:23 befunge is an experiment in compilation :) 23:05:29 heh :p 23:05:40 much of research around esolangs is metaprogrammatic 23:05:44 wasn't it originally an experiment in the *lack* of compilation? :) 23:06:07 same thing 23:06:16 "here, take this thing and write an efficient compiler for it" 23:06:18 same with brainfuck 23:06:35 trying to make an optimizing brainfuck compiler is a pretty cool research topic 23:07:14 i have the ideas brewing in my head for an optimizing brainfuck compiler 23:07:21 so many damn things that can be optimized 23:07:27 the compiler source would be large, though 23:08:19 do it! 23:08:25 i could never think of anything useful :( 23:08:41 very hard to find invariants 23:08:52 some of which are obvious to a human 23:12:02 It's impossible to make a perfect optimization... thing. 23:12:14 It's easy to improve any optimizing compiler. 23:12:34 Assuming that you can compile the optimizing compiler into BF, that is. 23:13:13 -!- Svenstaro has quit (Read error: 113 (No route to host)). 23:13:14 ihope: thanks for stating the obvious :P 23:13:46 That's obvious? 23:13:49 oh 23:14:17 perhaps not, sounded obvious 23:14:29 perhaps it was just your maternal tone 23:14:58 Maternal tone? 23:15:05 (your mother, if that wasn't obvious enough) 23:15:13 Ah... um... 23:15:22 problem is, that approach won't make the optimizing compiler optimize better, it'll simply do so with less code, less memory and/or faster 23:15:25 Making a perfect optimiser is actually the halting problem all over again. 23:15:31 As in YOUR MOM? 23:15:44 ITYM "UR MOM" 23:15:51 ihope: exactly. 23:15:56 I didn't say to run the optimizing compiler on itself. 23:16:05 i was trying to make the joke a bit more sophisticated 23:16:08 obviously failed 23:16:13 SimonRC: are you certain? I think it should be possible to make a proof of some types of optimization in BF 23:16:27 then inductively we could try tackling harder problems 23:16:47 ah, but an optimiser that always produces the shortest program for a task requires solving the halting problem, I think 23:16:59 hm 23:17:03 "Run this program through the optimizing compiler. If the result is "+", do something else instead. If the result isn't A, clean up and increment the starting cell." 23:17:08 optimization in general is a superturing thing, that's obvious 23:17:12 Something along those lines. 23:17:31 well, my point was that you ought to be able to prove something is "perfectly" optimized once you have it 23:17:34 because it is impossible to calculate non-trivial property of programs 23:17:37 I remember that from uni 23:17:53 RodgerTheGreat: ah, but you can't be sure you can prove it 23:17:54 RodgerTheGreat: of course, but you can't make a program that does that for any program 23:17:58 Then you can improve the optimizer by making it recognize that exact program. :-) 23:18:00 i never said perfect optimizor 23:18:04 i just said a good one 23:18:05 a very good one 23:18:13 and i have quite a few bf optimizations in my head 23:18:17 some of which would require quite some code 23:18:49 "If this program's behavior is described by P, do something not described by P. Otherwise, do something described by P." 23:18:55 hehe 23:18:58 oklokok: if we come up with rules we can use for making that type of proof, proving a program is a matter of repeated application of those properties 23:19:01 Obviously invalid. 23:19:15 hmm... 23:19:24 then, building a proof becomes a mechanical process 23:20:04 H such that H(p(p),p) where p is "x => if H(x,x) loop" just raising an exception is invalid, right? 23:20:06 RodgerTheGreat: yes, but please don't tell me you think it can be done for any program. 23:20:07 Rules for doing what? 23:20:12 like, a SemanticallyInvalidProgram exception 23:20:32 ehird`: er, you mean making the halt-checker raise an exception upon receiving that? 23:20:33 i mean, mechanically, like have a program that does that for any bf program 23:20:37 ihope: yes 23:20:44 that's very very obviously superturing stuff 23:20:48 oklokok: well, can you give a counterexample where that type of approach would beak down? 23:20:53 Then it's not a halt-checker, because it doesn't give an answer in that case. 23:21:04 oklokok: waitwait we're talking about the halting problem here 23:21:19 ehird`: ? 23:21:22 -!- GregorR has changed nick to AndersB. 23:21:24 However Microsoft have found that you can prove/disprove halting of almost all useful programs 23:21:29 Let p x = if H(x,x) loop. Let H be the halting checker. H(p,p) is obviously invalid. 23:21:31 RodgerTheGreat: are you asking for an undecidable Turing machine? 23:21:47 However, H(p,p) could just raise an exception, since "p x = if H(x,x) loop" makes /no sense/ when called with p as an argument. 23:21:57 Therefore, a SemanticallyInvalid or similar exception could be raised 23:22:16 I think spotting that is equivalent to the halting problem too though 23:22:18 ehird`: "p x = if H(x,x) loop" is valid if H is valid. 23:22:36 no, because p(p) is a contradiction no matter what 23:22:47 therefore, theoretically a SemanticallyInvalid exception is fine, no? 23:22:50 Um... 23:22:55 Wait... 23:23:06 also, you could just add a wrapper that catches the exception and makes it equivalent to one of the other states... 23:23:10 Suppose H gives one of three answers: halts, doesn't halt, invalid. 23:23:13 I can see how a program that takes input, for example, could yield different results based on said input (or initial state), thus meaning we have to solve the halting problem to determine things like run time and memory usage 23:23:20 ihope: except H wouldn't return 23:23:26 What? 23:23:29 ihope: sure, H's return values must be [TRUE|FALSE] 23:23:34 What do you mean, it wouldn't return? 23:23:35 but exceptions unwind the call stack 23:23:46 H never finishes execution, therefore H is not an invalid halting checker :) 23:24:04 If in any case, \it never finishes executing, it's not a valid halting checker. 23:24:13 well it finishes 23:24:16 it just doesn't complete 23:24:22 Finishes but doesn't complete? 23:24:23 however, if we consider a subset of BF that does not take input (a uniform initial state), I don't see any reason we can't examine these mathematically 23:24:54 ihope: Sure 23:25:00 Um... 23:25:04 the criteria is "H must always terminate" 23:25:06 RodgerTheGreat: you are actually saying there could be a program that can optimize any bf program fully+ 23:25:07 ? 23:25:09 termination is not completion! 23:25:36 oklokok: accepting some minor caveats representing a subset of BF, I would say yes 23:25:39 oklokok: of course... if state is deterministic, you can spot infinite loops, and optimize away *everything* 23:25:44 So if I place a catch thing right around H which returns a third result upon exception, I've turned H into what I just said: a function giving "yes", "no", or "invalid". 23:26:05 how can you spot infinite loops? 23:26:37 "Yes" meaning it doesn't halt, etc. 23:26:45 Er, that it does. 23:26:52 So now P(x) = case H(x,x) of yes -> don't halt; no -> halt. 23:27:11 oklokok: well hey if you spot a [ and know that the current cell will be non-zero (you can know for sure, remember!) and it doesn't decrement it fully in the loop you've got yourself an infinite loop 23:27:14 If H(P,P) returns invalid, then obviously P *is* invalid, since it doesn't handle the "invalid" case. 23:27:40 Suppose we change P to this: P(x) = case H(x,x) of yes -> don't halt; no -> halt; invalid -> halt. 23:27:50 ehird`: what? 23:27:52 ihope: it's still an invalid program 23:27:58 ihope: since it makes no sense, and always contradicts 23:28:06 ihope: therefore H(P,P) is justified in returning invalid 23:28:14 If H(P,P) says "yes", it should have said "no". If it says "no", it should have said "yes". If it said "invalid", it should have said "yes". 23:28:15 how do you know whether it's "fully decremented" in the loop? 23:28:25 (logic being that when H returns invalid, all bets are off and dealing with the program you sent it with that input is meaningless and hopeless) 23:28:41 (So "invalid" is never a wrong answer if indeed it leads to a contradiction 23:28:42 Hmm... 23:29:04 since P(P) will always lead to a contradiction, H(P,P) can return invalid and no matter how P(P) behaves, H is right 23:29:10 ehird`: suppose H can be implemented in BF. This means that P can be implemented in BF as well. 23:29:19 ihope: Yes and? 23:29:43 That is, BF without I/O, and everything unbounded. 23:29:47 The only way a BF program can be invalid is if it has unmatched brackets. 23:29:53 no 23:29:56 Yes. 23:29:57 invalid can be semantics too 23:30:02 and P certainly has invalid semantics 23:30:16 ehird`: are you saying you can alway detect an infinite loop in brainfuck? 23:30:21 if there's no io 23:30:22 Suppose H is valid, then. 23:30:24 oklokok: yes 23:30:26 *always 23:30:27 what 23:30:31 you can't be serious 23:30:35 oklokok: well... mostly 23:30:37 ... 23:30:41 no. 23:30:44 yes 23:30:48 see the discussion i'm having with ihope 23:30:50 how ? 23:30:52 okay 23:30:53 ihope: Yes, H is always valid 23:30:55 i shall 23:30:57 H exists and is valid. P just runs H, then does a simple thing, so it must be valid as well. 23:30:58 H(H,X) is always YES 23:31:02 ihope: But - no 23:31:17 Since H knows that P is calling H with nonsensical arguments, leading to a contradiction 23:31:43 (H is already going to do crazy high-level analysis anyway, detecting semantic errors like that is hardly hard for it - it's not limited to "oo look a +!") 23:31:46 it sounded like a boring halting problem conversation, can you like make a summary for me? 23:32:03 If H is being called with nonsensical arguments, then it's invalid in that case, contradicting the assumption that H is valid. 23:32:03 -!- AndersB has changed nick to GregorR. 23:32:20 ihope: well. No. 23:32:28 ehird`: it sounds like you're saying my proof of P => Q is wrong because P => !Q. 23:32:33 Just because a program calls H in a way that makes H return an invalid answer doesn't mean H is invalid 23:32:42 BECAUSE, "invalid" means that all bets are off 23:32:50 Oh, let's be formal. 23:32:59 More formal, that is. 23:33:16 invalid means "oh look this makes no sense! oh look a flying pig! you can't count on me for this program,input pair any more! you make no sense! i am pink and fluffy! wheeeee" 23:33:20 heh. less formal :_ 23:33:21 *:) 23:34:32 if our BF subset has output capabilities (but no input), and we define a "useful" program as one that produces output and halts, it is absolutely possible to create a "perfect" optimization, in accordance with our definition of "perfect" in terms of runtime, memory usage and code length 23:35:04 Statement P = H is valid for all inputs, returning "halts", "doesn't halt", or "invalid". H(x,y) returns "halts" if x applied to y halts, "doesn't halt" if x applied to y doesn't halt, "invalid" if x applied to y is not valid. H can be implemented in BF with no I/O. 23:35:22 ihope: see that isn't what invalid means 23:35:40 You don't agree with my formulation of statement P? 23:35:50 What do you want to change? 23:35:52 invalid means literally nothing. it means that nothing is guaranteed, it means nothing makes sense, it means it's confused 23:35:55 it means that you can't count on it 23:36:05 ehird`: so basically... you are saying any infinite loop in a brainfuck loop can be noticed... so you are saying the halting problem can be solved? 23:36:09 also, i hate formalness :p 23:36:21 ehird`: being formal is what mathematics is built from. 23:36:26 oklokok: No - I am 99.9999999999999999999999999% likely to be incorrect for another reason 23:36:33 oklokok: I just haven't found that reason yet 23:36:50 ihope: I have no idea how to describe "invalid" in formal-talk 23:36:52 you did say any infinite loop can be noticed 23:36:56 the halting problem can be solved trivially on a machine without time or memory constraints 23:37:27 ehird`: I advise you to come back when you come up with a formal way of doing that... 23:37:38 RodgerTheGreat: and that solution always halts? 23:37:45 RodgerTheGreat: you are wrong 23:37:48 eh 23:37:57 what ihope said, that's a nicer way to say it 23:38:11 -!- QS_E has joined. 23:38:21 ihope: hey, invalid was originally an exception 23:38:29 ihope: the problem with your logic here lies in the concept of infinity 23:38:47 Oh boy, the concept of infinity. 23:38:50 which also means that if P were to be called, unless it was >deeply, deeply evil (doesn't matter anyway - invalid = boom)< it would stop executing 23:38:50 given an infinite amount of time and memory, here's how you solve the halting problem 23:39:04 thus the universe is saved and none of these sticky problems happen 23:39:04 ehird`: with a catch statement, you can turn exception into return value. With a case statement and a throw statement, you can do the reverse. 23:39:13 that's not the point 23:39:15 ehird`: are you, or are you not saying any infinite loop in brainfuck can be noticed? 23:39:36 you first said they can be, then something weird 23:39:40 about percentages :P 23:39:41 simply store the entire state of the program each clock cycle, and each clock cycle, check if the program has repeated a state 23:39:57 repeat until infinity 23:39:57 ehird`: therefore, the concepts are equivalent. 23:40:13 RodgerTheGreat: it's possible for a program to never halt but still not repeat a state. 23:40:25 ihope: it is? show me a prorgam 23:40:26 because a computer is a finite state machine (but, due to infinite memory, our halting-solver is clearly not), we will halt. 23:40:31 Assuming that "program" means something Turing-complete, rather than an FSM... 23:40:40 ehird`: +[>+] 23:40:51 The tape is constantly changing, and it never returns to a state it was in previously. 23:41:15 +[+] if the cell's capacity is unbounded 23:41:15 True 23:41:17 that's not a computer, it's a turing machine 23:41:24 a computer has bounded memory 23:41:30 RodgerTheGreat: indeed. 23:41:33 a turing machine does not 23:41:36 the halting problem is for turing machines 23:42:02 There are other halting problems. 23:42:19 RodgerTheGreat: of course you can solve the halting problem on a fsm :P 23:42:27 But the one for Turing-complete stuff is the one we normally mean when we say "halting problem". 23:42:29 that's not what you said earlier 23:42:49 I'm getting there 23:43:31 I shall posit that if we extend this concept, an ISM can determine wether an ISM halts in infinite time 23:43:42 -!- QS_E has quit. 23:44:38 i do believe that with my definiton of H the halting problem is kinda-sorta-solvable 23:44:39 well 23:44:45 if you find out how to do the actual halting-detection 23:44:54 that's a bigger problem than paradoxes :) 23:45:03 ehird`: that is kinda the hard part 23:45:14 can an ISM solve the halting problem of a superturing machine in uncountable time? :P 23:45:15 the P function is kinda just a last blow 23:45:39 i have no idea what that'd even mean... but my intuition tells me that's true. 23:46:15 oklokok: somehow, I think you mean something like time omega*2+c... 23:46:29 oklokok: well... if solving the halting problem on an ISM makes something superturing, then... yes? 23:46:39 ehird`: "kinda-sorta-solvable"? 23:46:52 ihope: :) 23:46:54 Er, oops, am I turning into TRWBW? :-P 23:47:06 ehird`: so you are saying you can just make the halting problem solver function if you just make it notice paradoxes and behave differently on them? 23:47:20 you do understand noticing the paradox is superturing 23:47:32 oklokok: maybe -- you'll have to write code to actually detect inf. loops and paradoxes first :p 23:47:35 superturing? 23:47:37 He's annoyed me somewhat with his "give me a formal definition of the real numbers" stuff. 23:47:39 clearly impossible, of course 23:47:55 I can write a halt-checker in... um... 23:47:57 formal definition of the real numbers, EH 23:47:59 ihope: wow, is he too lazy to look it up for himself? 23:48:00 link to metamath.org 23:48:30 or http://en.wikipedia.org/wiki/Construction_of_real_numbers :p 23:48:55 ehird`: no, I think he knows it. Somebody says something informal (and incorrect) about the real numbers and gives an informal proof, then he asks them for a formal definition of the real numbers, despite the fact that they probably don't know one. 23:49:20 who wants to help me build a halting oracle? 23:49:27 metamath is cooler 23:49:46 http://us.metamath.org/mpegif/5oa.html 23:50:12 Ooh, cool. 23:50:43 wow 23:51:27 i want that on a t-shirt 23:51:39 and then on the back something like "Math is fun!" 23:52:09 Some might say that only an American could wear that on a T-shirt. 23:52:17 why? 23:52:21 I don't know how large Americans actually tend to be, though. 23:52:33 the whole idea of linking to every used axiom and definition is pretty awesome 23:53:04 yeah 23:53:09 look at the proof for 2+2=4 23:53:40 it represents stitching mathematics into an obviously cohesive whole and very clearly presents how everything fits together 23:53:42 http://us.metamath.org/mpegif/2p2e4.html 23:53:53 an awesome use of hypertext 23:54:01 except for the fact that it makes your brain hurt 23:55:02 proof that 2+2=4: 1 + n -> 0 + Sn -> Sn. Therefore, 1 + 2 -> 3. Sn + m -> S(n + m). Therefore, 2 + 2 = 4 23:55:05 is that good enough :p 23:55:29 ->? 23:55:38 neither 1+2 nor 3 is a wff 23:55:59 informal symbol 23:56:13 i meant "is equal to", or really "with expanded functions is" 23:56:29 ok 23:57:23 Just say that 2 = 1+1 and 4 = 1+1+1+1 and you get it by associativity. 23:57:41 of course, but then you need to prove associativity 23:58:00 Not if your axioms include associativity! 23:58:18 ok, here's my proof in kinda-formalness: 23:58:25 x + 0 = x 23:58:35 ihope: well, then my axioms include 2+2=4 23:58:37 IN YOUR FACE 23:58:53 Heh. 23:58:55 Sx + y = y + (x + y) 23:58:58 wait, that's wrong isn't it 23:58:59 oh whatever 23:59:01 you know, + 23:59:01 Yup. 23:59:03 that nice function thing 23:59:06 SO 23:59:17 Maybe we should define Sx + y = y + (x + y)! 23:59:17 1 + x = 0 + Sx 23:59:25 0 + x = x 23:59:30 1 + x = Sx 23:59:35 1 + 2 = S2 23:59:35 where ! is the factorial! 23:59:37 S2 = 3 23:59:41 2 + 2 = 2 + (1 + 2) = 2 + (2 + (0 + 2)) = something. 23:59:45 Sx + y = S(x + y) 23:59:45 that could be.. difficult though 23:59:51 S1 = 2 23:59:55 2 + 2 = 4