00:00:21 <oerjan> oklopol: no that was an early solved case
00:00:24 <elliott__> CakeProphet: good thing you're not required to read/write it, then
00:00:40 <oerjan> but clearly this shows that 4 is an even prime
00:00:42 <oklopol> then is that guy actually referencing something or just being stupid
00:00:46 <elliott__> CakeProphet: however i invite you to look at the channel you're calling things a waste of time in :)
00:01:45 <oklopol> oerjan: do you at all know how the proof goes btw?
00:02:01 <elliott__> it goes like doot doot doot do do do do do
00:02:19 <oklopol> 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:42 <oklopol> how long is the shortest proof atm?
00:03:05 <oklopol> elliott__: to quote Phantom_Hoover, "surely everyone here knows how the proof goes"
00:03:31 <CakeProphet> elliott__: hey, #esoteric is an excellent way to spend time.
00:03:33 <oklopol> and when we didn't, he explained it to us
00:03:43 <CakeProphet> time that would otherwise be spent doing something productive.
00:04:19 <elliott__> to quote famous bisexual oklopol, "and when we didn't, he explained it to us"
00:04:48 <oklopol> 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 <elliott__> oklopol: im going to put your limbs into separate bags
00:06:04 <elliott__> oerjan: http://esolangs.org/w/index.php?title=Infinity&curid=1253&diff=23206&oldid=20220
00:06:18 * elliott__ looks at this article WOW this article sucks
00:07:58 <oklopol> that seems like a slightly pointless article
00:08:31 <elliott__> it is, it's free of all informational content :P
00:08:43 <oerjan> i sometimes get this impression cpressey has a slightly tortuous relationship to math
00:08:49 <elliott__> http://esolangs.org/wiki/Special:Whatlinkshere/Infinity
00:09:40 <elliott__> http://esolangs.org/wiki/Lazy_evaluation
00:09:46 <elliott__> oh, the link added points to... a joke article
00:10:16 <oerjan> we have reached the esounderbelly
00:11:42 <oerjan> i didn't see the point in moving the conversation, it's not like there was any slanderous information involved
00:12:04 <oerjan> well in what _you_ said, anyway :P
00:12:07 <oklopol> what were you talking about?
00:12:20 <elliott__> but i'd have to send it to everyone present
00:13:38 <oerjan> <oerjan> well i'm sorry but once you are showing symbols it's too late anyhow
00:14:32 <oerjan> mostly, i think there are very few who have survived after reaching that stage
00:14:34 <oklopol> it's crazy that there are like a million cool diseases but no one ever gets those
00:14:40 <oklopol> everyone just gets like them flues
00:15:52 <oklopol> admittedly after changing dem to them i should've removed the e too
00:17:17 <elliott__> i gather Caroline enjoyed her rabies
00:17:43 <elliott__> http://upload.wikimedia.org/wikipedia/commons/c/c1/Rabies_Free_Countries_Sourced_2010.svg rabies-free bitch
00:18:30 <oerjan> http://en.wikipedia.org/wiki/Milwaukee_protocol
00:19:03 <elliott__> oerjan: handling bats leads to rabies? but they're so cute :(
00:19:40 <oklopol> so umm, tomorrow's conference lectures start when i went to sleep yesterday, and end when i woke up
00:19:50 <oklopol> i'll probably learn so much
00:20:28 <oklopol> one of the speakers has a proof of P=NP
00:20:36 <oerjan> you're in a conference?
00:21:20 <oklopol> i'm not really an organizer since i was doing my master's thesis when most of the stuff was happening
00:21:40 <oklopol> although i did referee one paper (it sucked THE ASS :D)
00:22:01 <elliott__> i don't keep track of the lovelifes of famous bisexuals oklopol
00:22:23 <oerjan> hey if it's a P=NP proof it should show up on godel's lost letter any moment /s
00:22:29 <oklopol> why thank you for asking, you can read it here http://tucs.fi/research/publication-view/?pub_id=tSalo11a
00:22:43 <elliott__> 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:23:12 <oklopol> 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 <elliott__> oklopol: did you write this in notepad
00:23:39 <oerjan> i'd hazard a guess the obvious error is in the second part
00:23:47 <elliott__> there is no way you wrote this >:|
00:24:20 <elliott__> oklopol: lol they gave you a master's for this?
00:25:00 <oklopol> 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 <oklopol> oerjan: lol thought you meant obvious error in the second paragraph of my abstract :D
00:26:27 <oklopol> but in fact one of my conjectures is complete bullshit, because of a definition being wrong
00:26:32 <oklopol> this was fun to notice the day that was published
00:28:56 <oklopol> 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 <oklopol> if i don't, probably in 4 years, if i do, perhaps right after that
00:31:10 <oklopol> 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:57 <elliott__> go to that one it sounds interesting
00:33:02 <oklopol> i suppose it's basically an esolanging conference
00:33:18 <oklopol> Computing with planar toppling domino arrangements
00:33:34 <oklopol> A Universal Flying Amorphous Computer
00:34:37 <oerjan> strange name that second author
00:35:14 <oklopol> yeah i guess he had two sex changes
00:35:34 <oklopol> man -> universal amorphous computer -> man
00:36:30 <elliott__> i wanna change my name to A Universal Flying Amorphous Computer now
00:36:56 <oklopol> i have to try to sleep for a bit...
00:37:29 <elliott__> damn where is olsner whne you don't need him
00:37:58 <oerjan> sweding around like swedes do
00:40:01 <oklopol> 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 <oerjan> i don't think that notation quite got through
00:42:31 <oklopol> right the 2 on the line above should be the exponent of n
00:44:13 <oklopol> 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:45:10 <oklopol> that would've been cool, but perhaps i'm still a factor of a few hundred away from that in formalness
00:45:33 <CakeProphet> I think in technical writing it's a good idea to not skip over details that might seem obvious.
00:45:55 <elliott__> except that makes mathematical proofs unreadable :)
00:46:12 <oklopol> you do that in a phd and in an article
00:46:27 <oklopol> you don't do that in a master's thesis or a book
00:46:51 <oklopol> 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 <oklopol> in a master's thesis, you don't do it because *the author* is demonstrating they know this stuff
00:47:24 <elliott__> 20:38:27: <ehird`> so now my Underload (...)s are no longer functions
00:47:24 <elliott__> 20:38:29: <ehird`> what should i call them?
00:47:38 <elliott__> the coining of the terioerioeioroeioioireoriooioerioermoinologiiiiiiiiiiiiiiiiiiiiojdfg
00:48:28 <oklopol> "<CakeProphet> maybe not with proofs." what else is there
00:56:19 <oerjan> baby, feel that equivalence
00:57:55 <CakeProphet> that's an interesting way to view biconditionality.
00:58:45 <elliott__> well biconditional i guess but it's the same thing as equivalence :)
01:00:09 <oerjan> it's a congruence relation, if you take its quotient you get a boolean algebra
01:01:17 <oerjan> the quotient of an equivalence relation is what you get if you identify equivalent elements
01:02:03 <oerjan> a congruence relation is an equivalence relation which respect your other operations, such as in this case ->, and, or
01:02:19 <CakeProphet> so the quotient is the set where the relation is true?
01:02:55 <oerjan> the quotient is a set whose elements are the equivalence classes of the relation
01:05:08 <CakeProphet> 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:47 <oerjan> yes. the significance of that is that you can transfer your other operations to the quotient
01:07:07 <oerjan> the map from an original element to the corresponding quotient element then becomes a homomorphism
01:09:00 <CakeProphet> which map? There's a lot of different kinds of maps. :D
01:09:29 <oerjan> map is here a synonym for function
01:10:05 -!- Lymia has joined.
01:10:06 -!- Lymia has quit (Changing host).
01:10:06 -!- Lymia has joined.
01:10:34 <oerjan> Lymia: YOUR IP WAS HANGING OUT
01:11:14 <CakeProphet> oerjan: so when you convert the original element into its equivalence class, it preserves the algebraic structure?
01:11:14 <Lymia> DMZ points at my dad's computer. Who cares.
01:11:53 <CakeProphet> hmmm, okay. I'll need to learn more about abstract algebra to understand what that entails.
01:12:59 <oerjan> http://en.wikipedia.org/wiki/Isomorphism_theorem#General
01:13:53 <CakeProphet> 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 <oerjan> in wikipedia's usual even-more-incomprehensible-than-necessary style
01:14:13 <elliott__> its so the editors can prove theyre smart
01:14:39 <CakeProphet> 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 <elliott__> yeah but mathworld is easier to understand most of the time and just as precise, c'mon :P
01:15:57 <oerjan> 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 <CakeProphet> ah okay, so the operation becomes something else, but still works the same way.
01:18:02 <CakeProphet> basically with the equivalence class version of the operation you're just applying the operation to all of the elements.
01:18:29 <elliott__> <Lymia> DMZ points at my dad's computer. Who cares.
01:19:04 <oerjan> well... there's a small caveat in that A & B applied to all elements is not necessarily _all_ of C, i think
01:19:59 <oerjan> C needs to be a whole equivalence class
01:21:13 <CakeProphet> 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 <oerjan> well you just take anything which is equivalent to something (and thus everything) in C
01:21:52 <oerjan> and that must still be in C
01:22:38 <CakeProphet> 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:24:31 <CakeProphet> my discrete math teacher was incorrect. He seemed to use equivalence class as a synonym for equivalence relation.
01:25:15 <CakeProphet> 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 <CakeProphet> and he's like, one of the better professors at my university. That's saying a lot.
01:27:59 <oerjan> 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:51 <elliott__> oerjan: the funnest would be comparing the worst :D
01:28:55 <CakeProphet> I go to a pretty small university. Not saying that being a small university is bad, but in this case it's true.
01:29:31 <oerjan> 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 <CakeProphet> the modal university would be the one with the most satellite campuses I think.
01:29:43 <coppro> CakeProphet: An equivalence relation over a set gives rise to a partition of that set into equivalence classes under that relation
01:30:10 <CakeProphet> coppro: yep, I just read about that on Wikipedia actually. :D
01:30:52 <coppro> all evidence points to you not having one
01:31:05 <coppro> elliott__: goddamn executive meddling in doctor who
01:31:29 <elliott__> coppro: I stopped watching because Moffat turned from genius to incompetent after taking the reins
01:31:48 <elliott__> or are you referring to something other than new episodes
01:31:53 <CakeProphet> !lperl I'm trying to find a way to use *{"THIS"}* thing I made, but alas I cannot think of anything.
01:31:53 <EgoBot> I'm trying to find a way to use THIS thing I made, but alas I cannot think of anything.
01:32:08 <EgoBot> perl while(<>){s/ (?<!\\) \*\{ (.*?) (?!\\) \}\* /$1/gxee;print}
01:32:51 <CakeProphet> originally it was {{ but that would make balancing issues arise
01:33:10 <coppro> elliott__: I'm referring to the new episodes
01:33:17 <coppro> elliott__: at what point did you stop watching?
01:33:28 <CakeProphet> while(<>){s/ (?<!\\) \*\{ (.*?) (?!\\) \}\* /$1/gxee;print}
01:34:12 <elliott__> 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 <elliott__> A constant stream of meaningless myth arcs is plot, right?
01:34:29 <Lymia> !lperl blahblah*{print "You suck"}*blahblah
01:34:29 <EgoBot> You suckblahblah1blahblah
01:34:41 <Lymia> !lperl blahblah*{"You suck"}*blahblah
01:34:42 <EgoBot> blahblahYou suckblahblah
01:36:00 <EgoBot> Interpreter lperl deleted.
01:36:01 <CakeProphet> !addinterp lperl perl while(<>){s/ (?<!\\) \{\{ (.*?) \}\} (?!\})/$1/gxee;print}
01:36:01 <EgoBot> Interpreter lperl installed.
01:36:08 <CakeProphet> once again negative look-around saves the day
01:36:08 <coppro> 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 <elliott__> coppro: Also River Song is the worst character ever invented.
01:37:03 <coppro> elliott__: Why do you say that?
01:37:06 <CakeProphet> !lperl This is a {{@{[qw*MOTHERFUCKIN' TEST DAWG*]}}}.
01:37:47 <elliott__> coppro: She's a blatant Mary Sue whose entire basis is "OOH, MYSTERIOUS FUTURE COMPANION PERSON, BE VERY MYSTERISED"
01:39:15 <elliott__> {x <-- not the start of a code block
01:39:19 <coppro> 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 <elliott__> coppro: I'm aware she's been developed a small amount, but that really doesn't justify the Mary Sueness
01:39:43 <CakeProphet> elliott__: NOPE. TOO HACKISH DOESN'T WORK THAT WAY.
01:39:56 <elliott__> coppro: Also this "SORT OF A TIME LORD" thing makes no fucking sense.
01:40:25 -!- calamari has joined.
01:41:01 <CakeProphet> though don't ask me why you would ever escape the {{
01:41:23 <coppro> 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 <elliott__> coppro: erm, they just revealed /and/ explained it simultaneously
01:43:09 <elliott__> coppro: but the explanation isn't an explanation, it's just "banging in the tardis makes time lordy things"
01:43:53 <elliott__> 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 <coppro> 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 <coppro> The Doctor clearly had no idea it could work that way until now
01:44:51 <elliott__> Sweet, eagerly awaiting an episode of gratuitous sex scenes
01:45:01 <elliott__> I MUST DO IT... FOR THE TIMELORDS [sax]
01:46:18 <EgoBot> Interpreter lperl deleted.
01:46:19 <CakeProphet> !addinterp lperl perl while(<>){s/ (?<!\\) \{\{ (.*?) \}\} (?!\})/$1/gxee;s/\\{/{/g;print}
01:46:20 <EgoBot> Interpreter lperl installed.
01:46:31 <elliott__> CakeProphet: you realise {{"{{"}} works to escape
01:46:49 <elliott__> you could even define two subs that return "{{" and "}}" with short names
01:47:17 <EgoBot> Interpreter lperl deleted.
01:47:28 <elliott__> !addinterp lperl perl while(<>){s/ (?<!\\) \{\{ (.*?) \}\} (?!\})/$1/gxee;s/\\{/{/g;print}
01:47:29 <EgoBot> Interpreter lperl installed.
01:47:54 <CakeProphet> 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:41 <EgoBot> Interpreter lperl deleted.
01:49:17 <CakeProphet> !addinterp lperl perl while(<>){s/ \{\{ (.*?) \}\} (?!\})/$1/gxee;print}
01:49:17 <EgoBot> Interpreter lperl installed.
01:51:13 <CakeProphet> also, Perl pretty much dominates the golfing of this one.
01:51:48 <CakeProphet> the golfed form would s/while/for/ and take out the /x option and whitespace
01:52:06 <elliott__> coppro: also i don't like the new theme :D
01:52:15 <coppro> elliott__: I agree with you there!
01:52:18 -!- comex has quit (Quit: ZNC - http://znc.sourceforge.net).
01:52:29 <coppro> but the "The Doctor is being awesome now" music is good
01:52:41 <elliott__> they should have just picked one off http://whomix.trilete.net/ :D
01:53:16 <elliott__> that huge torrent is now three percent completed, i should note
01:55:20 <EgoBot> Interpreter lperl deleted.
01:55:23 <CakeProphet> !addinterp lperl perl $_=<>;s/{{(.*?)}}(?!})/$1/gee;print
01:55:24 <EgoBot> Interpreter lperl installed.
01:55:38 -!- sebbu2 has joined.
01:55:54 -!- variable has joined.
01:56:21 <CakeProphet> elliott__: e evaluates the replacement string as Perl code. ee evaluates the replacement string as Perl code and then evaluates that.
01:58:33 -!- sebbu has quit (Ping timeout: 240 seconds).
01:59:57 <CakeProphet> `run echo '$_=<>;s/{{(.*?)}}(?!})/$1/gee;print' | wc -c
02:01:32 -!- elliott__ has quit (Quit: FUUUUUUUUUUUUUUUUUUUCK YOUUUUUUUUUUUUUUUUUU).
02:01:57 <oerjan> !perl $_ = "hm..."; s/hm/"'1+2'"/e; print;
02:02:03 <oerjan> !perl $_ = "hm..."; s/hm/"'1+2'"/ee; print;
02:02:07 <oerjan> !perl $_ = "hm..."; s/hm/"'1+2'"/eee; print;
02:03:26 <CakeProphet> !perl $_ = "hm..."; s/hm/"'q{1+2}'"/eeee; print;
02:03:42 <CakeProphet> !perl $_ = "hm..."; s/hm/"'q{q[q<1+2>]}'"/eeeeee; print;
02:04:03 <oerjan> !perl $_ = "hm..."; s/hm/"'q{q[q<1+2>]}'"/eeeee; print;
02:04:14 <Lymia> !perl $_ = "hm..."; s/hm/"'q{1+2}'"/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee; print;
02:04:37 <oerjan> at this point we need w and h flags
02:04:42 <CakeProphet> conjecture: there can be an arbitrary number of e options.
02:05:10 <Lymia> !perl $_ = "hm..."; s/hm/"'q{print 'perverse'}'"/e; print;
02:05:10 <EgoBot> 'q{print 'perverse'}'...
02:05:14 <Lymia> !perl $_ = "hm..."; s/hm/"'q{print 'perverse'}'"/ee; print;
02:05:35 <CakeProphet> hmm, yeah I don't know where standard input is going.
02:05:35 -!- calamari has left ("Leaving").
02:05:53 <oerjan> Lymia: bad ' matching i think
02:06:29 <oerjan> CakeProphet: in lperl previously the explicit print got first
02:06:32 <Lymia> !perl $_ = "hm..."; s/hm/"'q{q{print 'perverse'}}'"/e; print;
02:06:33 <EgoBot> 'q{q{print 'perverse'}}'...
02:06:36 <Lymia> !perl $_ = "hm..."; s/hm/"'q{q{print 'perverse'}}'"/ee; print;
02:06:50 <Lymia> An extra way to do (extra perverse) conditionals?
02:06:54 <oerjan> Lymia: you cannot have nested ''
02:07:09 <oerjan> i don't recall if it's even possible to escape them
02:07:13 <CakeProphet> it may have a problem with the nested {}'s as well but I'm not sure.
02:07:58 <CakeProphet> in any case you can use pretty much anything as a delimeter with the q construct.
02:07:58 <Lymia> !perl $_ = "hm..."; s/hm/"'q{q{print \'perverse\'}}'"/ee; print;
02:08:25 <EgoBot> possibly even pound sign?
02:08:32 <oerjan> Lymia: i think the \ get stripped already at the " stage
02:08:49 <Lymia> !perl $_ = "hm..."; s/hm/"'q{q{print \\'perverse\\'}}'"/ee; print;
02:08:50 <EgoBot> q{q{print 'perverse'}}...
02:08:57 <Lymia> !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/ee; print;
02:08:58 <EgoBot> q{q{q{print 'perverse'}}}...
02:09:00 <Lymia> !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/eee; print;
02:09:00 <EgoBot> q{q{print 'perverse'}}...
02:09:03 <Lymia> !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/eeee; print;
02:09:03 <EgoBot> q{print 'perverse'}...
02:09:07 <Lymia> !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/eeeee; print;
02:09:11 <Lymia> !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/eeeeee; print;
02:09:41 <oerjan> Lymia: well the {}'s nested pretty well...
02:09:56 <Lymia> !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/e; print;
02:09:57 <EgoBot> 'q{q{q{print \'perverse\'}}}'...
02:09:59 <Lymia> !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/ee; print;
02:09:59 <EgoBot> q{q{q{print 'perverse'}}}...
02:10:05 <Lymia> !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/eee; print;
02:10:06 <EgoBot> q{q{print 'perverse'}}...
02:10:33 <EgoBot> Can't find string terminator "}" anywhere before EOF at /tmp/input.17755 line 1.
02:11:46 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)).
02:12:06 -!- rodgort has joined.
02:12:21 <coppro> elliott__: I estimate 8% for me. Incidentally, do you know what the "the Doctor is being awesome" music is called?
02:12:30 <oerjan> hm "" is just an abbreviation for q"" iirc
02:12:30 <CakeProphet> !perl $_=q{q[q<q(q!q@q#q$q%q^q&q*muhahahahahahaha*&^%$#@!)>]};$_=eval for 1..12;print
02:12:30 <EgoBot> q[q<q(q!q@q#q$q%q^q&q*muhahahahahahaha*&^%$#@!)>]
02:12:44 <oerjan> and '' for q'' which is a special case
02:13:19 <CakeProphet> q is '', and yes those forms are abbreviations of the more general form.
02:14:13 <oerjan> well but i also recall that using '' as delimiters in some of the other quote-like constructs turns off interpolation
02:14:54 <oerjan> !perl $_ = "test"; s'test'$1'; print;
02:15:20 <Lymia> !perl $_=q{q[q<q(q!q@q#q$q%q^q&q*muhahahahahahaha*&^%$#@!)>]};$_=eval for 1..120;print
02:15:20 <EgoBot> q[q<q(q!q@q#q$q%q^q&q*muhahahahahahaha*&^%$#@!)>]
02:16:04 <Lymia> !perl $_="q{q[q<q(q!q@q#q$q%q^q&q*muhahahahahahaha*&^%$#@!)>]}";$_=eval for 1..120;print
02:16:05 <EgoBot> $# is no longer supported at /tmp/input.18287 line 1.
02:16:21 <Lymia> !perl $_="q{q[q<q(q!q@q~q$q%q^q&q*muhahahahahahaha*&^%$~@!)>]}";$_=eval for 1..120;print
02:16:22 <EgoBot> q{q[q<q(q!q~q%q^q&q*muhahahahahahaha*&^%STDOUT@!)>]}
02:16:32 <oerjan> CakeProphet: erm sure you didn't get other lines in DCC?
02:17:27 <oerjan> !perl print "a" for 1..10;
02:17:43 <CakeProphet> so I'm guessing the return value of eval is bad.
02:18:03 <CakeProphet> !perl $_="q{q[q<q(q!q@q~q$q%q^q&q*muhahahahahahaha*&^%$~@!)>]}";eval for 1..12;print
02:18:03 <EgoBot> q{q[q<q(q!q~q%q^q&q*muhahahahahahaha*&^%STDOUT@!)>]}
02:18:20 <CakeProphet> !perl $_="q{q[q<q(q!q@q~q%q^q&q*muhahahahahahaha*&^%~@!)>]}";eval for 1..11;print
02:18:21 <EgoBot> q{q[q<q(q!q~q%q^q&q*muhahahahahahaha*&^%~@!)>]}
02:18:51 <CakeProphet> !perl $_="q{q[q<q(q!q@q~q%q^q&q*muhahahahahahaha*&^%~@!)>]}";$_=eval for 1..11;print
02:18:51 <EgoBot> q{q[q<q(q!q~q%q^q&q*muhahahahahahaha*&^%~@!)>]}
02:19:06 <CakeProphet> it might be a bad idea to use all of those symbols together at once like that...
02:20:27 <oerjan> !perl $_="q{q[q<q(q!q@q~q%q^q&q*muhahahahahahaha*&^%~@!)>]}"; print eval;
02:20:28 <EgoBot> q[q<q(q!q~q%q^q&q*muhahahahahahaha*&^%~@!)>]
02:20:43 <CakeProphet> !perl $_="q{q[q<q(q!q@q~q%q^q&q*muhahahahahahaha*&^%~@!)>]}";($_=eval) for 1..11;print
02:20:44 <EgoBot> q{q[q<q(q!q~q%q^q&q*muhahahahahahaha*&^%~@!)>]}
02:21:21 <CakeProphet> my guess is that it has something to do with horrid abuve of quote-like operators.
02:21:51 <oerjan> what variable is the for 1..11 construct using? >:)
02:22:22 <CakeProphet> why $_ of course. Why, what is the problem?
02:22:37 <oerjan> oh and it's made local i guess
02:22:45 <oerjan> so it's reinstated after the loop
02:23:01 <CakeProphet> yes, if $_ were global terrible things would happen.
02:23:59 <CakeProphet> !perl $s="q{q[q<q(q!q@q~q%q^q&q*muhahahahahahaha*&^%~@!)>]}";$s=eval$s for 1..11;print$s
02:23:59 <EgoBot> Array found where operator expected at (eval 6) line 1, at end of line
02:24:26 <CakeProphet> now we're getting into the "abuse of quote-like operator" errors.
02:24:45 <Patashu> lol wtf are you guys doing
02:26:02 <oerjan> CakeProphet: leave off the outer "
02:26:41 <CakeProphet> !perl $s='q{q[q<q(q!qq~q%q^q&q*muhahahahahahaha*&^%~@!)>]}';$s=eval$s for 1..11;print$s
02:26:42 <EgoBot> Array found where operator expected at (eval 6) line 1, at end of line
02:27:21 <CakeProphet> !perl $s='q{q[q<q(q!q@q~q%q^q&q*muhahahahahahaha*&^%~@!)>]}';$s=eval$s for 1..11;print$s
02:27:48 <CakeProphet> we got the evil genius at the delicious quoted core.
02:37:27 <CakeProphet> 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:40:05 <Patashu> you guys know of any esoteric logic gates?
02:40:41 <oerjan> reversible gates are cool
02:41:18 <oerjan> (and theoretically, cool physically as well)
02:42:53 <Patashu> reversible computing, huh...
02:46:23 <oerjan> sounds obviously possible, actually...
02:46:35 <Patashu> you just need to define proper encoding schemes
02:46:46 <oerjan> standard quining techniques applied to hardware
02:47:49 <oerjan> the data part would be the memory
02:48:24 <CakeProphet> so I recently discovered this: http://perldoc.perl.org/functions/tie.html
02:48:40 <CakeProphet> and I think it would be a good way to explore some unorthodox variable assignment semantics.
02:49:35 <CakeProphet> 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 <coppro> 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:58:49 <coppro> those things are awesome
02:59:14 <CakeProphet> http://www.youtube.com/watch?v=B1O2jcfOylU
02:59:23 <CakeProphet> may have already seen this one. it's the mario bros. theme song
02:59:44 <coppro> except that one doesn't have Adam Savage dancing around
02:59:54 <coppro> also I haven't heard them play Mario Bros
03:01:13 -!- augur has quit (Remote host closed the connection).
03:03:43 <CakeProphet> also this: http://www.youtube.com/watch?v=xD_HQ4B0Fcw
03:06:44 <CakeProphet> 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 <CakeProphet> 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 <CakeProphet> 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:37:21 <oklopol> "<CakeProphet> basically what they are." <<< how many lectures did 'a relation between X and Y is a subset of XxY' take?
05:41:00 <oklopol> "<CakeProphet> 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 <oklopol> 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:53:19 <oklopol> but lol that's a great definition lol :D
05:55:16 <oklopol> 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 <Patashu> sbahj related http://www.youtube.com/watch?v=u7YfVmY9Qjs
06:17:37 <CakeProphet> 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 <CakeProphet> the largest sections were spent on combinatorics and induction proofs.
06:26:08 <CakeProphet> 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 <CakeProphet> 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 <CakeProphet> 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 <CakeProphet> Linear algebra could be useful in programming, I guess...
06:32:36 <CakeProphet> but I want to learn about some motherfucking spaces.
06:33:46 <coppro> also what school is this?
06:36:09 -!- Sgeo has quit (Ping timeout: 250 seconds).
06:38:02 <CakeProphet> basically it used to be a satellite campus of Georgia Tech but is now a separate university.
06:39:23 <CakeProphet> also parts of that article read like a website for the university..
06:47:49 <CakeProphet> 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:29 <coppro> you americans and your tuition
06:53:37 <CakeProphet> why? Because people flip the fuck out if you raise taxes.
06:54:07 <coppro> and don't understand economics
06:54:20 <coppro> see: any government that is not allowed to run a deficit
06:54:21 <CakeProphet> dude the tea party movement is the most retarded thing I've ever seen in American politics.
06:54:37 <coppro> not allowing a government to run a deficit is suicide
06:54:47 <coppro> like, your country is doomed
06:55:08 <CakeProphet> the states have way too much deficit though.
06:56:01 <coppro> now, structural deficits suck balls
06:56:48 <coppro> currently living in California working at the country^Wcompany that will someday RULE THE WORLD^W^W^W do stuff
06:56:51 <CakeProphet> we have a very pervasive structural deficit. I believe for every $2 we generate we spend 5. roughly
06:57:09 <coppro> structural deficit definitely shouldn't happen
06:57:16 <coppro> but outlawing deficit altogether is not the solution
06:57:24 <coppro> because otherwise the government can't help a struggling economy
06:57:54 <coppro> 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 <CakeProphet> honestly I think raising taxes is the solution to our deficit. Perhaps even economic problems.
06:58:34 <CakeProphet> cutting programs is not because any bill to cut programs will get fucked up in congress.
06:58:49 <CakeProphet> and because no one can fucking decide what to cut.
06:59:09 <coppro> well problem #1 is you're in a whole
06:59:25 <coppro> you effectively have to cut taxes
06:59:29 <coppro> or borrow a shitton of money
07:00:04 <CakeProphet> raising taxes is an equivalent solution really.
07:00:06 <coppro> because your government can't safely raise taxes; the economy is still fragile
07:00:22 <coppro> this is the real problem
07:01:08 <coppro> once the economy picks up, they can and should raise taxes
07:01:18 <coppro> but that could be a long time
07:01:21 <CakeProphet> 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 <coppro> they should also continue to cut spending
07:01:38 <coppro> military in particular
07:01:40 <CakeProphet> economic stimulus programs such as finding a way to eliminate our trade deficit... which is another structural problem.
07:02:44 <coppro> another common misconception is that government debt is bad
07:03:48 <coppro> government debt can be friggin' awesome when you've got bonds that pay out at less than inflation
07:04:08 <coppro> although too much of it will bite you if inflation drops
07:04:27 <CakeProphet> but generally our legislative branch is too busy focusing on partisan bullshit to be effective at creating economic recovery programs, so..
07:05:16 -!- Slereah_ has quit (Ping timeout: 255 seconds).
07:05:26 <coppro> now of course there is the 'print money' approach
07:05:37 <coppro> but the US economy is dead if that happens
07:05:48 <coppro> I just hope I'm out of the country before
07:05:51 -!- mtve has quit (Ping timeout: 252 seconds).
07:06:00 <CakeProphet> yeah, I don't even think printing more money is even a valid consideration.
07:06:22 -!- Slereah has joined.
07:07:32 <coppro> of course I don't think the US government is quite as stupid as Zimbabwe
07:07:33 <CakeProphet> 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 <coppro> I trust Congress not to cause two hundred million percent inflation
07:08:48 <CakeProphet> coppro: yes, congress is only borderline retarded.
07:08:52 <coppro> that's about as far as I go though
07:09:43 <CakeProphet> 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:10:05 <CakeProphet> honestly it seems like a better option than having congress fumbling everything.
07:11:57 <coppro> you don't consider that they're already doing so?
07:12:09 <CakeProphet> are they? I haven't been paying attention to that.
07:12:19 <coppro> see wisconsin for instance
07:12:45 <coppro> your country is in a state of political turmoil, the problem being that you have a nice half-and-half split
07:13:45 <CakeProphet> the minority that absolutely hate Obama are way more vitriolic than any protest group I've witnesses. Granted, I'm young. :P
07:14:18 <CakeProphet> it's very easy to think that there's racism involved.
07:14:50 <coppro> oh, I'm not really talking about Obama-haters
07:15:15 <CakeProphet> we've always been in that state. always as in... the last several decades.
07:15:15 <coppro> They will exist for any political leader
07:15:39 <coppro> There is a fairly significant portion of our population who believes Harper is going to ruin the country
07:15:54 <coppro> I used to think that. Now I don't since I can keep my sanity that way.
07:16:11 <CakeProphet> 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 <coppro> but also because his temperament has improved just enough that I think we might survive
07:18:46 <CakeProphet> man, I wish my higher education was paid for. :P
07:19:54 <CakeProphet> there's absolutely no disadvantages to educating your populace beyond secondary education.
07:20:09 <coppro> which is obviously wrong
07:20:16 <coppro> government shouldn't spend money, etc.
07:22:01 <CakeProphet> 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:24:04 <EgoBot> 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 <coppro> CakeProphet: Student, presently working at the aforementioned company
07:24:22 <coppro> in September, I resume studenting
07:24:27 <CakeProphet> coppro: er, aforementioned? perhaps I missed something.
07:24:56 <coppro> 02:56 < coppro> currently living in California working at the country^Wcompany that will someday RULE THE WORLD^W^W^W do stuff
07:25:55 <coppro> by working on an open-source project and having Google people say "You should work for us". So I did.
07:26:10 <CakeProphet> I would VERY MUCH be interested in going to california and doing graduate studies at Berkeley.
07:26:19 <CakeProphet> also.. I NEED to get into open source development.
07:26:25 <CakeProphet> there's absolutely no reason I shouldn't be right now.
07:26:26 <coppro> you should come to Waterloo instead
07:27:36 <CakeProphet> see, I thought that as just some weird onomatopoeia I didn't understand.
07:27:39 <coppro> 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:28:01 -!- Guest56111 has left ("Leaving.").
07:28:03 <CakeProphet> same with Southern Poly compared to Georgia Tech.
07:28:29 <CakeProphet> I prefer not to think about it when I can.
07:29:40 <CakeProphet> 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 <CakeProphet> 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 <CakeProphet> jacked up in a cool way. Just non-standard.
07:30:54 <coppro> ah yeah we have some programs like that here
07:31:13 <coppro> less so now that the faculty is moving on to an á la carte system
07:31:41 <CakeProphet> 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 <CakeProphet> but I'm almost positive data structures will transfer, and databases.
07:32:38 <CakeProphet> I have no idea about the introductory Java courses I took. GT starts off with a Python-based course.
07:32:58 <coppro> fourth year seems dangerous to attempt a transfer
07:34:07 <CakeProphet> as it turns out, taking summer classes in the middle of a post-relationship suicidal crisis is a bad idea.
07:35:37 <CakeProphet> but I'm over that now. It was still a poor decision though.
07:36:19 <EgoBot> 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:49 <EgoBot> Substitution replacement not terminated at /tmp/input.8285 line 1.
07:37:14 <CakeProphet> 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 <CakeProphet> which leads me to believe that it's some odd syntax thing.
07:38:27 <EgoBot> That interpreter doesn't exist!
07:38:29 <EgoBot> Interpreter dechatspeak deleted.
07:38:47 <EgoBot> 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 <EgoBot> perl $_=<>;s/{{(.*?)}}(?!})/$1/gee;print
07:40:42 <CakeProphet> !addinterp lsh perl $_=<>;s/{{(.*?)}}(?!})/`$1`/ge;print
07:40:42 <EgoBot> Interpreter lsh installed.
07:42:49 <CakeProphet> 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 <CakeProphet> like how Perl can do those two things in 36 and 37 bytes...
07:46:02 <Lymia> !lsh hiiiiiiii{{"bluhbluh"}}
07:46:03 <EgoBot> /bin/sh: bluhbluh: command not found
07:46:21 <Lymia> !lsh hiiiiiiii{{echo "you suck"}}
07:46:39 <Lymia> !lsh {{perl -c "fork while fork"}}
07:46:39 <EgoBot> Can't open perl script "fork while fork": No such file or directory
07:46:44 <Lymia> !lsh {{perl -e "fork while fork"}}
07:46:53 <Lymia> !lsh {{perl -e "print 'hi'"}}
07:47:30 <CakeProphet> it was either you or Patashu that was interested in learning it.
07:47:43 <EgoBot> Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
07:47:49 <Lymia> !bfjoust myon [[+-]+]
07:48:25 <EgoBot> Score for Lymia_myon: 7.6
07:48:56 <CakeProphet> `run echo '$_=<>;s/{{(.*?)}}(?!})/`$1`/ge;print' | wc -c
07:49:31 <Lymia> CakeProphet, what does that do?
07:49:35 <Lymia> `run echo '$_=<>;s/{{(.*?)}}(?!})/`$1`/ge;print'
07:49:40 <HackEgo> $_=<>;s/{{(.*?)}}(?!})/`$1`/ge;print
07:49:57 <CakeProphet> well wc -c counts the bytes on standard in--oh
07:50:16 <CakeProphet> yes I was just double checking my arithmetic.
07:52:06 <CakeProphet> 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:53:49 <CakeProphet> it will be like putting myself in a straight-jacket but attaching speedy rockets and <insert metaphor for extra type safety that I can't think of>
07:55:15 <pikhq> So. Should I sleep?
07:55:25 <pikhq> I mean, I just got home, but it *is* 02:00.
07:56:32 <CakeProphet> !lperl hmmm, let me think about it. {{int(rand(2))?'yes you should':'no you shouldn\'t'
07:56:33 <EgoBot> hmmm, let me think about it. {{int(rand(2))?'yes you should':'no you shouldn\'t'
07:56:36 <CakeProphet> !lperl hmmm, let me think about it. {{int(rand(2))?'yes you should':'no you shouldn\'t'}}.
07:56:37 <EgoBot> hmmm, let me think about it. yes you should.
07:57:02 <pikhq> Damn you, EgoBot, for being the voice of reason.
07:59:36 -!- monqy has quit (Quit: hello).
08:02:28 <CakeProphet> coppro: so clang is basically a better C compiler.
08:02:44 <pikhq> CakeProphet: Problem: You do NOT want to bootstrap with it.
08:02:48 <pikhq> Not only no but hell no.
08:03:12 <CakeProphet> pikhq: okay. For all of my future bootstrapping purposes I will refrain from using clang. :P
08:03:33 <pikhq> It's actually a fairly necessary use case for a C compiler.
08:03:50 <pikhq> As everything else tends to rely on the presence of a sane, functioning C compiler.
08:04:08 <pikhq> (well, actually, everything else tends to rely on the presence of a sane, functioning GNU C compiler, because fuck you.)
08:04:55 <coppro> pikhq: why do you not want to bootstrap with clang?
08:05:32 <coppro> although I recall you have some weird definition of bootsrap I don't remember
08:06:05 <CakeProphet> 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 <CakeProphet> thereby riding my system of the evil of C that has plagues operating systems for too long.
08:07:19 <pikhq> 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 <pikhq> (yes, the C++ library *also* pokes around in libc internals. Because "fuck you", says GNU.)
08:09:15 <coppro> pikhq: Oh. I would direct you at the sister libc++ project then
08:09:28 <pikhq> Yeah, but it's a WIP.
08:09:34 <pikhq> I do approve of the project, though.
08:09:50 <coppro> It should be capable of handling clang on a Mac
08:10:20 <coppro> 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 <coppro> it is effectively impossible to implement it quickly on top of libc without code duplication
08:12:35 <pikhq> 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 <pikhq> (whether by POSIX or "These are the functions we want; implement them if you want our stuff to work."...)
08:13:26 <pikhq> Not by brazenly going in with "Eeeeh, fuck sanity, I'm going to assume I can fuck around with implementation internals".
08:14:00 <CakeProphet> !addinterp rot47 perl $_=<>;tr/!-~/P-~!-O/;print
08:14:00 <EgoBot> Interpreter rot47 installed.
08:14:12 <EgoBot> E6DE:?8 x 2> 2 ?:?;2 PoRST/UYX
08:14:33 <pikhq> Sadly, sanity is not widely accepted behavior in C.
08:14:38 <coppro> pikhq: Don't get me started on wchar_t by the way
08:14:43 <coppro> it's bad enough with char
08:14:49 <pikhq> Oh, *fuck* wchar_t.
08:15:07 <coppro> I imagine it will be something like this:
08:15:37 <coppro> a) If we have a known libc that does not implement our extensions, we will attempt to hack it appropriately
08:15:45 <EgoBot> testing I am a ninja !@#$%^&*)
08:15:55 <coppro> b) If we are told to assume our extensions exist, we use them
08:16:10 <coppro> c) If we have a known libc with our extensions, we use them
08:16:36 <coppro> d) Otherwise we do what best we can
08:16:50 <pikhq> Also, this is presuming there's an actual need to poke around in the libc internals.
08:17:04 <coppro> pikhq: The primary issue is properties of characters
08:17:25 <coppro> C++ requires providing access to a mask table, which is a sane implementation of the C standard but not required
08:17:41 <coppro> In a worst-case scenario, the lookup table would have to be built on-demand
08:17:49 <CakeProphet> 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:57 <coppro> by calling C functions on every character
08:18:19 <coppro> Now, for wchar_t the situation is much worse, as we can't even do that safely
08:18:24 <pikhq> That's... Actually broken behavior of C++.
08:18:27 <coppro> unless we halt every thread
08:18:34 <CakeProphet> strlen was str_len, for example. isupper was is_upper.
08:18:39 <coppro> pikhq: oh yes, this is very broken
08:18:49 <coppro> pikhq: C++ locales suck balls
08:18:52 -!- MigoMipo has joined.
08:18:58 <coppro> pikhq: the mask table is not in itself a bad idea
08:19:10 <CakeProphet> 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 <pikhq> coppro: Not bad, just broken in a modern environment.
08:19:30 <pikhq> As is everything to do with the char type, TBH.
08:19:37 <coppro> pikhq: The issue with wchar_t is that functions like isupper() depend on the global locale
08:19:55 <pikhq> ... *Global* locale.
08:20:08 <pikhq> As in, per process, not per thread.
08:20:15 <pikhq> Jesus fuck that's a bad idea.
08:20:24 <coppro> C existed long before threads were a concern, remember?
08:20:36 <coppro> of course it's a terrible idea
08:20:46 <CakeProphet> can someone explain size_t to me? Are there differences in the type used for size_t among machines?
08:20:56 <coppro> it allows you to construct locale objects and has isupper_l and similar functions
08:21:09 <coppro> the problem is that POSIX does not have this for wchar_t
08:21:17 <pikhq> CakeProphet: size_t is supposed to be *whatever type* is appropriate for storing the size of types and allocations of memory.
08:21:43 <pikhq> 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 <coppro> so on a POSIX-compliant system, there is no reasonable way to implement C++ locales on top of system locales
08:22:16 <CakeProphet> 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 <pikhq> How's about we just replace the C library and the C++ library? Entirely.
08:22:37 <coppro> pikhq: backwards compatibility
08:22:40 <pikhq> CakeProphet: Well, it's sure as hell not an int on x86_64.
08:22:52 <pikhq> coppro: Yes, I know. But still...
08:23:16 <CakeProphet> you could just have a new library and keep the old one around...
08:23:37 <pikhq> How's about we just kill everyone and everything and restart civilization my way?
08:24:12 <coppro> pikhq: oh actually nevermind
08:24:35 <coppro> the char case is safe, we can implement the C spec directly since it gives little leeway
08:25:47 <CakeProphet> fixing all numeric typeclasses and that length-returning-an-Int crap
08:31:20 <CakeProphet> it handles concurrency well and it's fairly fast/portable from what I understand, but it handles string poorly iirc.
08:31:35 <pikhq> Erlang was *designed* to run standalone.
08:31:35 <coppro> Erlang handles strings as Haskell does
08:31:50 <coppro> but it's intended to run systems, yes
08:31:58 <pikhq> Well, "standalone" in the sense of "the VM runs on bare hardware just fine".
08:32:24 <coppro> also well-written Erlang is basically indestructible
08:32:53 <pikhq> Again, as designed.
08:33:30 <pikhq> The language itself isn't that great, but man it's probably the single most reliable thing I've seen.
08:36:17 <coppro> 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 <coppro> pikhq: If tarcieri ever makes some real concrete decisions, Reia could be excellent
08:42:42 <coppro> (Reia being an attempt at a sane [Ruby-like in this case] language on the erlang VM)
08:50:13 <pikhq> The population of Manhattan was *decreased* in the past 100 years.
08:50:44 <pikhq> It used to be 2.3 million, it's now 1.5 million.
08:54:24 <pikhq> Though the population of New York City itself has shot way up; it's simply spread out to the other boroughs of the city...
09:41:59 -!- Vorpal has joined.
09:57:50 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
10:02:21 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
10:02:34 <Lymia> > zipWith [1..] [1..]
10:02:35 <lambdabot> Couldn't match expected type `a -> b -> c'
10:02:58 <lambdabot> forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
10:06:28 <Lymia> > zipWith (\x y -> [x..y]) [1..] [100..]
10:06:29 <lambdabot> [[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,2...
10:06:42 <Lymia> > zipWith (\x y -> [x..y]) [1..] [..1]
10:06:43 <lambdabot> <no location info>: parse error on input `..'
10:06:53 <Lymia> > zipWith (\x y -> [x..y]) [1..] [0..-inf]
10:06:54 <lambdabot> Not in scope: `inf'Not in scope: `..-'
10:06:58 <Lymia> > zipWith (\x y -> [x..y]) [1..] [0..-9999999999999999999999999999]
10:07:14 <Lymia> > zipWith (\x y -> [x..y^2]) [0..] [0..]
10:07:15 <lambdabot> [[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 <lambdabot> liftM f m1 = do { x1 <- m1; return (f x1) }
10:18:20 -!- Patashu has joined.
10:19:09 <Lymia> > zipWith (\x y -> [x/2..y^2]) [0..] [0..]
10:19:10 <lambdabot> [[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 <Lymia> > zipWith (\x y -> [x^0.5..y^2]) [0..] [0..]
10:19:30 <lambdabot> Ambiguous type variable `t' in the constraints:
10:19:48 <lambdabot> [(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:20:33 <Lymia> > zipWith (\x y -> [x**0.5..y**2]) [0..] [0..]
10:20:34 <lambdabot> forall a a1 b. (Floating a, Num a1, Integral b) => (a -> a -> a, a1 -> b -> a1)
10:20:35 <lambdabot> [[0.0],[1.0],[1.4142135623730951,2.414213562373095,3.414213562373095,4.4142...
10:20:42 <Lymia> Insta huge numbers.
10:26:23 <CakeProphet> > let plane = map (take 10 . repeat) in plane
10:26:24 <lambdabot> Overlapping instances for GHC.Show.Show ([a] -> [[a]])
10:26:55 <CakeProphet> > let plane = map (take 10 . repeat) $ take 10 (repeat 0) in plane
10:26:57 <lambdabot> [[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 <CakeProphet> > 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 <lambdabot> <no location info>: parse error on input `;'
10:31:28 <CakeProphet> > 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 <lambdabot> <no location info>: parse error on input `in'
10:32:03 -!- MigoMipo has quit (Read error: Connection reset by peer).
10:34:00 <CakeProphet> > 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 <lambdabot> <no location info>: parse error on input `-'
10:34:15 <CakeProphet> well, I'm going to bed now. Good night. :P
10:41:34 <lambdabot> Source not found. Take a stress pill and think things over.
10:41:41 <lambdabot> Data.Function fix :: (a -> a) -> a
10:41:56 <Vorpal> I guess that wasn't quite right
10:43:20 <Vorpal> Deewiant, is that a tuple?
10:43:48 <Vorpal> Deewiant, I thought tuples were special syntax.
10:43:57 <lambdabot> forall a b c. a -> b -> c -> (a, b, c)
10:44:35 <Deewiant> But GHC still defines them like that
10:44:56 <Vorpal> Deewiant, so ghc specific? or standard haskell?
10:45:11 <Deewiant> data (,) a b = (,) a b is GHC specific, I'm fairly sure
10:45:40 <Deewiant> So it could just be builtin in other environments
10:45:47 <Vorpal> but it seems to be included in Prelude yeah
10:46:07 <Deewiant> Well yes, (,) is guaranteed to exist and work
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:28:14 <Vorpal> "available frequency steps: 2.27 GHz, 2.27 GHz, 1.60 GHz, 800 MHz" <--- err, what? That looks wrong.
15:31:13 <fizzie> Maybe it's a rounding thing, and the two highest are, say, 2271 and 2270 MHz.
15:31:17 <fizzie> "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 <Vorpal> fizzie, 2271 and 2270 sounds silly.
15:32:14 <Vorpal> I doubt intel would add that to a mobile core 2 duo.
15:34:23 <Vorpal> well I don't know how to extract the info to verify the rounding thing
15:35:07 <Vorpal> $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
15:35:07 <Vorpal> 2267000 2266000 1600000 800000
15:35:12 <Vorpal> fizzie, looks like you were right
15:37:11 -!- malorie has left.
15:38:37 <fizzie> 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:38 <fizzie> Does your cpufreq-info report the stats in % of time spent in different modes? Which 2.27 GHz it uses?
15:39:48 <Vorpal> cpufreq stats: 2.27 GHz:18,01%, 2.27 GHz:1,58%, 1.60 GHz:2,29%, 800 MHz:78,12% (169038)
15:39:54 <Vorpal> 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 <Vorpal> for the different cores
15:40:21 <Vorpal> (what is that number in parens at the end?)
15:40:43 <Vorpal> fizzie, so it seems it uses both
15:41:18 <fizzie> 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 <fizzie> "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 <fizzie> 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:49:09 <lambdabot> Phantom_Hoover: You have 6 new messages. '/msg lambdabot @messages' to read them.
15:50:01 -!- azaq23 has quit (Quit: Leaving.).
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 <elliott> 02:12:21: <coppro> elliott__: I estimate 8% for me. Incidentally, do you know what the "the Doctor is being awesome" music is called?
16:33:26 <elliott> coppro: I think I did at one point but have now forgotten.
16:34:47 <elliott> 02:23:01: <CakeProphet> yes, if $_ were global terrible things would happen.
16:34:47 <elliott> 02:23:08: <CakeProphet> instead it's a weird pseudo-global thing.
16:34:50 <elliott> CakeProphet: it is just an "our"
16:35:28 <elliott> 02:27:21: <CakeProphet> !perl $s='q{q[q<q(q!q@q~q%q^q&q*muhahahahahahaha*&^%~@!)>]}';$s=eval$s for 1..11;print$s
16:35:29 <elliott> 02:27:22: <EgoBot> muhahahahahahaha
16:35:38 -!- Kustas has quit (Quit: restart).
16:37:38 -!- Kustas has joined.
16:37:49 <elliott> 02:55:03: <coppro> 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:38:47 <elliott> 03:59:12: <CakeProphet> future elliott: Good post-400 xkcd: http://xkcd.com/602/
16:38:47 <elliott> There are good post-400 xkcds but... this is not one of them.
16:38:51 -!- monqy has joined.
16:40:45 <elliott> 06:08:28: <Patashu> sbahj related http://www.youtube.com/watch?v=u7YfVmY9Qjs
16:41:26 <Sgeo> I finally successfully performed a Second Life experiment I've been wanting to do for a while
16:56:03 <coppro> 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
17:02:35 <elliott> Sgeo won't tell us what he experimented SOB
17:09:09 -!- MigoMipo has joined.
17:11:33 <Sgeo> Oh, sorry, was afk
17:11:58 <Sgeo> Experimented to determine whether or not gravity takes longer to take effect at higher altitudes. It does.
17:12:32 <Sgeo> Unless there's something else going on that I'm not realizing
17:12:44 <coppro> it doesn't take longer to take effect
17:12:56 <coppro> gravity is always taking effect
17:13:56 <Sgeo> 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
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 <Phantom_Hoover> 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 <oklopol> so one of the talks was about implementing boolean circuits by putting chloroform and grease inside an MRI machine
19:20:52 <oklopol> and i have this feeling that the woman got a tiny orgasm every time she said the word "unconventional"
19:22:22 <elliott> did A Universal Flying Amorphous Computer have anything interesting to say
19:22:36 <oklopol> 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:23:02 <elliott> would you like a hug oklopol you sound distressed
19:25:20 <oklopol> 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 <oklopol> (actually i don't remember when ppl learn to walk)
19:26:24 <oklopol> erm and that was about time machines if it was not clear for some reason
19:26:43 <olsner> time machines are like walking?
19:27:18 <oklopol> no, but the grandfather paradox is something 4-year-olds think about before they grow a brain
19:28:02 <oklopol> see i'm also so tired of saying i hate time travel that i have to make it interesting for myself
19:29:15 <oklopol> elliott: universal blah is on thursday
19:29:42 <Phantom_Hoover> The grandfather paradox is pretty stupid as a thing to think about.
19:30:06 <oklopol> 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:32 <oklopol> elliott and oerjan were here at least
19:30:38 <oklopol> in any case, I HAVE TOTALLY SOLVED IT NO
19:30:46 <oklopol> i wonder if that was a freudian slip
19:32:10 <oklopol> 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 <elliott> oklopol: omg raciest................
19:32:36 <oklopol> 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 <elliott> stop being a raciest omg.....................
19:33:33 <oklopol> 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 <oklopol> 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 <elliott> Phantom_Hoover: look at this raciesm...
19:34:34 <oklopol> 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 <oklopol> i proved NFA = FNFA in all dimensions
19:34:54 <elliott> oklopol: ur raciesm against blak people discusts me.........
19:34:57 <oklopol> in the sense that i haven't yet realized why my proof is wrong this time
19:36:16 <oklopol> for two dimensions, you can find the proof in my master's thesis, but i left dimensions above 2 open
19:36:29 <oklopol> because the proof refused to generalize
19:36:57 <oklopol> the feeling between coming up with the solution and realizing it's crap = <3
20:00:45 * Phantom_Hoover concludes that RobotRollCall is by now just an annoying power user.
20:01:41 <Phantom_Hoover> 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 <Phantom_Hoover> 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 <elliott> "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 <elliott> "Stuff doesn't blink out of existence, so that's, to put it bluntly, not an interesting question." --RobotRollCall
20:04:21 <Phantom_Hoover> She seems to take glee in crushing unrealistic hypotheticals.
20:04:23 -!- augur has joined.
20:04:38 <elliott> ARE YOU SURE YOU AREN'T JUST UPSET ABOUT YOUR OWN UNREALISTIC HYPOTHETICALS
20:04:57 <elliott> ">Okie doke, so let's say something accelerated the sun very quickly…
20:04:58 <elliott> No, let's not. Let's consider only things that are actually possible."
20:05:34 <elliott> It's linked by someone complaining about RRC at the top of your link.
20:07:32 -!- pikhq_ has joined.
20:09:57 -!- pikhq has quit (Ping timeout: 250 seconds).
20:15:06 <elliott> maybe I'll have to use IO for this
20:15:36 <elliott> it seems to be the only way to make it all work it right
20:15:42 <elliott> (unsafePerformIO causing problems? shock and horror)
20:16:47 <pikhq_> elliott: Where "this" == ?
20:17:20 <elliott> pikhq_: I'm working on an interning library
20:17:31 <elliott> so that e.g. you can do Scheme symbols with "Interned String"
20:17:44 <elliott> pikhq_: and it uses reallyUnsafePtrEquality# behind the scenes in the Eq instance
20:18:23 <pikhq_> ... That's frightening.
20:39:09 <coppro> what is an interning library?
20:39:58 -!- Rugxulo has joined.
20:40:37 <Rugxulo> I actually found Ben Olmstead's old Befunge-93 compiler (MCBC), but it doesn't work :-(
20:40:53 <Rugxulo> nevertheless, for any completist who wants a copy, get it here:
20:40:55 <Rugxulo> http://web.archive.org/web/20040221222300/http://www.mines.edu/students/b/bolmstea/mtfi/mcbc10.zip
20:43:02 <Rugxulo> 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:47:54 <Rugxulo> yes ... and BTW I never found the fabled "Betty" compiler that Wikipedia mentions
20:48:45 <Rugxulo> even BFC mentioned is long gone (though I once found a copy somewhere but forget where, some forum)
20:49:56 <Rugxulo> Chris Pressey did do a minor bugfix for his official BEF a few months ago too
20:50:37 <elliott> he comes here occasionally
20:50:47 -!- CakeProphet has quit (Ping timeout: 252 seconds).
20:50:54 <Rugxulo> I saw him in here once or twice, but that was rare (and before the refresh)
20:51:30 <elliott> 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:55:02 <elliott> > zip "abcd" [(),(),(),(),()]
20:55:03 <lambdabot> [('a',()),('b',()),('c',()),('d',())]
20:55:54 <elliott> > zip (map ("abcd"!!) [0,2..]) (map ("abcd"!!) [1,3..])
20:55:55 <lambdabot> [('a','b'),('c','d'),(*Exception: Prelude.(!!): index too large
20:56:00 <elliott> where's oerjan when you need 'im
21:03:31 <lambdabot> Test.QuickCheck two :: Monad m => m a -> m (a, a)
21:03:31 <lambdabot> Prelude zip :: [a] -> [b] -> [(a, b)]
21:03:31 <lambdabot> Data.List zip :: [a] -> [b] -> [(a, b)]
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:24:39 -!- Rugxulo has quit (Quit: ChatZilla 0.9.87 [Firefox 3.6.10/20101005225428]).
21:25:31 <elliott> I want "abcd" -> [('a','b'),('c','d')] but actually I need to handle the odd case too so basically never mind
21:36:04 <elliott> > zip ["la","le","li","lo","lu","ra","re","ri","ro","ro"] [0..]
21:36:05 <lambdabot> [("la",0),("le",1),("li",2),("lo",3),("lu",4),("ra",5),("re",6),("ri",7),("...
21:36:17 <elliott> ?pl \x y -> string x >> return y
21:36:29 <elliott> > zipWith ((. return) . (>>) . string) ["la","le","li","lo","lu","ra","re","ri","ro","ro"] [0..]
21:37:50 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds).
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 <CakeProphet> elliott: Yeah <open 0> doesn't work unfortunately because I don't believe open returns the filehandle it returns a success value.
21:59:14 <CakeProphet> 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:37 <elliott> Isn't the definition of our a dynamically local variable?
22:00:06 <CakeProphet> no our is a "shared package variable", which basically means it's dynamic global.
22:00:22 <elliott> "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 <elliott> Ah, so it's literally just a global variable
22:00:44 <elliott> 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 <oerjan> <elliott> where's oerjan when you need 'im
22:26:13 <oerjan> sipping his coffee in a restaurant
22:26:14 <elliott> yeah its fucking unacceptable
22:26:28 <elliott> oerjan: well lah-de-dah mister fancy
22:26:37 <elliott> if you're so rich then why don't you buy an ipad so you can always be bugged by me :|
22:26:53 <elliott> middle of the night, BEEP BEEP "oerjan i need haskell help"
22:28:08 <oerjan> > zip (map ("abcd"!!) [0,2..]) (map ("abcd"!!) [1,3..])
22:28:09 <lambdabot> [('a','b'),('c','d'),(*Exception: Prelude.(!!): index too large
22:28:21 <oerjan> > zip (map (cycle "abcd"!!) [0,2..]) (map (cycle "abcd"!!) [1,3..])
22:28:22 <lambdabot> [('a','b'),('c','d'),('a','b'),('c','d'),('a','b'),('c','d'),('a','b'),('c'...
22:28:23 <elliott> yeah, turns out I actually don't need that function :D
22:28:31 <elliott> digit = choice $ zipWith (>>) (map (try . string) digits) (map return [0..])
22:28:31 <elliott> where digits = ["la", "le", "li", "lo", "lu", "ra", "re", "ri", "ro", "ru"]
22:28:35 <elliott> would be nice if you could make that a bit less ugly
22:28:44 <elliott> oops did i just reveal what i'm writing :D
22:29:05 -!- CakeProp1et has joined.
22:29:27 <oerjan> is it that syl language?
22:29:49 <elliott> so I'm going to write the BEST SYL IMPLEMENTATION EVARRR
22:29:55 -!- CakeProp1et has quit (Client Quit).
22:30:07 <elliott> we're talking multiple backends, C FFI here
22:30:27 -!- CakeProphet has joined.
22:31:35 <oerjan> digit = choice [try (string d) >> return n | d <- digits | n <- [0..]]
22:31:53 <elliott> but... but you made it less point-free...
22:31:55 * oerjan has never tried that zip comprehension before
22:32:01 <elliott> also that should be a comma before n, not |
22:32:12 <oerjan> SOMETIMES LESS POINT-FREE IS BETTER
22:32:19 <elliott> integer = natural >>= liftA2 (<|>) ((string "hu" *>) . return . negate) return
22:32:23 <elliott> wanna de-ugly that too? :P
22:32:49 <oerjan> um no, i believe | is the syntax for the "zip these together" comprehension extension
22:33:08 <elliott> it might not be an extension any more what with haskell twentyten
22:33:58 <CakeProphet> the main problem I have with point-free is I can't READ ANYTHING.
22:34:14 <elliott> Illegal parallel list comprehension: use -XParallelListComp
22:34:20 <elliott> CakeProphet: that's your problem, not point-free's.
22:34:25 <elliott> or, well, sometimes it's the code's problem.
22:34:38 <olsner> not if the code is point-free, that is never wrong
22:34:39 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f b
22:34:47 <elliott> but, well, I can't read obfuscated perl, doesn't make perl a bad language :D
22:34:51 <elliott> where's olsner wher eyou need him
22:34:59 <elliott> but i ... forget what ... i ... was ... oh yes thats what
22:35:03 <oerjan> @hoogle f a -> b -> f b
22:35:03 <lambdabot> Control.Applicative (<$) :: Functor f => a -> f b -> f a
22:35:03 <lambdabot> Control.Applicative (*>) :: Applicative f => f a -> f b -> f b
22:35:03 <lambdabot> Prelude (>>) :: Monad m => m a -> m b -> m b
22:35:06 <elliott> olsner: bochs has some kind of interface to its console, right?
22:35:10 <elliott> so OS stuff can print debug to it
22:35:14 <CakeProphet> 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:21 <CakeProphet> elliott: a mess of very very concise code.
22:35:24 <elliott> CakeProphet: Let me rewrite what you said to actually be not wrong:
22:35:34 <elliott> CakeProphet: Point-free style, when misapplied, results in a mess.
22:35:41 <elliott> Perl, when misapplied, results in a mess.
22:36:15 <olsner> 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 <elliott> 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 <elliott> It's essentially a higher level of abstraction, just one that can be misapplied.
22:36:36 <oerjan> digit = choice . zipWith (<*) [0..] $ try . string <$> digits
22:36:39 <CakeProphet> 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 <olsner> > fix$(<$>)<$>(:)<*>((<$>((:[{- thor's mother -}])<$>))(=<<)<$>(*)<$>(*2))$1
22:37:03 <lambdabot> [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,...
22:37:47 <elliott> i kid, i haven't looked at yours
22:38:02 <elliott> oerjan: that's pretty nice
22:38:09 <elliott> right now I'm trying to make integer less ugly though, but I'll save that
22:38:30 <elliott> since the parallel comprehension is non-standard
22:38:57 <Vorpal> elliott, how goes the spec!!
22:39:11 <lambdabot> Prelude floatDigits :: RealFloat a => a -> Int
22:39:11 <lambdabot> Numeric floatToDigits :: RealFloat a => Integer -> a -> ([Int], Int)
22:39:18 <elliott> CakeProphet: digits is a local define.
22:39:43 <Vorpal> elliott, not well, there is a computer spec missing. And how are you?
22:40:09 <elliott> Vorpal: actually legitimately ill
22:40:24 <Vorpal> elliott, well then you have time for the spec now!
22:40:28 <elliott> YEAH NOW YOU FEEL BAD FOR MAKING FUN OF MY SITUATION ;_____;
22:40:38 <olsner> 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 <elliott> Vorpal: but what if the painkillers make me insane :/
22:40:54 <Vorpal> elliott, can they do that?
22:41:01 <elliott> Vorpal: i don't know, i'm too ill to think clearly
22:41:12 <oerjan> <elliott> integer = natural >>= liftA2 (<|>) ((string "hu" *>) . return . negate) return
22:41:49 <elliott> Vorpal: see, i'm writing crazy code like that
22:41:54 <elliott> clearly not sane right now
22:41:56 <Vorpal> elliott, well get off irc, and rest then
22:42:10 <Vorpal> elliott, that code looks fine to me. What is liftA2 though?
22:42:14 <Vorpal> I don't remember that one
22:42:16 <elliott> are you advising me to stay in bed all day and waste time, because that's... exactly what i'm doing
22:42:21 <lambdabot> Control.Applicative (*>) :: Applicative f => f a -> f b -> f b
22:42:22 <lambdabot> Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b
22:42:22 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b
22:42:25 <elliott> Vorpal: liftM2, but s/Monad/Applicative/
22:42:39 <Vorpal> elliott, and uh. <|> is?
22:43:04 <elliott> oerjan: your digit doesn't type
22:43:07 <CakeProphet> similar to a | in a regex or... many other things I don't remember the names of.
22:43:09 <Vorpal> oh right, that makes quite a lot of sense then
22:43:09 <elliott> Vorpal: actually the applicative choice thing too
22:43:29 <Vorpal> elliott, now what does it do?
22:43:35 <CakeProphet> ...applicative choice? I still need to learn the rest of Applicative.
22:43:38 <elliott> Vorpal: (<|>) :: Alternative f => f a -> f a -> f a
22:43:46 <elliott> CakeProphet: it's just a generalisation, pretty much
22:43:48 <Vorpal> elliott, no I meant the code in general
22:43:49 <elliott> CakeProphet: I hide Parsec's
22:43:59 <elliott> because the Alternative operator works on the Parsec monad too
22:44:01 <elliott> Vorpal: what it says on the tin
22:44:12 <Vorpal> elliott, meh, too tired to parse it atm
22:44:17 <CakeProphet> elliott: right, but does Applicative have a notion of success and failure like Parsec?
22:44:23 <oerjan> <CakeProphet> what is <*? <-- oh hm, elliott: s/<*/<$/
22:44:42 <elliott> CakeProphet: no, like I said, Alternative does
22:44:45 <lambdabot> class Applicative f => Alternative f where
22:45:31 <elliott> name = concat . many1 $ liftA2 (:) normalCons vowel
22:45:56 <lambdabot> Source not found. You type like i drive.
22:46:06 <elliott> CakeProphet: I actually think Alternative /is/ MonadPlus
22:46:21 <elliott> CakeProphet: it's just that a lot of the haskell library doesn't consider things above monads
22:46:27 <CakeProphet> elliott: for list it seems to be exactly the same.
22:46:39 <elliott> similarly, liftM2 is superfluous
22:46:46 <elliott> but we haven't had Applicatives as long as monads
22:46:48 <oerjan> elliott: concat <$> up there
22:46:50 <elliott> thus why all this stuff is duplicated
22:47:13 <elliott> Couldn't match expected type `[Char]' with actual type `Char'
22:47:13 <elliott> String () Data.Functor.Identity.Identity [Char]
22:47:21 <lambdabot> forall a b (f :: * -> *). (Functor f) => b -> f a -> f b
22:47:26 <lambdabot> forall a (f :: * -> *) b. (Functor f) => a -> f b -> f a
22:47:40 <Vorpal> at least the type is the same
22:47:54 <CakeProphet> according to the documentation it's the same thing.
22:47:58 <Vorpal> elliott, come on, (+) and (-) have the same type, don't they?
22:48:09 <elliott> what's the name of the principle that lets you derive facts from types
22:48:15 <elliott> what's the name of the principle that lets you derive facts from types
22:48:27 <elliott> because I think we could deduce that (fmap . const) and (<$) are the same by just the types
22:48:27 <Vorpal> elliott, now we know that multiplication is addition! :P
22:48:32 <oerjan> elliott: parametricity
22:48:48 <elliott> I have a hunch it would work here
22:49:00 <oerjan> and i think it applies to fmap.const = (<$)
22:49:05 <elliott> let's see ... (a -> f b -> f a)
22:49:25 <oerjan> at least assuming a Functor instance respecting the laws
22:49:27 <olsner> I think you can make more functions of the same type by using undefined
22:49:30 <elliott> because that's the only way to get an f thing
22:49:39 <elliott> and the only (a -> b) here is const
22:49:41 <elliott> since we can't inspect our a
22:49:50 <CakeProphet> Ah there's an instance for MonadPlus m => Alternative (WrappedMonad m)
22:49:53 <elliott> so yeah, there is only one function of the type (a -> f b -> f a)
22:50:22 <oerjan> olsner: yeah basic parametricity only works for terminating functions, although there is some research on adding non-termination and seq
22:50:24 <Vorpal> elliott, unless you involve bottom I think?
22:50:31 <elliott> Vorpal: yeah yeah, those aren't real functions
22:50:34 <elliott> total function, if you will, whatever
22:50:41 <oerjan> (it's a feature of System F lambda calculus)
22:50:42 <elliott> name = concat <$> many1 (liftA2 (\x y -> [x,y]) normalCons vowel)
22:50:47 <lambdabot> forall (f :: * -> *) a. (Alternative f) => f a -> f [a]
22:51:21 <Vorpal> wtf is the t. in seq's type?
22:51:21 <lambdabot> No instance for (GHC.Show.Show (f [t]))
22:51:21 <lambdabot> arising from a use of `M76367029...
22:51:37 <Vorpal> elliott, why couldn't they say so :P
22:51:40 <olsner> Vorpal: it's a type variable
22:51:51 <Vorpal> elliott, the forall is implicit
22:51:52 <elliott> seq :: a -> b -> b -- from GHCi
22:51:59 <elliott> Vorpal: <lambdabot> forall a t. a -> t -> t
22:51:59 -!- variable has quit (Remote host closed the connection).
22:52:05 <elliott> note that ghci actually omits all top-level foralls
22:52:12 <elliott> because they can be unambiguously abbreviated
22:52:13 <oerjan> elliott: sequence [normalCons, vowel]
22:52:16 <elliott> (and this is in haskell itself)
22:52:33 -!- variable has joined.
22:53:13 <oklopol> "<elliott> 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 <oerjan> 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:33 <lambdabot> No instance for (GHC.Show.Show (f [a]))
22:53:33 <lambdabot> arising from a use of `M19706092...
22:53:40 <lambdabot> forall a (f :: * -> *). (Applicative f) => f [a]
22:54:15 <elliott> oerjan: well, it's easy to prove "by hand"
22:54:28 <elliott> oklopol: sure, but we're considering point-free style a language here, not a style
22:54:51 <elliott> oklopol: i.e. the general point is "~(there are unreadable examples of X -> X is unreadable)"
22:55:12 <CakeProphet> uh, sure, once you learn everything. Might as well say anything is easy.
22:55:55 <CakeProphet> eh. I don't feel like making language comparisons today.
22:56:11 <oklopol> "<elliott> oklopol: sure, but we're considering point-free style a language here, not a style" <<< hmm okay accepted
22:57:14 <CakeProphet> 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 <monqy> what's not so much about it
22:58:14 <olsner> maybe it just isn't a lot
22:59:03 <oklopol> CakeProphet just got owned
22:59:40 <CakeProphet> more like: CakeProphet just got interpretted literally!
23:00:59 <oklopol> whatever you say slave boy :|
23:02:47 <CakeProphet> > let x = (:) <$> Nothing <*> y; y = x <|> pure [] in x
23:03:06 <CakeProphet> > let x = (:) <$> Maybe 5 <*> y; y = x <|> pure [] in x
23:03:06 <lambdabot> Not in scope: data constructor `Maybe'
23:03:12 <CakeProphet> > let x = (:) <$> Just 5 <*> y; y = x <|> pure [] in x
23:03:57 <lambdabot> forall (f :: * -> *) a. (Alternative f) => f a -> f [a]
23:04:50 <elliott> > fmap (take 9) (some (Just 9))
23:04:51 <oerjan> <elliott> note that ghci actually omits all top-level foralls <-- there's a flag for that
23:05:00 <elliott> oerjan: but it's desirable :P
23:05:06 <elliott> at least for confused beginners
23:05:33 <CakeProphet> 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 <elliott> well this is lambdabot and Maybe, both of which are contrived
23:05:56 <elliott> what are some and many even meant for, anyway?
23:06:08 <lambdabot> forall (f :: * -> *) a. (Alternative f) => f a -> f [a]
23:06:21 <oerjan> <CakeProphet> > 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:08:01 <lambdabot> forall a (f :: * -> *). (Num a, Applicative f, Num (f a)) => f a
23:09:02 <olsner> grr, windows sends mousewheel events to the focused window, not to the window under the cursor
23:09:20 <lambdabot> Overlapping instances for GHC.Show.Show ((a -> b) -> b)
23:09:27 <elliott> you can scroll background windows in Windows, can't you?
23:09:36 <elliott> I think the top window gets a chance to /handle/ it
23:09:40 <elliott> but if it declines it bubbles downwards
23:09:52 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
23:10:31 <CakeProphet> excellent. I can now obfuscate arithmetic.
23:11:10 <olsner> elliott: hmm, however the mechanism, the effect is that the wrong window scrolls :)
23:11:49 <lambdabot> forall (f :: * -> *) a. (Alternative f) => f a -> f [a]
23:11:52 <lambdabot> forall (f :: * -> *) a. (Alternative f) => f a -> f [a]
23:11:58 <olsner> (can you run SC2 in linux somehow? that would eliminate all my windows problems)
23:12:00 <CakeProphet> > let x = (:) <$> Maybe 5 <*> y; y = x <|> pure [] in x
23:12:01 <lambdabot> Not in scope: data constructor `Maybe'
23:12:29 <elliott> CakeProphet: i asked olsner.
23:12:43 <elliott> olsner: http://appdb.winehq.org/objectManager.php?sClass=version&iId=20882
23:13:26 <oerjan> oh it's just some v = v <|> many v
23:15:23 <olsner> elliott: cool, looks like there is some chance of success then!
23:15:24 <CakeProphet> I know it can in the discrete case, since list is a monad, but what about in the continuous case?
23:16:12 <lambdabot> Source not found. Do you think like you type?
23:16:55 <CakeProphet> http://www.haskell.org/ghc/docs/6.12.1/html/libraries/base/src/Control-Applicative.html#Alternative
23:17:33 <elliott> CakeProphet: functions are monads, yes
23:17:45 <elliott> I'm not sure if you can analogise the function monad instance to the list instance. oerjan?
23:18:03 <oerjan> ah indeed it was right
23:18:22 <elliott> oerjan: <CakeProphet> can a time-varying signal be a monad? <CakeProphet> I know it can in the discrete case, since list is a monad, but what about in the continuous case?
23:18:29 <elliott> type DiscreteSignal t = [t]
23:18:33 <elliott> type ContinuousSignal t = Time -> t
23:18:37 <elliott> where Time is a real, conceptually
23:18:53 <elliott> 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 <oerjan> indeed the >>= definitions don't correspond much
23:20:19 <oerjan> iirc the -> monad _is_ analogous to the ZipWith monad
23:20:49 <CakeProphet> that might be useful, but I don't know how the ZipWith monad works.
23:21:10 <oerjan> well i'm not sure it's defined in the library, even
23:21:24 <lambdabot> No instance for (GHC.Show.Show (Control.Applicative.ZipList t))
23:21:33 <elliott> newtype ZipList a = ZipList { getZipList :: [a] }
23:21:33 <elliott> instance Functor ZipList where
23:21:33 <elliott> fmap f (ZipList xs) = ZipList (map f xs)
23:21:55 <oerjan> WHY THE FUCK DIDN'T THEY ADD A SHOW INSTANCE
23:22:27 <elliott> pure x = ZipList (repeat x)
23:22:29 <elliott> indeed, looks like a function ;D
23:23:00 <elliott> 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 <oerjan> well ZipLists can be finite
23:23:39 <oerjan> but otherwise, that's essentially what i recall discovering
23:24:38 <elliott> oerjan: no they can't, if you don't have the constructor
23:24:40 <oerjan> > getZipList $ ZipList [1,2,3] >>= \n -> ZipList [4,5,6]
23:24:40 <lambdabot> No instance for (GHC.Base.Monad Control.Applicative.ZipList)
23:24:45 <elliott> pure results in an infinite list
23:24:54 <elliott> so there's no way to get a finite list
23:24:57 <oerjan> elliott: erm you cannot construct id
23:25:03 <oerjan> only constant functions
23:25:25 <elliott> oerjan: hmm, can't you with <*>?
23:25:51 <oerjan> how? both arguments are repeats
23:25:53 <elliott> > let foo n = pure n <*> foo (succ n) in foo 0 :: ZipList Integer
23:26:03 <elliott> > let foo n = pure n <*> foo (n+9) in getZipList (foo 0)
23:26:21 <elliott> > let foo n = pure (const n) <*> foo (n+9) in getZipList (foo 0)
23:27:16 <oerjan> > getZipList (pure (const 1) <*> pure undefined)
23:27:16 <lambdabot> [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 <oerjan> since it cannot _look_ at undefined, it cannot distinguish pure undefined from anything else
23:28:40 <oerjan> and your recursion is going in the wrong _direction_, you aren't actually moving _along_ the list
23:29:23 <CakeProphet> 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 <elliott> CakeProphet: have you been paying attention?
23:29:48 <elliott> there is more than one list monad
23:29:54 <elliott> and one of them acts like functions
23:30:16 <CakeProphet> 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 <oerjan> 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:34 <elliott> oerjan: same with Monad I think
23:35:18 <oerjan> <elliott> integer = natural >>= liftA2 (<|>) ((string "hu" *>) . return . negate) return
23:35:36 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f b
23:36:09 <oerjan> :t ((?p *>) . return . negate)
23:36:09 <lambdabot> forall (f :: * -> *) a b. (?p::f a, Applicative f, Monad f, Num b) => b -> f b
23:36:59 <oerjan> CakeProphet: dynamic scoped variable
23:37:22 <elliott> dammit Maharba respond quickly ;D
23:37:28 <oerjan> useful for getting types out of lambdabot without needing to add \p -> to everything
23:38:25 <elliott> 05:30:23: <RodgerTheGreat> 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 <elliott> 05:31:04: <RodgerTheGreat> Many diseases, conditions and other types of deviations work like this.
23:38:25 <elliott> irc user rodgerthegreat proves abnormality of homosexuality, news at eleven
23:38:46 <lambdabot> Control.Applicative optional :: Alternative f => f a -> f (Maybe a)
23:38:47 <lambdabot> Text.Parsec.Combinator optional :: Stream s m t => ParsecT s u m a -> ParsecT s u m ()
23:38:47 <lambdabot> Text.ParserCombinators.ReadP optional :: ReadP a -> ReadP ()
23:40:24 <oerjan> @hoogle f a -> f (a -> b) -> f b
23:40:25 <lambdabot> Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b
23:40:25 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b
23:40:25 <lambdabot> Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b
23:40:51 <lambdabot> The operator `Control.Applicative.<**>' [infixl 4] of a section
23:41:00 <lambdabot> The operator `GHC.Base.>>=' [infixl 1] of a section
23:41:47 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
23:41:51 <elliott> presumably it's an error correction then
23:42:58 <elliott> 06:04:40: <RodgerTheGreat> 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 <elliott> has rodgerthegreat ever actually said anything that's true? i'm honestly curious
23:43:21 <oerjan> elliott: integer = natural <**> choice [negate <$ string "hu", return id]
23:45:11 <CakeProphet> elliott: obviously roger doesn't know how Haskell works.
23:45:22 <lambdabot> The operator `Control.Applicative.<|>' [infixl 3] of a section
23:45:44 <oerjan> elliott: i guess <|> rather than choice suffices
23:45:59 <elliott> integer = natural <**> (negate <$ string "hu" <|> return id)
23:46:14 <lambdabot> The operator `GHC.Base.<$' [infixl 4] of a section
23:46:51 <oerjan> remembering precedence does get a bit hairy
23:46:58 <lambdabot> [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:43 <oerjan> <elliott> presumably it's an error correction then <-- iirc...
23:47:55 <lambdabot> echo; msg:IrcMessage {msgServer = "freenode", msgLBName = "lambdabot", msgPrefix = "elliott!~elliott@unaffiliated/elliott", msgCommand = "PRIVMSG", msgParams = ["#esoteric",":?echo ("]} rest:"("
23:48:00 <oerjan> ?info do x <- test; f x
23:48:47 <oerjan> CakeProphet: <$ is 4, so binds tighter than <|> at 3
23:49:14 <oerjan> CakeProphet: note that's the point of my > (0$0 ...) tests above
23:49:34 <oerjan> string "hu" is a Parsec parser which parser precisely that string
23:50:01 <CakeProphet> so what on earth is that <$ doing to String "hu"
23:50:19 <oerjan> elliott: hm i just realized... does string do try internally?
23:50:44 <CakeProphet> oerjan: yeah I believe it backtracks on failure.
23:50:47 <oerjan> CakeProphet: it's throwing away the monadic result (which is just "hu" iirc) and replacing it by the negate function
23:50:56 <elliott> I had to use (try . string) in digit
23:50:57 <elliott> integer = natural <**> (negate <$ try (string "hu") <|> return id)
23:52:51 <oerjan> 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 <oerjan> so you have to be careful to use try if you have multiple possible parses starting with the same character
23:53:51 <elliott> that's conventional, not strange, isn't it :)
23:54:23 <oerjan> i don't know if that's conventional, LALR(1) parsers certainly don't do that...
23:54:31 <elliott> well for combinator parsers
23:55:04 <oerjan> although i saw a brief discussion of the matter after the recent attoparsec fiasco on reddit
23:55:40 <CakeProphet> so when <*> and friends apply to Parsec they don't change the matching behavior only the result?
23:55:43 <elliott> that's where i picked up the opinion that it was conventional ;D
23:56:05 <oerjan> CakeProphet: yep. that's sort of the essence of Applicative combinators, they can only modify results
23:56:41 <CakeProphet> 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 <oerjan> CakeProphet: of course
23:58:07 <oerjan> <**> is the same as liftA2 (flip ($)) iiuc
23:58:26 <CakeProphet> ah, based on the type I thought it was flip (<*>)
23:58:56 <lambdabot> Source not found. Where did you learn to type?
23:59:00 <oerjan> oh i hope not, as that's would make it useless...
23:59:10 <oerjan> CakeProphet: Applicative method
23:59:14 <lambdabot> class Functor f => Applicative f where