00:03:14 10:38:41 I don't recall; based on the name only, it may have been another EgoBot instance. 00:03:19 it was immibis' annoyance machine 00:04:39 -!- Mathnerd314 has quit (Ping timeout: 264 seconds). 00:05:38 * Sgeo_ wants to fix a typo in Pharo without breaking other people's code 00:06:00 doit 00:06:10 The latter part is what's stopping me 00:06:19 I'm looking at this changes thing, and I see code changes 00:06:23 Not just my typo fix 00:06:39 Why does Epigram HATE me? 00:08:01 Phantom_Hoover: Because it is a sensitive person. 00:09:34 Ok, so the changeset against Pharo is just the change I want, but the changeset against PharoInbox isn't 00:09:40 Do I just save to PharoInbox anyway? 00:09:43 * Sgeo_ is scared 00:15:51 Saved 00:18:04 http://www.squeaksource.com/PharoInbox/ 00:32:18 -!- BeholdMyGlory has quit (Remote host closed the connection). 00:33:25 -!- deathmoniac has quit (Ping timeout: 276 seconds). 00:33:26 -!- Phantom_Hoover has quit (Ping timeout: 265 seconds). 00:34:33 -!- deathmoniac has joined. 00:38:54 Wow, the Star Wars Holiday Special is considered canon. 00:39:04 "The Holiday Special is important, at least to serious fans, for being the first film-length Star Wars story to appear following the release of Episode IV, as well as showing an expanded look at parts of the established universe. The program is considered canon with regards to Chewie's family, including the celebration of Life Day." 00:45:39 -!- AnMaster has quit (Quit: ZNC - http://znc.sourceforge.net). 00:46:03 Aaaarghthathurts 00:46:20 But is AWESOME. 00:47:14 Also, it kinda impresses me how much better output pdfTeX generates than straight TeX. 00:47:27 http://texblog.net/latex-archive/layout/pdflatex-microtype/ Seriously, just look at this. 00:47:50 The lesson: Knuth is stupid. 00:47:58 (granted, the difference should be nowhere near as notable on normal-width columns, but... Dang.) 00:48:26 alise: I wouldn't say that. Keep in mind that pdfTeX is pretty much the first thing this side of Gutenberg to do comprehensive microtypography. 00:48:45 pikhq: KNUTH IS BASICALLY A RETARD WHO KNOWS NOTHING 00:48:50 what has he ever done for us, also the romans 00:48:51 Hah. 00:50:15 alise: have you seen the iTeX video? 00:50:40 coppro: no, but i don't expect the joke to be that hilarious 00:50:50 * alise finally gets round to reading Five-Minute Voyager, instantly falls in love 00:50:51 Chakotay: Ha! Chakotay 1, Cardassians 0! 00:50:51 Tuvok: (detecting the wave) Um, you might want to reconsider that.... 00:50:51 Janeway: Here's the deal -- betray your Maquis pals, and I'll bust you out of here. 00:50:51 Paris: No. On second thought, yes. 00:51:49 link? 00:52:06 http://www.fiveminute.net/voyager/; http://www.fiveminute.net/voyager/fiver.php?ep=caretaker 00:53:06 I keep copying a quote but my mouse drags it further and further and eventually I end up trying to quote the whole thing 00:56:07 "Janeway promotes B'Elanna for punching Carey in the face." 00:58:15 Kazon: Can we keep the water? 00:58:15 Neelix: Hmm...no. 00:59:14 Wave is dying? 00:59:34 Janeway: Oof! Hey, a shockwave! 00:59:34 Tuvok: Yep. Came from that planet. 00:59:34 Janeway: It's still emitting harmful radiation, so let's go towards it. 01:00:21 Paris: I thought we weren't supposed to break the Prime Directive. 01:00:21 Janeway: We already did, so now we can do it as much as we want. 01:00:26 s/ $// 01:00:48 There's a TNG that I liked that I want to see the 5min of 01:01:29 It sort of only works on terrible shows. 01:01:37 But here: http://fiveminute.net/nextgen/ 01:01:49 It was a Wesley episode 01:01:53 -!- Wamanuz3 has quit (Remote host closed the connection). 01:01:57 All of the commentary is making fun of that :/ 01:02:02 http://www.fiveminute.net/voyager/fiver.php?ep=theomegadirective 01:02:03 oops 01:02:05 Neelix: Okay -- just had to get a line in somewhere in this episode. 01:02:36 Sgeo_: which one? 01:02:42 http://fiveminute.net/nextgen/fiver.php?ep=thegame 01:06:50 grr at 403 01:07:27 Janeway: So the plan is to fly right into the hands of the Kazon. Any objections? 01:07:27 Tuvok: Nine. 01:08:13 Isn't Year of Hell generally considered good? 01:08:48 Voyager is universally terrible. 01:09:14 Some episodes are alright in isolation. 01:09:32 Then you realise that Janeway is a crazy sociopath with multiple personalities^Wwriters. 01:09:47 I haven't seen enough episodes to realize that, I think 01:10:09 I remember reading that the actor actually complained? 01:10:15 Doc: Bad news, baby. This baby isn't Chakotay's. 01:10:15 Seska: $#@*%! It must be Culluh's! 01:10:15 Doc: The computer's checking that with a DNA test. Ah, here we go. The baby's parents are...Mulder and Scully? What the--? Computer! 01:10:16 Computer: Can I help it if I'm a 'shipper? 01:10:33 Sgeo_: Chakotay's wooden playing is purposeful; the actor hated the show and really didn't give a shit. 01:10:43 Janeway's actor (who cares about names?) also disliked it quite a bit. 01:10:54 Basically it's great to watch because it's hilariously bad. 01:11:09 whoa 01:11:13 Kes: I wanna get captured. 01:11:13 Neelix: Look, we've discussed this. I'm not comfortable with a relationship involving S&M. 01:11:13 Kes: No, by the cavemen. 01:11:13 Neelix: Don't change the subject to exclusivity. 01:12:00 Culluh: I love all the gadgets on this ship. Watch this -- I can turn the ceiling fan on and off. 01:12:00 Seska: Maj, someone on board is using Maquis sabotage tricks! 01:12:00 Culluh: Fan goes on, fan goes off. Fan goes on, fan goes off. 01:12:03 MUST. QUOTE. EVERYTHING. 01:12:41 Doc: I'm afraid Suder was killed. 01:12:41 Tuvok: Guess I should say something Vulcan-like. (ahem) "Live long and prosper." 01:12:41 Doc: I don't think you heard me. He's dead. 01:12:41 Tuvok: If you can't find it in your heart to wish him a long life, keep your mouth shut. 01:13:19 Data: It is made of anti-time. And it is giving off anti-time radiation. 01:13:21 Picard: Shhh! Janeway will hear you! 01:14:11 :D 01:14:23 http://pastie.org/1076332 CTO 01:14:36 Data: Aye, sir. Ooooooo! It appears the anomaly has been created by three converging tachyon beams from three different times. 01:14:39 Picard: What an amazing coincidence! I've been in three different times and fired tachyon beams in this exact spot. 01:14:42 Data: Perhaps those phenomena are related. 01:14:44 Picard: I don't see how, but I'll switch to my future self. He's had more time to think about it. 01:14:51 my new toy 01:15:25 C subset jibberish generator 01:15:30 http://pastie.org/1076334 01:15:34 Janeway: Mr. Kim, the date! I need to know the exact date! 01:15:34 Kim: November 23rd...1996! 01:15:34 Chakotay: November 23rd. The day before First Contact was released. 01:15:34 Janeway: That's what they came here to do! Stop First Contact! Ensign, where is the launch scheduled to take place? 01:16:06 hahaha 01:16:42 Starling: Ha ha! I've stolen your doctor! 01:16:43 Everyone: (over the comm) Yay! 01:16:43 Starling: I was expecting "Uh oh" or "Oh nuts" or something. 01:17:19 Future Riker: Take us in, Mr. Data. Hey, look, the other two Enterprises are on the viewscreen. 01:17:22 (BOOM) 01:17:25 Future Riker: Other one Enterprise. 01:17:27 (BOOM) 01:17:30 Future Riker: Forget it. 01:17:33 Future Crusher: Wait! There's a pattern here! If it holds, then -- 01:17:35 (BOOM) 01:18:08 :D 01:18:18 ekhm 01:18:24 CCCCCCCCC... 01:19:43 Chakotay: Seen any cloaked fleets lately? 01:19:43 Seven: Words fail me. Hey, a transmission. 01:20:11 -!- zzo38 has joined. 01:21:22 Paris: I found Chakotay and Harry in the morgue. 01:21:22 Tuvok: Their sacrifice will not be forgotten. 01:21:22 Paris: They aren't dead. 01:21:22 Tuvok: Damn. 01:22:00 There are some literate programming systems designed for specific programming languages, such as Pascal WEB, CWEB, Enhanced CWEB, etc. And there are some generic literate programming aystems that can be used with any programming language, such as noweb, FunnelWeb, Newfangle, and also yesweb. 01:22:30 http://sprunge.us/fOZT 01:22:38 (Please look at it? Make comment of it? etc?) 01:23:10 Admiral: Okay, class, ask me some questions. 01:23:10 Student 1: Why are you just going by "Admiral"? 01:23:10 Admiral: "Admiral Janeway" takes too long to type. Next? 01:23:10 Student 2: Do you intend to travel back in time and alter history so that Voyager gets home 16 years earlier, violating the Temporal Prime Directive and risking irreparable damage to the timestream? 01:23:10 Admiral: I plead the Fifth. 01:23:20 zzo38: I see. 01:23:26 zzo38: It's ... TeXy. 01:23:59 zzo38: Looks quite cool. 01:24:12 The \expandafter command is a useful command in TeX. Also strange things such as \catcode110=14 01:24:32 Is \catcode110=14 more strange or less strange than using prompt().toString() in JavaScript? 01:25:14 It's ... what? 01:25:26 Are apples more or less strange than trees? 01:26:02 Crusher: It's just to underline the weird temporal properties of the anomaly. We'll also be killing Ogawa's baby to make that point. 01:26:08 alise: Yes it is written using TeX, it uses Plain TeX. Newfangle is written in LaTeX and requires no separate program to weave (weave is implemented as a set of LaTeX macros), but it uses a seperate program written in awk for tangle. yesweb is written entirely in Plain TeX and doesn't require anything else. 01:26:30 alise: I don't know if apples more/less strange than trees? But is that relevant? I don't actually know if it is relevant or not 01:27:05 is there any material on how to use TeX as a general-purpose programming language? without the typesetting crud? 01:27:29 ... 01:27:30 olsner: I don't know. But I might have partially done so in yesweb (so look at that for an example) 01:27:58 Borg: We're Borg. Get assimilated. Resistance sucks. 01:27:59 Janeway: Our armoured ship will now kick your collective butt. 01:27:59 Borg: Oh, fiddlesticks. 01:28:07 olsner: <3 you for just /thinking/ that 01:28:21 Resistance is futile (if less than 1ohm) 01:28:21 alise: :) 01:28:47 \loop ... \ifnum \foo < n \repeat 01:28:56 First TeX control structure I have now learned :P 01:29:15 Is "\advance \x by 1" Plain TeX or an intrinsic? 01:29:32 It is built-in. 01:29:46 It is easy to check: Start TeX and then enter "\show\advance" at the prompt and it will tell you. 01:30:13 coppro: haha, someone made Voyager Virtual Season 8/9 01:30:33 alise: this is brilliant 01:30:37 \loop is not built-in, however. 01:30:57 hmm, \catcode is some kind of tr applied to ... the input? do tex programs have input? 01:31:16 olsner: \catcode is applied any more of the program that it reads itself. 01:31:24 It also affects \read and \write commands. 01:31:35 What's the one with the time loop? 01:31:53 [TNG] 01:31:53 zzo38: how do you declare a variable in tex? 01:31:54 \catcode is used to tell TeX what category the characters in the program belong to. 01:31:56 groundhog day-style time loop? 01:32:01 olsner, yesish 01:32:08 alise: You can't, however, you can do a few similar things. 01:32:09 every damn scifi needs to have one of those episodes... 01:32:26 olsner: of course 01:32:45 alise: \newcount \newbox and so on allocate registers and assign names to them. 01:32:55 Found it 01:32:58 Cause and Effect 01:33:07 You can also assign meanings to control sequences, and create macros. 01:33:09 zzo38: ok, so catcode32=9 says that spaces are in "category 9"? rather than mapping spaces to tabs? 01:33:19 ! Paragraph ended before \loop was complete. 01:33:20 Sniff. 01:33:21 char c(char j, char dln5, char b1, char v7) { 01:33:22 while(!531 / 623 != 428 < 913) { 01:33:22 yf5(802-66); 01:33:22 }; 01:33:22 } 01:33:24 olsner: Yes. That is what \catcode32=9 means. 01:33:25 oops 01:33:27 sry 01:33:56 http://www.fiveminute.net/nextgen/fiver.php?ep=causeandeffect 01:33:59 zzo38: so 01:34:02 \newcount \n 01:34:03 then later 01:34:05 \advance \n by 1? 01:34:11 alise: Yes. 01:34:22 *\loop \n \advance \n by 1 \ifnum \n < 10 \repeat 01:34:22 ! Missing number, treated as zero. 01:34:22 Hmm. 01:34:27 That creates a integer register and increments the value. 01:34:53 alise: You can't use \n directly, you have to either assign a value or use it as a parameter. Try entering \the\n after \loop instead of just \n by itself. 01:35:25 Does it start at 0 or 1/ 01:35:26 *or 1? 01:35:40 It starts at zero unless you explicitly tell it otherwise. 01:35:44 ...also, can I assign it with \n=1? 01:35:48 Or is it \newcount \n=1? 01:35:56 alise: Assign it with \n=1 01:36:17 These things don't make good episode summaries 01:36:26 Also, you need to print a space after each number, so put \space after \the\n 01:36:51 zzo38: Does it have to be \the every single time I mention n, ever? 01:36:55 Even in ifnum? 01:37:19 alise: No. 01:37:34 When do I need \the, then? 01:38:05 You need \the whenever it is not expecting a register, and you have to instead convert it to a string to print it. 01:38:30 \the just converts the value of whatever register comes after it to a string 01:38:57 Yay, my program works! 01:38:59 \newcount \n 01:38:59 \loop 01:38:59 \the\n \space 01:38:59 \advance \n by 1 01:38:59 \ifnum \n < 10 \repeat 01:40:05 alise: Now you learned. 01:40:10 Indeed I did. 01:40:16 Is there a while loop rather than a do/while? 01:41:14 alise: Yes, just put the condition at the top immediately after \loop instead of immediately before \repeat I think that will work too 01:41:47 Are while or do/while loops more common/idiomatic? 01:42:27 alise: I don't actually know, but I think the condition at the end is more common in TeX, as far as I know. 01:42:44 loop 01:42:48 the n space 01:42:51 advance n by 1 01:42:53 ifnum n < 10 repeat 01:43:02 So, if you removed the \s and replaced "the" with $... 01:43:21 newcount n 01:43:21 loop 01:43:21 $n space 01:43:21 advance n by 1 01:43:21 ifnum n < 10 repeat 01:43:21 bye 01:43:25 Yup, TeX is pretty normal. :P 01:44:47 I had better sleep. 01:45:17 Huh, TeX's programming stuff isn't as awful as I thought. 01:45:34 It's a bit poor, but... I can actually imagine using that. 01:45:38 pikhq: How awful did you think it was? 01:46:04 zzo38: Along the lines of "It's TC by accident". 01:47:30 Goodnight. 01:47:37 Bye. 01:47:38 -!- alise has quit (Quit: Leaving). 01:47:58 pikhq: It still has only 256 registers of each kind, though. And to do more advanced stuff you will have to learn some things about \expandafter and \csname and various other thing, because it does work differently, a bit. 01:48:21 zzo38: Still, it appears to be not 100% revolting. 01:48:34 (You can see the codes for yesweb to see how a full program is written) 01:48:44 pikhq: I also think it is not 100% revolting 01:49:35 http://www.explosm.net/comics/2130/ Hahahahaha this comic is exactly why I read C&H 01:49:41 It's sub-par, but eh. 70s language being usable suffices. :P 01:56:02 I want to figure out if there is some way to do something at each word boundary 01:56:23 is it a good thing or a bad thing that to stop my media player, I do 'killall ogg123'? 02:00:14 coppro: If done as a normal user, quite a mundane thing. 02:00:27 Overkill, but mundane. 02:05:50 Do you think yesweb is better or worse than noweb and Newfangle? 02:06:40 (I have tested yesweb, and it does work. So don't complain that it doesn't work.) 02:07:49 Gregor: Yes, that is about it. :) 02:10:58 How strange do you consider prompt().toString() to be in JavaScript, anyways? (I have used this) 02:13:20 What's the point of the toString() bit? 02:13:26 * Sgeo_ isn't exactly a Javascript expert 02:13:45 Sgeo_: Yes, that is the part that seems strange 02:13:51 -!- Mathnerd314 has joined. 02:13:58 But it does actually have a use there (even though the return value of prompt() is already a string) 02:14:00 JavaScript will coerce things to strings on its own quite often, but not always. Anyway without context I can't judge whether that's strange. 02:14:34 Gregor: Yes it does, but the return of prompt() is already a string anyways! 02:14:49 zzo38: String.prototype.toString is id. 02:15:38 Not that that's really an answer :P 02:15:49 Gregor: Yes, it is, but there is still a reason for prompt().toString() see if you can think of it. 02:15:54 (If you cannot, I can answer you) 02:16:17 -!- Mathnerd314 has quit (Disconnected by services). 02:16:26 Oh, I forgot that prompt() is a builtin function, doy. 02:16:37 -!- Mathnerd314_ has joined. 02:16:38 I don't know what prompt() returns if you close it without hitting OK, probably null. 02:16:47 And if that's the case, then it doesn't always return a string. Not sure though. 02:16:56 -!- Mathnerd314_ has changed nick to Mathnerd314. 02:18:42 Gregor: Yes you are right about that. And do you know what null.toString() does? 02:19:06 Off the top of my head, I suspect it's one of: "", "null" or maybe "0" 02:19:29 All wrong. 02:19:31 Ohwait 02:19:33 Except it's null X-P 02:19:37 So that throws an exception. 02:19:48 Yes, right. 02:20:13 Now do you understand what prompt().toString() is for? Hopefully now you do. 02:20:27 -!- zzo38 has quit (Quit: zzo38). 02:21:13 Seems like a silly way to coerce an exception out of that though ... 02:21:14 Why would you want to blow up and die just because some moron didn't click Ok? 02:21:21 Egg-zactly. 02:21:33 * Sgeo_ blows up and dies Gregor 02:22:15 -!- Gregor-P has quit (Quit: Bye). 02:23:42 * Sgeo_ will be watching Futurama in approx 38 min 02:24:11 Thank you for the update. 02:24:18 Please keep us apprised of all Futurama-related news. 02:24:30 Good news everybody! 02:25:00 pikhq: Well played, sir. Well played. 02:25:41 pikhq: hey, that's a registered trademark! 02:41:42 coppro: Genericisation bitch. 02:47:44 "the process scheduler in Squeak/Pharo just isn't built to handle a crazy amount of threads" 02:47:49 Opposite of Erlang then? 02:48:16 lol 02:57:57 * pikhq looks at new cell phones 03:00:29 And... I was wrong about the day of the week 03:13:21 Was about to ask if I should consider Self, but: 03:13:22 "we would be very interested in anyone prepared to make a Windows port." 03:28:00 -!- rodgort has quit (Quit: Coyote finally caught me). 03:30:40 -!- rodgort has joined. 03:48:02 -!- MizardX- has joined. 03:51:49 -!- MizardX has quit (Ping timeout: 252 seconds). 03:52:00 -!- MizardX- has changed nick to MizardX. 03:52:14 ok peeps 03:52:18 im in florida, on comcast 03:52:23 give some stuff to torrent 03:52:23 :D 03:59:18 Porn. Don't even need torrent. 03:59:36 The Internet *is* for it. 04:04:38 Clearly he is downloading porn even as we speak. 04:04:42 A true trooper. 04:05:26 i am download linguist porn 04:05:36 ... how dull X-P 04:05:44 And non-bandwidth-consuming. 04:06:50 Gregor: It's *cunning* linguist porn, at least. 04:06:50 > Gregor.OS 04:07:05 pikhq: Hyuk 04:07:10 pikhq: yes, it features noam chomsky and tanya reinhart. 04:07:42 kratzer comes in for a lesbian scene somewhere along the way 04:07:51 Gregor! 04:07:53 whats your OS :| 04:08:00 Oh, is that what that was supposed to mean. 04:08:04 ofcourse 04:08:05 Debian via sidux. 04:08:13 ok you're no use to me then. 04:08:23 :'( 04:08:27 I'M STILL A MAN, DAMN IT 04:08:40 i was going to ask if you wanted to toy around with an app me and some friends are making 04:08:48 see what kind of fun plugins for it you could make 04:08:49 but nevermind 04:09:13 ... You use OS X? 04:09:15 UNCLEAN 04:09:18 yes 04:09:19 very clean 04:09:20 :D 04:09:32 Even my soon-to-be-had phone shall run Linux! 04:09:35 :P 04:09:57 android? 04:10:17 <3 Android 04:10:42 Palm WebOS, actually. 04:10:51 ... 04:10:54 Fail. 04:11:03 Gregor: $0.00 is not fail 04:14:45 I've read good things about the UI 04:16:18 It uses the freaking Konami code to unlock it! 04:19:29 I think that's an auto-win 04:19:33 * coppro ducks 04:20:54 holy crap yesss 04:20:57 achievement unlocked 2 04:27:58 -!- MizardX- has joined. 04:31:58 -!- MizardX has quit (Ping timeout: 252 seconds). 04:32:26 -!- MizardX- has changed nick to MizardX. 04:53:01 -!- CakeProphet has quit (Ping timeout: 258 seconds). 05:08:00 -!- MizardX- has joined. 05:12:16 -!- MizardX has quit (Ping timeout: 276 seconds). 05:12:30 -!- MizardX- has changed nick to MizardX. 05:19:33 -!- oerjan has joined. 05:48:16 -!- MizardX- has joined. 05:52:16 -!- MizardX has quit (Ping timeout: 276 seconds). 05:52:46 -!- MizardX- has changed nick to MizardX. 06:28:14 -!- MizardX- has joined. 06:32:03 -!- MizardX has quit (Ping timeout: 246 seconds). 06:32:13 -!- MizardX- has changed nick to MizardX. 06:47:35 -!- cheater99 has quit (Ping timeout: 260 seconds). 06:54:34 -!- oerjan has quit (Quit: leaving). 06:56:41 -!- cheater99 has joined. 07:12:19 -!- MizardX has quit (Quit: reboot). 07:17:45 -!- MizardX has joined. 07:24:30 -!- Sgeo__ has joined. 07:26:42 -!- Sgeo_ has quit (Ping timeout: 265 seconds). 07:27:15 -!- Sgeo has joined. 07:29:34 -!- Sgeo__ has quit (Ping timeout: 240 seconds). 07:31:03 -!- Sgeo_ has joined. 07:34:24 -!- Sgeo has quit (Ping timeout: 258 seconds). 07:36:54 -!- relet has quit (Quit: Leaving.). 07:37:07 -!- Sgeo__ has joined. 07:39:52 -!- Sgeo_ has quit (Ping timeout: 240 seconds). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:21:01 -!- tombom has joined. 09:11:00 Crusher: Computer, what just happened? 09:11:00 Computer: The spherical universe we occupy is collapsing. Its periphery has just obliterated the forward edge of the ship's saucer section. 09:11:00 Crusher: Does that mean that Ten-Forward is now the Restaurant at the End of The Universe? 09:11:00 Computer: Very well put. 09:19:16 Riker: Cry me a river. Data, Worf, go get a shuttle ready and finalize your wills. Wesley, bring me fifteen kilos of tissue paper. 09:19:16 Wesley: Why, sir? 09:19:16 Riker: In case Deanna takes me literally 09:20:21 <3 09:24:05 * Sgeo__ is rather upset at the Five-Minute Stargate link not working 09:24:46 Well, there's one ep: http://www.fiveminute.net/stargate/eps/2010.htm 09:24:52 There may be more, I guess 09:25:37 Hansen: You're just such a screwup. 09:25:37 Riker: Yes, sir. 09:25:37 Hansen: Oh, and I promote you to Captain. 09:25:38 Riker: Yes, sir. 09:26:54 Meh, the 5min Stargate ep was boring 09:27:38 the arrakkis line is good 09:28:22 Not referring to the movie one 09:28:26 I liked that one 09:28:33 Was referring to the 2010 ep 09:30:20 oh 09:30:24 Crusher: Jean-Luc? Are you in there? 09:30:24 Locutus: Foolish human. Picard no longer exists. 09:30:24 Crusher: Oh, fine. Can I get you a drink? 09:30:25 Locutus: Tea, Earl Grey, hot. --Dammit! 09:33:02 :D 09:36:27 I am convinced that Smalltalk would have been the best language for this project 09:36:34 But yeah... 09:38:06 Why am I awake? 09:38:19 nobody knows 10:03:17 -!- AnMaster has joined. 10:11:26 -!- comex has quit (Ping timeout: 240 seconds). 10:12:32 -!- comex has joined. 10:22:28 -!- MigoMipo has joined. 10:27:41 -!- oerjan has joined. 10:32:27 -!- comex has quit (Ping timeout: 260 seconds). 10:32:40 -!- Slereah has quit (Ping timeout: 240 seconds). 10:32:42 -!- BeholdMyGlory has joined. 10:35:30 -!- comex has joined. 10:38:21 -!- Wamanuz has joined. 10:38:23 -!- Slereah has joined. 10:39:23 -!- kar8nga has joined. 10:55:30 -!- comex has quit (Ping timeout: 265 seconds). 11:00:32 -!- comex has joined. 11:07:31 -!- comex has quit (Ping timeout: 260 seconds). 11:09:08 -!- comex has joined. 11:12:35 -!- oerjan has quit (Quit: leaving). 11:34:06 -!- Phantom_Hoover has joined. 11:47:40 -!- kar8nga has quit (Remote host closed the connection). 12:23:25 -!- jcp has quit (*.net *.split). 12:27:16 -!- jcp has joined. 13:00:25 -!- Phantom_Hoover has quit (Quit: Leaving). 13:00:44 -!- Phantom_Hoover has joined. 13:13:39 -!- comex has quit (Ping timeout: 264 seconds). 13:20:47 -!- comex has joined. 13:26:03 -!- comex has quit (Ping timeout: 240 seconds). 13:28:36 -!- comex has joined. 13:34:05 -!- kar8nga has joined. 13:36:33 -!- comex has quit (Ping timeout: 240 seconds). 13:37:25 -!- mquin_ has joined. 13:43:49 -!- ais523 has joined. 13:44:29 -!- comex has joined. 13:44:30 -!- comex has quit (Excess Flood). 13:45:18 -!- comex has joined. 13:45:51 -!- mquin has quit (Quit: Changing server). 13:54:07 -!- mquin_ has changed nick to mquin. 14:02:12 -!- AnMaster has quit (Quit: ZNC - http://znc.sourceforge.net). 14:07:55 -!- mquin has left (?). 14:18:08 Yes, and PCRE throws errors when it hits these limits. PHP interprets these errors as successes. 14:18:24 if anyone ever asks me what's wrong with PHP, I now have this to refer to 14:19:56 hmm, better version of the same quote by the same person: 14:20:00 PHP doesn't handle the error PCRE sends out sanely. If PCRE hits the backtrack limit (which is by default set to 10000000 backtracks, much higher than php's alteration), then PCRE throws an error -- PCRE_ERROR_MATCHLIMIT -- which PHP should throw for the code to handle, instead of quietly succeeding. 14:20:50 `eval factor 22201 14:20:51 No output. 14:20:58 `help 14:20:59 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 14:21:04 `run factor 22201 14:21:06 22201: 149 149 14:26:13 `factor 22201 14:26:14 22201: 149 149 14:27:21 Huh, found fax. 14:37:46 -!- deathmoniac has quit (Ping timeout: 276 seconds). 14:39:00 -!- deathmoniac has joined. 14:57:03 -!- ais523_ has joined. 14:57:37 -!- comex has quit (Ping timeout: 276 seconds). 14:58:03 -!- ais523 has quit (Disconnected by services). 14:58:04 -!- ais523_ has changed nick to ais523. 15:03:44 -!- comex has joined. 15:08:16 -!- comex has quit (Ping timeout: 240 seconds). 15:09:09 -!- comex has joined. 15:12:36 -!- Flonk has joined. 15:30:21 -!- Phantom_Hoover has quit (Quit: Leaving). 15:32:12 -!- songhead95 has joined. 15:32:32 -!- comex has quit (Ping timeout: 240 seconds). 15:33:25 whats the egobot command symbol? 15:33:35 ! 15:33:37 !help 15:33:37 help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . 15:33:40 -!- comex has joined. 15:38:01 -!- relet has joined. 15:40:55 -!- cpressey has joined. 15:46:50 how do you run on hackego 15:48:54 !bf ,[.,]!Hello, world! 15:49:02 oh, that's egobot 15:49:10 hackego isn't really good for running languages 15:49:15 also, where's egobot gone? 15:51:12 -!- comex has quit (Ping timeout: 258 seconds). 15:51:17 -!- songhead95 has quit (Ping timeout: 252 seconds). 15:52:00 -!- comex has joined. 15:59:04 It's run away to join the circus! 16:00:36 I always knew it was flighty *sigh* 16:00:48 !help 16:00:48 help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . 16:00:56 hmm, maybe I just messed up my program? 16:01:00 !bf_txtgen test 16:01:02 Also, its !bf interpreter doesn't accept !input :P 16:01:08 61 +++++++++++++[>+>+++++++++>++++++++><<<<-]>>-.>---.<-.+.<---. [48] 16:01:33 Gregor: aha 16:01:36 it always used to, didn't it? 16:01:40 or was that fungot? 16:01:41 ais523: table fnord. they who should have been otherwise. nor is there any form of popular election were supposed to be right, i am not sure as to which st. paul suggests a reference to paley on this subject. 16:02:27 Must've been fungot. 16:02:29 Gregor: great britain had a tammany and a croker a good while before he or his family settle again to their business. their heads were stuck upon spears, and led the procession; whilst the royal captives who followed in the reign of henry viii., or fnord. 16:02:53 !bf +++++++++++++[>+>+++++++++>++++++++><<<<-]>>-.>---.<-.+.<---. 16:02:53 test 16:03:32 Does anybody have any idea what tipjar.com is, other than a web site which was founded in 1996 and clearly hasn't been updated since 1996? 16:08:34 Fungot's ^bf takes !input, yes. And if you ^def foo bf bar, it will internally rewrite "^foo baz" to "^bf bar!baz". 16:13:39 -!- comex has quit (Ping timeout: 260 seconds). 16:15:07 -!- comex has joined. 16:17:48 Last night I managed to get my Eightebed compiler (written in Python) to emit C that actually compiles. Got a fair way along with the static validity analyzer too. All that's left is to finish that, write the runtime support (the most important part :/ ), and write a test suite, I guess. 16:19:27 go go Eightebed! 16:24:51 -!- comex has quit (Ping timeout: 260 seconds). 16:27:03 -!- comex has joined. 16:32:50 -!- derdon has joined. 16:36:18 -!- comex has quit (Ping timeout: 245 seconds). 16:38:18 -!- comex has joined. 16:39:21 I'm trying to read the source for Epigram (literate Haskell). I should probably stop because I don't know enough about type theory to tell when they're joking or not. 16:52:40 -!- comex has quit (Ping timeout: 276 seconds). 16:53:47 -!- comex has joined. 16:59:09 -!- BeholdMyGlory has quit (Read error: Connection reset by peer). 17:02:00 -!- AnMaster has joined. 17:02:25 -!- BeholdMyGlory has joined. 17:04:00 -!- kar8nga has quit (Remote host closed the connection). 17:07:11 -!- Gregor-P has joined. 17:11:02 So, does anybody have any idea what tipjar.com is, other than a site that clearly hasn't changed since its founding in 1996? 17:11:35 I don't, or I'd have answered earlier 17:11:40 although I do vaguely recognise the name 17:12:06 -!- tombom has quit (Quit: Leaving). 17:12:59 ais523, you saw that url? 17:13:01 how strange 17:13:29 ais523: I wouldn't have seen it earlier, hence reasking X-P 17:13:49 I meant, he filter urls 17:13:56 in his irc client 17:28:29 Gregor-P: One might think that is a "yes-no" question, until one notices the universal quantification in it, making it a "yes-not me" question. 17:28:37 Gregor-P: Also: Not me. 17:29:26 Er, actually existential quantification I guess. 17:29:42 Thanks for the breakdown, now gimme some Eightebed so I cab break it :P 17:32:21 Gregor-P, s/cab/can/ ? 17:32:59 Nope, I'm going to drive a taxi into it. 17:34:55 XD 17:35:14 -!- oerjan has joined. 17:35:17 Gregor-P, what is "Eightebed", _no_ google hits here 17:35:31 it suggests eightcubed though 17:35:33 oerjan, hi 17:35:50 cpressey: Congrats, you found a totally unique name. 17:36:41 yo, Americans 17:36:46 Gregor-P, huh? 17:36:49 sadly google is _disgustingly_ bad at crawling for entirely new esolangs 17:36:51 Gregor-P: Actually, alise found it. With her iPhone. But, like "Befunge", I recognized the significance of the word as a language name. 17:36:55 "Puss, despite that it is intended to be a small tool, is still in early stage." is this sentence correct ? 17:36:55 ah 17:36:59 it's an esolang? 17:37:18 nooga: Nope. 17:37:23 why? 17:37:27 AnMaster: shocking, isn't it? what are people _doing_ in this channel? 17:37:30 actually, when refreshing I get one hit 17:37:47 -!- Gregor-W has joined. 17:38:00 and that one hit is: [PDF] Allegheny County Medical Society [...] Pittsburgh and the eightebed [...] 17:38:29 nooga: First I will attempt to formulate a "correct" version, then I will attempt to diff them."Puss, although intended to be a small tool, is still in an early stage." 17:38:42 That's a bit wonky at the end, maybe want "of development" 17:38:49 (Not a correctness issue, just a clarity issue) 17:38:55 Gregor-W, btw did yesterday turn out to be the best of worlds? 17:38:58 as we talked about 17:39:19 AnMaster: YES but for totally different reasons, I didn't snag coding time :P 17:39:22 wrt. microcosm that is... 17:41:12 nooga: Hmmm, OK, your "despite" clause, upon further thought, is probably correct, but very awkward, as you've assigned Puss the pronoun "it" in a clause before even getting to the action verb. 17:41:33 nooga: "despite that it is ..." sounds stilted in english, especially as an adjectival phrase 17:42:05 i think "despite being ..." would be the usual phrasing, except that would give you two "being" there... 17:42:08 nooga: "is still in early stage" just needs to be "an early stage", unless "early stage" is actually the name of a stage, not just a description. 17:42:46 Also, I'll just put forth that the whole sentence is kinda weird; although intended to be small, it's in an early stage of development? Are these two things related? 17:42:52 what about: "Puss, although intended to be a small tool, is still even smaller than that" 17:42:53 Gregor-W, ^ 17:42:59 er, one "being" and one "to be", which still would be awkward 17:43:02 I approve. 17:43:11 :) 17:43:56 alternatively it might be way too large 17:44:03 depends on which way you are goingf 17:44:04 Although oddly if you put the adjectival phrase first, the awkwardness with "it" diminishes: ""Despite that it is intended to be a small tool, Puss is still in [an] early stage [of development]." Perfectly fine to me. 17:44:06 going* 17:44:35 cpressey: That is an interesting observation, AND true. 17:44:49 Gregor-W, cpressey, if "early stage" is actually a name of a stage I would suggest using title case for it 17:44:56 to make it less confusing 17:44:57 Yup 17:45:02 I might use "Despite [the fact] that it is..." but that's my own preference for being wordy, I think 17:45:07 PUSS IS A SMALL TOOL 17:45:12 cpressey: Naw, I'd do that too. 17:45:26 cpressey: I might even say "In spite of the fact that it is" 17:45:38 nooga: :P 17:45:50 cpressey, you call that wordy? Bah, nothing compared to the wordiness we had when _I_ was young. 17:46:09 We had to use a shovel to dig our way through it! 17:46:23 what? 17:46:30 oh right 17:46:32 monty 17:46:43 pretty obviously so 17:46:51 O English! What mortal couldst tame thy hirsute naughtiness? 17:47:02 cpressey, "hirsute"? 17:47:18 this spell checker accepts the word however 17:47:25 and I noticed yesterday that it didn't like "movie" 17:47:28 so hm 17:47:47 I suspect en_GB might be rather outdated on this system 17:48:09 Now 'round yonder we ain't gettin' y'all's Queen's English wit' yer "hirsutes" n' yer "couldsts". 17:48:33 -!- Phantom_Hoover has joined. 17:49:07 Gregor-W used CONFUSION. 17:49:11 It was super effective. 17:49:20 that's my only comment to that line. 17:50:19 I only know "hirsute" because it was on a list of "words you should study to do well on the verbal portion of the GRE", and shortly thereafter I actually heard it used, in an episode of Dr. Who. 17:50:34 DOCTOR WHO 17:51:10 People who contract the "Doctor" in "Doctor Who" are the WORST kind of people. 17:52:00 Fine, DOCTOR WHO. Anyway, I've noticed that happens a lot -- you learn a word, then suddenly hear it used. It's probably some kind of psychological trick, like, you heard the word before, but you didn't know what it meant, so you didn't retain the memory the same way. 17:52:10 -!- augur has quit (Remote host closed the connection). 17:52:11 But "hirsute"? I dunno, man. That was a weird coincidence. 17:53:18 -!- Gregor-W has quit (Quit: Page closed). 17:55:40 if you look like you're wearing a hair suit, you might be hirsute. 17:59:02 oerjan, do you? 18:00:13 not particularly. 18:02:57 -!- Mathnerd314 has quit (Disconnected by services). 18:03:16 -!- Mathnerd314_ has joined. 18:03:37 -!- Mathnerd314_ has changed nick to Mathnerd314. 18:08:49 -!- ais523 has quit (Remote host closed the connection). 18:10:17 i think i'm going to watch an episode of doctor who right now 18:10:42 And I'm going to play NetHack. 18:11:06 Fun fact: zapping an unknown wand at yourself is not a very good idea. 18:12:48 Phantom_Hoover, how many times have you ascended? 18:12:57 AnMaster, none. 18:13:01 hm 18:13:08 I've never gotten past Sokoban, actually. 18:14:26 I've reached Minetown once or twice, but I've always died before getting back to the main dungeon. 18:15:03 -!- derdon has quit (Ping timeout: 240 seconds). 18:19:25 -!- kar8nga has joined. 18:19:28 -!- kar8nga has quit (Read error: Connection reset by peer). 18:23:30 AnMaster, have you ever ascended? 18:25:00 Phantom_Hoover, yes, several times 18:25:10 AnMaster, *glower* 18:26:27 currently I'm playing an extinctionism game. Quite close to that objective. If I have kept an accurate count almost everything except & A and D are either extinct or genocided by now 18:27:00 Can you genocide D? 18:27:22 well, I don't have any such scroll handy currently 18:27:33 besides, extinction is more proper than genocide 18:27:58 just used genocide for buggers like mind flayers and arch liches 18:28:27 atm I'm using cursed scrolls of create monster in a boulder fort to create lots of dragons 18:38:48 yay, D and A done I think 18:39:00 I can't eat kittens‽ Even ones that aren't my pet? 18:39:15 Phantom_Hoover, you could eat their corpses? 18:39:34 I thought I could, but it tells me that I think eating it was a bad idea. 18:39:47 I thought that meant a luck penalty. 18:42:15 Ah, telepathy... 18:42:20 do you still have the corpse? 18:42:28 No, my kitten ate it. 18:42:47 Why my kitten wasn't done for cannibalism I do not know 18:47:45 OK, reached Sokoban. 18:50:37 -!- Gregor-P has quit (Quit: Bye). 18:52:06 -!- Gregor-P has joined. 18:56:51 Well, now my kitten has died of terminal stupidity. 19:01:35 -!- Mathnerd314 has quit (Disconnected by services). 19:01:56 -!- Mathnerd314_ has joined. 19:02:16 -!- Mathnerd314_ has changed nick to Mathnerd314. 19:03:01 "Fruit comprehensions? They're like list comprehensions, but for fruit." 19:03:27 Beh. Stupid kitten. 19:11:11 cpressey, well, it *walked* into a *pit*. 19:11:12 Phantom_Hoover, I find that the initial pet mostly gets in your way. I prefer pets from various figurines and eggs later on. I mean, a black dragon as a pet definitely beats a kitten by far. It doesn't just steal from shops, it kills the shop keeper (always leave that to strong pets, never do it yourself) 19:11:24 Phantom_Hoover, what class are you playing? 19:11:29 AnMaster, wiz. 19:11:31 why 19:11:40 No idea. 19:11:47 Seemed like a good idea 19:12:00 At first, then I've never been bothered to change, 19:12:02 Phantom_Hoover, it is a bad choice if you never ascended. I would go for val. I did my first ascension with val and also the majority of them 19:12:36 cpressey: well if Fruit is a Monad, you can use do blocks for that purpose 19:13:00 especially if you die before the quest. Because val is much stronger at low levels than wiz. wiz is only really good for the latter half of the game 19:13:02 alas, monad comprehensions were abolished in Haskell 98 19:13:56 Neat, cone of cold goes through boulders. 19:14:00 Phantom_Hoover: Perhaps it thought it was a Wumpus. 19:14:22 cpressey, perhaps. 19:15:47 oerjan: Not even available as one of those optional pragma things? 19:15:51 Phantom_Hoover, sokoban? Be careful of the luck penalties 19:15:56 AnMaster, precisely. 19:16:25 There was a monster behind a boulder which wouldn't move. 19:22:34 cpressey: hm maybe it's been added recently - i think it was said they'd add it if someone made a patch 19:23:33 oerjan: I'm having a hard time seeing how "do" *isn't* a monad comprehension, actually 19:23:55 yes, do notation and comprehensions are equivalent 19:24:11 -!- tombom has joined. 19:24:19 So, just a syntax thing? 19:25:28 Anyway, I'm sick of people asking me to define fruit in terms of monads, so I refuse to comply! 19:26:10 hm i cannot find it in the ghc's language option list 19:26:32 there are two options for comprehensions, but none extends it to monads 19:27:43 both do notation and list comprehensions are syntactic sugar 19:29:23 oerjan: Oh, while we're on the subject, there's something that's been on my mind for a while 19:29:32 hm? 19:30:17 I think I've heard that monads in Haskell are "strict in the first argument'. Is this true? Is this a necessary quality of monads? And is this the real reason why they can be used for IO? 19:30:31 cpressey, no. 19:30:34 it's untrue, in fact it varies by monad 19:31:27 IO is strict in the first argument (to >>=), but e.g. Reader is strict in the second 19:32:11 OK. Would it be true that a monad that has to match "the outside world" as it were, would have to be strict in at least one argument? 19:33:10 well eschewing concurrency, all haskell evaluation would generally need one of the arguments first, if any 19:34:23 I don't think that's the meaning of "strict" I'm thinking of. 19:35:01 hm wait that's not true if you use seq, either 19:36:46 generally in a >>= f it would be harmless to evaluate the _function_ f, i think, so it doesn't have to be precisely strict in the first one 19:37:01 I'm basically trying to figure out if there is something inherent about monads that lets them define evaluation order, or whether they're just "carriers" for something else (something like seq, yeah) that defines the evaluation order. 19:37:20 cpressey, carriers 19:37:27 the inherent thing about monads is that they force _data flow_, i think 19:37:46 Yeah, they force data flow. They absolutely do not (in general) force evaluation order. 19:37:59 Well, no more so than any other set of functions can. 19:38:28 (any function can effectively force evaluation order just with seq or judicious pattern matching, after all) 19:39:00 OK. That helps clarify it. Thank you all. 19:39:22 seq can be simulated with pattern matching whenever its left argument is of a known algebraic data type, incidentally 19:40:22 (just do any match that forces actually finding the top constructor) 19:42:34 !haskell let loop = Nothing >> loop in loop :: Maybe () 19:42:40 Nothing 19:44:55 !haskell import Control.Monad.Reader; loop = loop >> ask; main = print $ runReader loop "Poof!" 19:44:58 "Poof!" 19:49:15 Actually, I'm not sure it's any clearer. 19:49:31 !haskell import Control.Monad.Writer; test = tell [1] >> undefined >> tell undefined; main = print $ (head output, result) where (output, result) = runWriter test 19:49:33 cpressey, do you know how >>= and return work? 19:50:03 hm it's backwards 19:50:12 !haskell import Control.Monad.Writer; test = tell [1] >> undefined >> tell undefined; main = print $ (head output, result) where (result, output) = runWriter test 19:50:15 (1,()) 19:50:49 Phantom_Hoover: I thought I did several times. I can never seem to retain a coherent mental model of how they work, though. 19:51:01 cpressey: the last is an example of a Monad where _part_ of the monad value is strict in the first argument to >>, and _part_ is strict in the second :) 19:53:32 !haskell :t return 19:53:33 return :: (Monad m) => a -> m a 19:53:40 !haskell :t (>>=) 19:53:41 (>>=) :: (Monad m) => m a -> (a -> m b) -> m b 19:54:24 These must satisfy the axioms that (return x) >>= f == f x, 19:54:50 -!- Mathnerd314 has quit (Disconnected by services). 19:55:10 -!- Mathnerd314_ has joined. 19:55:30 -!- Mathnerd314_ has changed nick to Mathnerd314. 19:55:41 m >>= return == m, and (m >>= f) >>= g == m >>= (\x -> (f x >>= g)) 19:55:48 I have no idea if that helps. 19:56:01 Phantom_Hoover: It doesn't. 19:56:49 Didn't think so... 19:57:48 That's the whole problem with the didacticism of monads. Just stating the definition of something does very little to help one understand it. 19:57:53 cpressey, return "puts" a value into a monad, >>= takes it "out" and applies it to its second argument. 20:00:35 The first law is clearer with do notation. The second is hairy without Kleisli arrows. 20:01:35 -!- CakeProphet has joined. 20:02:03 (with that, we get the monad laws as: return >=> g == g, f >=> return == f, (f >=> g) >=> h == f >=> (g >=> h)) 20:02:21 BTW, >=> :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c 20:02:28 m >=> n = \x -> do { y <- m x; n y } 20:02:45 See, it's nice and clean that way. Sadly, not much help. 20:07:01 pikhq, what's >=> in terms of >>= and/or return? 20:08:09 It would be even cleaner (but probably still not much help) if the operators were visually distinct instead of being combinations of arrows and lines. Thank you, ASCII. 20:08:36 m >=> n = \x -> m x >>= n 20:08:50 OK. 20:09:04 cpressey, are you still confused? 20:09:20 (after mentally applying the de-sugaring, and then a simple reduction) 20:09:46 Phantom_Hoover: Yes, but never mind. 20:11:38 cpressey: Would it make you feel better to know that you don't have to understand any of this to use Haskell? 20:12:00 pikhq: Not exactly, since I've written several nontrivial programs in Haskell. 20:12:09 It's most relevant when you're wondering if you could make a datatype a monad. 20:13:40 I tend to just avoid monads and write any I/O code that I have to do in cargo cult fashion. 20:14:41 http://www.haskell.org/haskellwiki/Monad_Laws Perhaps this helps? 20:15:14 If it doesn't, you can conclude that monads are burritos and call it a day. 20:15:15 :P 20:18:47 someone asked me about monads the other day... I tried to explain, but he lost interest after 5 minutes 20:21:53 I really need an "monads in minutes" explanation :p 20:22:27 a monotone monologue on monads, measurable in minutes 20:23:25 well, I did ask some rhetorical questions 20:24:13 -!- jcp has quit (Ping timeout: 245 seconds). 20:25:07 Mathnerd314: Well, I can offer this piece of advice: don't just recite the monad laws. 20:25:26 yeah, I didn't try that 20:26:16 -!- jcp has joined. 20:34:26 okay 20:34:30 let's try 20:34:39 Mathnerd314: what are these monads anyway? 20:34:57 that's exactly what the guy asked me 20:35:22 !haskell [] >> undefined :: [()] 20:35:27 [] 20:36:18 and I pulled up this page: http://blog.sigfpe.com/2006/08/you-could-have-invented-monads-and.html 20:36:24 and started working through it 20:36:58 and then he stopped paying attention and talked about other things :-( 20:37:30 It's kind of a boring blog post 20:38:40 yeah, I need something exciting and/or short 20:38:52 maybe I should have asked on #haskell first 20:39:09 then I could have let them explain :p 20:39:15 Monads are not the only things in Haskell that I essentially can't think in. I also can't think in pointfree form. 20:40:57 I do pointfree by default o_O 20:43:32 Yeah -- I guess I'm just stupid. 20:46:50 Pointfree form? 20:49:23 Phantom_Hoover: http://www.haskell.org/haskellwiki/Pointfree 20:50:36 In contrast, a lot of the time I don't even use fold -- I write the folding into my function. 20:50:56 yeah, I tend to use recursion instead of combinators 20:51:01 cpressey, NIH to the max! 20:51:49 I wouldn't call it NIH exactly, but it is the same kind of thing probably. 20:51:59 I like to call it "pointless style" 20:52:09 'Twas facetious. 20:52:12 well, unless you've memorized them, the higher-order functions are rather hard to discover 20:54:10 cpressey: you're not the first one to use that term :) 20:55:01 (in fact lambdabot's command for generating it is @pl) 20:56:03 pl \a (b,c) -> a c b =====> (`ap` snd) . (. fst) . flip 20:56:09 Love that one. 20:56:31 eek 20:56:32 you can probably write it more nicely 20:56:58 What is `ap`? 20:57:08 GHCi says it doesn't exist. 20:57:14 monadic version of <*> 20:57:19 it's in Control.Monad 20:57:35 Control.Applicative too (which has <*>) 20:57:59 cpressey: uncurry . flip, i think 20:58:29 @pl afair is not very smart with simplifications 20:58:55 or wait is that curry or uncurry 20:59:10 !haskell (curry . flip) (+) (1,2) 20:59:23 !haskell (uncurry . flip) (+) (1,2) 20:59:25 3 20:59:37 uncurry was right 21:00:44 cpressey: i think many of ghc's optimization rules for lists depend on using fold/map style rather than explicit recursion 21:01:27 if you want it to remove intermediate lists 21:02:22 Joy. Oh well. 21:09:23 !haskell import Control.Monad.State.Strict; main = flip runState 1 $ put 2 >> undefined >> put 3 21:09:41 !haskell import Control.Monad.State.Strict; main = print . flip runState 1 $ put 2 >> undefined >> put 3 21:09:44 input.19732.hs: Prelude.undefined 21:09:53 thought so 21:10:13 so the strict State monad is essentially strict in _both_ arguments 21:10:39 !haskell import Control.Monad.State.Lazy; main = print . flip runState 1 $ put 2 >> undefined >> put 3 21:10:41 ((),3) 21:17:15 !haskell :t undefined 21:17:16 undefined :: a 21:17:24 !haskell undefined 21:17:26 *** Exception: Prelude.undefined 21:17:57 it's a most undefined value :D 21:18:05 OK, that helps explain what the heck you were doing 21:19:08 the definition of a strict function f is that f undefined is undefined :) 21:20:58 oerjan, what about f _ = undefined? 21:21:05 It's non-strict. 21:21:09 heh :D 21:22:59 well mathematically it's indistinguishable from being strict 21:23:12 It is? 21:23:54 sure - how can you be sure it didn't look at its value before returning undefined? 21:24:45 !haskell let f _ = undefined; f (putStrLn "hello") 21:25:41 incidentally that function is the reason why haskell's seq breaks the eta conversion rule - \x -> undefined = \x -> undefined x but the latter is not undefined 21:26:21 Phantom_Hoover: that ; doesn't end the let block 21:26:43 oerjan, oh. 21:26:53 you need {} brackets in that case 21:27:04 !haskell let {f _ = undefined}; f (putStrLn "hello") 21:27:21 Parse error... 21:27:29 assuming EgoBot's !haskell even allows two ghci commands on a line 21:27:53 replacing ; with in should work 21:27:59 OK. 21:28:15 !haskell let f _ = undefined in putStrLn "Hello, world!" 21:28:16 Hello, world! 21:28:30 !haskell let f _ = undefined in f (putStrLn "Hello, world!") 21:28:31 *** Exception: Prelude.undefined 21:29:03 So it's non-strict. 21:29:14 um no 21:29:23 How? 21:29:53 -!- Mathnerd314 has quit (Disconnected by services). 21:29:58 that putStrLn "Hello, world!" wouldn't have been run even if f were non-strict, unless it actually returned it 21:30:12 -!- Mathnerd314_ has joined. 21:30:31 -!- Mathnerd314_ has changed nick to Mathnerd314. 21:30:42 evaluating an IO action does _not_ run it 21:31:08 oerjan, oh. What things have side-effects when evaluated, then? 21:31:23 !haskell (putStrLn "Hello, world!") `seq` "Boo!" 21:31:24 "Boo!" 21:31:37 unsafePerformIO :) 21:32:13 Where's that? 21:32:26 half the point of haskell's purity is that evaluation _has_ no side effects 21:32:39 System.IO.Unsafe 21:32:46 Excepting undefined/ 21:33:00 undefined is not a side-effect 21:33:56 oh well... it depends how you look at it, but mainly you say the result of the whole computation is undefined/bottom then 21:34:30 the addition of exceptions has messed things up a little bit 21:37:44 the theory they used is that the result of a pure computation could be either an ordinary value, or a set of possible exceptions 21:38:37 note that there is no way to distinguish different exceptions from inside _pure_ code - they can only be caught in the IO monad 21:41:16 there's at least one testing library for haskell which uses catching undefined exceptions to test whether functions are strict 21:43:44 evaluating an IO action does _not_ run it 21:44:14 main is a little bit special. Whatever it describes, gets run 21:44:18 I... oh, never mind 21:44:18 as that !haskell (putStrLn "Hello, world!") `seq` "Boo!" above proves 21:44:43 IO a is just a description of an IO action 21:45:06 !haskell putStrLn "X" 21:45:10 X 21:45:13 !haskell System.IO.Unsafe.unsafePerformIO (putStr "Hello, world!") `seq` "Boo!" 21:45:17 Hello, world!"Boo!" 21:46:29 !haskell let f _ = undefined in f $ System.IO.Unsafe.unsagePerformIO $ putStrLn "Hello, world!" 21:46:51 *f 21:46:55 !haskell let f _ = undefined in f $ System.IO.Unsafe.unsafePerformIO $ putStrLn "Hello, world!" 21:46:56 *** Exception: Prelude.undefined 21:47:33 !haskell [putStrLn "X"] 21:47:40 unsafePerformIO is not considered to be inside haskell's ordinary semantics :) 21:47:53 / 21:47:57 * Phantom_Hoover rolls eyes 21:48:01 Got a parse error 21:48:09 !haskell print [putStrLn "X"] 21:48:24 Another parse error 21:48:54 Sgeo__: the parse error was because it didn't work as a ghci command, so !haskell tried it as a module, which it doesn't parse at 21:49:17 !haskell let f _ = undefined in f (f) 21:49:18 *** Exception: Prelude.undefined 21:49:32 to get useful error messages in !haskell, you have to use the module form 21:49:52 (just prepend main = or main = print $ , mostly) 21:50:03 !haskell main = print [putStrLn "X"] 21:50:25 * oerjan bets on a missing Show instance for IO String 21:50:34 er 21:50:36 IO () 21:50:43 Yep 21:51:06 But at least that makes sense 21:51:17 !haskell length [putStrLn "X"] 21:51:19 1 21:51:27 in other words, it's a perfectly legal list, there's just no way defined for printing it 21:51:35 But putStrLn "X" wouldn't even have been evaluated there 21:51:59 The only thing that ever gets "evaluated" (barring unsafePerformIO trickery) is main 21:52:17 i don't think you _can_ get an IO action evaluated without running it unless you use seq 21:52:27 Noice 21:53:13 It's interesting how a beautiful mathematical framework can look all contrived and stuff once you turn it into a programming language 21:53:19 (or something equivalent to seq. pattern matching won't work since IO has no constructors) 21:53:52 !haskell length [ (putStrLn "X") `seq` () ] 21:53:54 1 21:54:10 Sgeo__: that still isn't even evaluated 21:54:29 however replace length with head 21:54:46 !haskell head [ (putStrLn "X") `seq` () ] 21:54:47 () 21:54:49 or even print 21:55:07 Wait 21:55:14 What does seq *do* with its first argument? 21:55:30 evaluates it to weak head normal form 21:55:36 !haskell print (undefined `seq` ()) 21:55:37 *** Exception: Prelude.undefined 21:55:56 which means the top constructor, for an ordinary data type 21:55:57 What does it do with the weak head normal form it gets? 21:56:05 throws it away :D 21:56:22 And evaluating an argument by definition has no side effects 21:56:42 cpressey: if it involves evaluating variables, the results are cached 21:56:51 -!- Gregor-P has quit (Ping timeout: 264 seconds). 21:57:02 Bah! seq is a hoax! 21:57:39 ok there is _one_ case where seq matters 21:57:50 I may have misspoken before 21:57:52 !haskell undefined `seq` "Test" 21:57:53 *** Exception: Prelude.undefined 21:58:46 cpressey: semantically seq does nothing other than check whether the first argument is undefined before returning the second 21:59:44 however this has the _practical_ consequence of evaluating the thunk for the first argument, with all usual caching results and plugging of memory leaks 22:00:08 Aren't monads essentially dependent types? 22:00:25 Phantom_Hoover: no... 22:00:38 .K 22:00:54 types don't depend on values in haskell, which is the definition of dependent typing 22:01:28 * Sgeo__ knows what monads are, but not much of what dependent types are 22:01:38 Oh, dependent on values rather than types. 22:02:11 Sgeo__, like oerjan said, they're types that depend on values. 22:02:21 -!- zzo38 has joined. 22:03:04 So, a dependent type could be a number between 1 and 10? 22:03:06 Monads are dependent values. And seq is a hoax! 22:03:28 i recall someone noted once that ghc doesn't even guarantee evaluating a _first_ in a `seq` b 22:03:33 Sgeo__: Yes, (Number x) => x >= 1 && x <= 10 -- is an example. 22:03:35 What I should do is write a external program that you can pipe output of TeX into, so that it can interpret the output of \showbox and other things, and then allow you to re-read the reults using \read command and so on 22:04:17 ghc's strictness analysis could cause it to rearrange things 22:04:19 Are there any languages that use dependent types? 22:04:22 (What should I call this program?) 22:04:29 Sgeo__: Coq, Agda, Epigram 22:04:31 Sgeo__, Coq, Epigram, Agda. 22:04:43 Some others, but those are the big ones. 22:05:04 Coq is a mathematical proof thing, right? So I'll just skip it. What are Epigram and Agda like? 22:05:22 oerjan: Yeah, pseq is the one with that guarantee. 22:05:31 Sgeo__, mathematical proof things but slightly less so. 22:05:35 (Perhaps "pipetex" will do? Or do you have a better idea?) 22:06:33 Sgeo__: the thing is dependent typing basically forces you to do a lot of proving anyhow afaik 22:07:35 because you are basically allowing your types to be mathematical statements about the relationships of values, which must be proved to show the program is well-typed 22:07:54 Why is there no decent documentation for Epigram 2? 22:08:29 Phantom_Hoover: There's the literate Haskell source, formatted into a PDF. It's a real hoot. 22:08:51 So, it's not feasable to write a game in a dependent typing language? 22:08:58 Sgeo__, not really. 22:09:08 Sgeo__: Define "game"? 22:09:15 Why the heck would it not be? 22:09:19 cpressey: i recall from a previous comment that your last sentence there might _not_ be sarcasm? :D 22:09:34 ("It's a real hoot.") 22:09:53 oerjan: I think "a real hoot" has a complex and subtle meaning in my idiolect 22:09:58 Sgeo__, Coq, Agda and probably Epigram can't have recursive functions like in Haskell, so writing a game would be nigh-on impossible. 22:10:09 It is certainly enjoyable *on some level* to read. 22:10:15 Phantom_Hoover: codata codata codata 22:10:28 oerjan, yes, I know, but I don't know how that works. 22:11:19 Don't know how a facility works == there is no facility to do what that facility does? 22:11:34 for one thing, it allows you to represent processes that might go on forever, as long as finding the _next_ item always terminates 22:11:38 Phantom_Hoover: Even ignoring codata and such -- I'm pretty sure you could write some games without recursive functions. 22:11:52 cpressey, probably, I suppose. 22:12:01 Tic-tac-toe is total, for example. 22:12:06 indeed there are many games which terminate 22:12:14 Connect 4. 22:12:23 (more interesting than tic tac toe) 22:12:34 chess is also terminating 22:12:47 oerjan, point taken 22:12:53 cpressey, too, 22:12:53 Does finding the next item have to provably always terminate? 22:12:58 oerjan: only because there is a recursion limit :) 22:13:00 Sgeo__, yes. 22:15:17 cpressey: well yeah and also a 3-time repetition rule 22:16:57 oerjan, you can get around that with the Thue-Morse sequence and the knights. 22:17:07 Sgeo__: there is afaik also a trick you can do for nonterminating things - use a codata based monad of the form data Delay a = Now a | Later (Delay a) 22:17:33 I'm more familiar with Büchi automata than codata, but you could probably use them instead to model a process that is supposed to "never" terminate, like a web server. 22:17:48 Phantom_Hoover: are they really repeating _whole_ subgames? i always assumed it was just 3 repeating positions, at any time 22:18:21 Sgeo__: that way if a computation cannot be proved to terminate, you can just do pieces of it at a time 22:19:48 There is a 50-move rule in chess, also. 22:19:57 Sgeo__: anyway in dependent typing they like to have the default be that things always terminate, because otherwise you get trouble with checking the _proofs_ of things 22:20:01 (Although you could ignore that and other rules in some causes if you need to) 22:20:16 zzo38: i assumed that was what cpressey meant by recursion limit 22:20:24 only threefold reitition is required to make chess terminate 22:20:34 In any case, you're assuming that a termination checker will notice that all chess games terminate. 22:20:40 That's far from certain. 22:20:46 I think also only 50 moves is required as well 22:21:03 (that is to say that either rule will guarantee a conclusion 22:21:26 Phantom_Hoover: this being dependent typing, you probably have to write the proof yourself 22:22:21 oerjan, so noöne sane would write a chess game in it. 22:22:46 Funnily enough, noone sane is here 22:23:01 s/sane/who wasn't a masochist/ 22:23:38 Sgeo__: basically iiuc if your _proof_ is itself well-typed and is known to terminate, then you don't have to check it at runtime, but this breaks down if your proof may not terminate for all values 22:23:43 But all the masochists are too busy writing stuff in C++. 22:23:48 iiuc? 22:24:19 if i understand correctly 22:30:44 Heh, codata actually seems pretty neat. 22:31:08 it's like lazy data structures in a way 22:31:47 -!- Phantom_Hoover has left (?). 22:31:48 Very much so. 22:31:50 things still need to terminate, but only as far as you evaluate them 22:31:54 -!- Phantom_Hoover has joined. 22:33:27 oerjan: What do you mean by "things"? 22:33:46 oerjan, how does coinduction work, then? 22:33:58 Now instead of C++ you have to write things in C+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-..... 22:35:08 -!- CakeProphet has quit (Quit: leaving). 22:37:36 cpressey: evaluations/pure computations? 22:38:06 Phantom_Hoover: um i think i'm getting close to over my head here... 22:38:38 hello sweethearts 22:38:45 is alise not here again. :< 22:39:09 but with induction you build things up by assembling a finite number of pieces 22:39:39 with coinduction you deconstruct things by taking them _apart_ to a finite level down 22:39:46 cheater99: seems accurate 22:40:32 oerjan: Is it the case that codata must be infinite? It seems like it should be (being the dual of data, which must be finite) 22:40:52 But apparently not? 22:41:06 cpressey: i don't think so, more like data is a subset of codata 22:41:26 k 22:42:02 like the rationals are a subset of the computable reals (i think if you use continued fraction representation, they _are_ precisely data and codata versions, respectively) 22:42:44 of course you could easily force codata infinite by not having any base constructors... 22:42:59 data Stream a = Stream a (Stream a) 22:43:09 oerjan: You just blew my mind (or would have, if I had any left.) 22:44:49 omg 22:44:49 has anyone seen the ad for 'legend of aang'? 22:44:49 is it only me or is the part about them having to join their forces 22:44:49 just like the intro to captain planet??? 22:44:49 GO PLANET!! 22:47:29 -!- oerjan has quit (Quit: Good night). 22:49:15 Legend of Aang? Um, the series is finished 22:49:54 -!- Flonk_ has joined. 22:50:06 >_> 22:50:15 >=> 22:50:53 * Sgeo__ glares suspiciously at Flonk_ glaring suspiciously 22:50:55 >≡> 22:51:38 >≣> 22:51:45 :D 22:51:46 -!- Flonk has quit (Ping timeout: 265 seconds). 22:51:49 -!- Flonk_ has changed nick to Flonk. 22:52:42 -!- Gregor has quit (Ping timeout: 260 seconds). 22:52:50 Why is charmap broken now? 22:53:09 Hmm, apparently, there's a game Legend of Aang 23:01:17 I have a font on my computer named "Aegyptus" and I am unsure how to work it 23:17:55 -!- GreaseMonkey has joined. 23:35:07 -!- MigoMipo has quit (Quit: Quit). 23:36:01 -!- tombom has quit (Quit: Leaving). 23:39:13 -!- augur has joined. 23:44:28 -!- Gregor-L has joined. 23:44:54 Gregor-L: I know W and P, but L? 23:45:40 It's an impostor! 23:51:16 -!- Mathnerd314 has quit (Ping timeout: 276 seconds). 23:51:29 -!- zzo38 has quit (Remote host closed the connection). 23:55:36 Maybe his ferry sunk, and L stands for Lifeboat. 23:59:46 Come, let's be reasonabl. 23:59:55 s/bl/ble/