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