00:00:21 oklopol: no that was an early solved case 00:00:24 CakeProphet: good thing you're not required to read/write it, then 00:00:40 but clearly this shows that 4 is an even prime 00:00:42 then is that guy actually referencing something or just being stupid 00:00:46 CakeProphet: however i invite you to look at the channel you're calling things a waste of time in :) 00:00:47 yes 00:01:45 oerjan: do you at all know how the proof goes btw? 00:02:01 it goes like doot doot doot do do do do do 00:02:19 obviously Phantom_Hoover is the expert on that here but i wouldn't be surprised if you also knew some of the fancy words involved 00:02:20 no. 00:02:37 oklopol: wat xD 00:02:42 how long is the shortest proof atm? 00:03:05 elliott__: to quote Phantom_Hoover, "surely everyone here knows how the proof goes" 00:03:20 its about three bagpipes long 00:03:31 elliott__: hey, #esoteric is an excellent way to spend time. 00:03:33 and when we didn't, he explained it to us 00:03:43 time that would otherwise be spent doing something productive. 00:03:54 or possibly even designing esolangs. 00:04:19 to quote famous bisexual oklopol, "and when we didn't, he explained it to us" 00:04:48 elliott__: if it's any consolation, after this survey and my next article, i'll try to drop finite state automata and concentrate on CA, which feel much less like esolanging 00:05:23 oklopol: im going to put your limbs into separate bags 00:06:04 oerjan: http://esolangs.org/w/index.php?title=Infinity&curid=1253&diff=23206&oldid=20220 00:06:13 oerjan: is this really valid... 00:06:18 * elliott__ looks at this article WOW this article sucks 00:06:26 Can we delete it, it really sucks 00:06:33 oh wait cpressey started it ;D 00:07:58 that seems like a slightly pointless article 00:08:31 it is, it's free of all informational content :P 00:08:43 i sometimes get this impression cpressey has a slightly tortuous relationship to math 00:08:49 http://esolangs.org/wiki/Special:Whatlinkshere/Infinity 00:08:51 oerjan: you don't say. 00:09:05 * oklopol likes math 00:09:40 http://esolangs.org/wiki/Lazy_evaluation 00:09:46 oh, the link added points to... a joke article 00:10:16 we have reached the esounderbelly 00:10:26 oerjan: rude non-/msg-replier :( 00:10:30 * elliott__ feels rejected 00:11:42 i didn't see the point in moving the conversation, it's not like there was any slanderous information involved 00:12:04 well in what _you_ said, anyway :P 00:12:07 what were you talking about? 00:12:12 i say everything in /msg 00:12:16 i would have said that in /msg 00:12:20 but i'd have to send it to everyone present 00:12:23 and that would be a lot of work. 00:12:24 oklopol: rabies. 00:12:39 hmm 00:12:50 so oerjan, dem rabies 00:12:52 oerjan 00:12:53 oerjan respond 00:12:54 please 00:12:55 he;lp 00:12:57 rabies?? 00:13:00 oklopol: log 00:13:38 well i'm sorry but once you are showing symbols it's too late anyhow 00:13:45 *symptoms 00:14:00 is that true? 00:14:32 mostly, i think there are very few who have survived after reaching that stage 00:14:34 it's crazy that there are like a million cool diseases but no one ever gets those 00:14:40 everyone just gets like them flues 00:14:46 which all look the same 00:14:48 flus 00:15:02 yeah not a typo 00:15:52 admittedly after changing dem to them i should've removed the e too 00:17:17 i gather Caroline enjoyed her rabies 00:17:43 http://upload.wikimedia.org/wikipedia/commons/c/c1/Rabies_Free_Countries_Sourced_2010.svg rabies-free bitch 00:18:30 http://en.wikipedia.org/wiki/Milwaukee_protocol 00:18:40 get it 00:18:42 rabies-free bitch 00:19:03 oerjan: handling bats leads to rabies? but they're so cute :( 00:19:40 so umm, tomorrow's conference lectures start when i went to sleep yesterday, and end when i woke up 00:19:50 i'll probably learn so much 00:19:51 :D 00:19:58 :D 00:20:28 one of the speakers has a proof of P=NP 00:20:36 you're in a conference? 00:20:43 yeah starts in 6h 00:21:04 [FUMING JEALOUSY] 00:21:20 i'm not really an organizer since i was doing my master's thesis when most of the stuff was happening 00:21:40 although i did referee one paper (it sucked THE ASS :D) 00:21:42 oklopol: so are you a master yet 00:21:51 err yes, ages ago 00:22:01 i don't keep track of the lovelifes of famous bisexuals oklopol 00:22:06 don't expect me to know 00:22:23 hey if it's a P=NP proof it should show up on godel's lost letter any moment /s 00:22:29 why thank you for asking, you can read it here http://tucs.fi/research/publication-view/?pub_id=tSalo11a 00:22:43 oerjan: There were 2 survivors out of 25 patients treated under the first protocol. A further 10 patients have been treated under the revised protocol and there have been a further 2 survivors.[6] 00:22:44 good protocol 00:22:58 most excellent 00:23:01 oklopol: you can write normally?? 00:23:03 so weird dude 00:23:12 oerjan: proof goes as follows: nature can be simulated in polynomial time, and bubbles solve an np-complete problem when they form their lattice 00:23:22 oklopol: did you write this in notepad 00:23:25 say yes 00:23:39 i'd hazard a guess the obvious error is in the second part 00:23:47 there is no way you wrote this >:| 00:23:53 it looks nothing like you. 00:24:20 oklopol: lol they gave you a master's for this? 00:24:26 wow they must just be really kind 00:24:28 to a retard idiot 00:24:29 like you 00:24:30 lmao this sucks 00:24:33 am i hurting your feelings yet 00:25:00 elliott__: well i solved at least 3 problems that had been open for more than a decade, this formally qualifies a laudatur. 00:25:20 lol if you say so noob 00:25:20 oerjan: lol thought you meant obvious error in the second paragraph of my abstract :D 00:25:24 lol 00:25:26 did you scramble to check 00:25:30 "NOOOOOOOOOOOOOOOOOOOOOOOOOOOOO" 00:25:35 oklopol: so when are you a phd 00:26:27 but in fact one of my conjectures is complete bullshit, because of a definition being wrong 00:26:32 this was fun to notice the day that was published 00:28:56 elliott__: umm dunno, once i come up with an interesting result 00:29:09 -!- pikhq_ has quit (Ping timeout: 240 seconds). 00:29:23 -!- pikhq has joined. 00:29:23 if i don't, probably in 4 years, if i do, perhaps right after that 00:31:10 http://www.math.utu.fi/projects/uc2011/timetable.html this here conference, more cs than math 00:31:23 -!- FireFly has quit (Quit: swatted to death). 00:32:43 and other random stuff 00:32:54 15:30–16:00Coffee 00:32:57 go to that one it sounds interesting 00:33:02 i suppose it's basically an esolanging conference 00:33:18 Computing with planar toppling domino arrangements 00:33:18 W. Stevens 00:33:34 A Universal Flying Amorphous Computer 00:33:34 L. Petru, J. Wiedermann 00:34:37 strange name that second author 00:35:14 yeah i guess he had two sex changes 00:35:34 man -> universal amorphous computer -> man 00:36:09 :D 00:36:30 i wanna change my name to A Universal Flying Amorphous Computer now 00:36:56 i have to try to sleep for a bit... 00:36:57 -> 00:37:29 damn where is olsner whne you don't need him 00:37:58 sweding around like swedes do 00:38:25 Proof. Obviously 00:38:25 2 00:38:25 log 2n = n2 > n log a = log an 00:38:25 for large enough n. 00:38:27 oklopol: obviously your mom 00:40:01 yeah i'm not sure why i added that appendix but i guess there might be readers who don't know basic math but manage on page 30 anyway 00:40:05 i don't think that notation quite got through 00:40:16 yeah umm 00:40:32 lol 00:42:31 right the 2 on the line above should be the exponent of n 00:42:33 oklopol: like me say 00:43:27 argh -> 00:44:13 actually there are very few "obviously" claims where i actually skip the exact proof, in fact i have gone to great lengths to formalize everything so formal that no one in their right mind would ever read it 00:44:36 oklopol: COQ LOL 00:45:10 that would've been cool, but perhaps i'm still a factor of a few hundred away from that in formalness 00:45:32 argh -> 00:45:33 I think in technical writing it's a good idea to not skip over details that might seem obvious. 00:45:55 except that makes mathematical proofs unreadable :) 00:46:04 well, yes. 00:46:12 you do that in a phd and in an article 00:46:15 maybe not with proofs. 00:46:27 you don't do that in a master's thesis or a book 00:46:51 in a book, you don't do it because the reader is assumed not to know the boring details, and is such forced to suffer through them to make sure they understand what's actually happening 00:47:18 in a master's thesis, you don't do it because *the author* is demonstrating they know this stuff 00:47:24 20:38:27: so now my Underload (...)s are no longer functions 00:47:24 20:38:29: what should i call them? 00:47:24 20:38:31: subprograms? 00:47:24 20:40:58: blimps 00:47:32 argh -> 00:47:38 the coining of the terioerioeioroeioioireoriooioerioermoinologiiiiiiiiiiiiiiiiiiiiojdfg 00:48:17 impressive keyboard 00:48:28 " maybe not with proofs." what else is there 00:48:41 *formal proofs 00:49:01 i have to -> 00:49:03 ashsthsry¨' 00:49:45 you have to, imply? 00:50:48 I often feel that <-> 00:56:19 baby, feel that equivalence 00:57:55 that's an interesting way to view biconditionality. 00:58:15 who tf calls it biconditionality 00:58:35 the concept of being biconditional? I do. 00:58:45 well biconditional i guess but it's the same thing as equivalence :) 01:00:02 <-> = =? 01:00:09 it's a congruence relation, if you take its quotient you get a boolean algebra 01:00:10 er, insert logical equivalence sign. 01:00:41 what is the quotient of a relation? 01:01:17 the quotient of an equivalence relation is what you get if you identify equivalent elements 01:02:03 a congruence relation is an equivalence relation which respect your other operations, such as in this case ->, and, or 01:02:08 *respects 01:02:19 so the quotient is the set where the relation is true? 01:02:31 um no 01:02:55 the quotient is a set whose elements are the equivalence classes of the relation 01:03:20 ah. 01:05:08 so congruence relations are equivalence relations that -- what you just said. 01:05:29 * CakeProphet only learned the basics of relations in his discrete math class. 01:05:41 basically what they are. 01:05:47 yes. the significance of that is that you can transfer your other operations to the quotient 01:07:07 the map from an original element to the corresponding quotient element then becomes a homomorphism 01:09:00 which map? There's a lot of different kinds of maps. :D 01:09:29 map is here a synonym for function 01:09:32 ah okay. 01:10:05 -!- Lymia has joined. 01:10:06 -!- Lymia has quit (Changing host). 01:10:06 -!- Lymia has joined. 01:10:34 Lymia: YOUR IP WAS HANGING OUT 01:11:04 ^_^' 01:11:14 oerjan: so when you convert the original element into its equivalence class, it preserves the algebraic structure? 01:11:14 DMZ points at my dad's computer. Who cares. 01:11:21 yep. 01:11:53 hmmm, okay. I'll need to learn more about abstract algebra to understand what that entails. 01:12:59 http://en.wikipedia.org/wiki/Isomorphism_theorem#General 01:13:53 but an equivalence class is a set. Do you have to change the operations at that point to work with the equivalence class, or do you still use the same definition as before? 01:13:58 in wikipedia's usual even-more-incomprehensible-than-necessary style 01:14:13 its so the editors can prove theyre smart 01:14:39 oerjan: yeah the articles are dense, but the specificity helps when you need to know /exactly/ what something means. It's terrible for learning a new subject in advanced math though. 01:15:45 yeah but mathworld is easier to understand most of the time and just as precise, c'mon :P 01:15:57 well let's say A and B are two equivalence classes, and & is one of the operations. Then the congruence requirement means that for every a in A and b in B, a & b ends up in the _same_ class C, so just define A & B = C 01:16:55 ah okay, so the operation becomes something else, but still works the same way. 01:17:03 I think... 01:17:04 yeah 01:18:02 basically with the equivalence class version of the operation you're just applying the operation to all of the elements. 01:18:11 precisely 01:18:11 and taking that as your resulting set. 01:18:29 * CakeProphet scratches head. 01:18:29 DMZ points at my dad's computer. Who cares. 01:18:40 be careful, dprk has nukes 01:18:46 :( 01:19:04 well... there's a small caveat in that A & B applied to all elements is not necessarily _all_ of C, i think 01:19:44 oerjan: hmmm, well... how is C defined? 01:19:59 C needs to be a whole equivalence class 01:20:06 right. 01:21:13 so you just get some subset of C. Though I have no idea how you would know what C is without more information.. 01:21:41 well you just take anything which is equivalent to something (and thus everything) in C 01:21:52 and that must still be in C 01:22:02 ah okay. 01:22:38 that's interesting. You can take any subset of an equivalence class, and find every member of that equivalence class in a given set. 01:22:54 well 01:22:57 not any subset. :P 01:23:01 there is one that you can't use. 01:23:20 you don't say. 01:24:31 my discrete math teacher was incorrect. He seemed to use equivalence class as a synonym for equivalence relation. 01:25:06 oops 01:25:15 one of our test questions was to determine whether a given relation was an equivalence class by determining that it was transitive, symmetric, and reflexive. 01:25:34 and he's like, one of the better professors at my university. That's saying a lot. 01:26:18 huh 01:27:59 the US seems to come on top if you compare the _best_ universities. i wonder how it'd do if you compared the _median_ 01:28:07 probably bottom :P 01:28:10 probably not so great. 01:28:51 oerjan: the funnest would be comparing the worst :D 01:28:55 I go to a pretty small university. Not saying that being a small university is bad, but in this case it's true. 01:28:56 or the ... mean 01:29:06 ..the mode? :P 01:29:10 THE MOST COMMON UNIVERSITY. 01:29:10 yes. 01:29:23 THE RANGE 01:29:26 this makes sense 01:29:31 although i guess this may be heavily skewed by different countries having different cutoffs for the quality needed for an institution to call itself a university 01:29:40 the modal university would be the one with the most satellite campuses I think. 01:29:43 CakeProphet: An equivalence relation over a set gives rise to a partition of that set into equivalence classes under that relation 01:29:51 coppro: so does your mom 01:29:55 OHHH SNAPE 01:30:10 coppro: yep, I just read about that on Wikipedia actually. :D 01:30:17 and.. inferred it. 01:30:25 from what oerjan told me. 01:30:40 using my MIIIND. 01:30:45 lies 01:30:52 all evidence points to you not having one 01:30:59 :( nonsense. 01:31:05 elliott__: goddamn executive meddling in doctor who 01:31:29 coppro: I stopped watching because Moffat turned from genius to incompetent after taking the reins 01:31:48 or are you referring to something other than new episodes 01:31:53 !lperl I'm trying to find a way to use *{"THIS"}* thing I made, but alas I cannot think of anything. 01:31:53 ​I'm trying to find a way to use THIS thing I made, but alas I cannot think of anything. 01:32:07 !show lperl 01:32:08 ​perl while(<>){s/ (? so wait it does what? 01:32:35 evals perl code in {} 01:32:36 evaluates Perl between *{}*'s 01:32:37 yep 01:32:44 {{}} is nicer 01:32:51 originally it was {{ but that would make balancing issues arise 01:33:04 unless I, you know, accounted for that. 01:33:10 elliott__: I'm referring to the new episodes 01:33:17 elliott__: at what point did you stop watching? 01:33:28 while(<>){s/ (? er... 01:33:37 DON'T COPY NEWLINE 01:34:12 coppro: I watched a few episodes of the new series, then didn't for reasons of bad time management rather than disinterest (although I didn't think they were very good episodes), then I got friends whining at me about how terrible the writing is :) 01:34:27 A constant stream of meaningless myth arcs is plot, right? 01:34:29 !lperl blahblah*{print "You suck"}*blahblah 01:34:29 ​You suckblahblah1blahblah 01:34:41 !lperl blahblah*{"You suck"}*blahblah 01:34:42 ​blahblahYou suckblahblah 01:35:59 !delinterp lperl 01:36:00 ​Interpreter lperl deleted. 01:36:01 !addinterp lperl perl while(<>){s/ (? ​Interpreter lperl installed. 01:36:08 once again negative look-around saves the day 01:36:08 elliott__: kay. the first of Matt Smith's seasons was pretty good I thought; the second is going downhill but I think it's due to trying to stuff the story into the time available before the midseason cliffhanger. I hope it picks up in August 01:36:24 coppro: Also River Song is the worst character ever invented. 01:37:03 elliott__: Why do you say that? 01:37:06 !lperl This is a {{@{[qw*MOTHERFUCKIN' TEST DAWG*]}}}. 01:37:06 ​This is a 3. 01:37:36 yes, it's a 3. 01:37:47 coppro: She's a blatant Mary Sue whose entire basis is "OOH, MYSTERIOUS FUTURE COMPANION PERSON, BE VERY MYSTERISED" 01:38:34 !lperl also a \{{test}} 01:38:34 ​also a \{{test}} 01:38:46 !lperl also a \{{{x 01:38:46 ​also a \{{{x 01:38:48 !lperl also a \{{{x}} 01:38:48 ​also a \{x 01:38:52 fail 01:38:59 fianna fail 01:39:03 ...not really. :P 01:39:07 yes it is 01:39:10 \{{ <-- escaped 01:39:15 {x <-- not the start of a code block 01:39:19 elliott__: Kay, that might be how she was introduced. She gets developed a lot more later on. Definitely got some serious Mary Sue going on though. 01:39:43 coppro: I'm aware she's been developed a small amount, but that really doesn't justify the Mary Sueness 01:39:43 elliott__: NOPE. TOO HACKISH DOESN'T WORK THAT WAY. 01:39:56 coppro: Also this "SORT OF A TIME LORD" thing makes no fucking sense. 01:39:57 it's {\{{x}} 01:40:25 -!- calamari has joined. 01:41:01 though don't ask me why you would ever escape the {{ 01:41:23 elliott__: they actually just explained that; whether you like the explanation or not is up to you. To me, it's not too far-fetched compared with the rest of the series. 01:42:19 coppro: erm, they just revealed /and/ explained it simultaneously 01:43:09 coppro: but the explanation isn't an explanation, it's just "banging in the tardis makes time lordy things" 01:43:53 actually i have to wonder why time lords are still practically extinct, you'd think the doctor would just seduce someone and take them to the tardis, that should be enough to get some full time lord dna going 01:43:55 -!- variable has quit (Remote host closed the connection). 01:43:56 elliott__: It was due to exposure to the Vortex; the same basic thing that made the Time Lords what they are now. 01:44:22 The Doctor clearly had no idea it could work that way until now 01:44:51 Sweet, eagerly awaiting an episode of gratuitous sex scenes 01:45:01 I MUST DO IT... FOR THE TIMELORDS [sax] 01:45:09 lol 01:46:18 !delinterp lperl 01:46:18 ​Interpreter lperl deleted. 01:46:19 !addinterp lperl perl while(<>){s/ (? ​Interpreter lperl installed. 01:46:29 !lperl a \{{test}} 01:46:29 ​a {{test}} 01:46:31 CakeProphet: you realise {{"{{"}} works to escape 01:46:48 ...no? 01:46:49 you could even define two subs that return "{{" and "}}" with short names 01:46:52 CakeProphet: yes? 01:46:57 oh, right. 01:47:09 NOPE. too late. 01:47:17 !delinterp lperl 01:47:17 ​Interpreter lperl deleted. 01:47:23 wait hm 01:47:26 i'm too lazy to fix it 01:47:28 !addinterp lperl perl while(<>){s/ (? ​Interpreter lperl installed. 01:47:29 rofl. 01:47:54 I was going to add escaping of \'s, but that was far more \\'s than I was comfortable with. 01:47:58 -!- Vorpal has quit (Ping timeout: 250 seconds). 01:48:05 I cherish Perl for its readability. 01:48:41 !delinterp lperl 01:48:41 ​Interpreter lperl deleted. 01:49:17 !addinterp lperl perl while(<>){s/ \{\{ (.*?) \}\} (?!\})/$1/gxee;print} 01:49:17 ​Interpreter lperl installed. 01:51:13 also, Perl pretty much dominates the golfing of this one. 01:51:48 the golfed form would s/while/for/ and take out the /x option and whitespace 01:52:06 coppro: also i don't like the new theme :D 01:52:15 elliott__: I agree with you there! 01:52:18 -!- comex has quit (Quit: ZNC - http://znc.sourceforge.net). 01:52:29 but the "The Doctor is being awesome now" music is good 01:52:41 they should have just picked one off http://whomix.trilete.net/ :D 01:53:16 that huge torrent is now three percent completed, i should note 01:55:20 !delinterp lperl 01:55:20 ​Interpreter lperl deleted. 01:55:23 !addinterp lperl perl $_=<>;s/{{(.*?)}}(?!})/$1/gee;print 01:55:24 ​Interpreter lperl installed. 01:55:33 !lperl {{'test'}} 01:55:33 ​test 01:55:38 -!- sebbu2 has joined. 01:55:38 golfed. :D 01:55:47 ok, I'm seriously ill 01:55:52 CakeProphet: what's with "ee" 01:55:54 -!- variable has joined. 01:55:56 i should go to bed now 01:55:58 and, also, i will 01:56:21 elliott__: e evaluates the replacement string as Perl code. ee evaluates the replacement string as Perl code and then evaluates that. 01:56:49 ouch 01:56:53 can it go to eee? 01:57:00 uh... I don't actually know. 01:57:03 MWAHAHAHA 01:57:05 I don't think so. 01:57:09 at least it's not documented. 01:58:33 -!- sebbu has quit (Ping timeout: 240 seconds). 01:59:57 `run echo '$_=<>;s/{{(.*?)}}(?!})/$1/gee;print' | wc -c 01:59:59 ​36 02:00:02 awww yeah. 02:01:13 ok 02:01:14 sleep 02:01:15 really 02:01:15 sleep 02:01:16 sleep 02:01:16 sleep 02:01:21 DO IT 02:01:26 SLEEP 02:01:32 -!- elliott__ has quit (Quit: FUUUUUUUUUUUUUUUUUUUCK YOUUUUUUUUUUUUUUUUUU). 02:01:57 !perl $_ = "hm..."; s/hm/"'1+2'"/e; print; 02:01:57 ​'1+2'... 02:02:03 !perl $_ = "hm..."; s/hm/"'1+2'"/ee; print; 02:02:03 ​1+2... 02:02:07 !perl $_ = "hm..."; s/hm/"'1+2'"/eee; print; 02:02:07 ​3... 02:02:10 hahaha 02:02:11 nice 02:02:19 you can stack an arbitrary number of e's 02:03:26 !perl $_ = "hm..."; s/hm/"'q{1+2}'"/eeee; print; 02:03:26 ​3... 02:03:42 !perl $_ = "hm..."; s/hm/"'q{q[q<1+2>]}'"/eeeeee; print; 02:03:43 ​3... 02:04:03 !perl $_ = "hm..."; s/hm/"'q{q[q<1+2>]}'"/eeeee; print; 02:04:03 ​1+2... 02:04:14 !perl $_ = "hm..."; s/hm/"'q{1+2}'"/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee; print; 02:04:15 ​3... 02:04:37 at this point we need w and h flags 02:04:42 conjecture: there can be an arbitrary number of e options. 02:05:10 !perl $_ = "hm..."; s/hm/"'q{print 'perverse'}'"/e; print; 02:05:10 ​'q{print 'perverse'}'... 02:05:14 !perl $_ = "hm..."; s/hm/"'q{print 'perverse'}'"/ee; print; 02:05:15 ​... 02:05:35 hmm, yeah I don't know where standard input is going. 02:05:35 -!- calamari has left ("Leaving"). 02:05:48 probably to.... standard input 02:05:53 Lymia: bad ' matching i think 02:05:55 er 02:05:56 output 02:06:00 oh, that too 02:06:02 use more q's 02:06:29 CakeProphet: in lperl previously the explicit print got first 02:06:32 !perl $_ = "hm..."; s/hm/"'q{q{print 'perverse'}}'"/e; print; 02:06:33 ​'q{q{print 'perverse'}}'... 02:06:36 !perl $_ = "hm..."; s/hm/"'q{q{print 'perverse'}}'"/ee; print; 02:06:37 ​... 02:06:37 oerjan: yeah 02:06:42 So what is this? 02:06:50 An extra way to do (extra perverse) conditionals? 02:06:54 Lymia: you cannot have nested '' 02:07:09 i don't recall if it's even possible to escape them 02:07:13 it may have a problem with the nested {}'s as well but I'm not sure. 02:07:25 !perl '\'' 02:07:29 !perl print '\'' 02:07:29 ​' 02:07:58 in any case you can use pretty much anything as a delimeter with the q construct. 02:07:58 !perl $_ = "hm..."; s/hm/"'q{q{print \'perverse\'}}'"/ee; print; 02:07:58 ​... 02:08:25 !perl print q#possibly even pound sign?# 02:08:25 ​possibly even pound sign? 02:08:32 Lymia: i think the \ get stripped already at the " stage 02:08:44 Lymia: just use more q's :P 02:08:49 !perl $_ = "hm..."; s/hm/"'q{q{print \\'perverse\\'}}'"/ee; print; 02:08:50 ​q{q{print 'perverse'}}... 02:08:57 !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/ee; print; 02:08:58 ​q{q{q{print 'perverse'}}}... 02:09:00 !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/eee; print; 02:09:00 ​q{q{print 'perverse'}}... 02:09:03 !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/eeee; print; 02:09:03 ​q{print 'perverse'}... 02:09:07 !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/eeeee; print; 02:09:07 ​print 'perverse'... 02:09:11 !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/eeeeee; print; 02:09:12 ​perverse1... 02:09:18 SUCCESS 02:09:22 Perl is inane. 02:09:22 as indicated by the 1 02:09:41 Lymia: well the {}'s nested pretty well... 02:09:56 !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/e; print; 02:09:57 ​'q{q{q{print \'perverse\'}}}'... 02:09:59 !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/ee; print; 02:09:59 ​q{q{q{print 'perverse'}}}... 02:10:05 !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/eee; print; 02:10:06 ​q{q{print 'perverse'}}... 02:10:33 !perl q{q[q ​Can't find string terminator "}" anywhere before EOF at /tmp/input.17755 line 1. 02:10:39 .. 02:10:43 oops I hit enter. :P 02:10:57 suuuure... 02:11:46 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)). 02:12:06 -!- rodgort has joined. 02:12:21 elliott__: I estimate 8% for me. Incidentally, do you know what the "the Doctor is being awesome" music is called? 02:12:30 hm "" is just an abbreviation for q"" iirc 02:12:30 !perl $_=q{q[q]};$_=eval for 1..12;print 02:12:30 ​q[q] 02:12:44 and '' for q'' which is a special case 02:12:53 oerjan: "" is qq 02:13:06 oh hm 02:13:19 q is '', and yes those forms are abbreviations of the more general form. 02:13:23 whatever that even means. 02:14:13 well but i also recall that using '' as delimiters in some of the other quote-like constructs turns off interpolation 02:14:45 yeah it does. like in m and s 02:14:54 !perl $_ = "test"; s'test'$1'; print; 02:14:55 ​$1 02:15:20 !perl $_=q{q[q]};$_=eval for 1..120;print 02:15:20 ​q[q] 02:15:31 yeah I don't know why that's not working. 02:16:04 !perl $_="q{q[q]}";$_=eval for 1..120;print 02:16:05 ​$# is no longer supported at /tmp/input.18287 line 1. 02:16:20 ...heh 02:16:21 !perl $_="q{q[q]}";$_=eval for 1..120;print 02:16:22 ​q{q[q]} 02:16:26 :[ 02:16:31 so q$ might do weird things. 02:16:32 CakeProphet: erm sure you didn't get other lines in DCC? 02:16:43 oerjan: I did not. 02:16:46 it only prints once. 02:16:58 the for is attached to the $_=eval 02:17:16 hm 02:17:24 !perl print qq'$0' 02:17:25 ​/tmp/input.18472 02:17:27 !perl print "a" for 1..10; 02:17:27 ​aaaaaaaaaa 02:17:43 so I'm guessing the return value of eval is bad. 02:18:03 !perl $_="q{q[q]}";eval for 1..12;print 02:18:03 ​q{q[q]} 02:18:20 !perl $_="q{q[q]}";eval for 1..11;print 02:18:21 ​q{q[q]} 02:18:38 yeah I'm stumped. :P 02:18:51 !perl $_="q{q[q]}";$_=eval for 1..11;print 02:18:51 ​q{q[q]} 02:19:06 it might be a bad idea to use all of those symbols together at once like that... 02:19:28 because of special variables. 02:20:27 !perl $_="q{q[q]}"; print eval; 02:20:28 ​q[q] 02:20:43 !perl $_="q{q[q]}";($_=eval) for 1..11;print 02:20:44 ​q{q[q]} 02:20:59 ...yeah. no fucking idea. 02:21:19 erm 02:21:21 my guess is that it has something to do with horrid abuve of quote-like operators. 02:21:39 *abuse 02:21:51 what variable is the for 1..11 construct using? >:) 02:21:59 ... 02:22:08 looool 02:22:21 except 02:22:22 why $_ of course. Why, what is the problem? 02:22:37 oh and it's made local i guess 02:22:43 yes 02:22:45 so it's reinstated after the loop 02:23:01 yes, if $_ were global terrible things would happen. 02:23:08 instead it's a weird pseudo-global thing. 02:23:59 !perl $s="q{q[q]}";$s=eval$s for 1..11;print$s 02:23:59 ​Array found where operator expected at (eval 6) line 1, at end of line 02:24:26 now we're getting into the "abuse of quote-like operator" errors. 02:24:38 it's parsing the @q as an array variable 02:24:45 lol wtf are you guys doing 02:24:53 Patashu: fun with Perl. 02:26:02 CakeProphet: leave off the outer " 02:26:25 ....ah 02:26:28 or change it to '' 02:26:41 !perl $s='q{q[q]}';$s=eval$s for 1..11;print$s 02:26:42 ​Array found where operator expected at (eval 6) line 1, at end of line 02:27:02 ya got a qq in there 02:27:07 ...oh 02:27:21 !perl $s='q{q[q]}';$s=eval$s for 1..11;print$s 02:27:22 ​muhahahahahahaha 02:27:48 we got the evil genius at the delicious quoted core. 02:28:32 sealed evil in a can 02:29:22 !perl open 0; print <0> 02:29:22 ​open 0; print <0> 02:29:33 such a strange thing.. 02:37:27 open VARIABLE, EXPR. If you don't specify EXPR, then the scalar variable with the same name as the filehandle name is evaluated and used as the filename. 02:37:34 0 is a valid filehandle name, apparently. 02:37:42 and $0 is the program name. 02:40:05 you guys know of any esoteric logic gates? 02:40:09 or esoteric circuitry 02:40:41 reversible gates are cool 02:41:18 (and theoretically, cool physically as well) 02:42:53 reversible computing, huh... 02:44:00 esoteric circuitry? not really.. 02:44:14 a quine circuit would be interesting. 02:44:25 ..but I don't even know what that means. 02:44:39 outputs its schematic as a bitmap? 02:45:35 sounds impossible. 02:46:23 sounds obviously possible, actually... 02:46:35 you just need to define proper encoding schemes 02:46:46 standard quining techniques applied to hardware 02:47:48 postscript, for printing. :) 02:47:49 the data part would be the memory 02:48:24 so I recently discovered this: http://perldoc.perl.org/functions/tie.html 02:48:40 and I think it would be a good way to explore some unorthodox variable assignment semantics. 02:49:35 but in general it just looks useful. You could easily write a package that automatically breadcrumbs a variable for you each time it's reassigned. 02:55:03 this is so very very awesome: (elliott you better visit this link when you read the logs) http://www.youtube.com/watch?v=sjtzib0G9Rs 02:57:31 awww yeah musical tesla coils. 02:58:49 those things are awesome 02:58:50 and loud 02:58:51 and awesome 02:59:14 http://www.youtube.com/watch?v=B1O2jcfOylU 02:59:23 may have already seen this one. it's the mario bros. theme song 02:59:36 yeah 02:59:44 except that one doesn't have Adam Savage dancing around 02:59:54 also I haven't heard them play Mario Bros 03:01:13 -!- augur has quit (Remote host closed the connection). 03:03:43 also this: http://www.youtube.com/watch?v=xD_HQ4B0Fcw 03:06:27 this Tesla was an awesome dude. 03:06:44 er... the "this" is an artifact from something else I was going to type. 03:53:36 -!- Slereah has joined. 03:53:37 -!- Slereah_ has quit (Ping timeout: 240 seconds). 03:59:12 future elliott: Good post-400 xkcd: http://xkcd.com/602/ 04:03:10 -!- Slereah_ has joined. 04:04:33 -!- Slereah has quit (Ping timeout: 260 seconds). 04:06:51 -!- Slereah has joined. 04:07:36 -!- Slereah_ has quit (Ping timeout: 260 seconds). 04:14:18 -!- pikhq has quit (Ping timeout: 240 seconds). 04:14:27 -!- pikhq has joined. 04:18:51 -!- Slereah has quit (Read error: Operation timed out). 04:19:42 -!- Slereah has joined. 04:21:05 -!- oerjan has quit (Quit: leaving). 04:26:08 -!- Slereah has quit (Ping timeout: 250 seconds). 04:26:15 -!- Slereah has joined. 04:34:52 -!- Slereah_ has joined. 04:35:52 -!- Slereah has quit (Ping timeout: 248 seconds). 04:39:43 -!- variable has quit (Quit: /dev/io failed). 04:46:55 I love entering random IP addresses into tracepath 04:50:24 -!- Slereah_ has quit (Ping timeout: 250 seconds). 04:51:50 -!- Slereah has joined. 04:55:52 -!- Slereah_ has joined. 04:56:56 -!- Slereah has quit (Ping timeout: 240 seconds). 05:00:51 -!- variable has joined. 05:34:25 i slept lolol ! 05:37:21 " basically what they are." <<< how many lectures did 'a relation between X and Y is a subset of XxY' take? 05:41:00 " oerjan: so when you convert the original element into its equivalence class, it preserves the algebraic structure?" <<< note that it's the 'homomorphism' type of 'preserve' and not the isomorphism type -- you might map multiple things to the same element, operations just do the same thing on both sides 05:44:29 -!- aloril has quit (Ping timeout: 250 seconds). 05:52:17 Briefly, if A is an algebra, a congruence on A is an equivalence relation F on A which is a subalgebra when considered as a subset of (the latter with the coordinate-wise operation structure). 05:52:20 haha 05:52:38 should be subset of A^2 05:53:19 but lol that's a great definition lol :D 05:55:16 well, i guess wp is an encyclopedia and not math for kids with alfred the bunny but anyway could at least give a list of equivalent definitions instead 05:57:04 -!- aloril has joined. 06:02:30 -!- augur has joined. 06:08:28 sbahj related http://www.youtube.com/watch?v=u7YfVmY9Qjs 06:17:37 oklopol: that was only one lecture. There was only two or so lectures on relations; it was a very small section of the course. 06:18:20 the largest sections were spent on combinatorics and induction proofs. 06:26:08 the sections were: a small section on boolean algebra and basic logical statements (wooo), a large section on proofs by definition/negation/contraposition covering things like divisibility and primality, a large section on induction proofs, a large section on combinatorics, a lecture on set theory, a lecture on relations, and then the last section was a mashup of FSA, regular languages/expressions, and graph theory. 06:27:27 all-in-all the most interesting math course I've taken so far. I plan on taking "Introduction to Advanced Mathematics" and then Topology later, preferably with the same professor if I don't transfer. 06:30:09 -!- Patashu has quit (Ping timeout: 240 seconds). 06:30:09 My other options are Calc 3, linear algebra, or real analysis. bleh, no thanks. Number theory is another option that would be interesting as well. 06:31:40 Linear algebra could be useful in programming, I guess... 06:32:36 but I want to learn about some motherfucking spaces. 06:33:30 spaces of what sort? 06:33:46 also what school is this? 06:35:19 coppro: the topological variety. 06:36:09 -!- Sgeo has quit (Ping timeout: 250 seconds). 06:36:10 http://en.wikipedia.org/wiki/SPSU 06:36:15 coppro: one you've never heard of 06:38:02 basically it used to be a satellite campus of Georgia Tech but is now a separate university. 06:39:23 also parts of that article read like a website for the university.. 06:47:49 I plan on transferring to Tech in my fourth year so that I can get all the good reputation while avoiding most of the obscene tuition costs. 06:52:21 hah 06:52:29 you americans and your tuition 06:53:10 yes, and our debt. 06:53:17 and our debt to pay for tuition... 06:53:37 why? Because people flip the fuck out if you raise taxes. 06:53:57 ayup 06:54:07 and don't understand economics 06:54:08 at all 06:54:10 ...not at all 06:54:20 see: any government that is not allowed to run a deficit 06:54:21 dude the tea party movement is the most retarded thing I've ever seen in American politics. 06:54:37 not allowing a government to run a deficit is suicide 06:54:47 like, your country is doomed 06:54:55 indeed 06:55:08 the states have way too much deficit though. 06:56:01 now, structural deficits suck balls 06:56:19 coppro: from where do you hail? 06:56:24 CakeProphet: Canadia 06:56:48 currently living in California working at the country^Wcompany that will someday RULE THE WORLD^W^W^W do stuff 06:56:51 we have a very pervasive structural deficit. I believe for every $2 we generate we spend 5. roughly 06:57:01 yeah 06:57:09 structural deficit definitely shouldn't happen 06:57:16 but outlawing deficit altogether is not the solution 06:57:24 because otherwise the government can't help a struggling economy 06:57:54 also dumb is the GODDAMN EVERYONE, not just Americans, who think that when the economy is doing well, taxes should go down because the government doesn't need the money 06:58:02 honestly I think raising taxes is the solution to our deficit. Perhaps even economic problems. 06:58:34 cutting programs is not because any bill to cut programs will get fucked up in congress. 06:58:49 and because no one can fucking decide what to cut. 06:59:09 well problem #1 is you're in a whole 06:59:12 *hole 06:59:25 you effectively have to cut taxes 06:59:29 or borrow a shitton of money 06:59:38 already got that covered... 06:59:43 err not cut taxes 06:59:45 cut spending 07:00:04 raising taxes is an equivalent solution really. 07:00:06 because your government can't safely raise taxes; the economy is still fragile 07:00:10 it's not 07:00:11 ...true. 07:00:22 this is the real problem 07:01:08 once the economy picks up, they can and should raise taxes 07:01:12 a lot 07:01:18 but that could be a long time 07:01:21 however, a lot of the extra revenue could be spent on economic stimulus programs which, while at the same time alleviated a structural problem of not enough revenue. 07:01:23 they should also continue to cut spending 07:01:38 military in particular 07:01:40 economic stimulus programs such as finding a way to eliminate our trade deficit... which is another structural problem. 07:01:48 coppro: yes. 07:01:53 military spending is ridiculous. 07:02:44 another common misconception is that government debt is bad 07:03:48 government debt can be friggin' awesome when you've got bonds that pay out at less than inflation 07:04:08 although too much of it will bite you if inflation drops 07:04:27 but generally our legislative branch is too busy focusing on partisan bullshit to be effective at creating economic recovery programs, so.. 07:04:38 yup 07:05:16 -!- Slereah_ has quit (Ping timeout: 255 seconds). 07:05:26 now of course there is the 'print money' approach 07:05:37 but the US economy is dead if that happens 07:05:48 I just hope I'm out of the country before 07:05:51 -!- mtve has quit (Ping timeout: 252 seconds). 07:06:00 yeah, I don't even think printing more money is even a valid consideration. 07:06:22 -!- Slereah has joined. 07:07:19 hyperinflation whee 07:07:32 of course I don't think the US government is quite as stupid as Zimbabwe 07:07:33 in my mind a gradual increase in taxes, cutting of unecessary programs, and establishment of new programs that are designed to ultimately generate more economic stability should be our goal 07:07:50 I trust Congress not to cause two hundred million percent inflation 07:08:48 coppro: yes, congress is only borderline retarded. 07:08:52 that's about as far as I go though 07:09:43 I wonder if things would improve if we made Obama temporary dictator for the duration of his term. 07:09:43 -!- mtve has joined. 07:09:46 :P 07:10:05 honestly it seems like a better option than having congress fumbling everything. 07:10:08 probably 07:10:46 coppro: unless people rioted and whatnot. 07:10:58 which, is not out of the question. 07:11:57 you don't consider that they're already doing so? 07:12:09 are they? I haven't been paying attention to that. 07:12:19 see wisconsin for instance 07:12:45 your country is in a state of political turmoil, the problem being that you have a nice half-and-half split 07:13:45 the minority that absolutely hate Obama are way more vitriolic than any protest group I've witnesses. Granted, I'm young. :P 07:13:50 *witnessed 07:14:18 it's very easy to think that there's racism involved. 07:14:50 oh, I'm not really talking about Obama-haters 07:14:58 right. 07:15:05 I mean, they exist 07:15:15 we've always been in that state. always as in... the last several decades. 07:15:15 They will exist for any political leader 07:15:39 There is a fairly significant portion of our population who believes Harper is going to ruin the country 07:15:54 I used to think that. Now I don't since I can keep my sanity that way. 07:16:11 coppro: typical stupid American that I am, I had to look up that name to know what you were talking about. :P 07:16:48 but also because his temperament has improved just enough that I think we might survive 07:18:46 man, I wish my higher education was paid for. :P 07:19:54 there's absolutely no disadvantages to educating your populace beyond secondary education. 07:20:05 sure there is 07:20:07 it costs money 07:20:09 which is obviously wrong 07:20:16 government shouldn't spend money, etc. 07:22:01 it costs money, but ultimately it enables anyone, regardless of economic background, to become well-educated. And without a well-educated populace a democracy is pretty much doomed. 07:22:12 -!- wth has joined. 07:22:38 -!- wth has changed nick to Guest56111. 07:23:26 coppro: what do you do for a living? 07:24:03 !show dechatspeak 07:24:04 ​perl while(<>){lc;s/\by\b/why/g;s/\bu\b/you/g;s/\br\b/are/g;s/\bb4\b/before/g;s/\bty\b/thank you/g;s/\bsry\b/sorry/g;s/\bur\b/your/g;s/\bb\b/be/g;s/\bbc\b/because/g;s/\blol\b/haha/g;s/\blmao\b/hahaha/g;s/\brofl\b/hahahaha/g;s/\bbrb\b/be right back/g;s/\bafk\b/away from keyboard/g;s/\b4\b/for/g;s/\b1\b/one/g;s/\bne1\b/anyone/g;s/\bno1\b/no-one/g;s/\b(some|sum)1\b/someone/g;s/\bttyl\b/talk to you lat 07:24:10 CakeProphet: Student, presently working at the aforementioned company 07:24:22 in September, I resume studenting 07:24:27 coppro: er, aforementioned? perhaps I missed something. 07:24:40 or just have the memory of a goldfish. 07:24:56 02:56 < coppro> currently living in California working at the country^Wcompany that will someday RULE THE WORLD^W^W^W do stuff 07:24:58 oh yeah 07:25:02 I missed it. 07:25:22 uh.. Google? :P 07:25:25 yes 07:25:30 oh, nice. 07:25:34 how'd you manage that. 07:25:55 by working on an open-source project and having Google people say "You should work for us". So I did. 07:26:01 (clang) 07:26:10 I would VERY MUCH be interested in going to california and doing graduate studies at Berkeley. 07:26:19 also.. I NEED to get into open source development. 07:26:25 there's absolutely no reason I shouldn't be right now. 07:26:26 you should come to Waterloo instead 07:26:36 we have cookies 07:26:40 ooooh 07:27:15 coppro: what open source project? 07:27:19 clang 07:27:23 ...oh 07:27:36 see, I thought that as just some weird onomatopoeia I didn't understand. 07:27:39 although I actually have no clue about the relative expense of graduate schools, I know that it's a hell of a lot cheaper to undergrad in Waterloo 07:27:47 I'm sure. 07:28:01 -!- Guest56111 has left ("Leaving."). 07:28:03 same with Southern Poly compared to Georgia Tech. 07:28:13 what's your tuition? 07:28:21 ......uh. lol 07:28:29 I prefer not to think about it when I can. 07:28:58 $3872 per year 07:29:02 apparently... 07:29:36 that's absurdly cheap 07:29:40 I pretty much double the cost by living on campus though. Next semester I'm living off campus and it will get way cheaper. 07:30:15 AND, Poly transfers very well to Tech. Though I'm not sure if any of the advanced CS courses will transfer because Tech has a jacked up Computer Science degree. 07:30:25 jacked up in a cool way. Just non-standard. 07:30:45 basically you pick 2 out of 8 sub-tracks. 07:30:47 ah 07:30:54 ah yeah we have some programs like that here 07:30:57 and that determines your requirements. 07:31:13 less so now that the faculty is moving on to an á la carte system 07:31:41 and since I'm waiting until my fourth year to attempt a transfer I will have to take SOME advanced CS classes. 07:32:05 but I'm almost positive data structures will transfer, and databases. 07:32:38 I have no idea about the introductory Java courses I took. GT starts off with a Python-based course. 07:32:58 fourth year seems dangerous to attempt a transfer 07:33:12 it is, but my GPA kind of requires it. 07:33:17 ah 07:34:07 as it turns out, taking summer classes in the middle of a post-relationship suicidal crisis is a bad idea. 07:35:37 but I'm over that now. It was still a poor decision though. 07:36:19 !show dechatspeak 07:36:19 ​perl while(<>){lc;s/\by\b/why/g;s/\bu\b/you/g;s/\br\b/are/g;s/\bb4\b/before/g;s/\bty\b/thank you/g;s/\bsry\b/sorry/g;s/\bur\b/your/g;s/\bb\b/be/g;s/\bbc\b/because/g;s/\blol\b/haha/g;s/\blmao\b/hahaha/g;s/\brofl\b/hahahaha/g;s/\bbrb\b/be right back/g;s/\bafk\b/away from keyboard/g;s/\b4\b/for/g;s/\b1\b/one/g;s/\bne1\b/anyone/g;s/\bno1\b/no-one/g;s/\b(some|sum)1\b/someone/g;s/\bttyl\b/talk to you lat 07:36:26 ...I cannot spot the error in this. 07:36:47 !dechatspeak lol hey guys y u mad? 07:36:49 ​Substitution replacement not terminated at /tmp/input.8285 line 1. 07:37:14 it highlights properly in emacs, and I've checked every replacement string to see if it terminates. Yet I still get an error. 07:37:27 which leads me to believe that it's some odd syntax thing. 07:37:43 ...oh wait. I see it, haha. 07:37:58 my program got cut off. 07:38:27 !delinterp dechatspea 07:38:27 ​That interpreter doesn't exist! 07:38:29 !delinterp dechatspeak 07:38:29 ​Interpreter dechatspeak deleted. 07:38:44 !languages 07:38:47 !help languages 07:38:47 ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh. 07:39:35 !show lperl 07:39:35 ​perl $_=<>;s/{{(.*?)}}(?!})/$1/gee;print 07:40:42 !addinterp lsh perl $_=<>;s/{{(.*?)}}(?!})/`$1`/ge;print 07:40:42 ​Interpreter lsh installed. 07:41:27 !lsh Hello, {{echo 'world!'}} 07:41:27 ​Hello, world! 07:42:49 I sometimes get lost in rapturous amazement of whatever programming language I happen to be focusing on at various points in my life. 07:43:39 like how Perl can do those two things in 36 and 37 bytes... 07:46:02 !lsh hiiiiiiii{{"bluhbluh"}} 07:46:03 ​/bin/sh: bluhbluh: command not found 07:46:21 !lsh hiiiiiiii{{echo "you suck"}} 07:46:22 ​hiiiiiiiiyou suck 07:46:23 :c 07:46:39 !lsh {{perl -c "fork while fork"}} 07:46:39 ​Can't open perl script "fork while fork": No such file or directory 07:46:44 !lsh {{perl -e "fork while fork"}} 07:46:53 !lsh {{perl -e "print 'hi'"}} 07:46:58 ​hi 07:47:02 lol 07:47:12 Lymia: have you been learning any Perl? 07:47:16 Nope. 07:47:30 it was either you or Patashu that was interested in learning it. 07:47:34 can't recall. 07:47:43 !bfjoust [[+-]+] 07:47:43 ​Use: !bfjoust . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/ 07:47:49 !bfjoust myon [[+-]+] 07:48:25 ​Score for Lymia_myon: 7.6 07:48:56 `run echo '$_=<>;s/{{(.*?)}}(?!})/`$1`/ge;print' | wc -c 07:49:06 ... 07:49:09 ​37 07:49:31 CakeProphet, what does that do? 07:49:35 `run echo '$_=<>;s/{{(.*?)}}(?!})/`$1`/ge;print' 07:49:40 ​$_=<>;s/{{(.*?)}}(?!})/`$1`/ge;print 07:49:46 oh 07:49:48 missed the echo 07:49:57 well wc -c counts the bytes on standard in--oh 07:50:16 yes I was just double checking my arithmetic. 07:52:06 I'm not sure how I'm going to feel about my class that's most likely going to be either C++ or C# next semester 07:52:12 after all of this Perl hacking. 07:53:49 it will be like putting myself in a straight-jacket but attaching speedy rockets and 07:55:15 So. Should I sleep? 07:55:25 I mean, I just got home, but it *is* 02:00. 07:56:32 !lperl hmmm, let me think about it. {{int(rand(2))?'yes you should':'no you shouldn\'t' 07:56:33 ​hmmm, let me think about it. {{int(rand(2))?'yes you should':'no you shouldn\'t' 07:56:36 !lperl hmmm, let me think about it. {{int(rand(2))?'yes you should':'no you shouldn\'t'}}. 07:56:37 ​hmmm, let me think about it. yes you should. 07:56:39 :3 07:57:02 Damn you, EgoBot, for being the voice of reason. 07:57:11 it's 3:57 here 07:59:36 -!- monqy has quit (Quit: hello). 08:00:32 pikhq: nah 08:02:28 coppro: so clang is basically a better C compiler. 08:02:44 CakeProphet: Problem: You do NOT want to bootstrap with it. 08:02:48 Not only no but hell no. 08:03:12 pikhq: okay. For all of my future bootstrapping purposes I will refrain from using clang. :P 08:03:33 It's actually a fairly necessary use case for a C compiler. 08:03:50 As everything else tends to rely on the presence of a sane, functioning C compiler. 08:04:08 (well, actually, everything else tends to rely on the presence of a sane, functioning GNU C compiler, because fuck you.) 08:04:55 pikhq: why do you not want to bootstrap with clang? 08:05:32 although I recall you have some weird definition of bootsrap I don't remember 08:06:05 besides, I'll probably write CakeOS PHP, Java, COBOL, Visual Basic, or something awful Haskell. Or a combination of all of those languages interpreted/compiled by fortran. 08:06:20 thereby riding my system of the evil of C that has plagues operating systems for too long. 08:06:27 .. :) 08:06:53 lol 08:06:55 ....obviously it is very late. 08:06:59 yes 08:07:00 yes it is 08:07:19 coppro: Oh, I dunno, "it relies on a functioning C++ library, and the only full-featured one in UNIX-land pretty much requires GCC and a particular set of libcs that it can fuck with". 08:08:04 (yes, the C++ library *also* pokes around in libc internals. Because "fuck you", says GNU.) 08:09:15 pikhq: Oh. I would direct you at the sister libc++ project then 08:09:28 Yeah, but it's a WIP. 08:09:34 I do approve of the project, though. 08:09:50 It should be capable of handling clang on a Mac 08:10:11 !rot13 test test 08:10:12 ​grfg grfg 08:10:20 not other platforms, because there are a few places where it pops into Mac's libc to access a few locale things which aren't exposed properly by POSIX 08:11:10 it is effectively impossible to implement it quickly on top of libc without code duplication 08:11:17 which is annoying 08:12:35 This, in my mind, is a bug to be solved by defining a standard means for the libc to expose things to the C++ library. 08:12:58 (whether by POSIX or "These are the functions we want; implement them if you want our stuff to work."...) 08:13:26 Not by brazenly going in with "Eeeeh, fuck sanity, I'm going to assume I can fuck around with implementation internals". 08:13:53 Noted 08:14:00 !addinterp rot47 perl $_=<>;tr/!-~/P-~!-O/;print 08:14:00 ​Interpreter rot47 installed. 08:14:12 !rot47 testing I am a ninja !@#$%^&*) 08:14:12 ​E6DE:?8 x 2> 2 ?:?;2 PoRST/UYX 08:14:33 Sadly, sanity is not widely accepted behavior in C. 08:14:38 pikhq: Don't get me started on wchar_t by the way 08:14:43 it's bad enough with char 08:14:49 Oh, *fuck* wchar_t. 08:15:05 yeah!.. 08:15:07 I imagine it will be something like this: 08:15:37 a) If we have a known libc that does not implement our extensions, we will attempt to hack it appropriately 08:15:45 !rot47 E6DE:?8 x 2> 2 ?:?;2 PoRST/UYX 08:15:45 ​testing I am a ninja !@#$%^&*) 08:15:55 b) If we are told to assume our extensions exist, we use them 08:16:10 c) If we have a known libc with our extensions, we use them 08:16:36 d) Otherwise we do what best we can 08:16:50 Also, this is presuming there's an actual need to poke around in the libc internals. 08:17:04 pikhq: The primary issue is properties of characters 08:17:07 e.g. isupper 08:17:19 Ah. 08:17:25 C++ requires providing access to a mask table, which is a sane implementation of the C standard but not required 08:17:41 In a worst-case scenario, the lookup table would have to be built on-demand 08:17:49 I once worked on a MUD codebase that did not use libc at all. Instead if defined its own, often buggy or non-standard, versions of libc functions. 08:17:52 fun times. 08:17:57 by calling C functions on every character 08:18:19 Now, for wchar_t the situation is much worse, as we can't even do that safely 08:18:24 That's... Actually broken behavior of C++. 08:18:27 unless we halt every thread 08:18:34 strlen was str_len, for example. isupper was is_upper. 08:18:39 pikhq: oh yes, this is very broken 08:18:49 pikhq: C++ locales suck balls 08:18:52 -!- MigoMipo has joined. 08:18:58 pikhq: the mask table is not in itself a bad idea 08:19:10 it was actually my first experience programming in C, so I thought those were the standard names for a while. Eventually I switched to libc though after realizing the true horror... 08:19:16 coppro: Not bad, just broken in a modern environment. 08:19:19 pikhq: yeah 08:19:30 As is everything to do with the char type, TBH. 08:19:33 yup 08:19:37 pikhq: The issue with wchar_t is that functions like isupper() depend on the global locale 08:19:55 ... *Global* locale. 08:19:59 It's *global*? 08:20:03 pikhq: In C, yes 08:20:08 As in, per process, not per thread. 08:20:15 Jesus fuck that's a bad idea. 08:20:24 C existed long before threads were a concern, remember? 08:20:36 of course it's a terrible idea 08:20:39 POSIX saves us though 08:20:46 can someone explain size_t to me? Are there differences in the type used for size_t among machines? 08:20:56 it allows you to construct locale objects and has isupper_l and similar functions 08:21:09 the problem is that POSIX does not have this for wchar_t 08:21:17 CakeProphet: size_t is supposed to be *whatever type* is appropriate for storing the size of types and allocations of memory. 08:21:43 CakeProphet: It does not have to be an int, though I think it *does* have to be a minimum of 16 bits and be bound. 08:21:48 so on a POSIX-compliant system, there is no reasonable way to implement C++ locales on top of system locales 08:22:16 pikhq: right, I was just wondering if it was ever anything other than an int. I suppose it's good that it exists in case it ever changed though. 08:22:26 How's about we just replace the C library and the C++ library? Entirely. 08:22:37 pikhq: backwards compatibility 08:22:40 CakeProphet: Well, it's sure as hell not an int on x86_64. 08:22:41 it fucking sucks 08:22:46 pikhq: ah, right. 08:22:52 coppro: Yes, I know. But still... 08:23:03 I mean.. 08:23:16 you could just have a new library and keep the old one around... 08:23:37 How's about we just kill everyone and everything and restart civilization my way? 08:23:41 That sounds good. 08:24:12 pikhq: oh actually nevermind 08:24:35 the char case is safe, we can implement the C spec directly since it gives little leeway 08:24:38 I didn't realize this 08:25:14 Haskell for systems programming. \o/ 08:25:15 | 08:25:15 /| 08:25:32 ...with a new Prelude, of course 08:25:47 fixing all numeric typeclasses and that length-returning-an-Int crap 08:30:07 haha. or Erlang. 08:30:17 it can apparently run standalone. 08:31:20 it handles concurrency well and it's fairly fast/portable from what I understand, but it handles string poorly iirc. 08:31:35 Erlang was *designed* to run standalone. 08:31:35 Erlang handles strings as Haskell does 08:31:42 Erlang needs a VM 08:31:50 but it's intended to run systems, yes 08:31:58 Well, "standalone" in the sense of "the VM runs on bare hardware just fine". 08:32:02 yeah 08:32:24 also well-written Erlang is basically indestructible 08:32:53 Again, as designed. 08:33:30 The language itself isn't that great, but man it's probably the single most reliable thing I've seen. 08:35:27 yeah 08:36:17 oops half the server cluster just went down. Good thing that wasn't the entire thing or service might have been interrupted for more than a few seconds 08:41:48 pikhq: If tarcieri ever makes some real concrete decisions, Reia could be excellent 08:42:42 (Reia being an attempt at a sane [Ruby-like in this case] language on the erlang VM) 08:50:00 ... Wut. 08:50:13 The population of Manhattan was *decreased* in the past 100 years. 08:50:28 s/was/has/ 08:50:44 It used to be 2.3 million, it's now 1.5 million. 08:54:24 Though the population of New York City itself has shot way up; it's simply spread out to the other boroughs of the city... 08:54:27 Still. damn. 09:05:15 http://en.wikipedia.org/wiki/Moutza 09:05:19 how offensive. 09:41:59 -!- Vorpal has joined. 09:57:49 > [1..] >>= return 09:57:50 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28... 10:02:20 > [1..] 10:02:21 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28... 10:02:34 > zipWith [1..] [1..] 10:02:35 Couldn't match expected type `a -> b -> c' 10:02:36 against inferred type `[... 10:02:57 @type zipWith 10:02:58 forall a b c. (a -> b -> c) -> [a] -> [b] -> [c] 10:06:28 > zipWith (\x y -> [x..y]) [1..] [100..] 10:06:29 [[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,2... 10:06:42 > zipWith (\x y -> [x..y]) [1..] [..1] 10:06:43 : parse error on input `..' 10:06:53 > zipWith (\x y -> [x..y]) [1..] [0..-inf] 10:06:54 Not in scope: `inf'Not in scope: `..-' 10:06:58 > zipWith (\x y -> [x..y]) [1..] [0..-9999999999999999999999999999] 10:06:59 Not in scope: `..-' 10:07:14 > zipWith (\x y -> [x..y^2]) [0..] [0..] 10:07:15 [[0],[1],[2,3,4],[3,4,5,6,7,8,9],[4,5,6,7,8,9,10,11,12,13,14,15,16],[5,6,7,... 10:16:49 @src liftM 10:16:49 liftM f m1 = do { x1 <- m1; return (f x1) } 10:17:55 liftM = (return.) 10:18:20 -!- Patashu has joined. 10:19:09 > zipWith (\x y -> [x/2..y^2]) [0..] [0..] 10:19:10 [[0.0],[0.5,1.5],[1.0,2.0,3.0,4.0],[1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5],[2... 10:19:28 > zipWith (\x y -> [x^0.5..y^2]) [0..] [0..] 10:19:30 Ambiguous type variable `t' in the constraints: 10:19:30 `GHC.Real.Integral t' 10:19:30 ... 10:19:47 > liftM2 (,) [0..10] [0..10] 10:19:48 [(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(0,9),(0,10),(1,0),(... 10:19:56 Lymia: might want to try ** instead of ^ 10:20:02 ** is for floating point numbers. 10:20:33 :t ((**),(^)) 10:20:33 > zipWith (\x y -> [x**0.5..y**2]) [0..] [0..] 10:20:34 forall a a1 b. (Floating a, Num a1, Integral b) => (a -> a -> a, a1 -> b -> a1) 10:20:35 [[0.0],[1.0],[1.4142135623730951,2.414213562373095,3.414213562373095,4.4142... 10:20:39 Yay. 10:20:42 Insta huge numbers. 10:20:49 ...wooo 10:21:24 liftM2 (,) is instant cartesian product. 10:21:29 so useful in programming of course. 10:23:06 @src on 10:23:07 (*) `on` f = \x y -> f x * f y 10:24:00 @src ap 10:24:00 ap = liftM2 id 10:26:23 > let plane = map (take 10 . repeat) in plane 10:26:24 Overlapping instances for GHC.Show.Show ([a] -> [[a]]) 10:26:24 arising from a us... 10:26:55 > let plane = map (take 10 . repeat) $ take 10 (repeat 0) in plane 10:26:57 [[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0... 10:30:40 > let plane = map (take 10 . repeat) $ take 10 (repeat 0) in plane;coords = liftM2 (,) [0..10] [0..10] in zipWith (==) (map (\(x,y) - > plane !! x !! y) coords) plane 10:30:42 : parse error on input `;' 10:31:28 > let {plane = map (take 10 . repeat) $ take 10 (repeat 0) in plane; coords = liftM2 (,) [0..10] [0..10]} in zipWith (==) (map (\(x,y) - > plane !! x !! y) coords) plane 10:31:29 : parse error on input `in' 10:31:48 uh, okay. 10:32:03 -!- MigoMipo has quit (Read error: Connection reset by peer). 10:32:53 s/ in plane// 10:34:00 > let {plane = map (take 10 . repeat) $ take 10 (repeat 0); coords = liftM2 (,) [0..10] [0..10]} in zipWith (==) (map (\(x,y) - > plane !! x !! y) coords) plane 10:34:01 : parse error on input `-' 10:34:15 well, I'm going to bed now. Good night. :P 10:34:30 s/- >/->/ 10:41:17 :t (,) 10:41:18 forall a b. a -> b -> (a, b) 10:41:25 oh 10:41:34 @src (,) 10:41:34 Source not found. Take a stress pill and think things over. 10:41:40 @hoogle (,) 10:41:41 Prelude undefined :: a 10:41:41 Test.QuickCheck.Batch bottom :: a 10:41:41 Data.Function fix :: (a -> a) -> a 10:41:47 hm 10:41:56 I guess that wasn't quite right 10:43:05 data (,) a b = (,) a b 10:43:20 Deewiant, is that a tuple? 10:43:25 Yes 10:43:28 aha 10:43:48 Deewiant, I thought tuples were special syntax. 10:43:51 or hm 10:43:56 :t (,,) 10:43:57 forall a b c. a -> b -> c -> (a, b, c) 10:44:02 heh, I guess not 10:44:20 They are, somewhat 10:44:35 But GHC still defines them like that 10:44:39 hm 10:44:56 Deewiant, so ghc specific? or standard haskell? 10:45:11 data (,) a b = (,) a b is GHC specific, I'm fairly sure 10:45:15 ah okay 10:45:29 Yeah, it's in GHC.Tuple 10:45:40 So it could just be builtin in other environments 10:45:47 but it seems to be included in Prelude yeah 10:46:07 Well yes, (,) is guaranteed to exist and work 10:46:22 ah 10:49:12 -!- pikhq has quit (Ping timeout: 248 seconds). 10:49:22 -!- pikhq has joined. 11:36:22 -!- foocraft has joined. 11:40:37 -!- TOGoS has quit (Read error: Connection reset by peer). 11:45:00 -!- TOGoS has joined. 12:02:54 -!- SimonRC has quit (Ping timeout: 260 seconds). 12:10:20 -!- SimonRC has joined. 12:32:33 -!- foocraft has quit (Ping timeout: 252 seconds). 12:55:40 -!- Demetrius has joined. 12:56:53 -!- FireFly has joined. 13:02:10 -!- foocraft has joined. 13:18:20 -!- invariable has joined. 13:19:29 -!- invariable has quit (Remote host closed the connection). 13:20:00 -!- ralc has joined. 13:20:18 -!- variable has quit (Remote host closed the connection). 13:20:51 -!- variable has joined. 13:21:07 -!- Patashu has quit (Ping timeout: 246 seconds). 13:32:49 -!- Sgeo has joined. 13:36:19 -!- foocraft has quit (Ping timeout: 255 seconds). 13:37:12 -!- Deewiant has quit (Ping timeout: 248 seconds). 13:38:26 -!- Deewiant has joined. 13:50:14 -!- foocraft has joined. 14:00:05 -!- TOGoS has left. 14:46:30 -!- azaq23 has joined. 15:21:37 -!- Sgeo has quit (Ping timeout: 255 seconds). 15:23:13 oerjan: hi 15:28:14 "available frequency steps: 2.27 GHz, 2.27 GHz, 1.60 GHz, 800 MHz" <--- err, what? That looks wrong. 15:31:13 Maybe it's a rounding thing, and the two highest are, say, 2271 and 2270 MHz. 15:31:17 "available frequency steps: 2.80 GHz, 2.60 GHz, 2.40 GHz, 2.20 GHz, 2.00 GHz, 1.80 GHz, 1000 MHz" 15:32:00 fizzie, 2271 and 2270 sounds silly. 15:32:05 as in pointless 15:32:14 I doubt intel would add that to a mobile core 2 duo. 15:32:18 but hm 15:34:23 well I don't know how to extract the info to verify the rounding thing 15:35:01 aha, found it 15:35:07 $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 15:35:07 2267000 2266000 1600000 800000 15:35:12 fizzie, looks like you were right 15:35:24 I wonder why though 15:37:11 -!- malorie has left. 15:38:37 It could have a "full-speed" mode separate from "scaled-frequency" modes, maybe, and then they've wanted to make it possible to run it close-enough to full speed without switching away from the scaled-frequency operation. (But that's just a guess; I don't have a clue about the details of cpufreq implementation.) 15:39:04 hm 15:39:38 Does your cpufreq-info report the stats in % of time spent in different modes? Which 2.27 GHz it uses? 15:39:48 cpufreq stats: 2.27 GHz:18,01%, 2.27 GHz:1,58%, 1.60 GHz:2,29%, 800 MHz:78,12% (169038) 15:39:51 and 15:39:54 cpufreq stats: 2.27 GHz:7,35%, 2.27 GHz:0,70%, 1.60 GHz:1,77%, 800 MHz:90,18% (3298838) 15:39:58 for the different cores 15:40:21 (what is that number in parens at the end?) 15:40:43 fizzie, so it seems it uses both 15:41:18 I guess the cpufreq governors just put them on a sorted line and go through all when stepping up to meet demand. 15:41:23 "cpufreq stats: 2.80 GHz:2.14%, 2.60 GHz:0.07%, 2.40 GHz:0.05%, 2.20 GHz:0.06%, 2.00 GHz:0.05%, 1.80 GHz:0.39%, 1000 MHz:97.24% (82236)" 15:43:47 The PPC iBook had two cpufreq speeds -- 533 MHz and 1066 MHz -- and it had some sort of huge latency thing when switching, I think I recall from syslog that it decided to not use the ondemand governor because of that. 15:45:43 -!- Phantom_Hoover has joined. 15:48:49 Phantom_Hoover, hello! 15:49:09 Hello Demetrius. 15:49:09 Phantom_Hoover: You have 6 new messages. '/msg lambdabot @messages' to read them. 15:49:12 Oh god 15:49:17 How can he even 15:49:21 There wasn't an update 15:50:01 -!- azaq23 has quit (Quit: Leaving.). 16:01:11 fizzie, heh 16:04:17 -!- Sgeo has joined. 16:04:52 -!- Kustas has joined. 16:06:49 -!- comex has joined. 16:10:04 -!- pikhq_ has joined. 16:10:13 -!- pikhq has quit (Ping timeout: 260 seconds). 16:19:35 -!- elliott has joined. 16:33:21 02:12:21: elliott__: I estimate 8% for me. Incidentally, do you know what the "the Doctor is being awesome" music is called? 16:33:26 coppro: I think I did at one point but have now forgotten. 16:34:47 02:23:01: yes, if $_ were global terrible things would happen. 16:34:47 02:23:08: instead it's a weird pseudo-global thing. 16:34:50 CakeProphet: it is just an "our" 16:34:52 dynamic variable 16:35:28 02:27:21: !perl $s='q{q[q]}';$s=eval$s for 1..11;print$s 16:35:29 02:27:22: ​muhahahahahahaha 16:35:30 lovely 16:35:38 -!- Kustas has quit (Quit: restart). 16:36:08 !perl print 16:36:09 ​open0 16:36:18 !perl print open 0,<0> 16:36:28 !perl print open 0 . <0> 16:36:28 ​1 16:37:38 -!- Kustas has joined. 16:37:49 02:55:03: this is so very very awesome: (elliott you better visit this link when you read the logs) http://www.youtube.com/watch?v=sjtzib0G9Rs 16:37:50 god yes 16:38:47 03:59:12: future elliott: Good post-400 xkcd: http://xkcd.com/602/ 16:38:47 There are good post-400 xkcds but... this is not one of them. 16:38:51 -!- monqy has joined. 16:40:45 06:08:28: sbahj related http://www.youtube.com/watch?v=u7YfVmY9Qjs 16:40:45 heh 16:41:26 I finally successfully performed a Second Life experiment I've been wanting to do for a while 16:51:54 I have created... LIFE! 16:56:03 elliott: evidence indicates they played that theme at least three times that weekend; I was there for two that weren't in the video. Those coils are pretty surreal 16:56:17 third life 17:02:35 Sgeo won't tell us what he experimented SOB 17:09:09 -!- MigoMipo has joined. 17:11:33 Oh, sorry, was afk 17:11:58 Experimented to determine whether or not gravity takes longer to take effect at higher altitudes. It does. 17:12:32 Unless there's something else going on that I'm not realizing 17:12:36 lolwut 17:12:44 it doesn't take longer to take effect 17:12:56 gravity is always taking effect 17:13:56 coppro, I'm talking about Second Life. When an object in Second Life goes from being weightless to having weight, it takes an amount of time dependent on altitude for it to start detectably moving 17:14:08 ah 17:21:09 lol coppro 18:06:11 -!- augur has quit (Remote host closed the connection). 18:11:36 -!- elliott has quit (Remote host closed the connection). 18:13:33 -!- augur has joined. 18:13:59 -!- Kustas has quit (Quit: over and out). 18:15:29 -!- elliott has joined. 18:24:41 -!- augur has quit (Remote host closed the connection). 18:26:37 -!- augur has joined. 18:32:21 -!- wareya has quit (Read error: Connection reset by peer). 18:32:55 -!- wareya has joined. 18:33:46 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds). 18:36:00 -!- Phantom_Hoover has joined. 18:45:08 -!- augur has quit (Remote host closed the connection). 18:52:31 -!- olsner has joined. 19:02:27 What is it with people on /r/IAmA thinking that famous people care about them in the slightest. 19:04:18 -!- pikhq has joined. 19:04:27 -!- pikhq_ has quit (Ping timeout: 252 seconds). 19:07:26 -!- pumpkin has changed nick to copumpkin. 19:14:33 -!- sebbu has joined. 19:14:33 -!- sebbu has quit (Changing host). 19:14:33 -!- sebbu has joined. 19:17:31 -!- sebbu2 has quit (Ping timeout: 250 seconds). 19:19:58 so one of the talks was about implementing boolean circuits by putting chloroform and grease inside an MRI machine 19:20:30 ;) 19:20:52 and i have this feeling that the woman got a tiny orgasm every time she said the word "unconventional" 19:22:22 did A Universal Flying Amorphous Computer have anything interesting to say 19:22:36 also there was a talk about fsa and tm's reading input from the future and they opened up with a fucking discussion of the grandfather or whatever paradox and i almost yelled NOOOOOOOOOOOOOOOOOOOOOOOOOO 19:22:49 :D 19:23:02 would you like a hug oklopol you sound distressed 19:25:20 it's like, you're 2 and you go hmm how does this walking thing go... ah, it goes this way. *few years pass* hmm okay i've mastered this *more years pass* god this stuff is boring, left right left right yeah yeah maybe i'll find a chair and then in fucking 10 years EVERYONE STARTS GOING WOW LOOK AT THESE STICKS UNDER ME WHAT IF I DO LIKE THIS THEN I'LL LIKE MOVE AND SHIT HAHAHA LOOK OKLOPOL I CAN *WALK* WHAT DO YOU THINK ABOUT WALKING?!? 19:25:54 (actually i don't remember when ppl learn to walk) 19:26:24 erm and that was about time machines if it was not clear for some reason 19:26:43 time machines are like walking? 19:27:18 no, but the grandfather paradox is something 4-year-olds think about before they grow a brain 19:28:02 see i'm also so tired of saying i hate time travel that i have to make it interesting for myself 19:29:15 elliott: universal blah is on thursday 19:29:42 The grandfather paradox is pretty stupid as a thing to think about. 19:29:47 hey oklopol 19:29:51 time travel is awesome 19:30:06 hey umm remember a few weeks or something ago when i said i'd totally solved a prob i've been trying to solve for a year and that it was my third attempt which was the charm and then i realized how fun it doesn't work 19:30:21 rtjiog 19:30:25 No. 19:30:32 elliott and oerjan were here at least 19:30:38 in any case, I HAVE TOTALLY SOLVED IT NO 19:30:38 W 19:30:45 WHAT IS IT 19:30:46 i wonder if that was a freudian slip 19:30:48 i solved ur mom 19:31:35 i killed a 19:32:10 Phantom_Hoover: an n-dimensional picture is when you color Z^n with a finite set of colors in such away that everything except some finite product of intervals gets # as color and the product of intervals gets colors from some set S 19:32:19 oklopol: omg raciest................ 19:32:36 a picture-walking automaton is a nondeterministic automaton that walks on the cells of a picture, accepting if there is a computation that leads to a final state 19:32:44 stop being a raciest omg..................... 19:33:00 ": /" 19:33:33 you start from some initial state at a corner and your rules are of the form Q x (S \cup {#}) -> 2^(Q x {directions here}) 19:33:57 so depending on what state you are in and what you read, you choose some state given by the rule and a move in some direction 19:34:13 Phantom_Hoover: look at this raciesm... 19:34:26 elliott, it is so racyy. 19:34:28 *racy 19:34:33 [asterisk]racyy 19:34:34 now, we define NFA and FNFA as the classes of picture languages (sets of pictures) you can define when the automaton is allowed to exit the picture it is accepting, and not exiting it, respectively 19:34:42 i proved NFA = FNFA in all dimensions 19:34:54 oklopol: ur raciesm against blak people discusts me......... 19:34:57 in the sense that i haven't yet realized why my proof is wrong this time 19:34:59 :) 19:36:16 for two dimensions, you can find the proof in my master's thesis, but i left dimensions above 2 open 19:36:29 because the proof refused to generalize 19:36:57 the feeling between coming up with the solution and realizing it's crap = <3 19:37:40 you're a shit 19:37:42 :) 19:38:28 im shit? :( 19:38:57 sorry 20:00:45 * Phantom_Hoover concludes that RobotRollCall is by now just an annoying power user. 20:00:56 why 20:01:41 Because in http://www.reddit.com/r/askscience/comments/hsrsq/what_would_happen_in_terms_of_gravity_if_you/ she says that all the other answers aren't giving the whole story and proceeds to reel off her own spiel about field theory. 20:02:17 Thing is, the top answer *does* explain it, although not rigorously, while hers just says "the field in a shell is zero. It just is". 20:03:43 "So if the sun were to just blink out of existence we would follow our orbit for another 8 minutes before everything went to hell?" THIS PERSON HAS CLEARLY NEVER READ THE ED STORIES 20:03:54 "Stuff doesn't blink out of existence, so that's, to put it bluntly, not an interesting question." --RobotRollCall 20:04:08 See what I mean? 20:04:21 She seems to take glee in crushing unrealistic hypotheticals. 20:04:23 -!- augur has joined. 20:04:38 ARE YOU SURE YOU AREN'T JUST UPSET ABOUT YOUR OWN UNREALISTIC HYPOTHETICALS 20:04:39 elliott, link to that one? 20:04:47 And no, because she didn't do it to me. 20:04:57 ">Okie doke, so let's say something accelerated the sun very quickly… 20:04:58 No, let's not. Let's consider only things that are actually possible." 20:05:02 OK she's an asshole. 20:05:09 She is. 20:05:19 Linklinklink so I can try to take her apart for this. 20:05:34 It's linked by someone complaining about RRC at the top of your link. 20:05:36 You can find it. 20:07:32 -!- pikhq_ has joined. 20:09:57 -!- pikhq has quit (Ping timeout: 250 seconds). 20:15:02 hmm 20:15:06 maybe I'll have to use IO for this 20:15:36 it seems to be the only way to make it all work it right 20:15:42 (unsafePerformIO causing problems? shock and horror) 20:16:47 elliott: Where "this" == ? 20:17:20 pikhq_: I'm working on an interning library 20:17:31 so that e.g. you can do Scheme symbols with "Interned String" 20:17:44 pikhq_: and it uses reallyUnsafePtrEquality# behind the scenes in the Eq instance 20:18:23 ... That's frightening. 20:18:43 your mom is frightening 20:33:19 interning library? 20:38:34 coppro: what? 20:38:44 Interned in a library. 20:39:09 what is an interning library? 20:39:32 A library for interning people in. 20:39:58 -!- Rugxulo has joined. 20:40:37 I actually found Ben Olmstead's old Befunge-93 compiler (MCBC), but it doesn't work :-( 20:40:53 nevertheless, for any completist who wants a copy, get it here: 20:40:55 http://web.archive.org/web/20040221222300/http://www.mines.edu/students/b/bolmstea/mtfi/mcbc10.zip 20:41:00 just FYI 20:42:10 And with that you will be back into the night? 20:42:24 ;-) 20:43:02 I just thought it was cool, esp. since I could never find the damn thing ... though ironically it crashes (SIGSEGV) on any input, no matter how simple 20:46:59 we should mirror that 20:47:54 yes ... and BTW I never found the fabled "Betty" compiler that Wikipedia mentions 20:48:45 even BFC mentioned is long gone (though I once found a copy somewhere but forget where, some forum) 20:49:40 It was too awesome for this world. 20:49:56 Chris Pressey did do a minor bugfix for his official BEF a few months ago too 20:50:34 yeah 20:50:37 he comes here occasionally 20:50:47 -!- CakeProphet has quit (Ping timeout: 252 seconds). 20:50:54 I saw him in here once or twice, but that was rare (and before the refresh) 20:51:21 the refresh? 20:51:30 He was here pretty much all the time last year 20:52:21 -!- CakeProphet has joined. 20:52:22 -!- CakeProphet has quit (Changing host). 20:52:22 -!- CakeProphet has joined. 20:52:56 BEF refresh, bugfix 20:54:24 ah 20:54:31 > zip "abcd" "bcd" 20:54:33 [('a','b'),('b','c'),('c','d')] 20:54:39 > zip "abcd" "cd" 20:54:40 [('a','c'),('b','d')] 20:54:45 hmph 20:55:02 > zip "abcd" [(),(),(),(),()] 20:55:03 [('a',()),('b',()),('c',()),('d',())] 20:55:54 > zip (map ("abcd"!!) [0,2..]) (map ("abcd"!!) [1,3..]) 20:55:55 [('a','b'),('c','d'),(*Exception: Prelude.(!!): index too large 20:56:00 where's oerjan when you need 'im 20:56:15 ?pl \x y -> x:y:[] 20:56:15 (. return) . (:) 21:03:31 ?hoogle [a] -> [(a,a)] 21:03:31 Test.QuickCheck two :: Monad m => m a -> m (a, a) 21:03:31 Prelude zip :: [a] -> [b] -> [(a, b)] 21:03:31 Data.List zip :: [a] -> [b] -> [(a, b)] 21:03:48 hmm 21:04:31 -!- Demetrius has quit (Quit: gnite!). 21:10:15 -!- Patashu has joined. 21:14:23 -!- CakeProphet has quit (Ping timeout: 240 seconds). 21:16:09 -!- CakeProphet has joined. 21:16:09 -!- CakeProphet has quit (Changing host). 21:16:10 -!- CakeProphet has joined. 21:22:17 !pl \x->(x,x) 21:22:28 ?pl \x->(x,x) 21:22:29 join (,) 21:22:32 Also, yeah. 21:24:39 -!- Rugxulo has quit (Quit: ChatZilla 0.9.87 [Firefox 3.6.10/20101005225428]). 21:25:15 pikhq_: no that's not it 21:25:31 I want "abcd" -> [('a','b'),('c','d')] but actually I need to handle the odd case too so basically never mind 21:36:04 > zip ["la","le","li","lo","lu","ra","re","ri","ro","ro"] [0..] 21:36:05 [("la",0),("le",1),("li",2),("lo",3),("lu",4),("ra",5),("re",6),("ri",7),("... 21:36:17 ?pl \x y -> string x >> return y 21:36:18 (. return) . (>>) . string 21:36:29 > zipWith ((. return) . (>>) . string) ["la","le","li","lo","lu","ra","re","ri","ro","ro"] [0..] 21:36:30 Not in scope: `string' 21:36:56 ?pl \x y -> x >> return y 21:36:57 (. return) . (>>) 21:37:50 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds). 21:38:18 ?pl \x y -> (x*10) +y 21:38:18 (+) . (10 *) 21:47:13 -!- CakeProphet has quit (Ping timeout: 246 seconds). 21:49:07 -!- CakeProphet has joined. 21:49:08 -!- CakeProphet has quit (Changing host). 21:49:08 -!- CakeProphet has joined. 21:53:31 -!- Patashu has quit (Ping timeout: 250 seconds). 21:58:32 elliott: Yeah doesn't work unfortunately because I don't believe open returns the filehandle it returns a success value. 21:58:51 yeah 21:59:14 elliott: and yes, $_ is an our variable but in many situations it becomes either dynamically or lexically local, I'm not sure which though. 21:59:25 I think dynamic. 21:59:37 Isn't the definition of our a dynamically local variable? 22:00:06 no our is a "shared package variable", which basically means it's dynamic global. 22:00:22 "As $_ is a global variable, this may lead in some cases to unwanted side-effects. As of perl 5.9.1, you can now use a lexical version of $_ by declaring it in a file or in a block with my. Moreover, declaring our $_ restores the global $_ in the current scope." 22:00:29 Ah, so it's literally just a global variable 22:00:44 But you can use our to make it temporarily local 22:03:41 -!- ralc has quit (Quit: Leaving). 22:04:54 -!- CakeProphet has quit (Ping timeout: 276 seconds). 22:05:38 -!- sebbu2 has joined. 22:05:38 -!- sebbu2 has quit (Changing host). 22:05:38 -!- sebbu2 has joined. 22:07:31 -!- MigoMipo has quit (Read error: Connection reset by peer). 22:09:20 -!- sebbu has quit (Ping timeout: 252 seconds). 22:09:20 -!- sebbu2 has changed nick to sebbu. 22:09:59 -!- pikhq has joined. 22:10:00 -!- pikhq_ has quit (Ping timeout: 240 seconds). 22:23:44 -!- augur has quit (Remote host closed the connection). 22:24:11 -!- augur has joined. 22:25:00 -!- oerjan has joined. 22:25:59 where's oerjan when you need 'im 22:26:13 sipping his coffee in a restaurant 22:26:14 yeah its fucking unacceptable 22:26:18 he should be hanged 22:26:28 oerjan: well lah-de-dah mister fancy 22:26:37 if you're so rich then why don't you buy an ipad so you can always be bugged by me :| 22:26:42 WHEREVER YOU GO 22:26:53 middle of the night, BEEP BEEP "oerjan i need haskell help" 22:27:02 i'm not rich. 22:27:14 shaddap 22:28:08 > zip (map ("abcd"!!) [0,2..]) (map ("abcd"!!) [1,3..]) 22:28:09 [('a','b'),('c','d'),(*Exception: Prelude.(!!): index too large 22:28:21 > zip (map (cycle "abcd"!!) [0,2..]) (map (cycle "abcd"!!) [1,3..]) 22:28:22 [('a','b'),('c','d'),('a','b'),('c','d'),('a','b'),('c','d'),('a','b'),('c'... 22:28:23 yeah, turns out I actually don't need that function :D 22:28:31 digit :: Parser Integer 22:28:31 digit = choice $ zipWith (>>) (map (try . string) digits) (map return [0..]) 22:28:31 where digits = ["la", "le", "li", "lo", "lu", "ra", "re", "ri", "ro", "ru"] 22:28:35 would be nice if you could make that a bit less ugly 22:28:44 oops did i just reveal what i'm writing :D 22:29:05 -!- CakeProp1et has joined. 22:29:17 huh 22:29:26 huh? 22:29:27 is it that syl language? 22:29:39 yeah; I am bored 22:29:49 so I'm going to write the BEST SYL IMPLEMENTATION EVARRR 22:29:55 -!- CakeProp1et has quit (Client Quit). 22:30:07 we're talking multiple backends, C FFI here 22:30:27 -!- CakeProphet has joined. 22:31:35 digit = choice [try (string d) >> return n | d <- digits | n <- [0..]] 22:31:53 but... but you made it less point-free... 22:31:55 * oerjan has never tried that zip comprehension before 22:32:01 also that should be a comma before n, not | 22:32:02 no? 22:32:12 SOMETIMES LESS POINT-FREE IS BETTER 22:32:19 integer = natural >>= liftA2 (<|>) ((string "hu" *>) . return . negate) return 22:32:20 oerjan: I agree entirely. 22:32:23 wanna de-ugly that too? :P 22:32:49 um no, i believe | is the syntax for the "zip these together" comprehension extension 22:32:53 ah 22:33:08 it might not be an extension any more what with haskell twentyten 22:33:09 oh well hm 22:33:16 point-free 22:33:58 the main problem I have with point-free is I can't READ ANYTHING. 22:34:14 Illegal parallel list comprehension: use -XParallelListComp 22:34:15 :( 22:34:20 CakeProphet: that's your problem, not point-free's. 22:34:25 or, well, sometimes it's the code's problem. 22:34:38 not if the code is point-free, that is never wrong 22:34:38 :t (*>) 22:34:39 forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f b 22:34:45 :t ($>) 22:34:45 Not in scope: `$>' 22:34:47 but, well, I can't read obfuscated perl, doesn't make perl a bad language :D 22:34:49 oh hey 22:34:49 :t (>$) 22:34:50 Not in scope: `>$' 22:34:51 where's olsner wher eyou need him 22:34:52 bah 22:34:53 the answer -- RIGHT HERE 22:34:59 but i ... forget what ... i ... was ... oh yes thats what 22:35:03 @hoogle f a -> b -> f b 22:35:03 Control.Applicative (<$) :: Functor f => a -> f b -> f a 22:35:03 Control.Applicative (*>) :: Applicative f => f a -> f b -> f b 22:35:03 Prelude (>>) :: Monad m => m a -> m b -> m b 22:35:06 olsner: bochs has some kind of interface to its console, right? 22:35:10 so OS stuff can print debug to it 22:35:14 elliott: Haskell isn't a bad language. I'm saying point-free style, in very complicated situations, results in a mess of code that takes far too long to decipher. 22:35:15 hm 22:35:21 elliott: a mess of very very concise code. 22:35:23 :P 22:35:24 CakeProphet: Let me rewrite what you said to actually be not wrong: 22:35:34 CakeProphet: Point-free style, when misapplied, results in a mess. 22:35:36 Similarly: 22:35:41 Perl, when misapplied, results in a mess. 22:35:50 ..sure. 22:36:15 elliott: hmm, yes istr reading something like that from the config menus... I think it might not be enabled by default though 22:36:19 Point-free, when it can be executed well -- which it usually can be if you have the right combinators -- is more readable than the pointful version (to someone who's experienced reading Haskell) 22:36:30 It's essentially a higher level of abstraction, just one that can be misapplied. 22:36:36 digit = choice . zipWith (<*) [0..] $ try . string <$> digits 22:36:39 I don't really see where Perl comes into play with the readability of point-free style. But sure, non-relevant comparisons are fun. 22:37:02 > fix$(<$>)<$>(:)<*>((<$>((:[{- thor's mother -}])<$>))(=<<)<$>(*)<$>(*2))$1 22:37:03 [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,... 22:37:21 olsner: beautiful 22:37:32 elliott: ^ better? 22:37:37 no, but olsner's is 22:37:45 :( 22:37:47 i kid, i haven't looked at yours 22:37:48 i will now 22:38:02 oerjan: that's pretty nice 22:38:09 right now I'm trying to make integer less ugly though, but I'll save that 22:38:17 actually I'll use it 22:38:30 since the parallel comprehension is non-standard 22:38:55 :t digits 22:38:55 Not in scope: `digits' 22:38:57 elliott, how goes the spec!! 22:39:00 ah, Parsec. 22:39:08 Vorpal: hi bro 22:39:11 @hoogle digits 22:39:11 Prelude floatDigits :: RealFloat a => a -> Int 22:39:11 Numeric floatToDigits :: RealFloat a => Integer -> a -> ([Int], Int) 22:39:11 Numeric lexDigits :: ReadS String 22:39:18 elliott, hallo! 22:39:18 CakeProphet: digits is a local define. 22:39:21 Vorpal: sup 22:39:25 elliott: ..oh, nevermind then. 22:39:43 elliott, not well, there is a computer spec missing. And how are you? 22:39:58 not feeling* 22:40:09 Vorpal: actually legitimately ill 22:40:14 elliott, ouch 22:40:24 elliott, well then you have time for the spec now! 22:40:28 YEAH NOW YOU FEEL BAD FOR MAKING FUN OF MY SITUATION ;_____; 22:40:38 elliott: looks like you just write to port e9, if it's enabled: http://heim.ifi.uio.no/~inf3150/doc/tips_n_tricks/e9hack.html 22:40:44 Vorpal: but what if the painkillers make me insane :/ 22:40:49 what is <*? 22:40:54 elliott, can they do that? 22:40:56 olsner: heh, noice 22:41:01 Vorpal: i don't know, i'm too ill to think clearly 22:41:12 integer = natural >>= liftA2 (<|>) ((string "hu" *>) . return . negate) return 22:41:48 elliott, ouch 22:41:49 Vorpal: see, i'm writing crazy code like that 22:41:54 clearly not sane right now 22:41:56 elliott, well get off irc, and rest then 22:42:10 elliott, that code looks fine to me. What is liftA2 though? 22:42:14 I don't remember that one 22:42:16 are you advising me to stay in bed all day and waste time, because that's... exactly what i'm doing 22:42:21 @hoogle (*>) 22:42:21 Control.Applicative (*>) :: Applicative f => f a -> f b -> f b 22:42:22 Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b 22:42:22 Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b 22:42:25 Vorpal: liftM2, but s/Monad/Applicative/ 22:42:29 elliott, ah 22:42:39 elliott, and uh. <|> is? 22:42:46 I believe Parsec's choice operator. 22:43:04 oerjan: your digit doesn't type 22:43:07 similar to a | in a regex or... many other things I don't remember the names of. 22:43:09 oh right, that makes quite a lot of sense then 22:43:09 Vorpal: actually the applicative choice thing too 22:43:13 ah 22:43:17 even more sense 22:43:27 erm, Alternative rather 22:43:29 elliott, now what does it do? 22:43:35 ...applicative choice? I still need to learn the rest of Applicative. 22:43:38 Vorpal: (<|>) :: Alternative f => f a -> f a -> f a 22:43:46 CakeProphet: it's just a generalisation, pretty much 22:43:48 elliott, no I meant the code in general 22:43:49 CakeProphet: I hide Parsec's 22:43:59 because the Alternative operator works on the Parsec monad too 22:44:01 Vorpal: what it says on the tin 22:44:12 elliott, meh, too tired to parse it atm 22:44:17 elliott: right, but does Applicative have a notion of success and failure like Parsec? 22:44:23 what is <*? <-- oh hm, elliott: s/<*/<$/ 22:44:42 CakeProphet: no, like I said, Alternative does 22:44:45 ?src Alternative 22:44:45 class Applicative f => Alternative f where 22:44:46 empty :: f a 22:44:46 (<|>) :: f a -> f a -> f a 22:44:56 > [9,0] <|> [0,9] -- hmm 22:44:57 [9,0,0,9] 22:44:59 right 22:45:04 (think list monad) 22:45:18 oerjan: yay, works 22:45:25 ah okay. 22:45:31 name :: Parser String 22:45:31 name = concat . many1 $ liftA2 (:) normalCons vowel 22:45:32 alas this doesn't 22:45:35 for obvious reasons 22:45:40 ?pl \x y -> [x,y] 22:45:40 (. return) . (:) 22:45:42 sigh 22:45:49 elliott: looks very much like MonadPlus 22:45:55 ?src MonadPlus 22:45:56 Source not found. You type like i drive. 22:46:06 CakeProphet: I actually think Alternative /is/ MonadPlus 22:46:08 yeah, it is 22:46:09 what an insult 22:46:21 CakeProphet: it's just that a lot of the haskell library doesn't consider things above monads 22:46:27 elliott: for list it seems to be exactly the same. 22:46:31 it is the same, always 22:46:39 similarly, liftM2 is superfluous 22:46:42 it's the same as liftA2 22:46:46 but we haven't had Applicatives as long as monads 22:46:48 elliott: concat <$> up there 22:46:50 thus why all this stuff is duplicated 22:47:03 ah so <$ is fmap.const 22:47:13 Couldn't match expected type `[Char]' with actual type `Char' 22:47:13 Expected type: ParsecT 22:47:13 String () Data.Functor.Identity.Identity [Char] 22:47:20 :t fmap.const 22:47:21 forall a b (f :: * -> *). (Functor f) => b -> f a -> f b 22:47:24 :t (<$) 22:47:26 forall a (f :: * -> *) b. (Functor f) => a -> f b -> f a 22:47:30 yep 22:47:40 at least the type is the same 22:47:50 Vorpal: same thing :) 22:47:54 according to the documentation it's the same thing. 22:47:58 elliott, come on, (+) and (-) have the same type, don't they? 22:47:59 yeah 22:48:06 :t (-) 22:48:08 forall a. (Num a) => a -> a -> a 22:48:09 :t (+) 22:48:09 what's the name of the principle that lets you derive facts from types 22:48:10 forall a. (Num a) => a -> a -> a 22:48:11 :t (*) 22:48:12 forall a. (Num a) => a -> a -> a 22:48:13 see 22:48:15 what's the name of the principle that lets you derive facts from types 22:48:27 because I think we could deduce that (fmap . const) and (<$) are the same by just the types 22:48:27 elliott, now we know that multiplication is addition! :P 22:48:32 or well hm 22:48:32 elliott: parametricity 22:48:35 ?src Functor 22:48:35 class Functor f where 22:48:35 fmap :: (a -> b) -> f a -> f b 22:48:43 yeah 22:48:48 I have a hunch it would work here 22:48:59 okay 22:49:00 and i think it applies to fmap.const = (<$) 22:49:05 let's see ... (a -> f b -> f a) 22:49:16 yeah 22:49:18 it has to look like 22:49:25 at least assuming a Functor instance respecting the laws 22:49:25 \a b -> fmap _ b 22:49:27 I think you can make more functions of the same type by using undefined 22:49:30 because that's the only way to get an f thing 22:49:39 and the only (a -> b) here is const 22:49:41 since we can't inspect our a 22:49:50 Ah there's an instance for MonadPlus m => Alternative (WrappedMonad m) 22:49:53 so yeah, there is only one function of the type (a -> f b -> f a) 22:50:22 olsner: yeah basic parametricity only works for terminating functions, although there is some research on adding non-termination and seq 22:50:24 elliott, unless you involve bottom I think? 22:50:31 Vorpal: yeah yeah, those aren't real functions 22:50:34 total function, if you will, whatever 22:50:41 (it's a feature of System F lambda calculus) 22:50:42 name = concat <$> many1 (liftA2 (\x y -> [x,y]) normalCons vowel) 22:50:43 :t seq 22:50:44 oerjan: so agley :( 22:50:44 forall a t. a -> t -> t 22:50:46 :t id 22:50:46 :t many 22:50:47 forall (f :: * -> *) a. (Alternative f) => f a -> f [a] 22:50:47 forall a. a -> a 22:50:50 hm 22:51:01 > many [1] 22:51:04 mueval-core: Time limit exceeded 22:51:10 heh 22:51:12 :) 22:51:20 > many (return 9) 22:51:21 wtf is the t. in seq's type? 22:51:21 No instance for (GHC.Show.Show (f [t])) 22:51:21 arising from a use of `M76367029... 22:51:25 > many (Just 9) 22:51:27 Vorpal: "forall a t." 22:51:28 mueval-core: Time limit exceeded 22:51:31 elliott, *oh* 22:51:37 elliott, why couldn't they say so :P 22:51:40 Vorpal: it's a type variable 22:51:42 Vorpal: what? 22:51:44 it does 22:51:51 elliott, the forall is implicit 22:51:52 seq :: a -> b -> b -- from GHCi 22:51:54 wait no 22:51:58 I fail at reading 22:51:59 Vorpal: forall a t. a -> t -> t 22:51:59 -!- variable has quit (Remote host closed the connection). 22:52:02 wake me up 22:52:05 note that ghci actually omits all top-level foralls 22:52:11 ah right 22:52:12 because they can be unambiguously abbreviated 22:52:13 elliott: sequence [normalCons, vowel] 22:52:16 (and this is in haskell itself) 22:52:17 oerjan: oh nice 22:52:18 :t undefined 22:52:19 forall a. a 22:52:33 -!- variable has joined. 22:52:57 night → 22:53:13 " but, well, I can't read obfuscated perl, doesn't make perl a bad language :D" <<< but doesn't it kind of make the coding style bad? or maybe i misunderstood what your point was 22:53:27 elliott: iirc i saw someone apply parametricity to typeclasses like Functor before; basically you need to add the typeclass methods as extra parameters 22:53:32 > pure [] 22:53:33 No instance for (GHC.Show.Show (f [a])) 22:53:33 arising from a use of `M19706092... 22:53:39 :t pure [] 22:53:40 forall a (f :: * -> *). (Applicative f) => f [a] 22:54:08 oerjan: right 22:54:15 oerjan: well, it's easy to prove "by hand" 22:54:28 oklopol: sure, but we're considering point-free style a language here, not a style 22:54:33 jesus Haskell code can be confusing... 22:54:40 haskell is easy 22:54:51 oklopol: i.e. the general point is "~(there are unreadable examples of X -> X is unreadable)" 22:55:04 > pure 9 :: [Integer] 22:55:06 [9] 22:55:12 uh, sure, once you learn everything. Might as well say anything is easy. 22:55:24 haskell is easier than C 22:55:41 what elliott said 22:55:55 eh. I don't feel like making language comparisons today. 22:56:11 " oklopol: sure, but we're considering point-free style a language here, not a style" <<< hmm okay accepted 22:57:14 Haskell itself is easy. Learning everything about its libraries is not so much. 22:57:33 -!- Vorpal has quit (Ping timeout: 260 seconds). 22:57:49 what's not so much about it 22:58:14 maybe it just isn't a lot 22:59:03 CakeProphet just got owned 22:59:20 uh, if you say so. 22:59:21 owned like a nigger! 22:59:40 more like: CakeProphet just got interpretted literally! 23:00:59 whatever you say slave boy :| 23:02:47 > let x = (:) <$> Nothing <*> y; y = x <|> pure [] in x 23:02:48 Nothing 23:03:06 > let x = (:) <$> Maybe 5 <*> y; y = x <|> pure [] in x 23:03:06 Not in scope: data constructor `Maybe' 23:03:12 > let x = (:) <$> Just 5 <*> y; y = x <|> pure [] in x 23:03:15 mueval-core: Time limit exceeded 23:03:25 er.. what. 23:03:43 Why does that return Nothing. 23:03:49 > some Nothing 23:03:50 Nothing 23:03:56 :t some 23:03:57 forall (f :: * -> *) a. (Alternative f) => f a -> f [a] 23:04:00 ah 23:04:02 f [a] 23:04:38 > some (Just 9) 23:04:42 mueval-core: Time limit exceeded 23:04:49 strict evaluation? 23:04:50 > fmap (take 9) (some (Just 9)) 23:04:51 note that ghci actually omits all top-level foralls <-- there's a flag for that 23:04:54 mueval-core: Time limit exceeded 23:05:00 oerjan: but it's desirable :P 23:05:06 at least for confused beginners 23:05:33 elliott: so basically what I interpret from these bits of code is that I'll never really want to use some or many. 23:05:46 well this is lambdabot and Maybe, both of which are contrived 23:05:48 > some [9] 23:05:52 mueval-core: Time limit exceeded 23:05:56 what are some and many even meant for, anyway? 23:05:57 same thing.. 23:05:58 I haven't checked 23:06:07 :t some 23:06:08 forall (f :: * -> *) a. (Alternative f) => f a -> f [a] 23:06:12 Alternative 23:06:21 > pure [] <-- it's ambiguous which Applicative you are using so lambdabot ends up creating a dummy type for it, which of course has no Show instance 23:06:28 oerjan: right. 23:08:00 :t pure (*3) <*> 5 23:08:01 forall a (f :: * -> *). (Num a, Applicative f, Num (f a)) => f a 23:08:20 heh. 23:08:35 might be useful for Signal t :) 23:09:02 grr, windows sends mousewheel events to the focused window, not to the window under the cursor 23:09:19 > (*3) <*> 5 23:09:20 Overlapping instances for GHC.Show.Show ((a -> b) -> b) 23:09:20 arising from a u... 23:09:22 olsner: huh? surely not 23:09:27 you can scroll background windows in Windows, can't you? 23:09:36 I think the top window gets a chance to /handle/ it 23:09:40 but if it declines it bubbles downwards 23:09:52 > ((*3) <*> 5) (+) 23:09:52 Overlapping instances for GHC.Show.Show (a -> a) 23:09:53 arising from a use of `... 23:10:19 > ((*3) <*> 5) (-3) 23:10:20 -9 23:10:31 excellent. I can now obfuscate arithmetic. 23:11:10 elliott: hmm, however the mechanism, the effect is that the wrong window scrolls :) 23:11:16 > ((*3) <*> 5) (-4) 23:11:16 -12 23:11:28 > many "a" 23:11:32 mueval-core: Time limit exceeded 23:11:40 wtf 23:11:48 :t many 23:11:49 forall (f :: * -> *) a. (Alternative f) => f a -> f [a] 23:11:50 the src for many is: 23:11:51 :t some 23:11:52 forall (f :: * -> *) a. (Alternative f) => f a -> f [a] 23:11:58 (can you run SC2 in linux somehow? that would eliminate all my windows problems) 23:12:00 > let x = (:) <$> Maybe 5 <*> y; y = x <|> pure [] in x 23:12:01 Not in scope: data constructor `Maybe' 23:12:06 replace Maybe 5 with your parameter 23:12:18 olsner: expand SC2 23:12:24 Starcraft 2 23:12:29 CakeProphet: i asked olsner. 23:12:29 yes, starcraft 2 23:12:35 ah yes 23:12:36 elliott: nope too bad. 23:12:43 olsner: http://appdb.winehq.org/objectManager.php?sClass=version&iId=20882 23:12:45 gold rating, not bad 23:12:52 @src some 23:12:53 some v = some_v 23:12:53 where many_v = some_v <|> pure [] 23:12:53 some_v = (:) <$> v <*> many_v 23:13:26 oh it's just some v = v <|> many v 23:13:34 many v can be zero 23:13:54 ugly definition 23:14:46 so I'm wondering.. 23:15:01 can a time-varying signal be a monad? 23:15:23 elliott: cool, looks like there is some chance of success then! 23:15:24 I know it can in the discrete case, since list is a monad, but what about in the continuous case? 23:16:09 or wait can it 23:16:12 @src many 23:16:12 Source not found. Do you think like you type? 23:16:20 sheesh 23:16:55 http://www.haskell.org/ghc/docs/6.12.1/html/libraries/base/src/Control-Applicative.html#Alternative 23:17:33 CakeProphet: functions are monads, yes 23:17:45 I'm not sure if you can analogise the function monad instance to the list instance. oerjan? 23:18:03 ah indeed it was right 23:18:13 elliott: hm? 23:18:22 oerjan: can a time-varying signal be a monad? I know it can in the discrete case, since list is a monad, but what about in the continuous case? 23:18:23 i.e. 23:18:29 type DiscreteSignal t = [t] 23:18:33 type ContinuousSignal t = Time -> t 23:18:37 where Time is a real, conceptually 23:18:53 both have monad instances, but is the monad instance to the latter analogisable as a "continuous" version of the former (list monad)? 23:19:02 indeed the >>= definitions don't correspond much 23:19:10 right 23:20:19 iirc the -> monad _is_ analogous to the ZipWith monad 23:20:49 that might be useful, but I don't know how the ZipWith monad works. 23:21:10 well i'm not sure it's defined in the library, even 23:21:14 er *ZipList 23:21:23 > ZipList [1,2,3] 23:21:24 No instance for (GHC.Show.Show (Control.Applicative.ZipList t)) 23:21:24 arising ... 23:21:30 wtf 23:21:33 newtype ZipList a = ZipList { getZipList :: [a] } 23:21:33 instance Functor ZipList where 23:21:33 fmap f (ZipList xs) = ZipList (map f xs) 23:21:42 oerjan: try getZipList 23:21:55 WHY THE FUCK DIDN'T THEY ADD A SHOW INSTANCE 23:22:08 CONOOOOOOOOOR 23:22:08 oerjan: not cool enough. 23:22:27 pure x = ZipList (repeat x) 23:22:29 indeed, looks like a function ;D 23:23:00 I wonder if (ZipList a) is the same as (Integer -> a) if you only have the Functor/Applicative/Monad instances (not the constructor) 23:23:21 well ZipLists can be finite 23:23:39 but otherwise, that's essentially what i recall discovering 23:24:38 oerjan: no they can't, if you don't have the constructor 23:24:40 > getZipList $ ZipList [1,2,3] >>= \n -> ZipList [4,5,6] 23:24:40 No instance for (GHC.Base.Monad Control.Applicative.ZipList) 23:24:40 arising fro... 23:24:44 sadly 23:24:45 pure results in an infinite list 23:24:49 and return is ofc = pure 23:24:54 so there's no way to get a finite list 23:24:57 elliott: erm you cannot construct id 23:25:03 only constant functions 23:25:25 oerjan: hmm, can't you with <*>? 23:25:51 how? both arguments are repeats 23:25:53 > let foo n = pure n <*> foo (succ n) in foo 0 :: ZipList Integer 23:25:55 No instance for (GHC.Enum.Enum 23:25:55 (GHC.Integer.Type.Intege... 23:26:03 > let foo n = pure n <*> foo (n+9) in getZipList (foo 0) 23:26:04 *Exception: stack overflow 23:26:11 hm oh 23:26:21 > let foo n = pure (const n) <*> foo (n+9) in getZipList (foo 0) 23:26:22 *Exception: stack overflow 23:26:25 meh 23:27:16 > getZipList (pure (const 1) <*> pure undefined) 23:27:16 [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,... 23:27:56 since it cannot _look_ at undefined, it cannot distinguish pure undefined from anything else 23:28:16 right 23:28:40 and your recursion is going in the wrong _direction_, you aren't actually moving _along_ the list 23:28:44 right 23:29:23 so if I made a union of [t] and (Float -> t) I could define applicative/monad/functor instances but they would have different semantics for each case. 23:29:44 CakeProphet: have you been paying attention? 23:29:48 there is more than one list monad 23:29:54 and one of them acts like functions 23:30:16 no I haven't actually. you guys started talking about stuff that is currently over my head so I stopped paying attention. :) 23:30:23 elliott: pure f <*> pure x = pure (f x) so you cannot construct anything other than pure x just from the methods in _any_ Applicative instance 23:31:25 oerjan: right 23:31:34 oerjan: same with Monad I think 23:31:58 hm right... 23:35:18 integer = natural >>= liftA2 (<|>) ((string "hu" *>) . return . negate) return 23:35:36 :t (*>) 23:35:36 forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f b 23:36:09 :t ((?p *>) . return . negate) 23:36:09 forall (f :: * -> *) a b. (?p::f a, Applicative f, Monad f, Num b) => b -> f b 23:36:43 oh -> instance 23:36:46 ?p? 23:36:47 Maybe you meant: ? pl 23:36:59 CakeProphet: dynamic scoped variable 23:37:01 ah 23:37:22 dammit Maharba respond quickly ;D 23:37:28 useful for getting types out of lambdabot without needing to add \p -> to everything 23:38:25 05:30:23: I'd guess that an entirely nature or an entirely nurture explanation for homosexuality is oversimplifying things. Homosexuality is associated with notably different brain chemistry (for the person's gender), so I'd guess there's an inherited propensity that's either repressed or reinforced based on the person's experiences 23:38:25 05:31:04: Many diseases, conditions and other types of deviations work like this. 23:38:25 irc user rodgerthegreat proves abnormality of homosexuality, news at eleven 23:38:42 @hoogle optionally 23:38:42 No results found 23:38:46 @hoogle optional 23:38:46 Control.Applicative optional :: Alternative f => f a -> f (Maybe a) 23:38:47 Text.Parsec.Combinator optional :: Stream s m t => ParsecT s u m a -> ParsecT s u m () 23:38:47 Text.ParserCombinators.ReadP optional :: ReadP a -> ReadP () 23:40:24 @hoogle f a -> f (a -> b) -> f b 23:40:25 Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b 23:40:25 Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b 23:40:25 Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b 23:40:50 > (0$0 <**>) 23:40:51 The operator `Control.Applicative.<**>' [infixl 4] of a section 23:40:51 must h... 23:41:00 > (0$0 >>=) 23:41:00 The operator `GHC.Base.>>=' [infixl 1] of a section 23:41:00 must have lower pr... 23:41:33 ?info (>>=) 23:41:33 (>>=) 23:41:36 ?info (>>=asd 23:41:36 Unbalanced parentheses 23:41:40 ?info (>>=) :: dicks 23:41:40 (>>=) :: dicks 23:41:42 wat 23:41:47 ?help info 23:41:47 help . Ask for help for . Try 'list' for all commands 23:41:51 presumably it's an error correction then 23:42:58 06:04:40: in my opinion, functional languages are pretty and clean looking, but are an *inherently* inefficient way of programming, because they don't work remotely like conventional hardware does. Magical perfect compilers that can optimize in every conceivable fashion could theoretically balance this, but Magical perfect compilers do not exist. I like my imperative languages. 23:42:58 has rodgerthegreat ever actually said anything that's true? i'm honestly curious 23:42:59 oklopol? 23:43:21 elliott: integer = natural <**> choice [negate <$ string "hu", return id] 23:43:30 oerjan: hot 23:45:11 elliott: obviously roger doesn't know how Haskell works. 23:45:21 > (0$0 <|>) 23:45:22 The operator `Control.Applicative.<|>' [infixl 3] of a section 23:45:22 must ha... 23:45:37 must ha...! 23:45:44 elliott: i guess <|> rather than choice suffices 23:45:59 integer = natural <**> (negate <$ string "hu" <|> return id) 23:46:00 nice 23:46:14 > (0$0 <$) 23:46:14 The operator `GHC.Base.<$' [infixl 4] of a section 23:46:15 must have lower pre... 23:46:51 remembering precedence does get a bit hairy 23:46:57 > 0 <$ [1..] 23:46:58 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,... 23:47:23 so is <$ less precedent than <|>? 23:47:43 presumably it's an error correction then <-- iirc... 23:47:51 ?enfo ( 23:47:51 Maybe you meant: echo undo 23:47:55 ?echo ( 23:47:55 echo; msg:IrcMessage {msgServer = "freenode", msgLBName = "lambdabot", msgPrefix = "elliott!~elliott@unaffiliated/elliott", msgCommand = "PRIVMSG", msgParams = ["#esoteric",":?echo ("]} rest:"(" 23:47:59 xD 23:48:00 ?info do x <- test; f x 23:48:01 test >>= \ x -> f x 23:48:05 ah, undo 23:48:47 CakeProphet: <$ is 4, so binds tighter than <|> at 3 23:49:10 so what are negate and string "hu"? 23:49:14 CakeProphet: note that's the point of my > (0$0 ...) tests above 23:49:16 :t negate 23:49:17 forall a. (Num a) => a -> a 23:49:34 string "hu" is a Parsec parser which parser precisely that string 23:49:39 string is from Parsec ri--yes 23:49:45 *parses 23:50:01 so what on earth is that <$ doing to String "hu" 23:50:03 *string 23:50:19 elliott: hm i just realized... does string do try internally? 23:50:34 oerjan: ah, it should 23:50:38 but doesn't 23:50:44 oerjan: yeah I believe it backtracks on failure. 23:50:47 CakeProphet: it's throwing away the monadic result (which is just "hu" iirc) and replacing it by the negate function 23:50:51 CakeProphet: wrong 23:50:56 I had to use (try . string) in digit 23:50:57 integer = natural <**> (negate <$ try (string "hu") <|> return id) 23:50:59 oerjan: fix't 23:52:51 CakeProphet: Parsec has a strange model for avoiding keeping too many possible backtrackings. basically once a parser parses a single character correctly, it refuses to backtrack to other options for it, unless you use the try combinator 23:53:36 so you have to be careful to use try if you have multiple possible parses starting with the same character 23:53:51 that's conventional, not strange, isn't it :) 23:54:23 i don't know if that's conventional, LALR(1) parsers certainly don't do that... 23:54:31 well for combinator parsers 23:55:04 although i saw a brief discussion of the matter after the recent attoparsec fiasco on reddit 23:55:34 me too :D 23:55:40 so when <*> and friends apply to Parsec they don't change the matching behavior only the result? 23:55:43 that's where i picked up the opinion that it was conventional ;D 23:56:05 CakeProphet: yep. that's sort of the essence of Applicative combinators, they can only modify results 23:56:41 so since the right-hand side of <**> is being applied to the left hand side, is string "hu" actually doing any matching? 23:57:13 -!- GreaseMonkey has joined. 23:57:13 -!- GreaseMonkey has quit (Changing host). 23:57:13 -!- GreaseMonkey has joined. 23:57:14 CakeProphet: of course 23:58:07 <**> is the same as liftA2 (flip ($)) iiuc 23:58:26 ah, based on the type I thought it was flip (<*>) 23:58:48 but uh 23:58:55 @src (<*>) 23:58:56 Source not found. Where did you learn to type? 23:59:00 oh i hope not, as that's would make it useless... 23:59:10 CakeProphet: Applicative method 23:59:14 @src Applicative 23:59:14 class Functor f => Applicative f where 23:59:15 pure :: a -> f a 23:59:15 (<*>) :: f (a -> b) -> f a -> f b 23:59:46 <**> is flip <*> IIRC