00:01:19 maybe a local one, somewhere 00:03:25 definitely not in norway; in fact from http://www.regjeringen.no/nb/dep/bld/kampanjer/familia/familia-42006/diverse-saker/-gavekort-til-jul-25-milliarder-kroner-i.html?id=536565 i see the default is 3 years unless otherwise agreed 00:05:22 http://en.wikipedia.org/wiki/Second_order_cellular_automaton you could just slap this onto GoL? 00:05:32 although that article ends with an example of inconsistent confusing terms 00:07:38 -!- Wamanuz5 has joined. 00:07:50 Sgeo: pretty much 00:08:14 How commonly are the various typesetting units for distances used today? 00:08:16 * Sgeo wants to see what that would look like 00:08:47 I guess some by-hand calculations are in order 00:09:19 Let's pretend that generations 0 and 1 are always the same... unless that would always lead to a dead universe. I think it does for still-lives but not ... wait, that makes no sense 00:11:41 What I want to make in TeXnicard is something that it can read and understand the text of all of the cards and then compile it to make a computer program that can enforce the rules (maybe something like Inform7 but with many differences). 00:12:48 -!- Wamanuz5 has quit (Ping timeout: 260 seconds). 00:13:19 -!- Wamanuz5 has joined. 00:13:44 Sgeo: it does for patterns which die immediately in life, i think 00:14:05 -!- olsner has quit (Ping timeout: 258 seconds). 00:14:06 i mean, those become still-lives in this version 00:14:15 Wait, for generations 0 and 1, should 0 -> 1 by normal GoL rules? 00:14:33 Wait, I just killed the Oerjan Still Lives 00:15:02 Sgeo: that is equivalent to setting generation -1 all zeros, i think 00:15:32 this is reversible, so you can extend it both ways 00:16:49 Ok, under these rules, 1 cell in gen 0 ... dies the death, I think. What pattern dies in 2 generations? 00:16:55 Or am I just confused here 00:17:13 I mean, normal GoL pattern 00:18:02 a pattern dies in generation 2 iff the gol result of generation 1 == generation 0 00:19:03 also, you have no way to make it _stay_ dead 00:19:21 I mean, dies in 2 generations by GoL rules 00:19:33 oerjan, stay dead? 00:19:48 Oh, hmm, I was thinking empty universe == stay dead, which makes no sense 00:20:32 the only thing that produces an indefinitely empty universe is an indefinitely empty universe 00:21:45 Can there exist any motion? Perhaps not in an empty universe, but 00:21:55 -!- Wamanuz5 has quit (Remote host closed the connection). 00:22:01 *near-empty 00:22:30 Wait, scratch that.. I'm barely thinking about this 00:23:26 Would it makes sense for "5P6" means "66pt" while "5p6" means "66bp"? 00:23:43 (This information is based on the Wikipedia article titled "Pica (typography)") 00:24:41 (That is, instea of using "pc" since different units might be used) 00:26:09 -!- olsner has joined. 00:27:53 It should be easy enough to convert it into a more normal CA describable as cells with 4 states, but I need to sit still long enough to do so 00:29:46 -!- Wamanuz5 has joined. 00:29:59 -!- elliott has joined. 00:30:29 Apparently, according to North Korean writing rules, names of leaders Kim Il-sung and Kim Jong-il must always be set off in bold. 00:30:44 Wikipedia mentions it but has no citation. 00:31:03 well it sounds utterly believable 00:35:02 whos a bro 00:35:02 elliott: You have 2 new messages. '/msg lambdabot @messages' to read them. 00:35:50 -!- oerjan has quit (Quit: Good night). 00:36:24 -!- Wamanuz5 has quit (Ping timeout: 240 seconds). 00:37:29 -!- Wamanuz5 has joined. 00:38:05 -!- cheater_ has joined. 00:41:28 14:46:34: -!- Elizacat has joined #esoteric. 00:41:30 14:46:37: hi 00:41:31 14:46:44: * Elizacat pokes Vorpal 00:41:39 careful, you might catch whatever it is that Vorpal has 00:41:47 -!- Wamanuz5 has quit (Ping timeout: 250 seconds). 00:41:53 14:30:55: Shortly afterwards, elliott complained about this, but while doing so, repeated the original intent, exactly as it appeared in the original emaill.... so that in Gmail, and perhaps some other clients, it looked like elliott was just quoting what appeared in a previous email. 00:41:58 um, that wasn't intentional. 00:42:02 that was just coincidental wording. 00:42:22 and I still think that being able to object to your own inactivity intent is a Bad Thing. 00:42:46 -!- Wamanuz5 has joined. 00:43:13 14:07:45: I never quite got the whole anti-loanword thing. 00:43:13 usually it's a purity thing, see: l'Académie française 00:43:19 (correctly capitalised?) 00:43:56 * Sgeo sits down 00:45:36 you were standing up? 00:45:57 06:56:21: Let's make a page calling Haskell a wimpmode of Unlambda 00:46:01 Lymee: oh come on, at least Lazy K 00:46:03 Yes, I was. 00:47:12 09:13:30: I went and made a basic optimizing Brainfuck->C compiler in Scala. 00:47:12 09:13:36: ... 00:47:13 09:14:02: It might benefit from code to recognize balanced loops and handle them specially. 00:47:25 Lymee: balanced loops reduce to polynomials 00:47:33 12:42:38: while(ptr[0]){ 00:47:33 12:42:38: ptr[0]-=1; 00:47:33 12:42:38: } 00:47:36 you call that optimised? 00:47:43 Dear Google Docs: Fuck you 00:48:03 elliott, no, not really. 00:48:19 I'm only merging sequences of +->< right now 00:48:29 I need to do something about balanced loops. 00:48:39 Lymee: do you handle +>+-<- 00:48:42 to empty string 00:49:25 Lymee: balanced loops: copy esotope or http://mazonka.com/brainf/bff4.c (see the initial comment and grep for /LNR/) 00:49:31 note that latter is an interpreter 00:49:38 elliott, yes, that should be eliminated 00:49:57 -!- Wamanuz5 has quit (Ping timeout: 276 seconds). 00:51:09 elliott, hmm... 00:51:49 for the esotope code (Python), see https://bitbucket.org/lifthrasiir/esotope-bfc/overview. 00:51:56 it is by far the most advanced optimising compiler anyone has written. 00:52:01 compiles hello world into a print statement 00:52:05 If you know the loop is balanced, you can compile it into a sequence of int loops=some_function(ptr[0],ptr_0_change);ptr[0]=0;ptr[1]=(some number)*loops; right? 00:52:31 you can compile it to much less than that. 00:53:03 http://code.google.com/p/esotope-bfc/wiki/Optimization has some fairly outdated information on esotope's optimisation 00:53:23 e.g. it now manages to eliminate dead code and propagate conditions 00:54:45 Lymee: you could also ask lifthrasiir (the author of esotope), ais523 or Vorpal for information on reducing balanced loops to polynomials. 00:56:31 13:42:38: * Phantom_Hoover notes that his understanding of special relativity has collapsed. 00:56:32 13:42:48: Or, more likely, wasn't there to begin with 00:56:32 13:43:43: Phantom_Hoover, oh? It is easy, twins age at different rates when one travels at high speed. The end. 00:56:32 13:43:53: (actually: accelerates) 00:56:36 i sure hope you're joking 00:59:11 elliott. 00:59:37 You can convert constant references to variables instead of accesses to the memory array, right? 01:00:09 i'm just going to tell you to read esotope's code :) 01:00:13 Okey 01:00:14 or ask lifthrasiir 01:00:14 https://docs.google.com/document/pub?id=18eLRRmojIXEU36uad7lW7XwRRGEKFvjiYV6pS3-UF-4 well, this is intuitive as mud. 01:06:41 oerjan, oh you're not here 01:08:33 -!- FireFly has quit (Quit: swatted to death). 01:13:38 -!- Sgeo_ has joined. 01:14:02 im sure oerjan cares 01:14:10 "comprehendible" 01:14:57 -!- Sgeo has quit (Ping timeout: 255 seconds). 01:25:41 17:57:49: oh wait there may be only two people called that (since 1950, anyway) :P 01:25:44 that's a lot for iceland 01:25:46 :P 01:27:54 Since I have a day off, I should really take this opportunity to continue working on various projects... 01:28:00 but, I think I'm just going to do nothing today instead. 01:28:05 8) 01:32:15 good idea 01:55:58 -!- pikhq has joined. 01:57:17 sup pikhq 01:59:42 -!- pikhq_ has quit (Ping timeout: 276 seconds). 02:00:36 -!- pikhq_ has joined. 02:01:59 Also, equipment that thinks that dropping a connection is a good thing. 02:02:15 yes 02:02:17 i saw nothing 02:02:19 * pikhq (~pikhq@174-22-156-192.clsp.qwest.net) has joined #esoteric 02:02:20 sup pikhq 02:02:20 * pikhq_ has quit (Ping timeout: 276 seconds) 02:02:20 * pikhq_ (~pikhq@174-22-164-57.clsp.qwest.net) has joined #esoteric 02:02:20 Also, equipment that thinks that dropping a connection is a good thing. 02:02:59 pikhq: wanna help me write the BEST WC???? 02:03:14 i cannot fix 02:03:15 my space 02:03:16 leak :( 02:03:24 -!- pikhq has quit (Ping timeout: 240 seconds). 02:03:49 19:59 < pikhq> Stuff. That is up. 02:07:38 pikhq_: SPACE LEAK 02:08:49 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 02:10:48 pikhq_: SPLEAK 02:10:58 KAELPS 02:11:05 pikhq_: : < 02:12:31 -!- Wamanuz5 has joined. 02:16:57 pikhq_: you are hurting haskell with your lack of support 02:19:46 It is time. 02:21:25 tswett: for 02:21:29 oh god not more bot things is it 02:21:32 elliott: yes. For. 02:22:31 Why am I assuming that reversible CA implies a conserved quantity? 02:29:36 because you are silly 02:29:45 -!- Slereah has quit. 02:30:03 Gosh, my bedtime is in ten seconds. 02:30:08 Good night, everyone. 02:30:13 eee*shoop* 02:30:15 night 02:30:50 although for a totalistic kind of CA (or anything where the entire neighborhood is considered equally tributary) that will have to be true i think? 02:32:44 reversible means no entropy, which means no information is lost, and in a CA where cells are indistinguishable, that would imply conservation of quantity, yes? 02:33:50 -!- copumpkin has joined. 02:34:52 How does reversible imply no entropy? Our universe is (kind of) reversible, as far as we know, but still has entropy 02:37:08 nope 02:37:44 Reversible process (thermodynamics), a process or cycle such that the net change at each stage in the combined entropy of the system and its surroundings is zero 02:38:00 therefore, the universe is not reversible 02:38:11 therefore, the arrow of time is uniquely forward 02:38:15 why? we do not know 02:39:01 Reversible computing, logical reversibility of a computation - a computational step for which a well-defined inverse exists 02:39:07 this is the relevant definition for CAs 02:39:13 but it's mathematically equivalent 02:39:49 as an inverse is operation is only well-defined if information is conserved 02:39:57 well you can't have two states be inverses of one another because then it will cycle, which isn't really all that useful. 02:40:59 Oh, so that's why I failed my sanity check. 02:41:10 I was assuming the same rules would apply backwards and forwards. 02:41:16 Sgeo_: ... 02:41:16 unless it can produce some other thing. Similar to how glider guns work in CGoL 02:41:26 * elliott claps for Sgeo_ 02:41:32 im clapign too 02:41:37 for instance "minus" is not an invertible operation because it takes two pieces of information and throws out one. "minus one" is invertible because it takes one piece of information and gives back an equal amount of information 02:41:43 monqy: i clapign all the time 02:42:25 (As in, the sanity check was moronic, not what I produced prior to doing the sanity check) 02:43:00 -!- bsmntbombdood has joined. 02:43:11 hi 02:43:41 does bsmnt mean basement 02:43:44 does dood mean dude 02:43:48 does bomb mean bomb 02:43:51 also, you could not destroy the state of any cell, right? That would be bad because then you have no form of "motion" 02:43:56 does monqy mean monkey 02:44:00 does cake mean caek 02:44:06 monqy, yes 02:44:29 CakeProphet: ah how do you destroy the state of a cell? 02:44:33 delete it? 02:44:42 er yes, return it to the default state. 02:44:53 I suppose this all depends on the rules of the automaton 02:45:07 Oh! 02:45:17 I was confusing time-symmetry with reversibility 02:45:32 clapign again 02:45:33 I think 02:45:59 but if you give rules that allow the default state to prodce non-default states, then that would imply that your grid starts off in some kind of non-constant setup. 02:46:19 * CakeProphet does not know the terminology for these things he's talking about. 02:47:33 * Sgeo_ wonders how easy/difficult it would be to put his table into Mirek's Cellebration 02:47:41 Wow, I can never spell 02:47:58 CakeProphet: if you return it to the default state without regard for how it will affect its neighbors, yes, you will change the nature of the CA. it might be destroying information in one sense of thinking about it, or creating it in another sense. 02:47:59 ....I got it right 02:48:24 Sgeo_: no one uses MCell anymore. put it in Golly. it's not that hard. 02:48:41 Would it be easier in Golly than MCell? 02:49:17 hmm okay, so then to create a CA without information loss, you would need to have no way to return to a dead state, or have a way to go from dead to alive that is reversible from the way in which the information was originally configured. 02:49:34 before the "destruction" 02:49:46 CakeProphet, there's an algorithmic way to make a reversible CA from a non-reversible CA 02:49:54 ^ 02:50:11 actually, there's an algorithmic way to make a reversible anything from a non-reversible anything 02:50:14 oh, okay. 02:50:49 hi 02:50:49 does bsmnt mean basement 02:50:50 does dood mean dude 02:50:50 does bomb mean bomb 02:50:55 no mocking non-sgeo elders >:| 02:50:56 :D 02:51:34 http://www.bbc.co.uk/news/science-environment-13874049 02:52:04 elder is a good description of sgeo 02:52:14 monqy: been here longer than me 02:53:03 "We get it Apple, you own the ‘App Store’ trademark. Except, let’s be honest: you really don’t – the English languages does." 02:53:10 omgubuntu, hard-hitting edited journalism 02:53:29 what 02:53:37 "it has been shown that every reversible cellular automaton can be emulated by a block cellular automaton."hmm 02:54:03 Isn't "app store" pushing heavily on genericised trademark? 02:54:06 english languages owns the app store trademark??????? app store is a mark of english languages' trade????????? 02:54:08 monqy: english languages 02:54:10 yes 02:54:23 pikhq_: I don't know, would anyone else name anything an App Store if Apple hadn't? 02:54:36 "App" wasn't a very common abbreviation for "programoid" 02:54:42 where programoid means... 02:54:51 something that isn't quite the same thing as an application or program 02:54:58 it's hard to define 02:55:04 elliott: Irrelevant. 02:55:28 pikhq_: it shouldn't be :) 02:55:40 well 02:55:46 pikhq_: oh you said genericised 02:55:53 Yes. 02:55:57 pikhq_: i dunno, nobody says "android app store" 02:56:02 everyone says "android market" 02:56:31 http://news.cnet.com/8301-27076_3-20073524-248/judge-likely-to-deny-apples-appstore-complaint/ <-- seems apple are trying to get amazon for using "Appstore" 02:57:12 Funny, I hear "app store" as a generic term fairly often. 02:57:35 Though if there's a more specific term available that'll be used instead. 02:57:40 where 02:57:48 -!- BeholdMyGlory has quit (Remote host closed the connection). 02:57:52 does apple own "app" 02:57:54 does apple own "store" 02:58:19 Can't cite, because I'm talking anecdotes here. 02:58:26 monqy: does that matter if "app store" is the trademark 02:58:35 monqy: Doesn't matter for trademarking. 02:58:42 trademarking is the worst :( 02:58:49 no, the trademark system is fairly sane 02:58:50 imagine if the roomba was called the Robotic Magic Vacuum 02:58:53 would you object to that being trademarked 02:58:58 I mean 02:59:01 phrase trademarking 02:59:04 Micro Software 02:59:04 what if someone else tried to sell apps 02:59:14 in a store 02:59:17 i agree that "app store" is a bit edge-case, but I think the fact that nobody said "app" before that matters 02:59:30 it's just a weird abbreviation that was only ever used colloquially and... I never even heard it 03:00:17 CakeProphet is trademarked by me. 03:00:22 because I use it as part of my business. 03:00:30 it is associated with my business of awesome. 03:02:24 Yeah, trademark law has astoundingly few abuses, misuses, or unintended consequences. Quite unlike the other two things termed "intellectual property". 03:02:48 Indeed, it's the only one that's not utterly outmoded. 03:03:53 My favorite thing about patents is that they are reasoned to promote competition 03:03:58 but... they do the exact opposite of that. 03:04:15 -!- elliott has quit (Remote host closed the connection). 03:04:24 Yeah, the *concept* of patenting might have some remaining validity. 03:04:31 The implementation, sure as hell not. 03:04:51 -!- elliott has joined. 03:05:42 I think patent is bad thing now although in the past it might have helped a bit. Now it should be abolished, though. Trademark is good things, though. Therefore they should change "Patent and trademark office" into just "Trademark office" and then have no patent. 03:06:14 And, of course, copyright law is less worthwhile than laws regulating that all chariots (horseless or otherwise) must be equipped with at least 2 horses. 03:07:54 amazing 03:08:16 I don't think there's such a law, but hey. 03:08:18 -!- Wamanuz has joined. 03:08:24 -!- Wamanuz5 has quit (Ping timeout: 276 seconds). 03:08:36 I've heard of some pretty stupid laws but forgotten them all 03:08:37 that was only amazing once i thought it was real 03:08:42 "system is fairly sane 03:08:42 imagine if the roomba was called the Robotic Magic Vacuum 03:08:42 would you object to that being trademarked 03:08:42 I mean 03:08:42 phrase trade" 03:08:45 oops 03:08:57 `addquote "system is fairly sane imagine if the roomba was called the Robotic Magic Vacuum would you object to that being trademarked I mean phrase trade" oops 03:08:58 -!- jcp has quit (Ping timeout: 260 seconds). 03:08:58 "All editing operations are restricted to cells whose coordinates are within +/- 1 billion. " 03:08:59 464) "system is fairly sane imagine if the roomba was called the Robotic Magic Vacuum would you object to that being trademarked I mean phrase trade" oops 03:09:31 I'm surprised and a bit sad that you didn't quote my sanity comments 03:09:36 elliott: There are *similarly* outmoded laws regulating horseless chariots, I just couldn't remember any. 03:09:46 Sgeo_: which ones 03:09:58 Something about faiing a asanity check 03:09:59 sanity 03:10:05 faliling 03:10:08 failing 03:10:21 `addquote Something about faiing a asanity check sanity faliling failing 03:10:23 465) Something about faiing a asanity check sanity faliling failing 03:12:20 Sanity is insufficient by itself. Many other things are also important. 03:12:39 I find that sanity is mostly optional. 03:13:21 `addquote Sanity is insufficient by itself. Many other things are also important. 03:13:23 466) Sanity is insufficient by itself. Many other things are also important. 03:13:26 some people would have included CakeProphet's line 03:13:31 those people do not understand zzo38 03:15:29 -!- jcp has joined. 03:15:56 elliott, hey, you're mocking a non-sgeo elder! 03:16:03 (I think zzo38 is an elder) 03:16:07 I'm mocking zzo38? 03:16:50 sgeo is clearly mocking you 03:17:13 I don't think so. (Nor do I know exactly what you mean by "an elder" or how it is relevant) 03:17:23 monqy: oh 03:17:41 elliott: are you a non-sgeo elder 03:17:50 does two thousand seven count as elder 03:17:54 well i came in once the previous year 03:18:03 but i'm the top talker, which surprises EVERYONE 03:18:14 act surprised 03:18:25 -!- pikhq has joined. 03:18:41 2009-02-28.txt:01:03:21: -!- zzo38 has joined #esoteric. 03:18:42 -!- pikhq_ has quit (Ping timeout: 255 seconds). 03:18:43 I haven't gathered a sample to compare with that 03:18:47 it seems that zzo38 didn't actually come here before that 03:18:51 monqy: you mean for elderness? 03:18:59 talkativity 03:19:00 -!- Wamanuz2 has joined. 03:19:07 so I don't know if I should be surprised or not 03:19:14 yeah it was the first day zzo38 was in here 03:19:17 I have worked with esolangs before that though. I have not been on this channel, though, is true. 03:19:20 monqy: well the second is vorpal/anmaster 03:19:38 monqy: but ignoring him i talk like three times the person below me 03:20:18 -!- Wamanuz has quit (Ping timeout: 276 seconds). 03:21:30 Quote number 97 mentions quote number 124. 03:22:10 was it an old quote 124 from before some quotes were deleted, moving 97 below 124 03:22:15 yes, because quotes get deleted 03:22:19 and the numbers aren't saved 03:22:20 maybe a bug :D 03:22:37 i could actually calculate the real numbers of all current quotes based on the hg log... 03:23:50 -!- Wamanuz2 has quit (Read error: Operation timed out). 03:24:14 `quote 97 03:24:15 97) Note that quote number 124 is not actually true. 03:24:29 good quote 03:24:53 -!- elliott_ has joined. 03:25:11 -!- elliott has quit (Read error: Connection reset by peer). 03:25:35 -!- Wamanuz2 has joined. 03:29:16 How about I not wait patiently for Golly to do a random fill on a large area just because I want to know what random fill is like in day and night 03:30:10 -!- Wamanuz2 has quit (Remote host closed the connection). 03:30:42 do you need a large area 03:30:54 No 03:31:04 -!- Wamanuz2 has joined. 03:31:09 But didn't think it would cause a problem 03:31:10 Until it caused a problem 03:31:20 yeah it should be better at generating randomness 03:31:23 faster 03:31:27 then people could complain it was too predictable 03:33:22 hmm, would there ever be a case where you want to use a regular expression negation operator without implicit backtracking? 03:33:34 "Forced garbage collection. I never have any problems with memory management in C++, so this just seems like disadvantages to me." 03:33:36 In most cases the effect would be the same. 03:33:47 elliott_: ..what is this from? 03:33:48 CakeProphet: see cut in prolog 03:33:50 and some idiot on reddit 03:34:11 lol, "forced garbage collection" 03:34:21 compare "forced manual memory management" 03:34:54 "I never have any problems with memory management in C++" 03:35:03 I see that this person hasn't done non-trivial programming. 03:35:21 man, screw this convenience shit, I want to manage my own memory! I don't have problems with that shit, so it's obviously a drawback to have it. 03:35:28 pikhq: non-trivial? in C++, memory management is _always_ a problem 03:35:38 thanks to copy constructors, destructors, blah blah bksjfskghdfk 03:36:03 CakeProphet: Not only convenience -- manual memory management has a performance cost versus good garbage collection! 03:36:06 elliott_: With certain forms of trivial programming in C++, you can be ignorant of memory management. 03:36:16 "Make your language slower and difficult to program in correctly, please." 03:36:25 (OK, Go's GC is stop-the-world mark-and-sweep, but that's an implementation issue.) 03:36:34 (Then again so is GC; Scheme, for instance, just says that objects are never freed. Ever.) 03:36:49 elliott_: oh really? I was under the impression that MMM still existed because it allowed for more efficient programs. 03:37:02 but yes, I could see how /poor/ memory management would create the opposite 03:37:17 CakeProphet: A high-quality garbage collector is faster than a manual memory management scheme in *many* cases. 03:37:22 My first post to esolang wiki is from August of 2005. 03:37:33 CakeProphet: No. 03:37:35 CakeProphet: It's a myth. 03:37:45 CakeProphet: Malloc and free are expensive operations. 03:37:54 CakeProphet: A good garbage collector outperforms them practically every time. 03:37:59 And manual memory management is only going to be *notably* faster than a high-quality garbage collector in edge cases. 03:38:12 elliott_: does a garbage collector not use free or something equivalent? 03:38:13 Even the conservative (but very very impressive) Boehm collector for C programs beats malloc and free. 03:38:20 CakeProphet: Yes, but it does it in clumps. 03:38:24 ah. 03:38:33 CakeProphet: And a parallel collector won't even pause your program to do it. 03:39:07 You get *really* big gains if you can actually compact the heap. 03:39:12 -!- Wamanuz2 has quit (Read error: Connection reset by peer). 03:39:26 okay so do you get any gains on malloc calls? It seems that in a GC language you would still call malloc just as often. 03:39:27 You get amortised O(1) allocation. 03:39:48 (because 99% of the time, malloc is a pointer increment) 03:39:54 -!- Wamanuz2 has joined. 03:40:14 CakeProphet: GC's can have a much simpler allocator than malloc. 03:40:27 Is me incompetently implementing GC an "edge case"? 03:40:39 Sgeo_: We specified "high-quality" for good reason. 03:40:40 Sgeo_: you being incompetent doesn't sound like an edge case to me. 03:40:55 CakeProphet: libc malloc has to search its allocated heap for free space of sufficient size. 03:41:25 what would a well-designed GC do for allocation? 03:41:38 CakeProphet: see boehm gc, ggggc source :P 03:41:44 tl;dr pointer bumping 03:42:01 CakeProphet: http://codu.org/projects/ggggc/hg/index.cgi/file/72b3f073cbe4/alloc.c, http://codu.org/projects/ggggc/hg/index.cgi/file/72b3f073cbe4/collector.c 03:42:23 Faster than malloc/free and Boehm GC, pretty competent with Java's (which has the best GC in existence). 03:42:31 [asterisk]pretty competitive 03:42:48 Although it'll need concurrent and maybe parallel collection to be truly competitive with Java. 03:42:50 How well is the memory allocation used in TeX? That one does not store the size of the allocated memory anywhere, so the function to free the memory must explicity be given the size. 03:42:51 void *malloc(size_t size) {heap_used += size;} 03:42:53 But yeah, the allocator is trivial. 03:42:54 Erm. 03:42:59 elliott_: seriously? Java's is the best? 03:43:00 -!- azaq23 has quit (Ping timeout: 255 seconds). 03:43:01 void *malloc(size_t size) {return (heap += size);} 03:43:20 CakeProphet: What do you mean by "seriously?"? The Java VM is one of the fastest virtual machines in the world in pretty much every aspect. 03:43:30 CakeProphet: Java's garbage collector is a century in the future and probably designed by aliens from space. 03:43:38 The fact that it has a rather high start-up time and Swing UIs are sluggish has nothing to do with the quality of the VM. 03:43:50 Well, the first does, but it's because the JVM is so fast that it has a high start-up cost. 03:43:51 I just didn't know. I assumed that because Java was a shitty language it would not have a great implementation. 03:44:00 Srsly? 03:44:05 You realise Sun poured millions and millions into Java, right? 03:44:08 Java probably has the best implementation of anything ever. 03:44:37 Though the language is terrible, the runtime is so insanely good. 03:44:42 The language is how it is because Sun wanted a language that was less of a pain than C++ and safe (i.e. can't segfault, etc.). And Java is that, mostly. 03:44:51 To defeat it you have to microöptimise C or assembly. 03:44:57 Then it put millions of dollars into creating an environment around it. 03:44:58 And it sure worked. 03:45:15 pikhq: OK, that's not quite true, Java doesn't beat compiled languages in benchmarks always. 03:45:25 But it's competitive with C++, which is saying something. 03:46:35 In some cases you can use static allocation instead of dynamic allocation. 03:46:56 so essentially they traded segfaults for null pointer exceptions. :P 03:47:07 -!- Wamanuz2 has quit (Remote host closed the connection). 03:47:15 CakeProphet: Please, null has been in most languages since the sixties. 03:47:34 well, no, that's not what I meant. 03:47:34 They are almost as bad as segfaults though, that is certainly true. 03:47:54 Yeah, it's a perfectly fair criticism, it's just that null isn't Java's fault :P 03:48:14 I just mean that null pointer exception is the most common error I've seen when debugging java. So it is comparable to segfaults in C(++)? 03:48:46 I'd say it's similar, because e.g. 03:48:47 Very few languages don't have that misfeature, though. 03:48:53 in C you would write a search function returning either a pointer to the found data or NULL 03:48:57 -!- Wamanuz2 has joined. 03:48:58 and if you used that without checking you could get segfaults 03:49:04 which is basically = null pointer exceptions 03:49:06 right. 03:49:30 I never get those problems in Perl. My code just doesn't work. :D 03:49:35 big difference, right. 03:49:36 undef 03:50:01 yeah, but I don't get an /exception/, just more undefs, usually. 03:50:03 pikhq: help me debug my space leak or DIE. 03:50:15 BIG DIFFERENCE, as I said. 03:50:20 huge difference. massive. 03:50:26 galactic 03:50:27 CakeProphet: or you. 03:50:48 wait what? 03:50:55 is that a *for? 03:51:12 pikhq: help me debug my space leak or DIE. 03:51:20 oh... yeah dude I'm a master of Haskell. 03:51:25 or is this a difference space leak? 03:51:34 *different 03:51:39 nope :) 03:51:42 i just can't find it, argh 03:51:47 CODE PLZ. 03:51:47 this should have constant memory use :( 03:51:51 NEED CODE. I AM HUNGRY. 03:52:24 http://sprunge.us/aViQ; the profiling results say it's in option, but I suspect countBytes is being inlined by optimisation or something into optBytes, so it might be in countBytes instead 03:52:30 I've already strictified option as much as I can, so 03:52:40 hmm, oh dear, I think I may be overly strict 03:52:41 in wcthere 03:52:42 wc there 03:52:45 but whatever 03:52:51 point is, it should have constant memory use, but it grows forever 03:52:53 try on a one gig file 03:54:42 oh yeah, depends on iteratee and fclabels 03:55:34 compile with: ghc --make -Wall -O2 wc.hs 03:55:49 what do you use to profile? 03:56:03 -!- Wamanuz2 has quit (Ping timeout: 255 seconds). 03:56:41 yeah, it is not in countBytes, i just checked by removing the options stuff 03:56:53 CakeProphet: compile normally, then compile with -prof -auto-all -osuf p_o 03:57:02 then ./wc quux +RTS -p produces wc.prof 03:57:14 see ghc manual for heap profiling options, -hc produces a basic thing which you can convert to a postscript file to view 03:57:27 ok so the leak is in optBytes 03:57:50 meaning it's in option somewhere 03:58:46 this program is mad strict. 03:58:50 oh ho, I think of course, 03:58:52 CakeProphet: what? no it's not 03:59:00 anyway I _think_ I might have figured out the problem 03:59:06 for a Haskell program anyways 03:59:15 no it's not 03:59:21 there are exactly two functions with any kind of strictness annotations 03:59:24 fine. it's not. 03:59:26 In LLVM, Is it possible means to, like, assume x>0 if you have a command test x>0 and then branch to an "unreachable" instruction if false, In case the optimizer does something with that, somehow? 03:59:29 countBytes, to make the byte count strict 03:59:30 and option 03:59:35 in a misguided attempt to reduce a thunk leak that isn't there 03:59:38 that i am now fixing for real 03:59:50 zzo38: why not ask in the llvm channel on oftc? 03:59:57 is it I.zip perhaps? 04:00:06 no, it's the fact that I don't zip it all at once 04:00:09 I _think_ 04:00:12 I did already. Do you have any opinions about it though? 04:00:16 zzo38: nope 04:00:19 ah, so needs an extra $! 04:00:25 CakeProphet: ...no. 04:00:30 it needs _less_ strictness 04:00:42 CakeProphet: btw, if countBytes wasn't strict in n, it would blow up a huge thunk. 04:00:47 right. 04:00:51 proportional to the size of the file 04:01:07 I just misunderstood what you meant by "zip it all at once" 04:01:12 I assumed you meant zip it strictly. 04:01:42 nah, i mean zip it _before_ any binds 04:01:45 I _think_ 04:01:47 this may be totally wrong 04:01:53 yep, doing 04:01:55 wc <- I.run =<< I.enumHandle I.defaultBufSize handle (countBytes `I.zip` countWords `I.zip` countLines) 04:01:57 with a let right? 04:01:57 removes the leak entirely 04:01:59 er, no. 04:02:00 so I need to restructure things 04:02:02 CakeProphet: ...no. 04:02:03 forget it 04:02:05 i've solved the leak 04:02:10 I am simply curious now. 04:02:13 now I just have to fix the program... 04:02:19 CakeProphet: i know, but I'm not sure I could explain :) 04:03:29 hmm, so what's the associativity rules for functions used with the ` syntax? 04:03:44 the associativity is irrelevant, but I forget 04:03:48 :t foldr zip 04:03:49 Occurs check: cannot construct the infinite type: b = (a, b) 04:03:49 Expected type: [b] 04:03:49 Inferred type: [(a, b)] 04:03:54 can you declare infix[rl] on non-operators? 04:04:08 you can for `foo` 04:04:15 ah okay, also is there a default? 04:04:21 yes. 04:04:41 I see. 04:05:28 I have absolutely no clue how you're handling options there.. 04:07:27 oh I see. :) the foldr1 (.) xs defaultProc was confusing me 04:07:31 because I didn't see the 1 04:08:01 -!- Wamanuz2 has joined. 04:08:05 yeah, turns out that way sucks though :) 04:08:13 trying a new way now, it kind of irks me though 04:08:52 elliott_: is this some kind of elaborate way to one-up my wc interpreter that was totally superior to your sed one? 04:09:34 no, this is me trying to write the fastest wc ever that's feature-complete with gnu's 04:09:43 in clean, pretty haskell 04:10:25 see, that sounds like some serious one-upping right there. >:D 04:10:47 -!- azaq23 has joined. 04:10:56 Perhaps you should one-up the rest of coreutils. :P 04:11:41 CakeProphet: well, my old version is already faster than gnu wc, but its word counting is a bit broken (but it's just as expensive as a "real" word counter, so it's still a fair comparison), and it doesn't handle multibyte or locale word boundaries 04:11:48 that's gnu wc with LC_ALL=C, i.e. disabling locale handling 04:11:52 without LC_ALL=C, gnu wc is totally hopeless 04:12:16 CakeProphet: http://sprunge.us/jMOH this is the old version 04:12:17 elliott_: so what makes this one faster than gnu's 04:12:24 CakeProphet: GNU is stupid. 04:12:27 uh, iteratees, basically. 04:12:27 -!- Wamanuz2 has quit (Ping timeout: 244 seconds). 04:12:32 pikhq: well the gnu wc code probably is not that bad 04:12:36 it's just that iteratees are great. 04:12:48 elliott_: It abstracts C stdio. 04:12:54 CakeProphet: (that version doesn't do the expensive-but-wrong word handling, the one that does is an abandoned version) 04:13:02 :t foldl' 04:13:02 forall a b. (a -> b -> a) -> a -> [b] -> a 04:13:17 -!- Wamanuz2 has joined. 04:13:20 Also, Haskell IO is more intelligent than C IO. 04:14:54 elliott_: oh look the example in Data.Iteratee is even a byte counter. 04:15:15 CakeProphet: see http://okmij.org/ftp/Streams.html#iteratee, where oleg does his own benchmarked wc :) 04:15:19 (and introduces iteratees) 04:15:29 http://okmij.org/ftp/Haskell/Iteratee/Wc.hs 04:16:16 so yeah, concurrent MUD client in Haskell is a project now. 04:16:37 but with a job I don't know if I'll work on that anytime soon. 04:17:17 ♥ Oleg. 04:19:10 -!- Wamanuz2 has quit (Ping timeout: 244 seconds). 04:19:50 -!- Wamanuz2 has joined. 04:25:53 -!- Wamanuz2 has quit (Ping timeout: 244 seconds). 04:26:02 yay, memory leak solved, only problem is that it's kind of ugly 04:27:02 Is it possible to make something like that with GNU C: #define static_new(_type) ({ _type x; &x; }) 04:27:10 Oops sorry 04:27:10 -!- Wamanuz2 has joined. 04:27:18 Is it possible to make something like that with GNU C: #define static_new(_type) ({ static _type x; &x; }) 04:27:20 Now it is better. 04:29:22 I think that'd work in GCC, though I *don't* know if it's defined behavior or not. 04:29:39 ?hoogle uncurry 04:29:39 Prelude uncurry :: (a -> b -> c) -> (a, b) -> c 04:29:39 Data.Tuple uncurry :: (a -> b -> c) -> (a, b) -> c 04:29:47 ?hoogle uncurry2 04:29:48 No results found 04:30:39 pikhq: How would you expect to figure out if is defined behavior or not? 04:36:21 -!- Wamanuz2 has quit (Ping timeout: 264 seconds). 04:37:00 :t curry 04:37:01 forall a b c. ((a, b) -> c) -> a -> b -> c 04:37:24 fancy stuff. 04:37:38 -!- Wamanuz2 has joined. 04:38:37 Dunno; I'm not sure that defined/undefined behavior is well-defined for GNU C. 04:39:08 "I knew I'd get your attention with this one. Let me start out by saying that I'm not here to trash, insult or attack women. Instead, I want people to better understand that men and women are more alike than they think when it comes to sex and sins of the flesh. In order to do this, I will show, by example, how women behave in the exact manner that they accuse only men of behaving: like pigs." 04:39:14 i love finding terrible things randomly on the internet 04:39:53 this man is a scholar of the highest tier. 04:39:54 ...:'( 04:40:22 http://uk.askmen.com/dating/curtsmith/59_dating_advice.html 04:40:23 enjoy 04:40:28 Men want sex, women want money... Next Page >> 04:40:30 gotta press that link 04:40:39 oh my god 04:40:45 Pig Scale 04:40:46 Women= [five pictures of a pig] 04:40:58 wow this is the most horrible thing i have ever seen 04:41:16 is this just for men to read so they can continue to ignore being called pigs 04:41:17 uk.askmen.com 04:41:39 6. Women use men for money: The stereotype that men use women for sex has been around for centuries. And when you hear that women use men for cash, remember that that also places them in the pig category. At least we want their bodies, they, in turn, are checking out our checking accounts. So while women complain that men use women for sex, how much better are they if they're using men for materialistic purposes? 04:41:41 I should select a subset of the GNU C features. ({ ... }) is allowed, vararg macros are allowed, case ranges is allowed, pointer arithmetic on void pointers (but not on function pointers, nor is sizeof allowed on void) is allowed, \e is allowed, x?:y is allowed, zero length arrays are allowed. 04:42:23 this is just 04:42:25 the worst article 04:42:32 uk.askmen.com, why 04:42:53 what is a zero legnth array? 04:42:56 zzo38: Why 0-length arrays? C99 provides the struct hack in a portable manner. 04:43:11 monqy: im disappointed, i had such high expectations for uk.askmen.com 04:43:15 CakeProphet: struct foo {blahblahblah; int bar[0];} 04:43:20 7. Queen of the industry: Yes, men buy pornography, but women dominate the industry. Sex sells and everywhere you look, be it a movie, an album, a magazine cover, the fashion world, or the adult industry, you will always see a woman endorsing sex. 04:43:23 endorsing sex: PIG POINTS 04:43:24 And also structures with no members, and unnamed struct/union fields. 04:43:30 -!- Wamanuz2 has quit (Ping timeout: 276 seconds). 04:43:35 CakeProphet: Used to represent an array with a header. 04:43:38 Who's the real oinker here? Next Page >> 04:43:45 monqy: i like how he doesnt even bother keeping score for men 04:43:47 CakeProphet: The C99 equivalent is struct foo {blahblahblah; int bar[];} 04:43:58 Flexible array members are different according to the GCC manual: http://gcc.gnu.org/onlinedocs/gcc-4.6.0/gcc/Zero-Length.html#Zero-Length 04:44:07 zzo38: I dunno about no-member structs, but unnamed fields is C1x. 04:44:30 I remember another great thing like that but I forgot where 04:44:31 monqy: "Get it on Mr. Clinton! You Go Lewinsky!" last line 04:44:37 something about turning femenists into "real girls" 04:44:43 monqy: i saw that too 04:44:48 great article 04:44:52 I think the [0] is actually simpler and more sensible to fit with C in my opinion; it is possible for the compiler to do nothing special and work. 04:44:53 i'm still not sure it was actually real 04:44:56 i don't want to believe 04:45:18 the copy i saw was a photo/scan of a magazine but i forget the magazine name 04:45:22 zzo38: Yes, *but* it's non-standard. 04:45:26 i think it was a mens magazine 04:45:31 O, and also long long int is allowed. 04:45:43 When it's trivial like that, you really should prefer standard features. 04:45:45 monqy: yes, askmen is a men's magazine 04:45:47 long long is C99. 04:45:57 CakeProphet: no I mean the article about turning femenists into "real girls" 04:46:01 long long long? 04:46:03 Yes, some of these features are C99 features. Some are not. 04:46:04 CakeProphet: I don't think it was askmen 04:46:07 monqy: yes, askmen is a men's magazine 04:46:10 thank you for this valuable info 04:46:13 monqy: it was... maxim i think? 04:46:18 yes maxim 04:46:20 elliott_: just clearing up some confusion. 04:46:27 What does =~ in ruby do? 04:46:28 =w= 04:46:34 Lymee: probably regex stuff. 04:46:39 as that is what it does in Perl. 04:46:47 and Ruby jacked Perl's regex syntax. 04:46:49 zzo38: Why pointer arithmetic on void*? 04:46:51 What I am saying is simply a simpler C than GNU C that is a subset of GNU C and a superset of standard C. 04:47:05 CakeProphet, I know. 04:47:13 I just have no idea what kind of regex stuff. 04:47:14 Saying what makes sense to me, at least. 04:47:16 Lymee: $string =~ m/pattern/ 04:47:24 Lymee: or string, or whatever your variable is in Ruby. 04:47:27 @string even 04:47:28 Unknown command, try @list 04:47:31 Anyways, all this nitpicking aside, that subset of GNU C seems like the subset that C compilers are likely to implement, so. 04:47:35 if word =~ /([\W\d]+)/ 04:47:37 How cryptic. 04:47:41 Lymee: not really. 04:47:59 Is =~ "matches?" 04:48:00 if it matches, that returns true. It matches one or more repetitions of non-word characters or digits. 04:48:04 no 04:48:16 =~ is "apply this regexp to a string" 04:48:21 it can be a match or a substition. 04:48:37 So because there's no second // part, it's a match? 04:48:38 http://www.ltcconline.net/lukas/gender/political/pics/political21.jpg found a copy 04:48:40 in the case of /.../, that is a match. 04:48:50 Lymee: no, because there's no s. Substition looks like: s/.../.../ 04:48:52 no 04:48:54 its not a substitution 04:48:56 there is no such thing in ruby 04:48:59 substitution is a separate function 04:49:02 CakeProphet, ah. 04:49:03 oh really? 04:49:05 =~ is match in ruby 04:49:11 lame. :P 04:49:11 it also mutates global variables relating to the match 04:49:37 Lymee: okay, well everything I said applies in Perl. m/.../ is match in Perl, but the m is optional. 04:49:57 pikhq: Yes, it is my opinion too. It is what makes sense to me without adding too much stuff that didn't seem to fit. 04:50:03 O, and also // comments are allowed. 04:50:16 // is C99, so they damned well *better* support it. 04:50:17 :) 04:50:43 Heck, it's in the common subset of C and C++. 04:51:00 I am talking about something else; this subset is usable in the semiGNU C89 mode as well. In semiGNU C99, of course it is already allowed, as well as many more things. 04:51:30 Well, if you're talking C89 you should probably add a few more things. 04:51:39 Lymee: also, there's probably a !~ operator, which would be "does not match" 04:51:43 First and foremost: mixed declarations and statements. 04:52:12 Perhaps also _Pragma, just because #pragma is a complete misfeature. 04:52:28 pikhq: No. I think is not necessary to add that. Although of course in C99 mode is allowed. 04:52:42 Seriously though, just consider C99. 04:52:51 C89 is older than I am. 04:53:34 C99 itself is 12 years old. 04:53:48 And soon to be deprecated. 04:54:08 C99 includes some things I think do not belong. Even GNU89 includes some things I think do not belong. Is why I invent this subset (I believe it works in GNU89 mode in both GCC and LLVM C compiler, but both of them support more than what I said) 04:54:30 What's wrong with C99? 04:55:06 I think untagged unions are the lamest thing ever. Even lamer than Ruby's use of a substitute method instead of s/// 04:56:06 pikhq: Many things. There are some good things with it, though. Just some things I believe does not fit very well with my idea of what C should be. Maybe some people might agree and others disagree, possibly, which is also OK. 04:56:12 lameness is an important quality, that should be avoided. 04:56:19 yeah, it's better to conflate an operation upon a regexp and a function with an operation upon a regexp that the former uses 04:56:27 ruby's use makes noOooOooo sense 04:57:03 being lame does not imply making no sense. 04:57:52 zzo38: I bet you've got problems with 04:59:41 Most of the other stuff seems either benign or fixing something that was done distinctly on different systems. 04:59:42 elliott_: also that's a strange way of looking at it, I think. 05:00:01 it really isnt 05:00:06 s vs m makes no sense at all 05:00:23 (for instance: variable-length arrays, to replace much of the use-case for alloca, which is nearly impossible to use portably) 05:00:34 21:48:55 < elliott_> =~ is match in ruby 05:00:35 21:49:00 < elliott_> it also mutates global variables relating to the match 05:00:41 global mutation? really? 05:00:56 it's all just for the benefit of syntactic shorthand. It's not really a jacked up semantic model at all. 05:01:00 monqy: so you can do e.g. 05:01:07 monqy: capture variables, yes. 05:01:09 puts $1 if foo =~ /abc(bar)/ 05:01:31 if you don't like that, then just assign your capture variable to a different name, problem solved. 05:01:33 elliott_: How Perl. 05:01:51 pikhq: well in ruby $ means global 05:02:08 That's still a very Perl-like thing. 05:02:18 Yes, complex numbers in C is the most problem. 05:02:27 zzo38: That's optional in C1x. 05:05:32 Yes, they're making unmandatory a couple of features. 05:05:46 elliott_: qr, m, and s are all their own operators. =~ is an application, and without it the operation is applied on $_. What is nonsensical about that? There's no function. Nothing is conflated. It doesn't work like that. 05:06:29 Yeah, they really did get that from Perl. 05:06:36 s/.../.../ does not produce a result that =~ takes. 05:06:43 pikhq: yes it's exactly the same in appearance 05:06:49 Hint: if you get it from Perl, you're doing it wrong. 05:07:16 *Particularly* if you intend to have programs longer than 20 lines or so in it. 05:07:21 cake "likes perl" prophet 05:07:39 CakeProphet: it is conflating distinct operations, you just defend perl no matter what stupid decisions it makes 05:07:47 so i'm not really interested in arguing this 05:09:34 makeIter Main 473 4 67.7 68.1 71.1 69.5 05:09:34 countBytes Main 478 1048577 2.1 1.4 2.1 1.4 05:09:37 oh my, makeIter is slow 05:09:42 elliott_: I have reasons for defending it. it's not an irrationality. Perl is not a religion. 05:10:07 nope, there is definitely no rational way to defend this aspect of perl, or at least it is not what you said 05:10:40 You are defending awk++. Stop it. 05:10:56 if(x<=0) __builtin_unreachable(); 05:11:05 Does that have any meaning at all? 05:11:10 pikhq: perl is not indefensible 05:11:17 zzo38: only if you have an else after, I think 05:11:48 zzo38: Behavior is undefined after reaching that function. 05:12:21 pikhq: I know it is undefined. 05:12:33 It's used to give the optimiser a hint that control doesn't go past that point. 05:12:41 I know that. 05:12:55 Then... Why did you ask? 05:13:24 My point is a bit different. See that it is an unusual kind of use that the GCC manual does not mention for this command. 05:14:40 elliott_: basically you are saying I cannot defend a syntactic construct because it's convenient. 05:14:44 It is somehow possible for the optimizer to deduce x is positive at that point (maybe it is returned from an external function that the compiler does not know about)? Or, do something similar to assume it is not null pointer, or whatever? 05:14:52 * CakeProphet is back, with chips. :D 05:15:09 CakeProphet: 05:15:21 zzo38: It is *possible* for the optimizer to make that deduction from that, yes. 05:15:24 nice quine. 05:15:31 $foo =~ s/a/b/g; 05:15:37 foo.gsub! /a/g, "b" 05:15:38 It seems to me that maybe it does mean that but I don't know if it actually does that. 05:15:41 wow yes, that last one sure is less convenient 05:15:44 SURE IS 05:16:10 foo.gsub! /a(.)/g { |x| x.upcase } 05:16:20 WHOOPS look at that, doing it the proper way allows using functions far more conveniently than Perl's ugly /e 05:16:25 DAMN this is so inconvenient 05:16:32 I'm so glad Perl conflates matching and substitution instead 05:17:12 there is absolutely no difference. Your complaint is a syntactic preference. 05:17:29 there is no conflation of... anything. 05:17:38 lol 05:17:47 remember when i said i wasn't interested because you're just a perl fanboy 05:17:50 yup 05:18:05 wait no this is a revolutionary new paradigm 05:18:12 if you can compare two different ways of doing something with an example program 05:18:16 then it has to be a purely syntactic issue 05:18:27 EVERY LANGUAGE IS JUST A DIFFERENCE OF SYNTACTIC PREFERENCES!!!!!! 05:18:28 OMG 05:18:31 semantics aren't real! 05:18:36 monqy: this is so zepto!!!! 05:18:39 you don't say 05:18:40 What is semantically different here? 05:19:01 Also fun: I managed to make shish compile to 940 bytes. 05:20:10 Yay, absurd C. 05:21:23 There is more than syntactic preferences. It is a large part of it though. 05:21:41 elliott_: aside from the scoping of variables in the upcase example compared to how you would do it in Perl, there isn't really any semantic difference. 05:22:00 unfortunately, my interest in discussing this with you is zero. 05:23:08 not that it's a discussion; I considerably doubt any argument you would be able to come up with would sway me, and I very much doubt you'd concede that what Perl is doing is a semantic conflation, so it's akin to two missionaries trying to convert the other. which is never going to happen over at maximum an hour or two of irc. 05:23:28 http://sprunge.us/hZNB (for those who are curious) 05:24:01 elliott_: well, if you explained what is semantically different, I could at least tell you why I think you're wrong. :P 05:24:12 and then you could do the same. Sounds fun! 05:24:24 CakeProphet: exactly, all you want to do is explain to me why Perl is right 05:24:36 there is no part of you that is open to reconsidering whether it might be, and the same for me 05:24:36 because as everyone knows 05:24:38 perl is always right 05:24:39 not really. I just want to explain that is semantically the same. 05:24:46 +it 05:24:46 the problem is that i'm right, and you're wrong, and I'm not interested in going back and forth. 05:24:54 CakeProphet: exactly, all you want to do is explain to me why Perl is right 05:25:16 what if it's the same but also wrong (it isn't the same (also it's all wrong)) 05:25:23 pikhq: that small strcpy sucks, you can do that in asm shorter 05:25:34 monqy: lets appreciate haskell together 05:25:38 no, there's no normative argument here. Programming languages are not ethical assertions. 05:25:38 it will be great and unproductive 05:25:59 hahaha WOW shut up 05:26:12 i am not saying that no argument could take place 05:26:17 i'm saying the argument you want to take place would not be one 05:26:21 i am a doctor of programming language ethics 05:26:57 monqy: that is not appreciating haskell 05:26:57 well yes, if you're just going to laugh at me, I suppose I don't really want to talk about it. 05:27:19 i was laughing at your statement 05:27:37 I generally like haskell but the complex/irregular syntax gets on my nerves, especially when it comes to metaprogramming 05:27:42 but i'm not sure why you're continually pushing me into a silly folly i've expressed repeated disinterest in having 05:27:49 monqy: metaprogramming as in template haskell? 05:27:52 oh and the lack of nested (pattern) guards. 05:28:18 because I am genuinely curious as to what you think is happening when you use regexps in Perl. Semantically. What evaluates to what. 05:28:24 elliott_: yes; I forget if there are any others but I've never looked much at them 05:28:27 CakeProphet: you don't understand what semantics are 05:28:38 monqy: I mean, I still think that if you realise that operators are regular and user-defined, Haskell's syntax is actually one of the simplest languages in terms of syntax; no Lisp obviously, but it's close 05:28:52 monqy: (and Lisp has syntax, really, it's just hidden in the special forms) 05:28:55 right 05:29:03 monqy: right, well, Template Haskell is ugly... but it's also not something you use a lot 05:29:14 -!- Wamanuz2 has joined. 05:29:28 elliott_: uh, the meaning of a program? 05:29:41 monqy: and the most common uses of TH -- quasiquotation and top-level ... I forget the term, $() things -- are pretty as of GHC 7 05:29:56 if you're talking about a specific semantic theory, then you're right I don't know anything about that. 05:29:59 iirc $() is "splicing" 05:30:04 last I checked the docs at least 05:30:07 monqy: [qq|...|] and at the top level, -- ah yes top level splice -- you can omit $() 05:30:09 so e.g. 05:30:12 mkLabels [''MyDataType] 05:30:31 you're right that defining those is pretty super-ugly, though 05:30:38 -!- Sgeo_ has quit (Read error: Connection reset by peer). 05:30:39 at least it's comprehensive, though 05:30:49 but yeah, I use TH rarely 05:31:05 since you can define your own control structures without it, it's not that useful most of the time 05:31:08 I think I last used it two years ago so my memory's a bit foggy 05:31:12 -!- Sgeo_ has joined. 05:31:26 monqy: haskell or TH? 05:31:29 TH 05:31:35 I last used haskell today or was it yesterday 05:31:35 what language do you normally use anyhow 05:31:38 haskell 05:31:42 right :P 05:32:16 i couldn't really use any language other than haskell at this point, even disregarding the language itself, it's just so far ahead in pretty much everything 05:32:31 parsing, IO, state management, concurrency, text processing... 05:33:52 -!- Wamanuz2 has quit (Read error: Connection reset by peer). 05:38:54 On Eric Gill, the designer of the famous Gill Sans typeface: "His personal diaries describe his sexual activity in great detail including the fact that Gill sexually abused his own children, had an incestuous relationship with his sister and performed sexual acts on his dog." 05:39:24 but is the typeface any good 05:40:21 monqy: ever looked at the BBC logo? or anything else the BBC has ever done? 05:40:33 what's the bbc 05:40:39 monqy: you're joking right 05:40:41 elliott_: not everyone is a limey. 05:40:48 or an American, I guess. 05:40:55 I can't say I've ever taken a good look at it 05:40:55 CakeProphet: yes, non-limeys don't know what the bbc is. 05:40:58 obviously 05:41:09 CakeProphet: I'd say most Americans know of the BBC. 05:41:18 I prefer lots of serifs on my typefaces 05:41:23 pikhq: yes, that is what I said. 05:41:30 monqy: the bbc use gill sans almost exclusively. gill sans is used a lot in railway stuff in the uk. 05:41:37 tufte uses gill sans on his website (THANKS WIKIPEDIA) 05:41:41 child abuse endorsement 05:41:43 Believe it or not, we're not completely ignorant of the UK; it's one of the few countries that we don't ignore, in fact. 05:41:46 monqy: definitely 05:42:08 Also, Gill Sans is a nice font. 05:42:12 monqy: and the child was a _dog_, too! wait, you're referring to his kids. 05:42:35 bestiality endorsement 05:42:38 As the revelations about Gill's private life resonated, there was a reassessment of his personal and artistic achievement. As his recent biographer sums up: 05:42:38 "After the initial shock, […] as Gill's history of adulteries, incest, and experimental connection with his dog became public knowledge in the late 1980s, the consequent reassessment of his life and art left his artistic reputation strengthened. Gill emerged as one of the twentieth century's strangest and most original controversialists, a sometimes infuriating, always arresting spokesman for man's continuing need of God in an increasingly materialis 05:42:39 tic civilization, and for intellectual vigour in an age of encroaching triviality."[8] 05:42:57 Though, it's not Helvetica. 05:43:07 i like how he's all... 05:43:10 "well we got over the child abuse thing" 05:44:23 honk 05:44:44 ^^ Homestuck withdrawal 05:45:14 * pikhq wonders at Arial having ever been made 05:45:25 Fun fact: fonts cannot be copyrighted in the US. 05:45:32 comic sans ms, papyrus 05:45:34 classics there 05:45:45 pikhq: yes they can 05:45:48 typefaces can't though 05:45:58 pikhq: I think that is only for raster fonts 05:46:00 elliott_: Ah, right, sorry. The distinction is important. 05:46:07 But I don't know for sure 05:46:09 wingdings is another classic. 05:46:12 zzo38: The shape of the glyphs is uncopyrightable. 05:46:39 pikhq: OK. 05:46:41 zzo38: A programmatic representation of them, such as a TTF file, can be under copyright. 05:46:47 pikhq: What about patents 05:47:43 also, amusing: Other people can't file patents if we have them. No, you're wrong. 05:47:57 coppro: Novel designs can be patented. 05:48:07 In 1992, only days after the release of Windows 3.1, it was discovered that the character sequence "NYC" in Wingdings was rendered as a skull and crossbones symbol, Star of David, and thumbs up gesture. This was often interpreted as an antisemitic message.[8] Microsoft strongly denied this was intentional, and insisted that the final arrangement of the glyphs in the font was largely random. (The character sequence "NYC" 05:48:51 How strange. 05:49:20 coppro: Of course, such a patent on Helvetica would have expired when Arial was made. 05:49:25 Hence, Arial has no reason to exist. 05:49:47 CakeProphet: are you serious 05:49:54 elliott_: oh yes. 05:49:59 like really 05:50:10 also, the article ☎ redirects to telephone on Wikipedia. I found this amusing. 05:50:15 https://secure.wikimedia.org/wikipedia/en/wiki/File:Wingdings_NYC.svg 05:50:21 CakeProphet: but are you serious 05:50:30 elliott_: ...now I don't know what you mean. 05:50:32 pikhq: can i improve upon shish 05:50:36 elliott_: Feel free. 05:50:38 CakeProphet: like do you really think that is strange 05:50:52 yes. I think it's strange that people would notice something like that and freak out. 05:51:10 This program http://sprunge.us/hZNB seems like it is one that should be written assembly language, not in C, it seems to me 05:51:43 zzo38: It halfway is. 05:52:27 pikhq: can you link me to the gcc docs on __asm__ thx 05:52:48 pikhq: btw the "c" (status) line has tabs 05:52:50 http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html 05:52:56 oh, so do the pid and options lines 05:52:56 plz fix 05:53:00 also other ones 05:54:40 A reversible CA on a torus must eventually repeat everything, right? Because a normal CA on a torus eventualy goes in a loop like.... suppose I have a timeline A B C, then a normal CA might start from B. But a reversible CA, if it did that, would lose information about A, an dit would also imply that theee are two ways to get to B. 05:54:54 CA? 05:55:01 -!- zzo38 has quit (Remote host closed the connection). 05:55:33 coppro: seriously? 05:55:44 pikhq: hmm, how would I get esi and edi set to specific values in an asm? 05:55:51 elliott_: he obviously means california from this context 05:55:59 and also say i read esi and clobber bytes at edi and beyond (as a pointer) 05:56:04 coppro: no he doesn't 05:57:14 coppro, cellular automata 05:57:32 elliott_: esi and edi are S and D 05:57:48 Sgeo_: not really, there are plenty of patterns that could die without any repetition. Essentially it is the same thing as a CA that wraps around. 05:58:00 pikhq: hmm, do the rep prefixes modify the destination poitner? 05:58:00 pointer 05:58:21 slightly off topic for this channel, but might be amusing read http://adamharley.co.uk/2011/06/wordpress-plugin-backdoors/ 05:58:36 plugin. backdoors. 05:58:37 newsham: are you kidding, we are never on topic 05:58:46 analysis of the rogue source commits found on the wordpress repo recently 05:58:46 CakeProphet: why is that phrase objectionable 05:58:51 "you mean code... has bugs?" 05:58:59 CakeProphet, hmm, how could something die, though? Death implies that a previous state was similar to the new one, and also a different previous state was more active than the new one 05:58:59 elliott_: Hmm? 05:59:04 newsham: wait, people trust wordpress's code nowadays? 05:59:06 pikhq: ? 05:59:22 Sgeo_: do you like reversible cas because they'd prevent death 05:59:23 elliott_: That statement, I do not understand it. 05:59:28 i dont knwo if they do, but if they do, they should probably upgrade. :) 05:59:37 pikhq: xeightsix asm 05:59:47 newsham: so they can wait until the next vulnerability is found? 05:59:55 elliott_, well, presumably a conscious being on a reversible CA could still die, but on a torus, if the world repeats, they'd exist again. 06:00:04 elliott_: Ah. I dunno. 06:00:09 running code in an unsafe language run by amateurs on a high-profile website, PERFECT IDEA 06:00:18 s/run by/written by/ 06:00:38 Sgeo_: but is that why you like them 06:00:51 elliott_: perhaps when you are older I will tell you why I found that sequence of characters amusing. 06:01:05 elliott_, no, I just want a conserved quantity 06:01:07 but it had nothing to do with code. 06:01:16 So that there's something to compete over other than space 06:01:59 CakeProphet: oh, duh 06:02:04 :( 06:02:07 CakeProphet: my age is irrelevant, it just was not funny. 06:02:15 I agree with elliott_ 06:02:44 elliott_: yes it was actually a somewhat juvenile observation. oh well. 06:03:09 juvenile is fine as long as it's funny :P 06:03:16 amused, not laughing. 06:03:22 unamused 06:03:24 ok but seriously i have to make this code shorter. 06:03:32 pikhq: hey why are all these asms volatile 06:03:39 that's a pessimisation 06:04:08 Sgeo_: I've always thought a CA with several interesting states would be... interesting. 06:04:20 but that is something completely different than what you're talking about. 06:04:28 CakeProphet: Do you know the Interesting Number Theorem? 06:04:33 nope 06:04:44 pikhq: . 06:04:48 Theorem: Every natural number is interesting 06:04:51 What? Someone who's never heard of it? 06:05:08 elliott_: Actually, probably no good reason, thinking about it now. 06:05:39 Proof: Consider the set of uninteresting natural numbers. If nonempty, it must contain a least element, which is the lowest uninteresting natural number. This is an interesting property. Contradiction. Therefore the set is empty. 06:05:43 coppro: sounds very, uh, interesting. 06:06:01 is every theorem interesting? 06:06:12 shishorig.c: In function ‘small_waitpid’: 06:06:12 shishorig.c:59: error: ‘__NR_waitpid’ undeclared (first use in this function) 06:06:12 shishorig.c:59: error: (Each undeclared identifier is reported only once 06:06:13 shishorig.c:59: error: for each function it appears in.) 06:06:14 pikhq: :( 06:06:18 Is there such a thing as a noncomputable theorem? 06:06:32 CakeProphet: The Interesting Number Theorem can be extended to any countable set 06:06:32 Sgeo_: how about defining that and then asking 06:07:03 coppro: so then theorems are a countable set? 06:07:08 ... 06:07:10 CakeProphet: obviously 06:07:13 i hate you all pikhq should just fix my problem 06:07:16 elliott_: Strange. That's in asm/unistd.h, part of the kernel headers. 06:07:20 elliott: but this particular issue has nothing to do with amateur developers. 06:07:32 * Sgeo_ pretends not to have asked a similar question as CakeProphet did, even if I was joking 06:07:33 newsham: sure 06:07:33 its an intentionally placed backdoor through compromised accounts 06:07:37 newsham: but it still involves trusting wordpress code :) 06:07:41 coppro: that depends... 06:07:45 coppro: the set of proofs is countable, the set of truths is not 06:07:58 *shrug* bloggers.. 06:08:02 pikhq: im on sixtyfour bit btw 06:08:04 elliott_: it does depend on your definition of theorem, however 06:08:07 i donnut use the wordpress 06:08:15 elliott_: -m32 06:08:15 a theorem can be expressed as a finite set of definitions, plus a statement 06:08:18 pikhq: kay 06:08:21 And so am I. 06:08:36 coppro: a theorem is a statement and a proof 06:08:39 then there are countable theorems 06:08:40 This *really* won't work on x86_64. 06:08:42 a theorem is a statement that is true 06:08:44 then there are uncountable theorems 06:08:49 pikhq: right 06:08:58 /tmp/ccP6IGbl.o: In function `_start': 06:08:58 shishorig.c:(.text+0x4d): undefined reference to `__builtin_unreachable' 06:08:58 shishorig.c:(.text+0x177): undefined reference to `__builtin_unreachable' 06:09:01 guess ill use a newer gcc 06:09:09 elliott_: The true statements expressible in the English language are, however, countable 06:09:18 pikhq: should shish just hang when you start it 06:09:18 or in any reasonable human language 06:09:23 coppro: that has nothing to do with formal logic 06:09:35 elliott_: neither do theorems 06:09:37 The fuck, it segfaults on input. 06:09:46 coppro: yes they do, theorem is a term of formal logic 06:10:06 $ ./shishorig 06:10:06 asdjoasd 06:10:06 asoijd 06:10:06 asdijasdoijaosdjasdj 06:10:06 [control+D]Segmentation fault 06:10:07 pikhq: see above 06:10:09 elliott_: Formal logical theorems are different from English theorems, though 06:10:10 Is the set of countable sets countable? 06:10:20 CakeProphet: dude, no 06:10:27 coppro: nobody says theorem to mean "something true in English" apart from nerds trying to sound smart 06:10:28 elliott_: Yeah, WTF. 06:10:38 CakeProphet: jesus 06:10:46 elliott_: which is the One True Formal Logic then? 06:10:48 elliott_: Oh, wait. Of course it's not going to do anything if it gets passed a non-command. 06:10:53 Kripke modal logic? 06:10:56 coppro: there is none, obviously 06:11:01 coppro: english isn't a formal logic though 06:11:25 i was answering in terms of the most common logics, i don't know of one anyone uses that has a countable number of truths 06:11:36 pikhq: i tried "ls" 06:11:40 elliott_: Also, it does not understand PATH. 06:11:41 was that wrong 06:11:51 oh, /bin/ls works 06:11:53 elliott_: Most logics actually do have a countable number of truths 06:12:03 coppro: are there a countable number of truths in zfc? i very much doubt that. 06:12:19 elliott_: zfc is not a logic 06:12:28 The volatiles are needed. 06:12:41 coppro: sure it is 06:12:44 it's a set of axioms 06:12:54 is the set of all logics a countable set? 06:13:03 CakeProphet: ;_; 06:13:15 elliott_: I've typically seen it presented without syntactic trappings 06:13:19 "countable" being synonymous with "interesting", now that it is proven. 06:13:27 CakeProphet: Not at all 06:13:48 "countable set" being synonymous with "interesting stuff"...? 06:13:53 coppro: well zfc is basically parameterised over the logic of your choice 06:13:59 elliott_: exactly 06:14:02 CakeProphet: do you have any idea what you are talking about 06:14:05 coppro: so it's a family of logics :) 06:14:06 of course. 06:14:12 how could I not know what I am talking about. That is silly. 06:14:32 I didn't even make that a question, because it is so obvious that I do not need to ask. 06:14:39 elliott_: First-order may or may not have a countable number of truths, depending on the model 06:14:52 if the model has an uncountable member, the set of truths be uncountable 06:15:13 pikhq: } else if (*(unsigned*)tokened[0] == '\0tes') { 06:15:16 pikhq: is this for "env"? 06:15:22 how does one use this :P 06:15:32 coppro: fair 'nuff 06:15:36 first-order logic upsets me :( 06:15:40 elliott_: Yes, that's for env. 06:15:42 it's like not having first-class functions 06:15:45 pikhq: so "env foo-bar"? 06:15:48 foo=bar 06:16:07 elliott_: "set foo=bar" 06:16:07 elliott: assuming unsigned * is a 4 byte integer? 06:16:16 err 4 byte value 06:16:17 pikhq: how come /usr/bin/env does nothing 06:16:22 newsham: yeah this program is wildly unportable 06:16:59 elliott_: Define "does nothing". 06:17:15 pikhq: $ ./shishorig 06:17:16 /usr/bin/env 06:17:16 /bin/echo hello 06:17:16 hello 06:17:24 it should print the environment 06:17:32 oh wait 06:17:34 the environment starts off empty 06:17:35 ok 06:17:40 heh, i broke strcpy 06:18:15 This really, truly is the shittiest shell possible. 06:18:27 elliott_: if the interesting number theorem can be extended to any countable set, then that means all countable sets contain interesting elements. :) 06:18:33 hmm, is there a gcc-favoured way to get a constant value into a register in an __asm__? 06:18:44 "blah" (9090)? 06:18:50 so I can now use this theorem to gauge the interestingness of things, though I cannot determine if something is not interesting. 06:19:31 oh right yes it's that 06:19:36 CakeProphet: sigh 06:20:17 that is indeed interesting. 06:23:47 pikhq: ugh, how do you just say you are clobbering a register? 06:23:52 without actually outputting it to anything 06:25:05 elliott_: Pretty sure you just give the constraint for the register. 06:25:30 pikhq: how 06:25:36 __asm__("..." : : "=a", ...) 06:25:40 produces a syntax error 06:25:44 Balls. 06:25:57 ... Oh, wait, obvious error is obvious. 06:26:08 what's the obvious error 06:26:33 "=a" is used to indicate that the operand is an output, and you stuck it with the inputs. 06:26:52 __asm__("..." : "=a" : ...) 06:26:57 already tried that 06:27:11 Try ()? 06:27:17 already tried that 06:27:28 ../Desktop/shish.c:55:13: error: matching constraint references invalid operand number 06:27:42 oh wait 06:27:47 i just put it in the clobbered list 06:27:47 duh 06:28:21 Well, that was simple. :P 06:28:39 doesn't work, wtf 06:30:33 couldn't you prove that all rational numbers are interesting? 06:30:41 ../Desktop/shish.c:33:12: error: expected ‘)’ before ‘:’ token 06:30:41 wtf 06:30:53 CakeProphet: no, the rational numbers aren't countable, DUHHHHHH 06:30:59 coppro said it only applies to countable sets 06:31:00 DUHHHHHHHHHHHHHHH 06:31:04 DURHHHHHHHHHHHHHHHHHHHHHHHHHHH 06:31:15 well right, this is a new theorem that we are trying to prove. :) 06:31:20 ... 06:31:23 wow you actually believe that 06:32:35 well, if we could prove that uncountable sets are also interesting, and that cardinality of a set corresponds to more interesting sets 06:32:41 perhaps we could find THE MOST INTERESTING set. 06:32:50 CakeProphet, rational numbers are countable 06:33:00 paradoxes are pretty interesting. how about one of those. 06:33:03 elliott_: well played 06:34:37 oh no, you've caught me, I don't know everything. 06:35:25 I usually expect to be bottom of the #esoteric barrel. I mean, top of most people I meet IRL, but this place is ... I'm low here 06:35:57 * Sgeo_ stops being mean to CakeProphet 06:37:13 yeah, you guys are going to hurt my feelings. :( 06:37:29 Sorry 06:37:46 Easy solution to that. Queen. 06:38:51 Huh? 06:39:03 I think he's talking about the band? maybe? 06:39:06 I'm not really sure. 06:39:16 I'm not sure why I said it. 06:39:21 But yes, I was referring to the band. 06:39:30 Also the album, but mostly the band. 06:39:52 elliott_: well played 06:39:54 sarcasm? 06:40:06 i was sure the durhhhhs would give me away :( 06:40:22 oh no, you've caught me, I don't know everything. 06:40:34 i'm sorry dude but knowing the rationals are countable is like the second thing to know about countability after what it is 06:41:18 that is essentially what I know about countability. 06:41:59 it did not occur to me that every quotient of any two natural numbers can also be counted. 06:42:24 Involve an infinite number of natural numbers, _then_ it's uncountable 06:42:52 It's utterly trivial to do an isomorphism from (Integer, Integer) to Integer. 06:43:50 Or any tuple, really. 06:43:51 ....? but aren't rational numbers a quotient of /any/ (read: from an infinite set of natural numbers) integers? According to what Sgeo_ says that would make rational numbers uncountable? 06:44:05 lol s/integers/natural numbers/ of course 06:44:08 CakeProphet: products of countable sets are countable 06:44:10 the end 06:44:29 CakeProphet, no, as in, if to specify an entity, it took an infinite amount of natural numbers 06:44:47 Let's say rationals are points on a 2-dimensional plane (ok, that's redundant, I know) 06:45:03 CakeProphet: https://secure.wikimedia.org/wikipedia/en/wiki/Cantor_pairing_function#Cantor_pairing_function 06:45:04 Where each dimension is an integer 06:45:15 CakeProphet: the set of infinite lists of naturals is uncountable. 06:45:21 proof: diagonalisation. 06:45:47 Now, if you had infinite number of dimensions, even though each dimension can only take integer values, the number of points is uncountably infinite 06:46:07 Sgeo_: this is a really awkward explanation 06:46:26 Yeah, um 06:46:28 elliott_: I suspect he's coming up with it as he's going along. Would explain the awkwardness. 06:46:58 Ok, better yet. Take a real number, which in some cases takes an infintie number of digits to describe 06:47:21 I see how it's countable, I think. But I usually think of these things algorithmically and so I couldn't see a clear algorithm to assign each rational number to a natural number. 06:47:29 The reals are uncountably infinite, even though each digit can only have 1 of 10 values. 06:47:42 CakeProphet: constructivist 06:47:42 (or whatever base.. which would still be written 10, but wahtever0 06:47:44 whatever) 06:47:54 Sgeo_: you're not making this any less awkward :P 06:48:05 CakeProphet: but consider interleaving the bits, Q.E.D. 06:48:39 CakeProphet: https://secure.wikimedia.org/wikipedia/en/wiki/Cantor_pairing_function#Cantor_pairing_function 06:48:54 CakeProphet: And realise that the rationals can be represented as a 2-tuple of naturals. 06:49:26 pikhq: it's not that simple since you need a bijection 06:49:27 but yeah 06:49:54 elliott_: The Cantor pairing function is a bijection. 06:49:59 pikhq: already realized. Don't need to worry. 06:50:01 Well, the fact that that function works isn't intuitive to me, I prefer thinking along the lines of assigning 0,0 to 0, 0,1 to 1, 1,0 to 2, etc. etc. etc 06:50:05 pikhq: yes 06:50:12 pikhq: but rationals are not a pair of integers 06:50:16 That's how I understand it, don't know if this function is equivalent 06:50:17 Ah, right. 06:50:31 (well, of course dealing with negatives) 06:50:35 *That* bijection is at least a bit more obvious, though. 06:50:58 Sgeo_: That is the mapping, yes. 06:52:14 Ah, ok 06:56:26 http://web.cs.wpi.edu/~jshutt/kernel.html 06:56:31 i hope this has first-class environments 06:56:35 > let icantorpair z = let w=(sqrt(8*z+1)-1)/2; t=(w**2+w)/2; y=z-t; x=w-y in (x,y) in icantorpair 21 06:56:39 mueval-core: Time limit exceeded 06:56:56 heh 06:57:02 try again 06:57:12 > let icantorpair z = let w=(sqrt(8*z+1)-1)/2; t=(w**2+w)/2; y=z-t; x=w-y in (x,y) in icantorpair 21 06:57:13 (6.0,0.0) 06:57:26 > let icantorpair z = let w=(truncate (sqrt (8*z+1))-1)/2; t=(w**2+w)/2; y=z-t; x=w-y in (x,y) in icantorpair 21 06:57:27 Ambiguous type variable `t' in the constraints: 06:57:27 `GHC.Float.Floating t' 06:57:27 ... 06:57:34 > let icantorpair z = let w=(truncate (sqrt (8*z+1) :: CReal)-1)/2; t=(w**2+w)/2; y=z-t; x=w-y in (x,y) in icantorpair 21 06:57:35 No instance for (GHC.Real.Integral Data.Number.CReal.CReal) 06:57:35 arising from... 06:57:39 > let icantorpair z = let w=(truncate (sqrt (8*z+1) :: Double)-1)/2; t=(w**2+w)/2; y=z-t; x=w-y in (x,y) in icantorpair 21 06:57:40 No instance for (GHC.Real.Integral GHC.Types.Double) 06:57:40 arising from a use ... 06:57:42 ojgiogjdfog 06:57:48 :t truncate 06:57:50 forall a b. (RealFrac a, Integral b) => a -> b 06:58:03 > let icantorpair z = let w=((truncate (sqrt (8*z+1) :: Double)::Integer)-1)/2; t=(w**2+w)/2; y=z-t; x=w-y in (x,y) in icantorpair 21 06:58:05 Couldn't match expected type `GHC.Types.Double' 06:58:05 against inferred ty... 06:58:07 asdfgh, 06:58:13 > let icantorpair z = let w=((truncate (sqrt (8*z+1) :: Double)::Integer)-1) `div` 2; t=(w**2+w)/2; y=z-t; x=w-y in (x,y) in icantorpair 21 06:58:14 Couldn't match expected type `GHC.Types.Double' 06:58:14 against inferred ty... 06:58:33 uh... 06:58:51 :t sqrt 06:58:52 forall a. (Floating a) => a -> a 06:58:57 I'm still obsessed with the idea that, if intelligent life emerges in a reversible CA on a torus, it _will_ inevitably be destroyed 06:59:06 you are obsessed with everything. 06:59:10 oh 06:59:17 > let icantorpair z = let w=((truncate (sqrt (8*(fromIntegral z)+1) :: Double)::Integer)-1) `div` 2; t=(w**2+w)/2; y=z-t; x=w-y in (x,y) in icantorpair 21 06:59:18 No instance for (GHC.Float.Floating GHC.Integer.Type.Integer) 06:59:18 arising fr... 06:59:21 :t fromIntegral 06:59:21 forall a b. (Integral a, Num b) => a -> b 06:59:43 > let icantorpair z = let w=(truncate (sqrt (8*(fromInteger z)+1) :: Double)-1) `idv` 2; t=(w**2+w) `div` 2; y=z-t; x=w-y in (x,y) in icantorpair 21 06:59:44 Not in scope: `idv' 06:59:48 > let icantorpair z = let w=(truncate (sqrt (8*(fromInteger z)+1) :: Double)-1) `div` 2; t=(w**2+w) `div` 2; y=z-t; x=w-y in (x,y) in icantorpair 21 06:59:49 No instance for (GHC.Float.Floating GHC.Integer.Type.Integer) 06:59:49 arising fr... 06:59:53 what do you need truncate for? 06:59:53 If the scientists figure out they're on a torus somehow, and understand reversiblity, then... 06:59:55 aojsdfghj 07:00:01 CakeProphet: i am trying to make it not result in doubles, but am far too lazy 07:00:07 Sgeo_: oh n0ez 07:00:12 ...what's wrong with doubles? 07:00:19 asdfghm, 07:00:24 because its a bijection on naturals 07:00:35 ...but it's a program. it's all good.. 07:00:42 ...do you even understand anything 07:00:44 yes 07:00:52 Can reversible CAs be turing-complete? 07:00:57 I am just not as picky as you about these things. That is the difference in this case. 07:01:05 Sgeo_: yes. proof: reversible languages can 07:01:07 CakeProphet: it's nothing about pickiness 07:01:09 at all 07:01:58 if you say so.. 07:02:23 we are looking for a function (Integer,Integer) -> Integer (actually (Nat,Nat) -> Nat, but unfortunately Haskell has no natural type) 07:02:28 erm, reverse that 07:02:41 yours is Integer -> (Double,Double) which is incorrect (actually a bunch of things with Num and Floating but that's irrelevant) 07:03:27 yes I understand. understood even. 07:03:49 it's like writing down 2 + 2 = 5 and saying it's correct because you're not picky. 07:04:39 ...no. it's not caring because I am not writing an actual program and only care about getting a result that is readable by me. 07:04:53 ...but it's a program. it's all good.. 07:04:55 i thought it was a program 07:05:13 not writing something to be re-used. 07:05:15 anyway, you're the one who objected to me attempting to correct your function 07:05:50 let icantorpair z = let w=(sqrt(8*z+1)-1)/2; t=(w**2+w)/2; y=z-t; x=w-y in (x,y) in map icantpair [0..] 07:05:55 > let icantorpair z = let w=(sqrt(8*z+1)-1)/2; t=(w**2+w)/2; y=z-t; x=w-y in (x,y) in map icantpair [0..] 07:05:56 Not in scope: `icantpair' 07:06:01 > let icantorpair z = let w=(sqrt(8*z+1)-1)/2; t=(w**2+w)/2; y=z-t; x=w-y in (x,y) in map icantorpair [0..] 07:06:03 [(0.0,0.0),(1.0,0.0),(1.5615528128088303,0.0),(2.0,0.0),(2.3722813232690143... 07:06:09 look at that 07:06:13 using doubles broke your program 07:06:14 gj 07:06:45 *sigh* Double. It really shouldn't be a Num. 07:07:02 why not, it is a perfectly valid Num 07:07:06 the fault is Num requiring Eq and Show 07:07:10 which is stupid 07:07:29 Floating point "numbers" are not associative. 07:08:02 can numbers even be associative? 07:08:04 pikhq: and? 07:08:07 pikhq: where does Num require this? 07:08:09 CakeProphet: ... 07:08:22 I thought it was the operation/relation that was associative. 07:09:00 elliott_: Though the typeclass doesn't require it, the user probably does. 07:09:42 pikhq: this is silly; what of surreal numbers/games? 07:10:05 you can hardly define what Num is because the whole typeclass is stupid, there is no point putting additional constraints on 07:10:25 True, the whole typeclass is a misfeature. 07:12:04 elliott_: I would prefer that you actually communicate with me instead of being condescending and assuming I'm just stupid. 07:12:21 What with there being, say, vectors, that you might like to be able to use normal addition on, even though there's not really a sane multiplication function for them. 07:12:38 CakeProphet: you criticised me for trying to fix your program, likening it to needless pedanticism; then you respond to an offhand remark of pikhq with needless pedanticism 07:12:55 if i tried to converse with you under such circumstances, it would merely try my patience. 07:14:25 elliott_: no, see. I was fine with you fixing the program. I thought you had gotten it to work when it returned doubles. At that point, I thought you were simply trying to make the types reflect the actual mathematical definition, which I thought was a waste of time since the program seemed to work. My mistake. 07:14:51 it returned doubles when you wrote it, all my modifications were to make it integers 07:15:04 but fair enough 07:15:21 ah, yeah it timed out on mine. I thought you made changes. 07:15:26 nope, just re-ran it. 07:15:28 lambdabot does that a lot. 07:16:30 I think they would all starve to death. After all, they would likely require some sort of energetic ... stuff for their brains 07:16:36 I think 07:16:39 hmm 07:17:26 Sgeo_: what on earth... 07:17:53 how could life exist on an abstract mathematical grid? 07:18:20 ... 07:18:24 How can life exist that's made of mathematically describable matter? 07:18:25 you mean like the universe? 07:18:57 so you mean, what if intelligent life existed in a torus shaped universe? 07:19:06 or the 3-dimensional equivalent. 07:19:28 I'm sticking with torus shaped universe for simplicity 07:20:02 CakeProphet: except discrete. 07:20:10 but seriously, what do you mean "how could life exist on an abstract mathematical grid" 07:20:27 it just sounds strange to talk about something life on an idea. 07:20:42 ...what? 07:20:51 im seriously not trying to be condescending you're just not making any sense 07:21:22 -!- choochter has joined. 07:21:25 as in, I don't see how it makes sense to talk about things living on an automata. Does that not sound strange to you? 07:21:35 *automaton 07:21:55 We know of GoL replicators. That's a start 07:22:01 -!- Slereah has joined. 07:22:04 CakeProphet: It is possible that we live in an automaton. 07:22:16 CakeProphet: I don't see how that sounds strange 07:22:26 ...platonists. 07:22:30 what 07:22:31 (whether or not we *do* is, of course, an unanswered question ATM.) 07:22:33 this has nothing to do with platonism 07:22:40 we can model the universe FUCK NOW IT'S ABSTRACT HOW CAN LIFE EXIST ANY MORE 07:23:25 right, talking about life in a universe sounds fine to me. But talking about a physical entity on an abstract entity does not make any sense. Sure, we can model physical things with abstract things, but that does not mean they are one and the same. 07:23:35 you realise nobody is saying 07:23:38 what if humans were in a CA 07:23:39 we're saying 07:23:43 what if life emerged in a CA 07:24:02 or is life made out of a bunch of on-off squares unimaginable to you 07:24:09 in which case, WHOO boy let me tell you about these things called quarks 07:24:24 electrons aren't made of quarks 07:25:08 well no, I just tend to think of life as a physical occurence. Talking about intelligent or self-replication in an abstract model makes sense, yes. 07:25:09 Sgeo_: sorry ill adjust all my jokes for accuracy in future 07:25:13 *intelligence 07:25:29 CakeProphet: what is not "physical" about a CA 07:25:37 is it because it's two-dimensional 07:25:58 elliott_, didn't you like the mathematical universe hypothesis once? 07:26:06 how is that relevant 07:26:11 this has nothing to do with platonism or anything 07:26:16 no, it's because it is a thing that only exists in our minds. I suppose it has a physical existence in our universe, but it's purely a neurological thing and not an actual 2D grid in our universe. 07:26:39 you do seriously realise you're making no sense at this point? 07:26:44 no. 07:26:49 imagining physical life in a CA is no different to imagining a physical cylinder in an imaginary three dimensional world 07:26:58 and saying you cant imagine a cylinder because IT;S JUST NEUROLOGICAL ... 07:27:04 justn o 07:27:07 [asterisk]just no 07:27:21 there is nothing non-physical about the cylinder, or the life 07:27:48 CakeProphet: Boy, I bet you'd love you some solipsism. 07:28:06 hmmm, how to word what I am saying. 07:28:43 you can imagine physical things, sure. You can also imagine abstract things, because that is how they come to be in the first place. But I don't see how you can imagine a physical thing in an abstract system where it doesn't belong. 07:29:12 but yes, I understand what Sgeo_ means by "life" in a CA now. 07:29:17 ok so what makes imagining a cylinder a physical thing, and imagining CA cells not a physical thing 07:29:22 is it because a CA is discrete? two-dimensional? 07:29:30 what makes an imagination of an object in a world physical or abstract 07:30:07 well a cylinder is also an abstract object... 07:30:20 ok so if i imagine my room 07:30:23 that's physical, right? 07:30:32 well, no. it's not like that. 07:30:38 what is imagining something physical, then? 07:31:20 but if you imagine your room, then it can fit together into other imaginings that correspond to the system it resides in. I suppose that means three-dimensional, yes. Since when imagining things, you could also imagining that your room can now fly, or something. 07:31:32 *imagine 07:31:47 did you really think all of this the first time you got confused by someone saying life or are you just trying to justify it after the fact because that sentence makes literally no sense 07:31:53 as far as an explanation as to how it's physical goes 07:31:57 it doesn't have to correspond to the physical world no. But it generally has to make sense to exist in the imagined environment. 07:32:02 elliott_: no this is all justification for your questions. 07:34:11 I was just trying to imagine a physical lifeform residing in a concept, and having trouble seeing how that would make sense. But yes, I can see how you can model life in a CA. 07:34:44 i still have no idea how you are defining physical and concept 07:34:50 but when you talk about sentient beings "living" in a CA, doesn't make sense to me. 07:34:51 what makes a CA a concept and our universe a physical thing 07:36:00 -!- monqy has quit (Quit: hello). 07:36:01 different categories of knowledge I suppose. This is a tricky thing for me to try to explain. It's probably an intuitive notion to a degree. 07:36:39 is Minecraft physical in this sense or a concept 07:36:42 can you imagine living in Minecraft 07:37:45 I can imagine living in Minecraft, but I could not actually live in Minecraft. Also, to be an accurate representation of Minecraft, I would have to conform to Minecraft physics. 07:37:53 i.e. I would have to be made of large blocks. 07:38:27 is Minecraft physical in this sense or a concept 07:38:31 but that isn't strictly true. I could just be superimposed in Minecraft world, but then it corresponds less to the actual Minecraft world (which is also a concept) 07:38:33 is Minecraft physical in this sense or a concept 07:38:36 that's the important question 07:38:42 ok, so it's a concept 07:38:43 so basically 07:38:48 something is physical if it's literally identical to this universe 07:38:53 and a concept otherwise 07:38:56 of course. 07:39:02 and you can only talk about physical things living in this universe 07:39:09 ok, great, that's totally a thing that makes no sense at all 07:39:14 no, you can talk about anything you want. 07:39:38 totally can't imagine referring to something physical living in a world that's exactly like the earth, but flattened out and repeated forever, with an infinitely high sky and an infinitely deep (tiled) underground 07:39:40 NOPE 07:39:44 that's an abstract concept 07:39:45 just zeroes and ones 07:40:10 it seemed that Sgeo was talking about some actual species of life living on a CA, and the possibility that something could exist. Perhaps I misunderstood. 07:40:34 what do you mean "something could exist" 07:41:37 er, typo. s/something/they/ 07:42:00 I think I'm going to have some fun here... 07:42:05 CakeProphet: Prove to me the universe exists. 07:42:11 No thanks. 07:42:20 CakeProphet: exist as in physically? 07:42:24 But I think you're just a concept! 07:42:32 elliott_: well, that's what I was thinking at the time. 07:42:35 CakeProphet: can you imagine simulating a CA on a computer and an intelligent species of life arising 07:42:43 (consider periodic injections of random blocks) 07:42:50 (timeframe irrelevant) 07:43:19 i really think this is just a case of you not having a good enough imagination to imagine life existing in a CA. or you're just not applying it. i honestly cannot see what distinction you are trying to make between physical and abstract at all. 07:43:45 elliott_: He can't even prove there is such a thing as "physical". :) 07:43:59 not a species in the typical sense, no. I can imagine intelligence emerging on a CA, and even being closed into a particular homeostatic pattern. 07:44:34 pikhq: I just don't want to get into epistemology :P 07:44:34 you realise species is just... a specific type of life 07:44:43 OE SHITE ITS NOT IDENTICAL TO EARTH LIFE IT CANT BE A SPECIES 07:44:46 seriously this is so stupid 07:45:25 it's just semantics, dude. I said it's not a typical species. 07:45:28 which is pretty true. 07:45:32 CakeProphet: What I was trying to get you to realise is that your distinction presumes that there is such a thing as "physicalness", even though it is entirely possible that there is not. 07:45:32 everything is semantics 07:45:34 since it's atypical to what is typical to us. 07:45:42 CakeProphet: We could ourselves be in a simulation. 07:45:43 you're the one being a pedant about what a species is here 07:45:46 is that an unreasonable statement? 07:45:48 Or someone's hallucination. 07:46:00 pikhq: yes, see, this is why I didn't want to get into that. :P 07:46:21 Trying to pretend that this world is special in a way that an interesting cellular automaton is not is, well, utterly pointless. 07:46:26 -!- iamcal has quit (Remote host closed the connection). 07:46:36 -!- iamcal has joined. 07:47:01 What, "I didn't want to be shown stupid"? 07:47:15 oh shut up both of you 07:47:23 pikhq: I didn't. I simply misunderstood what Sgeo was saying. I was maintaining a distinction between unrelated concepts. In particular, "physical life" and "cellular automaton" 07:47:44 Pointless distinction. 07:47:50 pikhq: okay. 07:47:59 And quite plausibly not even well-founded. 07:48:10 pikhq: probably not. Since, after all, we can't know anything. 07:48:16 oh my god 07:48:22 Oh, we can know lots of things. 07:48:24 please someone else say something 07:48:26 anyone 07:48:39 Lymee: feel like talkin'??? 07:48:44 coppro: hows about the good man here do you want to say words 07:48:47 anyone 07:49:04 elliott_: Bird's the word. 07:49:11 i said someone else 07:50:00 I didn't really intend to start any sort of argument. 07:51:26 actually, what I was originally talking about wasn't even remotely philosophical. 07:53:01 -!- Vorpal has joined. 07:53:57 elliott_: if you want to change subjects, we could always talk about the semantics of Perl. >:D >:D >:D >:D 07:55:43 i am going to officially strike today from the log record it is too bad 07:56:06 -!- elliott_ has quit (Remote host closed the connection). 07:56:26 i am going to officially strike today from the log record it is too bad 07:56:29 wait what 07:56:34 * Vorpal checks the log 07:56:34 -!- elliott has joined. 07:56:46 * Vorpal reads the log 07:57:00 dont 07:57:03 elliott, why 07:57:07 just don't 07:57:19 elliott, give me a good reason not to 07:57:37 because I am talking a lot in it. 07:57:54 CakeProphet, why, elliott doesn't hate you does he? 07:57:59 no. 07:58:02 well... 07:58:07 I don't know, ask him. 07:58:10 not my place to say. 07:58:24 i don't 07:58:25 Vorpal: unrelatedly, see /msg 07:58:26 but I doubt it. 08:03:06 Wow. RCA made a car record player. 08:03:34 Only did 45s, but hey. 08:04:50 elliott: do you have anything in your strife specibus at the moment? 08:05:58 I have a can of orange Fanta, which I will pretend is Faygo. 08:06:26 pretend to be fictional characters in a webcomic irc event 2011 08:22:24 -!- MigoMipo has joined. 08:35:19 ?info ShowS 08:35:20 ShowS 08:35:22 grr 08:35:25 ?src ShowS 08:35:26 type ShowS = String -> String 08:36:38 ?pl f (\s -> g (\t -> k (s.t))) 08:36:39 f (g . (k .) . (.)) 08:36:43 ?pl (\s -> g (\t -> k (s.t))) 08:36:44 g . (k .) . (.) 08:36:47 ?pl g (\t -> k (s.t)) 08:36:47 g (k . (s .)) 08:36:47 Seems like someone else had the same idea I did 08:38:14 -!- aloril has quit (Ping timeout: 246 seconds). 08:39:18 (%%) 08:39:18 :: (((b -> c) -> t1) -> t) 08:39:18 -> (((a -> b) -> t2) -> t1) 08:39:18 -> ((a -> c) -> t2) 08:39:18 -> t 08:39:34 ?hoogle (((b -> c) -> t1) -> t) -> (((a -> b) -> t2) -> t1) -> ((a -> c) -> t2) -> t 08:39:34 No results found 08:41:02 This does not.... look reversible 08:44:20 ?djinn (((b -> c) -> t1) -> t) -> (((a -> b) -> t2) -> t1) -> ((a -> c) -> t2) -> t 08:44:21 f a b c = a (\ d -> b (\ e -> c (\ f -> d (e f)))) 08:44:37 ?. pl djinn (((b -> c) -> t1) -> t) -> (((a -> b) -> t2) -> t1) -> ((a -> c) -> t2) -> t 08:44:37 f = (. ((. ((. (.)) . (.))) . (.))) . (.) 08:44:53 Deewiant: hahaha, WOW 08:44:57 that's beautiful 08:47:32 Deewiant: unfortunately i'm having trouble simplifying the type down 08:47:36 (making it less general) 08:49:44 HOW DOES IT EVEN MAKE SENSE FOR A UNIVERSE OPERATING BY REVERSIBLE RULES THAT WAS ACTIVE TO BECOME STATIC 08:50:07 I'm going to assume that either I installed this rule improperly, or the person who made it is an idiot 08:50:11 -!- adamfyre has joined. 08:50:34 -!- adamfyre has quit (Client Quit). 08:52:21 -!- aloril has joined. 09:02:05 -!- azaq23 has quit (Quit: Leaving.). 09:05:34 *Data.Format> format (str "List:" %% each (str " " %% showable)) [9,0,9] 09:05:34 "List: 9 0 9" 09:05:35 excellent 09:07:42 ?src intercalate 09:07:42 intercalate xs xss = concat (intersperse xs xss) 09:09:52 ?pl \x r -> f (. r) x 09:09:53 flip (f . flip (.)) 09:11:47 -!- Slereah has quit (Ping timeout: 240 seconds). 09:19:54 -!- oerjan has joined. 09:23:17 hi oerjan 09:23:52 hello 09:24:13 https://docs.google.com/document/pub?id=18eLRRmojIXEU36uad7lW7XwRRGEKFvjiYV6pS3-UF-4 well, this is intuitive as mud. 09:24:26 well, _i_ thought it was obvious 09:24:32 * oerjan cackles evilly 09:26:09 oerjan: later on: discover that sgeo thought reversibility = time symmetry 09:27:45 oh? well all CAs are time symmetric. 09:27:59 (for the symmetry of adding one tick, anyway) 09:28:15 therefore, the universe is not reversible 09:28:26 I DO NOT THINK THIS IS GENERALLY AGREED UPON 09:31:52 i thought that too :) 09:32:10 this channel seems to constantly see us authoritatively stating absolute bullshit. :D 09:35:04 oerjan: i am having typeclass problems :( 09:35:46 typical 09:36:21 well just rejoice in the fact ghc now allows equations in superclass contexts, maybe that solves your problem 09:37:13 oerjan: i saw that :) 09:37:16 oerjan: but no, no it does not 09:37:27 oerjan: it's a problem with a too-polymorphic instance not getting recognised, I think 09:37:36 -!- augur has quit (Remote host closed the connection). 09:37:37 i.e. it's saying "no instance for (more specific thing despite me having a more general instance)" 09:37:41 this is where flexibleinstances leads :( 09:37:47 the worst thing is, I seem to _recall_ this working prior 09:37:55 what did I do differently... 09:37:55 aww 09:38:21 actual sympathy :O 09:38:23 thank you 09:39:45 elliott: No one in this channel ever authoritatively states absolute bullshit. 09:39:57 coppro: You're funny. 09:40:02 O H S N A P 09:40:43 I fear what would happen if elliott and I were to meet 09:40:54 bloodshed 09:41:06 right after you start defending C++ 09:41:07 some explosion involving gamma rays 09:41:17 i didn't specify the kind of bloodshed 09:41:22 elliott: nah, you're free to attack C++ 09:41:31 coppro: yeah, but you're not free to defend it 09:41:45 elliott: but I'll defend to the death your right to.. wait 09:42:04 mwahahaha 09:43:18 oerjan: now i wonder if you're sympathetic enough to try and _fix_ it... 09:43:21 btw i fixed my space leak :D 09:43:44 the problem was that i was binding the zip, rather than zipping it all at once and _then_ binding 09:44:39 I C 09:44:45 elliott: what are you writing? 09:45:00 coppro: two different things 09:45:20 what are they? 09:45:21 The space leak was in my work-in-progress wc.hs, which is an attempt to write a wc that has feature-parity with GNU wc and is much, much faster 09:45:44 (I already have something that does the basic byte-only wc quite a bit faster than GNU wc with multibyte disabled) 09:46:00 (It fails a bit at word-counting, but what it does instead is as expensive, so it's a fair win :)) 09:46:09 While also being readable and clean 09:46:16 So far I'm succeeding excellently 09:48:07 No instance for (Format (Formatter r0 (a1 -> r0)) String a0) 09:48:07 arising from a use of `format' 09:48:10 OJFDOIJGOGDOFJG 09:48:59 yo dawg i heard you like to format 09:50:16 oerjan: this is me attempting to generalise my (stolen the idea from somewhere -- I forget where) type-safe formatting combinators to something hackageable 09:50:20 i.e., type-safe printf 09:50:31 elliott: do you recommend iteratee for regex processing? 09:51:08 oerjan: i.e. format ("Elements: " %% str %% eachJoin ", " str) ["a", "b", "c"] 09:51:15 CakeProphet: what? 09:52:48 What would help me write a regex interpreter/compiler in Haskell? 09:53:01 aside from Parsec... 10:01:58 http://pastebin.com/f12c043e1 meanwhile, some ocaml code i wrote in early 2009 10:11:50 -!- augur has joined. 10:13:47 In February 2011, Cage claimed to have created a new method of acting he calls Nouveau Shamanic. He claims to have used the acting style throughout his career and one day plans to write a book about the method.[citation needed] 10:14:25 vandalism? or hilarious reality? 10:14:33 I hope it's the latter. 10:15:48 googling suggests it used to be cited 10:15:51 probably with a bad citation 10:18:36 I'm such a Homestuck fanboy that I might buy a godhoodie.. 10:19:03 yeah, um, the fanboy thing wears off a little after a week or so. 10:19:19 i would have bought the hero of breath hoodie if it had the stupidly long hood :) 10:19:45 nah, that would be silly.. 10:20:45 I mean, it would be awesome, but I would get strange looks when walking around in public. 10:21:10 you don't anyway? 10:21:13 also, it would probably be way more expensive. 10:21:20 it's already expensive :D 10:21:20 no. :P 10:21:34 ah, then i diagnose you with boring normal person disorder 10:22:07 nah, I'm just incognito. 10:22:47 though I fail pretty well at that actually. 10:22:59 maybe I do get weird looks? I'm not sure actually. 10:23:13 you could make it certain by making your own ridiculous godhood 10:23:34 happy Turing day! \o/ 10:23:34 ¦ 10:23:35 ´¸¨ 10:23:57 fag 10:24:00 hahahaa c wut i did thar 10:24:03 im so funny and edgy 10:24:10 edgy is for hipsters 10:24:11 you hipster 10:24:19 wwhatevver 10:28:00 :t Cont 10:28:01 Not in scope: data constructor `Cont' 10:28:10 :t Control.Monad.Cont 10:28:11 Not in scope: data constructor `Control.Monad.Cont' 10:28:16 :t runCont 10:28:17 forall r a. Cont r a -> (a -> r) -> r 10:29:01 oerjan: yeah yeah 10:29:14 oerjan: tempting only in that it could make (f %% g) k = f $ \s -> g $ \t -> k (s . t) 10:29:14 less ugly 10:32:09 :t let (f %% g) k = f $ \s -> g $ \t -> k (s . t) in (%%) 10:32:10 forall a b b1 b2 (f :: * -> *) t. (Functor f) => (((a -> b) -> b1) -> b2) -> ((f a -> t) -> b1) -> (f b -> t) -> b2 10:32:20 dammit 10:32:26 :t let (f %% g) k = f $ \s -> g $ \t -> k (s Prelude.. t) in (%%) 10:32:27 forall b c b1 b2 a t. (((b -> c) -> b1) -> b2) -> (((a -> b) -> t) -> b1) -> ((a -> c) -> t) -> b2 10:32:51 maybe too much switching of the final type 10:33:18 oerjan: eh? 10:33:39 ?mtl (ShowS -> r) -> a 10:33:39 Maybe you meant: ft map msg pl unmtl url 10:33:44 damn 10:36:12 oerjan: overloadedstrings or TYPECLASS???/// 10:37:41 21:26:16: kerlo: i hear "assume a spherical cow" is well-known <-- spherical copy on write? 10:37:41 21:26:17: wth 10:39:53 22:11:06: sprintf has one of those stupid collapsing '_a types 10:39:53 22:11:12: value restriction? 10:39:53 22:11:33: yeah what is that thing 10:39:54 oerjan: :D 10:41:54 HAH I WAS RIGHT 10:42:05 but you are saying it's working now? 10:43:02 oerjan: i'm saying it's not ocaml any more :D 10:43:06 22:25:05: snot a very good name 10:43:06 22:25:21: i shall have you hear from my lawyer! 10:43:06 :( 10:43:49 once i get the money to pay him, anyway 10:43:51 23:04:40: we should genetically modify humans to just breed breed breed 10:43:51 23:04:43: and get infinite humans 10:43:51 23:04:45: ehird: no we shouldn't 10:43:58 good advice hour with ais523 10:46:37 oerjan: oh, heh, i originally did this in oh-eight 10:47:52 http://caml.inria.fr/pub/papers/garrigue-value_restriction-fiwflp04.pdf might be relevant. annoyingly it doesn't have a proper date... 10:48:41 00:57:56: (%) (FormatterInt f) (FormatterInt g) = 10:48:41 00:57:57: FormatterInt (\k r -> f (g k) r) 10:48:41 huh what... 10:52:11 22:22:18: i don't play any games more violent than FreeCiv 10:52:11 22:22:36: I don't play any game more violent than Postal 2. 10:52:11 22:22:46: But only because I haven't found any so far. 10:55:52 -!- elliott has quit (Remote host closed the connection). 10:56:21 -!- elliott has joined. 11:01:31 reverse is O(n) in Haskell right? 11:01:36 for [a] 11:01:52 yes 11:02:12 hmmm okay. 11:02:38 * CakeProphet is trying to decide what data structure to use for a look-back buffer in a regex interpreter. 11:02:43 zipper 11:02:44 always zippers 11:02:56 they're so zippy 11:03:59 Could not deduce (r ~ (s -> s)) 11:03:59 from the context (Monoid s) 11:04:00 crying 11:04:06 I guess that would work. 11:05:49 -!- Tritonio_GR has quit (Quit: Leaving). 11:06:07 I'd like to have infinite look-back somehow/ 11:07:08 it would be easy if look-back patterns were in reverse. Because then I could just construct a reverse list of previous characters. 11:07:28 but that sounds silly.. 11:08:33 ah, I could execute the look-back pattern in reverse on a reversed buffer.. 11:10:25 no, that would be extremely complicated. 11:13:53 I think infinite-lookback is just going to be complicated, and I'll worry about it later. 11:16:01 oerjan: gah, why do flexible instances simply never work? 11:16:04 instance IsString (Formatter r r) where 11:16:10 *Text.Format> format "a" 11:16:10 :1:8: 11:16:10 No instance for (IsString (Formatter String a0)) 11:16:23 it is so stupid :( 11:16:26 format "a" :: IsString (Formatter String a) => a 11:19:42 well does format "a" :: String work? 11:20:38 elliott: ^ 11:20:46 oh hm, it does 11:20:54 but 11:20:56 foo :: Int -> Int -> String 11:20:56 foo = format (showable % " " % showable) 11:20:56 doesn't 11:20:58 making it useless 11:21:01 Text/Format.hs:29:26: 11:21:01 No instance for (IsString 11:21:01 (Formatter (a0 -> String) (Int -> String))) 11:22:06 so basically it cannot deduce what a0 is 11:23:47 What other behavior are you going for besides simply interpolating the string produced by show? 11:24:41 have you ever used printf 11:25:00 i have always wanted to 11:25:06 but it never came to it 11:25:23 years later, i am still sad about the fact that i hadn't taken the chance 11:25:34 elliott: number formatting, padding, etc? 11:25:37 it is one of the big failures of my life. 11:25:44 couldn't you just use functions for those? 11:26:01 CakeProphet: what do you think i am doing 11:26:06 anyway, (++) is slow 11:27:07 How can you get around not using ++? 11:27:58 see shows 11:28:12 ?type shows 11:28:14 forall a. (Show a) => a -> String -> String 11:28:15 ?src ShowS 11:28:15 type ShowS = String -> String 11:28:25 > (shows 9 . shows 0) "" 11:28:29 mueval-core: Time limit exceeded 11:28:31 > (shows 9 . shows 0) "" 11:28:33 "90" 11:29:15 ah, fancy. 11:30:06 > (shows 9 . shows 0) "a" 11:30:08 "90a" 11:30:59 that's still a concatenation though. 11:31:20 > (shows 900000000000000 . shows True) "" 11:31:22 "900000000000000True" 11:32:36 CakeProphet: it is not a (++) 11:33:36 so it's magic? 11:34:04 no. 11:36:08 -!- FireFly has joined. 11:36:17 CakeProphet: it has much better complexity, because you aren't _nesting_ ++ 's 11:37:25 and especially not in the left argument 11:37:36 CakeProphet: Think about left vs right associative ++ 11:39:04 One is linear in the length of the result, the other quadratic 11:40:22 > foldl' (++) $ replicate 1000 "a" 11:40:23 Overlapping instances for GHC.Show.Show 11:40:23 ([[[GH... 11:40:27 er 11:40:32 > foldl' (++) "" $ replicate 1000 "a" 11:40:34 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... 11:40:37 um 11:40:44 > foldl' (++) "" $ replicate 100000 "a" 11:40:49 mueval-core: Time limit exceeded 11:40:56 > foldr (++) "" $ replicate 100000 "a" 11:40:58 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... 11:41:26 > legnth $ foldl' (++) "" $ replicate 100000 "a" 11:41:27 Not in scope: `legnth' 11:41:31 > length $ foldl' (++) "" $ replicate 100000 "a" 11:41:35 mueval-core: Time limit exceeded 11:41:40 And that one's lazier, too :-P 11:41:43 right, but how does shows work faster than right-associative ++? 11:41:43 > length $ foldr (++) "" $ replicate 100000 "a" 11:41:45 100000 11:42:31 FUCK MONAD TRANSFORMERS THEY DO AWAY WITH MY SOCKAGES 11:43:01 oerjan: YOU'RE A CARPAL TUNNEL 11:43:08 wat 11:43:26 REAAAAAAAAAAAERARGAHERGHJRGHGH 11:43:48 CakeProphet: It doesn't, it's just that typical incremental uses end up being left-associative unless you use something like ShowS 11:44:02 -!- Tritonio has joined. 11:44:20 ah, I see. 11:44:35 he;lp i got lost in okmij.org 11:44:38 is there something like shows, without the application of show? 11:44:49 say you're only working with strings and don't want the double quotes. 11:44:51 elliott has now left us for the type system 11:45:05 CakeProphet: Data.DList 11:45:28 CakeProphet: um (++) is perfectly fine for prepending a single string :P 11:45:47 so, the answer is (++), really 11:45:53 dlist on Hackage IIRC 11:46:05 oerjan: its like space 11:46:12 is there something like shows, without the application of show? 11:46:17 shows does not apply show 11:46:26 show applies shows 11:46:27 um wait what 11:46:33 > shows 9 "what?" 11:46:34 "9what?" 11:46:44 ?src show 11:46:45 show x = shows x "" 11:46:53 elliott: there are defaults both ways, actually. 11:46:57 okay fine, you know what I meant though. 11:46:57 oerjan: indeed 11:47:02 oerjan: but in _good_ usage :D 11:47:08 (for a show instance that isn't just constant strings, etc.) 11:47:21 :t reads 11:47:22 forall a. (Read a) => String -> [(a, String)] 11:47:34 Deewiant: oh, DList sucks :( 11:47:37 Deewiant: only supports [a] collections 11:47:46 i was gonna use it but I need ByteString, Text, etc. support too 11:49:33 so reads and shows are not really analogous. 11:49:36 CakeProphet: Read is inefficient, iirc. ghc defines some extra methods in the class to rectify this, i think 11:49:53 @src Read 11:49:54 class Read a where 11:49:54 readsPrec :: Int -> ReadS a 11:49:54 readList :: ReadS [a] 11:49:54 readPrec :: ReadPrec a 11:49:54 readListPrec :: ReadPrec [a] 11:49:54 You and your modern Haskell 11:50:12 Deewiant: I have you down as a very modern person 11:50:25 i'm not sure that includes the extra methods 11:50:27 Just use [a] like God intended 11:50:48 Deewiant: It's mostly for HIGH-QUALITY purposes :) 11:50:58 All Hackage packages must satisfy the Pokémon Theme Song requirement. 11:51:22 I AM EVEN WONDERING HOW I CAN CALCULATE ESTIMATED LENGTHS TO PREALLOCATE A BYTESTRING 11:51:46 with numbers, probably. 11:52:15 I guess a computer would help too. 11:52:37 Deewiant: "I decided to make it because I noted that much of the time of Coadjute was spent doing naïve list operations on sets of strings." You should have just used lists 11:52:45 * elliott DEDICATED TROLLER 11:53:42 What if Richard Stallman joined this channel right now? What would you do? 11:53:52 annoy him until he goes away 11:54:53 Guido Von Rossum? Larry Wall? ? Same protocol? 11:55:11 What if they had some awesome esolang ideas? 11:55:11 GvR is an idiot, so same 11:55:27 Larry Wall is a Christian missionary, so I'm legally obligated to annoy him on at least a daily basis even if I let him stay 11:57:31 -!- jix has quit (Ping timeout: 276 seconds). 12:03:40 oerjan: hi can you get oleg on the phone i need his help 12:05:15 oerjan: it is urgent 12:05:21 oerjan: the type system has failed 12:06:05 -!- jix has joined. 12:06:46 -!- HackEgo has quit (Ping timeout: 244 seconds). 12:07:08 -!- MigoMipo has quit (Read error: Connection reset by peer). 12:07:48 -!- HackEgo has joined. 12:08:03 20:59:17: ais523: why are you being such a spoilsport today? You're usually all over puzzles and the like 12:08:09 ais gets so many people complaining about him :D 12:14:58 http://en.wikipedia.org/wiki/Zero_One_Infinity 12:15:04 this is so silly why does it even have a stupid name. 12:16:31 do you have an actual criticism 12:16:59 it's a waste of nomenclature. 12:17:09 there is no reason for that to even be a name for something. 12:17:22 what else do you want to call "zero one infinity" 12:17:33 nothing. it doesn't need a name. 12:17:50 ok do you have an actual argument for that, there is pretty lively discussion on http://c2.com/cgi/wiki?ZeroOneInfinityRule after all and it's a decent rule of thumb 12:17:59 or do you just not like its existence, should we never talk about it, would you like it to be taboo 12:18:50 I just don't see how it ever became a rule of thumb. I think it is more or less implied now... 12:19:08 it is? please point me to a program with no arbitrary limits 12:19:08 in fact, I didn't even think there was a name for it, but I knew this was a good thing to do regardless. 12:19:13 a non-trivial one 12:19:41 anyway, we have names for things that should be assumed. 12:19:48 like "not being a gigantic raging asshole". 12:19:59 uh, no program has no limits. I mean "if you are going to allow multiple elements, then allow an arbitrary number" 12:20:49 what do you mean no program has no limits? 12:20:52 and that is far from assumed 12:21:04 plenty of people will cap something at six five five three six if they don't think anyone will need more than that 12:21:07 saves dynamic allocation code 12:21:20 so anyway 12:21:20 "if you are going to allow multiple elements, then allow an arbitrary number" 12:21:22 "zero one infinity" 12:21:25 i wonder which one i would rather say 12:21:36 ugh. forget it. 12:22:06 i'm open to being convinced if you have any actual arguments for why it shouldn't be a term, or evidence that it is, in fact, widely assumed 12:22:48 No. not everything is a fucking debate. It was a comment, about something that seemed to be yet another unnecessary software design term. 12:22:57 I am done. 12:23:22 i've made no debate, it's just that you keep saying really stupid things that seem to be asking for a response in the form of agreement or whatever. 12:23:31 should i not reply to any of your messages 12:25:47 that's a serious question 12:27:27 No, I just dislike having to painstakingly back up everything I say with detailed evidence for why it is reasonable for me to like/dislike something, when all I am doing is simply commenting on the fact, whether you agree or disagree. 12:28:17 you didn't say "this term seems silly to me", you just said "this is so silly why does it even have a stupid name". either way, if you're saying it on an irc channel, presumably you want some kind of response, or you'd just cat it into /dev/null. 12:28:21 elliott: idea, would instance (r ~ s) => IsString (Formatter r s) work better? 12:28:41 CakeProphet: i apologise for disagreeing with your statement. 12:28:47 oerjan: i'll try that 12:28:59 oerjan: I would still prefer a Formatter solution, so I'll try adapting that to that first 12:29:26 oerjan: nice, undecidableinsatnces time 12:29:43 eek 12:29:56 meh, still the same problem, I will try with IsString 12:30:41 oerjan: wow it works 12:30:46 woohoo! 12:33:55 CakeProphet: dcc? wtf? 12:33:58 elliott: are you ready? 12:34:00 lol 12:34:09 what was that, i instinctively rejected 12:34:37 I just needed to exceed some character limits for a moment in a /msg 12:34:53 or is that a different protocol? I can't remember. 12:34:56 it is different 12:35:00 i didn't see the message 12:35:51 :t arr 12:35:52 forall b c (a :: * -> * -> *). (Arrow a) => (b -> c) -> a b c 12:35:59 oerjan: darn 12:36:05 Formatter _almost_ looks like an arrow 12:36:08 oerjan: wait, it is a Category 12:36:12 (%) :: Formatter a b -> Formatter c a -> Formatter c b 12:36:13 i think 12:36:37 elliott: no I believe if you accept I should be able to bombard you with massive amounts of text.. 12:36:40 at that point. 12:36:47 this is what egobot does right? 12:36:48 CakeProphet: i already rejected, so you'd need to try again 12:37:04 i accepted 12:37:28 :t (<<<) 12:37:29 forall (cat :: * -> * -> *) b c a. (Control.Category.Category cat) => cat b c -> cat a b -> cat a c 12:41:54 -!- cheater_ has quit (Ping timeout: 244 seconds). 12:44:03 oerjan: 12:44:05 foo :: (Show a) => [a] -> String 12:44:05 foo = format ("List length: " % int <-- length %& "; elements: " % each showable) 12:44:55 ooh 12:45:41 does each put in a delimiter? 12:45:45 <-- is just "map the formatter over a function"; %& means "repeat the formatting value I just used as the next one" 12:45:59 oerjan: no, I plan an eachJoin that takes a zero-argument formatter to go in-between 12:46:05 so you would say eachJoin " " showable 12:46:10 although maybe it should just be called each 12:46:24 the types are quite pretty 12:46:25 (%&) :: Format a (b -> c) -> Format c (b -> a) -> Format c (b -> c) 12:46:34 ?hoogle cat a (b -> c) -> cat c (b -> a) -> cat c (b -> c) 12:46:35 No results found 12:46:43 :( 12:48:23 ?pl \k -> k (mappend s) 12:48:24 ($ mappend s) 12:49:09 oerjan: I am worried that I'm going to need a typeclass for pretty much every formatter if I support non-string types 12:49:36 hm 12:50:10 instance (IsString s, Monoid s, r ~ a) => IsString (Format s r a) where 12:50:17 I'm surprised _that_ works fine! 12:50:43 oerjan: I'm kind of thinking that I really want "higher-order" formatters 12:50:53 oerjan: so that each actually is a formatter that returns a /list/ 12:50:57 of whatever the formatter it's given does 12:51:00 so you say 12:51:03 join " " (each showable) 12:52:31 -!- Tritonio has quit (Quit: Leaving). 12:54:17 oerjan: wow, id is really hard to write :D 12:54:36 IF YOU SAY SO 12:54:37 ((s -> s) -> r) -> r 12:54:37 oh wait 12:54:38 no it isn't 12:56:20 ?pl \f g k x -> f (\s -> g (\t -> k (s . t)) x) x 12:56:21 flip flip id . ((flip . (ap .)) .) . (. ((flip .) . (. ((. (.)) . (.))) . (.))) . (.) . (.) 12:56:26 oerjan: beautiful 12:56:39 flipping crazy 12:57:29 I think.... I need to study up on Haskell. a lot. 12:57:49 :D 12:57:55 its all in the dots 12:58:04 point-free style is so elegant. 12:58:21 yep i just replaced my code with flip flip id . ((flip . (ap .)) .) . (. ((flip .) . (. ((. (.)) . (.))) . (.))) . (.) . (.) 12:58:31 the best is definitely 12:58:52 ?pl \f g k -> f (\s -> g (\t -> k (s . t)))) 12:58:53 (line 1, column 40): 12:58:53 unexpected ")" 12:58:53 expecting variable, "(", operator or end of input 12:58:54 ?pl \f g k -> f (\s -> g (\t -> k (s . t))) 12:58:54 (. ((. ((. (.)) . (.))) . (.))) . (.) 12:58:58 (. ((. ((. (.)) . (.))) . (.))) . (.). 12:58:59 yep. 13:00:04 amorphous nipple blob. 13:00:40 What do those dots even do? 13:00:41 o.o 13:00:46 function composition 13:01:55 oerjan: each :: Format s (DL s) (a -> DL s) -> Format [s] r ([a] -> r) 13:01:56 i think 13:02:23 (DL s is s -> s) 13:02:28 !perl sleep and die while exists time 13:02:30 exists argument is not a HASH or ARRAY element or a subroutine at /tmp/input.26055 line 1. 13:03:26 -!- oerjan has quit (Quit: O KAY). 13:03:45 apparently time does not count as a subroutine name. 13:04:34 !perl sleep for defined time 13:04:43 ...no need to die, I guess. good night. 13:05:16 CakeProphet, wtf does that do? 13:05:17 D: 13:05:46 ?pl \k xs -> k (mappend (map (format f) xs) 13:05:46 (line 1, column 40): 13:05:47 unexpected end of input 13:05:47 expecting variable, "(", operator or ")" 13:05:47 ?pl \k xs -> k (mappend (map (format f) xs)) 13:05:48 (. (mappend . map (format f))) 13:05:54 hm 13:06:04 ?pl \xs -> k (mappend (map (format f) xs)) 13:06:05 k . mappend . map (format f) 13:06:28 each showable :: Show a => Format [String] r ([a] -> r) 13:06:31 :D 13:06:58 -!- elliott has left ("Leaving"). 13:07:04 -!- elliott has joined. 13:07:34 hmm 13:07:48 ((s -> s) -> s) -> s 13:07:51 heh 13:08:36 ?src intercalate 13:08:37 intercalate xs xss = concat (intersperse xs xss) 13:08:38 ?src intersperse 13:08:38 intersperse _ [] = [] 13:08:39 intersperse _ [x] = [x] 13:08:39 intersperse sep (x:xs) = x : sep : intersperse sep xs 13:08:43 ?hoogle intersperse 13:08:44 Data.ByteString intersperse :: Word8 -> ByteString -> ByteString 13:08:44 Data.List intersperse :: a -> [a] -> [a] 13:08:44 Data.ByteString.Char8 intersperse :: Char -> ByteString -> ByteString 13:09:48 ?pl ((a + b) / c) * ((d * e) + f) 13:09:49 (a + b) / c * (d * e + f) 13:09:55 ff 13:10:13 ?pl \a b c d e f -> ((a + b) / c) * ((d * e) + f) 13:10:14 flip flip (((+) .) . (*)) . ((flip . (((.) . (.) . (.) . (*)) .) . (/)) .) . (+) 13:10:51 *Text.Format> foo [0, 990, 0] 13:10:51 "List length: 3; elements: 0, 990, 0." 13:11:36 ?pl \a b -> [a..b] 13:11:36 enumFromTo 13:11:40 .... 13:11:48 elliott, how does ?pl work? 13:13:23 -!- BeholdMyGlory has joined. 13:14:51 Lymee: see the code :P 13:22:43 "like the other commenters who pointed out, this does not mean the passwords are stored in plain-text. we can only presume that they are encrypted with something like an MD5 algorithm (which is reversible)." 13:23:24 Link? 13:26:03 lol 13:26:09 why would you ant a link to an idiot 13:27:56 To see what they're talking about. 13:29:30 oh my god 13:29:32 nottetris is perfect 13:30:45 elliott, besides, MD5 is reversible with enough computing power. 13:30:54 no it isnt 13:30:58 there are infinite inputs for a single mdfive output 13:31:52 well ok that kind of counts as reversible 13:31:55 but not in the way they meant 13:33:49 Lymee: but seriously go play nottetris right now 13:35:12 -!- cheater_ has joined. 13:40:37 -!- zzo38 has joined. 13:44:04 -!- Wamanuz2 has joined. 14:18:19 -!- Wamanuz3 has joined. 14:19:41 -!- cheater__ has joined. 14:19:44 -!- Wamanuz2 has quit (Ping timeout: 258 seconds). 14:20:23 -!- Wamanuz3 has quit (Read error: Operation timed out). 14:22:21 -!- cheater_ has quit (Ping timeout: 252 seconds). 14:22:37 where's oerjan when you need him 14:25:13 -!- TOGoS has joined. 14:27:48 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:32:22 -!- cheater__ has quit (Ping timeout: 255 seconds). 14:35:33 -!- TOGoS has left. 14:45:19 -!- cheater__ has joined. 14:51:58 -!- jcp has quit (Ping timeout: 264 seconds). 14:53:08 -!- copumpkin has joined. 14:53:08 -!- copumpkin has quit (Changing host). 14:53:08 -!- copumpkin has joined. 14:55:51 -!- Lymee has changed nick to Rimii. 14:56:00 -!- jcp has joined. 14:57:03 -!- Rimii has changed nick to Lymee. 14:58:55 -!- cheater__ has quit (Ping timeout: 255 seconds). 15:00:51 hmm, a snake isn't actually a list of positions, it's a list of turtle instructions 15:01:26 ...plus a starting position 15:03:25 ?src scanr 15:03:25 scanr _ q0 [] = [q0] 15:03:26 scanr f q0 (x:xs) = f x q : qs 15:03:26 where qs@(q:_) = scanr f q0 xs 15:03:32 :t scanr 15:03:33 forall a b. (a -> b -> b) -> b -> [a] -> [b] 15:11:08 *Main> snakePositions initialSnake 15:11:09 fromListA [(1,2),(0,3),(2,2)] 15:11:12 snake doesnt work like that 15:11:17 oh wait I need scanl 15:11:23 :t scanl 15:11:25 forall a b. (a -> b -> a) -> a -> [b] -> [a] 15:11:26 ?src scanl 15:11:26 scanl f q ls = q : case ls of 15:11:26 [] -> [] 15:11:27 x:xs -> scanl f (f q x) xs 15:11:41 ?src map 15:11:42 map _ [] = [] 15:11:42 map f (x:xs) = f x : map f xs 15:11:52 ?pl map f (x:xs) = f x : map f xs 15:11:53 map = fix (flip flip tail . (ap .) . flip flip head . ((.) .) . liftM2 flip (((.) . (:)) .)) 15:11:55 :t scanl 15:11:56 forall a b. (a -> b -> a) -> a -> [b] -> [a] 15:11:57 ?src scanl 15:11:57 ?src scanl 15:11:57 scanl f q ls = q : case ls of 15:11:57 [] -> [] 15:11:57 x:xs -> scanl f (f q x) xs 15:11:58 ?src scanl 15:11:58 scanl f q ls = q : case ls of 15:11:58 [] -> [] 15:12:00 x:xs -> scanl f (f q x) xs 15:12:02 scanl f q ls = q : case ls of 15:12:04 [] -> [] 15:12:06 x:xs -> scanl f (f q x) xs 15:13:21 hmmm 15:14:03 > foldr move (0,0) ['r','d','d','d'] where move 'u'(x,y)=(x,pred y);move 'd'(x,y) = (x,succ y); move 'l'(x,y) = (pred x,y); move 'r'(x,y) = (succ x,y) 15:14:04 : parse error on input `where' 15:14:13 > let move 'u'(x,y)=(x,pred y);move 'd'(x,y) = (x,succ y); move 'l'(x,y) = (pred x,y); move 'r'(x,y) = (succ x,y) in foldr move (0,0) ['r','d','d','d'] 15:14:14 (1,3) 15:14:18 > let move 'u'(x,y)=(x,pred y);move 'd'(x,y) = (x,succ y); move 'l'(x,y) = (pred x,y); move 'r'(x,y) = (succ x,y) in scanr move (0,0) ['r','d','d','d'] 15:14:19 [(1,3),(0,3),(0,2),(0,1),(0,0)] 15:14:25 ugh 15:14:27 > let move 'u'(x,y)=(x,pred y);move 'd'(x,y) = (x,succ y); move 'l'(x,y) = (pred x,y); move 'r'(x,y) = (succ x,y) in scanl move (0,0) ['r','d','d','d'] 15:14:29 Couldn't match expected type `GHC.Types.Char' 15:14:29 against inferred type... 15:14:35 > let move 'u'(x,y)=(x,pred y);move 'd'(x,y) = (x,succ y); move 'l'(x,y) = (pred x,y); move 'r'(x,y) = (succ x,y) in scanl (flip move) (0,0) ['r','d','d','d'] 15:14:37 [(0,0),(1,0),(1,1),(1,2),(1,3)] 15:14:41 yay 15:14:42 ?src scanl 15:14:43 scanl f q ls = q : case ls of 15:14:43 [] -> [] 15:14:43 x:xs -> scanl f (f q x) xs 15:14:48 :t scanl 15:14:49 forall a b. (a -> b -> a) -> a -> [b] -> [a] 15:22:33 -!- cheater__ has joined. 15:31:38 -!- MigoMipo has joined. 15:33:50 ?pl let move 'u'(x,y)=(x,pred y);move 'd'(x,y) = (x,succ y); move 'l'(x,y) = (pred x,y); move 'r'(x,y) = (succ x,y) in scanl (flip move) (0,0) ['r','d','d','d'] 15:33:50 (line 1, column 10): 15:33:50 unexpected "'" 15:33:50 expecting pattern or "=" 15:33:54 Aww. 15:34:01 I wanted to see how it would mutilate your code. 15:39:23 -!- elliott_ has joined. 15:39:23 -!- elliott has quit (Read error: Connection reset by peer). 15:44:25 -!- monqy has joined. 15:45:19 -!- NihilistDandy has quit (Quit: leaving). 15:45:27 hi monqy 15:49:23 hi 15:49:59 i wish i knew what this data structure was called 15:50:12 -!- Wamanuz3 has joined. 15:50:19 i dont think its called accordion :( 15:53:20 -!- KingOfKarlsruhe has joined. 16:01:07 monqy do you know the name of this 16:01:40 -!- Wamanuz3 has quit (Read error: Operation timed out). 16:03:14 -!- Wamanuz3 has joined. 16:04:29 I propose a standard unit of Bullshit. 16:04:33 It is the "English" 16:04:41 Under this standard, PHP would be "50E" 16:05:39 elliott_: is a description of the data structure in the logs 16:05:52 data Accordion a = End | Leaf a | Join a (Accordion a) a 16:05:53 there is now 16:06:13 ... 16:06:18 http://sprunge.us/cBHJ 16:06:23 Isn't that just a linked list? 16:06:38 no 16:06:42 look carefully at the last one 16:06:55 Ah. 16:07:01 monqy: i think it may be related to Data.Sequence but i'm not sure 16:07:07 So... 16:07:16 Wait, what? 16:07:19 I don't get it. 16:07:29 from my glance it's a linked list of (a, a) but can end either in noting an end or an a 16:07:33 er 16:07:39 monqy: the a on the right is at the _end_ 16:07:40 noting an end/nothing 16:07:46 so you can access the first and last elements immediately 16:07:50 oh 16:07:52 second and second-last by descending one 16:07:52 etc. 16:07:56 elliott_, what are these for? 16:08:03 Lymee: representing a snake 16:08:15 lolwut 16:08:35 data Snake = Snake Direction Position (Accordion Direction) deriving (Show) 16:09:11 Ah 16:10:02 ooh, i could do it zipper style ... nah 16:10:09 ...but maybe 16:12:35 so why do you need the reversed list to represent a snake? 16:13:49 monqy: because i both tail and append on it 16:16:52 won't any sort of appending mess up one of your lists 16:16:57 have to leave now 16:18:12 nope, it's all perfect 16:29:56 Do you know if programs compiled with LLVM can be linked with programs compiled with GCC? 16:40:05 -!- Wamanuz3 has quit (Ping timeout: 244 seconds). 16:41:13 -!- Phantom_Hoover has joined. 16:49:12 -!- Wamanuz3 has joined. 16:54:13 -!- Wamanuz4 has joined. 16:54:13 -!- Wamanuz3 has quit (Ping timeout: 258 seconds). 16:58:14 -!- augur has quit (Remote host closed the connection). 16:58:49 -!- Wamanuz4 has quit (Ping timeout: 258 seconds). 17:06:40 -!- zzo38 has quit (Quit: zzo38). 17:07:38 hi it is broken 17:12:17 -!- Slereah has joined. 17:12:29 -!- FireFly has quit (Read error: Connection reset by peer). 17:16:28 @source scanl 17:16:28 scanl not available 17:16:33 @source scan 17:16:34 scan not available 17:16:39 ?src scanl 17:16:40 scanl f q ls = q : case ls of 17:16:40 [] -> [] 17:16:40 x:xs -> scanl f (f q x) xs 17:21:31 ?src show 17:21:31 show x = shows x "" 17:21:53 -!- choochter has quit (Read error: Connection reset by peer). 17:22:18 Lymee, show will eventually just use a typeclass function, so you're not going to get anything useful that way. 17:22:18 Phantom_Hoover: You have 3 new messages. '/msg lambdabot @messages' to read them. 17:22:28 -!- choochter has joined. 17:25:04 -!- augur has joined. 17:27:15 -!- FireFly has joined. 17:27:56 -!- MigoMipo has quit (Read error: Connection reset by peer). 18:13:16 "Square root of zero. Good luck with that." 18:13:50 http://www.reddit.com/r/geek/comments/i74yk/bob_sends_a_message_to_alice/c21ful3 18:16:51 -!- CakeProphet has quit (Ping timeout: 240 seconds). 18:40:19 -!- choochter has quit (Ping timeout: 255 seconds). 18:47:42 phantom/lymee: you can show the source for a class. 18:47:45 -!- oerjan has joined. 18:48:18 oerjan 18:48:26 data Accordion a = End | Leaf a | Join a (Accordion a) a 18:48:26 what's it called 18:48:29 i think it's similar to Se 18:48:29 q 18:48:34 but the definition of Seq looks different 18:48:45 heh 18:49:12 well you can only add the same number to the beginning and end... 18:49:21 eh? 18:49:35 not true at all; it's isomorphic to [a] 18:49:40 looks a little like a finger tree 18:49:44 elliott_: that is essentially just ([(a,a)],a) 18:49:47 or wait 18:49:49 newsham: Seq is based on finger trees, so... 18:49:54 oerjan: note that the a at the end is at the _end_ 18:50:01 think of a weird space-time accordion 18:50:04 start and end are big 18:50:07 second and second-last are smaller 18:50:07 etc. 18:50:13 until the middle is really small 18:50:26 cons and snoc are O(n), though :) 18:50:26 elliott_: um my point is you have no way to remove the first without removing the last simultaneously, efficiently 18:50:30 oerjan: oh, right 18:50:37 yeah -- 18:50:39 leftA :: Accordion a -> Maybe (a, Accordion a) 18:50:39 leftA End = Nothing 18:50:39 leftA (Leaf a) = Just (a, End) 18:50:39 leftA (Join a xs b) = Just (a, xs `addA` b) 18:50:40 rightA :: Accordion a -> Maybe (Accordion a, a) 18:50:42 rightA End = Nothing 18:50:45 rightA (Leaf a) = Just (End, a) 18:50:46 rightA (Join a xs b) = Just (a `joinA` xs, b) 18:50:48 where join/addA are O(n) 18:51:54 -!- augur has quit (Remote host closed the connection). 18:52:03 yeah. 18:52:34 oerjan: i guess it is just worse than Seq in every way :) 18:52:41 heh 18:52:47 it's just that taking the init of a Seq is ugly, you need the second-last element of the Seq that inits returns... 18:52:59 and it seems to not be O(one) 18:53:09 I'm storing a snake, you see, from the game 18:53:16 data Snake = Snake { snakeDirection :: Direction 18:53:16 , snakePosition :: Position 18:53:16 , snakeSegments :: Accordion Direction } 18:53:23 advance :: Snake -> Snake 18:53:23 advance (Snake d p ds) = Snake d (move d p) (tailA ds `addA` d) 18:53:35 then you can find all the blocks to draw by just starting with the position and inverting all the movements 18:54:17 elliott_: um init is just something like case rightview s of s' :> _ -> s' 18:54:28 oerjan: oh, duh >_< 18:54:39 (where i've forgotten the actual name of rightview) 18:55:42 and i believe that's a* O(1) where a* is the same word i couldn't remember a while ago :P 18:56:13 @hoogle viewr 18:56:14 Data.Sequence viewr :: Seq a -> ViewR a 18:56:14 Data.Sequence data ViewR a 18:56:33 amortised? 18:56:36 right 18:56:43 I guess I want Seq, then :) 18:56:50 ?hoogle Seq.scanl 18:56:50 No results found 18:56:53 ?hoogle scanl 18:56:53 Prelude scanl :: (a -> b -> a) -> a -> [b] -> [a] 18:56:54 Data.ByteString scanl :: (Word8 -> Word8 -> Word8) -> Word8 -> ByteString -> ByteString 18:56:54 Data.List scanl :: (a -> b -> a) -> a -> [b] -> [a] 18:57:08 scanlA :: (a -> b -> a) -> a -> Accordion b -> Accordion a 18:57:08 scanlA _ z End = Leaf z 18:57:08 scanlA f z (Leaf x) = Join (f z x) End z 18:57:10 scanlA f z (Join a xs b) = Join z xs' (f z' b) 18:57:12 where xs' = scanlA f (f z a) xs 18:57:14 Just (_, z') = rightA xs' 18:57:16 this is broken and i don't know why :) 18:57:36 elliott_: well Seq _should_ be Foldable, doesn't that have some scanl thing? 18:58:13 its in Data.Sequence 18:58:18 Traversable would also work 18:58:52 i mean, there should be a Foldable instance. i guess the modules may not be integrated (orphans and everything) 18:59:42 http://www.haskell.org/ghc/docs/7.0.2/html/libraries/containers-0.4.0.0/Data-Sequence.html says Foldable and Traversable 18:59:53 good, good 19:00:08 advance :: Snake -> Snake 19:00:08 advance (Snake d p ds) = Snake d (move d p) (ds' |> d) 19:00:08 where ds' :> _ = Seq.viewr ds 19:00:10 grow :: Snake -> Snake 19:00:12 grow (Snake d p ds) = Snake d (move d p) (ds |> d) 19:00:14 what ugly duplication :( 19:00:30 *Main> snakePositions (grow initialSnake) 19:00:30 fromList [(1,0),(2,0),(3,0),(4,0),(3,0)] 19:00:32 -!- pikhq has quit (Quit: New kernel time). 19:00:32 not only that, it is broken 19:00:43 oh 19:00:48 no, it's not 19:00:50 well... it sort of is 19:03:17 -!- pikhq has joined. 19:05:24 elliott_: oh right, scanl _is_ in Data.Sequence 19:05:36 (which may be what you said) 19:05:42 yep 19:07:46 -!- augur has joined. 19:15:51 where's oerjan when you need him 19:16:14 walking to the shop, or possibly already inside 19:18:23 carbon DIEoxide 19:18:24 ?pl let move 'u'(x,y)=(x,pred y);move 'd'(x,y) = (x,succ y); move 'l'(x,y) = (pred x,y); move 'r'(x,y) = (succ x,y) in scanl (flip move) (0,0) ['r','d','d','d'] 19:18:41 Lymee: ?pl has its own partial haskell parser for only the things it understands 19:18:53 Ah. 19:19:11 "IAmA reddit admin - AMA!" 19:19:12 Reddit has sunk to a new level. 19:19:29 This surprises me, because it's very close to the maximum of sunkishness. 19:19:36 Much more and it'll have to start drilling. 19:19:48 Lymee: also, nearly nothing with pattern matching can be ?pl'ed. 2-tuples being one exception. 19:20:21 oerjan: hm is there a monadic foldl... 19:20:26 ?pl \(x,y) -> (y,x) 19:20:27 uncurry (flip (,)) 19:20:28 so that I can use the Maybe monad to prematurely terminate it 19:20:33 ?hoogle foldlM 19:20:33 Data.Foldable foldlM :: (Foldable t, Monad m) => (a -> b -> m a) -> a -> t b -> m a 19:20:39 ah. 19:21:04 nice 19:21:27 actually, what I want is concatMapM. 19:21:30 ?hoogle concatMapM 19:21:31 No results found 19:21:33 CURSES 19:21:45 "3 completely identical human beings stop eating fats, carbohydrates and proteins respectively. In what order to they die, if at all, and what happens? " 19:21:52 "This is a very hypo post, try it on your own body - it's there for experiencing." 19:22:02 actually wait 19:22:16 > mapM (\x -> if even x then Just 9 else Nothing) [0,0,9] 19:22:17 Nothing 19:22:20 gah 19:22:47 > foldlM (\r x -> if even x then (9:) `fmap` r else Nothing) [] [0,0,9] 19:22:47 Sgeo_: What a strange question. 19:22:48 Not in scope: `foldlM' 19:22:50 oh ffs 19:22:59 oerjan: i just want it to stop processing the list and use the zero value whenever I return Nothing :( 19:23:07 pikhq, really? 19:23:10 elliott_: WriterT Maybe, maybe? 19:23:17 oerjan: mapM, you mean? 19:23:19 I just find that answer very um... nasty 19:23:22 http://www.reddit.com/r/askscience/comments/i7as8/3_completely_identical_human_beings_stop_eating/ 19:23:28 sgeo killed by sensitive 19:24:00 elliott_: um no? you would use tell to add new parts to concat... 19:24:06 errorflux just looks like a boring trollidiot 19:24:20 oerjan: i have never really used Writer much : 19:24:39 Sgeo_: But, yeah, odds are the person without carbs wouldn't actually die from it, though they *might* have somewhat poor health. 19:24:48 pikhq: see keto 19:24:56 pikhq, that seems to be the consensus in the thread 19:24:57 elliott_: Yuh. 19:25:02 Sgeo_, *which* answer. 19:25:10 elliott_: oh hm you want it to keep the parts _before_ the first Nothing? 19:25:12 Phantom_Hoover: the very bottom one which he quoted 19:25:13 oerjan: yep 19:25:27 hm... 19:25:31 oerjan: basically, I always advance the snake 19:25:37 elliott_: sounds like an unfoldr-like thing, then 19:25:37 oerjan: but 19:25:48 oerjan: if the game is over 19:25:51 I don't want to advance the snake 19:25:54 I want to close the list then and there 19:26:52 Phantom_Hoover> "IAmA reddit admin - AMA!" <-- without even looking, i assume that's a parody on all the fake IAMAs? 19:27:02 no 19:27:03 its real 19:27:10 oerjan, nope, it's by an actual admin. 19:27:55 Phantom_Hoover: huh :P 19:28:12 @hoogle unfoldrM 19:28:13 No results found 19:28:15 mknin9n9n0j0ninji9nujhujhuijijuijujijjijijijkjikjkkjijjj 19:28:19 A GAP THERE 19:29:08 elliott_: hm, MaybeT Writer perhaps... 19:29:26 that ought to keep things already written 19:29:43 oerjan: that requires pulling in maybet :( 19:29:47 wouldn't a plain unfoldr work? 19:30:02 perhaps? is the function pure... 19:30:33 oerjan: yes 19:30:33 :t unfoldr 19:30:35 forall b a. (b -> Maybe (a, b)) -> b -> [a] 19:30:41 @hoogle (a -> Maybe b) -> [a] -> [b] 19:30:41 Data.Maybe mapMaybe :: (a -> Maybe b) -> [a] -> [b] 19:30:41 Prelude mapM :: Monad m => (a -> m b) -> [a] -> m [b] 19:30:41 Control.Monad mapM :: Monad m => (a -> m b) -> [a] -> m [b] 19:30:48 er 19:30:57 @hoogle (a -> m (Maybe b)) -> [a] -> m [b] 19:30:58 No results found 19:31:00 > unfoldr (\(x:xs) -> if even x then Just ("yaaaaaaay", xs) else Nothing) [0,0,0,9] 19:31:00 bah 19:31:01 ["yaaaaaaay","yaaaaaaay","yaaaaaaay"] 19:31:33 looks good then 19:31:35 hmm 19:31:39 unfortunately, I need to handle empty list 19:31:40 as in 19:31:41 run out of events 19:31:42 what now 19:31:44 which I can't really do 19:31:51 because I need to produce more elements 19:31:56 which would involve a Just 19:31:59 and what would the reduced value be? 19:32:10 elliott_, quick, get to the nearest particle accelerator. 19:33:15 um what would you do if hitting an empty list, you say 19:33:41 oerjan: add the "advance the snake" event, mainly 19:33:55 but if I halt the processing early e.g. in case of game over, I do _not_ want to do that 19:34:01 oerjan: I'm starting to think a manual recursion over the list might be best... 19:34:24 perhaps 19:34:37 :'( 19:34:39 if there are too many options to branch over 19:36:59 ?src show 19:37:02 ?src Show 19:37:03 class Show a where 19:37:03 showsPrec :: Int -> a -> ShowS 19:37:03 show :: a -> String 19:37:03 showList :: [a] -> ShowS 19:37:20 oerjan: hmm oh, I also need a sort of feedback loop thing... 19:37:29 each of those can be defined in terms of the other, you need at least one of the first two 19:37:32 because triggering AdvanceSnake will trigger something looking up where the snake is now, which then might trigger a game over 19:37:38 oerjan: starting to think I need a _proper_ event system here 19:37:42 with its own monad 19:37:56 "What are the benefits of a 45.7% increase in serum testosterone levels?" 19:38:10 Phantom_Hoover: lycanthropy, duh 19:38:13 AskScience, you have been fatally holed below the waterline. 19:38:44 Phantom_Hoover: i assume that was inspired by the recent post about the results of not masturbating for a week 19:39:28 elliott_: either that or you need some truly gordian knot tying :P 19:39:43 oerjan: that's my idea of a library :D 19:39:54 oerjan: I have a feeling I'm about to reinvent FRP 19:40:23 FRP is out, now it's all RDP 19:40:40 wat 19:41:07 I could figure out frp is functional reactive programming but what's that 19:41:23 elliott_: http://awelonblue.wordpress.com/2011/05/21/comparing-frp-to-rdp/ 19:41:58 oerjan: im not going to have to expand my brain am i 19:42:00 im quite tired 19:42:08 "Reactive Demand Programming (RDP) was invented by me (David Barbour) around April 2010" 19:42:11 oerjan: this is not a good start 19:42:16 elliott_: i may be slightly exaggerating here :P 19:42:20 has conal or luke said anything yet 19:42:35 yeah there is no way i am going to read this 19:42:36 heck if i know 19:42:44 not until i see a response at least 19:42:55 oh hm dmbarbour rings a bell 19:43:39 I'm reading the overall 19:43:57 elliott_: i'm just reposting from r/haskell, anyhow 19:44:22 it seems interesting but tl;dr at this stage in my mind 19:44:38 although i'm not sure i like the tone, it reminds me too much of me 19:52:45 -!- azaq23 has joined. 20:28:57 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 5.0/20110615151330]). 21:29:13 -!- elliott_ has quit (Ping timeout: 246 seconds). 21:33:40 -!- zzo38 has joined. 21:34:19 I seem to have found a bug in LLVM (and I did report it on their IRC channel and bug report system) (as you might see from the report, I prefer to use pipes) 21:35:09 http://llvm.org/bugs/show_bug.cgi?id=10181 21:46:01 I like it when people use "borealis" in random names. 21:46:15 It's not nearly as cool as it sounds. 21:46:41 it's pretty cool here up north 21:47:04 It is indeed. 21:47:25 (OK so I'm quite a bit south of you but I'm still really north by, like, American standards.) 21:47:37 (Also we have colder summers than Helsinki so HA) 21:48:04 * oerjan isn't finnish in case someone is confused 21:48:14 oerjan, OK where do you live. 21:48:22 Trondheim, Norway 21:48:46 -!- Sgeo_ has changed nick to Sgeo. 21:49:27 btw, tomorrow this is what sweden is doing: http://www.youtube.com/watch?v=e3ft1YyUkYY 21:49:38 Yup, we have colder summers than you as well. 21:50:50 I don't know if it would ever actually be useful to use a code like that in the bug report! 21:51:15 tomorrow? we have our midsummer celebration today. 21:52:59 oerjan: you weird norwegians 21:53:02 det var ju lustigt att se 21:53:26 midsummer's eve is always on a friday in sweden for ... well holiday scheduling reasons 21:53:38 ah 21:54:02 but today is also a de-facto friday since tomorrow is a no-work day 21:54:30 oh, you get midsummer's eve off? 21:54:46 lol, you don't? 21:55:05 or do you get the 'day' off instead of the 'eve'? 21:55:23 afair neither is an official day :P 21:56:17 you celebrate midsummer on a work day? even if it is before a work day so you have to work hung over? 21:56:30 this is just so bad, oerjan 21:56:57 well if it's on a thursday there _might_ be a slight decrease in people working on the day after :P 21:57:31 which is just as with other movable days off 22:00:18 as always in sweden everything goes to a fixed pattern: thursday is queueing at systembolaget to get beer and schnaps, friday is pickled herring, schnaps and dancing the frog dance around the phallos, saturday is dedicated to being hung over 22:00:50 ordning och reda 22:00:59 -!- Phantom_Hoover has quit (Remote host closed the connection). 22:00:59 * cheater__ subjects oklopol to torpillage. 22:01:09 ordning och reda, pengar på freda' 22:22:49 Did comex just call Java a fine language? 22:23:02 By pointing to a comment that called it a fine language, I mean 22:28:50 -!- Patashu has joined. 22:43:46 -!- augur has quit (Remote host closed the connection). 22:43:53 -!- CakeProphet has joined. 22:43:54 -!- CakeProphet has quit (Changing host). 22:43:54 -!- CakeProphet has joined. 22:50:16 -!- Wamanuz4 has joined. 23:04:44 -!- Wamanuz4 has quit (Ping timeout: 258 seconds). 23:08:20 -!- Wamanuz4 has joined. 23:12:14 -!- augur has joined. 23:13:16 -!- Wamanuz4 has quit (Ping timeout: 240 seconds).