←2011-06-05 2011-06-06 2011-06-07→ ↑2011 ↑all
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:00:47 <oklopol> yes
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:20 <oerjan> no.
00:02:37 <elliott__> oklopol: wat xD
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:20 <elliott__> its about three bagpipes long
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:03:54 <CakeProphet> or possibly even designing esolangs.
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:13 <elliott__> oerjan: is this really valid...
00:06:18 * elliott__ looks at this article WOW this article sucks
00:06:26 <elliott__> Can we delete it, it really sucks
00:06:33 <elliott__> oh wait cpressey started it ;D
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:08:51 <elliott__> oerjan: you don't say.
00:09:05 * oklopol likes math
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:10:26 <elliott__> oerjan: rude non-/msg-replier :(
00:10:30 * elliott__ feels rejected
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:12 <elliott__> i say everything in /msg
00:12:16 <elliott__> i would have said that in /msg
00:12:20 <elliott__> but i'd have to send it to everyone present
00:12:23 <elliott__> and that would be a lot of work.
00:12:24 <elliott__> oklopol: rabies.
00:12:39 <oklopol> hmm
00:12:50 <elliott__> <elliott__> so oerjan, dem rabies
00:12:52 <elliott__> <elliott__> oerjan
00:12:53 <elliott__> <elliott__> oerjan respond
00:12:54 <elliott__> <elliott__> please
00:12:55 <elliott__> <elliott__> he;lp
00:12:57 <elliott__> <elliott__> rabies??
00:13:00 <elliott__> oklopol: log
00:13:38 <oerjan> <oerjan> well i'm sorry but once you are showing symbols it's too late anyhow
00:13:45 <oerjan> <oerjan> *symptoms
00:14:00 <oklopol> is that true?
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:14:46 <oklopol> which all look the same
00:14:48 <coppro> flus
00:15:02 <oklopol> yeah not a typo
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:18:40 <elliott__> get it
00:18:42 <elliott__> rabies-free bitch
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:19:51 <oklopol> :D
00:19:58 <elliott__> :D
00:20:28 <oklopol> one of the speakers has a proof of P=NP
00:20:36 <oerjan> you're in a conference?
00:20:43 <oklopol> yeah starts in 6h
00:21:04 <elliott__> <oerjan> [FUMING JEALOUSY]
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:21:42 <elliott__> oklopol: so are you a master yet
00:21:51 <oklopol> err yes, ages ago
00:22:01 <elliott__> i don't keep track of the lovelifes of famous bisexuals oklopol
00:22:06 <elliott__> don't expect me to know
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:22:44 <elliott__> good protocol
00:22:58 <oerjan> most excellent
00:23:01 <elliott__> oklopol: you can write normally??
00:23:03 <elliott__> so weird dude
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:25 <elliott__> say yes
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:23:53 <elliott__> it looks nothing like you.
00:24:20 <elliott__> oklopol: lol they gave you a master's for this?
00:24:26 <elliott__> wow they must just be really kind
00:24:28 <elliott__> to a retard idiot
00:24:29 <elliott__> like you
00:24:30 <elliott__> lmao this sucks
00:24:33 <elliott__> am i hurting your feelings yet
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 <elliott__> lol if you say so noob
00:25:20 <oklopol> oerjan: lol thought you meant obvious error in the second paragraph of my abstract :D
00:25:24 <elliott__> lol
00:25:26 <elliott__> did you scramble to check
00:25:30 <elliott__> "NOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"
00:25:35 <elliott__> oklopol: so when are you a phd
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:43 <oklopol> and other random stuff
00:32:54 <elliott__> 15:30–16:00Coffee
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:18 <oklopol> W. Stevens
00:33:34 <oklopol> A Universal Flying Amorphous Computer
00:33:34 <oklopol> L. Petru, J. Wiedermann
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:09 <elliott__> :D
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:36:57 <oklopol> ->
00:37:29 <elliott__> damn where is olsner whne you don't need him
00:37:58 <oerjan> sweding around like swedes do
00:38:25 <elliott__> Proof. Obviously
00:38:25 <elliott__> 2
00:38:25 <elliott__> log 2n = n2 > n log a = log an
00:38:25 <elliott__> for large enough n.
00:38:27 <elliott__> oklopol: obviously your mom
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:40:16 <oklopol> yeah umm
00:40:32 <oklopol> lol
00:42:31 <oklopol> right the 2 on the line above should be the exponent of n
00:42:33 <elliott__> oklopol: like me say
00:43:27 <oklopol> argh ->
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:44:36 <elliott__> oklopol: COQ LOL
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:32 <oklopol> argh ->
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:04 <CakeProphet> well, yes.
00:46:12 <oklopol> you do that in a phd and in an article
00:46:15 <CakeProphet> maybe not with proofs.
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:24 <elliott__> 20:38:31: <ehird`> subprograms?
00:47:24 <elliott__> 20:40:58: <oerjan> blimps
00:47:32 <oklopol> argh ->
00:47:38 <elliott__> the coining of the terioerioeioroeioioireoriooioerioermoinologiiiiiiiiiiiiiiiiiiiiojdfg
00:48:17 <oerjan> impressive keyboard
00:48:28 <oklopol> "<CakeProphet> maybe not with proofs." what else is there
00:48:41 <CakeProphet> *formal proofs
00:49:01 <oklopol> i have to ->
00:49:03 <oklopol> ashsthsry'
00:49:45 <CakeProphet> you have to, imply?
00:50:48 <CakeProphet> I often feel that <->
00:56:19 <oerjan> baby, feel that equivalence
00:57:55 <CakeProphet> that's an interesting way to view biconditionality.
00:58:15 <elliott__> who tf calls it biconditionality
00:58:35 <CakeProphet> the concept of being biconditional? I do.
00:58:45 <elliott__> well biconditional i guess but it's the same thing as equivalence :)
01:00:02 <CakeProphet> <-> = =?
01:00:09 <oerjan> it's a congruence relation, if you take its quotient you get a boolean algebra
01:00:10 <CakeProphet> er, insert logical equivalence sign.
01:00:41 <CakeProphet> what is the quotient of a relation?
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:08 <oerjan> *respects
01:02:19 <CakeProphet> so the quotient is the set where the relation is true?
01:02:31 <oerjan> um no
01:02:55 <oerjan> the quotient is a set whose elements are the equivalence classes of the relation
01:03:20 <CakeProphet> ah.
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:41 <CakeProphet> basically what they are.
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:09:32 <CakeProphet> ah okay.
01:10:05 -!- Lymia has joined.
01:10:06 -!- Lymia has quit (Changing host).
01:10:06 -!- Lymia has joined.
01:10:34 <oerjan> Lymia: YOUR IP WAS HANGING OUT
01:11:04 <Lymia> ^_^'
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:21 <oerjan> yep.
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:17:03 <CakeProphet> I think...
01:17:04 <oerjan> yeah
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:11 <oerjan> precisely
01:18:11 <CakeProphet> and taking that as your resulting set.
01:18:29 * CakeProphet scratches head.
01:18:29 <elliott__> <Lymia> DMZ points at my dad's computer. Who cares.
01:18:40 <elliott__> be careful, dprk has nukes
01:18:46 <Lymia> :(
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:44 <CakeProphet> oerjan: hmmm, well... how is C defined?
01:19:59 <oerjan> C needs to be a whole equivalence class
01:20:06 <CakeProphet> right.
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:02 <CakeProphet> ah okay.
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:22:54 <CakeProphet> well
01:22:57 <CakeProphet> not any subset. :P
01:23:01 <CakeProphet> there is one that you can't use.
01:23:20 <oerjan> you don't say.
01:24:31 <CakeProphet> my discrete math teacher was incorrect. He seemed to use equivalence class as a synonym for equivalence relation.
01:25:06 <oerjan> oops
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:26:18 <oerjan> huh
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:07 <elliott__> probably bottom :P
01:28:10 <CakeProphet> probably not so great.
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:28:56 <elliott__> or the ... mean
01:29:06 <CakeProphet> ..the mode? :P
01:29:10 <CakeProphet> THE MOST COMMON UNIVERSITY.
01:29:10 <elliott__> yes.
01:29:23 <elliott__> THE RANGE
01:29:26 <elliott__> this makes sense
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:29:51 <elliott__> coppro: so does your mom
01:29:55 <elliott__> OHHH SNAPE
01:30:10 <CakeProphet> coppro: yep, I just read about that on Wikipedia actually. :D
01:30:17 <CakeProphet> and.. inferred it.
01:30:25 <CakeProphet> from what oerjan told me.
01:30:40 <CakeProphet> using my MIIIND.
01:30:45 <coppro> lies
01:30:52 <coppro> all evidence points to you not having one
01:30:59 <CakeProphet> :( nonsense.
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:07 <Patashu> !show lperl
01:32:08 <EgoBot> ​perl while(<>){s/ (?<!\\) \*\{ (.*?) (?!\\) \}\* /$1/gxee;print}
01:32:23 <Patashu> so wait it does what?
01:32:35 <elliott__> evals perl code in {}
01:32:36 <CakeProphet> evaluates Perl between *{}*'s
01:32:37 <CakeProphet> yep
01:32:44 <elliott__> {{}} is nicer
01:32:51 <CakeProphet> originally it was {{ but that would make balancing issues arise
01:33:04 <CakeProphet> unless I, you know, accounted for that.
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:33:30 <CakeProphet> er...
01:33:37 <CakeProphet> DON'T COPY NEWLINE
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:35:59 <CakeProphet> !delinterp lperl
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:06 <EgoBot> ​This is a 3.
01:37:36 <CakeProphet> yes, it's a 3.
01:37:47 <elliott__> coppro: She's a blatant Mary Sue whose entire basis is "OOH, MYSTERIOUS FUTURE COMPANION PERSON, BE VERY MYSTERISED"
01:38:34 <CakeProphet> !lperl also a \{{test}}
01:38:34 <EgoBot> ​also a \{{test}}
01:38:46 <elliott__> !lperl also a \{{{x
01:38:46 <EgoBot> ​also a \{{{x
01:38:48 <elliott__> !lperl also a \{{{x}}
01:38:48 <EgoBot> ​also a \{x
01:38:52 <elliott__> fail
01:38:59 <oerjan> fianna fail
01:39:03 <CakeProphet> ...not really. :P
01:39:07 <elliott__> yes it is
01:39:10 <elliott__> \{{ <-- escaped
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:39:57 <CakeProphet> it's {\{{x}}
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:45:09 <coppro> lol
01:46:18 <CakeProphet> !delinterp lperl
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:29 <CakeProphet> !lperl a \{{test}}
01:46:29 <EgoBot> ​a {{test}}
01:46:31 <elliott__> CakeProphet: you realise {{"{{"}} works to escape
01:46:48 <CakeProphet> ...no?
01:46:49 <elliott__> you could even define two subs that return "{{" and "}}" with short names
01:46:52 <elliott__> CakeProphet: yes?
01:46:57 <CakeProphet> oh, right.
01:47:09 <CakeProphet> NOPE. too late.
01:47:17 <elliott__> !delinterp lperl
01:47:17 <EgoBot> ​Interpreter lperl deleted.
01:47:23 <elliott__> wait hm
01:47:26 <elliott__> i'm too lazy to fix it
01:47:28 <elliott__> !addinterp lperl perl while(<>){s/ (?<!\\) \{\{ (.*?) \}\} (?!\})/$1/gxee;s/\\{/{/g;print}
01:47:29 <EgoBot> ​Interpreter lperl installed.
01:47:29 <CakeProphet> rofl.
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:05 <CakeProphet> I cherish Perl for its readability.
01:48:41 <CakeProphet> !delinterp lperl
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 <CakeProphet> !delinterp lperl
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:33 <CakeProphet> !lperl {{'test'}}
01:55:33 <EgoBot> ​test
01:55:38 -!- sebbu2 has joined.
01:55:38 <CakeProphet> golfed. :D
01:55:47 <elliott__> ok, I'm seriously ill
01:55:52 <elliott__> CakeProphet: what's with "ee"
01:55:54 -!- variable has joined.
01:55:56 <elliott__> i should go to bed now
01:55:58 <elliott__> and, also, i will
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:56:49 <elliott__> ouch
01:56:53 <elliott__> can it go to eee?
01:57:00 <CakeProphet> uh... I don't actually know.
01:57:03 <elliott__> MWAHAHAHA
01:57:05 <CakeProphet> I don't think so.
01:57:09 <CakeProphet> at least it's not documented.
01:58:33 -!- sebbu has quit (Ping timeout: 240 seconds).
01:59:57 <CakeProphet> `run echo '$_=<>;s/{{(.*?)}}(?!})/$1/gee;print' | wc -c
01:59:59 <HackEgo> ​36
02:00:02 <CakeProphet> awww yeah.
02:01:13 <elliott__> ok
02:01:14 <elliott__> sleep
02:01:15 <elliott__> really
02:01:15 <elliott__> sleep
02:01:16 <elliott__> sleep
02:01:16 <elliott__> sleep
02:01:21 <CakeProphet> DO IT
02:01:26 <elliott__> SLEEP
02:01:32 -!- elliott__ has quit (Quit: FUUUUUUUUUUUUUUUUUUUCK YOUUUUUUUUUUUUUUUUUU).
02:01:57 <oerjan> !perl $_ = "hm..."; s/hm/"'1+2'"/e; print;
02:01:57 <EgoBot> ​'1+2'...
02:02:03 <oerjan> !perl $_ = "hm..."; s/hm/"'1+2'"/ee; print;
02:02:03 <EgoBot> ​1+2...
02:02:07 <oerjan> !perl $_ = "hm..."; s/hm/"'1+2'"/eee; print;
02:02:07 <EgoBot> ​3...
02:02:10 <CakeProphet> hahaha
02:02:11 <CakeProphet> nice
02:02:19 <CakeProphet> you can stack an arbitrary number of e's
02:03:26 <CakeProphet> !perl $_ = "hm..."; s/hm/"'q{1+2}'"/eeee; print;
02:03:26 <EgoBot> ​3...
02:03:42 <CakeProphet> !perl $_ = "hm..."; s/hm/"'q{q[q<1+2>]}'"/eeeeee; print;
02:03:43 <EgoBot> ​3...
02:04:03 <oerjan> !perl $_ = "hm..."; s/hm/"'q{q[q<1+2>]}'"/eeeee; print;
02:04:03 <EgoBot> ​1+2...
02:04:14 <Lymia> !perl $_ = "hm..."; s/hm/"'q{1+2}'"/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee; print;
02:04:15 <EgoBot> ​3...
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:15 <EgoBot> ​...
02:05:35 <CakeProphet> hmm, yeah I don't know where standard input is going.
02:05:35 -!- calamari has left ("Leaving").
02:05:48 <CakeProphet> probably to.... standard input
02:05:53 <oerjan> Lymia: bad ' matching i think
02:05:55 <CakeProphet> er
02:05:56 <CakeProphet> output
02:06:00 <CakeProphet> oh, that too
02:06:02 <CakeProphet> use more q's
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:37 <EgoBot> ​...
02:06:37 <CakeProphet> oerjan: yeah
02:06:42 <Lymia> So what is this?
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:25 <CakeProphet> !perl '\''
02:07:29 <CakeProphet> !perl print '\''
02:07:29 <EgoBot> ​'
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:07:58 <EgoBot> ​...
02:08:25 <CakeProphet> !perl print q#possibly even pound sign?#
02:08:25 <EgoBot> ​possibly even pound sign?
02:08:32 <oerjan> Lymia: i think the \ get stripped already at the " stage
02:08:44 <CakeProphet> Lymia: just use more q's :P
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:07 <EgoBot> ​print 'perverse'...
02:09:11 <Lymia> !perl $_ = "hm..."; s/hm/"'q{q{q{print \\'perverse\\'}}}'"/eeeeee; print;
02:09:12 <EgoBot> ​perverse1...
02:09:18 <CakeProphet> SUCCESS
02:09:22 <Lymia> Perl is inane.
02:09:22 <CakeProphet> as indicated by the 1
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 <CakeProphet> !perl q{q[q<q(q*q
02:10:33 <EgoBot> ​Can't find string terminator "}" anywhere before EOF at /tmp/input.17755 line 1.
02:10:39 <CakeProphet> ..
02:10:43 <CakeProphet> oops I hit enter. :P
02:10:57 <oerjan> suuuure...
02:11:46 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)).
02:12:06 -!- rodgort has joined.
02:12:21 <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:12:53 <CakeProphet> oerjan: "" is qq
02:13:06 <oerjan> oh hm
02:13:19 <CakeProphet> q is '', and yes those forms are abbreviations of the more general form.
02:13:23 <CakeProphet> whatever that even means.
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:45 <CakeProphet> yeah it does. like in m and s
02:14:54 <oerjan> !perl $_ = "test"; s'test'$1'; print;
02:14:55 <EgoBot> ​$1
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:15:31 <CakeProphet> yeah I don't know why that's not working.
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:20 <CakeProphet> ...heh
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:26 <Lymia> :[
02:16:31 <CakeProphet> so q$ might do weird things.
02:16:32 <oerjan> CakeProphet: erm sure you didn't get other lines in DCC?
02:16:43 <CakeProphet> oerjan: I did not.
02:16:46 <CakeProphet> it only prints once.
02:16:58 <CakeProphet> the for is attached to the $_=eval
02:17:16 <oerjan> hm
02:17:24 <CakeProphet> !perl print qq'$0'
02:17:25 <EgoBot> ​/tmp/input.18472
02:17:27 <oerjan> !perl print "a" for 1..10;
02:17:27 <EgoBot> ​aaaaaaaaaa
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:38 <CakeProphet> yeah I'm stumped. :P
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:19:28 <CakeProphet> because of special variables.
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:20:59 <CakeProphet> ...yeah. no fucking idea.
02:21:19 <oerjan> erm
02:21:21 <CakeProphet> my guess is that it has something to do with horrid abuve of quote-like operators.
02:21:39 <CakeProphet> *abuse
02:21:51 <oerjan> what variable is the for 1..11 construct using? >:)
02:21:59 <CakeProphet> ...
02:22:08 <CakeProphet> looool
02:22:21 <oerjan> except
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:43 <CakeProphet> yes
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:08 <CakeProphet> instead it's a weird pseudo-global thing.
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:38 <CakeProphet> it's parsing the @q as an array variable
02:24:45 <Patashu> lol wtf are you guys doing
02:24:53 <CakeProphet> Patashu: fun with Perl.
02:26:02 <oerjan> CakeProphet: leave off the outer "
02:26:25 <CakeProphet> ....ah
02:26:28 <CakeProphet> or change it to ''
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:02 <oerjan> ya got a qq in there
02:27:07 <CakeProphet> ...oh
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:22 <EgoBot> ​muhahahahahahaha
02:27:48 <CakeProphet> we got the evil genius at the delicious quoted core.
02:28:32 <oerjan> sealed evil in a can
02:29:22 <CakeProphet> !perl open 0; print <0>
02:29:22 <EgoBot> ​open 0; print <0>
02:29:33 <CakeProphet> such a strange thing..
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:37:34 <CakeProphet> 0 is a valid filehandle name, apparently.
02:37:42 <CakeProphet> and $0 is the program name.
02:40:05 <Patashu> you guys know of any esoteric logic gates?
02:40:09 <Patashu> or esoteric circuitry
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:44:00 <CakeProphet> esoteric circuitry? not really..
02:44:14 <CakeProphet> a quine circuit would be interesting.
02:44:25 <CakeProphet> ..but I don't even know what that means.
02:44:39 <CakeProphet> outputs its schematic as a bitmap?
02:45:35 <CakeProphet> sounds impossible.
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:48 <CakeProphet> postscript, for printing. :)
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:57:31 <CakeProphet> awww yeah musical tesla coils.
02:58:49 <coppro> those things are awesome
02:58:50 <coppro> and loud
02:58:51 <coppro> and 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:36 <coppro> yeah
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:27 <CakeProphet> this Tesla was an awesome dude.
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:34:25 <oklopol> i slept lolol !
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:52:20 <oklopol> haha
05:52:38 <oklopol> should be subset of A^2
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:30 <coppro> spaces of what sort?
06:33:46 <coppro> also what school is this?
06:35:19 <CakeProphet> coppro: the topological variety.
06:36:09 -!- Sgeo has quit (Ping timeout: 250 seconds).
06:36:10 <CakeProphet> http://en.wikipedia.org/wiki/SPSU
06:36:15 <CakeProphet> coppro: one you've never heard of
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:21 <coppro> hah
06:52:29 <coppro> you americans and your tuition
06:53:10 <CakeProphet> yes, and our debt.
06:53:17 <CakeProphet> and our debt to pay for tuition...
06:53:37 <CakeProphet> why? Because people flip the fuck out if you raise taxes.
06:53:57 <coppro> ayup
06:54:07 <coppro> and don't understand economics
06:54:08 <coppro> at all
06:54:10 <CakeProphet> ...not at all
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:54:55 <CakeProphet> indeed
06:55:08 <CakeProphet> the states have way too much deficit though.
06:56:01 <coppro> now, structural deficits suck balls
06:56:19 <CakeProphet> coppro: from where do you hail?
06:56:24 <coppro> CakeProphet: Canadia
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:01 <coppro> yeah
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:12 <coppro> *hole
06:59:25 <coppro> you effectively have to cut taxes
06:59:29 <coppro> or borrow a shitton of money
06:59:38 <CakeProphet> already got that covered...
06:59:43 <coppro> err not cut taxes
06:59:45 <coppro> cut spending
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:10 <coppro> it's not
07:00:11 <CakeProphet> ...true.
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:12 <coppro> a lot
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:01:48 <CakeProphet> coppro: yes.
07:01:53 <CakeProphet> military spending is ridiculous.
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:04:38 <coppro> yup
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:19 <coppro> hyperinflation whee
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:09:46 <CakeProphet> :P
07:10:05 <CakeProphet> honestly it seems like a better option than having congress fumbling everything.
07:10:08 <coppro> probably
07:10:46 <CakeProphet> coppro: unless people rioted and whatnot.
07:10:58 <CakeProphet> which, is not out of the question.
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:13:50 <CakeProphet> *witnessed
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:14:58 <CakeProphet> right.
07:15:05 <coppro> I mean, they exist
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:05 <coppro> sure there is
07:20:07 <coppro> it costs money
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:23:26 <CakeProphet> coppro: what do you do for a living?
07:24:03 <CakeProphet> !show dechatspeak
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:40 <CakeProphet> or just have the memory of a goldfish.
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:24:58 <CakeProphet> oh yeah
07:25:02 <CakeProphet> I missed it.
07:25:22 <CakeProphet> uh.. Google? :P
07:25:25 <coppro> yes
07:25:30 <CakeProphet> oh, nice.
07:25:34 <CakeProphet> how'd you manage that.
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:01 <coppro> (clang)
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:26:36 <coppro> we have cookies
07:26:40 <CakeProphet> ooooh
07:27:15 <CakeProphet> coppro: what open source project?
07:27:19 <coppro> clang
07:27:23 <CakeProphet> ...oh
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:27:47 <CakeProphet> I'm sure.
07:28:01 -!- Guest56111 has left ("Leaving.").
07:28:03 <CakeProphet> same with Southern Poly compared to Georgia Tech.
07:28:13 <coppro> what's your tuition?
07:28:21 <CakeProphet> ......uh. lol
07:28:29 <CakeProphet> I prefer not to think about it when I can.
07:28:58 <CakeProphet> $3872 per year
07:29:02 <CakeProphet> apparently...
07:29:36 <coppro> that's absurdly cheap
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:45 <CakeProphet> basically you pick 2 out of 8 sub-tracks.
07:30:47 <coppro> ah
07:30:54 <coppro> ah yeah we have some programs like that here
07:30:57 <CakeProphet> and that determines your requirements.
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:33:12 <CakeProphet> it is, but my GPA kind of requires it.
07:33:17 <coppro> ah
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 <CakeProphet> !show dechatspeak
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:26 <CakeProphet> ...I cannot spot the error in this.
07:36:47 <CakeProphet> !dechatspeak lol hey guys y u mad?
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:37:43 <CakeProphet> ...oh wait. I see it, haha.
07:37:58 <CakeProphet> my program got cut off.
07:38:27 <CakeProphet> !delinterp dechatspea
07:38:27 <EgoBot> ​That interpreter doesn't exist!
07:38:29 <CakeProphet> !delinterp dechatspeak
07:38:29 <EgoBot> ​Interpreter dechatspeak deleted.
07:38:44 <CakeProphet> !languages
07:38:47 <CakeProphet> !help languages
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 <CakeProphet> !show lperl
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:41:27 <CakeProphet> !lsh Hello, {{echo 'world!'}}
07:41:27 <EgoBot> ​Hello, world!
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:22 <EgoBot> ​hiiiiiiiiyou suck
07:46:23 <Lymia> :c
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:46:58 <EgoBot> ​hi
07:47:02 <CakeProphet> lol
07:47:12 <CakeProphet> Lymia: have you been learning any Perl?
07:47:16 <Lymia> Nope.
07:47:30 <CakeProphet> it was either you or Patashu that was interested in learning it.
07:47:34 <CakeProphet> can't recall.
07:47:43 <Lymia> !bfjoust [[+-]+]
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:06 <CakeProphet> ...
07:49:09 <HackEgo> ​37
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:46 <Lymia> oh
07:49:48 <Lymia> missed the echo
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:52:12 <CakeProphet> after all of this Perl hacking.
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:56:39 <CakeProphet> :3
07:57:02 <pikhq> Damn you, EgoBot, for being the voice of reason.
07:57:11 <CakeProphet> it's 3:57 here
07:59:36 -!- monqy has quit (Quit: hello).
08:00:32 <coppro> pikhq: nah
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:06:27 <CakeProphet> .. :)
08:06:53 <coppro> lol
08:06:55 <CakeProphet> ....obviously it is very late.
08:06:59 <coppro> yes
08:07:00 <coppro> yes it is
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:11 <CakeProphet> !rot13 test test
08:10:12 <EgoBot> ​grfg grfg
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:11:17 <coppro> which is annoying
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:13:53 <coppro> Noted
08:14:00 <CakeProphet> !addinterp rot47 perl $_=<>;tr/!-~/P-~!-O/;print
08:14:00 <EgoBot> ​Interpreter rot47 installed.
08:14:12 <CakeProphet> !rot47 testing I am a ninja !@#$%^&*)
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:05 <CakeProphet> yeah!..
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 <CakeProphet> !rot47 E6DE:?8 x 2> 2 ?:?;2 PoRST/UYX
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:07 <coppro> e.g. isupper
08:17:19 <pikhq> Ah.
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:52 <CakeProphet> fun times.
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:19 <coppro> pikhq: yeah
08:19:30 <pikhq> As is everything to do with the char type, TBH.
08:19:33 <coppro> yup
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:19:59 <pikhq> It's *global*?
08:20:03 <coppro> pikhq: In C, yes
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:39 <coppro> POSIX saves us though
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:41 <coppro> it fucking sucks
08:22:46 <CakeProphet> pikhq: ah, right.
08:22:52 <pikhq> coppro: Yes, I know. But still...
08:23:03 <CakeProphet> I mean..
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:23:41 <pikhq> That sounds good.
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:24:38 <coppro> I didn't realize this
08:25:14 <CakeProphet> Haskell for systems programming. \o/
08:25:15 <myndzi> |
08:25:15 <myndzi> /|
08:25:32 <CakeProphet> ...with a new Prelude, of course
08:25:47 <CakeProphet> fixing all numeric typeclasses and that length-returning-an-Int crap
08:30:07 <CakeProphet> haha. or Erlang.
08:30:17 <CakeProphet> it can apparently run standalone.
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:42 <coppro> Erlang needs a VM
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:02 <coppro> yeah
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:35:27 <coppro> yeah
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:00 <pikhq> ... Wut.
08:50:13 <pikhq> The population of Manhattan was *decreased* in the past 100 years.
08:50:28 <pikhq> s/was/has/
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...
08:54:27 <pikhq> Still. damn.
09:05:15 <CakeProphet> http://en.wikipedia.org/wiki/Moutza
09:05:19 <CakeProphet> how offensive.
09:41:59 -!- Vorpal has joined.
09:57:49 <CakeProphet> > [1..] >>= return
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:20 <Lymia> > [1..]
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:36 <lambdabot> against inferred type `[...
10:02:57 <Lymia> @type zipWith
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:06:59 <lambdabot> Not in scope: `..-'
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 <CakeProphet> @src liftM
10:16:49 <lambdabot> liftM f m1 = do { x1 <- m1; return (f x1) }
10:17:55 <CakeProphet> liftM = (return.)
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:30 <lambdabot> `GHC.Real.Integral t'
10:19:30 <lambdabot> ...
10:19:47 <CakeProphet> > liftM2 (,) [0..10] [0..10]
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:19:56 <CakeProphet> Lymia: might want to try ** instead of ^
10:20:02 <CakeProphet> ** is for floating point numbers.
10:20:33 <CakeProphet> :t ((**),(^))
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:39 <Lymia> Yay.
10:20:42 <Lymia> Insta huge numbers.
10:20:49 <CakeProphet> ...wooo
10:21:24 <CakeProphet> liftM2 (,) is instant cartesian product.
10:21:29 <CakeProphet> so useful in programming of course.
10:23:06 <CakeProphet> @src on
10:23:07 <lambdabot> (*) `on` f = \x y -> f x * f y
10:24:00 <CakeProphet> @src ap
10:24:00 <lambdabot> ap = liftM2 id
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:24 <lambdabot> arising from a us...
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:31:48 <CakeProphet> uh, okay.
10:32:03 -!- MigoMipo has quit (Read error: Connection reset by peer).
10:32:53 <Deewiant> s/ in plane//
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:34:30 <Deewiant> s/- >/->/
10:41:17 <Vorpal> :t (,)
10:41:18 <lambdabot> forall a b. a -> b -> (a, b)
10:41:25 <Vorpal> oh
10:41:34 <Vorpal> @src (,)
10:41:34 <lambdabot> Source not found. Take a stress pill and think things over.
10:41:40 <Vorpal> @hoogle (,)
10:41:41 <lambdabot> Prelude undefined :: a
10:41:41 <lambdabot> Test.QuickCheck.Batch bottom :: a
10:41:41 <lambdabot> Data.Function fix :: (a -> a) -> a
10:41:47 <Vorpal> hm
10:41:56 <Vorpal> I guess that wasn't quite right
10:43:05 <Deewiant> data (,) a b = (,) a b
10:43:20 <Vorpal> Deewiant, is that a tuple?
10:43:25 <Deewiant> Yes
10:43:28 <Vorpal> aha
10:43:48 <Vorpal> Deewiant, I thought tuples were special syntax.
10:43:51 <Vorpal> or hm
10:43:56 <Vorpal> :t (,,)
10:43:57 <lambdabot> forall a b c. a -> b -> c -> (a, b, c)
10:44:02 <Vorpal> heh, I guess not
10:44:20 <Deewiant> They are, somewhat
10:44:35 <Deewiant> But GHC still defines them like that
10:44:39 <Vorpal> hm
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:15 <Vorpal> ah okay
10:45:29 <Deewiant> Yeah, it's in GHC.Tuple
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:46:22 <Vorpal> ah
10:49:12 -!- pikhq has quit (Ping timeout: 248 seconds).
10:49:22 -!- pikhq has joined.
11:36:22 -!- foocraft has joined.
11:40:37 -!- TOGoS has quit (Read error: Connection reset by peer).
11:45:00 -!- TOGoS has joined.
12:02:54 -!- SimonRC has quit (Ping timeout: 260 seconds).
12:10:20 -!- SimonRC has joined.
12:32:33 -!- foocraft has quit (Ping timeout: 252 seconds).
12:55:40 -!- Demetrius has joined.
12:56:53 -!- FireFly has joined.
13:02:10 -!- foocraft has joined.
13:18:20 -!- invariable has joined.
13:19:29 -!- invariable has quit (Remote host closed the connection).
13:20:00 -!- ralc has joined.
13:20:18 -!- variable has quit (Remote host closed the connection).
13:20:51 -!- variable has joined.
13:21:07 -!- Patashu has quit (Ping timeout: 246 seconds).
13:32:49 -!- Sgeo has joined.
13:36:19 -!- foocraft has quit (Ping timeout: 255 seconds).
13:37:12 -!- Deewiant has quit (Ping timeout: 248 seconds).
13:38:26 -!- Deewiant has joined.
13:50:14 -!- foocraft has joined.
14:00:05 -!- TOGoS has left.
14:46:30 -!- azaq23 has joined.
15:21:37 -!- Sgeo has quit (Ping timeout: 255 seconds).
15:23:13 <oklopol> oerjan: hi
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:05 <Vorpal> as in pointless
15:32:14 <Vorpal> I doubt intel would add that to a mobile core 2 duo.
15:32:18 <Vorpal> but hm
15:34:23 <Vorpal> well I don't know how to extract the info to verify the rounding thing
15:35:01 <Vorpal> aha, found it
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:35:24 <Vorpal> I wonder why though
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:04 <Vorpal> hm
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:51 <Vorpal> and
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:48:49 <Demetrius> Phantom_Hoover, hello!
15:49:09 <Phantom_Hoover> Hello Demetrius.
15:49:09 <lambdabot> Phantom_Hoover: You have 6 new messages. '/msg lambdabot @messages' to read them.
15:49:12 <Phantom_Hoover> Oh god
15:49:17 <Phantom_Hoover> How can he even
15:49:21 <Phantom_Hoover> There wasn't an update
15:50:01 -!- azaq23 has quit (Quit: Leaving.).
16:01:11 <Vorpal> fizzie, heh
16:04:17 -!- Sgeo has joined.
16:04:52 -!- Kustas has joined.
16:06:49 -!- comex has joined.
16:10:04 -!- pikhq_ has joined.
16:10:13 -!- pikhq has quit (Ping timeout: 260 seconds).
16:19:35 -!- elliott has joined.
16:33:21 <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:34:52 <elliott> dynamic variable
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:30 <elliott> lovely
16:35:38 -!- Kustas has quit (Quit: restart).
16:36:08 <elliott> !perl print <open 0>
16:36:09 <EgoBot> ​open0
16:36:18 <elliott> !perl print open 0,<0>
16:36:28 <elliott> !perl print open 0 . <0>
16:36:28 <EgoBot> ​1
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:37:50 <elliott> god yes
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:40:45 <elliott> heh
16:41:26 <Sgeo> I finally successfully performed a Second Life experiment I've been wanting to do for a while
16:51:54 <Phantom_Hoover> <Sgeo> I have created... LIFE!
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
16:56:17 <monqy> third life
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:36 <coppro> lolwut
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
17:14:08 <coppro> ah
17:21:09 <elliott> lol coppro
18:06:11 -!- augur has quit (Remote host closed the connection).
18:11:36 -!- elliott has quit (Remote host closed the connection).
18:13:33 -!- augur has joined.
18:13:59 -!- Kustas has quit (Quit: over and out).
18:15:29 -!- elliott has joined.
18:24:41 -!- augur has quit (Remote host closed the connection).
18:26:37 -!- augur has joined.
18:32:21 -!- wareya has quit (Read error: Connection reset by peer).
18:32:55 -!- wareya has joined.
18:33:46 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds).
18:36:00 -!- Phantom_Hoover has joined.
18:45:08 -!- augur has quit (Remote host closed the connection).
18:52:31 -!- olsner has joined.
19:02:27 <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:30 <elliott> ;)
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:22:49 <elliott> :D
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:29:47 <elliott> hey oklopol
19:29:51 <elliott> time travel is awesome
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:21 <elliott> rtjiog
19:30:25 <Phantom_Hoover> No.
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:38 <oklopol> W
19:30:45 <Phantom_Hoover> WHAT IS IT
19:30:46 <oklopol> i wonder if that was a freudian slip
19:30:48 <elliott> i solved ur mom
19:31:35 <elliott> i killed a
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:00 <elliott> ": /"
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:26 <Phantom_Hoover> elliott, it is so racyy.
19:34:28 <Phantom_Hoover> *racy
19:34:33 <elliott> [asterisk]racyy
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:34:59 <oklopol> :)
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
19:37:40 <elliott> you're a shit
19:37:42 <elliott> :)
19:38:28 <oklopol> im shit? :(
19:38:57 <elliott> sorry
20:00:45 * Phantom_Hoover concludes that RobotRollCall is by now just an annoying power user.
20:00:56 <elliott> why
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:08 <Phantom_Hoover> See what I mean?
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:39 <Phantom_Hoover> elliott, link to that one?
20:04:47 <Phantom_Hoover> And no, because she didn't do it to me.
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:02 <elliott> OK she's an asshole.
20:05:09 <Phantom_Hoover> She is.
20:05:19 <Phantom_Hoover> Linklinklink so I can try to take her apart for this.
20:05:34 <elliott> It's linked by someone complaining about RRC at the top of your link.
20:05:36 <elliott> You can find it.
20:07:32 -!- pikhq_ has joined.
20:09:57 -!- pikhq has quit (Ping timeout: 250 seconds).
20:15:02 <elliott> hmm
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:18:43 <elliott> your mom is frightening
20:33:19 <coppro> interning library?
20:38:34 <elliott> coppro: what?
20:38:44 <Phantom_Hoover> Interned in a library.
20:39:09 <coppro> what is an interning library?
20:39:32 <Phantom_Hoover> A library for interning people in.
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:41:00 <Rugxulo> just FYI
20:42:10 <Phantom_Hoover> And with that you will be back into the night?
20:42:24 <Rugxulo> ;-)
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:46:59 <elliott> we should mirror that
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:40 <Phantom_Hoover> It was too awesome for this world.
20:49:56 <Rugxulo> Chris Pressey did do a minor bugfix for his official BEF a few months ago too
20:50:34 <elliott> yeah
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:21 <elliott> 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:52:56 <Rugxulo> BEF refresh, bugfix
20:54:24 <elliott> ah
20:54:31 <elliott> > zip "abcd" "bcd"
20:54:33 <lambdabot> [('a','b'),('b','c'),('c','d')]
20:54:39 <elliott> > zip "abcd" "cd"
20:54:40 <lambdabot> [('a','c'),('b','d')]
20:54:45 <elliott> hmph
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
20:56:15 <elliott> ?pl \x y -> x:y:[]
20:56:15 <lambdabot> (. return) . (:)
21:03:31 <elliott> ?hoogle [a] -> [(a,a)]
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:03:48 <elliott> hmm
21:04:31 -!- Demetrius has quit (Quit: gnite!).
21:10:15 -!- Patashu has joined.
21:14:23 -!- CakeProphet has quit (Ping timeout: 240 seconds).
21:16:09 -!- CakeProphet has joined.
21:16:09 -!- CakeProphet has quit (Changing host).
21:16:10 -!- CakeProphet has joined.
21:22:17 <pikhq_> !pl \x->(x,x)
21:22:28 <pikhq_> ?pl \x->(x,x)
21:22:29 <lambdabot> join (,)
21:22:32 <pikhq_> Also, yeah.
21:24:39 -!- Rugxulo has quit (Quit: ChatZilla 0.9.87 [Firefox 3.6.10/20101005225428]).
21:25:15 <elliott> pikhq_: no that's not it
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:18 <lambdabot> (. return) . (>>) . string
21:36:29 <elliott> > zipWith ((. return) . (>>) . string) ["la","le","li","lo","lu","ra","re","ri","ro","ro"] [0..]
21:36:30 <lambdabot> Not in scope: `string'
21:36:56 <elliott> ?pl \x y -> x >> return y
21:36:57 <lambdabot> (. return) . (>>)
21:37:50 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds).
21:38:18 <elliott> ?pl \x y -> (x*10) +y
21:38:18 <lambdabot> (+) . (10 *)
21:47:13 -!- CakeProphet has quit (Ping timeout: 246 seconds).
21:49:07 -!- CakeProphet has joined.
21:49:08 -!- CakeProphet has quit (Changing host).
21:49:08 -!- CakeProphet has joined.
21:53:31 -!- Patashu has quit (Ping timeout: 250 seconds).
21:58:32 <CakeProphet> elliott: Yeah <open 0> doesn't work unfortunately because I don't believe open returns the filehandle it returns a success value.
21:58:51 <elliott> yeah
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:25 <CakeProphet> I think dynamic.
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:18 <elliott> he should be hanged
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:42 <elliott> WHEREVER YOU GO
22:26:53 <elliott> middle of the night, BEEP BEEP "oerjan i need haskell help"
22:27:02 <oerjan> i'm not rich.
22:27:14 <elliott> shaddap
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 :: Parser Integer
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:17 <oerjan> huh
22:29:26 <elliott> huh?
22:29:27 <oerjan> is it that syl language?
22:29:39 <elliott> yeah; I am bored
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:02 <elliott> no?
22:32:12 <oerjan> SOMETIMES LESS POINT-FREE IS BETTER
22:32:19 <elliott> integer = natural >>= liftA2 (<|>) ((string "hu" *>) . return . negate) return
22:32:20 <CakeProphet> oerjan: I agree entirely.
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:32:53 <elliott> ah
22:33:08 <elliott> it might not be an extension any more what with haskell twentyten
22:33:09 <oerjan> oh well hm
22:33:16 <oerjan> point-free
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:15 <elliott> :(
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:38 <oerjan> :t (*>)
22:34:39 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f b
22:34:45 <oerjan> :t ($>)
22:34:45 <lambdabot> Not in scope: `$>'
22:34:47 <elliott> but, well, I can't read obfuscated perl, doesn't make perl a bad language :D
22:34:49 <elliott> oh hey
22:34:49 <oerjan> :t (>$)
22:34:50 <lambdabot> Not in scope: `>$'
22:34:51 <elliott> where's olsner wher eyou need him
22:34:52 <oerjan> bah
22:34:53 <elliott> the answer -- RIGHT HERE
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:15 <oerjan> hm
22:35:21 <CakeProphet> elliott: a mess of very very concise code.
22:35:23 <CakeProphet> :P
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:36 <elliott> Similarly:
22:35:41 <elliott> Perl, when misapplied, results in a mess.
22:35:50 <CakeProphet> ..sure.
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:21 <elliott> olsner: beautiful
22:37:32 <oerjan> elliott: ^ better?
22:37:37 <elliott> no, but olsner's is
22:37:45 <oerjan> :(
22:37:47 <elliott> i kid, i haven't looked at yours
22:37:48 <elliott> i will now
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:17 <elliott> actually I'll use it
22:38:30 <elliott> since the parallel comprehension is non-standard
22:38:55 <CakeProphet> :t digits
22:38:55 <lambdabot> Not in scope: `digits'
22:38:57 <Vorpal> elliott, how goes the spec!!
22:39:00 <CakeProphet> ah, Parsec.
22:39:08 <elliott> Vorpal: hi bro
22:39:11 <CakeProphet> @hoogle digits
22:39:11 <lambdabot> Prelude floatDigits :: RealFloat a => a -> Int
22:39:11 <lambdabot> Numeric floatToDigits :: RealFloat a => Integer -> a -> ([Int], Int)
22:39:11 <lambdabot> Numeric lexDigits :: ReadS String
22:39:18 <Vorpal> elliott, hallo!
22:39:18 <elliott> CakeProphet: digits is a local define.
22:39:21 <elliott> Vorpal: sup
22:39:25 <CakeProphet> elliott: ..oh, nevermind then.
22:39:43 <Vorpal> elliott, not well, there is a computer spec missing. And how are you?
22:39:58 <Vorpal> not feeling*
22:40:09 <elliott> Vorpal: actually legitimately ill
22:40:14 <Vorpal> elliott, ouch
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:49 <CakeProphet> what is <*?
22:40:54 <Vorpal> elliott, can they do that?
22:40:56 <elliott> olsner: heh, noice
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:48 <Vorpal> elliott, ouch
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 <CakeProphet> @hoogle (*>)
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:29 <Vorpal> elliott, ah
22:42:39 <Vorpal> elliott, and uh. <|> is?
22:42:46 <CakeProphet> I believe Parsec's choice operator.
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:13 <Vorpal> ah
22:43:17 <Vorpal> even more sense
22:43:27 <elliott> erm, Alternative rather
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 <elliott> ?src Alternative
22:44:45 <lambdabot> class Applicative f => Alternative f where
22:44:46 <lambdabot> empty :: f a
22:44:46 <lambdabot> (<|>) :: f a -> f a -> f a
22:44:56 <elliott> > [9,0] <|> [0,9] -- hmm
22:44:57 <lambdabot> [9,0,0,9]
22:44:59 <elliott> right
22:45:04 <elliott> (think list monad)
22:45:18 <elliott> oerjan: yay, works
22:45:25 <CakeProphet> ah okay.
22:45:31 <elliott> name :: Parser String
22:45:31 <elliott> name = concat . many1 $ liftA2 (:) normalCons vowel
22:45:32 <elliott> alas this doesn't
22:45:35 <elliott> for obvious reasons
22:45:40 <elliott> ?pl \x y -> [x,y]
22:45:40 <lambdabot> (. return) . (:)
22:45:42 <elliott> sigh
22:45:49 <CakeProphet> elliott: looks very much like MonadPlus
22:45:55 <elliott> ?src MonadPlus
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:08 <elliott> yeah, it is
22:46:09 <Vorpal> what an insult
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:31 <elliott> it is the same, always
22:46:39 <elliott> similarly, liftM2 is superfluous
22:46:42 <elliott> it's the same as liftA2
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:03 <CakeProphet> ah so <$ is fmap.const
22:47:13 <elliott> Couldn't match expected type `[Char]' with actual type `Char'
22:47:13 <elliott> Expected type: ParsecT
22:47:13 <elliott> String () Data.Functor.Identity.Identity [Char]
22:47:20 <elliott> :t fmap.const
22:47:21 <lambdabot> forall a b (f :: * -> *). (Functor f) => b -> f a -> f b
22:47:24 <elliott> :t (<$)
22:47:26 <lambdabot> forall a (f :: * -> *) b. (Functor f) => a -> f b -> f a
22:47:30 <elliott> yep
22:47:40 <Vorpal> at least the type is the same
22:47:50 <elliott> Vorpal: same thing :)
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:47:59 <oerjan> yeah
22:48:06 <Vorpal> :t (-)
22:48:08 <lambdabot> forall a. (Num a) => a -> a -> a
22:48:09 <Vorpal> :t (+)
22:48:09 <elliott> what's the name of the principle that lets you derive facts from types
22:48:10 <lambdabot> forall a. (Num a) => a -> a -> a
22:48:11 <Vorpal> :t (*)
22:48:12 <lambdabot> forall a. (Num a) => a -> a -> a
22:48:13 <Vorpal> see
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 <elliott> or well hm
22:48:32 <oerjan> elliott: parametricity
22:48:35 <elliott> ?src Functor
22:48:35 <lambdabot> class Functor f where
22:48:35 <lambdabot> fmap :: (a -> b) -> f a -> f b
22:48:43 <elliott> yeah
22:48:48 <elliott> I have a hunch it would work here
22:48:59 <Vorpal> okay
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:16 <elliott> yeah
22:49:18 <elliott> it has to look like
22:49:25 <oerjan> at least assuming a Functor instance respecting the laws
22:49:25 <elliott> \a b -> fmap _ b
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:43 <Vorpal> :t seq
22:50:44 <elliott> oerjan: so agley :(
22:50:44 <lambdabot> forall a t. a -> t -> t
22:50:46 <Vorpal> :t id
22:50:46 <CakeProphet> :t many
22:50:47 <lambdabot> forall (f :: * -> *) a. (Alternative f) => f a -> f [a]
22:50:47 <lambdabot> forall a. a -> a
22:50:50 <Vorpal> hm
22:51:01 <CakeProphet> > many [1]
22:51:04 <lambdabot> mueval-core: Time limit exceeded
22:51:10 <oerjan> heh
22:51:12 <CakeProphet> :)
22:51:20 <elliott> > many (return 9)
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:25 <elliott> > many (Just 9)
22:51:27 <elliott> Vorpal: "forall a t."
22:51:28 <lambdabot> mueval-core: Time limit exceeded
22:51:31 <Vorpal> elliott, *oh*
22:51:37 <Vorpal> elliott, why couldn't they say so :P
22:51:40 <olsner> Vorpal: it's a type variable
22:51:42 <elliott> Vorpal: what?
22:51:44 <elliott> it does
22:51:51 <Vorpal> elliott, the forall is implicit
22:51:52 <elliott> seq :: a -> b -> b -- from GHCi
22:51:54 <Vorpal> wait no
22:51:58 <Vorpal> I fail at reading
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:02 <Vorpal> wake me up
22:52:05 <elliott> note that ghci actually omits all top-level foralls
22:52:11 <Vorpal> ah right
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:17 <elliott> oerjan: oh nice
22:52:18 <Vorpal> :t undefined
22:52:19 <lambdabot> forall a. a
22:52:33 -!- variable has joined.
22:52:57 <Vorpal> night →
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:32 <CakeProphet> > pure []
22:53:33 <lambdabot> No instance for (GHC.Show.Show (f [a]))
22:53:33 <lambdabot> arising from a use of `M19706092...
22:53:39 <CakeProphet> :t pure []
22:53:40 <lambdabot> forall a (f :: * -> *). (Applicative f) => f [a]
22:54:08 <elliott> oerjan: right
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:33 <CakeProphet> jesus Haskell code can be confusing...
22:54:40 <monqy> haskell is easy
22:54:51 <elliott> oklopol: i.e. the general point is "~(there are unreadable examples of X -> X is unreadable)"
22:55:04 <elliott> > pure 9 :: [Integer]
22:55:06 <lambdabot> [9]
22:55:12 <CakeProphet> uh, sure, once you learn everything. Might as well say anything is easy.
22:55:24 <elliott> haskell is easier than C
22:55:41 <monqy> what elliott said
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:20 <CakeProphet> uh, if you say so.
22:59:21 <oklopol> owned like a nigger!
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:02:48 <lambdabot> Nothing
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:15 <lambdabot> mueval-core: Time limit exceeded
23:03:25 <CakeProphet> er.. what.
23:03:43 <CakeProphet> Why does that return Nothing.
23:03:49 <CakeProphet> > some Nothing
23:03:50 <lambdabot> Nothing
23:03:56 <CakeProphet> :t some
23:03:57 <lambdabot> forall (f :: * -> *) a. (Alternative f) => f a -> f [a]
23:04:00 <CakeProphet> ah
23:04:02 <CakeProphet> f [a]
23:04:38 <elliott> > some (Just 9)
23:04:42 <lambdabot> mueval-core: Time limit exceeded
23:04:49 <CakeProphet> strict evaluation?
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:04:54 <lambdabot> mueval-core: Time limit exceeded
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:48 <elliott> > some [9]
23:05:52 <lambdabot> mueval-core: Time limit exceeded
23:05:56 <elliott> what are some and many even meant for, anyway?
23:05:57 <CakeProphet> same thing..
23:05:58 <elliott> I haven't checked
23:06:07 <CakeProphet> :t some
23:06:08 <lambdabot> forall (f :: * -> *) a. (Alternative f) => f a -> f [a]
23:06:12 <CakeProphet> Alternative
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:06:28 <CakeProphet> oerjan: right.
23:08:00 <CakeProphet> :t pure (*3) <*> 5
23:08:01 <lambdabot> forall a (f :: * -> *). (Num a, Applicative f, Num (f a)) => f a
23:08:20 <CakeProphet> heh.
23:08:35 <CakeProphet> might be useful for Signal t :)
23:09:02 <olsner> grr, windows sends mousewheel events to the focused window, not to the window under the cursor
23:09:19 <CakeProphet> > (*3) <*> 5
23:09:20 <lambdabot> Overlapping instances for GHC.Show.Show ((a -> b) -> b)
23:09:20 <lambdabot> arising from a u...
23:09:22 <elliott> olsner: huh? surely not
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 <CakeProphet> > ((*3) <*> 5) (+)
23:09:52 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
23:09:53 <lambdabot> arising from a use of `...
23:10:19 <CakeProphet> > ((*3) <*> 5) (-3)
23:10:20 <lambdabot> -9
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:16 <CakeProphet> > ((*3) <*> 5) (-4)
23:11:16 <lambdabot> -12
23:11:28 <oerjan> > many "a"
23:11:32 <lambdabot> mueval-core: Time limit exceeded
23:11:40 <oerjan> wtf
23:11:48 <oerjan> :t many
23:11:49 <lambdabot> forall (f :: * -> *) a. (Alternative f) => f a -> f [a]
23:11:50 <CakeProphet> the src for many is:
23:11:51 <oerjan> :t some
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:06 <CakeProphet> replace Maybe 5 with your parameter
23:12:18 <elliott> olsner: expand SC2
23:12:24 <CakeProphet> Starcraft 2
23:12:29 <elliott> CakeProphet: i asked olsner.
23:12:29 <olsner> yes, starcraft 2
23:12:35 <oerjan> ah yes
23:12:36 <CakeProphet> elliott: nope too bad.
23:12:43 <elliott> olsner: http://appdb.winehq.org/objectManager.php?sClass=version&iId=20882
23:12:45 <elliott> gold rating, not bad
23:12:52 <oerjan> @src some
23:12:53 <lambdabot> some v = some_v
23:12:53 <lambdabot> where many_v = some_v <|> pure []
23:12:53 <lambdabot> some_v = (:) <$> v <*> many_v
23:13:26 <oerjan> oh it's just some v = v <|> many v
23:13:34 <oerjan> many v can be zero
23:13:54 <elliott> ugly definition
23:14:46 <CakeProphet> so I'm wondering..
23:15:01 <CakeProphet> can a time-varying signal be a monad?
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:09 <oerjan> or wait can it
23:16:12 <oerjan> @src many
23:16:12 <lambdabot> Source not found. Do you think like you type?
23:16:20 <oerjan> sheesh
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:13 <oerjan> elliott: hm?
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:23 <elliott> i.e.
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:19:10 <elliott> right
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:14 <oerjan> er *ZipList
23:21:23 <oerjan> > ZipList [1,2,3]
23:21:24 <lambdabot> No instance for (GHC.Show.Show (Control.Applicative.ZipList t))
23:21:24 <lambdabot> arising ...
23:21:30 <oerjan> wtf
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:42 <elliott> oerjan: try getZipList
23:21:55 <oerjan> WHY THE FUCK DIDN'T THEY ADD A SHOW INSTANCE
23:22:08 <elliott> CONOOOOOOOOOR
23:22:08 <CakeProphet> oerjan: not cool enough.
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:40 <lambdabot> arising fro...
23:24:44 <oerjan> sadly
23:24:45 <elliott> pure results in an infinite list
23:24:49 <elliott> and return is ofc = pure
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:25:55 <lambdabot> No instance for (GHC.Enum.Enum
23:25:55 <lambdabot> (GHC.Integer.Type.Intege...
23:26:03 <elliott> > let foo n = pure n <*> foo (n+9) in getZipList (foo 0)
23:26:04 <lambdabot> *Exception: stack overflow
23:26:11 <elliott> hm oh
23:26:21 <elliott> > let foo n = pure (const n) <*> foo (n+9) in getZipList (foo 0)
23:26:22 <lambdabot> *Exception: stack overflow
23:26:25 <elliott> meh
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:16 <elliott> right
23:28:40 <oerjan> and your recursion is going in the wrong _direction_, you aren't actually moving _along_ the list
23:28:44 <elliott> right
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:25 <elliott> oerjan: right
23:31:34 <elliott> oerjan: same with Monad I think
23:31:58 <oerjan> hm right...
23:35:18 <oerjan> <elliott> integer = natural >>= liftA2 (<|>) ((string "hu" *>) . return . negate) return
23:35:36 <oerjan> :t (*>)
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:43 <oerjan> oh -> instance
23:36:46 <CakeProphet> ?p?
23:36:47 <lambdabot> Maybe you meant: ? pl
23:36:59 <oerjan> CakeProphet: dynamic scoped variable
23:37:01 <CakeProphet> ah
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:42 <oerjan> @hoogle optionally
23:38:42 <lambdabot> No results found
23:38:46 <oerjan> @hoogle optional
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:50 <oerjan> > (0$0 <**>)
23:40:51 <lambdabot> The operator `Control.Applicative.<**>' [infixl 4] of a section
23:40:51 <lambdabot> must h...
23:41:00 <oerjan> > (0$0 >>=)
23:41:00 <lambdabot> The operator `GHC.Base.>>=' [infixl 1] of a section
23:41:00 <lambdabot> must have lower pr...
23:41:33 <elliott> ?info (>>=)
23:41:33 <lambdabot> (>>=)
23:41:36 <elliott> ?info (>>=asd
23:41:36 <lambdabot> Unbalanced parentheses
23:41:40 <elliott> ?info (>>=) :: dicks
23:41:40 <lambdabot> (>>=) :: dicks
23:41:42 <elliott> wat
23:41:47 <elliott> ?help info
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:42:59 <elliott> oklopol?
23:43:21 <oerjan> elliott: integer = natural <**> choice [negate <$ string "hu", return id]
23:43:30 <elliott> oerjan: hot
23:45:11 <CakeProphet> elliott: obviously roger doesn't know how Haskell works.
23:45:21 <oerjan> > (0$0 <|>)
23:45:22 <lambdabot> The operator `Control.Applicative.<|>' [infixl 3] of a section
23:45:22 <lambdabot> must ha...
23:45:37 <CakeProphet> must ha...!
23:45:44 <oerjan> elliott: i guess <|> rather than choice suffices
23:45:59 <elliott> integer = natural <**> (negate <$ string "hu" <|> return id)
23:46:00 <elliott> nice
23:46:14 <oerjan> > (0$0 <$)
23:46:14 <lambdabot> The operator `GHC.Base.<$' [infixl 4] of a section
23:46:15 <lambdabot> must have lower pre...
23:46:51 <oerjan> remembering precedence does get a bit hairy
23:46:57 <CakeProphet> > 0 <$ [1..]
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:23 <CakeProphet> so is <$ less precedent than <|>?
23:47:43 <oerjan> <elliott> presumably it's an error correction then <-- iirc...
23:47:51 <elliott> ?enfo (
23:47:51 <lambdabot> Maybe you meant: echo undo
23:47:55 <elliott> ?echo (
23:47:55 <lambdabot> echo; msg:IrcMessage {msgServer = "freenode", msgLBName = "lambdabot", msgPrefix = "elliott!~elliott@unaffiliated/elliott", msgCommand = "PRIVMSG", msgParams = ["#esoteric",":?echo ("]} rest:"("
23:47:59 <elliott> xD
23:48:00 <oerjan> ?info do x <- test; f x
23:48:01 <lambdabot> test >>= \ x -> f x
23:48:05 <elliott> ah, undo
23:48:47 <oerjan> CakeProphet: <$ is 4, so binds tighter than <|> at 3
23:49:10 <CakeProphet> so what are negate and string "hu"?
23:49:14 <oerjan> CakeProphet: note that's the point of my > (0$0 ...) tests above
23:49:16 <oerjan> :t negate
23:49:17 <lambdabot> forall a. (Num a) => a -> a
23:49:34 <oerjan> string "hu" is a Parsec parser which parser precisely that string
23:49:39 <CakeProphet> string is from Parsec ri--yes
23:49:45 <oerjan> *parses
23:50:01 <CakeProphet> so what on earth is that <$ doing to String "hu"
23:50:03 <CakeProphet> *string
23:50:19 <oerjan> elliott: hm i just realized... does string do try internally?
23:50:34 <elliott> oerjan: ah, it should
23:50:38 <elliott> but doesn't
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:51 <elliott> CakeProphet: wrong
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:50:59 <elliott> oerjan: fix't
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:34 <elliott> me too :D
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:48 <CakeProphet> but uh
23:58:55 <CakeProphet> @src (<*>)
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 <oerjan> @src Applicative
23:59:14 <lambdabot> class Functor f => Applicative f where
23:59:15 <lambdabot> pure :: a -> f a
23:59:15 <lambdabot> (<*>) :: f (a -> b) -> f a -> f b
23:59:46 <elliott> <**> is flip <*> IIRC
←2011-06-05 2011-06-06 2011-06-07→ ↑2011 ↑all