< 1280966594 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :10:38:41 I don't recall; based on the name only, it may have been another EgoBot instance. < 1280966599 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it was immibis' annoyance machine < 1280966679 0 :Mathnerd314!unknown@unknown.invalid QUIT :Ping timeout: 264 seconds < 1280966738 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wants to fix a typo in Pharo without breaking other people's code < 1280966760 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :doit < 1280966770 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :The latter part is what's stopping me < 1280966779 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :I'm looking at this changes thing, and I see code changes < 1280966783 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Not just my typo fix < 1280966799 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Why does Epigram HATE me? < 1280966881 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: Because it is a sensitive person. < 1280966974 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Ok, so the changeset against Pharo is just the change I want, but the changeset against PharoInbox isn't < 1280966980 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Do I just save to PharoInbox anyway? < 1280966983 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is scared < 1280967351 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Saved < 1280967484 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :http://www.squeaksource.com/PharoInbox/ < 1280968338 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Remote host closed the connection < 1280968405 0 :deathmoniac!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1280968406 0 :Phantom_Hoover!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1280968473 0 :deathmoniac!~turing@200-161-62-244.dsl.telesp.net.br JOIN :#esoteric < 1280968734 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Wow, the Star Wars Holiday Special is considered canon. < 1280968744 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :"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." < 1280969139 0 :AnMaster!unknown@unknown.invalid QUIT :Quit: ZNC - http://znc.sourceforge.net < 1280969163 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Aaaarghthathurts < 1280969180 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :But is AWESOME. < 1280969234 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Also, it kinda impresses me how much better output pdfTeX generates than straight TeX. < 1280969247 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :http://texblog.net/latex-archive/layout/pdflatex-microtype/ Seriously, just look at this. < 1280969270 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :The lesson: Knuth is stupid. < 1280969278 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(granted, the difference should be nowhere near as notable on normal-width columns, but... Dang.) < 1280969306 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1280969325 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: KNUTH IS BASICALLY A RETARD WHO KNOWS NOTHING < 1280969330 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :what has he ever done for us, also the romans < 1280969331 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Hah. < 1280969415 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :alise: have you seen the iTeX video? < 1280969440 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :coppro: no, but i don't expect the joke to be that hilarious < 1280969450 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION finally gets round to reading Five-Minute Voyager, instantly falls in love < 1280969451 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Chakotay: Ha! Chakotay 1, Cardassians 0! < 1280969451 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Tuvok: (detecting the wave) Um, you might want to reconsider that.... < 1280969451 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Janeway: Here's the deal -- betray your Maquis pals, and I'll bust you out of here. < 1280969451 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Paris: No. On second thought, yes. < 1280969509 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :link? < 1280969526 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://www.fiveminute.net/voyager/; http://www.fiveminute.net/voyager/fiver.php?ep=caretaker < 1280969586 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I keep copying a quote but my mouse drags it further and further and eventually I end up trying to quote the whole thing < 1280969767 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :"Janeway promotes B'Elanna for punching Carey in the face." < 1280969895 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Kazon: Can we keep the water? < 1280969895 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Neelix: Hmm...no. < 1280969954 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Wave is dying? < 1280969974 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Janeway: Oof! Hey, a shockwave! < 1280969974 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Tuvok: Yep. Came from that planet. < 1280969974 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Janeway: It's still emitting harmful radiation, so let's go towards it. < 1280970021 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Paris: I thought we weren't supposed to break the Prime Directive. < 1280970021 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Janeway: We already did, so now we can do it as much as we want. < 1280970026 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :s/ $// < 1280970048 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :There's a TNG that I liked that I want to see the 5min of < 1280970089 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It sort of only works on terrible shows. < 1280970097 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :But here: http://fiveminute.net/nextgen/ < 1280970109 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :It was a Wesley episode < 1280970113 0 :Wamanuz3!unknown@unknown.invalid QUIT :Remote host closed the connection < 1280970117 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :All of the commentary is making fun of that :/ < 1280970122 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :http://www.fiveminute.net/voyager/fiver.php?ep=theomegadirective < 1280970123 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :oops < 1280970125 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Neelix: Okay -- just had to get a line in somewhere in this episode. < 1280970156 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: which one? < 1280970162 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :http://fiveminute.net/nextgen/fiver.php?ep=thegame < 1280970410 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :grr at 403 < 1280970447 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Janeway: So the plan is to fly right into the hands of the Kazon. Any objections? < 1280970447 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Tuvok: Nine. < 1280970493 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Isn't Year of Hell generally considered good? < 1280970528 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Voyager is universally terrible. < 1280970554 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Some episodes are alright in isolation. < 1280970572 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Then you realise that Janeway is a crazy sociopath with multiple personalities^Wwriters. < 1280970587 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :I haven't seen enough episodes to realize that, I think < 1280970609 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :I remember reading that the actor actually complained? < 1280970615 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Doc: Bad news, baby. This baby isn't Chakotay's. < 1280970615 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Seska: $#@*%! It must be Culluh's! < 1280970615 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :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! < 1280970616 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Computer: Can I help it if I'm a 'shipper? < 1280970633 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: Chakotay's wooden playing is purposeful; the actor hated the show and really didn't give a shit. < 1280970643 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Janeway's actor (who cares about names?) also disliked it quite a bit. < 1280970654 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Basically it's great to watch because it's hilariously bad. < 1280970669 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :whoa < 1280970673 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Kes: I wanna get captured. < 1280970673 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Neelix: Look, we've discussed this. I'm not comfortable with a relationship involving S&M. < 1280970673 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Kes: No, by the cavemen. < 1280970673 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Neelix: Don't change the subject to exclusivity. < 1280970720 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Culluh: I love all the gadgets on this ship. Watch this -- I can turn the ceiling fan on and off. < 1280970720 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Seska: Maj, someone on board is using Maquis sabotage tricks! < 1280970720 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Culluh: Fan goes on, fan goes off. Fan goes on, fan goes off. < 1280970723 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MUST. QUOTE. EVERYTHING. < 1280970761 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Doc: I'm afraid Suder was killed. < 1280970761 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Tuvok: Guess I should say something Vulcan-like. (ahem) "Live long and prosper." < 1280970761 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Doc: I don't think you heard me. He's dead. < 1280970761 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Tuvok: If you can't find it in your heart to wish him a long life, keep your mouth shut. < 1280970799 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Data: It is made of anti-time. And it is giving off anti-time radiation. < 1280970801 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Picard: Shhh! Janeway will hear you! < 1280970851 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1280970863 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :http://pastie.org/1076332 CTO < 1280970876 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Data: Aye, sir. Ooooooo! It appears the anomaly has been created by three converging tachyon beams from three different times. < 1280970879 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Picard: What an amazing coincidence! I've been in three different times and fired tachyon beams in this exact spot. < 1280970882 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Data: Perhaps those phenomena are related. < 1280970884 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Picard: I don't see how, but I'll switch to my future self. He's had more time to think about it. < 1280970891 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :my new toy < 1280970925 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :C subset jibberish generator < 1280970930 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :http://pastie.org/1076334 < 1280970934 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Janeway: Mr. Kim, the date! I need to know the exact date! < 1280970934 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Kim: November 23rd...1996! < 1280970934 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Chakotay: November 23rd. The day before First Contact was released. < 1280970934 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Janeway: That's what they came here to do! Stop First Contact! Ensign, where is the launch scheduled to take place? < 1280970966 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :hahaha < 1280971002 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Starling: Ha ha! I've stolen your doctor! < 1280971003 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Everyone: (over the comm) Yay! < 1280971003 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Starling: I was expecting "Uh oh" or "Oh nuts" or something. < 1280971039 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Future Riker: Take us in, Mr. Data. Hey, look, the other two Enterprises are on the viewscreen. < 1280971042 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :(BOOM) < 1280971045 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Future Riker: Other one Enterprise. < 1280971047 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :(BOOM) < 1280971050 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Future Riker: Forget it. < 1280971053 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Future Crusher: Wait! There's a pattern here! If it holds, then -- < 1280971055 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :(BOOM) < 1280971088 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1280971098 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ekhm < 1280971104 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :CCCCCCCCC... < 1280971183 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Chakotay: Seen any cloaked fleets lately? < 1280971183 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Seven: Words fail me. Hey, a transmission. < 1280971211 0 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com JOIN :#esoteric < 1280971282 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Paris: I found Chakotay and Harry in the morgue. < 1280971282 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Tuvok: Their sacrifice will not be forgotten. < 1280971282 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Paris: They aren't dead. < 1280971282 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Tuvok: Damn. < 1280971320 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1280971350 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric : http://sprunge.us/fOZT < 1280971358 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :(Please look at it? Make comment of it? etc?) < 1280971390 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Admiral: Okay, class, ask me some questions. < 1280971390 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Student 1: Why are you just going by "Admiral"? < 1280971390 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Admiral: "Admiral Janeway" takes too long to type. Next? < 1280971390 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :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? < 1280971390 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Admiral: I plead the Fifth. < 1280971400 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: I see. < 1280971406 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: It's ... TeXy. < 1280971439 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: Looks quite cool. < 1280971452 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :The \expandafter command is a useful command in TeX. Also strange things such as \catcode110=14 < 1280971472 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Is \catcode110=14 more strange or less strange than using prompt().toString() in JavaScript? < 1280971514 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It's ... what? < 1280971526 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Are apples more or less strange than trees? < 1280971562 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1280971568 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1280971590 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1280971625 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :is there any material on how to use TeX as a general-purpose programming language? without the typesetting crud? < 1280971649 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :... < 1280971650 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :olsner: I don't know. But I might have partially done so in yesweb (so look at that for an example) < 1280971678 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Borg: We're Borg. Get assimilated. Resistance sucks. < 1280971679 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Janeway: Our armoured ship will now kick your collective butt. < 1280971679 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Borg: Oh, fiddlesticks. < 1280971687 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :olsner: <3 you for just /thinking/ that < 1280971701 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Resistance is futile (if less than 1ohm) < 1280971701 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :alise: :) < 1280971727 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :\loop ... \ifnum \foo < n \repeat < 1280971736 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :First TeX control structure I have now learned :P < 1280971755 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Is "\advance \x by 1" Plain TeX or an intrinsic? < 1280971772 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :It is built-in. < 1280971786 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :It is easy to check: Start TeX and then enter "\show\advance" at the prompt and it will tell you. < 1280971813 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :coppro: haha, someone made Voyager Virtual Season 8/9 < 1280971833 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :alise: this is brilliant < 1280971837 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :\loop is not built-in, however. < 1280971857 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :hmm, \catcode is some kind of tr applied to ... the input? do tex programs have input? < 1280971876 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :olsner: \catcode is applied any more of the program that it reads itself. < 1280971884 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :It also affects \read and \write commands. < 1280971895 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :What's the one with the time loop? < 1280971913 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :[TNG] < 1280971913 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: how do you declare a variable in tex? < 1280971914 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :\catcode is used to tell TeX what category the characters in the program belong to. < 1280971916 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :groundhog day-style time loop? < 1280971921 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :olsner, yesish < 1280971928 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :alise: You can't, however, you can do a few similar things. < 1280971929 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :every damn scifi needs to have one of those episodes... < 1280971946 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :olsner: of course < 1280971965 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :alise: \newcount \newbox and so on allocate registers and assign names to them. < 1280971975 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Found it < 1280971978 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Cause and Effect < 1280971987 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :You can also assign meanings to control sequences, and create macros. < 1280971989 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: ok, so catcode32=9 says that spaces are in "category 9"? rather than mapping spaces to tabs? < 1280971999 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :! Paragraph ended before \loop was complete. < 1280972000 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Sniff. < 1280972001 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :char c(char j, char dln5, char b1, char v7) { < 1280972002 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric : while(!531 / 623 != 428 < 913) { < 1280972002 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric : yf5(802-66); < 1280972002 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric : }; < 1280972002 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :} < 1280972004 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :olsner: Yes. That is what \catcode32=9 means. < 1280972005 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :oops < 1280972007 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :sry < 1280972036 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :http://www.fiveminute.net/nextgen/fiver.php?ep=causeandeffect < 1280972039 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: so < 1280972042 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :\newcount \n < 1280972043 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :then later < 1280972045 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :\advance \n by 1? < 1280972051 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :alise: Yes. < 1280972062 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*\loop \n \advance \n by 1 \ifnum \n < 10 \repeat < 1280972062 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :! Missing number, treated as zero. < 1280972062 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Hmm. < 1280972067 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :That creates a integer register and increments the value. < 1280972093 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1280972125 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Does it start at 0 or 1/ < 1280972126 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*or 1? < 1280972140 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :It starts at zero unless you explicitly tell it otherwise. < 1280972144 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :...also, can I assign it with \n=1? < 1280972148 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Or is it \newcount \n=1? < 1280972156 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :alise: Assign it with \n=1 < 1280972177 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :These things don't make good episode summaries < 1280972186 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Also, you need to print a space after each number, so put \space after \the\n < 1280972211 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: Does it have to be \the every single time I mention n, ever? < 1280972215 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Even in ifnum? < 1280972239 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :alise: No. < 1280972254 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :When do I need \the, then? < 1280972285 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :You need \the whenever it is not expecting a register, and you have to instead convert it to a string to print it. < 1280972310 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :\the just converts the value of whatever register comes after it to a string < 1280972337 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Yay, my program works! < 1280972339 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :\newcount \n < 1280972339 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :\loop < 1280972339 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : \the\n \space < 1280972339 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : \advance \n by 1 < 1280972339 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :\ifnum \n < 10 \repeat < 1280972405 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :alise: Now you learned. < 1280972410 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Indeed I did. < 1280972416 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Is there a while loop rather than a do/while? < 1280972474 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :alise: Yes, just put the condition at the top immediately after \loop instead of immediately before \repeat I think that will work too < 1280972507 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Are while or do/while loops more common/idiomatic? < 1280972547 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :alise: I don't actually know, but I think the condition at the end is more common in TeX, as far as I know. < 1280972564 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :loop < 1280972568 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : the n space < 1280972571 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : advance n by 1 < 1280972573 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ifnum n < 10 repeat < 1280972582 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :So, if you removed the \s and replaced "the" with $... < 1280972601 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :newcount n < 1280972601 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :loop < 1280972601 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : $n space < 1280972601 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : advance n by 1 < 1280972601 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ifnum n < 10 repeat < 1280972601 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :bye < 1280972605 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Yup, TeX is pretty normal. :P < 1280972687 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I had better sleep. < 1280972717 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Huh, TeX's programming stuff isn't as awful as I thought. < 1280972734 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It's a bit poor, but... I can actually imagine using that. < 1280972738 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: How awful did you think it was? < 1280972764 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: Along the lines of "It's TC by accident". < 1280972850 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Goodnight. < 1280972857 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Bye. < 1280972858 0 :alise!unknown@unknown.invalid QUIT :Quit: Leaving < 1280972878 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1280972901 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: Still, it appears to be not 100% revolting. < 1280972914 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :(You can see the codes for yesweb to see how a full program is written) < 1280972924 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: I also think it is not 100% revolting < 1280972975 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :http://www.explosm.net/comics/2130/ Hahahahaha this comic is exactly why I read C&H < 1280972981 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It's sub-par, but eh. 70s language being usable suffices. :P < 1280973362 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :I want to figure out if there is some way to do something at each word boundary < 1280973383 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :is it a good thing or a bad thing that to stop my media player, I do 'killall ogg123'? < 1280973614 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :coppro: If done as a normal user, quite a mundane thing. < 1280973627 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Overkill, but mundane. < 1280973950 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Do you think yesweb is better or worse than noweb and Newfangle? < 1280974000 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :(I have tested yesweb, and it does work. So don't complain that it doesn't work.) < 1280974069 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: Yes, that is about it. :) < 1280974258 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :How strange do you consider prompt().toString() to be in JavaScript, anyways? (I have used this) < 1280974400 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric : What's the point of the toString() bit? < 1280974406 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION isn't exactly a Javascript expert < 1280974425 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: Yes, that is the part that seems strange < 1280974431 0 :Mathnerd314!~mathnerd3@nat-wireless-guest-reg-158-122.bu.edu JOIN :#esoteric < 1280974438 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :But it does actually have a use there (even though the return value of prompt() is already a string) < 1280974440 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1280974474 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: Yes it does, but the return of prompt() is already a string anyways! < 1280974489 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: String.prototype.toString is id. < 1280974538 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Not that that's really an answer :P < 1280974549 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: Yes, it is, but there is still a reason for prompt().toString() see if you can think of it. < 1280974554 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :(If you cannot, I can answer you) < 1280974577 0 :Mathnerd314!unknown@unknown.invalid QUIT :Disconnected by services < 1280974586 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Oh, I forgot that prompt() is a builtin function, doy. < 1280974597 0 :Mathnerd314_!~mathnerd3@nat-wireless-guest-reg-158-122.bu.edu JOIN :#esoteric < 1280974598 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :I don't know what prompt() returns if you close it without hitting OK, probably null. < 1280974607 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :And if that's the case, then it doesn't always return a string. Not sure though. < 1280974616 0 :Mathnerd314_!unknown@unknown.invalid NICK :Mathnerd314 < 1280974722 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: Yes you are right about that. And do you know what null.toString() does? < 1280974746 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Off the top of my head, I suspect it's one of: "", "null" or maybe "0" < 1280974769 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :All wrong. < 1280974771 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Ohwait < 1280974773 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Except it's null X-P < 1280974777 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :So that throws an exception. < 1280974788 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Yes, right. < 1280974813 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Now do you understand what prompt().toString() is for? Hopefully now you do. < 1280974827 0 :zzo38!unknown@unknown.invalid QUIT :Quit: zzo38 < 1280974873 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Seems like a silly way to coerce an exception out of that though ... < 1280974874 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Why would you want to blow up and die just because some moron didn't click Ok? < 1280974881 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Egg-zactly. < 1280974893 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION blows up and dies Gregor < 1280974935 0 :Gregor-P!unknown@unknown.invalid QUIT :Quit: Bye < 1280975022 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION will be watching Futurama in approx 38 min < 1280975051 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Thank you for the update. < 1280975058 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Please keep us apprised of all Futurama-related news. < 1280975070 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Good news everybody! < 1280975100 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Well played, sir. Well played. < 1280975141 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: hey, that's a registered trademark! < 1280976102 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :coppro: Genericisation bitch. < 1280976464 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :"the process scheduler in Squeak/Pharo just isn't built to handle a crazy amount of threads" < 1280976469 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Opposite of Erlang then? < 1280976496 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1280977077 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION looks at new cell phones < 1280977229 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :And... I was wrong about the day of the week < 1280978001 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Was about to ask if I should consider Self, but: < 1280978002 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :"we would be very interested in anyone prepared to make a Windows port." < 1280978880 0 :rodgort!unknown@unknown.invalid QUIT :Quit: Coyote finally caught me < 1280979040 0 :rodgort!~rodgort@li14-39.members.linode.com JOIN :#esoteric < 1280980082 0 :MizardX-!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1280980309 0 :MizardX!unknown@unknown.invalid QUIT :Ping timeout: 252 seconds < 1280980320 0 :MizardX-!unknown@unknown.invalid NICK :MizardX < 1280980334 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ok peeps < 1280980338 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :im in florida, on comcast < 1280980343 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :give some stuff to torrent < 1280980343 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1280980758 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Porn. Don't even need torrent. < 1280980776 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The Internet *is* for it. < 1280981078 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Clearly he is downloading porn even as we speak. < 1280981082 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :A true trooper. < 1280981126 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i am download linguist porn < 1280981136 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :... how dull X-P < 1280981144 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :And non-bandwidth-consuming. < 1280981210 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: It's *cunning* linguist porn, at least. < 1280981210 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :> Gregor.OS < 1280981225 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Hyuk < 1280981230 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: yes, it features noam chomsky and tanya reinhart. < 1280981262 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :kratzer comes in for a lesbian scene somewhere along the way < 1280981271 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :Gregor! < 1280981273 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :whats your OS :| < 1280981280 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Oh, is that what that was supposed to mean. < 1280981284 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ofcourse < 1280981285 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Debian via sidux. < 1280981293 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ok you're no use to me then. < 1280981303 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric ::'( < 1280981307 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :I'M STILL A MAN, DAMN IT < 1280981320 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i was going to ask if you wanted to toy around with an app me and some friends are making < 1280981328 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :see what kind of fun plugins for it you could make < 1280981329 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :but nevermind < 1280981353 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :... You use OS X? < 1280981355 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :UNCLEAN < 1280981358 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1280981359 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :very clean < 1280981360 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1280981372 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Even my soon-to-be-had phone shall run Linux! < 1280981375 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1280981397 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :android? < 1280981417 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :<3 Android < 1280981442 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Palm WebOS, actually. < 1280981451 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :... < 1280981454 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Fail. < 1280981463 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: $0.00 is not fail < 1280981685 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :I've read good things about the UI < 1280981778 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It uses the freaking Konami code to unlock it! < 1280981969 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :I think that's an auto-win < 1280981973 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ACTION ducks < 1280982054 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :holy crap yesss < 1280982057 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :achievement unlocked 2 < 1280982478 0 :MizardX-!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1280982718 0 :MizardX!unknown@unknown.invalid QUIT :Ping timeout: 252 seconds < 1280982746 0 :MizardX-!unknown@unknown.invalid NICK :MizardX < 1280983981 0 :CakeProphet!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1280984880 0 :MizardX-!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1280985136 0 :MizardX!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1280985150 0 :MizardX-!unknown@unknown.invalid NICK :MizardX < 1280985573 0 :oerjan!~oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1280987296 0 :MizardX-!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1280987536 0 :MizardX!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1280987566 0 :MizardX-!unknown@unknown.invalid NICK :MizardX < 1280989694 0 :MizardX-!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1280989923 0 :MizardX!unknown@unknown.invalid QUIT :Ping timeout: 246 seconds < 1280989933 0 :MizardX-!unknown@unknown.invalid NICK :MizardX < 1280990855 0 :cheater99!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1280991274 0 :oerjan!unknown@unknown.invalid QUIT :Quit: leaving < 1280991401 0 :cheater99!~cheater@ip-80-226-13-11.vodafone-net.de JOIN :#esoteric < 1280992339 0 :MizardX!unknown@unknown.invalid QUIT :Quit: reboot < 1280992665 0 :MizardX!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1280993070 0 :Sgeo__!~Sgeo@ool-18bf618a.dyn.optonline.net JOIN :#esoteric < 1280993202 0 :Sgeo_!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1280993235 0 :Sgeo!~Sgeo@ool-18bf618a.dyn.optonline.net JOIN :#esoteric < 1280993374 0 :Sgeo__!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1280993463 0 :Sgeo_!~Sgeo@ool-18bf618a.dyn.optonline.net JOIN :#esoteric < 1280993664 0 :Sgeo!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1280993814 0 :relet!unknown@unknown.invalid QUIT :Quit: Leaving. < 1280993827 0 :Sgeo__!~Sgeo@ool-18bf618a.dyn.optonline.net JOIN :#esoteric < 1280993992 0 :Sgeo_!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1280995199 0 :clog!unknown@unknown.invalid QUIT :ended < 1280995200 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1280996461 0 :tombom!tombom@wikipedia/Tombomp JOIN :#esoteric < 1280999460 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Crusher: Computer, what just happened? < 1280999460 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Computer: The spherical universe we occupy is collapsing. Its periphery has just obliterated the forward edge of the ship's saucer section. < 1280999460 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Crusher: Does that mean that Ten-Forward is now the Restaurant at the End of The Universe? < 1280999460 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Computer: Very well put. < 1280999956 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Riker: Cry me a river. Data, Worf, go get a shuttle ready and finalize your wills. Wesley, bring me fifteen kilos of tissue paper. < 1280999956 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Wesley: Why, sir? < 1280999956 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Riker: In case Deanna takes me literally < 1281000021 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :<3 < 1281000245 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is rather upset at the Five-Minute Stargate link not working < 1281000286 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Well, there's one ep: http://www.fiveminute.net/stargate/eps/2010.htm < 1281000292 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :There may be more, I guess < 1281000337 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Hansen: You're just such a screwup. < 1281000337 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Riker: Yes, sir. < 1281000337 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Hansen: Oh, and I promote you to Captain. < 1281000338 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Riker: Yes, sir. < 1281000414 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Meh, the 5min Stargate ep was boring < 1281000458 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :the arrakkis line is good < 1281000502 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Not referring to the movie one < 1281000506 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :I liked that one < 1281000513 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Was referring to the 2010 ep < 1281000620 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1281000624 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Crusher: Jean-Luc? Are you in there? < 1281000624 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Locutus: Foolish human. Picard no longer exists. < 1281000624 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Crusher: Oh, fine. Can I get you a drink? < 1281000625 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Locutus: Tea, Earl Grey, hot. --Dammit! < 1281000782 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1281000987 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :I am convinced that Smalltalk would have been the best language for this project < 1281000994 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :But yeah... < 1281001086 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Why am I awake? < 1281001099 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :nobody knows < 1281002597 0 :AnMaster!~AnMaster@unaffiliated/anmaster JOIN :#esoteric < 1281003086 0 :comex!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1281003152 0 :comex!comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281003748 0 :MigoMipo!~John@84-217-10-111.tn.glocalnet.net JOIN :#esoteric < 1281004061 0 :oerjan!~oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1281004347 0 :comex!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1281004360 0 :Slereah!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1281004362 0 :BeholdMyGlory!~behold@unaffiliated/beholdmyglory JOIN :#esoteric < 1281004530 0 :comex!comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281004701 0 :Wamanuz!~Wamanuz@78-69-168-43-no84.tbcn.telia.com JOIN :#esoteric < 1281004703 0 :Slereah!~jews@ANantes-259-1-96-197.w92-139.abo.wanadoo.fr JOIN :#esoteric < 1281004763 0 :kar8nga!~kar8nga@78.104.81.124 JOIN :#esoteric < 1281005730 0 :comex!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1281006032 0 :comex!comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281006451 0 :comex!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1281006548 0 :comex!comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281006755 0 :oerjan!unknown@unknown.invalid QUIT :Quit: leaving < 1281008046 0 :Phantom_Hoover!~phantomho@92.233.174.117 JOIN :#esoteric < 1281008860 0 :kar8nga!unknown@unknown.invalid QUIT :Remote host closed the connection < 1281011005 0 :jcp!unknown@unknown.invalid QUIT :*.net *.split < 1281011236 0 :jcp!~jw@bzflag/contributor/javawizard2539 JOIN :#esoteric < 1281013225 0 :Phantom_Hoover!unknown@unknown.invalid QUIT :Quit: Leaving < 1281013244 0 :Phantom_Hoover!~phantomho@92.233.174.117 JOIN :#esoteric < 1281014019 0 :comex!unknown@unknown.invalid QUIT :Ping timeout: 264 seconds < 1281014447 0 :comex!comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281014763 0 :comex!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1281014916 0 :comex!~comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281015245 0 :kar8nga!~kar8nga@k-213.vc-graz.ac.at JOIN :#esoteric < 1281015393 0 :comex!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1281015445 0 :mquin_!~mquin@freenode/staff/mquin JOIN :#esoteric < 1281015829 0 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1281015869 0 :comex!comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281015870 0 :comex!unknown@unknown.invalid QUIT :Excess Flood < 1281015918 0 :comex!comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281015951 0 :mquin!unknown@unknown.invalid QUIT :Quit: Changing server < 1281016447 0 :mquin_!unknown@unknown.invalid NICK :mquin < 1281016932 0 :AnMaster!unknown@unknown.invalid QUIT :Quit: ZNC - http://znc.sourceforge.net < 1281017275 0 :mquin!unknown@unknown.invalid PART #esoteric :? < 1281017888 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric : Yes, and PCRE throws errors when it hits these limits. PHP interprets these errors as successes. < 1281017904 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if anyone ever asks me what's wrong with PHP, I now have this to refer to < 1281017996 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, better version of the same quote by the same person: < 1281018000 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric : 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. < 1281018050 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :`eval factor 22201 < 1281018051 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :No output. < 1281018058 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :`help < 1281018059 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :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/ < 1281018064 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :`run factor 22201 < 1281018066 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :22201: 149 149 < 1281018373 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :`factor 22201 < 1281018374 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :22201: 149 149 < 1281018441 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Huh, found fax. < 1281019066 0 :deathmoniac!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1281019140 0 :deathmoniac!~turing@201-42-212-65.dsl.telesp.net.br JOIN :#esoteric < 1281020223 0 :ais523_!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1281020257 0 :comex!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1281020283 0 :ais523!unknown@unknown.invalid QUIT :Disconnected by services < 1281020284 0 :ais523_!unknown@unknown.invalid NICK :ais523 < 1281020624 0 :comex!comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281020896 0 :comex!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1281020949 0 :comex!comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281021156 0 :Flonk!~chatzilla@80-123-44-39.adsl.highway.telekom.at JOIN :#esoteric < 1281022221 0 :Phantom_Hoover!unknown@unknown.invalid QUIT :Quit: Leaving < 1281022332 0 :songhead95!126d0127@gateway/web/freenode/ip.18.109.1.39 JOIN :#esoteric < 1281022352 0 :comex!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1281022405 0 :songhead95!unknown@unknown.invalid PRIVMSG #esoteric :whats the egobot command symbol? < 1281022415 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :! < 1281022417 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!help < 1281022417 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . < 1281022420 0 :comex!comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281022681 0 :relet!~thomas@c905DBF51.dhcp.bluecom.no JOIN :#esoteric < 1281022855 0 :cpressey!~CPressey@173-9-215-173-Illinois.hfc.comcastbusiness.net JOIN :#esoteric < 1281023210 0 :songhead95!unknown@unknown.invalid PRIVMSG #esoteric :how do you run on hackego < 1281023334 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!bf ,[.,]!Hello, world! < 1281023342 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, that's egobot < 1281023350 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hackego isn't really good for running languages < 1281023355 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, where's egobot gone? < 1281023472 0 :comex!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1281023477 0 :songhead95!unknown@unknown.invalid QUIT :Ping timeout: 252 seconds < 1281023520 0 :comex!comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281023944 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :It's run away to join the circus! < 1281024036 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :I always knew it was flighty *sigh* < 1281024048 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!help < 1281024048 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . < 1281024056 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, maybe I just messed up my program? < 1281024060 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!bf_txtgen test < 1281024062 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Also, its !bf interpreter doesn't accept !input :P < 1281024068 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :61 +++++++++++++[>+>+++++++++>++++++++><<<<-]>>-.>---.<-.+.<---. [48] < 1281024093 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: aha < 1281024096 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it always used to, didn't it? < 1281024100 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or was that fungot? < 1281024101 0 :fungot!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1281024147 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Must've been fungot. < 1281024149 0 :fungot!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1281024173 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!bf +++++++++++++[>+>+++++++++>++++++++><<<<-]>>-.>---.<-.+.<---. < 1281024173 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :test < 1281024212 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :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? < 1281024514 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Fungot's ^bf takes !input, yes. And if you ^def foo bf bar, it will internally rewrite "^foo baz" to "^bf bar!baz". < 1281024819 0 :comex!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1281024907 0 :comex!comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281025068 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1281025167 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :go go Eightebed! < 1281025491 0 :comex!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1281025623 0 :comex!comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281025970 0 :derdon!~quassel@p5B3E7E6A.dip.t-dialin.net JOIN :#esoteric < 1281026178 0 :comex!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1281026298 0 :comex!comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281026361 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1281027160 0 :comex!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1281027227 0 :comex!comex@c-98-210-154-193.hsd1.ca.comcast.net JOIN :#esoteric < 1281027549 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1281027720 0 :AnMaster!~AnMaster@unaffiliated/anmaster JOIN :#esoteric < 1281027745 0 :BeholdMyGlory!~behold@unaffiliated/beholdmyglory JOIN :#esoteric < 1281027840 0 :kar8nga!unknown@unknown.invalid QUIT :Remote host closed the connection < 1281028031 0 :Gregor-P!~AndChat@70-7-197-245.pools.spcsdns.net JOIN :#esoteric < 1281028262 0 :Gregor-P!unknown@unknown.invalid PRIVMSG #esoteric :So, does anybody have any idea what tipjar.com is, other than a site that clearly hasn't changed since its founding in 1996? < 1281028295 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I don't, or I'd have answered earlier < 1281028300 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although I do vaguely recognise the name < 1281028326 0 :tombom!unknown@unknown.invalid QUIT :Quit: Leaving < 1281028379 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, you saw that url? < 1281028381 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :how strange < 1281028409 0 :Gregor-P!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I wouldn't have seen it earlier, hence reasking X-P < 1281028429 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I meant, he filter urls < 1281028436 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in his irc client < 1281029309 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1281029317 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Gregor-P: Also: Not me. < 1281029366 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Er, actually existential quantification I guess. < 1281029382 0 :Gregor-P!unknown@unknown.invalid PRIVMSG #esoteric :Thanks for the breakdown, now gimme some Eightebed so I cab break it :P < 1281029541 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Gregor-P, s/cab/can/ ? < 1281029579 0 :Gregor-P!unknown@unknown.invalid PRIVMSG #esoteric :Nope, I'm going to drive a taxi into it. < 1281029695 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :XD < 1281029714 0 :oerjan!~oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1281029717 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Gregor-P, what is "Eightebed", _no_ google hits here < 1281029731 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it suggests eightcubed though < 1281029733 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, hi < 1281029750 0 :Gregor-P!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: Congrats, you found a totally unique name. < 1281029801 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :yo, Americans < 1281029806 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Gregor-P, huh? < 1281029809 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :sadly google is _disgustingly_ bad at crawling for entirely new esolangs < 1281029811 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Gregor-P: Actually, alise found it. With her iPhone. But, like "Befunge", I recognized the significance of the word as a language name. < 1281029815 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :"Puss, despite that it is intended to be a small tool, is still in early stage." is this sentence correct ? < 1281029815 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1281029819 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it's an esolang? < 1281029838 0 :Gregor-P!unknown@unknown.invalid PRIVMSG #esoteric :nooga: Nope. < 1281029843 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :why? < 1281029847 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: shocking, isn't it? what are people _doing_ in this channel? < 1281029850 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :actually, when refreshing I get one hit < 1281029867 0 :Gregor-W!836b416f@gateway/web/freenode/ip.131.107.65.111 JOIN :#esoteric < 1281029880 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and that one hit is: [PDF] Allegheny County Medical Society [...] Pittsburgh and the eightebed [...] < 1281029909 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :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." < 1281029922 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :That's a bit wonky at the end, maybe want "of development" < 1281029929 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :(Not a correctness issue, just a clarity issue) < 1281029935 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Gregor-W, btw did yesterday turn out to be the best of worlds? < 1281029938 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as we talked about < 1281029959 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: YES but for totally different reasons, I didn't snag coding time :P < 1281029962 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wrt. microcosm that is... < 1281030072 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1281030093 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :nooga: "despite that it is ..." sounds stilted in english, especially as an adjectival phrase < 1281030125 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i think "despite being ..." would be the usual phrasing, except that would give you two "being" there... < 1281030128 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1281030166 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :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? < 1281030172 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what about: "Puss, although intended to be a small tool, is still even smaller than that" < 1281030173 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Gregor-W, ^ < 1281030179 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er, one "being" and one "to be", which still would be awkward < 1281030182 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :I approve. < 1281030191 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1281030236 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :alternatively it might be way too large < 1281030243 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :depends on which way you are goingf < 1281030244 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1281030246 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :going* < 1281030275 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: That is an interesting observation, AND true. < 1281030289 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Gregor-W, cpressey, if "early stage" is actually a name of a stage I would suggest using title case for it < 1281030296 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :to make it less confusing < 1281030297 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :Yup < 1281030302 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I might use "Despite [the fact] that it is..." but that's my own preference for being wordy, I think < 1281030307 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :PUSS IS A SMALL TOOL < 1281030312 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: Naw, I'd do that too. < 1281030326 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: I might even say "In spite of the fact that it is" < 1281030338 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :nooga: :P < 1281030350 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, you call that wordy? Bah, nothing compared to the wordiness we had when _I_ was young. < 1281030369 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :We had to use a shovel to dig our way through it! < 1281030383 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1281030390 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :oh right < 1281030392 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :monty < 1281030403 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pretty obviously so < 1281030411 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :O English! What mortal couldst tame thy hirsute naughtiness? < 1281030422 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, "hirsute"? < 1281030438 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :this spell checker accepts the word however < 1281030445 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and I noticed yesterday that it didn't like "movie" < 1281030448 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so hm < 1281030467 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I suspect en_GB might be rather outdated on this system < 1281030489 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :Now 'round yonder we ain't gettin' y'all's Queen's English wit' yer "hirsutes" n' yer "couldsts". < 1281030513 0 :Phantom_Hoover!~phantomho@92.233.174.117 JOIN :#esoteric < 1281030547 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Gregor-W used CONFUSION. < 1281030551 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :It was super effective. < 1281030560 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that's my only comment to that line. < 1281030619 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1281030634 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :DOCTOR WHO < 1281030670 0 :Gregor-W!unknown@unknown.invalid PRIVMSG #esoteric :People who contract the "Doctor" in "Doctor Who" are the WORST kind of people. < 1281030720 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1281030730 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1281030731 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :But "hirsute"? I dunno, man. That was a weird coincidence. < 1281030798 0 :Gregor-W!unknown@unknown.invalid QUIT :Quit: Page closed < 1281030940 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :if you look like you're wearing a hair suit, you might be hirsute. < 1281031142 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, do you? < 1281031213 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :not particularly. < 1281031377 0 :Mathnerd314!unknown@unknown.invalid QUIT :Disconnected by services < 1281031396 0 :Mathnerd314_!~mathnerd3@nat-wireless-guest-reg-158-122.bu.edu JOIN :#esoteric < 1281031417 0 :Mathnerd314_!unknown@unknown.invalid NICK :Mathnerd314 < 1281031729 0 :ais523!unknown@unknown.invalid QUIT :Remote host closed the connection < 1281031817 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i think i'm going to watch an episode of doctor who right now < 1281031842 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :And I'm going to play NetHack. < 1281031866 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Fun fact: zapping an unknown wand at yourself is not a very good idea. < 1281031968 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, how many times have you ascended? < 1281031977 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster, none. < 1281031981 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1281031988 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :I've never gotten past Sokoban, actually. < 1281032066 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :I've reached Minetown once or twice, but I've always died before getting back to the main dungeon. < 1281032103 0 :derdon!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1281032365 0 :kar8nga!~kar8nga@78.104.81.233 JOIN :#esoteric < 1281032368 0 :kar8nga!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1281032610 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster, have you ever ascended? < 1281032700 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, yes, several times < 1281032710 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster, *glower* < 1281032787 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1281032820 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Can you genocide D? < 1281032842 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well, I don't have any such scroll handy currently < 1281032853 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :besides, extinction is more proper than genocide < 1281032878 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just used genocide for buggers like mind flayers and arch liches < 1281032907 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :atm I'm using cursed scrolls of create monster in a boulder fort to create lots of dragons < 1281033528 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yay, D and A done I think < 1281033540 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :I can't eat kittens‽ Even ones that aren't my pet? < 1281033555 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, you could eat their corpses? < 1281033574 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :I thought I could, but it tells me that I think eating it was a bad idea. < 1281033587 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :I thought that meant a luck penalty. < 1281033735 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Ah, telepathy... < 1281033740 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :do you still have the corpse? < 1281033748 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :No, my kitten ate it. < 1281033767 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Why my kitten wasn't done for cannibalism I do not know < 1281034065 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :OK, reached Sokoban. < 1281034237 0 :Gregor-P!unknown@unknown.invalid QUIT :Quit: Bye < 1281034326 0 :Gregor-P!~AndChat@70-7-197-245.pools.spcsdns.net JOIN :#esoteric < 1281034611 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Well, now my kitten has died of terminal stupidity. < 1281034895 0 :Mathnerd314!unknown@unknown.invalid QUIT :Disconnected by services < 1281034916 0 :Mathnerd314_!~mathnerd3@nat-wireless-guest-reg-158-122.bu.edu JOIN :#esoteric < 1281034936 0 :Mathnerd314_!unknown@unknown.invalid NICK :Mathnerd314 < 1281034981 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :"Fruit comprehensions? They're like list comprehensions, but for fruit." < 1281035007 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Beh. Stupid kitten. < 1281035471 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, well, it *walked* into a *pit*. < 1281035472 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :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) < 1281035484 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, what class are you playing? < 1281035489 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster, wiz. < 1281035491 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :why < 1281035500 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :No idea. < 1281035507 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Seemed like a good idea < 1281035520 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :At first, then I've never been bothered to change, < 1281035522 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1281035556 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: well if Fruit is a Monad, you can use do blocks for that purpose < 1281035580 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1281035582 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :alas, monad comprehensions were abolished in Haskell 98 < 1281035636 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Neat, cone of cold goes through boulders. < 1281035640 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: Perhaps it thought it was a Wumpus. < 1281035662 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, perhaps. < 1281035747 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Not even available as one of those optional pragma things? < 1281035751 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, sokoban? Be careful of the luck penalties < 1281035756 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster, precisely. < 1281035785 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :There was a monster behind a boulder which wouldn't move. < 1281036154 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: hm maybe it's been added recently - i think it was said they'd add it if someone made a patch < 1281036213 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: I'm having a hard time seeing how "do" *isn't* a monad comprehension, actually < 1281036235 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yes, do notation and comprehensions are equivalent < 1281036251 0 :tombom!tombom@wikipedia/Tombomp JOIN :#esoteric < 1281036259 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :So, just a syntax thing? < 1281036328 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, I'm sick of people asking me to define fruit in terms of monads, so I refuse to comply! < 1281036370 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm i cannot find it in the ghc's language option list < 1281036392 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :there are two options for comprehensions, but none extends it to monads < 1281036463 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :both do notation and list comprehensions are syntactic sugar < 1281036563 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Oh, while we're on the subject, there's something that's been on my mind for a while < 1281036572 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm? < 1281036617 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :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? < 1281036631 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, no. < 1281036634 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's untrue, in fact it varies by monad < 1281036687 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :IO is strict in the first argument (to >>=), but e.g. Reader is strict in the second < 1281036731 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :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? < 1281036790 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well eschewing concurrency, all haskell evaluation would generally need one of the arguments first, if any < 1281036863 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I don't think that's the meaning of "strict" I'm thinking of. < 1281036901 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm wait that's not true if you use seq, either < 1281037006 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1281037021 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1281037040 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, carriers < 1281037047 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the inherent thing about monads is that they force _data flow_, i think < 1281037066 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, they force data flow. They absolutely do not (in general) force evaluation order. < 1281037079 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Well, no more so than any other set of functions can. < 1281037108 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(any function can effectively force evaluation order just with seq or judicious pattern matching, after all) < 1281037140 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :OK. That helps clarify it. Thank you all. < 1281037162 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :seq can be simulated with pattern matching whenever its left argument is of a known algebraic data type, incidentally < 1281037222 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(just do any match that forces actually finding the top constructor) < 1281037354 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :!haskell let loop = Nothing >> loop in loop :: Maybe () < 1281037360 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Nothing < 1281037495 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :!haskell import Control.Monad.Reader; loop = loop >> ask; main = print $ runReader loop "Poof!" < 1281037498 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :"Poof!" < 1281037755 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Actually, I'm not sure it's any clearer. < 1281037771 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :!haskell import Control.Monad.Writer; test = tell [1] >> undefined >> tell undefined; main = print $ (head output, result) where (output, result) = runWriter test < 1281037773 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, do you know how >>= and return work? < 1281037803 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm it's backwards < 1281037812 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :!haskell import Control.Monad.Writer; test = tell [1] >> undefined >> tell undefined; main = print $ (head output, result) where (result, output) = runWriter test < 1281037815 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :(1,()) < 1281037849 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: I thought I did several times. I can never seem to retain a coherent mental model of how they work, though. < 1281037861 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :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 :) < 1281038012 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :!haskell :t return < 1281038013 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :return :: (Monad m) => a -> m a < 1281038020 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :!haskell :t (>>=) < 1281038021 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :(>>=) :: (Monad m) => m a -> (a -> m b) -> m b < 1281038064 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :These must satisfy the axioms that (return x) >>= f == f x, < 1281038090 0 :Mathnerd314!unknown@unknown.invalid QUIT :Disconnected by services < 1281038110 0 :Mathnerd314_!~mathnerd3@nat-wireless-guest-reg-158-122.bu.edu JOIN :#esoteric < 1281038130 0 :Mathnerd314_!unknown@unknown.invalid NICK :Mathnerd314 < 1281038141 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :m >>= return == m, and (m >>= f) >>= g == m >>= (\x -> (f x >>= g)) < 1281038148 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :I have no idea if that helps. < 1281038161 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: It doesn't. < 1281038209 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Didn't think so... < 1281038268 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :That's the whole problem with the didacticism of monads. Just stating the definition of something does very little to help one understand it. < 1281038273 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, return "puts" a value into a monad, >>= takes it "out" and applies it to its second argument. < 1281038435 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The first law is clearer with do notation. The second is hairy without Kleisli arrows. < 1281038495 0 :CakeProphet!~adam@h50.38.18.98.dynamic.ip.windstream.net JOIN :#esoteric < 1281038523 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(with that, we get the monad laws as: return >=> g == g, f >=> return == f, (f >=> g) >=> h == f >=> (g >=> h)) < 1281038541 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :BTW, >=> :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c < 1281038548 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :m >=> n = \x -> do { y <- m x; n y } < 1281038565 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :See, it's nice and clean that way. Sadly, not much help. < 1281038821 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, what's >=> in terms of >>= and/or return? < 1281038889 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1281038916 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :m >=> n = \x -> m x >>= n < 1281038930 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :OK. < 1281038944 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, are you still confused? < 1281038960 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(after mentally applying the de-sugaring, and then a simple reduction) < 1281038986 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: Yes, but never mind. < 1281039098 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: Would it make you feel better to know that you don't have to understand any of this to use Haskell? < 1281039120 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Not exactly, since I've written several nontrivial programs in Haskell. < 1281039129 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It's most relevant when you're wondering if you could make a datatype a monad. < 1281039220 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I tend to just avoid monads and write any I/O code that I have to do in cargo cult fashion. < 1281039281 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :http://www.haskell.org/haskellwiki/Monad_Laws Perhaps this helps? < 1281039314 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :If it doesn't, you can conclude that monads are burritos and call it a day. < 1281039315 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1281039527 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :someone asked me about monads the other day... I tried to explain, but he lost interest after 5 minutes < 1281039713 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :I really need an "monads in minutes" explanation :p < 1281039747 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :a monotone monologue on monads, measurable in minutes < 1281039805 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :well, I did ask some rhetorical questions < 1281039853 0 :jcp!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1281039907 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: Well, I can offer this piece of advice: don't just recite the monad laws. < 1281039926 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :yeah, I didn't try that < 1281039976 0 :jcp!~jw@bzflag/contributor/javawizard2539 JOIN :#esoteric < 1281040466 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1281040470 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :let's try < 1281040479 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: what are these monads anyway? < 1281040497 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :that's exactly what the guy asked me < 1281040522 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :!haskell [] >> undefined :: [()] < 1281040527 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :[] < 1281040578 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :and I pulled up this page: http://blog.sigfpe.com/2006/08/you-could-have-invented-monads-and.html < 1281040584 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :and started working through it < 1281040618 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :and then he stopped paying attention and talked about other things :-( < 1281040650 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :It's kind of a boring blog post < 1281040720 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :yeah, I need something exciting and/or short < 1281040732 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :maybe I should have asked on #haskell first < 1281040749 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :then I could have let them explain :p < 1281040755 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Monads are not the only things in Haskell that I essentially can't think in. I also can't think in pointfree form. < 1281040857 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :I do pointfree by default o_O < 1281041012 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Yeah -- I guess I'm just stupid. < 1281041210 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Pointfree form? < 1281041363 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: http://www.haskell.org/haskellwiki/Pointfree < 1281041436 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :In contrast, a lot of the time I don't even use fold -- I write the folding into my function. < 1281041456 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :yeah, I tend to use recursion instead of combinators < 1281041461 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, NIH to the max! < 1281041509 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I wouldn't call it NIH exactly, but it is the same kind of thing probably. < 1281041519 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I like to call it "pointless style" < 1281041529 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :'Twas facetious. < 1281041532 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :well, unless you've memorized them, the higher-order functions are rather hard to discover < 1281041650 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: you're not the first one to use that term :) < 1281041701 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(in fact lambdabot's command for generating it is @pl) < 1281041763 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :pl \a (b,c) -> a c b =====> (`ap` snd) . (. fst) . flip < 1281041769 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Love that one. < 1281041791 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :eek < 1281041792 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :you can probably write it more nicely < 1281041818 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :What is `ap`? < 1281041828 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :GHCi says it doesn't exist. < 1281041834 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :monadic version of <*> < 1281041839 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's in Control.Monad < 1281041855 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :Control.Applicative too (which has <*>) < 1281041879 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: uncurry . flip, i think < 1281041909 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :@pl afair is not very smart with simplifications < 1281041935 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or wait is that curry or uncurry < 1281041950 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :!haskell (curry . flip) (+) (1,2) < 1281041963 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :!haskell (uncurry . flip) (+) (1,2) < 1281041965 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :3 < 1281041977 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :uncurry was right < 1281042044 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: i think many of ghc's optimization rules for lists depend on using fold/map style rather than explicit recursion < 1281042087 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :if you want it to remove intermediate lists < 1281042142 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Joy. Oh well. < 1281042563 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :!haskell import Control.Monad.State.Strict; main = flip runState 1 $ put 2 >> undefined >> put 3 < 1281042581 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :!haskell import Control.Monad.State.Strict; main = print . flip runState 1 $ put 2 >> undefined >> put 3 < 1281042584 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :input.19732.hs: Prelude.undefined < 1281042593 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :thought so < 1281042613 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so the strict State monad is essentially strict in _both_ arguments < 1281042639 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :!haskell import Control.Monad.State.Lazy; main = print . flip runState 1 $ put 2 >> undefined >> put 3 < 1281042641 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :((),3) < 1281043035 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :!haskell :t undefined < 1281043036 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :undefined :: a < 1281043044 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :!haskell undefined < 1281043046 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :*** Exception: Prelude.undefined < 1281043077 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's a most undefined value :D < 1281043085 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :OK, that helps explain what the heck you were doing < 1281043148 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the definition of a strict function f is that f undefined is undefined :) < 1281043258 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, what about f _ = undefined? < 1281043265 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :It's non-strict. < 1281043269 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :heh :D < 1281043379 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well mathematically it's indistinguishable from being strict < 1281043392 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :It is? < 1281043434 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :sure - how can you be sure it didn't look at its value before returning undefined? < 1281043485 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :!haskell let f _ = undefined; f (putStrLn "hello") < 1281043541 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1281043581 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: that ; doesn't end the let block < 1281043603 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, oh. < 1281043613 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you need {} brackets in that case < 1281043624 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :!haskell let {f _ = undefined}; f (putStrLn "hello") < 1281043641 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Parse error... < 1281043649 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :assuming EgoBot's !haskell even allows two ghci commands on a line < 1281043673 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :replacing ; with in should work < 1281043679 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :OK. < 1281043695 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :!haskell let f _ = undefined in putStrLn "Hello, world!" < 1281043696 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Hello, world! < 1281043710 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :!haskell let f _ = undefined in f (putStrLn "Hello, world!") < 1281043711 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :*** Exception: Prelude.undefined < 1281043743 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :So it's non-strict. < 1281043754 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um no < 1281043763 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :How? < 1281043793 0 :Mathnerd314!unknown@unknown.invalid QUIT :Disconnected by services < 1281043798 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that putStrLn "Hello, world!" wouldn't have been run even if f were non-strict, unless it actually returned it < 1281043812 0 :Mathnerd314_!~mathnerd3@nat-wireless-guest-reg-158-122.bu.edu JOIN :#esoteric < 1281043831 0 :Mathnerd314_!unknown@unknown.invalid NICK :Mathnerd314 < 1281043842 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :evaluating an IO action does _not_ run it < 1281043868 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, oh. What things have side-effects when evaluated, then? < 1281043883 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :!haskell (putStrLn "Hello, world!") `seq` "Boo!" < 1281043884 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :"Boo!" < 1281043897 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :unsafePerformIO :) < 1281043933 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Where's that? < 1281043946 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :half the point of haskell's purity is that evaluation _has_ no side effects < 1281043959 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :System.IO.Unsafe < 1281043966 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Excepting undefined/ < 1281043980 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :undefined is not a side-effect < 1281044036 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh well... it depends how you look at it, but mainly you say the result of the whole computation is undefined/bottom then < 1281044070 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the addition of exceptions has messed things up a little bit < 1281044264 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the theory they used is that the result of a pure computation could be either an ordinary value, or a set of possible exceptions < 1281044317 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :note that there is no way to distinguish different exceptions from inside _pure_ code - they can only be caught in the IO monad < 1281044476 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :there's at least one testing library for haskell which uses catching undefined exceptions to test whether functions are strict < 1281044624 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric : evaluating an IO action does _not_ run it < 1281044654 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :main is a little bit special. Whatever it describes, gets run < 1281044658 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I... oh, never mind < 1281044658 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :as that !haskell (putStrLn "Hello, world!") `seq` "Boo!" above proves < 1281044683 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :IO a is just a description of an IO action < 1281044706 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :!haskell putStrLn "X" < 1281044710 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :X < 1281044713 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :!haskell System.IO.Unsafe.unsafePerformIO (putStr "Hello, world!") `seq` "Boo!" < 1281044717 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Hello, world!"Boo!" < 1281044789 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :!haskell let f _ = undefined in f $ System.IO.Unsafe.unsagePerformIO $ putStrLn "Hello, world!" < 1281044811 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*f < 1281044815 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :!haskell let f _ = undefined in f $ System.IO.Unsafe.unsafePerformIO $ putStrLn "Hello, world!" < 1281044816 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :*** Exception: Prelude.undefined < 1281044853 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :!haskell [putStrLn "X"] < 1281044860 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :unsafePerformIO is not considered to be inside haskell's ordinary semantics :) < 1281044873 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :/ < 1281044877 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :ACTION rolls eyes < 1281044881 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Got a parse error < 1281044889 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :!haskell print [putStrLn "X"] < 1281044904 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Another parse error < 1281044934 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1281044957 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :!haskell let f _ = undefined in f (f) < 1281044958 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :*** Exception: Prelude.undefined < 1281044972 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :to get useful error messages in !haskell, you have to use the module form < 1281044992 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(just prepend main = or main = print $ , mostly) < 1281045003 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :!haskell main = print [putStrLn "X"] < 1281045025 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION bets on a missing Show instance for IO String < 1281045034 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er < 1281045036 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :IO () < 1281045043 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Yep < 1281045066 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :But at least that makes sense < 1281045077 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :!haskell length [putStrLn "X"] < 1281045079 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1 < 1281045087 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :in other words, it's a perfectly legal list, there's just no way defined for printing it < 1281045095 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :But putStrLn "X" wouldn't even have been evaluated there < 1281045119 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :The only thing that ever gets "evaluated" (barring unsafePerformIO trickery) is main < 1281045137 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i don't think you _can_ get an IO action evaluated without running it unless you use seq < 1281045147 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Noice < 1281045193 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :It's interesting how a beautiful mathematical framework can look all contrived and stuff once you turn it into a programming language < 1281045199 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(or something equivalent to seq. pattern matching won't work since IO has no constructors) < 1281045232 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :!haskell length [ (putStrLn "X") `seq` () ] < 1281045234 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1 < 1281045250 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo__: that still isn't even evaluated < 1281045269 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :however replace length with head < 1281045286 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :!haskell head [ (putStrLn "X") `seq` () ] < 1281045287 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :() < 1281045289 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or even print < 1281045307 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Wait < 1281045314 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :What does seq *do* with its first argument? < 1281045330 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :evaluates it to weak head normal form < 1281045336 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :!haskell print (undefined `seq` ()) < 1281045337 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :*** Exception: Prelude.undefined < 1281045356 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :which means the top constructor, for an ordinary data type < 1281045357 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :What does it do with the weak head normal form it gets? < 1281045365 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :throws it away :D < 1281045382 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :And evaluating an argument by definition has no side effects < 1281045402 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: if it involves evaluating variables, the results are cached < 1281045411 0 :Gregor-P!unknown@unknown.invalid QUIT :Ping timeout: 264 seconds < 1281045422 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Bah! seq is a hoax! < 1281045459 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok there is _one_ case where seq matters < 1281045470 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :I may have misspoken before < 1281045472 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :!haskell undefined `seq` "Test" < 1281045473 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :*** Exception: Prelude.undefined < 1281045526 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: semantically seq does nothing other than check whether the first argument is undefined before returning the second < 1281045584 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :however this has the _practical_ consequence of evaluating the thunk for the first argument, with all usual caching results and plugging of memory leaks < 1281045608 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Aren't monads essentially dependent types? < 1281045625 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: no... < 1281045638 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :.K < 1281045654 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :types don't depend on values in haskell, which is the definition of dependent typing < 1281045688 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :ACTION knows what monads are, but not much of what dependent types are < 1281045698 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Oh, dependent on values rather than types. < 1281045731 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo__, like oerjan said, they're types that depend on values. < 1281045741 0 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com JOIN :#esoteric < 1281045784 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :So, a dependent type could be a number between 1 and 10? < 1281045786 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Monads are dependent values. And seq is a hoax! < 1281045808 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i recall someone noted once that ghc doesn't even guarantee evaluating a _first_ in a `seq` b < 1281045813 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo__: Yes, (Number x) => x >= 1 && x <= 10 -- is an example. < 1281045815 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1281045857 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ghc's strictness analysis could cause it to rearrange things < 1281045859 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Are there any languages that use dependent types? < 1281045862 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :(What should I call this program?) < 1281045869 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo__: Coq, Agda, Epigram < 1281045871 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo__, Coq, Epigram, Agda. < 1281045883 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Some others, but those are the big ones. < 1281045904 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Coq is a mathematical proof thing, right? So I'll just skip it. What are Epigram and Agda like? < 1281045922 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Yeah, pseq is the one with that guarantee. < 1281045931 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo__, mathematical proof things but slightly less so. < 1281045935 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :(Perhaps "pipetex" will do? Or do you have a better idea?) < 1281045993 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo__: the thing is dependent typing basically forces you to do a lot of proving anyhow afaik < 1281046055 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1281046074 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Why is there no decent documentation for Epigram 2? < 1281046109 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: There's the literate Haskell source, formatted into a PDF. It's a real hoot. < 1281046131 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :So, it's not feasable to write a game in a dependent typing language? < 1281046138 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo__, not really. < 1281046148 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo__: Define "game"? < 1281046155 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Why the heck would it not be? < 1281046159 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: i recall from a previous comment that your last sentence there might _not_ be sarcasm? :D < 1281046174 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :("It's a real hoot.") < 1281046193 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: I think "a real hoot" has a complex and subtle meaning in my idiolect < 1281046198 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo__, Coq, Agda and probably Epigram can't have recursive functions like in Haskell, so writing a game would be nigh-on impossible. < 1281046209 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :It is certainly enjoyable *on some level* to read. < 1281046215 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: codata codata codata < 1281046228 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, yes, I know, but I don't know how that works. < 1281046279 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Don't know how a facility works == there is no facility to do what that facility does? < 1281046294 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :for one thing, it allows you to represent processes that might go on forever, as long as finding the _next_ item always terminates < 1281046298 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: Even ignoring codata and such -- I'm pretty sure you could write some games without recursive functions. < 1281046312 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, probably, I suppose. < 1281046321 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Tic-tac-toe is total, for example. < 1281046326 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :indeed there are many games which terminate < 1281046334 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Connect 4. < 1281046343 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :(more interesting than tic tac toe) < 1281046354 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :chess is also terminating < 1281046367 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, point taken < 1281046373 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, too, < 1281046373 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Does finding the next item have to provably always terminate? < 1281046378 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: only because there is a recursion limit :) < 1281046380 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo__, yes. < 1281046517 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: well yeah and also a 3-time repetition rule < 1281046617 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, you can get around that with the Thue-Morse sequence and the knights. < 1281046627 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :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) < 1281046653 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1281046668 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: are they really repeating _whole_ subgames? i always assumed it was just 3 repeating positions, at any time < 1281046701 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo__: that way if a computation cannot be proved to terminate, you can just do pieces of it at a time < 1281046788 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :There is a 50-move rule in chess, also. < 1281046797 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1281046801 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :(Although you could ignore that and other rules in some causes if you need to) < 1281046816 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: i assumed that was what cpressey meant by recursion limit < 1281046824 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :only threefold reitition is required to make chess terminate < 1281046834 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :In any case, you're assuming that a termination checker will notice that all chess games terminate. < 1281046840 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :That's far from certain. < 1281046846 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :I think also only 50 moves is required as well < 1281046863 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :(that is to say that either rule will guarantee a conclusion < 1281046886 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: this being dependent typing, you probably have to write the proof yourself < 1281046941 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, so noöne sane would write a chess game in it. < 1281046966 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Funnily enough, noone sane is here < 1281046981 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :s/sane/who wasn't a masochist/ < 1281047018 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1281047023 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :But all the masochists are too busy writing stuff in C++. < 1281047028 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :iiuc? < 1281047059 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :if i understand correctly < 1281047444 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Heh, codata actually seems pretty neat. < 1281047468 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's like lazy data structures in a way < 1281047507 0 :Phantom_Hoover!unknown@unknown.invalid PART #esoteric :? < 1281047508 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Very much so. < 1281047510 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :things still need to terminate, but only as far as you evaluate them < 1281047514 0 :Phantom_Hoover!~phantomho@92.233.174.117 JOIN :#esoteric < 1281047607 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: What do you mean by "things"? < 1281047626 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, how does coinduction work, then? < 1281047638 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Now instead of C++ you have to write things in C+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-..... < 1281047708 0 :CakeProphet!unknown@unknown.invalid QUIT :Quit: leaving < 1281047856 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: evaluations/pure computations? < 1281047886 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: um i think i'm getting close to over my head here... < 1281047918 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :hello sweethearts < 1281047925 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :is alise not here again. :< < 1281047949 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but with induction you build things up by assembling a finite number of pieces < 1281047979 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :with coinduction you deconstruct things by taking them _apart_ to a finite level down < 1281047986 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :cheater99: seems accurate < 1281048032 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :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) < 1281048052 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :But apparently not? < 1281048066 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: i don't think so, more like data is a subset of codata < 1281048086 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :k < 1281048122 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :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) < 1281048164 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :of course you could easily force codata infinite by not having any base constructors... < 1281048179 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :data Stream a = Stream a (Stream a) < 1281048189 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: You just blew my mind (or would have, if I had any left.) < 1281048289 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :omg < 1281048289 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :has anyone seen the ad for 'legend of aang'? < 1281048289 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :is it only me or is the part about them having to join their forces < 1281048289 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :just like the intro to captain planet??? < 1281048289 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :GO PLANET!! < 1281048449 0 :oerjan!unknown@unknown.invalid QUIT :Quit: Good night < 1281048555 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Legend of Aang? Um, the series is finished < 1281048594 0 :Flonk_!~chatzilla@80-123-47-242.adsl.highway.telekom.at JOIN :#esoteric < 1281048606 0 :Flonk_!unknown@unknown.invalid PRIVMSG #esoteric :>_> < 1281048615 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :>=> < 1281048653 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :ACTION glares suspiciously at Flonk_ glaring suspiciously < 1281048655 0 :Flonk_!unknown@unknown.invalid PRIVMSG #esoteric :>≡> < 1281048698 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :>≣> < 1281048705 0 :Flonk_!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1281048706 0 :Flonk!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1281048709 0 :Flonk_!unknown@unknown.invalid NICK :Flonk < 1281048762 0 :Gregor!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1281048770 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Why is charmap broken now? < 1281048789 0 :Sgeo__!unknown@unknown.invalid PRIVMSG #esoteric :Hmm, apparently, there's a game Legend of Aang < 1281049277 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :I have a font on my computer named "Aegyptus" and I am unsure how to work it < 1281050275 0 :GreaseMonkey!~gm@unaffiliated/greasemonkey JOIN :#esoteric < 1281051307 0 :MigoMipo!unknown@unknown.invalid QUIT :Quit: Quit < 1281051361 0 :tombom!unknown@unknown.invalid QUIT :Quit: Leaving < 1281051553 0 :augur!~augur@c-71-196-120-234.hsd1.fl.comcast.net JOIN :#esoteric < 1281051868 0 :Gregor-L!~Gregor@75-151-73-57-Spokane.hfc.comcastbusiness.net JOIN :#esoteric < 1281051894 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Gregor-L: I know W and P, but L? < 1281051940 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :It's an impostor! < 1281052276 0 :Mathnerd314!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1281052289 0 :zzo38!unknown@unknown.invalid QUIT :Remote host closed the connection < 1281052536 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Maybe his ferry sunk, and L stands for Lifeboat. < 1281052786 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Come, let's be reasonabl. < 1281052795 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :s/bl/ble/