←2011-12 2012-01 2012-02→ ↑2012 ↑all
2012-01-01
00:00:34 <ais523> Big Ben is late
00:00:39 <ais523> by a few seconds
00:00:46 <ais523> either that, or ja.net is early
00:00:53 <ais523> but I trust it more than I trust a mechanical clock
00:00:57 <elliott> HAPPY 2011.9999999999999, EVERYBODY!!!!!!!!!!!!!!!!!!!!!!!
00:01:06 <ais523> elliott is even later
00:01:13 <ais523> it's 12:01 already
00:01:23 <elliott> HAPPY 2011.9999999999999[10], EVERYBODY!!!!!!!!!!!!!!!!!!!!!!!
00:01:31 <elliott> the [] signifies a single digit
00:01:41 <ais523> you could just use A?
00:01:54 <Vorpal> happy new year in UK
00:02:34 <elliott> fST?
00:02:39 <Vorpal> ?
00:02:44 <elliott> -christel- [Global Notice] Happy new Year to the those on fST which covers UK, Portugal, Morocco, Ireland, parts of Spain, Iceland, Cote d'Ivoire, Mali, Togo, Senegal, Gambia, Faroe Islands, Guinea-Bissau, Isle of Man, Greenland, Saint helena, Mauritania, Sao Tome, Guinea, Western Sahara, Ghana, Burkina Faso, Sierra Leone and Liberia! Welcome to 2012 - Year Of The Troll!
00:02:54 <fizzie> 200C, like they say in "200%X" terms.
00:02:57 <elliott> I think all the freenode staff are drunk today.
00:02:57 <Vorpal> wut
00:03:01 <Vorpal> elliott, fST
00:03:01 <Vorpal> lol
00:03:04 <fizzie> freenode Standard Time?
00:03:04 <elliott> All these messages have been massively typo'd.
00:03:06 <elliott> Oh.
00:03:09 <elliott> That's stupid.
00:03:12 <Sgeo> ais523, but then it's hexadecimal. I suppose pointing that out would break the joke?
00:03:14 <fizzie> That's what it *sounds* like.
00:03:15 <elliott> Almost as stupid as "libya".
00:03:18 <elliott> And "Most of Congo".
00:03:25 <fizzie> I don't know if it is.
00:03:28 <Vorpal> heh
00:03:31 <elliott> http://freenode.net/faq.shtml#fst
00:03:36 <elliott> It is that, yes; you made me remember.
00:03:47 <elliott> I like how I can hear, but not see, fireworks here.
00:03:47 <ais523> Sgeo: it's just standard to use letters for digits past the 10th
00:04:01 <fizzie> Oh, so it "sort of" is.
00:04:07 <elliott> happy year of the apocalypse, everybody!
00:04:18 <ais523> -christel- 2012 - Year Of The Troll!
00:04:20 <elliott> I hope you have a nice apocalypse and lead up to the apocalypse
00:04:36 <ais523> I thought Freenode /disliked/ trolls?
00:04:40 <ais523> have they changed their mind?
00:04:54 <Sgeo> Clearly their mind change will take effect in 2012.
00:05:06 <monqy> i at first misread it as year of the trolley
00:05:13 <ais523> elliott: you do know there's no reason to think the world will end in 2012, right?
00:05:14 <monqy> year of the trolley would be good
00:05:15 <elliott> #freenode-newyears s very quiet
00:05:23 <elliott> s/s //
00:05:32 <ais523> the common theory about the Mayan calendar was a mistranslation
00:05:36 <elliott> ais523: sure there is: everyone who said that would look really stupid
00:05:53 <ais523> wait, you think the world would end just to stop people looking stupid?
00:06:01 <elliott> no, just to make them look stupid
00:06:09 <ais523> surely it'd be more in character for it to keep hanging on out of spite?
00:06:46 <elliott> anyway, _you_ can hardly talk about there being no logical reason to think that something will happen to the physical universe
00:07:41 -!- Phantom_Hoover has joined.
00:07:53 <elliott> Phantom_Hoover <- 2011
00:07:58 <elliott> i wonder if i am still ignored
00:07:59 <Phantom_Hoover> That bloody church blocked the fireworks again, of course.
00:08:15 <elliott> Oh no, luke-jr is in #freenode-newyears.
00:08:20 * elliott exits stage left.
00:08:28 <Phantom_Hoover> Al Qaeda have been slacking, evidently.
00:08:41 <ais523> elliott: who's luke-jr?
00:08:45 <ais523> is he an ssh fanboy?
00:09:01 <Vorpal> <Phantom_Hoover> That bloody church blocked the fireworks again, of course. <-- huh?
00:09:04 <elliott> ais523: no, he's from #jesus
00:09:16 <Phantom_Hoover> Vorpal, see log from exactly a year ago.
00:09:55 <monqy> good thing fireworks are awful
00:10:00 <Sgeo> ssh fanboy?
00:10:17 <Vorpal> Phantom_Hoover, okay
00:10:19 <ais523> Sgeo: elliott didn't believe me either when I said I knew one
00:10:22 <ais523> until I gave some examples
00:10:41 <Sgeo> How does one be a fan of a simple tool?
00:10:49 <Sgeo> </hypocrite>
00:10:51 <Phantom_Hoover> monqy, hahahaha you suck
00:10:56 <elliott> monqy++
00:11:02 <Phantom_Hoover> As does elliott.
00:11:10 <Phantom_Hoover> You are evidently also an English pansy.
00:11:12 <Sgeo> I agree with Phantom_Hoover on something?
00:11:31 <Sgeo> Wait, why would I disagree randomly with Phantom_Hoover?
00:11:41 <Phantom_Hoover> Sgeo, have you long been of the opinion that monqy sucks?
00:11:41 <Sgeo> I agree with someone against elliott?
00:12:10 <Sgeo> Phantom_Hoover, I guess after he said that fireworks are awful
00:12:45 <Phantom_Hoover> This is the right place.
00:12:59 <elliott> Wow, this firework sounds like a cat dying.
00:13:38 <Phantom_Hoover> Ha ha ha you just have amateur crappy fireworks in people's back gardens.
00:13:50 <Phantom_Hoover> Not a giant castle with loads and loads of fireworks.
00:14:10 <ais523> Phantom_Hoover: we're watching the celebrations in London on TV
00:14:16 <ais523> although they're winding down now
00:14:20 <ais523> /those/ aren't pansy fireworks
00:14:26 <Phantom_Hoover> They don't have a castle??
00:14:28 <elliott> Phantom_Hoover: These fireworks aren't from a garden.
00:14:31 <elliott> Pretty sure they're the official thing.
00:14:39 <Phantom_Hoover> hahahaha
00:14:59 <monqy> last I checked fireworks are too illegal here for back gardens to do them
00:15:02 <Vorpal> I live like two blocks away from the official fireworks here. They are quite good.
00:15:18 <ais523> monqy: sure? there are fireworks visible from where I live
00:15:19 <Phantom_Hoover> monqy, and yet gun control??? im politic
00:15:22 <ais523> well, not sure
00:15:24 <ais523> from where I am currently
00:15:35 <ais523> I don't actually live here, maybe they're visible from where I am too
00:15:41 <Sgeo> monqy, where I am, illegality of fireworks does not stop usage of fireworks.
00:15:46 <ais523> on Guy Fawkes Day, some people set off a firework from the pavement
00:15:49 <ais523> I'm reasonably sure /that's/ illegal
00:15:55 <ais523> I was a few metres away at the time, so I ran
00:15:57 <elliott> <ais523> monqy: sure? there are fireworks visible from where I live
00:15:59 <elliott> ais523: in America?
00:15:59 <ais523> as I wasn't sure how good their aim was
00:16:03 <Phantom_Hoover> I think fireworks are illegal in Ireland for obvious reasons.
00:16:05 <ais523> elliott: oh, monqy's American?
00:16:09 <ais523> I thought he was British for some reason
00:16:25 <ais523> but I wouldn't expect fireworks to be illegal in a land of republicans
00:16:31 <elliott> Good thing America isn't that, then.
00:16:35 <ais523> nor would I expect democrats to try to ban them
00:16:39 <ais523> too much fallout for too little gain
00:16:42 <elliott> Do you mean rd or RD?
00:16:53 <ais523> err, do I mean either?
00:16:56 <ais523> I'm not sure what either manes
00:17:00 <Vorpal> Phantom_Hoover, what are the obvious reasons?
00:17:01 <elliott> Republicans and democrats or Republicans and Democrats?
00:17:06 <elliott> They're vastly different things.
00:17:17 <ais523> oh, rD in that situation
00:17:27 <Phantom_Hoover> Vorpal, do you know, like, anything about Irish history in the second half of the 20th century?
00:17:32 <Phantom_Hoover> Specifically, Northern Irish?
00:17:33 <Sgeo> My state apparently bans all consumer fireworks.
00:17:36 <elliott> ais523: The obvious answer is that the Republicans would ban them, then...
00:17:37 <Vorpal> Phantom_Hoover, oh right that
00:17:40 <Vorpal> Phantom_Hoover, yeah makes sense
00:17:46 <Sgeo> I have seen home Fireworks every year (more often)
00:17:48 <Vorpal> Phantom_Hoover, not sure it makes sense for the entire island though
00:17:49 <elliott> Phantom_Hoover: (Vorpal just googled it.)
00:17:56 <Vorpal> elliott, no I didn't
00:17:56 <ais523> elliott: why? they normally wouldn't offend their core voters for no good reason at all
00:18:04 <Phantom_Hoover> Vorpal, Ireland has two nations on them.
00:18:09 <Vorpal> Phantom_Hoover, indeed
00:18:09 <ais523> they probably would if given large enough political donations
00:18:12 <Phantom_Hoover> *on it
00:18:14 <ais523> but nobody really has an incentive to do that either
00:18:19 <Vorpal> Phantom_Hoover, I assume you mean the nation Ireland
00:18:20 <elliott> ais523: I don't see why that would offend their core voters.
00:18:29 <Vorpal> Phantom_Hoover, no?
00:18:35 <Phantom_Hoover> I mean in both.
00:18:38 <ais523> elliott: banning fireworks?
00:18:44 <Vorpal> Phantom_Hoover, well that doesn't make much sense to me.
00:18:52 <ais523> imagine you're ESR and you find out that the government is banning fireworks, what's your reaction?
00:18:53 <elliott> http://en.wikipedia.org/wiki/Consumer_fireworks#United_States, anyway.
00:19:02 <elliott> ais523: Hahahaha, you think ESR is the typical Republican supporter?
00:19:13 <ais523> no, I think he's an extreme version of a subset of Republican supporters
00:19:15 <elliott> ESR is strongly libertarian, the Republican party is nothing of the sort.
00:19:19 <Phantom_Hoover> "In the Republic of Ireland, the law on fireworks is governed by Part 6 of the Criminal Justice Act 2006. Generally, fireworks are illegal. Private fireworks displays are allowed on two conditions; the fireworks must be licensed for import and a professional fireworks operator must be used."
00:19:21 <ais523> do you think there's any chance he votes Democrat?
00:19:36 <ais523> (he may well vote third party, I guess)
00:19:40 <elliott> No, but that's quite irrelevant; Republicans aren't, as a general rule, libertarian.
00:19:47 <ais523> anyway, in practice, libertarians normally vote republican
00:20:01 <ais523> and it's not like the majority of actual republicans would care either way about fireworks
00:21:25 <Phantom_Hoover> Upon further consultation, my mother isn't actually sure whether fireworks are banned in NI, although she's never seen them on sale.
00:22:05 <Phantom_Hoover> http://www.nio.gov.uk/the_law_on_fireworks.pdf
00:22:35 <Phantom_Hoover> Everything other than indoor fireworks is banned.
00:22:42 <Phantom_Hoover> *requires a licence
00:22:45 <ais523> why do you think your mother would know whether fireworks are banned in northern island?
00:23:05 <elliott> Indoor... fireworks?
00:23:34 <ais523> elliott: not much different to indoor skiing, surely?
00:23:35 <monqy> fireplaces, arson
00:23:36 <Phantom_Hoover> ais523, because she is from it, also insists on dragging me there every available opportunity??
00:23:41 <ais523> ah, I see
00:23:50 <ais523> northern ireland is quite a way to drag someone from scotland
00:23:50 <Phantom_Hoover> (this also applies to my father, my parents are awful)
00:23:57 <Phantom_Hoover> my kneeees
00:24:01 <ais523> Phantom_Hoover: your parents are both northern-irish?
00:24:08 <Phantom_Hoover> Yes.
00:24:17 <elliott> hahahahaha, lkml.org has google +1 buttons
00:24:18 <ais523> so why are you Scottish?
00:24:20 <elliott> on every message
00:24:26 <elliott> ais523: no true scotsman!
00:24:56 <Phantom_Hoover> ais523, because I was born there and I have lived there all my life?
00:25:02 <ais523> Phantom_Hoover: hmm
00:25:14 <ais523> so what would possess northern-irish parents to have a scottish child?
00:25:23 <elliott> X-D
00:25:30 <elliott> Phantom_Hoover: WHY ARE YOU SUCH A DISAPPOINTMENT
00:25:50 <Phantom_Hoover> Mum, dad.... I'm Scottish.
00:26:53 <Phantom_Hoover> "Category 4 ("professional") fireworks are for sale only to fireworks professionals. They have no restrictions,"
00:27:07 <Phantom_Hoover> OK I need to become a pyrotechnician.
00:30:19 <ais523> Phantom_Hoover: that's like wanting to become a locksmith
00:30:32 <ais523> so that you can legally own lockpicks
00:30:37 <Phantom_Hoover> Did I mention when I wanted to become a locksmith?
00:30:39 <Phantom_Hoover> I totally did.
00:30:50 <elliott> `addquote <Phantom_Hoover> "Category 4 ("professional") fireworks are for sale only to fireworks professionals. They have no restrictions," <Phantom_Hoover> OK I need to become a pyrotechnician. <ais523> Phantom_Hoover: that's like wanting to become a locksmith <ais523> so that you can legally own lockpicks <Phantom_Hoover> Did I mention when I wanted to become a locksmith?
00:31:00 <HackEgo> 789) <Phantom_Hoover> "Category 4 ("professional") fireworks are for sale only to fireworks professionals. They have no restrictions," <Phantom_Hoover> OK I need to become a pyrotechnician. <ais523> Phantom_Hoover: that's like wanting to become a locksmith <ais523> so that you can legally own lockpicks <Phantom_Hoover> Did I mention when I wanted to become a locksmith?
00:31:05 <Phantom_Hoover> (Can you stab people with lockpicks, I need to be able to enforce the Skyrim protocol.
00:31:07 <Phantom_Hoover> )
00:31:11 <Sgeo> lkml?
00:31:26 <Sgeo> Oh
00:31:35 <ais523> elliott: hmm, I'm one of those people who's interested in picking locks from a theoretical point of view, because it's interesting in how it works
00:31:43 <ais523> and yet don't do it because I fear it'd get me into trouble
00:31:55 <ais523> it's hard to come up with lawful-good reasons to illegally pick locks
00:32:13 <Sgeo> What about picking your own locks, or does that damage them?
00:32:35 <ais523> Sgeo: doesn't damage them
00:32:43 <ais523> just, they're all far too secure for me to stand any chance
00:32:54 <ais523> I picked the lock on a classmate's pencil case once, with their permission
00:33:00 <ais523> but they didn't believe I'd done it when break ended
00:33:05 <ais523> (I guess it was a really weak lock)
00:33:06 <Phantom_Hoover> ais523, what about that time I wanted to pick a lock because there was a chair behind it and then I nearly stabbed some people in enforcement of the Skyrim protocol.
00:33:19 <ais523> what /is/ the Skyrim protocol?
00:33:23 <ais523> and does it involve BF derivatives?
00:33:25 <Vorpal> <ais523> northern ireland is quite a way to drag someone from scotland <-- not really. I just checked in google earth
00:33:42 <ais523> Vorpal: but dragging people across water's a bit tricky
00:33:50 <ais523> there are bits of scotland that are nearish to bits of northern ireland
00:33:51 <Vorpal> well, I'll grant you that
00:33:52 <elliott> `addquote <Vorpal> <ais523> northern ireland is quite a way to drag someone from scotland <-- not really. I just checked in google earth <ais523> Vorpal: but dragging people across water's a bit tricky
00:33:56 <HackEgo> 790) <Vorpal> <ais523> northern ireland is quite a way to drag someone from scotland <-- not really. I just checked in google earth <ais523> Vorpal: but dragging people across water's a bit tricky
00:33:58 <ais523> but the crow-flies route is rather awkward
00:34:09 <ais523> I think practical routes for getting from one to the other mostly go via England
00:34:24 <Vorpal> ais523, still not very long
00:34:26 <ais523> `quote
00:34:28 <ais523> `quote
00:34:30 <HackEgo> 471) <oklopol> doctor who. i saw part of one episode of that and it reminded me of buffy the vampire slayer.
00:34:30 <ais523> `quote
00:34:31 <ais523> `quote
00:34:32 <ais523> `quote
00:34:39 <Phantom_Hoover> <ais523> I think practical routes for getting from one to the other mostly go via England
00:34:41 <HackEgo> 88) <MissPiggy> bi is like sqrt(2)/2 * straight + i * sqrt(2)/2 * gay
00:34:43 <HackEgo> 596) <fungot> elliott: ppl should vote clinton because obama is biracial every1 knows that dood, look at him he has been on something lately.
00:34:47 <Vorpal> ais523, I mean I travelled longer distances by far in Sweden.
00:35:01 <Phantom_Hoover> The one I get dragged on involves driving to a ferry port in the southwest and sailing to Larne.
00:35:25 <HackEgo> 240) <quintopia> vorpal: a lot of people in AK fly <Vorpal> quintopia, well getting a pilot cert is a lot more complex than a driving license :P <quintopia> being an AK resident is a lot more complex than a driver's license too
00:35:25 <HackEgo> 673) <elliott> ais523: those suck <elliott> hmm, those are all pretty good
00:35:45 <Vorpal> what is AK now again?
00:36:04 <ais523> arkansas, perhaps? I don't know
00:36:13 <Vorpal> alaska maybe?
00:37:25 <Sgeo> Would anyone be upset if I linked to US political news?
00:37:59 <Phantom_Hoover> Alaska, apparently.
00:38:11 <Phantom_Hoover> Sgeo, probably, but do it anyway.
00:38:17 <Sgeo> ...
00:38:20 <Sgeo> http://abcnews.go.com/blogs/politics/2011/12/virginia-gop-will-require-voters-to-sign-loyalty-oath/
00:38:44 <Vorpal> Sgeo, GOP?
00:38:55 <Sgeo> Vorpal, the Republican party
00:39:02 <Sgeo> "Grand Old Party", I think.
00:39:13 -!- Phantom__Hoover has joined.
00:39:40 <ais523> Sgeo: sadly, I'm desensitized by American politics to the point I can no longer really facepalm at it
00:39:43 -!- zzo38 has joined.
00:40:41 -!- oerjan has quit (Quit: Good night).
00:42:36 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
00:47:59 <Phantom__Hoover> I love how carefully that article tries to hide the fact that it's the Republican primaries, not the actual elections, to which this is applied.
00:48:57 <Phantom__Hoover> ^choo choo
00:48:57 <fungot> choo hoo oo o
00:50:19 * Phantom__Hoover switches back from DDG to Google.
00:50:43 <ais523> Phantom__Hoover: it was pretty obvious to me that it was just applied to primaries
00:50:46 <Sgeo> ^blah blah
00:50:51 <ais523> in fact, I thought that was plausible even before the article outright said it
00:50:57 <Sgeo> ^choo blah
00:50:57 <fungot> blah lah ah h
00:51:08 <Phantom__Hoover> ais523, sure, but it's not nearly as up-front about it as it should be.
00:53:03 -!- DCliche has joined.
00:56:15 -!- Klisz has quit (Ping timeout: 240 seconds).
01:02:42 <ais523> UTC-1 is reasonably empty?
01:03:14 <ais523> I guess UTC-2 will be even emptier, mostly ocean there
01:03:26 <elliott> wouldn't iceland be in utc-1 if they were "normal" about it
01:06:22 -!- Patashu has quit (Read error: Connection reset by peer).
01:06:34 -!- Patashu has joined.
01:13:16 -!- Sgeo has quit (Ping timeout: 240 seconds).
01:14:04 <Gregor> ais523: I misread that as "UCS-1" and "UCS-2" for a second and was quite confused.
01:14:20 <ais523> there's a UCS-1?
01:14:21 -!- Sgeo has joined.
01:16:14 <Phantom__Hoover> Whatever corresponds to the mid-Pacific?
01:17:35 <ais523> isn't Australia in the mid-pacific, in longitude terms?
01:18:27 <Phantom__Hoover> Nothing's -10, it seems.
01:20:03 <Vorpal> Phantom__Hoover, lol
01:20:30 <Vorpal> <elliott> wouldn't iceland be in utc-1 if they were "normal" about it <-- they are UTC (possibly with summer time as well? I don't know)
01:20:39 <Phantom__Hoover> This includes Antarctica and summer times.
01:20:47 <Vorpal> I checked though so I could SMS a friend on iceland happy new year at the right time
01:20:48 <elliott> Vorpal: Yes, I know.
01:21:40 <Vorpal> <ais523> there's a UCS-1? <-- that would be like quite similar to ASCII?
01:21:46 <Vorpal> not quite though
01:21:55 <elliott> ascii with surrogates
01:21:57 <elliott> so uh
01:21:57 <elliott> utf-8
01:22:07 <ais523> elliott: no, UCS doesn't have surrogates
01:22:10 <Vorpal> elliott, err UCS lacks surrogate stuff
01:22:17 <ais523> e.g. UCS-2 has no surrogates, UTF-16 does and can encode the whole set
01:22:22 <ais523> so I guess UCS-1 would just be Latin-1
01:22:38 <elliott> oh, right
01:22:46 <Vorpal> who was it in here that played Magicka?
01:22:49 <elliott> kallisti
01:22:54 <Vorpal> ah
01:23:00 <elliott> ais523: http://www.youtube.com/feather_beta
01:23:15 <ais523> elliott: I hope that link's offtopic except for the name
01:23:22 <ais523> hmm, if it's offtopic, I probably don't want to click it
01:23:24 <Vorpal> elliott, I bought the game today. It was on sale. Again. I think it been on sale like 10 times since it was released less than a year ago
01:23:26 <ais523> and if it's ontopic, I definitely don't
01:23:36 <Vorpal> so I could play co-op if anyone is interested
01:23:36 * ais523 doesn't click the link
01:24:24 <Vorpal> elliott, huh? What does it actually do (wrt how it displays to the user)?
01:24:40 <Vorpal> elliott, the top way of doing it to me would be cutting out the ads. But they are never going to do that
01:25:21 <elliott> Dunno, don't care.
01:26:15 -!- {happy_new_year} has joined.
01:26:28 <monqy> `welcome
01:26:31 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
01:26:33 <elliott> `welcome 2012
01:26:36 <HackEgo> 2012: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
01:26:45 <ais523> o
01:27:21 <Vorpal> monqy, that is a regular with a new nick
01:27:29 <Vorpal> no need to say welcome, we are rude like that
01:27:30 <monqy> :o
01:27:52 <Vorpal> monqy, look at the host ffs
01:27:55 <Vorpal> * {happy_new_year} (~PiRSquare@wikipedia/PiRSquared17) has joined #esoteric
01:28:04 * {happy_new_year} !
01:28:31 <monqy> -!- {happy_new_year} [~notaregular@yep] has joined #esoteric
01:28:32 <monqy> help
01:28:38 <Vorpal> monqy, ...
01:28:44 <{happy_new_year}> ?
01:28:54 <{happy_new_year}> monqy: when was that?
01:29:03 <monqy> a few minutes ago
01:29:10 <{happy_new_year}> ???
01:29:20 <{happy_new_year}> I was this nick for ~an hour
01:32:17 <Sgeo> UPDATE
01:32:23 <Sgeo> kallisti, elliott update
01:32:24 <monqy> `welcome
01:32:27 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
01:32:51 <Phantom__Hoover> Sgeo, excuse me I don't recall asking to be removed from the update list.
01:32:52 <{happy_new_year}> umm
01:32:57 <{happy_new_year}> `log {happy_new_year}
01:33:11 <Sgeo> Phantom__Hoover, sorry
01:33:21 <Phantom__Hoover> You should be.
01:33:26 <HackEgo> 2012-01-01.txt:01:32:52: <{happy_new_year}> umm
01:33:46 <{happy_new_year}> monqy: you're kidding, right?
01:34:04 <zzo38> ":asimov.freenode.net 391 zzo38 asimov.freenode.net :Sunday January 1 2012 -- 01:33:39 +00:00"
01:34:29 <monqy> {happy_new_year}: kidding about what
01:34:34 <zzo38> In my timezone is "2011/12/31 17:28:08 -0800"
01:34:42 <elliott> @time zzo38
01:34:43 <lambdabot> Local time for zzo38 is 2011/12/31 17:28:27 -0800
01:34:46 <{happy_new_year}> -!- {happy_new_year} [~notaregular@yep] has joined #esoteric
01:34:58 <monqy> yes
01:35:04 <monqy> you caught me
01:35:27 <elliott> rip
01:35:33 <elliott> `welcome monqy
01:35:36 <HackEgo> monqy: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
01:35:43 <monqy> `hi
01:35:47 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: hi: not found
01:36:08 -!- {happy_new_year} has changed nick to PiRQuared.
01:36:18 -!- PiRQuared has changed nick to {happy_new_year}.
01:37:20 -!- {happy_new_year} has quit (Quit: be back right away... MAYBEEEEEEEEEEE).
01:37:32 <zzo38> Caught you? Caught you with what?
01:37:59 <centrinia> @time centrinia
01:38:01 <lambdabot> Local time for centrinia is Sat Dec 31 20:37:53
01:38:21 -!- {happy_new_year} has joined.
01:38:26 * {happy_new_year} !
01:38:28 <elliott> @time lambdabot
01:38:28 <lambdabot> I live on the internet, do you expect me to have a local time?
01:38:31 <elliott> oh
01:38:37 <centrinia> @time EgoBot
01:38:49 <{happy_new_year}> @time ChanServ
01:39:28 <Phantom__Hoover> @time time time, look what's become of me
01:39:30 <lambdabot> Local time for Time is Sat Dec 31 20:39:21 2011
01:40:29 <Sgeo> @version lambdabot
01:40:30 <lambdabot> lambdabot 4.2.2.1
01:40:30 <lambdabot> darcs get http://code.haskell.org/lambdabot
01:41:16 <zzo38> I managed to make lambdabot to tell anything after "Local time for zzo38 is " including control characters, by using the option /SET ANSWER -
01:41:27 <elliott> @time Zetro
01:41:28 <lambdabot> Local time for Zetro is Time: Sun Jan 1 02:38:52 2012, uptime: 19w 3h 37m 36s
01:41:28 <elliott> oops
01:41:30 <zzo38> /SET ANSWER + makes it auto answering
01:41:30 <elliott> @time zzo38
01:41:32 <lambdabot> Local time for zzo38 is 2011/12/31 17:35:15 -0800
01:41:46 <zzo38> Well, I turned back on auto answering now
01:41:58 <ais523> @time ais523
01:42:00 <lambdabot> Local time for ais523 is Sun Jan 1 01:41:51 2012
01:42:01 <Sgeo> zzo38, do the not auto answering thing
01:42:08 <ais523> oh, it does it via ctcp
01:42:10 <centrinia> ais523, Happy new year!
01:42:11 <zzo38> Auto answering is off.
01:42:15 <ais523> that's cheating, I thought it had a timezone database
01:42:18 <ais523> happy 2012, centrinia
01:42:19 <Sgeo> @time zzo38
01:42:28 <lambdabot> Local time for zzo38 is <CTCP>ACTION<CTCP>
01:42:36 <{happy_new_year}> lol
01:42:46 * {happy_new_year} .
01:43:02 -!- ais523|direct has joined.
01:43:10 <ais523|direct> now I have an idea…
01:43:15 <monqy> @time ais523|direct
01:43:22 <ais523> monqy: you ruined it
01:43:28 <ais523> utterly
01:43:32 <ais523> I was going to send a CTCP response
01:43:35 <monqy> oh no
01:43:36 <ais523> /without/ the @time having been given
01:43:47 -!- ais523|direct has quit (Client Quit).
01:43:47 <zzo38> ais523: I tried that; it doesn't work
01:44:20 <ais523> oh, ofc, lambdabot would have no way of knowing what channel to send the response to
01:44:50 <zzo38> ais523: Yes. That is what I thought but tried it anyways to see if it would do anything at all.
01:45:15 <ais523> @ping ais523
01:45:15 <lambdabot> pong
01:45:24 <Sgeo> @ping ais523
01:45:24 <ais523> ah, I was wondering if it'd ctcp ping me
01:45:24 <lambdabot> pong
01:45:29 <zzo38> Why do you have two connections?
01:45:37 <ais523> I only have one at the moment
01:45:49 <zzo38> Are you unable to send CTCP response on the main one?
01:46:23 <ais523> zzo38: I'm not convinced my client would correctly send a CTCP response
01:46:32 <ais523> so I wanted to handcraft it to make sure it worked properly
01:46:37 <ais523> it sends them automatically
01:46:43 <zzo38> Well, did you try making your client send a CTCP response?
01:46:49 <ais523> but clients generally aren't designed to send people unsolicited CTCP responses
01:46:53 <ais523> I don't know what the command would be
01:47:00 <ais523> I can do /notice, but not really literal control-a
01:47:44 <zzo38> At least in my client, any control character can be sent by prefixing it with CTRL+P. Maybe in some client you can use CTRL+V for that, though, maybe some others support CTRL+P as well.
01:47:56 <coppro> /notice is not a CTCP command
01:48:00 <coppro> it's an irc NOTICE command
01:48:13 <ais523> coppro: a CTCP reply is an irc NOTICE command
01:48:16 <ais523> with control characters in
01:48:25 <{happy_new_year}> ...
01:48:30 <{happy_new_year}> lol
01:48:36 <ais523> specifically, /notice ^ATIME Sun Jan 1 01:41:51 2012^A or whatever
01:48:42 <coppro> ah, yeah
01:48:42 <{happy_new_year}> <CTCP>TEST 1 2 3<CTCP>
01:48:44 <ais523> in theory, you can put multiple CTCP responses in the same line
01:48:56 <ais523> but I'm not sure if any client actually parses them as such
01:49:06 <coppro> elliott: You should join the atto project
01:49:06 -!- azaq23 has joined.
01:49:12 <zzo38> My client parses CTCP requests anywhere in a line.
01:49:21 <zzo38> However, the only thing it does with CTCP responses is displays them.
01:49:33 <zzo38> It doesn't attempt to parse them.
01:49:37 <Vorpal> <ais523> but clients generally aren't designed to send people unsolicited CTCP responses <-- xchat has /ctcp and /nctcp iirc, the latter for the reply
01:49:54 <ais523> [Error] nctcp: Unknown command.
01:50:01 <elliott> coppro: No.
01:50:03 <Vorpal> ais523, I sent you a ctcp and a ctcp reply
01:50:05 <Vorpal> did they work?
01:50:05 <zzo38> Did you try pushing CTRL+A?
01:50:09 <ais523> Vorpal: yes
01:50:11 <{happy_new_year}> <CTCP>ACTOIN tests<CTCP>
01:50:13 <Vorpal> right
01:50:16 <{happy_new_year}> >_>
01:50:16 <ais523> zzo38: selects all text on the line
01:50:20 <ais523> I knew that even before testing it
01:50:22 <ais523> but I tested it anyway
01:50:23 <{happy_new_year}> WHY AM I FAILING>
01:50:25 <monqy> actoin
01:50:26 <{happy_new_year}> <CTCP>ACTIN tests<CTCP>
01:50:31 <monqy> good good
01:50:31 <{happy_new_year}> O_O
01:50:31 <zzo38> If you push CTRL+P first (or CTRL+V maybe) will that work?
01:50:34 * {happy_new_year} tests
01:50:35 <ais523> {happy_new_year}: you can't spell action
01:50:40 <{happy_new_year}> Did it work?
01:50:46 <monqy> on the third time yes
01:50:51 <ais523> zzo38: control-v is paste; control-p has no obvious effect
01:50:54 <Vorpal> sorry for this:
01:50:57 <Vorpal> <CTCP>VERSION<CTCP>
01:50:59 <ais523> and doesn't escape control codes
01:51:00 <zzo38> Not even printing?
01:51:12 <ais523> zzo38: you can't really print an IRC channel
01:51:16 <ais523> you could print a log, perhaps, or scrollback
01:51:21 <Vorpal> -Zetro- VERSION ((\w+) (v?(\d+(?:[a-z]|(?:\.\d+[a-z]?)*(?:[_-](?:\d+[a-z]?|[a-z]?\d*))?)))(?: (.*))?) <-- lol
01:51:22 <{happy_new_year}> <CTCP>QUIT :oops<CTCP>
01:51:23 <ais523> but neither is an immediately useful thing to do
01:51:27 <{happy_new_year}> Darn
01:51:33 <ais523> CTCP QUIT?
01:51:40 <Vorpal> no idea what that is for
01:51:41 <{happy_new_year}> I thought it might work...
01:51:43 <ais523> I doubt any client would fall for that by replying with QUIT not with NOTICE
01:51:48 -!- NihilistDandy has joined.
01:51:50 <{happy_new_year}> lol
01:51:54 <ais523> you could test using CTCP PRIVMSG, I guess
01:52:04 <ais523> which would be just as futile
01:52:06 <{happy_new_year}> <CTCP>PRIVMSG :oops<CTCP>
01:52:07 * Phantom__Hoover → later today
01:52:07 -!- Phantom__Hoover has left ("Leaving").
01:52:09 -!- Phantom__Hoover has quit (Quit: Leaving).
01:52:14 <{happy_new_year}> >_>
01:52:24 <{happy_new_year}> Is there a list of commands?
01:52:25 <Vorpal> {happy_new_year}, also it isn't going to work, no client responds to unknown ctcp as far as I know
01:52:36 <zzo38> Mine simply ignore any request it doesn't understand, but it does display it regardless. If auto answer is turned off, it doesn't respond to anything either.
01:52:42 <ais523> elliott: why did Canada collapse? someone's asking about IRC nomics in another channel
01:52:53 <zzo38> Vorpal: No I have seen some that makes error message
01:52:57 <Vorpal> {happy_new_year}, and supported CTCPs are client dependent. There is a generic "get list" which may or may not be supported, which I forgot the name of anyway
01:53:04 <Vorpal> zzo38, heh, really
01:53:12 <ais523> I seem to remember an edit war over something or other, but can't remember what
01:53:14 <ais523> Vorpal: you were there too, can you remember?
01:53:44 <Vorpal> ais523, Canada? Oh the IRC nomic that was stupidly renamed to try to do something silly with agora
01:53:51 <Vorpal> I left around the time it was renamed iirc
01:53:51 <ais523> yep
01:53:51 <zzo38> As far as I know, once someone in this channel tried sending CTCP request in the middle of another message, and my client is the only one that responded.
01:53:58 <ais523> but there was a war about something earlier
01:54:06 <Vorpal> ais523, don't remember
01:54:13 <ais523> gah
01:54:22 <zzo38> Because I think my client is the only one following the specifications of IRC more closely than any other one does.
01:54:24 <ais523> anyone still have Canada's ruleset after this long? ISTR Vorpal hosted it
01:54:30 <Vorpal> no I didn't
01:54:44 <Vorpal> ais523, check your logs? I can't they are on another computer that dual boots and is booted into windows.
01:55:11 <elliott> ais523: there's a copy
01:55:11 <Vorpal> ais523, I might check when I reboot to linux
01:55:15 <ais523> can't, I lost my logs from that long ago, IIRC
01:55:15 <elliott> of a slightly old ruleset
01:55:23 <elliott> ais523: anyway, it died due to becoming #nomic
01:55:30 <elliott> before that, just lack of activity
01:55:35 <elliott> talking about agora was more interesting
01:56:16 <ais523> it wasn't doing too well as a nomic even before that
01:57:04 <elliott> anyway, New Canada never died
01:57:08 <elliott> it just barely even lived
01:57:36 <coppro> elliott: why not?
01:57:47 <elliott> coppro: Why not what?
01:57:55 <coppro> elliott: join the atto project
01:58:20 <ais523> sounds like a very small project
01:58:42 <elliott> coppro: I doubt it will be written in a programming language I will code in for fun, I doubt it will ever actually go anywhere, and I doubt I would find the end result all that useful/interesting, although that's the point I'm least sure of.
01:59:12 <ais523> elliott: what is the set of programming languages you code in for fun?
01:59:16 <ais523> just {Haskell}, or larger?
02:00:06 <ais523> in my case, I wanted to have a go at implementing scapegoat myself
02:00:11 <ais523> but couldn't think of an appropriate language
02:00:17 <elliott> ais523: {Haskell, occasionally C, sometimes Python, rarely Perl, probably all sorts of obscure things like ATS and Rust and Bit-C and stuff, not C++, not C++, not C++}
02:00:25 <coppro> elliott: what's that OS you're building called?
02:00:26 <ais523> hmm, fair enough
02:00:29 <coppro> elliott: it definitely won't be C++
02:00:35 <coppro> if I ever bother actually coding it
02:00:46 <ais523> coppro: we don't know yet; but all instances of @ in a nounish position in the logs are going to be copy-replaced with its name once it is named
02:00:48 <ais523> so we just call it @
02:01:00 <ais523> (I would try to escape those @s, but apparently it can't be escaped)
02:01:10 <elliott> ais523: thankfully, replacing X with X is a nop
02:01:13 <ais523> err, find-replaced
02:01:21 <elliott> also, nounish?
02:01:24 <elliott> it's a global replacement
02:01:39 <elliott> not even email addresses will survive the Revelation
02:01:42 <elliott> coppro: what will it be, then?
02:01:58 <ais523> elliott: don't you do C++ sudoku for fun sometimes?
02:01:58 <coppro> dunno
02:02:02 <ais523> or does that not count as C++ programming?
02:02:24 <elliott> ais523: that's not fun, that's zen
02:02:26 <coppro> elliott: the atto project is to create a user environment based on vim, but expanded to cover more applications
02:02:39 <coppro> also no suck is allowed
02:02:40 <elliott> coppro: oh, that's even less interesting than what I thought it was
02:02:43 <ais523> coppro: sort-of like vimperator?
02:02:46 <elliott> and you're doomed from the start
02:02:48 <coppro> ais523: yes, except not
02:02:48 <ais523> only not limited to firefox?
02:03:05 <elliott> vimperator isn't either
02:03:05 <coppro> more like a vim-like DE
02:03:07 <elliott> http://vimperator.org/
02:03:16 <ais523> elliott: somehow I'm not surprised
02:03:19 <elliott> coppro: oh good, it's layering Unix on top of Unix
02:03:29 <elliott> are you /sure/ you thought out the no suck rule fully?
02:03:35 <ais523> coppro: isn't that just Emacs?
02:03:43 <coppro> ais523: most emphatically not
02:03:51 <ais523> at least, the major defining difference between Emacs and vim is that Emacs is a DE and vim isn't
02:03:58 <ais523> things like controls can be remapped
02:04:21 <coppro> emacs doesn't nicely support the notion of a mode
02:04:56 -!- itidus22 has quit (Quit: Leaving).
02:05:06 <ais523> emacs has a concept called "mode", you know; and emacs minor modes could be used for vim modes very easily
02:05:13 <ais523> probably are, in fact
02:05:33 <coppro> unless I misunderstand, not the in the way I envision them
02:05:40 <coppro> it /is/ possible I misunderstand myself
02:05:56 -!- {happy_new_year} has quit (Quit: ChatZilla 0.9.88 [Firefox 11.0a2/20111230042026]).
02:06:11 <ais523> coppro: well, things like insert/visual/command mode in vi are basically different sets of keybindings, right?
02:07:12 <ais523> whereas an emacs major mode sets things like keybindings and syntax tables and indentation functions and (insert lots of other things here), and a minor mode sets some subset of those
02:07:22 <ais523> so it's easy to envisage a minor mode whose only purpose is to change keybindings
02:07:51 <coppro> ais523: Not entirely true. Visual mode, for instance, has the notion of a selection
02:08:10 <elliott> if you don't think emacs modes can add functionality like that...
02:08:22 <coppro> oh, I certainly do
02:08:26 -!- Darth_Cliche has joined.
02:08:48 <coppro> but the thing is, it needs to be able to be as uniform as possible across different purposes
02:10:01 <ais523> hmm, I was just testing out M-x viper-mode
02:10:11 <ais523> which is basically vi keybindings in Emacs
02:11:33 <NihilistDandy> brb, restarting
02:11:40 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com).
02:12:11 <ais523> coppro: I think part of the problem is that a vi-like interface makes no sense for many programs
02:12:12 -!- DCliche has quit (Ping timeout: 248 seconds).
02:12:17 <ais523> how would you put one on a calendar program, for instance?
02:12:53 -!- copumpkin has joined.
02:13:28 <kallisti> Vorpal: whenever I buy my wicked gaming desktop I'd be down for some co-op
02:13:42 <kallisti> because I actually own the game, but lack a computer with which to play it.
02:14:24 <ais523> so how are you on IRC?
02:14:29 <coppro> ais523: cursor navigates time, can insert events at cursor, or whatever
02:14:34 <ais523> or is this one of those games that doesn't run well on low-end laptops?
02:14:38 <kallisti> ais523: I'll let you figure that out.
02:14:40 <kallisti> :>
02:14:47 <kallisti> s/run well/run at all/
02:14:58 <elliott> coppro: oh, I forgot the last reason: I have about 10x more projects than I can handle anyway
02:15:03 <coppro> elliott: duh
02:15:03 <ais523> hmm, I'm used to new games running even on old hardware
02:15:14 <coppro> why do you think I'm starting this one?
02:15:16 <ais523> typically not with massively good graphics/framerates/etc
02:15:23 <kallisti> it's not even because it's old.
02:15:36 <coppro> ais523: modern computers with integrated graphics cards just don't cut it
02:15:50 <kallisti> it's just because the code throws an exception due to the lack of a good graphics cards or something. I don't remember the specific error.
02:15:50 <ais523> sure? I've played computer games on them
02:16:21 <ais523> I play Neverwinter Nights on my integrated laptop even now, and played it on an integrated graphics laptop back when I first bought it
02:16:22 <kallisti> but it's an indie game made by like, ~5 people I think? So I'm not going to expect them to add every feature that you'd expect from a more expensive game.
02:16:25 <ais523> and I think it was reasonably new then
02:16:34 <elliott> nwn predates shaders doesn't it
02:16:47 * kallisti can even play SC2 on his laptop though it's a bit laggy. Magicka? nope.
02:17:16 -!- NihilistDandy has joined.
02:17:35 <ais523> kallisti: just patch the library it's using to determine the graphics card to return a different result?
02:17:48 <kallisti> granted, despite the fact that Magicka doesn't seem like a graphically intense game, it does employ a lot of shaders, particle effects, physics, etc.
02:17:55 <kallisti> ais523: ..
02:18:08 <kallisti> I doubt that's going to be easy.
02:18:14 <ais523> kallisti: might be a patch on the forums to do that
02:18:21 <ais523> that's what happened with Neverwinter Nights, for me
02:18:24 <kallisti> last I checked there was no way to fix it.
02:18:30 <ais523> it was crashing on Linux but there was a patch that masked the existence of a capability, then it wasn't
02:19:13 <elliott> ais523: the reason modern games don't work on intel is that intel only has old shaders
02:19:20 <elliott> flipping a gfx card check will not help.
02:20:01 <ais523> old shaders = fixed pipeline where you only get to plug numbers into a prewritten shader, effectively?
02:20:10 <ais523> hmm, are you sure?
02:20:25 <elliott> err, what?
02:20:32 <elliott> shaders are programmable pipeline
02:20:37 <elliott> intel just only does glsl 1.2
02:21:41 <ais523> ah, OK
02:21:45 <ais523> that makes a lot more sense
02:22:04 <ais523> (fixed pipeline can be seen as simply being forced to use prewritten shaders)
02:22:45 <elliott> anyway, comparing neverwinter nights to current games is ridiculous, because GPUs have advanced a few lightyears since then
02:23:17 -!- MSleep has changed nick to MDude.
02:23:26 <elliott> and desktops have got many times more powerful; so have laptops, but lower-end ones skimp heavily on things like graphics relative to mid-end-upwards stuff to save power, so that their batteries last a lot longer than they did back then
02:23:54 <ais523> adanaxis runs nicely on this laptop too, and it does crazy things with shaders
02:24:10 <ais523> pity that normal GPU matrices only go up to 4x4, adanaxis could really do with 5x5
02:24:10 -!- PiRSquared17 has joined.
02:24:33 -!- PiRSquared17_ has joined.
02:24:36 -!- PiRSquared17_ has left.
02:24:59 <elliott> I doubt it does /that/ crazy things
02:25:01 -!- ais523 has quit (Remote host closed the connection).
02:26:01 <centrinia> Are there any five dimensional space shooters?
02:27:09 <elliott> heh
02:27:32 <centrinia> Well, are there? :p
02:29:10 <zzo38> Make one
02:31:01 <PiRSquared17> Make two
02:31:30 <elliott> make 0
02:31:36 <elliott> make clean all
02:31:37 <PiRSquared17> Make -1
02:32:44 <elliott> make pi r^2 17
02:38:10 <kallisti> make make
02:38:13 <kallisti> man make
02:38:14 <kallisti> make man
02:41:43 <PiRSquared17> `man man
02:41:46 <HackEgo> man: can't open the manpath configuration file /etc/manpath.config
02:41:52 <PiRSquared17> `make man
02:41:55 <HackEgo> make: *** No rule to make target `man'. Stop.
02:42:40 <kallisti> ^ celebrate you know what celebrate needs?
02:42:42 <kallisti> ^celebrate you know what celebrate needs?
02:42:42 <fungot> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/
02:42:43 <myndzi> | | | `\o/´ | | | `\o/´ | | |
02:42:43 <myndzi> /| /| /| | /'\ /| >\ | /| /| /<
02:42:43 <myndzi> (_|¯'\ /'\
02:42:43 <myndzi> |_) (_| |_)
02:42:49 <kallisti> ^rainbow a little more rainbow
02:42:49 <fungot> a little more rainbow
02:43:15 <monqy> everything needs a little more rainbow
02:43:29 <kallisti> yes
02:43:33 <kallisti> all my websites will be in rainbow colors
02:43:43 <kallisti> even the ones people pay me to create.
02:44:02 -!- NihilistDandy has quit (Quit: Leaving...).
02:44:23 * kallisti bset wob dseinger
02:44:32 <PiRSquared17> ^celebrate 1 2 3 4 5 6 7
02:44:32 <fungot> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/
02:44:32 <myndzi> | | | `\o/´ | | | `\o/´ | | |
02:44:33 <myndzi> /< |\ |\ | |\ |\ |\ | |\ /´\ |\
02:44:33 <myndzi> /'¯|_) /´\
02:44:33 <myndzi> (_| (_| |_)
02:52:30 <Sgeo> elliott, kallisti update. Phantom_Hoover's not on the list because he's not here.
02:52:54 <kallisti> Sgeo: thanks for the elliott update earlier
02:53:08 <Sgeo> You're welcome
02:53:15 <kallisti> I AM NOT WELCOME
02:53:20 <kallisti> WHAT THE FUCK IS WRONG WITH YOU
02:53:31 <kallisti> `welcome Sgeo
02:53:34 <HackEgo> Sgeo: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
02:53:35 <kallisti> this is weclome
02:53:40 <kallisti> this is weclome
02:53:45 <kallisti> THIS IS WECLOME
02:53:48 <kallisti> aaaaaaaaaaaah
02:53:51 <Sgeo> `unwelcome kallisti
02:53:53 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: unwelcome: not found
02:53:56 <kallisti> yes.
02:53:59 <kallisti> much bteter
02:55:07 <kallisti> ihihihihihihihihihihihihih
02:55:22 <kallisti> > 3 :> [4]
02:55:23 <lambdabot> Not in scope: data constructor `:>'
03:00:47 <PiRSquared17> Finnmark is RELLLLAAAALKLLL~!
03:01:48 -!- PiRSquared17 has changed nick to [Finnmark|Away].
03:02:25 -!- Ngevd has joined.
03:02:32 <Ngevd> Hello!
03:02:33 <lambdabot> Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it.
03:02:39 <Ngevd> @messages
03:02:39 <lambdabot> Phantom__Hoover said 1h 13m 41s ago: CRITICAL INTELLIGENCE UPDATE: elliott lives in the Abbey, move to intercept.
03:02:54 <Vorpal> elliott, any good torrent client suggestions for windows?
03:03:26 <zzo38> I have used a program called "Another BitTorrent Client"
03:04:04 <Vorpal> also wtf make cancel the default button in an open dialogue
03:04:10 <Ngevd> I use Torrent
03:04:12 <Vorpal> why does ktorrent (on linux) do that
03:04:25 <zzo38> I don't know!
03:04:34 <Vorpal> Ngevd, thanks. How does it compare to ktorrent in functionality
03:04:37 <Ngevd> No idea
03:04:45 <Vorpal> zzo38, it was a rhetorical question
03:04:53 <Ngevd> I've never used ktorrent, and I've barely used Torrent
03:04:57 <Vorpal> ah
03:05:03 <Vorpal> I'll wait for elliott then
03:05:13 <elliott> ?
03:05:15 <Ngevd> I really only use... Transmission? THe one that's default on Ubuntu
03:05:22 <elliott> Vorpal: just use utorrent
03:05:25 <Vorpal> elliott, okay
03:05:45 <elliott> or deluge
03:05:46 <elliott> i guess
03:05:49 <elliott> but everyone just uses utorrent
03:05:55 <elliott> Ngevd: Bit late for you to be on.
03:05:58 <Vorpal> actually... I forgot the port forwarding assignment for that computer. I'll just use the configured ktorrent on my laptop
03:06:02 <Vorpal> and then scp it over
03:06:06 <elliott> @hoogle stdGen
03:06:07 <lambdabot> System.Random data StdGen
03:06:07 <lambdabot> System.Random getStdGen :: IO StdGen
03:06:07 <lambdabot> System.Random mkStdGen :: Int -> StdGen
03:06:09 <Ngevd> elliott, I was saving up
03:06:10 <Vorpal> I'm so lazy
03:06:24 <elliott> :t random
03:06:25 <lambdabot> forall g a. (Random a, RandomGen g) => g -> (a, g)
03:06:26 <Vorpal> kallisti, I bought magicka on the sale today
03:06:44 <Ngevd> Whoever reads MSPA: Possibly update?
03:06:47 <Vorpal> kallisti, (complete pack even, it was so cheap)
03:06:49 <Ngevd> Dunno if you know already
03:07:19 <Vorpal> kallisti, I still find it very hard. I guess I could play co-op with someone. Don't know any friend who owns it. Unless I count you as a friend.
03:10:06 -!- itidus21 has joined.
03:12:43 -!- NihilistDandy has joined.
03:12:51 <Ngevd> Vorpal, which game?
03:13:07 <Ngevd> Or, magicka
03:13:10 <Ngevd> I should read
03:14:53 <Vorpal> I wish strings has an option to ignore stupid strings like "T$4P"
03:16:47 <elliott> Ngevd: Dude, it's way past your bedtime. You're scaring me.
03:17:02 <Vorpal> elliott, it is way past my bedtime too
03:18:07 <monqy> whats a bedtime
03:18:12 <elliott> I wonder whether the attention to detail in this feature request is a sign that it will never get fixed, or that it will get fixed rapidly.
03:29:57 -!- [Finnmark|Away] has changed nick to PiRS|Finnmark.
03:30:08 <PiRS|Finnmark> Hi
03:30:36 -!- centrinia has quit (Quit: Leaving).
03:39:21 <elliott> hi
03:39:32 <Sgeo> Phantom_Hoover_Not_here, elliott kallisti update
03:41:11 <elliott> im phantomhoovernothere
03:41:18 <elliott> my traditional scottish name
03:41:28 <elliott> Ngevd: It's almost 4 am, man.
03:44:15 <Sgeo> Can I disable space to scroll in Chrome?
03:53:04 <kallisti> probably not unless there's some exttension
03:54:57 <Sgeo> I downloaded Firefox instead :/
03:57:33 -!- kallisti has quit (Ping timeout: 244 seconds).
04:13:02 -!- PiRS|Finnmark has changed nick to PiRSquared17.
04:22:24 -!- copumpkin has quit (Ping timeout: 255 seconds).
04:22:50 -!- copumpkin has joined.
04:29:25 -!- Ngevd has quit (Quit: Goodbye).
04:47:37 <elliott> copumpkin: Does the new kind-lifting stuff in GHC let me have type-level rational literals?
04:53:50 <quintopia> happy new year folks
04:58:21 -!- Klisz has joined.
04:59:02 -!- Darth_Cliche has quit (Ping timeout: 244 seconds).
05:05:56 <Sgeo> elliott, update
05:15:27 -!- van3 has joined.
05:16:22 <elliott> `welcome van3
05:16:25 <HackEgo> van3: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
05:18:36 -!- Klisz has quit (Ping timeout: 240 seconds).
05:18:49 -!- van3 has left.
05:23:12 -!- yorick has quit (Remote host closed the connection).
05:23:24 -!- yorick has joined.
05:25:07 <elliott> "[...] very soft and savory with a hint of ammonia." --[[Brie]]
05:25:15 <elliott> Delicate ammonia flavours.
05:27:33 <tswett> I'm gonna create a language and call it Computer Language Especially Atrociously Named Ex Retronym.
05:31:57 <elliott> tswett: Crass. Only ocular lenses should take over really yawnful brands. Really ostentatious.
05:32:01 <quintopia> cleaner is stupid
05:32:01 <lifthrasiir> tswett: no, it has to be recursively acronymed! *wink*
05:32:09 <elliott> I like how all three of us responded at once.
05:32:12 <elliott> Minutes after the original message.
05:32:55 <lifthrasiir> and i was waiting for the next train while diligently searching for free Wi-Fis
05:33:23 <lifthrasiir> the perfect moment to answer such message.
05:36:32 * elliott just assumes tswett decoded his CLEVER HIDDEN MESSAGE.
05:36:50 <quintopia> happy new year elliott
05:37:00 <MDude> Happy new year
05:38:16 <elliott> Clearly loads'a effort vanquished egregious retardations, hailing immaculate decisions deduced excellently, natch. Must emissaries so slowly aggregate greater extensionality?
05:39:24 <quintopia> :(
05:39:56 <quintopia> you have no sympathy for drunk me do you elliott
05:40:22 <elliott> quintopia: Happy axiomatically passing pages, yes. Never entirely wishful, ye ending alienates really epic lying losers. Oh, tut tut.
05:41:30 <quintopia> you missed an i
05:41:45 <elliott> :(
05:41:52 <elliott> *losers, idiot.
05:42:30 <quintopia> that works
05:43:03 -!- kallisti has joined.
05:43:03 -!- kallisti has quit (Changing host).
05:43:03 -!- kallisti has joined.
05:44:20 <elliott> quintopia: You, oak underneath, hellishly amputate viral exoskeletons. Nashville, Oklahoma, Sydney: You may pass all these houses, yet for only raucous drunkness realise ugliness' new kin. Masculinity exits, dodos opine. Yeah, only umbral exegeses light likenesses, in other terms: tawdry.
05:45:37 <elliott> *likenesses;
05:45:37 <Sgeo> kallisti, you may have missed updates
05:46:13 <lahwran> http://esolangs.org/wiki/Malbolge
05:46:15 <lahwran> mother of god ...
05:51:21 <quintopia> elliott: all real exogenous yeomen originate under sexually urban crushing herbal arid dungeons. only underground citizens have exceptionally badass gregarious selves.
05:51:24 <quintopia> ?
05:51:52 <elliott> Are you such a douche bgs?
05:51:59 <elliott> I... don't know whether I'm such a douche bgs.
05:52:43 <quintopia> baf ass should have been two words
05:52:50 <quintopia> forgive me, i'm drunk
05:53:10 -!- MDude has changed nick to MSleep.
05:53:25 <zzo38> I just came back now, saw the message starting "You, oak underneath, hellishly amputate..." and immediately understood what it meant... you aren't hiding anything, really...
05:54:22 <elliott> quintopia: Fortunately, opium-red grass imitates vain endings. Moreover, entities' idolaters move drunk robotic understandings. Never know.
05:56:59 <quintopia> such ostentatious drivel. really underestimating new krewlness
05:57:34 <itidus21> i agree @ elliorr
05:57:42 <itidus21> ^tt
05:57:50 <elliott> Sod runk indeed.
06:00:48 <itidus21> hmm
06:01:29 <Sgeo> I don't understand what zzo38 said
06:02:12 <Sgeo> The prior statement was an attempt at a joke, which I am now aborting.
06:02:13 <itidus21> i think what zzo38 said is "You, oak underneath, hellishly amputate..." translates to "you aren't hiding anything, really..."
06:02:40 <itidus21> ie.
06:03:21 <itidus21> "saw the message starting X and immediately understood what it meant... Y" is akin to "X translates to Y"
06:04:02 <itidus21> with temporal qualifiers removed
06:21:29 <elliott> hi
06:23:19 * quintopia hugs zzo38
06:23:39 <quintopia> happy new year zzo38 ... in a couple hours
06:28:57 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com).
06:33:32 <quintopia> which year is it in china?
06:41:15 <zzo38> itidus21: No. That isn't what it translates to.
06:41:18 <zzo38> That isn't what I meant.
06:42:07 <zzo38> quintopia: I don't know what year it is in China, but I know when Chinese New Year is (although it only applies when using Chinese calendar; even in China they do not use it all the time as far as I can tell)
06:43:16 -!- Madoka-Kaname has quit (Ping timeout: 240 seconds).
06:45:58 <zzo38> Do you know the timezones in China? I don't know what all the timezones of the world are, although I could look it up in a book or in Wikipedia
06:48:22 <kallisti> what's a good frontend for gnuplot?
06:48:23 <kallisti> or
06:48:32 <kallisti> what's good software for generating a plot of a sinwave?
06:48:40 <kallisti> s/sin/$& /
06:53:22 -!- Guest64412 has joined.
07:00:37 <quintopia> zzo38: when tne chinese new year happens what animal will it be
07:03:01 <zzo38> I don't know that either
07:04:05 <quintopia> oh
07:06:59 -!- Guest64412 has quit (Quit: SLEEP, GLORIOUS SLEEP).
07:07:52 -!- PiRSquared17 has quit (Quit: Bye!).
07:45:27 -!- Vorpal has quit (Ping timeout: 240 seconds).
07:55:10 -!- Vorpal has joined.
07:55:14 <Vorpal> My internet just died /badly/
07:55:18 <Vorpal> I'm on 3G atm
07:55:28 <Vorpal> it says it is connected but it just doesn't work
07:56:03 <quintopia> it works
07:56:13 <Vorpal> quintopia, obviously my 3G works
07:56:16 <Vorpal> but not my ADSL
07:56:17 <Vorpal> duh
07:56:44 -!- itidus21 has quit (Ping timeout: 252 seconds).
07:57:12 <Vorpal> quintopia, but the 3G is so much slower and also restricted to my laptop unless I setup some fancy sharing or something
07:58:29 <quintopia> oh kay!
07:59:50 <Vorpal> ah now my ADSL works intermittently, will keep the chat over 3G for a bit until it stabilised...
08:02:56 -!- zzo38 has quit (Remote host closed the connection).
08:07:02 <Vorpal> and switching back
08:17:31 <Vorpal> hm
08:20:15 -!- elliott has quit (Ping timeout: 240 seconds).
08:55:25 -!- kallisti has quit (Ping timeout: 268 seconds).
10:32:24 -!- Phantom_Hoover has joined.
10:54:16 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
10:59:24 -!- oerjan has joined.
11:07:11 -!- Phantom_Hoover has joined.
11:20:19 <oerjan> <ais523> CTCP QUIT?
11:21:02 <oerjan> it's times like these when it's annoying to read the logs, when they don't include everything people are talking about :(
11:21:24 <oerjan> Gregor: ^ *cough*
11:21:50 <fizzie> oerjan: Yes, I think they should include non-channel PRIVMSGs too.
11:22:08 <oerjan> fizzie: um i was assuming that was sent to the channel?
11:22:22 <fizzie> Could be; that was an irrelated comment.
11:23:17 <oerjan> basically on a channel as experimental as #esoteric, a logbot shouldn't filter out information, not even malformed such
11:23:38 <oerjan> (yeah i know about the raw logs)
11:23:59 <fizzie> <CTCP>HOWDOESTHISAPPEARINMYLOGS<CTCP>
11:24:48 <fizzie> Hah, my bouncer doesn't log CTCP either. What a multiball.
11:25:09 -!- GreaseMonkey has quit (Quit: The Other Game).
11:28:57 <fizzie> In the bad old days, a CTCP PING +++ATH0 used to drop a number of people.
11:29:28 -!- Ngevd has joined.
11:29:55 <fizzie> As well as "ping -p 2b2b2b415448300d0a".
11:30:17 <Ngevd> Hello!
11:30:23 <fizzie> (There's also the variant which dials up a phone sex number afterwards.)
11:31:37 <oerjan> <ais523> elliott: don't you do C++ sudoku for fun sometimes? <-- what is C++ sudoku? i assume it's nothing as boring as programming sudoku in C++
11:33:17 <fizzie> IIRC it's just "C++ as a time-wasting brain exercise".
11:35:13 <fizzie> <elliott> Vorpal: You know how people play Sudoku as a time-wasting brain exercise?
11:35:13 <fizzie> <elliott> C++ is like that, but better.
11:35:13 <fizzie> [...]
11:35:13 <fizzie> <elliott> I failed at C++ Sudoku for the first time today :(
11:35:13 <fizzie> <elliott> it is not possible to create a boolean type such that "if (True)" works but
11:35:13 <fizzie> "if (True && 9)" doesn't
11:35:15 <fizzie> [...]
11:35:17 <fizzie> <elliott> monqy: c++ sudoku is my invention and mine alone, also im the only known player, you should try though, you just need a copy of the C++0x features list, a recent g++ compiler, and an ability to forget that things aren't jokes
11:36:16 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
11:37:42 <oerjan> mhm
11:40:54 <oerjan> ^celebrate
11:40:54 <fungot> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/
11:40:54 <myndzi> | | | `\o/´ | | | `\o/´ | | |
11:40:55 <myndzi> /`\ >\ |\ | /'\ /'\ /< | /´\ |\ >\
11:40:55 <myndzi> (_|¯`¯|_) /'\
11:40:55 <myndzi> (_| |_)
11:41:14 * oerjan was testing if it did anything different with +c off
11:42:19 <fizzie> What about a \o/
11:42:19 <myndzi> |
11:42:20 <myndzi> /`\
11:42:34 <fizzie> Aw, no color-following; now it just looks like an excessively angry dude.
11:42:43 <oerjan> explosive man
11:43:18 <monqy> I was hoping for it to pretend the color code had a width
11:44:17 <fizzie> I wonder if it also doesn't mind \o/
11:44:17 <myndzi> |
11:44:18 <myndzi> /´\
11:44:42 <fizzie> Very good.
11:44:48 <oerjan> it uses all those strange control codes itself (which i cannot see in irc but which show up in the logs)
11:45:03 <monqy> \o/
11:45:04 <myndzi> |
11:45:04 <myndzi> /<
11:45:32 <monqy> good ideas:\o/
11:45:33 <myndzi> |
11:45:33 <myndzi> |\
11:45:49 <fizzie> Oh no, the blockhead.
11:46:04 <oerjan> \m/ \m/
11:46:05 <myndzi> `\o/´
11:46:05 <myndzi> |
11:46:05 <myndzi> (_|¯'\
11:46:05 <myndzi> |_)
11:46:32 <oerjan> 0 isn't black?
11:46:37 <monqy> 1 is black
11:46:41 <fizzie> 0 is white.
11:46:52 <oerjan> \m/ \m/
11:46:52 <myndzi> `\o/´
11:46:52 <myndzi> |
11:46:53 <myndzi> /´\
11:46:53 <myndzi> (_| |_)
11:47:52 <oerjan> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/
11:47:53 <myndzi> | | | `\o/´ | | | `\o/´ | | |
11:47:53 <myndzi> /| /< |\ | |\ /< /| | /< |\ /`\
11:47:53 <myndzi> /´¯|_) /'\
11:47:53 <myndzi> (_| (_| |_)
11:49:19 <oerjan> <PiRSquared17> Finnmark is RELLLLAAAALKLLL~! <-- how sad that i broke him
11:49:51 <fizzie> It's a screwy set of colors, but OTOH no-one seems to be able to agree on what the 16 terminal colors should look like, beyond the overall "four bits stand for IBGR, more or less" direction.
11:49:53 <oerjan> and of course there's Hordaland when you want some hordes
11:50:26 <oerjan> and all us ops are from Oppland, naturally
11:50:52 <fizzie> `words --finnish 15
11:51:03 <HackEgo> vananistaan riippulstetys hahteessämme säisimpieskiehum pelömme muodollamme pohjakavakiirtämiä saanemiltäni pitämällään mella mallani tupelakommillomiksi ulkevyempinertä ahdistuttavissa kateuttamme
11:51:14 <oerjan> the rogues come from Rogaland
11:51:41 <oerjan> basically norwegian counties contain all the names you need for a proper D&D game
11:52:08 <fizzie> Lots of long-ish real words there, "muodollamme", "pitämällään", "ahdistuttavissa", "kateuttamme".
11:52:21 <oerjan> `words --norwegian 15
11:52:25 <HackEgo> sursforsøk radiner tankaperapen logien fasissamlovertykksamvir tillene dampbevistilla formeieorierordr trafikaeneruneskyla yrkeroinstor marbehandle mimregn hodeltaktet tingsbehandpla hovektens
11:52:51 <oerjan> sursforsøk is clearly a scientific term
11:53:19 <oerjan> and biologists have seeked long for the mysterious tankaperape
11:53:57 <oerjan> and when your proofs are not up to steam, use dampbevistilla
11:54:24 <oerjan> marbehandle sounds like the kind of treatment you want to avoid
11:54:34 <fizzie> (That is: "with our shape", "with the thing e held", "in the anxiety-inducing" and "our regret" in the partitive case, i.e. used as an object.)
11:54:39 <Ngevd> marbehandle sounds like a Dwarf Fortress
11:54:44 <oerjan> mimregn is like rain, except it makes no sound
11:55:34 -!- Phantom_Hoover has joined.
11:55:34 <oerjan> and if you don't know how much ho you have, use a hovekt
11:56:10 <monqy> i have always wanted to know how much ho i have
11:56:16 <fizzie> Or just get a ho-over. A phantom such.
11:56:19 <oerjan> after which you can split them with the hodeltakt
11:56:54 <Phantom_Hoover> monqy, so you want a hovekt with type indices?
11:57:44 <monqy> my ho is very precious to me; i want only the best
11:58:10 -!- Ngevd has quit (Quit: Goodbye).
11:58:12 <Phantom_Hoover> Are all your hovekt manipulation functions formally verified?
11:58:24 <Phantom_Hoover> Ngevd could not deal with all these hos.
11:58:26 <oerjan> monqy: but is it a forward or backward ho?
11:58:41 <oerjan> sorry -a
11:58:42 <Phantom_Hoover> oerjan, hos only go one way, you dolt.
11:58:55 <oerjan> it's a mass noun
11:59:09 <Phantom_Hoover> Ho only goes one way, you dolt.
11:59:15 <oerjan> ok
11:59:22 <oerjan> always forward ho, check
12:00:24 <oerjan> ho also means "she" in nynorsk
12:00:52 <Phantom_Hoover> Ho ho ho?
12:01:20 <oerjan> oh and who wouldn't want some nice dried radiner
12:01:58 <Phantom_Hoover> `words --english 15
12:02:02 <HackEgo> Unknown option: english
12:02:05 <Phantom_Hoover> :(
12:02:15 <Phantom_Hoover> `paste bin/words
12:02:19 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20211
12:02:36 <Phantom_Hoover> `words --eng-gb 15
12:02:41 <HackEgo> eed fix hornicagli splum donary puftyfrydic signie mufk quho ston legealessio lehing incaryfev navige hon
12:02:46 <oerjan> (one problem with inserting norwegian into english sentences is whether to strip suffixes or not - if you don't strip the definite suffix it feels wrong whether you put a "the" in front or not)
12:02:51 <monqy> puftyfrydic, yum yum
12:03:16 <Phantom_Hoover> I think I've been to Incaryfev.
12:03:36 <Phantom_Hoover> `words --irish 15
12:03:39 <HackEgo> b'iora sceiltír spalasaí bpeir gcugan harfóra néivear m'uragaigh gcoirní staíl spiachánach ráfla sciméapa neamhbhreach m'easuaiméis
12:03:44 <oerjan> i need some splum for the donary, hon
12:04:14 <Phantom_Hoover> Neamhbhreach is only a little implausible as an Irish name.
12:04:28 <oerjan> Phantom_Hoover: you know irish?
12:04:29 -!- baesemada has joined.
12:04:35 <Phantom_Hoover> oerjan, I know Irish names.
12:05:05 <Phantom_Hoover> They're characterised by 'h'es where no 'h'es should there be.
12:06:30 <oerjan> 03:02:39: <Ngevd> @messages
12:06:30 <oerjan> 03:02:39: <lambdabot> Phantom__Hoover said 1h 13m 41s ago: CRITICAL INTELLIGENCE UPDATE: elliott lives in the Abbey, move to intercept.
12:06:36 <oerjan> hexham will never be the same
12:10:18 -!- baesemada has quit.
12:15:43 <oerjan> * elliott just assumes tswett decoded his CLEVER HIDDEN MESSAGE. <-- ejatdhCHM? that makes no sense man
12:16:48 <monqy> it's backwards for MHChdtaje.
12:16:52 <oerjan> ah.
12:17:31 -!- Madoka-Kaname has joined.
12:17:32 -!- Madoka-Kaname has quit (Changing host).
12:17:32 -!- Madoka-Kaname has joined.
12:20:32 <oerjan> 05:46:13: <lahwran> http://esolangs.org/wiki/Malbolge
12:20:32 <oerjan> 05:46:15: <lahwran> mother of god ...
12:20:40 <oerjan> no, more like the opposite, i'd say
12:20:47 <lahwran> ?
12:21:31 <oerjan> opposite of mother of god.
12:21:32 <monqy> dog fo rehtom
12:21:46 <lahwran> god of mothers?
12:21:51 <lahwran> father of god?
12:22:00 <lahwran> mother of satan?
12:22:08 <lahwran> I could go on for hours, which one do you mean?
12:22:09 <oerjan> getting close
12:22:20 <oerjan> lahwran: well which one fits with malbolge?
12:22:34 * oerjan pun appreciation lessons
12:22:39 <lahwran> "mother of god" works nicely
12:22:44 <monqy> zbgure bs tbq
12:22:56 <lahwran> http://www.urbandictionary.com/define.php?term=mother+of+god
12:23:03 <lahwran> "If something unbelieveable happens or is so unexpected and you cant believe your eyes, you can then say 'Mother of GOD!'"
12:23:05 <lahwran> I rest my case :3
12:23:53 <oerjan> yes, but that's not punny enough.
12:24:14 <oerjan> or wordplay, whatever
12:26:46 <lahwran> I'm busy reading gender-related holy wars on reddit, can't think about puns
12:27:12 <shachaf> lahwran: Solution: Stop reading Reddit.
12:27:25 <lahwran> yeeeeaahhh that's a good idea
12:27:29 <shachaf> Reddit is stupid. Especially "gender-related holy wars" on it.
12:28:11 <lahwran> "holy wars" on the internet in general are stupid, but very entertaining
12:28:14 <oerjan> i don't visit the reddit front page any more these days.
12:28:33 <monqy> holy wars as in
12:29:03 <shachaf> The Reddit front page is OK once you unsubscribe from every single subreddit.
12:29:04 <lahwran> "you're right and I'm wrong, and I won't listen to reason even if you're not trying to disagree with me" kinda stuff
12:29:21 <oerjan> shachaf: i'm not logged in, so i mean the default set
12:29:22 <lahwran> happens a lot with programming languages, too. perl vs python, anyone?
12:29:26 <lahwran> :D
12:29:51 <monqy> never heard a proper perl vs python
12:29:58 <shachaf> oerjan: I'm not logged in either.
12:30:14 <shachaf> I don't really log in to websites anymore.
12:30:20 <lahwran> monqy: honestly, I haven't either
12:30:58 <monqy> of what use is a holy war if both sides are wrong
12:31:15 <lahwran> you don't need that qualifier on there
12:31:16 <shachaf> monqy: Eliminating wrong people from both sides.
12:31:23 <shachaf> That's what war is about.
12:31:37 <lahwran> in general holy wars imply that any aggressive side is wrong :P
12:31:44 <lahwran> and, often the unaggressive sides too
12:32:31 <shachaf> I'm in a holy war with my pants -- in particular the knee area.
12:32:34 <shachaf> I'm losing. :-(
12:32:47 <lahwran> hah
12:33:06 <lahwran> I'm proud to say the knees of my pants have stayed mostly assembled in recent years
12:33:08 <monqy> my pants and I have a mutual respect
12:33:24 <oerjan> i'm in a holy war with god. it's rather frustrating.
12:34:03 <shachaf> oerjan: A holier-than-thou war?
12:34:52 <oerjan> shachaf: the guy just won't come to his senses
12:36:46 <oerjan> i mean i keep saying "making a universe where suffering is a building block, that's just atrocious" but he just won't have any of it.
12:41:07 <oerjan> "Can't you just _fix_ it already?" "*THUNDERBOLT*"
12:41:53 <lahwran> nahahaha
12:41:59 <lahwran> s/n/b/
12:46:08 -!- Ngevd has joined.
12:46:43 -!- mr_schlauch has joined.
12:50:16 <Ngevd> Hello!
12:51:01 <Ngevd> Goodbye!
12:51:03 -!- Ngevd has quit (Client Quit).
13:29:11 -!- kallisti has joined.
13:29:11 -!- kallisti has quit (Changing host).
13:29:11 -!- kallisti has joined.
13:29:17 <kallisti> ARISE COMPUTER
13:29:20 <kallisti> I SUMMON THEW
13:29:22 <kallisti> so after playing some Skyrim
13:29:25 <kallisti> I think I've decided
13:29:51 <kallisti> that I'm not going to spend money on what is essentially a huge, monotonous, buggy, unbalanced game.
13:32:51 -!- kallisti_ has joined.
13:33:35 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:46:54 <kallisti> hmmm I think for the first time ever wikipedia's donation drive is behind its budget.
13:48:02 -!- kallisti_ has left.
13:48:09 <quintopia> they need to come up with an actual fundraiser if they want to keep drawing millions from the general public
13:48:28 <kallisti> quintopia: what's the difference between an "actual fundraiser" and what they're doing.
13:48:35 <monqy> if I don't give them money, they'll give me more faces, and I love the faces
13:48:58 <kallisti> I think their fundraider campaign is kind of poorly executed.
13:49:11 <quintopia> fundraider!
13:49:15 <kallisti> lol yes
13:49:21 <kallisti> not enough fun raiding
13:49:23 <kallisti> needs more raids
13:49:39 <kallisti> I think they should have stuck to the "here's the bar showing how much money we need"
13:49:42 <kallisti> instead of the faces.
13:49:53 <monqy> but
13:49:54 <quintopia> facesssssss
13:49:55 <monqy> faces are good
13:50:00 <monqy> faces are friend
13:50:01 <kallisti> it worked fine in the past, and gave people an indication that there is a need to donate.
13:50:15 <kallisti> they could even have faces /and/ the progress bar.
13:50:20 <quintopia> ,,,,,,,,,
13:50:22 <monqy> progress bar made of faces
13:50:26 <kallisti> yes.
13:50:40 <quintopia> face made of bars
13:50:44 <monqy> give more money to get more faces
13:50:47 <monqy> now everyone will donate
13:51:03 <quintopia> yes. all the donate.
13:51:08 <kallisti> all the faces do is attract people to click and read their shitty advertising spiel.
13:51:15 <quintopia> nope
13:51:25 <quintopia> they attract people to look at faces
13:51:32 <monqy> to admire the faces
13:51:37 <oerjan> it's all so facetious
13:53:04 <kallisti> ..
13:53:10 <kallisti> monqy: hi I got idea for game
13:53:13 <kallisti> super game.
13:53:15 <kallisti> but complicated
13:53:25 <monqy> you flip a face but it's really really big
13:53:26 <kallisti> maybe I shouldn't plan so comlpicatedly
13:53:54 <kallisti> no it's like RPG + RTS
13:54:12 <kallisti> + maybe dynamically generated storyline/world but I doubt I'll be good at that.
13:54:26 <kallisti> definitely randomly generated world would be nice.
13:55:06 <kallisti> the idea started as a desire to have an RPG where careful consideration and planning are required
13:55:08 <quintopia> and you can go back in time and kill the royal family and everything is different
13:55:22 <kallisti> like, with magic, for example, you can't just run around and throw fireballs everywhere.
13:55:52 <quintopia> you can only throw them where they wont hurt anyone
13:56:21 <kallisti> if you're in a forest, the forest will catch on fire. also, good spells are slow and require no interruptions. Anything fast is either a) not very strong b) drains a lot of magical resources (I haven't decided what that is)
13:56:33 <monqy> forest fires mean more things dead
13:56:35 <monqy> perfect
13:56:37 <kallisti> lol
13:56:39 <kallisti> yes.
13:56:44 <kallisti> though if there is an enemy wizard
13:56:47 <kallisti> he could conjure rain.
13:56:48 <monqy> dead
13:56:50 <monqy> oh
13:56:53 <monqy> try megafire
13:56:58 <monqy> (thumbs up)
13:57:07 <quintopia> megarain though
13:57:25 <monqy> D:
13:57:57 <kallisti> also another idea is to have the game progress from a small scale to large scale while being interesting the entire time.
13:57:59 <quintopia> do recommend nuclear blast
13:58:06 <kallisti> so, to start with you'd be one person. the main hero character.
13:58:29 <quintopia> oh sort of like battles in brutal legend
13:58:34 <kallisti> then you'd develop a following, and eventually you would control a town, then a county, then a kingdom.
13:58:56 -!- derdon has joined.
13:58:57 <kallisti> though I don't if I actually want to do that.
13:59:07 <quintopia> you dont want to do that
13:59:09 <kallisti> I think just having a small city under your control would be good enough.
13:59:19 -!- oerjan has quit (Quit: leaving).
13:59:19 <quintopia> you want a game company with resources to do it for you
13:59:27 <kallisti> also I'd rather focus on a small group of awesome hero characters than armies and stuff
14:00:07 <kallisti> the way I see it working is you have military squads that you can train, but all of the epic questy stuff would be handled by your heros
14:00:14 <kallisti> but yeah
14:00:15 <kallisti> that's like
14:00:17 <kallisti> a game I'll never make
14:00:21 <kallisti> that I've thought about a lot recently
14:00:31 <kallisti> I'd like to be a game company
14:00:34 <kallisti> like the entire game company
14:00:35 <kallisti> at once
14:00:41 <kallisti> like a hivemind
14:00:42 <quintopia> yeah man
14:00:45 <kallisti> developing a game
14:01:20 <monqy> my dream existence is as a hivemind
14:01:28 <monqy> a hivemind of robots
14:01:30 <monqy> or perhaps hiveminds
14:01:40 <kallisti> my existence hive is a dream of minds.
14:01:47 <quintopia> is this a good dream or a nightmare
14:02:26 <kallisti> my dream existence is of mind hives
14:02:45 <quintopia> my dream dream is of dream dreams
14:04:08 <kallisti> mmmm cole slaw
14:04:20 <kallisti> what the hell does cole mean
14:04:23 <kallisti> also slaw
14:04:37 <monqy> coles law
14:04:43 <monqy> colesl aw
14:04:44 <quintopia> cole is cabbage, slaw is salad
14:05:00 <kallisti> The term "coleslaw" arose in the 18th century as an Anglicisation of the Dutch term "koolsla", a shortening of "koolsalade", which means "cabbage salad".[2] It is originally from Ireland and was made at the end of the month from leftover vegetables and cream.
14:05:04 <kallisti> indeed
14:05:23 <monqy> coleslaw is good except when it isn't
14:05:29 <quintopia> yeah
14:05:38 <kallisti> "closeup of Kentucky Fried Chicken's coleslaw" WHYYYY
14:05:44 <monqy> thanks
14:05:58 <monqy> enlarged for texture
14:06:02 <quintopia> they make the worst
14:06:04 <monqy> delicious coleslaw texture
14:06:05 <kallisti> WHY DOES WIKIPEDIA RUIN EVERY FOOD WITH PICTURES OF SHITTY VERSIONS OF THAT FOOD
14:06:30 <monqy> is the picture good at least
14:06:49 <monqy> artistically
14:07:25 <kallisti> "here's some shitty grits I got no
14:07:55 <kallisti> http://en.wikipedia.org/wiki/File:KFC_coleslaw.JPG
14:08:06 <quintopia> mmmm grits
14:08:08 <monqy> ew
14:08:14 <kallisti> imagine cabbage now imagine KFC sucks
14:10:25 <monqy> the only retouching they did was a crop
14:10:44 <monqy> i am glad to in all other respects witness the unadulterated glory of kfc coleslaw
14:10:56 <monqy> viesual respects i mean
14:11:03 <monqy> except for some of them
14:12:38 <quintopia> yes
14:18:16 <kallisti> http://en.wikipedia.org/wiki/Brunswick_stew
14:18:22 <kallisti> I love brunswick stew.
14:18:24 <kallisti> so goood.
14:19:52 <quintopia> dont make me hungry when there is no food
14:20:52 <kallisti> http://en.wikipedia.org/wiki/Southern_American_cuisine
14:21:02 <kallisti> http://en.wikipedia.org/wiki/Fried_chicken
14:21:15 <kallisti> http://en.wikipedia.org/wiki/Biscuits_and_gravy
14:21:47 <kallisti> http://en.wikipedia.org/wiki/Gumbo
14:21:58 <monqy> the american quisine picture is a burger, great
14:21:58 <kallisti> http://en.wikipedia.org/wiki/Jambalaya
14:22:05 <kallisti> monqy: yeah I found that funny
14:22:27 <kallisti> http://en.wikipedia.org/wiki/Hushpuppy
14:22:53 * quintopia does not click on food pron
14:23:14 <monqy> it's informative it has words
14:23:20 <monqy> don't you want education
14:23:24 <monqy> food education
14:23:50 <quintopia> i am hungry!
14:24:33 <kallisti> quintopia: http://en.wikipedia.org/wiki/Chicken_and_dumplings
14:24:40 <kallisti> http://en.wikipedia.org/wiki/Cornbread
14:24:47 <kallisti> http://en.wikipedia.org/wiki/Apple_butter
14:24:54 <kallisti> http://en.wikipedia.org/wiki/Chow-chow
14:25:07 <monqy> http://upload.wikimedia.org/wikipedia/commons/2/23/Ni%C3%A8r_beurre_National_Trust_for_Jersey_2007_a.jpg yum yum
14:25:17 <quintopia> kallisti is hating me :(
14:25:31 <kallisti> http://en.wikipedia.org/wiki/Fried_green_tomatoes_(food)
14:25:40 <fizzie> kallisti: Here's your sine wave: https://chart.googleapis.com/chart?cht=lc&chd=t:-1&chs=250x150&chfd=0,x,0,6.28,0.1,sin(x)*50%2b50
14:25:49 <kallisti> http://en.wikipedia.org/wiki/Sausage_gravy
14:25:51 <quintopia> what am i seeing here monqy
14:26:08 <monqy> you'd know if you clicked kallisti's links!!
14:26:54 <kallisti> fizzie: I was having a drunken conversation with someone and they started talking about audio stuff in relation to films and they kind of knew what spectrograms were but I wanted to clarify by showing a pure sine tone and its corresponding spectrogram.
14:27:02 <quintopia> or you could just tell me
14:27:06 <kallisti> quintopia: foods
14:27:12 <monqy> Making black butter in Jersey - wikepid
14:27:20 <quintopia> oh
14:27:21 <monqy> first image on the appel buter page
14:27:23 <fizzie> kallisti: I'm not sure you can get Google's image chart API to make a spectrogram, sadly.
14:27:48 <quintopia> it takes a metal-melting forge to make black butter it seems
14:28:04 <kallisti> it's okay I could have just drawn a vertical line on a 2D chart somewhere :P
14:28:06 <monqy> how else would you butter the apples
14:28:11 <monqy> those things are hard!
14:28:42 <kallisti> we have "apple houses" here
14:28:46 <kallisti> which just sell all apple
14:28:49 <kallisti> stuff
14:29:03 <kallisti> just tons of different kinds of apples, apple cider, apple butter, apple fritters, apple pie.
14:29:10 <kallisti> probably other things made of apples that I didn't know existed
14:29:13 <monqy> apple chips
14:29:16 <kallisti> oh, yes.
14:29:58 <monqy> apple sauce
14:30:44 <fizzie> Apple iBook.
14:30:49 <kallisti> no
14:30:52 <kallisti> bad
14:31:02 <kallisti> not very nutritioys
14:31:02 <quintopia> Apple iRack
14:33:35 <kallisti> is that a pun on Iraq ..
14:33:41 <kallisti> yes it is.
14:34:06 <monqy> apple macintosh, yum yum
14:36:26 <fizzie> There's a garlic-themed restaurant in Helsinki, they do some a bit strange garlicy things. (Like garlic beer and garlic ice-cream.)
14:37:08 <quintopia> yecch
14:38:17 <quintopia> chocochip waffles?
14:38:49 <monqy> garlic chocochip garlic waffles
14:39:00 <kallisti> garlic garlic in a garlic sauce
14:39:20 <kallisti> fizzie: can you order a whole bulb of garlic.
14:39:28 * quintopia dips it in garlic butter
14:39:57 <fizzie> kallisti: It's not on the menu, but I'm pretty sure you could.
14:39:59 <quintopia> maorp
14:40:11 <fizzie> Also there's a viking-themed restaurant chain that sells tar ice-cream.
14:40:19 <quintopia> what
14:40:30 <fizzie> It's not entirely unique, but top Google hits about "tar ice cream" seem to be about it.
14:40:40 <quintopia> tar is not food
14:40:49 <fizzie> http://susan-stepney.blogspot.com/2011/06/tar-ice-cream.html <-- see, #1 hit is some computational blogger blogging about it.
14:41:03 <fizzie> It's not too bad.
14:41:50 <kallisti> wat ice cream tarpit?
14:41:55 <kallisti> is it the smallest ice cream?
14:42:11 <fizzie> The ice cream with the least amount of instructions.
14:42:23 <quintopia> yeah i just read that
14:42:30 <quintopia> she seems to think it is nice
14:42:52 <kallisti> I'm not sure that's what turing tarpit was originally coined to mean.
14:44:08 <kallisti> "There is a small but thriving community on the Internet of hobbyists who program in and design esoteric programming languages." -- haha Wikipedia
14:44:26 <monqy> does it have a citation
14:44:36 <kallisti> no
14:44:39 <quintopia> i dont buy it
14:44:41 <kallisti> "The esolang community is active sporadically, and topics of discussion range from debate as to whether a language is Turing-complete to how one would go about representing abstract and hard to visualise mathematical concepts in a programming environment. There is a mailing list, but it is nearly abandoned and most discussion happens on the wiki (see below) or on IRC."
14:45:12 <kallisti> other topics include: apple butter and garlic-themed restaurants.
14:45:16 <monqy> wikipedia.............................
14:45:26 <monqy> oh no it gives
14:45:29 <monqy> lolcoad as its
14:45:32 <monqy> firsst iexampel
14:45:33 <monqy> no bad
14:45:55 <kallisti> first example should be Malbolge
14:46:40 <kallisti> ('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#" `CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>
14:47:56 <fizzie> Their Befunge Hello World uses a nonstandard 3x2 print loop, but I suppose that's justifiable, because the standard 5x1 >:#,_ is not "2D" at all.
14:52:23 <Sgeo> As ... blah as Cyanide and Happiness is, I do like the time travel strips, I think
14:52:39 <Sgeo> Once a year. Apparently since 2006
14:53:21 <kallisti> S "I like station v3" geo
14:54:40 <monqy> I was waiting for that to come up
15:00:53 <Sgeo> I officially hate commentors on dilbert.com
15:01:19 <Sgeo> So far, two people think Oxytocin is a misspelling.
15:02:31 <Sgeo> http://dilbert.com/strips/comic/2011-12-31/
15:05:24 <quintopia> i officially hate dilbert
15:05:36 <quintopia> and scott adams too
15:17:54 <Gregor> Ah yes.
15:18:02 <Gregor> It's that time of year where I have to remember to update copyright lines.
15:19:11 <quintopia> why not just write them so they dont have to be updated?
15:20:19 <Gregor> Because then they wouldn't be legally correct ...
15:23:18 -!- azaq23 has quit (Quit: Leaving.).
15:23:39 <quintopia> under which law?
15:38:44 -!- cswords has joined.
15:39:19 -!- cswords has quit (Client Quit).
15:44:51 <Gregor> quintopia: None I suppose, under Berne you don't need a copyright notice at all *shrugs*
15:45:44 <Gregor> Apparently a copyright notice can defeat a defense of "innocent infringement"
15:46:13 <Gregor> I need a VCS that can tell me when I need to update copyright notices 8-D
15:46:22 <Gregor> I wonder if there's a plugin for Mercurial to do that ...
15:47:02 <coppro> You could just not put the year into the copyright notice
15:47:18 <fizzie> Some GNU files have such a careful correspondence between "years mentioned in the copyright notice" and "edits that touched the file in the VCS" that one might believe they use some kind of a tool.
16:23:30 -!- Sgeo_ has joined.
16:24:57 -!- Sgeo has quit (Ping timeout: 240 seconds).
16:31:31 <Sgeo_> Do I want to know -cafe's opinion of conduits?
16:31:45 <Sgeo_> Or is the rest of cafe as stupid as that person in the thread?
16:34:47 -!- elliott has joined.
16:39:12 -!- Slereah_ has quit (Ping timeout: 248 seconds).
16:40:20 -!- Ngevd has joined.
16:40:22 <Ngevd> Hello!
16:40:34 <Ngevd> I'm mildy surprised that http://hackage.haskell.org/package/piet exists
16:41:14 -!- Slereah_ has joined.
16:43:33 <fizzie> Ngevd: There's a -- rather vaguely specified -- P programming language http://oshs.sourceforge.net/docs/oshs-osfil.ud-P.html in the equally vapoury OSHS, "The Operating System of The Holy Spirit".
16:43:35 <elliott> pietiful
16:44:04 <elliott> fizzie: A few hundreths of kilobytes, eh?
16:44:40 <fizzie> IOW, a few dozen bytes.
16:45:07 <fizzie> That's how holy it is. (In related news, I haven't yet found out what makes OSHS holy at all; all the stuff that's in there seems to be just about the technical side of it.)
16:45:35 <elliott> 11:23:17: <oerjan> basically on a channel as experimental as #esoteric, a logbot shouldn't filter out information, not even malformed such
16:45:45 <elliott> @ask oerjan Pings? NAMES lists?
16:45:45 <lambdabot> Consider it noted.
16:46:11 <elliott> 11:31:37: <oerjan> <ais523> elliott: don't you do C++ sudoku for fun sometimes? <-- what is C++ sudoku? i assume it's nothing as boring as programming sudoku in C++
16:46:11 <elliott> 11:33:17: <fizzie> IIRC it's just "C++ as a time-wasting brain exercise".
16:46:24 <elliott> fizzie: With an eye towards treating it as a functional language. Especially if you do it at compile-time.
16:46:33 <elliott> 11:35:13: <fizzie> <elliott> I failed at C++ Sudoku for the first time today :(
16:46:33 <elliott> 11:35:13: <fizzie> <elliott> it is not possible to create a boolean type such that "if (True)" works but
16:46:33 <elliott> 11:35:13: <fizzie> "if (True && 9)" doesn't
16:46:33 <elliott> I later figured this out, BTW.
16:46:36 <Gregor> @tell oerjan Re logs: See raw logs. I can't turn every line into something meaningful, but the raw logs never fail.
16:46:37 <lambdabot> Consider it noted.
16:47:16 <fizzie> Gregor: He just said "I know about timed hit^W^Wraw logs" on the next line or so.
16:47:39 <fizzie> Er, not the bit about timed hits. In retrospect, putting quote marks around that was probably a mistake.
16:47:41 <fizzie> Anyway.
16:48:29 <elliott> Gregor: You /could/ add unknown lines raw to the text logs (past parsing who sent them).
16:48:46 <Gregor> elliott: I /could/
16:48:51 <Gregor> I /choose/ not to ^^
16:49:23 <elliott> 12:15:43: <oerjan> * elliott just assumes tswett decoded his CLEVER HIDDEN MESSAGE. <-- ejatdhCHM? that makes no sense man
16:49:23 <elliott> 12:16:48: <monqy> it's backwards for MHChdtaje.
16:49:23 <elliott> 12:16:52: <oerjan> ah.
16:49:23 <elliott> yeah
16:49:58 <quintopia> elliott: YunXttm?
16:50:09 <elliott> i guess so?
16:53:09 <quintopia> :/
16:53:38 <elliott> 15:00:53: <Sgeo> I officially hate commentors on dilbert.com
16:53:44 <elliott> Sgeo_: You could try not reading dilbert.com.
16:54:02 <Gregor> 's better than XKCD.
16:54:22 <elliott> At least the author of xkcd isn't a scumbag :P
16:54:23 <elliott> 15:18:02: <Gregor> It's that time of year where I have to remember to update copyright lines.
16:54:23 <elliott> 15:19:11: <quintopia> why not just write them so they dont have to be updated?
16:54:23 <elliott> 15:20:19: <Gregor> Because then they wouldn't be legally correct ...
16:54:35 <elliott> Gregor: Most people just have the year be when the thing was last updated...
16:54:51 <Gregor> Yes, but you have to remember to do that when you /update/ it.
16:55:10 <elliott> Well, not really :P
16:55:13 <kallisti> hmmm I wonder if I have arthritis, or some kind of joint problem.
16:55:15 <elliott> You could just not put a year.
16:55:24 <elliott> 15:47:02: <coppro> You could just not put the year into the copyright notice
16:55:24 <elliott> Yes, that.
16:55:47 <elliott> 16:43:33: <fizzie> Ngevd: There's a -- rather vaguely specified -- P programming language http://oshs.sourceforge.net/docs/oshs-osfil.ud-P.html in the equally vapoury OSHS, "The Operating System of The Holy Spirit".
16:55:51 <kallisti> my fingers kind of ache a lot lately, and then sometimes there's a sharp pain and I can't move my wrist very well for about a second or two.
16:55:53 -!- Gregor has set topic: This channel Copyright © 2005 Gregor Richards | http://codu.org/logs/_esoteric/.
16:55:55 <elliott> fizzie: Wait, what *was* the context for this?
16:56:03 <Gregor> kallisti: Sounds RSIish.
16:56:12 <kallisti> from..... typing?>
16:56:19 <kallisti> I guess I type a lot. and weirdly
16:56:27 <fizzie> elliott: E was looking for single-letter-name programming languages a day or a few ago, and didn't find a P (just P'') at that time.
16:56:28 <Ngevd> elliott, one letter programming language names
16:56:45 <Vorpal> kallisti, you probably want to get a doctor to look at that.
16:56:54 <kallisti> a doctor? seriously? I'm shocked.
16:56:58 <kallisti> doctors fix medical problems?
16:57:03 <Ngevd> Some do
16:57:08 <Ngevd> Others just time travel
16:57:11 <Vorpal> kallisti, that is at least the goal
16:57:14 <kallisti> I thought they just gave people drugs.
16:57:20 <Vorpal> kallisti, if they are doctors in medicine
16:59:56 <kallisti> do you guys have anything like that?
17:00:11 <kallisti> seems like RSI would be common with programmers and whatnot
17:00:45 <Vorpal> thankfully I don't have it
17:01:10 <kallisti> hm, maybe I should learn how to type like a normal person
17:01:30 <Vorpal> what with 3 fingers on each hand? XD
17:01:37 <kallisti> yes
17:01:47 <Vorpal> (I don't think that many people use all five fingers on each hand to type)
17:01:53 <kallisti> I let my middle finger do too much I think.
17:02:01 <kallisti> they kind of dance around the keyboard :P
17:02:11 <kallisti> that's a poor explanation though
17:02:53 <Vorpal> I haven't slept for over 24 hours. Going to sleep now. Hopefully I will kind of sync up with the time zone I live in that way.
17:03:01 <Vorpal> cya tomorrow
17:03:04 <kallisti> that never works for me
17:03:05 <kallisti> but good night
17:03:32 <elliott> Vorpal: that doesn't work, you already fucked up
17:03:49 <kallisti> elliott: hi do you ever get RSI you type a lot.
17:04:09 <elliott> you don't "ever get" RSI, you just "get" RSI
17:04:15 <elliott> have you considered that it might be carpal tunnel, hth
17:04:26 <kallisti> seriously it's going to be so hard to type differently if that's what the problem is.
17:04:49 <elliott> install xwrits or sth
17:05:01 <kallisti> "Patients with CTS experience numbness, tingling, or burning sensations in the thumb and fingers, in particular the index, middle fingers, and radial half of the ring fingers, which are innervated by the median nerve. Less-specific symptoms may include pain in the wrists or hands and loss of grip strength"
17:05:08 <kallisti> ...oh. no I hadn't considered that. but that sounds pretty accurate.
17:05:13 <kallisti> fun.
17:05:30 <elliott> if you think you have anything like that (a) stop typing and (b) go and see a doctor
17:05:48 <elliott> or it'll get bad enough that you won't be able to type.
17:05:55 <kallisti> but typing is fun.
17:05:57 <kallisti> type type type
17:07:05 <Ngevd> Type if your nose
17:07:11 <Ngevd> Nasal tunnel syndrome
17:07:17 <Ngevd> s/if/with/
17:07:25 <Ngevd> I typo phonetically...
17:07:25 -!- Vorpal has quit (Ping timeout: 252 seconds).
17:09:08 <kallisti> http://en.wikipedia.org/wiki/Phalen%27s_maneuver this does not cause any symptoms.
17:09:46 <elliott> oh no -- 160 over 7 :/
17:10:08 <kallisti> http://en.wikipedia.org/wiki/File:Carpal_Tunnel_Syndrome,_Operation.jpg
17:10:14 <kallisti> this looks fun.
17:21:41 <nooga> urgh
17:22:19 <elliott> kallisti: pls don't link things like that without some kind of rudimentary warning, i'm afraid of my hands now :p
17:22:35 <kallisti> oh by the way if you don't like looking at meaty human insides then don't click that link.
17:22:43 <elliott> excellent
17:22:44 <kallisti> not that it isn't totally obvious from the filename.
17:22:53 <kallisti> >_>
17:22:54 <kallisti> just sayin'
17:23:08 <kallisti> do you guys actually read links before you click them?
17:24:32 <elliott> I didn't know how they fixed carpal tunnel :'(
17:25:12 <kallisti> but using sharp things to literally split the problem in half, of course. :P
17:25:16 <kallisti> divide and conquer algorithm.
17:25:21 <kallisti> s/buy/by/
17:26:12 <kallisti> I like how surgery is just really precise beneficial maiming.
17:26:37 -!- Ngevd has quit (Quit: Goodbye).
17:29:30 * kallisti thinks he would enjoy learning how to do surgery but is way too clumsy and shakey to ever be good at it.
17:29:53 <kallisti> it's kind of one of those things where you can't fuck up without massive legal consequences.
17:30:40 * kallisti comes into work hungover. accidentally leaves bonesaw in someone's abdomen.
17:32:12 <nooga> i'm looking for a small language to play
17:32:34 <kallisti> what was I even doing with a bonesaw for a surgery involving the abdomen? no idea.
17:32:59 <nooga> Potion by _why was promising but then I found out that it's unusable
17:33:15 <elliott> pail
17:33:33 <kallisti> network headache.
17:33:50 <elliott> pail
17:34:00 <kallisti> it's like MMO coding (also it isn't hosted anymore, but maybe you can change that!)
17:34:11 <nooga> ?
17:34:52 <nooga> elliott?
17:35:38 <elliott> nooga: http://catseye.tc/projects/pail/
17:36:23 <kallisti> nooga: flogscript
17:36:39 <kallisti> (I'm in a zzo mood)
17:37:12 <kallisti> nooga: if you learn flogscript you'll immediately become a leet golfer
17:37:24 <kallisti> or well, I think that's how it works.
17:40:52 <nooga> no docs
17:43:59 <nooga> writen in php
17:44:01 <nooga> yuck
17:45:13 <Sgeo_> Why would you want docs to be written in PHP?
18:00:15 <elliott> Ha, my feature request got promoted from feature request.
18:07:58 <elliott> Or should that be "demoted".
18:14:33 -!- oerjan has joined.
18:15:40 <oerjan> @messages
18:15:41 <lambdabot> elliott asked 1h 29m 56s ago: Pings? NAMES lists?
18:15:41 <lambdabot> Gregor said 1h 29m 3s ago: Re logs: See raw logs. I can't turn every line into something meaningful, but the raw logs never fail.
18:17:21 <oerjan> elliott: ok maybe not pings. NAMES lists could be useful.
18:18:11 <elliott> oerjan: <elliott> Gregor: You /could/ add unknown lines raw to the text logs (past parsing who sent them). <Gregor> elliott: I /could/ <Gregor> I /choose/ not to ^^
18:18:58 <oerjan> Gregor: it's also somewhat about not knowing that the information _exists_ in the raw logs.
18:19:34 * elliott sigh.
18:19:40 <elliott> oerjan: If you're trying to make me want to dust off ch2, it's working :P
18:19:47 <oerjan> yay :D
18:20:31 <elliott> Depends whether Gregor will allow Haskell onto his bless-ed servers tho >:)
18:21:36 <oerjan> <kallisti> WHY DOES WIKIPEDIA RUIN EVERY FOOD WITH PICTURES OF SHITTY VERSIONS OF THAT FOOD <-- clearly people geeky enough to edit wikipedia only eat at fast food restaurants.
18:22:36 * oerjan unprejudiced
18:23:07 <elliott> -- oerjan "microwave lutefisk" oerjan
18:23:53 <elliott> Gregor: How do you know whether a QUIT results in a user leaving the channel in your log-baker? You don't do regular NAMES queries, so it should require unbounded lookback in the logs to determine that...
18:24:21 <oerjan> i only mentioned those two terms together in order to point out you _cannot_ microwave lutefisk. sheesh.
18:24:44 <elliott> oerjan: yes, and that's why you didn't have any :P
18:24:57 <oerjan> check.
18:25:27 <oerjan> i did, however, have microwave pinnekjøtt.
18:28:03 <oerjan> <kallisti> http://en.wikipedia.org/wiki/Gumbo <-- the creole restaurant i knew about closed years ago :(
18:32:08 <elliott> @src length
18:32:08 <lambdabot> Source not found. :(
18:32:12 <elliott> fucking piece of
18:32:20 <oerjan> wat
18:32:25 <Sgeo_> @source length
18:32:26 <lambdabot> length not available
18:32:36 <Sgeo_> What's the difference between src and source?
18:32:38 <Sgeo_> @src maybe
18:32:39 <lambdabot> maybe n _ Nothing = n
18:32:39 <lambdabot> maybe _ f (Just x) = f x
18:32:40 <oerjan> Sgeo_: *BZZT* WRONG
18:32:40 <Sgeo_> @source maybe
18:32:41 <lambdabot> maybe not available
18:32:54 <oerjan> @source Prelude
18:32:55 <lambdabot> http://darcs.haskell.org/packages/base/Prelude.hs
18:33:03 <Sgeo_> OH
18:33:09 <oerjan> it's for modules. i also suspect it's very outdated.
18:33:31 <oerjan> like, ghc no longer uses darcs
18:33:40 <Sgeo_> > maybe undefined id (Just 5)
18:33:41 <lambdabot> 5
18:33:53 <Sgeo_> I was expecting it to be overly strict
18:33:54 <elliott> oerjan: that's irrelevant, darcs.haskell.org hosts git repos
18:34:01 <oerjan> elliott: okay
18:34:15 <elliott> Sgeo_: it could not be overly strict without explicitly using seq, parametricity...
18:34:41 <elliott> http://darcs.haskell.org/packages/base/ seems to be a checkout of http://darcs.haskell.org/packages/base.git/
18:34:59 <Sgeo_> I guess Haskell doesn't always go left to right in pattern matching?
18:35:53 <elliott> Sgeo_: sure it does.
18:35:57 -!- ais523 has joined.
18:36:14 <Sgeo_> But then why doesn't it die on pattern matching ... oh, I think I get it
18:36:18 <elliott> id a = 42
18:36:27 <elliott> *foo
18:36:27 <Sgeo_> Because to pattern match there, it doesn't need to evaluate it
18:36:30 <elliott> OMG id pattern-matches on its first argument, foo _|_ must = _|_
18:36:47 <elliott> pattern-matching doesn't cause any kind of reduction itself, only discrimination
18:36:49 <elliott> i.e. constructors
18:36:58 <Sgeo_> Ok, thanks
18:37:02 <oerjan> Sgeo_: in maybe n _ Nothing = n, n is an irrefutable pattern and thus not strict. only the last argument is actually evaluated to check the constructor.
18:37:23 <Sgeo_> But there are functions in Haskell that are overly strict, and this makes me sad.
18:38:10 <Sgeo_> oerjan, I get it, thanks
18:38:12 <oerjan> Sgeo_: it annoys me slightly that show for Chars is overly strict
18:38:35 <oerjan> > fix (concatMap show)
18:38:38 <Sgeo_> show (undefined::Char)
18:38:38 <elliott> Sgeo_: i take it you read conal's blog or something
18:38:39 <lambdabot> mueval-core: Time limit exceeded
18:38:40 <Sgeo_> > show (undefined::Char)
18:38:41 <lambdabot> "*Exception: Prelude.undefined
18:38:57 <Sgeo_> elliott, I've read the occasional post
18:39:11 <oerjan> wat
18:39:13 <oerjan> > fix (concatMap show)
18:39:17 <lambdabot> mueval-core: Time limit exceeded
18:39:30 <oerjan> ...what gave the "?
18:39:44 <Sgeo_> > fix show
18:39:45 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\...
18:40:04 <elliott> Sgeo_: Oh, I assumed you were referring to
18:40:07 <elliott> http://conal.net/blog/posts/functional-concurrency-with-unambiguous-choice
18:40:07 <elliott> http://conal.net/blog/posts/merging-partial-values
18:40:15 <elliott> http://conal.net/blog/posts/lazier-function-definitions-by-merging-partial-values
18:40:17 <elliott> http://conal.net/blog/posts/lazier-functional-programming-part-1
18:40:25 <elliott> http://conal.net/blog/posts/lazier-functional-programming-part-2
18:40:29 <Sgeo_> elliott, I had unamb-style stuff in mind, yeah
18:40:33 <oerjan> > show (undefined::Char)
18:40:34 <lambdabot> "*Exception: Prelude.undefined
18:40:39 <Sgeo_> But I think I only read some of those
18:40:40 <oerjan> oh wait of course
18:40:52 <elliott> I don't think it's all that big a deal in practice.
18:41:01 <oerjan> the " is not for the explicit show, but for the implicit one lambdabot uses on the resulting String
18:41:07 <elliott> I'm not the biggest fan of unamb, and the left-to-right behaviour is at least predictable.
18:41:20 <elliott> Also, it really needs to be in the language; HasLub sucks.
18:41:31 <elliott> oerjan: i could have told you that
18:42:32 <elliott> "The unsafePerformIO is actually safe in this situation because amb is deterministic when the precondition of unamb satisfied."
18:42:42 <elliott> Similarly, unsafePerformIO is safe because unsafePerformIO is deterministic when the precondition of unsafePerformIO is satisfied.
18:46:58 -!- oerjan_ has joined.
18:47:53 -!- oerjan has quit (Disconnected by services).
18:47:59 -!- oerjan_ has changed nick to oerjan.
18:48:29 <oerjan> 19:43 oerjan> and the mueval-core timeout prevents any partial result from being printed at all. or...
18:48:32 <oerjan> 19:43 oerjan> > "test" ++ fix id
18:48:38 <oerjan> > "test" ++ fix id
18:48:42 <lambdabot> mueval-core: Time limit exceeded
18:50:48 <Sgeo_> WTF
18:50:53 <Sgeo_> fix isn't in Prelude?
18:50:59 <Sgeo_> @hoogle fix
18:50:59 <lambdabot> Control.Monad.Fix module Control.Monad.Fix
18:51:00 <lambdabot> Data.Fixed module Data.Fixed
18:51:00 <lambdabot> Data.Function fix :: (a -> a) -> a
18:51:00 <oerjan> indeed not
18:51:49 -!- xandy has quit (*.net *.split).
18:51:50 -!- quintopia has quit (*.net *.split).
18:52:39 -!- xandy has joined.
18:52:39 -!- quintopia has joined.
18:53:33 -!- zzo38 has joined.
18:54:44 <elliott> `welcome xandy
18:54:47 <HackEgo> xandy: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
18:56:19 <fizzie> `welcome everyone
18:56:23 <HackEgo> everyone: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
18:56:45 <fizzie> HackEgo: Why thank you.
18:57:38 <elliott> `welcome FireFly
18:57:39 <elliott> oops
18:57:41 <elliott> `welcome fizzie
18:57:42 <HackEgo> FireFly: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
18:57:43 <elliott> `swat FireFly
18:57:44 <HackEgo> fizzie: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
18:57:46 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: swat: not found
19:00:01 <fizzie> oerjan holds the swatopoly.
19:05:37 -!- augur has quit (Remote host closed the connection).
19:09:56 <elliott> hmm, there's no way i'm getting 200 rep today
19:11:10 <oerjan> they have finally caught on to you being a disreputable scoundrel
19:12:17 <elliott> quite. wait, didn't you get mad at me for calling someone a scoundrel once?
19:13:31 <oerjan> i cannot possibly have done such a thing *erases evidence*
19:14:29 <fizzie> oerjan: It would be quite a scoundrely thing to do.
19:14:30 <oerjan> if i did, it would have been under circumstances where it might conceivable have been interpreted seriously.
19:14:38 <oerjan> *ly
19:14:40 -!- Ngevd has joined.
19:15:05 <Ngevd> Hello!
19:15:09 <fizzie> <oerjan> <ehird> now who are you, scoundrel. <-- i'm going to assume you secretly know Tenacity from before, as otherwise i think this channel is _really_ going downhill
19:15:22 <fizzie> (2009-09-07.)
19:15:22 <elliott> oerjan: hm if contravariant functors are (b -> a) -> f a -> f b, are normal functors covariant
19:15:38 <oerjan> ah a newbie. yes, it's a rather bad first channel impression.
19:15:39 <elliott> oerjan: oh right i remember, you had no idea that "scoundrel" was old-timey-sounding :P
19:16:23 <oerjan> yes and maybe.
19:16:42 <elliott> i sure was hyper that day
19:16:45 * elliott stops logreading
19:17:04 <elliott> oerjan: ok, so is there a name for class Cocontrafunctor f where wtfmap :: (a -> b) -> (b -> a) -> f a -> f b
19:17:09 <elliott> where you have both covariant _and_ contravariant parts
19:17:10 <elliott> e.g.
19:17:26 <elliott> data F a b = F (b -> a) (a, b)
19:17:30 <oerjan> i cannot fathom to whom scoundrel would be old-timey-sounding
19:17:34 <fizzie> Cocoafunctor, the sweetest of functions.
19:17:49 <fizzie> oerjan: Allegedly it "evokes images of top hats and curled moustaches."
19:17:56 <elliott> What doesn't.
19:18:01 <elliott> (You realise oerjan was punning?)
19:18:34 -!- olsner has joined.
19:19:06 <Sgeo_> That wtfmap looks useless
19:19:12 <Sgeo_> I mean, what's the b -> a for?
19:19:18 <elliott> Sgeo_:
19:19:18 <elliott> <elliott> where you have both covariant _and_ contravariant parts
19:19:18 <elliott> <elliott> e.g.
19:19:18 <elliott> <elliott> data F a b = F (b -> a) (a, b)
19:19:21 <elliott> hth hand
19:19:37 <elliott> you can't give a Functor or Contrafunctor instance for F, but you can give it a Cocontrafunctor instance
19:19:51 <oerjan> elliott: ah that bifunctor question? i'm sure there's any term other than "bifunctor covariant in the first and contravariant in the second parameter"
19:19:52 * Sgeo_ knows nothing about Contrafunctor
19:19:56 <elliott> indeed I believe _every_ haskell ADT of the right kind has a Cocontrafunctor instance
19:20:06 <elliott> Sgeo_: contramap :: (b -> a) -> fa -> f b
19:20:23 * Sgeo_ blinks
19:20:24 <Sgeo_> Ah, ok
19:20:35 <oerjan> elliott: oh hm wait that wasn't what you were asking
19:20:37 <elliott> Sgeo_: e.g. (a -> Bool) has a Contrafunctor instance
19:20:38 <elliott> oerjan: what question? I thought bifunctors were of kind (* -> * -> *)
19:20:44 <elliott> http://hackage.haskell.org/packages/archive/bifunctors/0.1.2/doc/html/Data-Bifunctor.html
19:21:06 -!- Klisz has joined.
19:21:07 <oerjan> elliott: i just assumed you were asking about a question i'd recently seen in -cafe or somewhere
19:21:21 <elliott> lol
19:21:47 <elliott> hmm... that wtfmap has a flaw
19:21:51 <elliott> or rather
19:21:58 <elliott> I don't know what the law has to be to stop you writing
19:22:20 <elliott> wtfmap f g (a,b) = (a, f (g (f b)))
19:22:31 <elliott> which is ofc not allowed, you should only apply f and g to the right positions, once
19:24:46 <oerjan> <elliott> indeed I believe _every_ haskell ADT of the right kind has a Cocontrafunctor instance <-- i think that's the way free theorems based on parametricity usually look, no?
19:25:19 <elliott> oerjan: er what way
19:25:22 <elliott> sorry, i'm dumb :(
19:25:46 <oerjan> @free f :: (a -> b, a, b)
19:25:46 <lambdabot> (forall p q. h . p = q . g => k p = q) => $map_Triple k g h f = f
19:25:58 <oerjan> wtf
19:26:47 <oerjan> that's ugly
19:27:03 <oerjan> @free f :: (a -> b, a)
19:27:03 <lambdabot> (forall p q. h . p = q . g => k p = q) => $map_Pair k g f = f
19:27:18 <oerjan> ok maybe not
19:27:29 <oerjan> @free f :: a -> b
19:27:30 <lambdabot> h . f = f . g
19:27:32 <nooga> no language
19:28:46 <oerjan> @free f :: [a] -> a
19:28:46 <lambdabot> g . f = f . $map g
19:29:29 * oerjan isn't quite sure what he meant
19:30:20 * elliott too :P
19:30:48 <elliott> what are the Functor laws again? including the ones that are impossible to violate in Haskell
19:31:02 <elliott> oh hmm, it's just fmap id = id isn't it, and that's a free theorem
19:31:46 <Sgeo_> Surely with unsafeCoerce and unsafePerformIO, nothing is impossible to violate?
19:32:00 <Sgeo_> (Well, some things may be impossible to violate)
19:32:27 <Sgeo_> (Like the whatchamacallit that says f _|_ = non-bottom and f non-bottom = _|_ is impossible
19:32:52 <elliott> monotonicity of information, or whatever
19:33:04 <elliott> it's actually stronger than that
19:33:14 <elliott> f _|_ [= f x for all x
19:33:19 <elliott> where [= is a symbol i can't type
19:33:25 <elliott> |_|| but sideways
19:33:42 <Sgeo_> Lessthanorequalto?
19:33:43 <Sgeo_> <=
19:33:56 <elliott> ...no.
19:34:08 <elliott> if you think |_|| turned on its side looks like < with _ below it, you're blind
19:34:20 <elliott> it's less-than-or-equally-defined-as
19:35:05 <fizzie> The Commodore logo?! (Yeah, yeah, that's even further away; but [= is not much farther than the common C=.)
19:37:33 <elliott> =c
19:38:06 <oerjan> elliott: fmap id = id and fmap (f . g) = fmap f . fmap g
19:38:47 <oerjan> it's not _entirely_ a free theorem btw, you could do fmap' f = fmap (f $!)
19:38:52 <oerjan> or wait hm
19:38:58 <Ngevd> Wow, I think I've just understood the . thingy
19:39:09 <oerjan> that doesn't do anything to id
19:40:13 <oerjan> <Sgeo_> (Like the whatchamacallit that says f _|_ = non-bottom and f non-bottom = _|_ is impossible <-- well, with unsafePerformIO and catch, you can cheat for some bottoms
19:40:37 <elliott> oerjan: hmm... so wtfmap id id = id, wtfmap (f . g) (h . i) = wtfmap f h . wtfmap g i
19:40:39 <oerjan> @free (a, a -> Int)
19:40:40 <lambdabot> Pattern match failure in do expression at Plugin/Free/FreeTheorem.hs:54:20-34
19:40:44 <oerjan> argh
19:40:44 <elliott> that second one might ban wtfmap f g (a,b) = (a, f (g (f b))), dunno
19:40:50 <oerjan> @free f :: (a, a -> Int)
19:40:51 <lambdabot> (forall k. h (k . g) = k) => $map_Pair g h f = f
19:41:57 <zzo38> Finally they fixed it I can remove tags from the git
19:43:18 <oerjan> elliott: i suspect you want some swapping in the latter equation
19:43:56 <oerjan> wtfmap (f . g) (h . i) = wtfmap f i . wtfmap g h
19:44:02 <elliott> er, right
19:44:29 <elliott> hmm
19:44:36 <oerjan> and of course only if the right side types
19:44:47 <elliott> duh :P
19:46:21 <oerjan> it _does_ look like a categorical bifunctor map on the incoming end. there's probably some name for it.
19:47:48 <oerjan> that is, if it was wtfmap :: (a -> b) -> (a' -> b') -> bf a b' -> bf b a' it would obviously be one
19:48:54 <oerjan> so what is the categorical term for a bifunctor with its output parameters smushed together :P
19:49:18 <oerjan> hm...
19:49:54 <oerjan> elliott: for any adt you could probably separate the covariant and contravariant parts into two different parameters and get a genuine bifunctor that way
19:49:59 <elliott> oerjan: i find that a fairly odd way of thinking about it, even if the types do match up :P
19:50:00 <elliott> hm
19:50:04 <elliott> so turn
19:50:19 <elliott> data F a = F (a -> Bool) a
19:50:20 <elliott> into
19:50:23 <elliott> data F a b = F (a -> Bool) b
19:50:24 <elliott> ?
19:50:40 <oerjan> (incidentally strict fields can mess up the exact functor laws, i found the other day)
19:51:02 <oerjan> elliott: yeah
19:52:27 <elliott> oerjan: hm I suppose you could do
19:52:44 <elliott> class Cocontra f where type Split f :: * -> * -> *; to :: f a -> Split f a a; fro :: Split f a a -> f a
19:52:45 <elliott> or something
19:53:01 <oerjan> heh
19:53:22 <zzo38> I think the Functor laws are simply that it is an endofunctor from objects (x) to objects (f x) isn't it? While Arrow laws for arr are that it is a functor from (->) category to another category with the same objects isn't it?
19:54:22 <zzo38> That is why I think it should be generalized to any input category and separate arr from the other things in Arrow
19:56:43 <zzo38> oerjan: How do strict fields mess up the exact functor laws?
19:58:15 -!- DCliche has joined.
19:59:44 <oerjan> zzo38: say if you have data T a = T1 !a | T2 , then you cannot get fmap (const ()) . fmap undefined = fmap (const ()) because fmap undefined will wipe out the constructor
20:01:22 -!- Klisz has quit (Disconnected by services).
20:01:24 -!- DCliche has changed nick to Klisz.
20:01:33 <zzo38> But then, you are having fmap undefined anyways so it doesn't completely matter depending on opinion of such thing; the laws only have to work when defined, I think.
20:01:59 <oerjan> zzo38: for many types such as [] and Maybe, the laws work always
20:02:23 <zzo38> Yes
20:02:49 <zzo38> But still, that is simply that you use strict stuff, can cause lazy stuff to stop working
20:02:55 <zzo38> It is expected.
20:06:43 <Gregor> Feh, OS X's X11's fonts seem to have become screwy.
20:11:45 <elliott> 150 over less than 4... yeah, not happening today.
20:12:40 <Gregor> Hahahah a couple screaming, cursing and crying at each other in an airport.
20:12:52 <elliott> Hil...arious?
20:12:58 <Gregor> I'm glad I so enjoy the suffering of others 8-D
20:20:05 <nooga> no language for me
20:20:34 <oerjan> nooga: Itflabtijtslwi, hth
20:21:08 * oerjan le caqulesse evilment
20:35:55 -!- Sgeo_ has quit (Read error: Connection reset by peer).
20:36:07 -!- Sgeo has joined.
20:55:07 <Ngevd> It's Alan Turing year
20:55:22 <Ngevd> Let's create as many imaginitively Turing-Complete esolangs as we can!
20:57:01 <olsner> isn't that what we always do?
20:57:13 <Ngevd> Let's make even more!
20:58:44 <ais523> have we had an imaginatively TC esolang for a while?
20:58:57 <Ngevd> Possibly Brook?
20:59:02 <ais523> pretty much every TC lang is TC for one of a few simple reasons
20:59:07 <Ngevd> It's not been proven TC yet
20:59:10 <Ngevd> Also, Geom?
20:59:17 <ais523> hmm, remind me of how http://esolangs.org/wiki/Brook works again?
21:00:59 <Ngevd> It's a simple queue based linear-bounded automaton except for the c and C commands
21:01:22 <Ngevd> c pushes a char into the next stream, C pushes a number
21:01:44 <Ngevd> As soon as a stream has enough characters to be executed unambiguously, it is
21:02:04 <ais523> and the original keeps executing? or stops?
21:02:20 <Ngevd> The original pauses until the one below it can't keep on going
21:02:28 <ais523> ah, OK
21:02:45 <ais523> so it's a bit like Muriel, but more awkward
21:02:49 <Ngevd> It's got no explicit conditional or infinite loops
21:03:01 <Ngevd> Yes
21:03:08 <Ngevd> Or is implicit the word I want?
21:04:02 <Ngevd> Point is, it's tricky to make it loop forever or on a condition
21:04:21 <ais523> right, I see
21:04:42 <ais523> so the problem is, that it has loops, but it's not obvious that it has conditionals
21:05:28 <Ngevd> Conditionals are comparatively easy
21:05:34 <Ngevd> It's infinites that aren't
21:06:10 <Ngevd> Well, I say "easy"
21:06:45 <Ngevd> It's impossible to give any information to a higher stream
21:07:04 <Ngevd> Unless you give the user instructions to input any output
21:07:08 <Ngevd> Which is cheating
21:08:09 <Ngevd> To do a conditional, you just do C, followed by instructions to write the rest of the program
21:08:26 <Ngevd> As 0(blah) doesn't run blah, but 1(blah) does
21:09:47 <Ngevd> The article really needs a complete rewrite
21:10:33 <Phantom_Hoover> Esolangs?? What is this witchcraft?
21:10:55 <Ngevd> I had a really weird dream last night involving witchcraft
21:10:58 <Ngevd> And US politics
21:11:04 <Phantom_Hoover> `quote dream
21:11:06 <ais523> Ngevd: well, the idea is you don't go to higher streams at all, surely?
21:11:08 <HackEgo> 190) <zzo38> catseye: Please wake up. Not recorded for this timezone. The big spider is not your dream \ 285) <nddrylliog> back to legal tender, that expression really makes me daydream. Like, there'd be black-market tender. Out-of-town hug shops where people exchange tenderness you've NEVER SEEN BEFORE. \ 297) <Phantom__Hoover> Gregor, yeah, but Purdue has poultry science facilities beyond the dreams of avarice.
21:11:09 <ais523> just do it Muriel-style
21:11:18 <Ngevd> Hmm, yes
21:11:25 <Phantom_Hoover> `quote singularitarians
21:11:27 <HackEgo> 786) <Phantom_Hoover> I had a dream last night where I got hit by a van but the van had a brain uploader in it and I was uploaded and I angsted because I was stuck spending eternity with singularitarians?
21:11:36 <Ngevd> `quote malaria
21:11:40 <HackEgo> 497) <monqy> itidus20: i saw a dancing cgi skeleton named malaria. i danced and played with him.
21:11:56 <Phantom_Hoover> `quote balloon
21:11:59 <HackEgo> No output.
21:12:14 <Ngevd> `quite
21:12:17 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: quite: not found
21:12:21 <Ngevd> `quote
21:12:25 <HackEgo> 412) <Phantom_Hoover> The eigenratio of reality has to be enormous, though.
21:12:32 <Ngevd> `? Taneb
21:12:36 <HackEgo> Taneb is not actually Ngevd, no matter what you may have heard.
21:12:41 <Ngevd> `? Ngevd
21:12:45 <HackEgo> B./mf\j.R.X-8.t.k`fc.:{bR;OF.b:n2bUa!c.
21:13:05 <Ngevd> That garble is so reassuring
21:13:43 <Phantom_Hoover> Weren't you there when that was defined?
21:13:48 <Ngevd> Yes
21:13:48 <Phantom_Hoover> `ls
21:13:52 <HackEgo> Mineso \ bin \ canary \ karma \ lib \ main \ min.sh \ paste \ quotes \ share \ typetest.hs \ wisdom
21:13:58 <Phantom_Hoover> `ls -l wisdom
21:14:02 <HackEgo> ls: invalid option -- ' ' \ Try `ls --help' for more information.
21:14:11 -!- pikhq has joined.
21:14:18 * Phantom_Hoover frowns
21:14:56 <nooga> `? nooga
21:15:02 <Ngevd> `ls wisdom
21:15:05 <HackEgo> ​? \ ais523 \ augur \ banach-tarski \ c \ cakeprophet \ category \ coppro \ egobot \ elliott \ esoteric \ everyone \ finland \ finns \ fizzie \ flower \ friendship \ functor \ fungot \ glogbot \ gregor \ hackego \ haskell \ ievan \ intercal \ itidus20 \ itidus21 \ kallisti \ lifthrasiir \ mad \ misspellings of croissant \ monad \ monads \ monoid \ monqy \ ngevd \ nooga \ oerjan \ oklopol \ phantom___hoover \ phantom__hoover
21:15:15 <nooga> hm
21:15:30 <ais523> no phantom hoover with one underscore?
21:15:36 <ais523> `? phantom_hoover
21:15:39 <HackEgo> Phantom_Hoover is a true Scotsman and hatheist.
21:15:50 <HackEgo> nooga hate OS X. NOOGA SMASH.
21:15:55 <ais523> oh, clearly it just ended after a while
21:16:23 <Phantom_Hoover> `run ls wisdom | paste /dev/stdin
21:16:27 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.24186
21:16:30 <Phantom_Hoover> (I know, I have no idea what I'm doing.)
21:16:35 <Ngevd> `? haskell
21:16:39 <HackEgo> Haskell is preferred by 9 out of 10 esoteric programmers. Ask your GP today! http://learnyouahaskell.com/
21:16:44 <olsner> `? oklopol
21:16:48 <HackEgo> oklopol "so i hear these blogs are getting popular, people like writing about their lives and shit. on this thing called the internet which is like a neural network only really stupid."
21:16:48 <Phantom_Hoover> That's inaccurate.
21:17:00 <Ngevd> `? friendship
21:17:03 <HackEgo> friendship wisdom
21:17:04 <Phantom_Hoover> Oh, wait, do they call them GPs in the states?
21:17:11 <Phantom_Hoover> `? u
21:17:13 <HackEgo> u monad?
21:17:17 <Ngevd> `? monad
21:17:20 <Phantom_Hoover> `? monad
21:17:20 <HackEgo> Monads are just monoids in the category of endofunctors.
21:17:24 <HackEgo> Monads are just monoids in the category of endofunctors.
21:17:25 <Phantom_Hoover> `? monoid
21:17:28 <HackEgo> Monoids are just categories with a single object.
21:17:36 <Phantom_Hoover> :D
21:17:37 <Ngevd> `? misspellings of croissant
21:17:40 <HackEgo> misspellings of crosant? ¯\(°_o)/¯
21:17:58 <Phantom_Hoover> `run cat wisdom/mis*
21:18:01 <HackEgo> misspellings of crosant? ¯\(°_o)/¯
21:18:19 <Ngevd> `? quine
21:18:22 <HackEgo> ​`? quine
21:18:32 <Ngevd> `? zzo38
21:18:35 <HackEgo> zzo38 is not actually the next version of fungot, much as it may seem.
21:18:49 <Ngevd> `? banach-tarski
21:18:53 <HackEgo> ​"Banach-Tarski" is an anagram of "Banach-Tarski Banach-Tarski".
21:18:57 <Ngevd> :D
21:19:00 <Phantom_Hoover> `? php
21:19:03 <HackEgo> PHP is preferred by 9 out of 10 idiots. Ask your GP today! [Website redacted]
21:19:14 <Ngevd> `? wiki
21:19:17 <HackEgo> The wiki is at http://esolangs.org/wiki
21:19:24 <Ngevd> `? you
21:19:27 <HackEgo> you a haskell
21:19:32 <Ngevd> `? HackEgo
21:19:33 <Phantom_Hoover> `learn PHP is preferred by 9 out of 10 idiots, and past elliott. Ask your GP today! [Website redacted]
21:19:35 <HackEgo> HackEgo, also known as HackBot, is a bot that runs arbitrary commands on Unix. See `help for info on using it. You should totally try to hax0r it! Make sure you imagine it's running as root with no sandboxing.
21:20:20 <HackEgo> I knew that.
21:20:26 <Phantom_Hoover> `cat wisdom/* | paste /dev/stdin
21:20:29 <HackEgo> cat: wisdom/* | paste /dev/stdin: No such file or directory
21:20:34 <Phantom_Hoover> `run cat wisdom/* | paste /dev/stdin
21:20:40 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.31214 \ /hackenv/bin/paste: line 14: 282 File size limit exceededcat "$PASTE" > $HACKENV/paste/paste."$PASTENUM"
21:21:06 <Phantom_Hoover> Oh, of course, ngevd.
21:21:47 <Ngevd> Have I caused bad things
21:21:59 <Ngevd> `? Ngevd
21:22:02 <HackEgo> ​Y.su).R.$f1&3W....!d[Q.$Q.$zKMP5'Ϫ#.e.3B>u.JS׽βMAlʰ&Hpaj0..Dz
21:22:33 <fizzie> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11204 <- head -n 1 wisdom/*
21:23:41 <Sgeo> Uh
21:23:45 <Sgeo> Why is stuff crashing on me?
21:23:47 -!- Sgeo has quit (Remote host closed the connection).
21:23:57 <Ngevd> ...
21:25:50 <Phantom_Hoover> Ngevd, the paste failed because your wisdom entry is linked to /dev/null, and cat was trying to print all of it into paste, which was upset about it.
21:26:08 <Ngevd> Blame Sgeo
21:26:14 <Ngevd> `? Sgeo
21:26:17 <HackEgo> Sgeo invented Metaplace sex.
21:26:47 <nooga> uuuh
21:27:12 <elliott> <Phantom_Hoover> Ngevd, the paste failed because your wisdom entry is linked to /dev/null, and cat was trying to print all of it into paste, which was upset about it.
21:27:14 <elliott> Phantom_Hoover: *urandom
21:27:22 <Phantom_Hoover> Argh, yes.
21:27:38 -!- Sgeo has joined.
21:28:06 <Ngevd> How hard would it be to make something like HackEgo, but DOS-based?
21:29:23 <ais523> reasonably hard, I think
21:29:37 <ais523> DOS is not all that good in terms of security features
21:31:43 <elliott> easy
21:31:45 <elliott> just run it in a VM
21:32:24 <ais523> there are DOS VMs that run on DOS?
21:33:32 <elliott> do they have to run on DOS?
21:33:44 <ais523> it wouldn't be DOS-based if they didn't
21:33:47 <elliott> but yes, I suspect so
21:34:04 <elliott> ais523: how do you know HackEgo doesn't run on Windows?
21:34:33 <ais523> elliott: I don't for certain, although it seems unlikely; but I wouldn't call it purely UNIX-based if it did
21:34:51 <elliott> you inserted a word "purely" not in Ngevd's statement
21:35:17 <ais523> elliott: I was disambiguating what I said; I interpreted Ngevd's statement with that possible meaning
21:37:07 <elliott> fair enough
21:37:08 <elliott> I doubt he meant that
21:37:54 <Ngevd> I think elliott is thinking what I'm thinking
21:38:08 <Ngevd> And now I've got the theme to Bananas in Pyjamas stuck in my head
21:38:35 <oerjan> sure Ngevd, but where are you going to find seven goats and a hippopotamus at this time of night?
21:39:15 <elliott> hexham
21:39:29 <oerjan> how convenient.
21:39:33 <Phantom_Hoover> oerjan, argh, what's that a reference to.
21:39:44 <Ngevd> Pinky and the Brain
21:40:14 <oerjan> a very loose reference
21:40:57 <Ngevd> Bananas, in Pyjamas, are coming down the stairs
21:41:06 <Ngevd> Bananas, in Pyjamas, are coming down in pairs
21:41:17 <Ngevd> Bananas, in Pyjamas, are chasing teddy bears
21:41:32 <Ngevd> Because on Tuesdays the try to cath them unawares
21:41:38 <Ngevd> s/the/they/
21:42:05 <fizzie> But "cath" still?
21:42:19 <Ngevd> s/cath/catch/
21:42:20 <oerjan> it's a medical procedure
21:42:48 <Ngevd> I think, in retrospect, it is obvious why I am so weird
21:43:16 <fizzie> Yes, it's the bananas.
21:44:20 <elliott> Ngevd: You're not that weird.
21:44:40 <Ngevd> elliott, I've heard stories about you
21:44:43 -!- DCliche has joined.
21:47:54 -!- Klisz has quit (Ping timeout: 252 seconds).
21:47:58 <ais523> Ngevd: gah, I've heard that too
21:48:02 <ais523> is it a nursery rhyme?
21:48:09 <ais523> it sort-of sticks in the head because it's so stupid
21:48:12 <Ngevd> It's the theme to a children's TV show
21:48:25 <Ngevd> Bananas in Pyjamas
21:48:30 <Ngevd> I used to love it when I was little
21:55:54 -!- augur has joined.
21:59:41 <nooga> do you think that LOOSE is a good name for a military grade RTOS?
22:00:04 <Ngevd> No
22:02:05 <nooga> oh
22:02:20 <Ngevd> Because it looks too much like LOSE
22:13:32 <fizzie> LooseThos, on the other hand...
22:18:43 <elliott> lossy thossle
22:24:16 <zzo38> I made a TeX program for making binary specials in DVI files
22:25:02 <zzo38> http://sprunge.us/EVHW
22:28:44 -!- zzo38 has quit (Remote host closed the connection).
22:29:43 -!- myndzi has quit (Read error: Connection reset by peer).
22:29:59 -!- cswords has joined.
22:30:08 -!- cswords has quit (Read error: Connection reset by peer).
22:34:08 -!- myndzi has joined.
22:34:26 <Sgeo> elliott, kallisti Phantom_Hoover update
22:34:37 <Ngevd> And Ngevd
22:35:23 * Sgeo mentally notes to add Ngevd to the update list.
22:36:19 <Ngevd> Could we define a hackego thing so we can just do `mspa and it will say "[names] update"
22:36:55 <elliott> no
22:37:24 <oerjan> elliott hates automation of tasks
22:38:17 <elliott> yes
22:38:22 <oerjan> also abbreviation
22:40:17 <elliott> yes
22:52:57 -!- pikhq has quit (Ping timeout: 240 seconds).
22:53:06 -!- pikhq has joined.
23:07:52 -!- nooga has quit (Ping timeout: 252 seconds).
23:09:43 <Phantom_Hoover> :t (<#>)
23:09:55 <lambdabot> Not in scope: `<#>'
23:16:27 <Sgeo> Ngevd, elliott Phantom_Hoover kallisti update
23:16:49 <Ngevd> Thanks
23:27:27 <Sgeo> yw
23:27:31 -!- oerjan has quit (Quit: Good night).
23:27:38 <elliott> http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.7.9472 <-- @ design document
23:33:31 -!- Ngevd has quit (Ping timeout: 255 seconds).
23:46:41 -!- sebbu2 has joined.
23:46:42 -!- sebbu2 has quit (Changing host).
23:46:42 -!- sebbu2 has joined.
23:48:32 -!- sebbu has quit (Ping timeout: 252 seconds).
23:52:40 -!- pikhq has quit (Ping timeout: 240 seconds).
23:52:52 -!- pikhq has joined.
23:58:10 -!- derdon has quit (Remote host closed the connection).
2012-01-02
00:00:04 -!- Patashu has joined.
00:08:57 -!- augur has quit (Ping timeout: 240 seconds).
00:10:40 <Sgeo> elliott, kallisti Phantom_Hoover update no Ngevd because he's not here
00:12:12 -!- augur has joined.
00:12:58 <elliott> Gregor: Ping
00:19:54 -!- quintopia has quit (Ping timeout: 260 seconds).
00:20:43 -!- quintopia has joined.
00:23:40 -!- pikhq_ has joined.
00:24:15 -!- pikhq has quit (Ping timeout: 276 seconds).
00:27:59 <coppro> `cat wisdom/coppro
00:28:01 <HackEgo> coppro prefers his nickname, Pooppy.
00:28:16 <Phantom_Hoover> `cat wisdom/ngevd
00:28:20 <HackEgo> ​=pzҶ*Gm...Zo'.LƖ2..`W0O.G?H.7x=9h..> #I.nb.s#mN~s>.2. ?.p?..b6$p9.wVgD.\...jMN*uaD.(..j+vߨnQ \ ^&4,.>&G*R}N!!1.|p'A(;iEﺾ.}.kAiyWb%cM.JE4XMQ_.2.W5^^..9..\,[!DP[Djx^.:Nߩsf..g벍?.?̥"tq.Ƚ2....v0.<θ¹y=I^^.9{r:c;'{нi@FU/Jv...a.-v
00:36:34 <elliott> coppro: *`? coppro
00:37:50 <coppro> elliott: what
00:41:58 <elliott> `? coppro
00:42:01 <HackEgo> coppro prefers his nickname, Pooppy.
00:42:15 * Sgeo assumes that Gregor set that
00:42:16 <coppro> ah
00:42:18 <coppro> meh
00:42:23 <coppro> Sgeo: you assume correctly
00:42:40 <Phantom_Hoover> `log `learn coppro
00:43:08 <HackEgo> 2012-01-02.txt:00:42:40: <Phantom_Hoover> `log `learn coppro
00:46:31 <elliott> @hoogle atomicModifyIORef
00:46:32 <lambdabot> Data.IORef atomicModifyIORef :: IORef a -> (a -> (a, b)) -> IO b
00:55:48 <elliott> Sgeo: 16:08:22 <Sgeo> Is hSetBuffering stdin NoBuffering >> hSetBuffering stdout NoBuffering supposed to work on Windows?
00:55:49 <elliott> Sgeo: No.
00:56:00 <elliott> http://hackage.haskell.org/trac/ghc/ticket/2189
00:56:14 <Sgeo> ty
00:58:00 <shachaf> elliott: Are you reading #haskell logs?
00:58:08 <shachaf> Instead of just joining the channel?
00:58:16 <shachaf> Well, I suppose you're there now.
00:58:26 <shachaf> If only there was a mechanism for posting directly into the logs.
00:59:00 <elliott> shachaf: I read logs to figure out why it was so silent.
00:59:44 <shachaf> elliott: Curses, you've figured out our "silence as soon as elliott joins the channel" plan.
01:03:07 <coppro> it would be terrible if someone invented a mechanism to post directly into the logs
01:03:11 <coppro> such as by saying things in the channel
01:05:21 <elliott> coppro: http://www.youtube.com/watch?v=xECUrlnXCqk
01:09:03 * coppro bookmarks
01:09:15 <Sgeo> elliott, :( at bug lasting for so long
01:11:03 <elliott> Sgeo: It's the touch of Deewiant.
01:11:11 <elliott> Every compiler bug he touches never gets fixed, ever.
01:11:16 <elliott> I know this because n=2.
01:18:06 <shachaf> The way too fix "writeFile complains about too-many-open-files" is obviously to convert Char to Word8.
01:18:22 <Sgeo> WTF?
01:19:05 <elliott> shachaf: His message implies to me that he hadn't actually written it yet.
01:19:14 <elliott> <mmos1127_> I'm a bit unclear, but tell you what I've write it using String and System.IO.writeFile and if it crashes becasue too many files are open, then I'll know I need to change something.
01:19:19 <elliott> I think "I've" should be "I'll".
01:30:17 <Phantom_Hoover> WTF, Cracked only started in its current form in 2007?
01:30:32 -!- Darth_Cliche has joined.
01:31:02 <Phantom_Hoover> It's gone from 'crappy ripoff of Mad' to 'crappy ripoff of Maxim' to 'respected(ish), well-known website' very quickly.
01:31:39 <elliott> FSVO respected.
01:32:28 <Phantom_Hoover> Well, as in the name is well-known and there isn't any great demerit associated with it.
01:33:54 -!- DCliche has quit (Ping timeout: 240 seconds).
01:42:01 -!- sebbu2 has changed nick to sebbu.
01:42:08 * Phantom_Hoover → sleep
01:42:10 -!- Phantom_Hoover has quit (Quit: Leaving).
01:42:31 <shachaf> New rule: Balance ":-(" and ":-)" smileys.
01:42:51 <monqy> noses :-(
01:43:02 <monqy> :-( :-( :-(
01:44:10 * elliott enjoys watching Sgeo detail all the ways in which Active Worlds' API is the most broken piece of shit ever without actually being able to bring himself to say "it's a terrible library for a terrible game".
01:44:20 <elliott> Sgeo: Also seriously why don't you just implement the network protocol.
01:44:35 <Sgeo> It's a terrible library for a good game.
01:44:44 <Sgeo> elliott, against the TOS I think.
01:44:51 <Sgeo> Also, I don't know it
01:45:04 <elliott> Sgeo: Against the TOS in a completely indistinguishable way.
01:45:09 <elliott> Also, no, it's a terrible library for a terrible game.
01:45:32 <Sgeo> elliott, there are things you cannot do with the SDK that you can do with the network protocol..
01:47:09 <elliott> So don't do those.
01:49:00 -!- zzo38 has joined.
01:51:11 -!- zzo38 has set topic: This cannel Copywrong 0 YOLD Rogger Sarcridh - All lights reversed (Except for things copyrighted by Gregor Richards) | http://codu.org/logs/_esoteric/.
01:52:34 <shachaf> zzo38: Good point.
01:53:42 -!- zzo38 has set topic: This channel Copywrong 0 YOLD Rogger Sarcridh - All lights reversed (Except for things copyrighted by Gregor Richards) | http://codu.org/logs/_esoteric/.
01:57:46 <zzo38> TeX can make file with binary specials although DVItype will show a message about non-ASCII specisl if you do that.
01:58:57 <elliott> shachaf can't make file with binary specials.
02:00:21 <shachaf> Binary specials! Eight bits for the price of seven.
02:01:06 <zzo38> I did it because of the printer drivers for the new computer I will make, are all DVI-based, so it uses what are called "Black Associates specials" which are binary data in DVI specials (although a DVI file with no specials will still print perfectly OK). Such as, colors (CMYK + grayscale value + pure black/white only value)
02:02:08 <zzo38> However, TeX has no command built-in for converting numbers to binary data to specials, so I wrote macros to do that (TeX is very powerful and can do these kind of things!).
02:02:48 <zzo38> So, I can put 1-byte numbers, 2-byte numbers, and 4-byte numbers. All are big-endian to be consistent with the format of other numbers in DVI file.
02:06:45 <elliott> Well, #haskell is still bad.
02:09:51 <shachaf> elliott: Maybe it's because zzo38 is no longer in there.
02:10:13 <elliott> Yes.
02:12:14 <Sgeo> elliott, am I helping or hurting?
02:12:25 <elliott> Why do people ask questions like that?
02:13:11 <elliott> The most likely answers range from lukewarm to negative.
02:16:09 -!- DCliche has joined.
02:19:16 -!- Darth_Cliche has quit (Ping timeout: 252 seconds).
02:35:39 <zzo38> I think #haskell is bad too they don't like to answer my questions, sometimes other thing they didn't answer either
02:36:44 <elliott> shachaf: We have consensus.
02:44:25 <shachaf> elliott: Questions like what?
02:45:39 -!- oklopol has joined.
02:45:42 <oklopol> oasijfoiasjdfoaijwrglkjwelgkjweaklgja
02:45:47 <oklopol> okokokokokokokokokokokokoko
02:45:50 <oklopol> okokokokokokokokoko
02:45:52 <oklopol> okokokokokko
02:45:54 <oklopol> ooijoijadj
02:50:02 <elliott> hi oklopol
02:50:08 <elliott> shachaf: Like <Sgeo> elliott, am I helping or hurting?.
02:50:19 <elliott> oklopol: how many phds do you have now
02:50:24 <oklopol> hi elliott, are you the same elliott i talked to last time i was here?
02:50:27 <elliott> no
02:51:00 <oklopol> you really look like him though
02:51:10 <oklopol> i have zero (0) phds
02:51:16 <oklopol> :(
02:51:20 <elliott> what
02:51:21 <elliott> lol
02:51:25 <elliott> still? seriously?
02:51:28 <oklopol> yes.
02:51:32 <oklopol> are you in a university yet?
02:52:00 <elliott> well no, i'm skipping the university thing and just getting the phd.
02:52:07 <oklopol> oh okay
02:52:07 <elliott> because i'm efficient, unlike you
02:52:50 <shachaf> elliott: Don't PhDs typically involve universities too?
02:53:18 <elliott> shachaf: That's what they tell everyone to keep out the riff-raff, but if you're actually any good you just get the Ph.D. direct.
02:53:23 <oklopol> i have made peace with failing at life.
02:53:26 <elliott> Of course people like oklopol never find out the real truth.
02:53:38 <elliott> They must resign themselves to the fake truth.
02:53:55 <oklopol> yes, i just do what people tell me to and try to make the best of it.
02:54:26 <shachaf> elliott: Direct from The Elliott PhD Authority?
02:54:29 <oklopol> the drugs help
02:54:39 <oklopol> and the fight club
02:55:08 <elliott> shachaf: Yes.
02:56:36 <coppro> shachaf: University of Phoenix, obv
03:00:20 <elliott> shachaf: I fixed a silent type error in some unsafeCoerce-using code today.
03:00:24 <elliott> Thank god I use Haskell!
03:01:44 -!- Klisz has joined.
03:04:29 -!- DCliche has quit (Ping timeout: 252 seconds).
03:07:41 <shachaf> elliott: Was it *your* unsafeCoerce-using code?
03:08:07 <shachaf> If so, I have no sympathy for you.
03:08:19 <oklopol> i have enough sympathy for everyone
03:08:40 <elliott> shachaf: Yes.
03:08:44 <elliott> shachaf: Well, sort of.
03:08:52 <shachaf> Take oklopol's sympathy, then.
03:08:56 <elliott> I wrote about a third of it.
03:08:56 -!- NihilistDandy has joined.
03:09:07 <shachaf> Did you introduce unsafeCoerce to it?
03:09:20 <elliott> No. But I did suggest doing so.
03:09:25 <elliott> Although so did other people at the time too.
03:09:37 <elliott> (It previously abused an IORef and unsafePerformIO for the purpose.)
03:09:45 <elliott> (Not the polymorphic wossname trick, though.)
03:09:57 <Sgeo> It should be possible to implement ST with just unsafeCoerce and Any, right?
03:10:09 <elliott> And no other functions or types? No.
03:10:17 <elliott> You'd need (->) at the very least.
03:10:33 <Sgeo> I meant, as the only unsafe features.
03:10:41 <Sgeo> All the safe ones allowed too
03:10:51 <Sgeo> Besides ST
03:11:23 <elliott> You can implement ST with just unsafePerformIO, too.
03:11:33 <elliott> But yes, you can construct STMap with unsafeCoerce and Any.
03:11:43 <elliott> shachaf: Did you hear reactive-banana is getting dynamic event switching???
03:16:07 -!- DCliche has joined.
03:17:14 <oklopol> maybe the logo of reactive-banana should be an actual radioactive banana. it'd of course look like a normal banana but it would actually be delivered to you by mail when you go to the website with some glue so you can stick it on your monitor and your death would be the difference between radioactive and not.
03:19:21 -!- Vorpal has joined.
03:19:22 <elliott> I could forward that suggestion onto the developer if you'd like.
03:19:28 <oklopol> you should
03:20:25 -!- Klisz has quit (Ping timeout: 276 seconds).
03:20:38 <oklopol> well, perhaps you can't make it a surjection since i don't think great ideas are extensions of humans.
03:20:57 * oklopol makes the best math jokes
03:21:27 <elliott> we love you oklopol
03:22:05 <oklopol> maybe i should've said epimorphism since the term extension is only used for morphisms of dynamical systems afaik.
03:22:15 <oklopol> (epimorphism instead of surjectiom)
03:22:19 <oklopol> *surjection
03:22:28 <oklopol> speaking of math, i watched an episode of numb3rs today
03:22:54 <elliott> did you see the irc boats
03:23:20 <oklopol> the first episode was more like 57471571c5
03:23:35 <oklopol> the irc boats aren't in the first ep
03:24:22 <elliott> `addquote <oklopol> speaking of math, i watched an episode of numb3rs today <oklopol> the first episode was more like 57471571c5
03:24:25 <HackEgo> 791) <oklopol> speaking of math, i watched an episode of numb3rs today <oklopol> the first episode was more like 57471571c5
03:25:41 -!- cswords has joined.
03:25:52 -!- cswords has quit (Read error: Connection reset by peer).
03:25:56 <oklopol> the idea in the episode was that there had been 13 rapes plus some murder on the side and the cop's brother is a "world-class mathematician" and he made a formula that told them where the rapist probably lived. he lived there.
03:26:43 <elliott> congratulations, you have now seen every episode of numb3rs
03:26:53 <oklopol> well actually he didn't and then their dad told them herp derp maybe he occasionally rapes ppl near work to save the rape commute.
03:27:22 <oklopol> so he was like omgomgomg so simple and predicted *two* zones
03:27:43 <oklopol> and one was where he lived and one was where he went to work
03:28:42 <oklopol> also the first cluster was where he used to live. so 13 points were enough to pinpoint three locations around which the guy had occasionally done some raping.
03:29:46 <oklopol> probably i'd be so hooked after a few episodes, but i'm not sure i want to be associated with this devil porn.
03:34:05 <oklopol> what i want is a show where in the pilot they try to prove that a space is compact. their only clue is that it is sequentially compact, but the space is clearly not metric. naturally they must consult The Oracle.
03:42:01 <zzo38> Will this do as a syntax for a MML compiler? data Token = Number Int | Name String | Block [Token] | Note Note | Text String | Bar deriving (Eq, Show); data Note = Note { noteLetter :: Char, noteOct :: Int, noteAcc :: Int, noteLength :: Maybe Int, noteVol :: Maybe Int } deriving (Eq, Show);
03:42:43 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com).
03:43:15 -!- NihilistDandy has joined.
03:51:14 <Sgeo> kallisti, elliott update. elliott, kallisti update.
04:11:21 -!- azaq23 has joined.
04:11:38 -!- azaq23 has quit (Max SendQ exceeded).
04:12:03 -!- azaq23 has joined.
04:12:08 -!- azaq23 has quit (Changing host).
04:12:08 -!- azaq23 has joined.
04:42:26 -!- Darth_Cliche has joined.
04:43:01 <zzo38> Have you ever play single player Scrabble?
04:45:21 -!- itidus21 has joined.
04:46:05 -!- DCliche has quit (Ping timeout: 249 seconds).
04:48:40 <oklopol> nope
04:53:08 <zzo38> The rules are the same as two players, except that passing is not allowed.
04:56:43 <elliott> passing should be allowed imho
04:57:48 <zzo38> Sometimes passing is allowed, but if you do, the game immediately ends and you lose points according to your letters in your hand (after replacements are drawn).
04:58:01 <elliott> cool
04:58:21 <zzo38> Another rule sometimes used is that there is a time limit for the entire game, and the game also ends if time runs out.
05:00:26 <Vorpal> zzo38, you could also limit the number of times you can pass?
05:01:18 <zzo38> Vorpal: Yes, I suppose that is another possible idea you could use. (Although if there is a time limit, generally you are still not allowed to pass; you could make a pass limit with or without a time limit)
05:19:42 <zzo38> Once I read somewhere describing type systems of programming languages like Haskell and so on as "Presbyterian" and "Catholic", on some article describing "Roman containers" although I did not understand all of the notation used
05:30:38 <elliott> istr that
05:34:07 <zzo38> I think Parsec's "choice" function should really belong to Control.Applicative instead.
05:34:39 <zzo38> It is a fold with <|>
05:39:21 <Sgeo> @hoogle (<|>)
05:39:21 <lambdabot> Control.Applicative (<|>) :: Alternative f => f a -> f a -> f a
05:39:22 <lambdabot> Text.Parsec.Prim (<|>) :: (ParsecT s u m a) -> (ParsecT s u m a) -> (ParsecT s u m a)
05:39:22 <lambdabot> Text.ParserCombinators.Parsec.Prim (<|>) :: (ParsecT s u m a) -> (ParsecT s u m a) -> (ParsecT s u m a)
05:40:06 <zzo38> Sgeo: They are all the same, Parsec's one is just for Parsec only
05:40:29 <Sgeo> zzo38, I just wasn't certain that <|> was in Control.Applicative
05:55:13 <zzo38> I do like Parsec very much. Even though they did define the Applicative and Alternative instance for Parsec, the designers of that system seem to not use them, from what I can see.
05:56:35 <zzo38> And why did they define their own operators with the same names and functions as the Control.Applicative ones anyways?
06:05:33 <elliott> zzo38: asum
06:05:35 <elliott> @hoogle asum
06:05:36 <lambdabot> Data.Foldable asum :: (Foldable t, Alternative f) => t (f a) -> f a
06:05:49 <elliott> zzo38: and because Parsec is actually the source of the Alternative operators
06:05:53 <elliott> so, historical reasons
06:06:13 <zzo38> O, that is why. Shouldn't they fix it by now, though?
06:06:37 <elliott> they should probably re-export the polymorphic versions
06:06:50 <zzo38> elliott: Yes, that is probably what they should do.
06:07:54 <elliott> submit a patch, it'd be like a five-line change :)
06:10:25 <ais523> the thing that annoys me about the "you can install gentoo with three commands" quote is that it doesn't list the other two
06:17:14 <itidus21> is infinity a stream?
06:24:33 <kallisti> hi
06:24:45 <kallisti> infinity is not a stream because that question is meaningless.
06:25:08 <elliott> Note to self: Suggest strict state monad to apfelmus.
06:25:24 <elliott> ais523: jokes are not known for their factual accuracy
06:25:48 <ais523> elliott: but it could be both a joke /and/ factually accurate with just two more lines
06:25:54 <ais523> then it'd be both amusing /and/ useful
06:26:14 <kallisti> elliott: stand up comedians tend to employ this kind of humor, in fact.
06:26:27 <kallisti> "the truth is funny" is kind of stuff.
06:26:29 <kallisti> -is
06:26:35 <ais523> or to put it another way, the joke's funnier if it's based on actual facts
06:27:44 <kallisti> but, then again, most of it is just incorrect sexist/racist bullshit so...
06:27:49 <kallisti> maybe the truth isn't very funny.
06:28:23 <elliott> ais523: it would then be a /bad/ joke
06:28:27 <elliott> because the timing would be completely ruined
06:28:58 <ais523> elliott: OTOH, I think the joke's much funnier if there are three commands, and that's the first
06:29:06 <ais523> it's only funny if it's true
06:29:30 <elliott> kallisti: How to be a shitty standup comedian in 3 easy steps: 1. Say stereotypical bullshit 2. I'm just saying what everyone is thinking! 3. Why are you annoyed, it was a JOKE.
06:29:39 <monqy> how is it untrue
06:30:04 <elliott> ais523: the command would give you a gentoo installation assuming there are no stupid mistakes in it
06:30:07 <monqy> there are two other commands, but they just aren't provided
06:30:17 <monqy> providing the other two would ruin the timing i agree
06:30:28 <elliott> the other two commands are presumably system configuration, since that one already installs openoffice :)
06:30:38 <ais523> you'd give them later on in the same quote
06:30:41 <ais523> after the comedic timing
06:30:44 <elliott> ais523: yes, which would ruin the joke
06:30:53 <ais523> perhaps even double-linebreak and give a "for the interested reader" PS thing
06:31:00 <elliott> you don't tell a joke and then say "wait I'm not done yet" and spend three minutes giving a pedantic discussion of the relevant facts
06:31:08 <elliott> because to people who aren't ais523, that's really, really boring
06:31:15 <monqy> then the joke is how bad the original joke is ruined
06:31:16 <elliott> and will ruin the previous enjoyment of the joke
06:31:18 <elliott> this is not really complicated
06:31:22 <ais523> elliott: even a link would be enough
06:31:29 <monqy> * to ruin the joke
06:31:34 <elliott> hey, look at me jumping out of this ridiculous conversation ->
06:31:53 <monqy> don't leave me allone / im fallow suit
06:32:03 <elliott> Fallow Suit, famous comedian
06:36:00 -!- Darth_Cliche has quit (Quit: SLEEP, GLORIOUS SLEEP).
06:39:21 <elliott> ~/src/reactive-banana/reactive-banana/src/Reactive/Banana
06:39:22 <elliott> a good path
06:47:43 <ais523> it'd be bizarre even without the repetition
06:47:53 <ais523> I take it the ~ there means home dir, not an actual directory called ~?
06:48:03 <ais523> alt-f2 on this computer interprets it as the latter, which is annoying
06:48:34 <elliott> former
06:48:39 <elliott> what's bizarre apart from the repetition
06:57:35 <zzo38> This is another use of <*> operator: parseInt = option id (negate <$ char '-') <*> (read <$> some digit);
06:57:40 <elliott> ais523: ?
06:58:08 <ais523> elliott: if I alt-f2 and then use a ~ in either the command to run or an argument to it
06:58:11 <ais523> it's interpreted as a literal ~
06:58:17 <ais523> not expanded to /home/ais523
06:59:42 <elliott> ais523: <ais523> it'd be bizarre even without the repetition <elliott> what's bizarre apart from the repetition
06:59:56 <ais523> elliott: oh, the name "reactive banana"
07:00:27 <elliott> well, "reactive" is taken :)
07:03:39 <kallisti> oh hmmm I need to start thinking about taxes.
07:06:37 <zzo38> OK I made a parser of a MML variant. After a note you can have # or + for sharp, - or b for flat, x for double sharp, and you can have more than one of any of them. You can also have a optional length after a note, an octave shift ' for up and , for down, and a volume in parentheses. Persistent octave shifts are < for down and > for up
07:07:34 <zzo38> This is already more than most other MML that I know of.
07:09:33 <zzo38> Maybe another thing I should have is multiple notes in parentheses for making chords
07:09:58 <zzo38> Does this look like good so far?
07:10:59 <kallisti> yes, assuming you can double shift octaves and such
07:11:17 <kallisti> also an absolute octave notation would be good. A4
07:11:24 <zzo38> Yes, you can include multiple ' or , to multiple shift octaves, or you can use persistent octave shifts such as < and >
07:11:35 <kallisti> unless you plan to reserve that notation for things like chords.
07:12:07 <zzo38> But I do not intend absolute octave notation because you can use the notation like A4 to indicate a quarter note A instead. And you can have L and a number for persistent length setting. These are standard features of MML.
07:13:00 <zzo38> And use O and a number to persistent select an octave.
07:13:49 <elliott> hmm, i should go to bed
07:14:21 <zzo38> What I mean, you can still use ## for double sharp instead, but x is a more common way of indicating double sharp in music notation.
07:14:41 <kallisti> zzo38: you'd also want a way to select time signature so that A4 has meaning
07:14:47 <kallisti> also
07:14:52 <kallisti> A4. could specify a dotted quarter note.
07:15:58 <zzo38> And, yes, that is good too; use . to specify dotted lengths. And the way to set time signature. How I have it, any words must be in lowercase because uppercase are used for notes and other single-letter commands.
07:16:21 <kallisti> zzo38: also you could write a parser that converts your notation into Haskore data structures and then you could take advantage of all of those libraries.
07:16:51 <zzo38> kallisti: Yes I can add such feature; currently I am planning to use .S3M as output format but I can add more.
07:17:19 <kallisti> zzo38: well Haskore wouldn't be used as an output format in this case, just as a means to save time by using existing code.
07:17:34 <kallisti> I'm sure Haskore can output to a number of different formats
07:18:06 <kallisti> oh dude there's a csound backend for HasSound
07:18:26 <zzo38> The lowercase words commands probably I can make most of them in Italian since music notations commonly uses Italian.
07:19:57 <kallisti> zzo38: surwe.
07:20:04 <zzo38> What formats does Haskore have? Anyways, I intend other things too, not only writing the music; such as, comments, instrument definition (by file or by mathematical formulas), and later on, non-12-TET.
07:20:06 <elliott> i'm italian
07:20:09 <elliott> (not treu)
07:21:02 <zzo38> You can use ; for comments in file which are ignored, but another kind of comments that are copied into the sample names in the .S3M output file so that a .S3M player program can display them.
07:56:39 <zzo38> I include features which the most sophisticated .S3M tracker programs lack (in S3M output anyways; and, at least, which the free ones lack). But still use completely standard output format, which can be loaded in tracker programs. (I did already start writing this program and I know how to continue too)
08:02:26 -!- pikhq_ has quit (Ping timeout: 244 seconds).
08:02:27 -!- pikhq has joined.
08:02:35 <zzo38> If you have used TeX, what in your opinion, are what makes TeX an excellent typesetting program?
08:03:33 <zzo38> (Or bad, if that is what it is to you)
08:03:45 <elliott> it's bad because hitler uses it
08:04:08 <zzo38> Hitler uses TeX?
08:04:56 <zzo38> That isn't a good reason anyways
08:06:09 <elliott> he might!
08:06:26 <zzo38> It still isn't a good reason
08:08:32 <zzo38> Have you used TeX at all, anyways?
08:12:53 <elliott> yes
08:14:40 <zzo38> Is it good for you?
08:14:55 <elliott> maybe!
08:15:45 <zzo38> How many kind of its features have you used and what other things have you done with it?
08:16:11 <fizzie> elliott: Bet you didn't expect the TeX inquisition.
08:17:45 <elliott> fizzie: i did not :(
08:20:40 <Sgeo> elliott, kallisti update
08:32:29 <zzo38> If making a Haskell package (one which is compiled into an executable; not a library) licensed under GNU GPL, is it OK to change the LICENSE filename to COPYING if the .cabal file is also changed accordingly?
08:33:16 <zzo38> Libraries I make in Haskell are public domain but for executables I will usually want GPL
08:34:30 <zzo38> (Although Haskell Swiss Ephemeris library is GPL because Swiss Ephemeris itself is GPL)
08:36:09 <elliott> sure
08:37:57 <zzo38> In addition, why does it try to copy the LICENSE file anyways (and result in error message) if public domain is selected? They should either add such a file (probably containing a public domain dedication and the message to use it for any purpose, even if your jurisdiction has no public domain), or make it not copy the file
08:38:56 <zzo38> Another thing I notice, is the copyright notice is not automatically generated if GPL is selected; it is still commented out and you have to put it in by yourself.
08:41:00 <Vorpal> which jurisdictions have public domain and which ones don't?
08:41:21 <Vorpal> I know US has it, but that is all I know
08:41:54 <elliott> germany doesnt iirc
08:42:01 <zzo38> What I know is some people have said that some jurisdictions do not have it. It is why the WTFPL is made up
08:42:11 <Vorpal> ah
08:42:26 <Vorpal> I guess it would be prudent to find out if Sweden has it for me.
08:43:26 <zzo38> I think they should fix the cabal simply for that reason, which is that some jurisdictions do not have public domain, so that the message to do anything with it can still be provided anyways
08:43:55 <elliott> @tell elliott test
08:43:55 <lambdabot> You can tell yourself!
08:43:58 <elliott> ugh
08:44:08 <Vorpal> elliott, so you got a message?
08:44:09 -!- elliott has changed nick to colloinkgravisom.
08:44:11 <Vorpal> or is the message typoed?
08:44:28 <olsner> @tell olsner test
08:44:28 <lambdabot> You can tell yourself!
08:44:35 <Vorpal> no you can't
08:44:38 <Vorpal> since it didn't record it
08:44:45 <Vorpal> of course you could using other channels
08:44:57 <Vorpal> so I guess it is kind of ambiguous if it is typoed or not
08:45:00 <olsner> the point is that I can tell myself without using lambdabot
08:45:26 <Vorpal> fuck me. I been on windows for a few days and I reboot to linux and have over 1 GB of updates to download...
08:45:32 <zzo38> You can also ask someone else to do it for you, if necessary
08:45:58 <Vorpal> olsner, I guess so yeah
08:46:13 <Vorpal> @tell lambdabot does this work?
08:46:13 <lambdabot> Nice try ;)
08:46:18 <Vorpal> nope
08:46:41 <Vorpal> arguably that should go to whoever runs the bot
08:46:48 <colloinkgravisom> cale
08:46:48 <lambdabot> colloinkgravisom: You have 1 new message. '/msg lambdabot @messages' to read it.
08:46:53 <Vorpal> colloinkgravisom, right
08:47:10 <zzo38> Does it have anything like the ADMIN command of IRC? IRC has ADMIN command tell you the information
08:47:28 <Vorpal> does that actually work I wonder
08:47:34 <Vorpal> hm it does
08:48:10 <colloinkgravisom> @messages
08:48:10 <lambdabot> kallisti said 5d 2h 36m 2s ago: Hey, so I don't think [a] = Maybe (a, [a]) because there's no equivalent to (Just _|_) or (a, Just _|_) or ..
08:48:20 <colloinkgravisom> don't dreg up the past lambdabot
08:49:47 <zzo38> I can see it doesn't work due to undefined but ignoring undefined value, it will be mathematically the same thing, so it is just as good for computing derivatives and isomorphisms and so on
08:50:00 <olsner> ah, kallisti counting bottoms, #haskell's favorite pastime that
08:50:15 <colloinkgravisom> is it
08:50:45 <olsner> maybe not *the* favorite, but it's high up on the list anyway
08:52:20 <zzo38> Once I calculated the derivative of list type, someone said it is the correct derivative but doesn't seem a correct zipper.
08:52:56 <colloinkgravisom> that was oerjan.
08:53:29 <zzo38> Yes, I think it was oerjan
08:54:10 <zzo38> Do you think it is a correct zipper? Or is it a correct derivative but not a correct zipper?
08:54:17 <zzo38> And why?
08:58:05 <Vorpal> ls
08:58:09 <Vorpal> err wrong computer
08:58:35 <Vorpal> (I'm using synergy and if fucked up my input focus somehow)
09:09:16 <Deewiant> w00t, LTL types FRP. This is kind of cool.
09:12:37 -!- colloinkgravisom has quit (Ping timeout: 268 seconds).
09:17:13 -!- zzo38 has quit (Remote host closed the connection).
09:23:52 <Vorpal> Deewiant, what is FRP and LTL in this context?
09:24:27 <monqy> functional reactive programming / linear temporal logic
09:24:30 <Vorpal> ah
09:24:32 <Deewiant> Functional reactive programming and linear temporal logic respectivelyi.
09:24:34 <Deewiant> -i
09:25:31 -!- Ngevd has joined.
09:30:58 <Ngevd> Hello!
09:30:58 <Ngevd> @ping
09:30:58 <lambdabot> pong
09:32:45 -!- nooga has joined.
09:38:47 -!- Ngevd has quit (Ping timeout: 240 seconds).
09:46:58 -!- Ngevd has joined.
09:47:06 <Ngevd> Hello!
09:47:27 <kallisti> hey.
09:48:34 <Ngevd> Today's xkcd is alright, except for the punchline
09:49:29 -!- FireFly has quit (Ping timeout: 240 seconds).
09:50:06 <kallisti> http://xkcd.com/997/ I like this one
09:50:27 <Ngevd> I missed the joke
09:50:46 <Vorpal> Ngevd, in the one kallisti linked? Same
09:50:55 <Vorpal> I guess it is some US politics joke or something?
09:51:24 <Vorpal> kallisti, is that so?
09:51:43 <Ngevd> I thought it was a quiz show?
09:51:52 <Vorpal> what was?
09:51:59 <kallisti> yes it's an incredibly lame joke about a radio quiz show in the US.
09:52:05 <kallisti> that only old people and nerds listen to.
09:52:07 <Vorpal> ah I see
09:53:17 <kallisti> it's funny though because any newsworthy events involving Peter Sagal would basically have to have a headline following that format.
09:53:24 <kallisti> it's required.
09:53:27 <Vorpal> I see
09:54:57 <kallisti> there's basically nothing political about NPR, except recently Republican media seems to think NPR is liberal.
09:55:05 <kallisti> when it's just like... not stupid.
09:55:11 <kallisti> not stupid = liberal, I guess.
10:00:06 <kallisti> actually NPR has been known to fire people for displaying a political bias in their personal life.
10:00:38 <Vorpal> I don't see the issue as long as it doesn't affect them in their profession
10:01:05 <kallisti> there's not one. I think NPR is just really strict about it for public relations.
10:01:50 <kallisti> but it could easily backfire.
10:01:59 <Vorpal> oh?
10:02:25 <kallisti> yes firing people for publically displaying opinions probably isn't good press.
10:03:12 <kallisti> grantedm a lot of the firings over Occupy Wall Street were freelance radio reporters and not actual NPR staff, for what it's worth.
10:04:23 <Vorpal> hm
10:05:33 <kallisti> but freelancers is probably like... the majority of NPR's employees.
10:05:41 <kallisti> because that includes a lot of people that work for NPR stations.
10:07:15 <fizzie> Occupy #esoteric. (And do what, exactly?)
10:07:52 <Vorpal> fizzie, talking about esolangs all the time?
10:07:54 <Vorpal> that could work
10:08:54 <fizzie> I guess as a protest of all the non-topicalness that goes on here it could work.
10:09:00 <Vorpal> indeed
10:09:39 <kallisti> !perl $_ = "test"; s/(.)./@/; print $1
10:09:41 <EgoBot> t
10:09:46 <kallisti> hm
10:10:03 * kallisti has never accessed a capture group from a substitute, actually.
10:10:08 <kallisti> so I wasn't sure if it actually did that.
10:10:42 <fizzie> Do you mean to say you have never used a $n in the replacement part of a s///?
10:11:47 <kallisti> oh hmm... maybe I have.
10:11:50 <kallisti> yes I have.
10:16:18 -!- Ngevd has quit (Read error: Connection reset by peer).
10:24:45 -!- nooga has quit (Ping timeout: 240 seconds).
10:24:54 <kallisti> !perl print [] == []
10:24:55 <EgoBot> No output.
10:24:57 <kallisti> !perl print [] eq []
10:24:58 <EgoBot> No output.
10:26:27 <kallisti> hmmm what is a reference in numeric context I wonder
10:26:34 <kallisti> !perl print []
10:26:34 <EgoBot> ARRAY(0x7ff735781d48)
10:26:41 <kallisti> I guess its address?
10:26:58 <kallisti> !perl print "0xFF" + "OxFF"
10:26:58 <EgoBot> 0
10:27:21 <kallisti> oh okay.
10:27:29 <kallisti> !perl print "0xFF" + "0xFF"
10:27:29 <EgoBot> 0
10:27:53 <kallisti> so perl doesn't attempt to read hex literals when converting a string to a number.
10:28:49 <Vorpal> kallisti, that looks like a reasonable address for the stack to me
10:29:11 <kallisti> ???
10:29:15 <Vorpal> <EgoBot> ARRAY(0x7ff735781d48)
10:29:16 <Vorpal> that is
10:29:33 <kallisti> how does that look like the address to a stack? it looks like an arbitrary location in memory to me.
10:29:33 <Vorpal> looks like about the usual location of the stack on Linux (x86-64)
10:30:25 <Vorpal> kallisti, run cat /proc/self/maps a few time on a 64-bit machine
10:30:32 <kallisti> "ah yes good ol' 7ff735781d48" -- Vorpal
10:30:38 <Vorpal> kallisti, look at [stack] and [heap]
10:30:46 <Vorpal> kallisti, stack is usually 7ff*
10:31:08 <Vorpal> kallisti, heap tends to start with many zeros
10:31:48 <Vorpal> kallisti, libraries tend to be mapped around 7f0*-7fe*
10:32:02 <Vorpal> kallisti, not so hard after all
10:32:13 <kallisti> `run cat /proc/self/maps | egrep '[stack]'
10:32:24 <HackEgo> 00400000-0040c000 r-xp 00000000 00:09 842385 /bin/cat \ 0060c000-0060d000 rw-p 0000c000 00:09 842385 /bin/cat \ 0060d000-0062e000 rwxp 00000000 00:00 0 [heap] \ 40000000-4001e000 r-xp 00000000 00:0f 835040 /lib64/ld-2.11.2.so \ 4021d000-4021e000 r--p 0001d000 00:0f 835040 /lib64/ld-2.11.2.so
10:32:27 <kallisti> `run cat /proc/self/maps | egrep '\[stack\]'
10:32:31 <HackEgo> 7fbff23000-7fbff44000 rw-p 00000000 00:00 0 [stack]
10:32:58 <kallisti> it is 7ff* on my computer though
10:33:03 <Vorpal> on my system the stack is consistently 7fff* for cat even
10:33:07 <Vorpal> three f
10:33:16 <fizzie> Yes, "7ff" is quite stacky indeed.
10:33:46 <kallisti> uh, but 7ff* is a huge range of addresses....
10:33:59 <Vorpal> stack or vdso, and you usually don't have addresses into the vdso
10:34:17 <Vorpal> kallisti, yes and?
10:34:27 <Vorpal> kallisti, there is nothing much else up there
10:34:37 <Vorpal> (well, the vdso is)
10:35:19 <Vorpal> kallisti, your point was?
10:36:00 <fizzie> It's quite close to the top of the bottom half of the canonical-form 48-bit addresses.
10:36:18 <kallisti> that... this notion of stackiness is purely arbitrary because you just see 7ff a lot. Seeing another address with 7ff* does not tell you that it's "stacky"
10:36:22 <Vorpal> kallisti, you tend to pick up this sort of vague feeling for what an address is when debugging C code. Like "hm, that address it crashed from accessing, looks like it is related to something on the stack"
10:36:42 <kallisti> !perl print map {[]} 1..10
10:36:43 <EgoBot> ARRAY(0x7fc52154fd48)ARRAY(0x7fc52156da90)ARRAY(0x7fc52156dac0)ARRAY(0x7fc52156daf0)ARRAY(0x7fc52156db20)ARRAY(0x7fc52156db50)ARRAY(0x7fc52154fb98)ARRAY(0x7fc52156da00)ARRAY(0x7fc52156dc88)ARRAY(0x7fc52156dcb8)
10:36:52 <Vorpal> they are mostly allocated on the stack I suspect
10:37:18 <Vorpal> kallisti, or in a mmaped area up high
10:37:20 <Vorpal> could happen
10:37:26 <Vorpal> definitely not on the heap though
10:38:14 -!- oerjan has joined.
10:38:40 <Vorpal> looking at perl here indicates it does mmap some anon mappings
10:38:44 <Vorpal> could be one of those
10:38:51 <Vorpal> 7f07f9850000-7f07f9851000 rw-p 00000000 00:00 0
10:38:51 <Vorpal> 7fffc0302000-7fffc0323000 rw-p 00000000 00:00 0 [stack]
10:38:57 <oerjan> aanon mmappings
10:39:09 <Vorpal> hm actually that one is there with cat too
10:39:13 <Vorpal> so probably not that one
10:39:19 <Vorpal> (I guess that is libc related)
10:39:34 <Vorpal> (but then iirc glibc allocs huge chunks from mmap)
10:39:43 <kallisti> !perl $_ = []; s/ARRAY\((.*)\)/$1/; print eval;
10:39:44 <EgoBot> 140303706385736
10:40:07 <fizzie> Actually when I do that locally, the []s seem quite heap-allocated.
10:40:10 <Vorpal> (doesn't explain why perl would allocate from the same mmaped page as something that is there in cat)
10:40:13 <fizzie> $ perl -e 'print map {[]} 1..10; print "\n";'
10:40:13 <fizzie> ARRAY(0x1492d48)ARRAY(0x14b0480)ARRAY(0x14b04b0)ARRAY(0x14b04e0)ARRAY(0x14b0510)ARRAY(0x14b9b88)ARRAY(0x1492b98)ARRAY(0x14b03d8)ARRAY(0x14b0408)ARRAY(0x14b9cd8)
10:40:22 <Vorpal> fizzie, strange results with !perl then
10:40:32 <Vorpal> but yeah those look heapish
10:41:06 <Vorpal> look heapish for me too
10:41:16 <Vorpal> fizzie, I guess it is possible plash does something weird?
10:41:26 <Vorpal> not sure why it would create a different heap though
10:41:50 <Vorpal> `run fgrep '[heap]' /proc/self/maps
10:41:53 <HackEgo> 00613000-00634000 rwxp 00000000 00:00 0 [heap]
10:41:58 <Vorpal> doesn't seem so
10:42:25 <kallisti> !perl @x = ([],[]); @x = map {s/ARRAY\((.*)\)/$1/; eval}; print abs($x[0] - $x[1]);
10:42:25 <EgoBot> syntax error at /tmp/input.2124 line 1, near "};" \ Execution of /tmp/input.2124 aborted due to compilation errors.
10:42:37 <kallisti> !perl @x = ([],[]); @x = map {s/ARRAY\((.*)\)/$1/; eval} @x; print abs($x[0] - $x[1]);
10:42:37 <EgoBot> 432
10:42:40 <kallisti> !perl @x = ([],[]); @x = map {s/ARRAY\((.*)\)/$1/; eval} @x; print abs($x[0] - $x[1]);
10:42:40 <EgoBot> 432
10:42:42 <fizzie> !perl system("cat /proc/$$/maps | grep heap");
10:42:42 <EgoBot> 7f7526a10000-7f7526a50000 rw-p 00000000 00:00 0 [heap]
10:42:43 <kallisti> !perl @x = ([],[]); @x = map {s/ARRAY\((.*)\)/$1/; eval} @x; print abs($x[0] - $x[1]);
10:42:44 <EgoBot> 432
10:42:56 <fizzie> "!perl" is EgoBot, though.
10:43:05 <fizzie> And that's quite a high heap.
10:43:16 <Vorpal> indeed
10:43:18 <Vorpal> very strange
10:43:23 <kallisti> `run perl -e 'print []'
10:43:26 <HackEgo> ARRAY(0x605d48)
10:43:33 <kallisti> NOT SO "STACKY" NOW EH? ASSHOLES.
10:43:36 <kallisti> :)
10:43:37 <Vorpal> `run perl & fgrep '[heap]' /proc/$!/maps
10:43:41 <HackEgo> 006e2000-006f5000 rwxp 00000000 00:00 0 [heap]
10:43:53 <fizzie> I haven't really been following the sandboxings; at least HackEgo runs on that umlbox thing nowadays, not plash.
10:43:53 <Vorpal> I thought egobot and hackego had very similar setups?
10:43:59 <Vorpal> fizzie, oh okay
10:44:03 <Vorpal> well that could change things
10:44:09 <Vorpal> fizzie, why umlbox?
10:44:16 <fizzie> Why not?
10:44:26 <Vorpal> and if that is user mode linux then I guess that changes stuff a lot
10:44:32 <kallisti> `run perl <<< '@x = ([],[]); @x = map {s/ARRAY\((.*)\)/$1/; eval} @x; print abs($x[0] - $x[1]);'
10:44:33 <fizzie> NIH syndrome, maybe.
10:44:36 <HackEgo> 109176
10:44:41 <kallisti> oh my.
10:44:43 <Vorpal> fizzie, as for why not: why would you want to fix something that wasn't broken?
10:44:52 <Vorpal> or was it broken in some way to use plash?
10:45:01 <Vorpal> kallisti, ?
10:45:02 <fizzie> "Plash relies on a glibc patch, and is, as such, difficult to maintain and out of date. UMLBox relies only on UML (Usermode Linux), a component of the Linux kernel, and requires no patches to UML. Furthermore, UMLBox requires no special privileges to install or use."
10:45:08 <fizzie> (From the umlbox page.)
10:45:10 <kallisti> the address difference is much higher on hackego
10:45:12 <kallisti> than on egobot
10:45:13 <Vorpal> ah
10:45:25 <kallisti> between repeated []'s
10:45:28 <Vorpal> ah
10:46:32 <Vorpal> fizzie, looks like gregor made umlbox? https://bitbucket.org/GregorR/umlbox/wiki/Home is the first hit for me
10:47:04 <kallisti> !perl print `perl -v`
10:47:05 <EgoBot> ​\ This is perl, v5.10.1 (*) built for x86_64-linux-gnu-thread-multi \ \ Copyright 1987-2009, Larry Wall \ \ Perl may be copied only under the terms of either the Artistic License or the \ GNU General Public License, which may be found in the Perl 5 source kit. \ \ Complete documentation for Perl, including FAQ lists, should be found on \ this system using "man perl" or "perldoc perl". If you have access to the
10:47:16 <kallisti> hm same version
10:47:20 <kallisti> `run perl -v
10:47:23 <HackEgo> ​\ This is perl, v5.10.1 (*) built for x86_64-linux-gnu-thread-multi \ (with 53 registered patches, see perl -V for more detail) \ \ Copyright 1987-2009, Larry Wall \ \ Perl may be copied only under the terms of either the Artistic License or the \ GNU General Public License, which may be found in the Perl 5 source kit. \ \ Complete documentation for Perl, including FAQ lists, should be found on \ this system using
10:47:27 <fizzie> Vorpal: Yes, that's why I speculated "NIH syndrome".
10:47:33 <Vorpal> ah
10:48:18 <Vorpal> # Plash supports X11 programs. UMLBox does not, as sockets do not translate host-to-guest with UML. <-- so there is no networking at all? Because X11 works fine over tcp
10:48:40 <Vorpal> I thought uml had support for networking in general, so it should be possible to set up
10:48:40 <kallisti> !perl print v5.10 + v5.11
10:48:41 <EgoBot> 0
10:48:53 <fizzie> I suppose that just means "transparently supports".
10:49:36 <Vorpal> hm
10:49:47 <kallisti> I feel like say would improve perl's golf scores, except that it currently requires a use v5.10 line.
10:49:51 <Vorpal> actually it looks like umlbox has no network
10:50:04 <kallisti> !perl use v5.10; say "Hello, World!"
10:50:05 <EgoBot> Hello, World!
10:50:37 <Vorpal> why say
10:50:47 <Vorpal> why is it any better than the traditional print?
10:50:51 <kallisti> !perl print "Hello, World!\n"
10:50:51 <EgoBot> Hello, World!
10:50:56 <Vorpal> ah
10:51:10 <kallisti> it's better for golfing, except for the above mentioned problem.
10:51:29 <fizzie> Vorpal: umlbox certainly can do networking.
10:51:34 <kallisti> really I don't know why it needs use v5.10. is it really going to break anything if you simply include it?
10:51:38 <Vorpal> fizzie, hm
10:51:41 <fizzie> Vorpal: Er, sorry, I mean, UML can.
10:51:45 <Vorpal> ah
10:51:46 <fizzie> Vorpal: umlbox probably doesn't.
10:51:58 <Vorpal> right
10:52:01 <fizzie> Or maybe it does? There's that "fetch" thing.
10:52:07 <fizzie> I haven't looked at the implementation, really.
10:52:14 <Vorpal> also: "-X is very limited as yet. It can only forward DISPLAY=:0.0, it forwards it to DISPLAY=127.0.0.1:0.0, and it doesn't set any of the required environment variables (of which at least DISPLAY and XAUTHORITY are necessities). It will be fixed in time :)"
10:52:20 <Vorpal> so uh, it does kind of support x11?
10:52:25 <Vorpal> yet it says further down it doesn't
10:52:29 <fizzie> Well, you know how it is with documentation.
10:52:33 <Vorpal> true
10:53:17 <Vorpal> anyway don't you need to enable UML in the kernel config for umlbox to work?
10:53:21 <Vorpal> or is that always-on?
10:53:32 <Vorpal> because if it isn't then it probably does require root to install
10:54:24 <fizzie> No.
10:54:29 <fizzie> It's "U" as in user-mode.
10:54:42 <fizzie> The host kernel runs it just like it would any random process.
10:55:00 <Vorpal> fizzie, doesn't it need a bit of kernel support to do memory protection between processes?
10:55:01 <Vorpal> iirc
10:55:15 <Vorpal> I mean, processes in the same UML instance
10:55:49 <fizzie> Possibly there was some bit that you could do optionally.
10:56:08 <Vorpal> fizzie, otherwise it wouldn't be secure, you could just write into the UML code itself
10:56:54 <Vorpal> I assume it uses ptrace to catch system calls. Since anything else can easily be beaten
10:57:58 <Vorpal> or I guess it could dynamically recompile code
10:58:42 <oerjan> ...or what you're saying means there is a way to hack it.
10:59:01 <fizzie> I think the internals have changed a couple of times; back when I used it, it certainly didn't use ptrace at least straightforwardly, since the whole UML kernel and everything running in it appeared as a single process in the host.
10:59:13 <fizzie> (And you can't trace yourself.)
10:59:36 <Vorpal> oerjan, I mean that unless it gets some special support from the kernel or does full emulation like a more general vm (qemu, virtualbox and so on) there are going to be ways to hack it
11:00:02 <oerjan> yes, that's what i thought you meant.
11:00:24 <Vorpal> (of course virtualbox and qemu generally gets kernel support, qemu doesn't actually need it though, but it runs much slower without)
11:00:43 <fizzie> Right; there was a "skas" patch for the host kernel.
11:00:52 <fizzie> I don't know if it got included in the mainline kernel tree or not.
11:01:02 <fizzie> From what I recall, it was reasonably non-intrusive.
11:01:16 <Vorpal> seems it is integrated according to wikipedia
11:01:52 <Vorpal> I wonder what system calls are exposed to do this
11:02:01 <fizzie> The "old mode" used the "each UML process is a host process, ptraced by the manager for syscalls" approach.
11:02:06 <Vorpal> I would like to take a look at the interface and see if it can be used in some interesting way
11:02:37 <Vorpal> fizzie, there is still the need to catch system calls also
11:03:14 <fizzie> I'd check the UML wiki but it's being unresponsive. :/
11:04:57 <Vorpal> I can't even find that wiki
11:05:20 <fizzie> http://user-mode-linux.sourceforge.net/ -> The UML Wiki.
11:05:32 <Vorpal> hm indeed not responding
11:05:53 <fizzie> It will eventually give a 502 Proxy Error from uml.jfdi.org.
11:06:17 <Vorpal> I see
11:07:54 <Vorpal> fizzie, the old skas stuff seemed to use /proc/mm but that definitely doesn't exist these days
11:08:56 <fizzie> Most UML-related things seem quite obsoleted these days.
11:09:26 <Vorpal> `ls /proc/mm
11:09:29 <HackEgo> ls: cannot access /proc/mm: No such file or directory
11:09:42 <fizzie> It's all qemu-kvm or Xen or then the "containers"-style OpenVZ/vserver stuff now.
11:10:09 <Vorpal> yeah
11:10:57 <fizzie> I wonder if anyone's using 'lguest' for some real-world thing, though.
11:11:06 <Vorpal> which one is lguest?
11:11:09 <Vorpal> as in, which style
11:12:00 <fizzie> It does that hypervisor/paravirtualization thing. It's very very very minimal; but it was included in the mainline kernel quite early, as far as these things go.
11:12:32 <fizzie> The only lguest-related tool I've seen is the Documentation/virtual/lguest/lguest.c example code.
11:12:43 <Vorpal> heh
11:13:08 <fizzie> "2.6.23-git13 and above", apparently.
11:13:33 <fizzie> Apparently it might be a bit 32-bit-only.
11:14:33 <fizzie> It runs copies of the "host" kernel as guests, if I recall correctly.
11:18:47 -!- azaq23 has quit (Quit: Leaving.).
11:19:49 -!- azaq23 has joined.
11:20:20 <Vorpal> wtf, steam got stuck in a loop of "loading game" dialogue popping up and closing
11:20:24 <Vorpal> had to kill the process
11:21:07 <fizzie> I wonder what the "library" screen of Steam will look like if you win the "all the games" award.
11:21:09 -!- Effilry has joined.
11:21:14 <Vorpal> fizzie, horrible?
11:21:38 <Vorpal> fizzie, anyway I wonder what the chances are
11:22:32 <fizzie> An empty search in the store returns 4178 matches.
11:22:34 * oerjan swat Effilry -----###
11:22:36 <oerjan> *s
11:22:42 <Vorpal> fizzie, btw I recently (yesterday) played portal 2. It was far better than the first one. I actually didn't give up halfway out of boredom this time.
11:22:47 <Effilry> Heh
11:22:52 <fizzie> I liked it.
11:23:00 <fizzie> Well, the single-player side, anyway.
11:23:01 <oerjan> THERE IS NO USE TRYING TO HIDE
11:23:02 <Vorpal> fizzie, I think the boss fight was terrible though
11:23:24 <fizzie> Also Cave Johnson is one crazy man.
11:23:28 <Vorpal> well yes
11:23:31 -!- Effilry has changed nick to FireFly.
11:23:37 -!- FireFly has quit (Changing host).
11:23:38 -!- FireFly has joined.
11:24:22 <Vorpal> fizzie, anyway I found myself thinking "Trine 2 is a way better puzzle game" several times.
11:24:47 <Vorpal> not when it comes to the story, trine 2 has a rather weak story, but the gameplay is way better in trine and trine 2
11:26:07 <fizzie> For some reason I couldn't quite get myself interested about the first Trine.
11:26:10 <fizzie> "All right, I've been thinking. When life gives you lemons, don't make lemonade. Make life take the lemons back! Get mad! I don't want your damn lemons! What am I supposed to do with these?! Demand to see life's manager! Make life rue the day it thought it could give Cave Johnson lemons! Do you know who I am? I'm the man who's gonna burn your house down! With the lemons! I'm gonna get my engineers to invent a combustible lemon that burns your house down
11:26:10 <fizzie> !"
11:27:03 <Vorpal> fizzie, also I don't really like the difficulty in portal 2, I mean it is difficult for the wrong reasons. Usually it is hard because there is some white wall up high near the badly lit ceiling that I didn't spot that I had to check a walkthrough
11:27:12 <Vorpal> the actual puzzles once you locate all the components are not hard
11:27:59 <fizzie> I don't recall very much of that, though I might just have forgotten. Hard it's not, that much is true.
11:28:02 <Vorpal> there was just one puzzle in trine 2 where I had that issue. The other I had to think about were just mechanically challenging
11:28:56 <Vorpal> usually platforming issues as well
11:30:35 <Vorpal> there is an ice slope that you need to get up in a late trine 2 level, it wasn't hard to figure out how: attach a grappable (sp?) object to spiky swinging ball overhead then grapple it as the thief and wait for max swing both of the spiky ball and yourself before you release
11:30:43 <Vorpal> executing it was kind of hard though
11:31:04 <Vorpal> fizzie, not sure if you noticed that in trine 2 (if you played it?)
11:31:24 <fizzie> Not yet.
11:31:27 <Vorpal> ah
11:31:47 <ais523> meh, just handcuff it to a vending machine
11:31:53 <Vorpal> ais523, what?
11:32:03 <ais523> Vorpal: infamous bug in Scribblenauts
11:32:08 <Vorpal> eh?
11:32:11 <ais523> pretty much all the action levels can be bypassed by doing that
11:32:13 <Vorpal> what happened when you did that
11:32:20 <ais523> the item ends up inside the vending machine
11:32:24 <ais523> then you can just vend it out
11:32:26 <Vorpal> heh
11:32:33 <Vorpal> how strange
11:32:33 <ais523> and skip whatever puzzle you'd normally need to do to get the item
11:33:03 <Vorpal> why would handcuffing an item do that
11:33:04 <fizzie> Oh for... because of a missing "Unknown Plugin (text/html)" this Java "personnel records" mess-plication apparently can't run.
11:33:14 -!- Frooxius has joined.
11:33:18 <Vorpal> fizzie, lol
11:33:30 <Frooxius> hellooo
11:33:35 <ais523> hi, I guess
11:33:36 <Vorpal> `welcome Frooxius
11:33:39 <HackEgo> Frooxius: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
11:33:51 <ais523> I'm guessing because I can never remember who's been here before and who hasn't
11:33:55 <ais523> well, sometimes I can
11:33:59 <ais523> I think Vorpal's been here a while
11:34:02 <Vorpal> XD
11:34:07 <Frooxius> It's first time I'm here
11:34:18 <Vorpal> ais523, and that guy "elliott" he isn't new either, right? ;P
11:34:34 <ais523> you know, it'd be massively out of character here for me to not do `? welcome even though you've already been welcomed, and with a more modern syntax at that
11:34:36 <ais523> meh
11:34:37 <ais523> `? welcome
11:34:41 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
11:34:51 <Vorpal> ais523, modern syntax?
11:34:53 <Vorpal> what
11:34:59 <ais523> the `? syntax came first
11:35:08 <Vorpal> so a less modern one then?
11:35:12 <Vorpal> `type welcome
11:35:15 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: type: not found
11:35:17 <Vorpal> `run type welcome
11:35:21 <HackEgo> welcome is /hackenv/bin/welcome
11:35:26 <oerjan> now how _vorpal_ remembers who is new when he cannot notice anything else, i don't know.
11:35:29 <Vorpal> `url bin/welcome
11:35:33 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/welcome
11:35:42 <ais523> Vorpal: DOS "type" = UNIX "cat"
11:35:50 <Vorpal> ais523, I was looking for bash type
11:36:07 <Vorpal> also that is a terribly complicated piece of code
11:36:13 <Vorpal> if (defined($_=shift)) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }
11:36:14 <Vorpal> why
11:36:19 * oerjan swats Vorpal -----###
11:36:23 <Vorpal> oerjan, ?
11:36:28 <Vorpal> oerjan, what
11:36:35 <oerjan> Vorpal: so it can take any number of nicks, including none
11:36:39 <Vorpal> ah
11:36:41 * oerjan wrote that :P
11:36:57 <Vorpal> oerjan, right. I don't really know perl
11:37:31 <oerjan> of course some of the complication is because it uses @ and ? as subprocesses
11:37:34 -!- nooga has joined.
11:38:05 <ais523> now I'm trying to work out if @{" "} can be written as @ (that is, @ then space)
11:38:11 <Vorpal> ais523, I don't really use DOS commands, nor have I really ever used them more than a handful of times, so chances are I didn't type a DOS command by mistake
11:39:26 <ais523> well, Windows commands are based on them
11:39:27 <Vorpal> ais523, btw did you ever consider making wol use UML?
11:39:35 <Vorpal> it might end up less insane
11:39:57 <ais523> I choose to misinterpret that as Unified Modelling Language
11:39:57 <Vorpal> it seems EgoBot (but not hackego) switched to some home made umlbox that Gregor wrote
11:40:03 <Vorpal> ais523, user mode linux :P
11:40:04 <ais523> just because that makes absolutely anything more insane
11:40:05 <Frooxius> oh cool, it's pretty active here. I was looking for some places about esoteric languages and the others I found so far seemed quite dead
11:40:10 <ais523> and ISTR there's some reason user mode language wouldn't work
11:40:17 <ais523> Frooxius: the wiki is alive, but mostly with spambots
11:40:23 <ais523> it's probably the only other active esolang place, though
11:40:35 <fizzie> Unified Modelling Linux.
11:40:39 <Vorpal> Frooxius, only problem is that many of us tend to easily go off on unrelated tangents :P
11:40:48 <Vorpal> (a lot of off topic stuff in other words)
11:40:56 <Vorpal> (usually interesting though)
11:41:03 <Frooxius> Yeah, that seems to happen everywhere :D
11:41:10 <Vorpal> <ais523> and ISTR there's some reason user mode language wouldn't work <-- user mode language?
11:41:20 <Frooxius> spambots? Are they creating bogus pages or what?
11:41:22 <ais523> Vorpal: meh, just assume I'm drunk
11:41:26 <ais523> Frooxius: they're spamming
11:41:29 <kallisti> it's not very surprising that people don't solely about a very narrow topic all the time
11:41:32 <kallisti> for years.
11:41:32 <ais523> it's what spambots typically do
11:41:33 <Vorpal> ais523, I just can't imagine you /ever/ being drunk
11:41:38 <ais523> Vorpal: I'm not
11:41:38 <Vorpal> ais523, it just doesn't fit into my head
11:41:42 <kallisti> s/don't/don't talk/
11:41:52 <Vorpal> ais523, have you ever been drunk?
11:41:52 <ais523> but assuming it tends to simplify things, it's easier than trying to explain
11:41:56 <ais523> I don't think so
11:41:59 <Vorpal> right
11:42:05 <Frooxius> yeah, I meant more in what specific form the spamming takes, like if it's in the discussions or making wiki pages
11:42:09 <ais523> I used to drink alcohol slightly, but realised I didn't like it
11:42:12 <ais523> Frooxius: mostly page creation
11:42:16 <Frooxius> ah
11:42:16 <ais523> occasionally page replacement
11:43:36 <Vorpal> kallisti, good point
11:43:58 <Frooxius> I was looking for a place where I can show my language, though I made more, but they share one common idea, though they're a bit different. Can I make multiple pages for each or merge them into one big page?
11:44:31 -!- copumpkin has quit (Ping timeout: 248 seconds).
11:44:33 <ais523> multiple pages is probably simplest
11:44:34 <Vorpal> ais523, btw which java IDE would you recommend? I'm probably not going to use it more than a few times. Just need something
11:44:40 -!- copumpkin has joined.
11:44:44 <Frooxius> ok
11:44:48 <Frooxius> thanks
11:44:54 <ais523> Vorpal: I've only seen NetBeans and Eclipse; NetBeans is better, although I strongly recommend you get someone else to package it
11:45:06 <Vorpal> hm?
11:45:14 <oerjan> ^ul ((spam )(SPAM ))(~:^Sa~^*a*~:^):^
11:45:14 <fungot> SPAM spam SPAM spam spam SPAM spam spam spam SPAM spam spam spam spam SPAM spam spam spam spam spam SPAM spam spam spam spam spam spam SPAM spam spam spam spam spam spam spam SPAM spam spam spam spam spam spam spam spam SPAM spam spam spam spam spam spam spam spam spam SPAM spam spam spam spam spam spam spam spam spam spam ...too much output!
11:45:14 <Vorpal> ais523, like using my distro to install it?
11:45:16 <Vorpal> or what
11:45:22 <ais523> Vorpal: yes, like that
11:45:31 <Vorpal> ais523, what if I need it on windows?
11:45:40 <Vorpal> I might actually need it on windows
11:45:48 <Vorpal> so it isn't just a theoretical question
11:45:54 <ais523> I haven't tried it on Windows myself, but I've heard that the installer is slightly insane
11:45:59 <Vorpal> I see
11:46:34 <Vorpal> ais523, as long as it doesn't use ant to build I'm happy.
11:47:08 <ais523> I'm not actually sure what it uses to build, it abstracts that away from the user
11:47:15 <Vorpal> right
11:47:23 <fizzie> fungot: It's all right to say "too much spam!" in cases like the above.
11:47:24 <fungot> fizzie: ouluthy atoll. on/ whole, as far as it went,/ sterility occurs in various degrees; in both, are much convoluted; but this is an important element in/ sterility :) many foreign plants; thus,/ flat or ventral surface faces/ axis or stem; but/ footstalks must have some natural origin. a wild scheme.
11:47:25 <Vorpal> also it is sponsored by oracle it seems. Hrrm.
11:47:34 <Vorpal> ^style
11:47:34 <fungot> Available: agora alice c64 ct darwin* discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
11:47:37 <Vorpal> ah
11:47:57 <Vorpal> fizzie, what was the story behind the smilies now again?
11:48:13 <Vorpal> Frooxius, btw that irc bot is written in befunge-98 (an esolang)
11:48:52 <Vorpal> ^style iwcs
11:48:53 <fungot> Selected style: iwcs (Irregular Webcomic scripts)
11:48:54 <Frooxius> Oh cool :D That's ultimate esoterism! x3
11:48:58 <Vorpal> ^source
11:48:58 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
11:48:59 <Vorpal> there
11:49:01 <Vorpal> fungot, hm?
11:49:02 <fungot> Vorpal: no, the boy, do i? are you sure the technology!
11:49:10 <Vorpal> fungot, doesn't sound like iwc to me yet
11:49:10 <fungot> Vorpal: the new king, you are dedicating yourself, does the allosaurus have a policy on death? i can just walk through the door to the secret dwarven passage, all the classics. dickens, austen, melville, wilde, hemingway. and of course jonson had never happened, quite frankly, from the sound of a hundred. in aramaic
11:49:16 <Vorpal> well now it does
11:49:38 <Vorpal> fizzie, does that model include the annotations?
11:49:54 <Frooxius> Befunge is 2D language right? One that I'm working on is 2D as well, though works somewhat differently
11:49:59 <Vorpal> yes it is
11:50:07 <Vorpal> Frooxius, that is befunge-98, not befunge-93
11:50:22 <Frooxius> hmm, sorry, I don't really know much about specific versions
11:50:30 <Vorpal> befunge-98 is much extended compared to the 93 version
11:50:38 <fizzie> What, again? Okay, fungot's token-to-text code has a hardcoded list of punctuation for the first N (12 or so) tokens, same as the Perl script for training the models; unfortunately, the "remove tokens used less than K times" pruning phrase applied to those too, removing the smileys which Darwin did not use, causing the two most common non-punctuation tokens ("the", "of") get the integer indices of the two last punctuation tokens (":)", "/").
11:50:38 <fungot> fizzie: what, the ability to be captured a spanish galleon! arrr!! the frame is engulfed the galactic cup! they've all been targeted!
11:50:52 <ais523> Frooxius: -98 and -93 are reasonably radically different
11:50:55 <fizzie> Also there's some other punctuation mismatch going on, but that happens more rarely.
11:51:02 <Vorpal> fizzie, ah
11:51:15 <Vorpal> ais523, indeed
11:51:16 <fizzie> And no, it's just scripts; that's why it says "scripts" in the name.
11:51:19 <Vorpal> right
11:51:37 <fizzie> There was an "iwca" set too, but it didn't work quite as well.
11:51:43 <Vorpal> I can imagine
11:51:47 <Frooxius> hmm, does the Befunge 98 have its own page on the wiki though?
11:52:04 <Frooxius> Nevermind, found its homepage
11:52:08 <Vorpal> right
11:52:11 <ais523> it's probably sorted under funge-98
11:52:16 <ais523> but it's a catseye language
11:52:27 <ais523> and we tend to just link to catseye for those, rather than try to repeat the whole thing ourselves
11:52:51 <ais523> cpressey writes pretty good descriptions, and unlike most people, puts them on his own website rather than the wiki
11:53:01 <Vorpal> Frooxius, if you plan to try to implement it speak with us first. The spec is terribly unclear and the behaviour of t is broken. So what people do is use Deewiant's test suite as a reference.
11:53:43 <Frooxius> No I mean, I'm implementing my own language
11:53:53 <Vorpal> well sure, but just as a warning :P
11:53:55 <Frooxius> Which is also 2D one
11:54:06 <Frooxius> oh okay
11:54:08 <Vorpal> Frooxius, funge-98 actually comes in 1D, 2D and 3D variants
11:54:33 <Frooxius> yeah, I'm reading its page now, it said something about generalization
11:54:37 <Vorpal> just the spec contradict itself once, is broken in another place and is terribly unclear in several places.
11:55:07 <Vorpal> Frooxius, I believe fungot here runs on my befunge-98 implementation unless fizzie switched over
11:55:07 <fungot> Vorpal: sorry, i don't know what they're up!
11:55:28 <fizzie> It's still cfunge.
11:55:30 <Vorpal> right
11:55:36 <Frooxius> Cool :3
11:55:44 <fizzie> Though probably quite an old version.
11:55:46 <Vorpal> fizzie, I guess you wouldn't actually gain that much from using ccbi2.
11:56:20 <Vorpal> fizzie, I recommend people to compile it with clang these days. There are some unresolved issues with gcc >4.5 and -O3
11:56:30 <fizzie> It's not exactly computationally intensive, discounting people's ^bf/^ul stuff.
11:56:33 * kallisti should write an implementation for an esolang.
11:56:42 <Vorpal> from what I can tell it miscompiles, but picking out the relevant functions compiles it correctly
11:56:53 <fizzie> ^bf +[]! I like to loop it, loop it.
11:56:56 <Vorpal> kallisti, and I should write an esolang. I only ever implemented them
11:56:58 <fungot> ...out of time!
11:57:09 <fizzie> That's 100k cycles, IIRC.
11:57:25 <kallisti> Vorpal: it could be worse. You could only design incredibly shitty esolangs. like me. :P
11:57:32 <Vorpal> heh
11:57:33 <kallisti> all of my good ideas never finish.
11:57:40 <Vorpal> why?
11:58:03 * kallisti is not a very disciplined individual.
11:58:11 <Vorpal> fizzie, anyway once tup gets support for variants I'm going to ditch cmake and go for autoconf + tup
11:58:17 <kallisti> so just getting myself to finish all of the important things is difficult enough. :P
11:58:20 <kallisti> but I'm working on that.
11:58:54 <Vorpal> fizzie, which should provide some benefits, such as less broken handling of non-C files.
11:59:13 <Vorpal> I mean, that is one thing cmakes does get right: dependencies for C-files.
12:00:10 <kallisti> my two language ideas involve an improvement to standard regex to make it turing complete (I wouldn't call it too esoteric as it's pretty normal)
12:00:25 <Vorpal> kallisti, you know PCRE is turing complete for example?
12:00:54 <kallisti> the second idea is a sort of mix between graph rewriting and constraint/logic programming, with reversible semantics (basically it never deletes anything (unless I can come up with a sensible garbage collector but I doubt it))
12:01:02 <kallisti> Vorpal: oh, well yes.
12:01:07 <kallisti> I mean to make it more general purpose, rather.
12:01:11 <Vorpal> hm
12:01:42 <Deewiant> Vorpal: tup still doesn't have variants? Dang.
12:01:43 <Vorpal> kallisti, perl's regex are very general purpose, they permit embedding perl code to be executed at various points during the matching
12:01:59 <Vorpal> Deewiant, well, I last checked like right before xmas. It /might/ have it now
12:02:06 <oerjan> kallisti: it reminds me of one reversible computing architecture i read about; it came with an actual physical bit bucket for when you really wanted to delete something :)
12:02:43 <Vorpal> Deewiant, but yeah what with all the build variants of cfunge that is what is holding me back from using it
12:02:54 <Deewiant> Vorpal: I last checked a couple of months ago and thought it was on the top of the todo list :-P
12:03:11 <Vorpal> right
12:03:18 <Vorpal> I thought it was a bit down on the list
12:03:19 <oerjan> since theoretically irreversibility is equivalent to heat production (landauer's principle) you'd want that to be physically expelled, i think
12:03:20 <kallisti> Vorpal: I am aware of all the different kinds of regex and what they can do.
12:03:20 <Vorpal> hm
12:03:29 <Vorpal> kallisti, /all/ of them? ;P
12:03:38 <fizzie> He knows all the regex. All of them.
12:03:39 <kallisti> well... I'm a little poorly versed in POSIX regex
12:03:45 <kallisti> mainly because I hate it.
12:03:47 <Vorpal> kallisti, what about .NET regex?
12:04:05 <kallisti> I've used it? does that count?
12:04:09 <Vorpal> sure
12:04:14 <Vorpal> kallisti, the java ones?
12:04:19 <kallisti> haven't used those no.
12:04:20 <fizzie> POSIX regex come in BREs and EREs, is what you need to know.
12:04:27 <Vorpal> and you use ERE
12:04:32 <Vorpal> because BRE are annoying
12:04:48 <Vorpal> fizzie, doesn't plain grep use BRE iirc?
12:04:50 <kallisti> is BRE where you backslash everything?
12:05:00 <kallisti> (what emacs uses)
12:05:02 <kallisti> because I hate that.
12:05:03 <Vorpal> kallisti, egrep is ERE
12:05:06 <kallisti> right.
12:05:07 <fizzie> Vorpal: It does, yes.
12:05:12 <Vorpal> and I think emacs might use something else
12:05:13 <Vorpal> not sure
12:05:30 <kallisti> emacs basically reverses the semantics of backslashes.
12:05:36 <Vorpal> huh
12:05:37 <fizzie> Emacs is not strictly POSIX, IIRC. But it does involve a lot of backslashing.
12:05:41 <fizzie> Much like BREs.
12:05:44 <Vorpal> right
12:06:03 <Vorpal> fizzie, also sed uses BRE right?
12:06:18 <oerjan> ^bf >,[.>,]<[[<]>[.>]<]!I like to loop it, loop it.
12:06:18 <fungot> I like to loop it, loop it. I like to loop it, loop it. I like to loop it, loop it. I like to loop it, loop it. I like to loop it, loop it. I like to loop it, loop it. I like to loop it, loop it. I like to l ...
12:06:21 <Vorpal> which is why you do like s/aa*/... rather than s/a+/...
12:06:33 <Deewiant> vim has four forms: 'nomagic', 'magic', 'very magic', and 'very nomagic'.
12:06:37 <kallisti> lol
12:06:40 <Vorpal> Deewiant, hah
12:06:43 <Vorpal> Deewiant, what do they mean?
12:07:02 <Frooxius> Hmm... I'm a bit confused about the page creation though. My languages are designed for their own, also somewhat esoteric processing units (there's an emulator - virtual machine and also FPGA soft-core implementation, though not published yet, but it will be later). Should I make a page named after the processing unit or the language? Or maybe both, like "Unit - Language"?
12:07:13 <kallisti> oerjan: yes I was considering having a way to basically delete nodes so that you can manage memory.
12:07:18 <Deewiant> 'magic' is the default and is quite similar to BRE, I think.
12:07:22 <Vorpal> Frooxius, verilog or vhdl?
12:07:28 <Frooxius> VHDL
12:07:31 <Vorpal> hm
12:07:35 <Vorpal> I might be able to read it then
12:07:38 <Vorpal> and that is cool
12:07:44 <Vorpal> (that you implemented that)
12:08:04 <Deewiant> 'nomagic' seems to change only . and *, so that they need to be escaped if you want their special behaviour.
12:08:09 <Vorpal> also that question is best to ask ais523
12:08:39 <Vorpal> Deewiant, heh, and the very variants?
12:08:45 <ais523> Frooxius: page should be named after the language
12:08:58 <Frooxius> oh ok, thanks
12:08:59 <kallisti> I'm not sure to what extent it's going to be full graph rewriting. i.e. I don't want rewriting large subgraphs to be the main means of computation since that's really inefficient.
12:09:02 <ais523> if the language has only one specific purpose, explain what it is on the page
12:09:12 <Deewiant> 'very magic' is like ERE, I guess: every character with a special behaviour uses it by default, and you need to escape it to match the literal character.
12:09:15 -!- Phantom_Hoover has joined.
12:09:28 <Vorpal> Deewiant, and very nomagic?
12:09:35 <Deewiant> And 'very nomagic' is the converse: only backslash has a special behaviour.
12:09:36 <Frooxius> The language is tied a lot though to the processing unit architecture
12:09:48 <Vorpal> hm
12:09:56 <kallisti> but I can't really see this language being efficient at all, considering how it works.
12:09:59 <Frooxius> Yeah, I want it to run in hardware. Yesterday, I was simulating 128 cores on my laptop. It ran 30 kHz (simulated) x3
12:10:04 <Vorpal> Frooxius, are there several languages for the same processing unit?
12:10:12 <Frooxius> Not yet
12:10:15 <Vorpal> hm
12:10:36 <Vorpal> also 128 cores, is it some sort of massively parallel esolang?
12:10:41 <Vorpal> I can't remember seeing any of those before
12:10:46 <kallisti> essentially it works something like this: constraint | pattern -> rewrite
12:10:54 <Vorpal> or wait, wasn't there one that ais523 claimed would be good on GPUs?
12:11:27 <Frooxius> Yeah, it can automatically distributes the work on several cores, though it depends on the algorithm and how many cores are available
12:11:29 <ais523> Checkout's basically eso by virtue of being too low-level
12:11:29 <kallisti> each computation step produces a copied state of the graph, which each new node pointing to its predecessor(s) via a "past edge", which makes it possible to revert past edges.
12:11:37 <kallisti> s/which/with.
12:11:41 <ais523> it's not really an esolang designed for GPUs, more a description of how GPUs worked converted to esolang form
12:11:45 <kallisti> s/\./\//
12:11:58 <Vorpal> ais523, do they still work that way?
12:12:09 <ais523> I assume so
12:12:12 <ais523> unless it's changed in the last year
12:12:20 <ais523> which is possible, I guess, but seems moderately unlikely
12:12:30 <Frooxius> I made huge block of instructions and then ran simulation just for fun on 128 cores |3
12:12:48 * kallisti thinks he's probably going to implement the graph lang in Haskell because why not.
12:13:22 <Vorpal> ais523, hm I'm missing an FMA instruction. I think most GPUs have them
12:13:43 <Frooxius> But I made some tests and if I make a simple algorithm, that's about 20 instructions and run it with one core, it takes 40 cycles to complete with one core and only 12 cycles with four cores.
12:13:50 <Frooxius> Of course, while producing same result
12:13:54 <Vorpal> ais523, but yes, it matches what I know about GPUs pretty much
12:14:03 <Vorpal> though I'm not sure about the selection of instructions
12:14:12 <ais523> selection of instructions was mostly a guess
12:14:54 <Vorpal> ais523, and you don't seem to represent there being some hard coded functionality still left. Like dedicated linear interpolation circuitry or texture lookup units
12:15:10 <Frooxius> It supports parallelism, but it's not so massive parallel like GPUs are
12:15:24 <ais523> Vorpal: yes, it doesn't allow for hardcoded highlevel stuff
12:15:26 <ais523> it's very low-level
12:15:32 <ais523> it /does/ allow for texture lookup; that's what rocopy is for
12:15:34 * kallisti is also going to BREAK THE MINDS OF ALL PROGRAMMERS EVER by making & and | the boolean logical operators because this makes way more sense than && and ||
12:15:35 <Vorpal> Frooxius, I look forward to seeing this language
12:15:38 <Vorpal> ais523, ah.
12:15:59 <Vorpal> ais523, with texture interpolation?
12:16:02 <ais523> no
12:16:11 <Vorpal> hm that is like the key feature of textures to me
12:16:19 -!- oerjan has quit (Quit: leaving).
12:16:37 <Vorpal> ais523, I haven't used OpenCL so for all I know it might match that
12:16:40 <Vorpal> I mostly used GLSL
12:19:18 -!- monqy has quit (Quit: hello).
12:19:46 <Vorpal> ais523, is abstain/1 like in intercal?
12:21:21 <ais523> it's more like computed abstain forced at 1, then regular abstain
12:21:24 <ais523> and still more like an if statement
12:21:28 <Vorpal> hm
12:21:32 <ais523> it's basically the same as an if except for timing
12:22:23 <Vorpal> ais523, iirc real GPUs tend to execute the same code on all processing elements in a given core, just throw away any results that wasn't actually taken by the given processing eleme nt
12:22:26 <Vorpal> element*
12:22:47 <ais523> Vorpal: indeed
12:22:51 <ais523> that's what I'm getting at with abstain
12:22:55 <Vorpal> right
12:23:02 <ais523> the code has to be executed, it's just that it can ignore what it does
12:23:09 <Vorpal> indeed
12:23:44 <Vorpal> ais523, where do you handle that for loops? I do believe GLSL allows different loops to take a different number of iterations
12:23:58 <Vorpal> err that is
12:24:05 -!- Frooxius has quit (Ping timeout: 240 seconds).
12:24:05 <Vorpal> the same loop on different processing elements
12:24:14 <Vorpal> I guess you just abstain the last few times
12:24:18 <ais523> Vorpal: it'd have to cap it to the maximum number of iterations
12:24:28 <Vorpal> well yeah
12:24:39 <ais523> however, all sane GPU programming would make a loop have the same number of iterations for the entire weave
12:24:50 <Vorpal> well yes
12:24:57 <Vorpal> ais523, not sure what you mean by weave here
12:25:12 <ais523> Vorpal: it's a technical GPU term
12:25:16 <ais523> as is half-weave
12:25:21 <Vorpal> what does it mean though?
12:25:27 <ais523> basically, a half-weave is the number of actual commands that run simultaneously on one processing element
12:25:30 <Vorpal> ah
12:25:37 <ais523> and a weave is the number of commands that /effectively/ run simultaneously
12:25:40 <Vorpal> right
12:25:44 <ais523> because there's a 1-cycle pipelining delay
12:26:21 <kallisti> actually I could do something TOTALLY CRAZY
12:26:33 <ais523> so the rule is that weaves give you perfect simultaneity, and that you need to synchronize things like memory accesses within a half-weave to get the best results
12:26:39 <kallisti> and make v and ^ for logical conjunction/disjunction
12:26:42 <Vorpal> ais523, hm
12:26:55 <Vorpal> ais523, but these details seems to be hidden from you when you are writing GLSL?
12:26:55 <ais523> kallisti: nah, use Unicode
12:27:00 <ais523> Vorpal: right, indeed
12:27:04 <ais523> GLSL is rather higher level than OpenCL
12:27:06 <kallisti> but I can't type Unicode quickly. :P
12:27:10 <Vorpal> ais523, ah.
12:27:18 <Vorpal> I guess I want to avoid opencl then?
12:27:28 <Vorpal> because that stuff sounds annoying
12:27:55 <Vorpal> ais523, I just noticed "avoid if when at all possible" seemed to work pretty well for glsl
12:28:13 <ais523> Vorpal: well, it depends on what you're writing the code /for/
12:28:22 <ais523> if you want to write vertex and fragment shaders, glsl is a pretty good choice
12:28:29 <Vorpal> ais523, also does anyone actually use the geometry shader?
12:28:35 <Vorpal> it doesn't seem to perform well at all
12:28:42 <kallisti> I think using Haskell's list monad will make the logic programming stuff much easier.
12:28:52 <ais523> if you want to write bitcoin mining code, you're probably better off with opencl
12:28:58 <Vorpal> ais523, right
12:28:58 <ais523> Vorpal: I'm not sure; they're a comparatively new thing
12:29:08 <ais523> and I'm not entirely up-to-date on what they actually do
12:29:37 <Vorpal> ais523, and if you want to use the GPU to accelerate image manipulation? I know hugin uses GLSL for it, but is it actually the best choice?
12:30:03 <Vorpal> <kallisti> but I can't type Unicode quickly. :P <-- I can. Try M-x set-input-method RET TeX RET
12:30:11 <Vorpal> it is awesome
12:30:29 <kallisti> what if I don't know TeX though? :P
12:30:29 <ais523> Vorpal: hmm, I'm not sure
12:30:35 <ais523> possibly depends on what manipulation you're doing
12:30:36 <Vorpal> kallisti, you need to learn it
12:30:53 <ais523> main advantage of something like opencl is that you could make sure that memory was being loaded in an optimal way
12:30:54 <Vorpal> ais523, well in the case of hugin, mapping flat images into whatever shape it needs to be for merging in a panorama
12:30:59 <Vorpal> it doesn't use it for the actual merging
12:31:05 <Vorpal> just the bending of the input images
12:31:22 <Vorpal> I guess you might want to use the texture units there
12:31:36 <Vorpal> to get interpolation when there wasn't a 1:1 map for the pixels (the usual case)
12:31:50 <Vorpal> can you access the texture units from opencl?
12:33:56 <ais523> sure, it's called "constant memory"
12:34:12 <Vorpal> ais523, but can you get the interpolation then?
12:34:34 <ais523> not sure; my guess is it'd involve a nonstandard but nonetheless common extension
12:34:38 <Vorpal> heh
12:37:51 <kallisti> ah okay, now I see why they say Haskell's type system is like a mini-Prolog.
12:39:31 -!- derdon has joined.
12:40:05 -!- sebbu2 has joined.
12:40:05 -!- sebbu2 has quit (Changing host).
12:40:05 -!- sebbu2 has joined.
12:41:14 -!- sebbu has quit (Ping timeout: 240 seconds).
12:41:49 -!- sebbu2 has changed nick to sebbu.
12:45:39 <Vorpal> ais523, btw does opencl have built in noise functions?
12:45:52 <Vorpal> ais523, glsl does but most GPUs just return 0 on them
12:45:57 <ais523> it doesn't have too much built in stuff
12:45:58 <Vorpal> which makes them effectively useless
12:46:13 <ais523> it's one of those languages which is bare-bones and expects people to write libraries for it
12:46:39 <Vorpal> and with most I mean all but one card series which I believe is nowdays discontinued
12:46:51 <Vorpal> (some 3dfx thingy iirc)
12:48:29 <kallisti> http://en.wikipedia.org/wiki/Logical_consequence
12:48:31 <kallisti> I don't really see
12:48:48 <kallisti> what makes this different from implication over the conjunction of every element in the set...
12:49:38 <Vorpal> ais523, GLSL kind of reminds me of NQC. NQC is a C-like language for the Lego Mindstorms standard firmware. It had lots of useful domain-specific functions and not much else.
12:49:41 <kallisti> like why does it get its own name, basically.
12:54:03 <kallisti> > let entails :: [Bool] -> Bool -> Bool; entails ss s = not (and ss && not s) in entails [2 < 4, 2 > 0] (2 == 3)
12:54:04 <lambdabot> False
12:56:13 <kallisti> > let entails :: [Bool] -> Bool -> Bool; entails ss s = not (and ss) || s in entails [2 < 4, 2 > 0] (2 == 2)
12:56:14 <lambdabot> True
12:56:16 <kallisti> much better
12:57:45 <kallisti> De Morgan's laws to the rescue.
12:58:15 <Vorpal> wow what a strange texture format: floating point, 9 bits of precision, shared exponent. GL_RGB9_E5
12:58:27 <Vorpal> so 5 bits of exponent I think?
12:58:45 <ais523> three 9s are 27, plus 5 is 32
12:58:48 <Vorpal> yes
12:58:51 <ais523> so it packs neatly
12:58:54 <Vorpal> ais523, still it is a pretty strange format
12:59:43 <Vorpal> there is also GL_R11F_G11F_B10F
12:59:48 <Vorpal> those floats lack sign bits
12:59:56 <Vorpal> and the blue one has less precision
12:59:57 <Vorpal> why
13:00:14 <fizzie> So that it'd sum up to 32.
13:00:28 <fizzie> And why would you need negative numbers in a texture?
13:00:39 <Vorpal> true
13:00:55 <Vorpal> fizzie, still it is a strange format with less precision in blue
13:01:08 <ais523> Vorpal: there are a bunch of asymmetrical pixel formats like that
13:01:13 <Vorpal> indeed
13:01:14 <ais523> there's quite a common 556 one, for instance
13:01:21 <Vorpal> hm
13:01:21 <ais523> I think it's based on what the eyes are best at distinguishing
13:01:28 <fizzie> I thought that was 5-6-5 with 6 on green, most commonly.
13:01:41 <Vorpal> not in opengl as far as I can find
13:01:52 <ais523> fizzie: I'm not sure what order it's in, but 6 on green is entirely believable
13:01:58 <Vorpal> there is 3-3-2 (integer) for example
13:02:14 <Vorpal> normalized integer even
13:02:16 <ais523> what on earth would a 2-bit float be like anyway?
13:02:18 <Vorpal> not sure what that is
13:02:39 <ais523> or even sillier, a 1-bit float
13:02:45 <Vorpal> heh
13:04:44 <fizzie> The old OpenGL glTexImage2D man page I have here lists GL_UNSIGNED_SHORT_5_6_5 for the external format.
13:05:13 -!- Frooxius has joined.
13:05:36 <fizzie> Also the 4_4_4_4 all-four-bit RGBA, and the 5551 "I guess we can spare a single bit for an alpha channel" formats.
13:05:41 <fizzie> And the 10_10_10_2.
13:06:09 <Vorpal> I was mostly looking at floating point formats
13:06:29 <Vorpal> but sure I can find all of those apart from 565
13:06:57 <ais523> fizzie: does 5551 have 128 shades of colour, and 128 shades of transparent?
13:07:01 <ais523> that seems a little weird
13:07:27 <ais523> or, hmm, you could define transparent white as actual transparent
13:07:27 <Frooxius> just two shades of transparent?
13:07:38 <ais523> and have a fixed arbitrary value for the alpha as the other value
13:07:51 <fizzie> ais523: 128? 5+5+5 is 15 bits.
13:07:54 <ais523> Frooxius: it's not Either Transparent (Word5,Word5,Word5)
13:08:01 <ais523> it's (Word5,Word5,Word5,Boolean)
13:08:03 <ais523> fizzie: err, right
13:08:09 <ais523> 32768
13:08:58 <fizzie> Vorpal: Your list is probably for the internal color formats, which might not have a 565 one.
13:09:27 <Vorpal> fizzie, it probably is, I'm looking on the opengl wiki
13:09:32 <Vorpal> wrt texture formats
13:09:39 <Vorpal> image formats even
13:09:53 <kallisti> hm why does Prolog only allow horn clauses..
13:10:01 <Frooxius> ais523: what? I know three word5 and a boolean but what does the boolean mean? You use the first three to store the color and boolean to determine two levels of transparency?
13:10:19 <ais523> it's 5 + 5 + 5 + 1, right?
13:10:21 <ais523> 1 bit is a boolean
13:10:35 <ais523> my point is that once you've set the alpha channel to transparent, you still have 15 bits of color
13:10:43 <Vorpal> kallisti, iirc they are easy to compute?
13:10:50 <kallisti> lame
13:10:53 <ais523> that you're just wasting, because different shades of totally transparent are visually indistinguishable
13:10:56 <Frooxius> Yeah, but why have 15 bits of color?
13:11:06 <Vorpal> kallisti, like always possible to find an answer to
13:11:07 <ais523> Frooxius: so if it's not transparent, then you can have colors
13:11:15 <Vorpal> kallisti, unlike some other forms
13:11:15 <Frooxius> Yeah, that's what's bothering me as well
13:11:18 <ais523> we have 32769 useful possibilities out of 65536 here
13:11:18 <Vorpal> but that is all iirc
13:11:22 <fizzie> ais523: Retaining color values even in fully transparent regions might still make sense; it's not like it's rendered as-is always.
13:11:27 <ais523> I was suggesting that perhaps the format should do something with the other 32767
13:11:32 <Frooxius> If the bit means that it's completely transparent then the color doesn't matter that much
13:11:40 <ais523> fizzie: oh, indeed, and many graphics packages have an option to do just that
13:12:11 <Vorpal> ais523, well you might want to use it for something else. It is not like the pipeline is fixed
13:12:38 <Frooxius> What about to store first some bitmap (literally map of booleans) that determine transparency and then store ONLY visible pixels, that is ,the transparent ones will be skipped. If you want to save space
13:12:39 <ais523> well, if you're using it for something else, why are you putting an RGBA meaning on it anyway?
13:12:49 <ais523> Frooxius: that'd be hell on a GPU's memory model
13:12:55 <ais523> that's a compression format, not an in-memory graphics format
13:13:09 <Frooxius> Oh, sorry, I didn't know you were talking about in-memory
13:13:25 <Frooxius> I kind of popped in the middle of discussion x3
13:13:40 <fizzie> They have those weirdo in-memory compressed texture formats too.
13:13:56 <fizzie> S3TC and whatever.
13:13:59 <Vorpal> yeah
13:14:35 <Frooxius> Yeah, though the one I mentioned can't be easily accessed, in order to find a pixel by its x and y position, you would have to scan the bit-alpha map first
13:14:36 <Vorpal> <ais523> well, if you're using it for something else, why are you putting an RGBA meaning on it anyway? <-- because that isn't what you do, those are just names assigned to the specific channels
13:14:47 <Vorpal> ais523, you could just call them xyzw or 0123
13:15:59 <Vorpal> ais523, I used textures for other stuff than images. Like a height map that I then used in the geometry shader.
13:16:13 <ais523> Vorpal: well, indeed, that's the point
13:16:26 <ais523> I'm just not convinced that splitting into 5+5+5+1 format is useful for nonimages
13:16:27 <Frooxius> Hmm... though I understand the feeling. I was designing an opcode and I needed to encode 5 directions, but I had to use 3 bits for that and I still have 3 variations undefined... and it keeps bothering me and I keep thinking of how can I use them |3
13:16:27 <Vorpal> ais523, it ended up in the red channel
13:16:37 <Vorpal> hm
13:17:15 <Vorpal> Frooxius, just draw a whatever-those-diagrams were called.
13:17:23 <Vorpal> when you calculate the gates by hand
13:17:29 <Frooxius> Karnagaugh maps?
13:17:31 <Frooxius> or something like that
13:17:32 <Vorpal> ah yeah
13:17:34 <Vorpal> those
13:17:39 <kallisti> I think my esolang will work with any kind of boolean statement since there's no logical implication involved (i.e. nothing like Prolog's :- )
13:17:40 <Frooxius> But that's something different.
13:17:44 <fizzie> ais523: Well, you *do* get a RGB555 image plus a mask bitmap in the same "thing". You could use it for the "can fly through" mask for a cave-flying game.
13:17:58 <Vorpal> Frooxius, well you could work out what sort of opcode encoding would give you the least number of gates :D
13:18:00 <ais523> red/green/blue/collidable? I suppose that makes sense
13:18:08 <Frooxius> I'm talking about assigning the bits meanings
13:18:12 <ais523> I was thinking about that myself, and decided that collidable often needs more than one bit
13:18:22 <Vorpal> how so?
13:18:26 <kallisti> the implications are state transitions, rather than logical statements.
13:18:52 <Frooxius> well the variations, if I have 3 bits, to store 5 states and other 3 are undefined
13:18:56 <Vorpal> Frooxius, indeed, but I mean you should check which assignment of the bits give the simplest logic
13:19:17 <ais523> Vorpal: to determine what happens on collision
13:19:19 <fizzie> I think at least one cave-flyer had a strictly black-and-white mask bitmap, albeit stored in a separate file. (Though some I recall having more complicated formats, for things that can explode/be set on fire/whatever.)
13:19:24 <Vorpal> ais523, game over :P
13:19:26 <Frooxius> the logic is simple, I mean, decoding it
13:19:52 <Frooxius> There's a simple straightforward way
13:19:54 <ais523> Vorpal: well, I'm used to games with collisions having multiple sorts of collisions
13:19:58 <Vorpal> Frooxius, come on, if you ever want to implement it in TTL logic and wire wrapping you could save yourself a lot of work by making the logic required simple :P
13:20:04 -!- mr_schlauch has quit (Ping timeout: 252 seconds).
13:20:07 <ais523> e.g. in platformers, often you take damage hitting enemies from the sides, but not from above
13:20:30 <Frooxius> I'm implementing it on FPGA
13:20:33 <Vorpal> ais523, not sure you would store that in the image format anyway
13:20:44 <Vorpal> Frooxius, well sure, but what if you want to do it old school in the future?
13:20:52 <fizzie> ais523: The RGB10_A2 format gives you four types.
13:21:07 <Frooxius> Well I already saved myself a lot of work
13:21:10 <Vorpal> heh
13:21:30 <Frooxius> because the way it's designed, I can use exactly same decoding on these 5 states as with another form of encoding, which uses 30 variations
13:21:43 <ais523> Vorpal: also, you just use two layers of n-input NANDs
13:21:48 <Frooxius> and I can use same logic to decode both.
13:21:58 <ais523> to efficiently implement any truth table with TTL logic and wire-wrapping
13:22:03 <Vorpal> hm
13:22:07 <ais523> efficiently in terms of time
13:22:20 <ais523> can be inefficient in terms of logic size in some cases
13:22:36 <Frooxius> There's not much of a truth table, it basically corresponds to numeric base 5
13:22:50 <Vorpal> ais523, if you have like 4 in-signals and you can arrange the values so that they are groupable in a kaurnaugh diagram you save yourself some wires
13:23:01 <Vorpal> as well as gates
13:23:13 <ais523> if the problem's small enough to K-map it
13:23:21 <ais523> then you're probably not going to run out of gates anyway
13:23:26 <Vorpal> true
13:23:36 <Frooxius> I dunno if I would do it old school way though. It would be too large anyway
13:23:39 <Phantom_Hoover> Who is this Frooxius person?
13:23:41 <fizzie> Heh, that S3TC/DXT1 format is the fanciest. Each 4x4 pixel block is stored as two RGB565 (there's the 565 again...) color values, color0 and color1, followed by a 32-bit integer holding two bits per pixel in the block; each pixel is either color0 (bits 00), color1 (bits 01), (2*color0+color1)/3 (bits 10, color0 > color1), (color0+color1)/2 (bits 10, color0 <= color1), (color0 + 2*color1)/3 (bits 11, color0 > color1) or black (bits 11, color0 <= color1).
13:23:54 <Vorpal> ais523, but even for larger problems you could still save some gates.
13:24:03 <Vorpal> even though it might be more work figuring out how
13:24:31 <fizzie> Also it's Karnaugh, not "Karnagaugh" or "kaurnaugh".
13:24:36 <Vorpal> okay
13:25:02 <Frooxius> Yeah, I don't remember how to spell it in English
13:25:29 <fizzie> It's the guy's name, you don't spell it any differently in any other language.
13:26:05 <Frooxius> We spell some names a bit differently in our language
13:26:17 <fizzie> How impolite.
13:26:24 <fizzie> It's like everyone has to call SOMs "Kohonen maps" no matter how stupid they think it sounds.
13:26:25 <Frooxius> ?
13:26:46 <Frooxius> It's not THAT different, I don't really remember how to spell his name
13:27:07 <Frooxius> I don't remember all the names
13:27:11 <Vorpal> fizzie, the names of the ancient greeks tend to be spelled differently in different languages though
13:27:33 <fizzie> Vorpal: I guess there's some variation allowed when the alphabet differs.
13:28:11 <Frooxius> Plus our language has modifiers. If I were to spell your name in some conjunction in my language, it would be "fizziovy mapy"
13:28:18 <Frooxius> It's due to the grammar.
13:28:33 <Frooxius> Most nouns are modified and have many variants
13:28:43 <Frooxius> Otherwise it would sound... REALLY weird
13:29:04 <Frooxius> usually only the ending portion of the name is modified though
13:29:35 <Vorpal> which language is that?
13:29:38 <fizzie> Finnish is a very inflectional language too, and admittedly we add a suffix to Karnaugh; it's just that generally I think everyone's name should be spelled the way they want it.
13:30:03 <Frooxius> Czech
13:30:05 <Vorpal> ah
13:30:21 <fizzie> Sadly the name isn't Finnish-enough looking, so we have to call it "Karnaugh'n kartta" with an apostrophe.
13:30:41 <Vorpal> in Swedish we don't generally modify names beyond the "belongs to"-suffix. Because plural and definite form suffixes doesn't make sense on names
13:30:48 <Vorpal> well I guess plural might
13:30:51 <Frooxius> I think that Karnaugh has only suffix, but sometimes last one or two letters are modified as well
13:31:01 <Vorpal> for family names
13:31:27 <fizzie> We've got 15 noun cases, and many of them make sense for names.
13:31:33 <Frooxius> I mean... I just don't remember how exactly to spell his name, that's why I added "or something like that"
13:31:33 <Vorpal> fizzie, strangely enough it is called Karnaughdiagram in Swedish, not Karnaughkarta
13:31:55 <fizzie> Well, it's not a "map"-map all geography-like.
13:32:05 <Vorpal> indeed
13:32:09 <Frooxius> it's called map in my language
13:32:20 <Frooxius> well "mapa"
13:32:30 <fizzie> It's called map in Finnish too, but "diagram" makes equally much, if not more, sense.
13:32:33 <fizzie> Whoops, it's bank-time. ->
13:32:33 <Frooxius> But that one doesnt mean just geography map
13:34:36 -!- Frooxius has quit (Read error: Connection reset by peer).
13:36:03 -!- Frooxius has joined.
13:36:17 <Frooxius> oops, sorry, broadband connection (EDGE) x3
13:36:30 <Frooxius> There's a bad signal here
13:36:51 -!- Frooxius has quit (Read error: Connection reset by peer).
13:36:51 <itidus21> http://en.wikipedia.org/wiki/A_Book_from_the_Sky
13:37:08 -!- Frooxius has joined.
13:37:20 <Frooxius> aaaarg, bad connection again
13:37:31 <Frooxius> regarding the 5551 though... what if the last bit activates some transparency mode, where the first 15 bits get reallocated like 4443 - RGBA, that is 4 bits for every color channel (so the color resolution lowers a bit) and 8 levels of transparency
13:39:00 <itidus21> forget my link.. awesome topic.. i need to scroll up on this one i think
13:39:04 <itidus21> color formats
13:39:37 <fizzie> Sounds slightly complicated, though certainly possible. Also, 9 levels when you count the non-transparent case.
13:39:40 <kallisti> http://fc05.deviantart.net/fs71/i/2011/104/0/8/nyan_cat_timelapse_by_kingaby-d3dygfa.jpg
13:39:49 <itidus21> i guess they could do some huffman encoding of images kind of
13:40:10 <itidus21> like.. determining the probability rates of color neighbourhoods
13:40:10 <kallisti> jpeg uses these fancy things called wavelets.
13:40:16 <Frooxius> yaaay DA, did you make that kallisti?
13:40:24 <kallisti> Frooxius: not at all
13:40:50 <fizzie> If you want to call DCT a wavelet transformation...
13:41:43 <fizzie> I was under the impression that the JPEG2000 nobody uses does actual wavelets, though.
13:41:44 <itidus21> like .,.. if middle pixel is FF0000, then topleft pixel is a% likely to be 000000, b% likely to be 000001, c% likely to be 000002... hsahss% likely to be FFFFFF
13:42:03 <Frooxius> Anyway, that reminds me of this joke I made http://fc00.deviantart.net/fs71/f/2011/338/5/f/eight_gigabytes_of_ram_by_frooxius-d4i5698.png :3
13:42:23 <kallisti> fizzie: oh yes that's the one I was thinking of.
13:42:24 -!- Frooxius has quit (Read error: Connection reset by peer).
13:42:40 -!- Frooxius has joined.
13:42:48 <Frooxius> ugh again
13:42:51 <Frooxius> Anyway, that reminds me of this joke I made http://fc00.deviantart.net/fs71/f/2011/338/5/f/eight_gigabytes_of_ram_by_frooxius-d4i5698.png :3
13:43:11 <Vorpal> that got through the first time
13:43:28 <fizzie> Offhand I wouldn't be surprised if you could mathematically speaking describe DCT as a wavelet transformation with the right sort of really boring basis functions.
13:43:31 <Frooxius> oh cool, sorry, I lost connection immediately after sending that, so I wasn't sure
13:43:34 <itidus21> and on the basis of these %'s, you could map the bits of the neighbouring pixels somehow
13:44:10 <itidus21> <-- sort of dumb, sort of smart, both at same time
13:44:18 <fizzie> OpenGL doesn't do Amiga's HAM formats. :/
13:44:37 <fizzie> Okay, back out to the snow. ->
13:44:38 <Vorpal> fizzie, what were those?
13:44:40 <Vorpal> oh well
13:44:57 <fizzie> Hold And Modify, the pixels depend on neighbors.
13:45:16 <fizzie> You get more colors but it's difficult to do sharp edges.
13:45:41 <itidus21> fizzie: ahh.. so i had a nice idea but its done long ago eh?
13:45:47 <Frooxius> actually here's link to the DA page, not direct to image http://frooxius.deviantart.com/art/Eight-Gigabytes-Of-RAM-272339180 Dunno why I linked that
13:46:15 <itidus21> everything has already been done :P
13:46:21 <itidus21> criuudhwudihewuidhwe uidhweuidh ewuidhewuihduiew dhwuih diuhw diuhw iudh iuwehdiuhweiudhweuihdiuwhduiwdwe
13:46:45 <itidus21> `log fuck fuck fuck
13:47:14 <HackEgo> 2007-02-11.txt:01:49:58: <SimonRC> fuck fuck fuck fuck fuck
13:47:48 <kallisti> it's okay I accidentally invented FRP.
13:48:01 <ais523> `pastlog wtf
13:48:20 <HackEgo> 2009-11-19.txt:04:38:00: <Darth_Cliche> WTF!
13:48:20 <itidus21> kallisti: oh cool
13:48:24 <ais523> `pastlog wtf
13:48:38 <HackEgo> 2007-05-01.txt:00:19:54: <SimonRC> but WTF does the group have that effect on me?
13:48:53 <itidus21> wow.. simonrc is popular in these logs
13:49:38 <ais523> well, obviously if you search for swearwords you're going to get people who swear more
13:49:50 <ais523> `pastlog motherfucker
13:49:54 <itidus21> lol
13:49:57 * ais523 wonders about the chance of no results
13:49:59 <HackEgo> 2011-01-18.txt:20:41:14: <elliott> Jeb did it, motherfucker.
13:50:08 <ais523> ah, no, there was at least one
13:50:33 <itidus21> `pastlog motherfucker
13:50:40 <HackEgo> 2011-03-22.txt:23:54:58: <Gregor> http://programming-motherfucker.com/
13:51:13 <ais523> `pastlog Feather
13:51:15 <ais523> yes, I went /there/
13:51:20 <HackEgo> 2008-08-23.txt:17:41:11: <AnMaster> ais523, feather?
13:51:32 * Frooxius bubbles
13:51:49 <ais523> ?
13:52:02 <itidus21> fizzie: well.. yes i feel proud that i just described HAM (in my poorly worded kind of way).. it is a testament to my comprehension of pixels
13:52:28 <ais523> OK, esoteric idea: image format that's neither raster nor vector
13:52:40 <ais523> hmm, what other possibilities are there?
13:52:42 -!- nooga has quit (Ping timeout: 252 seconds).
13:53:10 <Frooxius> Some language to describe the image algorithmically?
13:53:12 * itidus21 laughs.
13:53:25 <ais523> Frooxius: hmm, I was wondering along those lines too
13:53:27 <itidus21> sorry had to laugh
13:53:40 -!- azaq231 has joined.
13:53:46 <itidus21> not as an insult
13:53:49 -!- Frooxius has quit (Read error: Connection reset by peer).
13:53:53 <itidus21> but, just because someone had to
13:53:58 -!- azaq23 has quit (Ping timeout: 240 seconds).
13:54:35 <itidus21> ais523: my way of approaching this kind of problem would be to look for the generalization
13:54:45 <itidus21> and make another child from it
13:54:58 <ais523> ah, right
13:54:59 -!- Frooxius has joined.
13:55:01 <Frooxius> I hate this connection >.<
13:55:05 <Frooxius> Some language to describe the image algorithmically?
13:55:08 <Frooxius> I think they actually used something like that for one (or possibly more) game that they squeezed to 100 kB or so. They actually stored all textures and such algorithmically
13:55:21 <itidus21> so, vector and raster would be, children of some parent
13:55:52 <itidus21> humm
13:56:09 <Frooxius> So the game took like... ages to load, because it needed to render all the stuff |3
13:56:13 <itidus21> ais523: ok ok.. heres one idea i had once
13:56:29 <itidus21> an 8x4 monochrome display...
13:56:40 <ais523> let's see… raster images are a bit like an imperative description of what to draw to the screen
13:56:41 <itidus21> the video memory consists of a single 32 bit integer
13:56:42 <ais523> as is, say, RLE images
13:56:58 <ais523> more complicated compression schemes are more like an OO description
13:57:18 <ais523> and vector images are a bit like a declarative description, if you consider "what to draw to the screen" to be a rasterisation
13:57:29 <ais523> so, hmm, what else is left?
13:57:49 <itidus21> hmm.. its too hot and im too hungry for this lovely topic wuaahhh
13:58:15 <ais523> clearly, we need constraint-based images
13:58:48 <itidus21> ais523: i am primarily interested in graphics
13:58:54 <itidus21> i have tried to figure some stuff out before
13:59:01 <itidus21> one idea i had once was....
13:59:03 <itidus21> that
13:59:34 <itidus21> an image which has only 1 colour, can be stretched and shrunken without affecting it at all
14:00:43 <ais523> hmm, not true for raster images, surely?
14:00:54 <ais523> if it's 100x100, and you stretch it to 150x150
14:00:58 <ais523> then you can't roundtrip it back to100x100
14:01:01 <ais523> *to 100x100
14:01:06 <ais523> oh, you mean solid color, I see
14:01:09 <itidus21> ya
14:02:17 <itidus21> i applied myself to thinking about graphics in the past but never really got far
14:02:25 <itidus21> but that was one idea i realized
14:03:22 <ais523> <kerio> it's still not an excuse for a modern os to ship without a ssh client or with a telnet client
14:03:33 <ais523> ^ for all the people who just wouldn't believe me when I told them I knew an ssh fanboy
14:03:49 <Frooxius> yeah, but 1 solid color is not much of an image
14:04:04 -!- Frooxius has quit (Read error: Connection reset by peer).
14:04:23 <itidus21> and on the spur of the moment i just descrbed a way that a set of images can be optimized for hold and modify without having heard of hold and modify before.. so i feel pretty accomplished from that
14:04:58 <itidus21> actually i think i have heard of it..
14:05:06 <itidus21> in an old edition of computer and video games
14:05:17 <itidus21> but i think the article just said the prorgammers used some clever tricks
14:05:38 <itidus21> maybe its an unconcious uhm
14:05:47 <itidus21> unconcious plagiarism
14:06:23 <itidus21> meh i sure ramble
14:08:03 -!- Frooxius has joined.
14:08:35 <Frooxius> Lost signal again >.<
14:11:44 <itidus21> i... i saved a document by accident.. and lost all the images inside it
14:11:46 <itidus21> oy vey
14:14:05 <myndzi> http://en.wikipedia.org/wiki/Kkrieger <- game you're thinking of (probably)
14:14:56 <itidus21> beats myself around the head with imaginary baseball bat
14:16:42 <myndzi> "Textures are stored via their creation history instead of a per-pixel basis" .. interesting
14:17:01 <itidus21> myndzi: maybe i was not actually thinking of ham at all
14:17:04 <myndzi> well, an interesting optimization task anyway
14:17:12 <myndzi> ham what
14:17:16 <itidus21> it was some scifi game in an old magazine
14:17:16 <myndzi> i want a ham sandwich!
14:17:17 <myndzi> :P
14:17:30 <itidus21> it said that the programmers used some tricks to get more colours
14:17:55 <myndzi> ah no, i was referring to frooxius's comment
14:18:01 <myndzi> kkreiger is probably the game he was talking about
14:18:09 <itidus21> who was?
14:18:19 <myndzi> Frooxius> I think they actually used something like that for one (or possibly more) game that they squeezed to 100 kB or so. They actually stored all textures and such algorithmically
14:18:32 <myndzi> demoscene dudes are pretty cool :)
14:18:58 <itidus21> a file went bad in open office
14:19:01 <ais523> I read recently that there were some people developing an esolang-like language for golfing demos
14:19:06 <itidus21> i did repair but repair didnt go well
14:19:29 <itidus21> when i tried to save it.. i did so without thinking and overwrote it
14:19:40 <Frooxius> oh my graviton
14:19:49 <itidus21> it doesn't really matter.. i retained all the text, but i had some silly images
14:19:58 <itidus21> and the images gave this file character
14:20:11 <Frooxius> The connection... O.e I got no messages for a few minutes and then BAM! a few dozen messages at once x3
14:20:42 <myndzi> you got three copies?
14:20:45 <itidus21> i put a lot of work into my little documents.. i need to be more careful
14:20:46 <myndzi> haha, interesting
14:21:00 <Frooxius> I don't recall name of that 100 kB game, though I can look it up
14:21:08 <itidus21> yeah i played the 96kb game
14:21:12 <myndzi> Frooxius: kkreiger
14:21:17 -!- Ngevd has joined.
14:21:21 <itidus21> good stuff
14:21:21 <Ngevd> Hello!
14:21:28 <Frooxius> yeah, I think that's the one
14:21:38 <myndzi> though it was an entry in a demo party
14:21:47 <myndzi> it's just the most notable one people seem to have heard of :)
14:22:10 <Ngevd> myndzi, you're the one with a cyborg account, right?
14:22:14 <Deewiant> kkrieger*
14:22:21 <Ngevd> ^celebrate
14:22:21 <fungot> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/
14:22:22 <myndzi> | | | `\o/´ | | | `\o/´ | | |
14:22:22 <myndzi> /´\ >\ /| | /´\ /| |\ | /< >\ |\
14:22:22 <myndzi> (_|¯'\ /'\
14:22:22 <myndzi> |_) (_| |_)
14:22:36 <Frooxius> I like artistic games a lot though. I try to make my own games as an art form
14:23:10 <itidus21> the game i am thinking of turns out to be Universe on Amiga
14:23:24 <itidus21> i once read they used some kind of tricks to get more colours
14:24:24 <myndzi> cyborg account?
14:24:27 <itidus21> "Universe was based on a modified version of Enchantia's game engine (the most notable addition was the in-game text and dialogue system and the increase in the Amiga color palette)"
14:24:35 <myndzi> probably not, i'm not sure what you're talking about :)
14:24:37 <Ngevd> myndzi, half bot
14:24:41 <Ngevd> Half not bot
14:24:44 <myndzi> oh lol
14:24:50 <myndzi> "account" doesn't really apply on irc
14:24:55 <myndzi> but nah, i just idle a bunch :)
14:25:01 <Ngevd> Well, nick
14:25:09 <Ngevd> And you do the celebrate thing
14:25:17 <myndzi> hehe
14:25:26 <myndzi> well it appears that somebody stored a convenience macro \o/
14:25:26 <myndzi> |
14:25:26 <myndzi> /<
14:25:33 <myndzi> it draws legs on anything though
14:25:43 <Ngevd> \m/ \m/
14:25:43 <myndzi> `\o/´
14:25:44 <myndzi> |
14:25:44 <myndzi> /´¯|_)
14:25:44 <myndzi> (_|
14:26:09 <ais523> what's with the leading 9s?
14:26:28 <myndzi> leading ... 9s?
14:26:39 <ais523> <myndzi> 9 `\o/´9
14:26:39 <myndzi> |
14:26:39 <myndzi> /|
14:26:50 <myndzi> your irc client is rendering color codes weirdly
14:27:00 <Ngevd> So's... mine?
14:27:06 <myndzi> it's ^k69^o
14:27:21 <Deewiant> I see no nines nor any colours
14:27:31 <myndzi> which is how it should be ;)
14:27:43 <Frooxius> I see no colors at all
14:27:47 <myndzi> it's not colored
14:27:50 <myndzi> there's a reset directly after them
14:28:00 <myndzi> it's just hidden tags so i don't interpret lines multiple times or when pasted etc.
14:28:01 <Deewiant> Why?
14:28:14 <myndzi> long as it was copied in color anyway
14:28:23 <myndzi> kind of bot-loop protection
14:28:37 <ais523> ah, right
14:28:43 <ais523> one of the possible smilies starts with `
14:28:51 <ais523> well, dancers
14:28:59 <ais523> so if not for that leading screwup, you could get a loop with hackego
14:29:10 -!- sebbu2 has joined.
14:29:10 -!- sebbu2 has quit (Changing host).
14:29:11 -!- sebbu2 has joined.
14:29:26 <myndzi> well, i wrote this script some time before i ever came here, but you have the idea ;)
14:29:37 <myndzi> it was a problem so i fixed it, i don't even remember what the problem was now
14:29:45 <myndzi> it might have only applied to me!
14:30:02 <myndzi> since i do some funky things with my own client
14:30:18 <myndzi> for example...
14:30:22 <myndzi> <- :myndzi!myndzi@c-67-168-184-168.hsd1.wa.comcast.net PRIVMSG #esoteric :for example...
14:32:45 <Frooxius> have to go, byeeee
14:32:59 -!- sebbu has quit (Ping timeout: 252 seconds).
14:32:59 -!- cheater has quit (Ping timeout: 252 seconds).
14:33:00 -!- Frooxius has quit (Read error: Connection reset by peer).
14:33:03 -!- sebbu2 has changed nick to sebbu.
14:38:08 <itidus21> one thing i have pondered about graphics is that things like graphics plots never resemble anything
14:39:07 <itidus21> like, it is not common for a formula to represent a bitmap
14:40:00 <myndzi> well, bitmaps don't frequently come in the form of elegant mathematical expressions ;)
14:40:05 <myndzi> have you read about fractal compression?
14:40:20 <itidus21> like most lineart is discontinuous
14:41:28 <itidus21> and then the idea comes as, just use the brute force of the computer which is available :P
14:41:34 <Vorpal> myndzi, I seem to remember there is a way to represent any 1-bit bitmap as an equation.
14:42:04 <Vorpal> ah yes https://en.wikipedia.org/wiki/Tupper%27s_self-referential_formula
14:42:05 <myndzi> yeah
14:42:07 <myndzi> 1 or 0
14:42:07 <myndzi> :P
14:42:17 <Vorpal> myndzi, no I mean as in each pixel is either black or white
14:42:18 <myndzi> but you mean 1 as in the bit depth i'm sure
14:42:19 <Vorpal> not grey
14:42:34 <Vorpal> see the link
14:42:35 <myndzi> i'd believe it, but is that representation significantly shorter or simpler?
14:42:47 <Vorpal> myndzi, see the link and decide for yourself
14:43:02 <myndzi> haha, awesome
14:43:03 <Vorpal> I would call it clunky however
14:43:04 <myndzi> a mathematical quine
14:43:22 <Vorpal> myndzi, thing is, you can select some numbers in there to draw any image
14:43:33 <ais523> it's cheating, it's taking an encoding of itself as input
14:44:50 * myndzi shrugs
14:45:00 <myndzi> it doesn't look to be very efficient as far as compression goes
14:45:10 <Vorpal> well that is correct
14:45:22 <Vorpal> myndzi, I was simply replying to "<myndzi> well, bitmaps don't frequently come in the form of elegant mathematical expressions ;)"
14:45:35 <Vorpal> I think the idea is pretty elegant :P
14:45:49 <itidus21> headache being induced
14:45:50 -!- cheater has joined.
14:45:50 <myndzi> except the fact that it requires a multiple-line constant :P
14:45:52 <Vorpal> myndzi, anyway: procedural textures
14:46:06 <Vorpal> myndzi, bah, details
14:46:44 <Vorpal> myndzi, procedural textures tend to be more or less simple mathematical formulas
14:47:08 <Vorpal> quite often there is some perlin noise in there though, which might not be so simple
14:47:29 <myndzi> well, yeah, but itidus was commenting on prevalence
14:47:39 <myndzi> such techniques might be prevalent in the demoscene but not really outside of it
14:48:05 <Vorpal> myndzi, eh, I used procedural textures quite a bit. Minecraft water is by default a procedural texture afaik
14:48:34 <Vorpal> I'm not sure how common it is in other contexts
15:01:46 -!- nooga has joined.
15:02:32 -!- Frooxius has joined.
15:06:21 -!- qfr has joined.
15:06:38 <fizzie> The .kkrieger-making tool, .werkkzeug, has this artist-friendly(ish) GUI for playing around with expressions and parameters.
15:06:57 -!- MSleep has changed nick to MDude.
15:07:22 <Ngevd> For some bizarre reason, I keep thinking that "Euler" begins with J
15:07:24 -!- MDude has quit (Read error: Connection reset by peer).
15:07:28 <Ngevd> > head "Euler"
15:07:29 <lambdabot> 'E'
15:07:34 <Ngevd> It doesn't!
15:07:54 <fizzie> And POV-Ray "frontends" (and Blender, and probably other modelers) tend to include procedural-texture-generation UIs where you can spwengle with layers.
15:08:02 <qfr> Because you grossly mispronounce it, Ngevd? :|
15:08:17 <Ngevd> qfr, not so it sounds like it begins with a J
15:08:26 <fizzie> Jeuler, the jocular Euler.
15:08:47 <Ngevd> It's only when I think "what's the initials of Project Euler" do I make this error
15:08:48 <qfr> A rough English approximation of how it's pronounced is "oilah"
15:09:08 -!- MDud has joined.
15:09:08 <fizzie> You grossly mispronounce it with a silent J, perhaps.
15:09:08 <qfr> In modern standard German that is
15:09:12 -!- MDud has changed nick to MDude.
15:09:21 <qfr> Different in Swiss German
15:10:08 -!- Frooxius_ has joined.
15:10:31 -!- MDude has changed nick to MDud.
15:10:35 -!- MDud has changed nick to MDude.
15:10:56 -!- MDude has changed nick to MDuck.
15:11:00 -!- MDuck has changed nick to MDude.
15:11:05 -!- Frooxius has quit (Ping timeout: 240 seconds).
15:11:13 <Frooxius_> What?
15:11:18 -!- Frooxius_ has changed nick to Frooxius.
15:11:25 <fizzie> A dud duck. Is that like a duck which doesn't quack?
15:12:01 <MDude> mIRC keeps switching nick/alternate nick and then keeping it the wrong way around.
15:12:31 <qfr> mIRC? On MY freenode?
15:12:49 <myndzi> what happens is:
15:12:55 <myndzi> if you are USING your alt nick
15:13:02 <myndzi> and you change to a nick that's not your main nick
15:13:07 <myndzi> it modifies the setting
15:13:13 <myndzi> you can use /tnick to avoid this
15:13:18 <Frooxius> Is mIRC a blasphemy here?
15:13:26 <myndzi> it becomes a problem when you get guested or something
15:13:28 <Frooxius> Or something like that
15:13:30 <myndzi> mirc changes your main nick to Guest
15:13:44 <myndzi> so when you go to change to your main nick, you instead change the wrong one
15:13:50 <myndzi> or s omething like that anyway. you should get the picture :)
15:14:06 <myndzi> you can alias tnick and maybe reset nick and anick when you get disconnected
15:18:15 <Frooxius> 8-bit metal! >:3 http://freemusicarchive.org/music/Heosphoros/Embered_Recollections/Eleven_Acausal_Fire
15:18:34 <myndzi> i found something awesome yesterday
15:18:58 <myndzi> http://www.sotb.se/
15:20:03 <Frooxius> They don't sound bad :3
15:20:10 <myndzi> not at all
15:20:32 <myndzi> vocals are a little .. well, not bluegrass but it doesn't really matter
15:20:59 <myndzi> because of them i also found iron horse, and they seem to have a bunch of cover albums of bands like metallica or black sabbath etc.
15:21:03 <myndzi> even linkin park lol
15:21:15 <Frooxius> Does anyone listen to Machinae Supremacy?
15:21:57 <myndzi> think i've heard of them, but i can't place it
15:22:13 <Frooxius> SID Metal as they call it
15:22:24 <Frooxius> Chiptunes + Metal
15:23:09 <myndzi> i found the bluegrass band 'cause i was looking for piano covers
15:23:14 <itidus21> i downloaded a bunch of dragonball z game music recently
15:23:15 <myndzi> there are some good piano renditions of various songs on youtube
15:24:03 <Frooxius> I actually used their music in a short film I did, named "School as a computer game" :3 http://www.youtube.com/watch?v=hAAIPezSwVg
15:24:08 <itidus21> :o
15:24:25 <myndzi> ha, this is an interesting combination
15:24:32 <Frooxius> What is?
15:25:00 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
15:26:01 <myndzi> machinae supremacy
15:27:10 <Frooxius> yeah they're great! :3 They're even fine with me using their music in that video (they're actually even glad for fan works x3 )
15:27:54 <myndzi> http://www.youtube.com/watch?v=iKQ048-O4vs#t=1m2s <- i want to find a whole album with songs like the intro riff here
15:29:04 -!- nooga has quit (Ping timeout: 276 seconds).
15:29:06 <myndzi> HAHA oh wow
15:29:07 <myndzi> http://www.youtube.com/watch?v=p8cLJcm_RoU
15:29:10 <myndzi> totally didn't know that
15:31:32 <fizzie> Machinae Supremacy has played once or twice (or thrice; can't quite remember) at Assembly.
15:32:05 <Frooxius> Though recently, they seem to get more metal-like and less chiptune-y :-(
15:32:29 <fizzie> And Press Play On Tape did it last year; they're also quite 8-bitty, though not at all metal.
15:32:46 <fizzie> Or I guess officially they spell it PRESS PLAY ON TAPE.
15:33:16 <Frooxius> The songs I used in the short film are actually the ones that are available for free on their website
15:36:52 <fizzie> Oh, I see they've released (via Pirate Bay, no less) their Assembly 2011 concert video.
15:39:47 <itidus21> Frooxius: that is really a very cool video
15:39:56 <Frooxius> thanks O.O
16:09:57 <itidus21> interesting youtube channel
16:10:45 <itidus21> its kind of funny, that, your understanding of 8bit must be so mysterious
16:11:04 <Frooxius> What do you mean by mysterious? Oo
16:11:40 <itidus21> well i was born in 82, and my first computer was a NES.. im not sure which year that was exactly
16:12:16 <itidus21> ah.. 89 :-?
16:12:38 <Frooxius> What? Are you asking if I'm 89?
16:12:42 <itidus21> i guess you're not all that young
16:12:46 <Frooxius> I'm 91
16:12:49 <itidus21> oh i got my NES in 89
16:12:55 <Frooxius> oh x3
16:13:12 <Frooxius> I'm October 1991
16:13:23 <itidus21> im not sure how i figured that out actually
16:13:45 <Frooxius> I still don't know what you mean by the mysterious though
16:13:59 <Phantom_Hoover> itidus21, wait, you're *29*‽
16:14:05 <itidus21> yup...................
16:14:16 <Ngevd> You're younger than you look
16:14:22 <Ngevd> Older, rather
16:14:26 <Frooxius> I remember that we had Sega Master System when I was 3 or 4 and later Sega Genesis
16:14:40 <Ngevd> My first console was a Playstation 2...
16:14:43 <Ngevd> I feel young
16:14:48 <Frooxius> no computer though really as in, PC and such
16:15:05 <itidus21> ahh maybe ngevd feels the mystery about 8bit then
16:15:22 <fizzie> We never had consoles, I just rented a Genesis (well, Mega Drive hereabouts) from the video store every now and then. :/
16:15:41 <Frooxius> Hmm, I think it was named Mega Drive here as well
16:15:45 <Frooxius> What kind of mystery?
16:15:59 <itidus21> back then.. the option was.. 1) watch standard def tv 2) watch a vhs tape 3) play 8bit console
16:16:15 <itidus21> and if you were lucky you had some old computer
16:16:58 <Frooxius> I see
16:17:04 <itidus21> so slot cars and remote control cars were a lot more exciting back then
16:17:30 <Frooxius> Yeah. I know that even computer felt more exciting and mysterious for me when I was little.
16:17:36 <Frooxius> Maybe that's what you mean? The feeling of mystery?
16:17:54 <fizzie> There is no way to know what he means: that's the mystery.
16:17:54 <Ngevd> It's like how the Romans built the Pantheon
16:18:01 <itidus21> well.. for someone who wasnt raised on 8bit games then they have to wonder what exactly is it like to play 8 bit games
16:18:24 <Ngevd> Actually, I play Super Mario Bros on a NES emulator from time to time...
16:18:29 <itidus21> ---- in a time when they are being sold for a lot of money :P
16:18:35 <Frooxius> I play old games in emulators nowadays too :3
16:18:45 <Frooxius> Though dad has NES as well for a while
16:19:03 <Frooxius> But mostly it was Sega Master system. Which is 8 bit actually
16:19:12 <itidus21> i mean like... there was no 3d, there was no polygons, there was no street fighter
16:19:23 <Ngevd> I've got a friend who's got a Betamax player
16:19:34 <Frooxius> So I played some 8-bit games in my childhood, but not really that much, because later dad sold the console
16:20:00 <itidus21> i dunno exactly
16:20:29 <Frooxius> I remember... I couldn't even read much, so the help of M602 (something like Midnight Commander) that was on the computer seemed like a huge mysterious book that would take me ages to read |3 Now I can read it like in 5-10 minutes
16:21:12 <Frooxius> Though I didn't get computer until I was 12
16:21:42 <itidus21> Frooxius: anyway, your youtube is quite interesting... you're very creative
16:21:47 <Frooxius> Before then, we had nothing, because parents divorced
16:21:56 <Frooxius> Thanks O.O
16:23:30 <fizzie> There was a Prolog system on our 286; now *that* was the weirdest. It even had some example programs that implemented an "ask about geography" thing.
16:23:33 <itidus21> in that housepets animation, did you work out the animation skeleton or was it done automatically?
16:23:44 <Frooxius> Which one?
16:23:56 <itidus21> the one where you move him around like a puppet
16:24:30 <Frooxius> Oh, no it was done manually, I positioned the parts with code
16:24:58 <Frooxius> It was just silly experiment, it's not even much good |3
16:25:03 <itidus21> hmm... did you make the whole system?
16:25:48 <Frooxius> Well I quickly scripted it, I basically wrote a code that positions the images on the screen based on input angles and X, Y positions and then created a simple keyframe system, that calculates the frames between two keyframes
16:26:07 <itidus21> i mean you didn't cheat with flash or anything right? :-D
16:26:15 <Frooxius> it's not made with flash
16:26:19 <itidus21> ok i understand
16:26:23 <itidus21> so you did indeed do all the work
16:26:39 <itidus21> i just had to be sure
16:26:43 <Frooxius> Well it's very simple anyway, it's just an array of angles and positions and all it does it just pick one current one, find the next one and interpolate between them
16:27:08 -!- Vorpal has quit (Ping timeout: 260 seconds).
16:27:12 <itidus21> i was trying to work on a similar idea myself recently...
16:27:23 <itidus21> i didnt get very far exactly
16:27:39 <itidus21> i sort of got an interpolated arm moving
16:27:41 <Frooxius> like if the keyframe[0] is for frame 0 and position 40 and keyframe[1] is for frame 2 and position 20, then it basically first calculates ratio of both
16:27:48 <Frooxius> that is
16:28:04 <itidus21> i think one limit i had was this arm thing i made could only bend at one joint
16:28:20 <Frooxius> (keyframe[n+1].frame-keyframe[n].frame)
16:28:28 <Frooxius> that's the size difference
16:28:35 <Frooxius> errr I mean.
16:28:50 <Frooxius> Like the span of frames and the ratio is calculated like
16:29:02 <itidus21> and it was about the time i gave up when i started to think about ways that it could work out the necessary joint bends to reach the target
16:29:27 <Frooxius> r = (current_frame-keyframe[n].frame) / (keyframe[n+1].frame-keyframe[n].frame)
16:29:34 <Frooxius> Then you can calculate the position as
16:30:06 <Frooxius> actual_x = (keyframe[n].x * (1.0-r) + keyframe[n].x * (r))
16:30:08 <itidus21> do you use the same system to animate tiggy?
16:30:13 <Frooxius> No
16:30:23 <Frooxius> That's not keyframed
16:30:49 <Frooxius> Plus you can first apply some function on the r
16:31:09 <itidus21> ah don't worry im not all that smart.. i won't remember any of this later
16:31:18 <Frooxius> like SinFunc(r), which outputs also 0.0 to 1.0, but assumes that input r is linear and output is sine
16:31:34 <Frooxius> So the animation is nice and smooth - has smooth start and smooth end
16:32:43 <Frooxius> SinFunc(r) can be defined like { return Sin(r*(pi/2)); }
16:32:49 -!- elliott has joined.
16:32:53 <Ngevd> Hello elliott!
16:33:02 <Frooxius> hellooo elliott!
16:33:04 <fizzie> Or just "helliott" in short.
16:33:25 <elliott> hello
16:33:25 <lambdabot> elliott: You have 4 new messages. '/msg lambdabot @messages' to read them.
16:33:44 <fizzie> Joor so popular.
16:34:05 <elliott> three of those messages were me
16:34:08 <Frooxius> Tiggy has instead several animation states defined, like when he's walking, running, jumping and such. Each one of these has some input variables that are used to calculate the positions of the body parts - they are positioned by code as well
16:34:15 <fizzie> Well, self-popular, then.
16:34:46 <Frooxius> Usually it's walking speed and or surrounding's - distance to the floor or ceiling, or vertical speed and such.
16:34:58 * elliott wonders who Frooxius is
16:35:15 <itidus21> Frooxius: i am sort of the dumb guy here.. i am clueless about esoteric programming..
16:35:24 <Ngevd> elliott, he's vaguely new
16:35:32 <Frooxius> I just joined today ^^'
16:36:12 <Frooxius> However, it does smooth transitions between these animations, using a similar way as between two keyframes (calculate the ratio first and then do a sum of the first state *(1.0-r) and second state *r
16:36:27 <ais523> elliott: Frooxius is new, ontopic, and seems to understand what the channel's like
16:36:37 <ais523> you can look at the mess when we welcomed em
16:37:31 <fizzie> ais523: Sad, then, that the Elliott Experience(tm) will likely scar em for life.
16:37:47 <itidus21> and he is into gamedev.. yay
16:37:48 <Frooxius> Plus smooth transitions can happen during various times. For example, when he's walking, then he's walking at specific speed and then there's a small range of the velocity, where the walking animation is transitioned to the running one, based on the speed actually (the speed in the small range is used as the ratio for the smooth transition)
16:38:17 <itidus21> and much better at it than i am
16:38:53 * pikhq mutters
16:39:12 <pikhq> If only Homo sapiens were intelligently designed, then I could curse the designer of the sinus.
16:39:18 <Frooxius> For example, he walks at 10.0 speed and I can have code that calculates the ratio like r = limit( ( speed-10.0)/4.0, 0.0, 1.0)
16:39:31 <Frooxius> So the transition range is 10.0 to 14.0
16:39:44 <Frooxius> limit is limit(val, min, max) limits the value to certain range
16:40:19 <Phantom_Hoover> Is this game an esoteric game?
16:40:32 <Frooxius> Sorry, not really ^^'
16:40:41 <Phantom_Hoover> We shall have to fix that, then.
16:40:46 <Frooxius> Though I have some weird ones in plans
16:40:52 <Phantom_Hoover> Pick a weird topology, apply to game space immediately.
16:41:05 <Frooxius> Well experimental games at least
16:41:06 <Phantom_Hoover> I recommend the real projective plane.
16:41:18 <ais523> Phantom_Hoover: that's actually quite a good one for games, I think
16:42:10 <elliott> Here's the two-step plan to making an esoteric game: 1. Check if your game is one of my game plans. 2. If it's not, make it that and implement it. (You may need to learn a few languages.)
16:42:17 <elliott> It is the ONLY. WAY.
16:42:30 <Frooxius> nuuuuu
16:42:31 <Phantom_Hoover> Hahahaha, as if you'd ever use any language other than Haskell.
16:42:36 * Frooxius starts running in triangles
16:42:44 <elliott> Phantom_Hoover: That's at least one language!
16:42:50 <itidus21> hmm
16:42:50 <elliott> There's also the Cabal file...
16:42:51 <Phantom_Hoover> Or condone the use of anything that wasn't either Haskell or Haskell, but moreso.
16:42:59 <itidus21> he is the chosen one.. in 2012
16:43:01 <elliott> See, that's two languages.
16:43:05 <elliott> itidus21: oh god what.
16:43:22 <itidus21> a mysterious mix of intelligence and creativity
16:43:51 <elliott> I...
16:44:05 <elliott> Frooxius: Congratulations, you're The Prophet(tm).
16:44:08 <ais523> elliott: hey, implement elliottcraft (ais523 version) for me
16:44:09 <elliott> Tell us about how the world will end.
16:44:11 <ais523> I mean, i'ts named after you!
16:44:13 <itidus21> it is likely he will understand esolangs
16:44:17 <ais523> *it's
16:44:18 <Frooxius> WHATDIDIDO? Oo
16:44:24 <elliott> I have no idea.
16:46:40 <itidus21> the force is strong with him i tell you
16:46:51 <Frooxius> hmm... maybe it will end with Kernel Panic. Or a BSOD.
16:47:10 <Phantom_Hoover> <itidus21> a mysterious mix of intelligence and creativity
16:47:14 <Frooxius> Or whatever-Apple-Mac-OS-X-does-when-it-goes-bonkers
16:47:17 <Phantom_Hoover> Is this intelligence relative to itidus21?
16:47:25 <itidus21> hmm...
16:48:06 <itidus21> i stand by my comment :-D
16:49:15 <Phantom_Hoover> JUST SEEN: someone self-censoring 'screwed'.
16:49:48 <Frooxius> s*****d?
16:49:59 <Phantom_Hoover> Worse.
16:50:05 <Phantom_Hoover> 'Scr*wed'.
16:50:38 <Frooxius> That's totally Nitrloglibimostri*vilious
16:51:05 <Ngevd> Yay b*wdl*r*z*t**n
16:51:11 <elliott> Frooxius: OS X just kernel panics too.
16:51:15 <ais523> B****fuck
16:52:18 <ais523> elliott: isn't an OS X kernel panic an image of a power button, plus instructions to reboot your computer in five different languages?
16:52:31 <ais523> if a Mac's going to screen-of-death, at least it's going to be a /stylish/ screen of death
16:52:44 <ais523> whereas Linux just locks up and flashes the num lock and caps lock keyboard LEDs
16:53:01 <ais523> (and I don't think I need to explain what Windows does, it's so well known)
16:53:44 <fizzie> ********k.
16:53:56 <ais523> I would ask what DOS does on kernel panic
16:54:01 <ais523> but I'm not entirely convinced it even has a kernel
16:54:12 <Ngevd> <ais523> B****fuck <-- just realised the joke...
16:54:24 <ais523> Ngevd: it's an old joke
16:54:31 <ais523> but wow, that was almost as slow as Vorpal
16:54:40 <Frooxius> Yeah. Like display an advanced and detailed 3D realtime render of rotating apple with a little diamond worm with a speech bubble saying "According to 9 out of 10 fashion experts, it's very positive for your image if your OS crashes once in a while. Thus, with sole intentions of helping your image, we just crashed your OS. Your Apple"
16:55:04 <fizzie> ais523: The C64 ROM hasn't got a kernel, but it *has* got a KERNAL.
16:55:05 <ais523> incidentally, most OSes don't react sanely to a GPU crash
16:55:26 <ais523> fizzie: the BBC Micro just had a bunch of subroutines at the top of memory that did stuff like writing to the screen
16:55:36 <ais523> with standard names like oswrch
16:55:40 <ais523> and osrdch
16:55:58 <ais523> (which made asm programs hard to read, as I mentally pronounced both words as "ostrich")
16:57:33 <kallisti> holy shit why is google's search bar under like 10 nested divs and tables.
16:58:18 <fizzie> ais523: That's not much more than what the KERNAL has, except I think it's got the standard IRQ, NMI and RESET handlers too.
16:58:35 -!- azaq231 has quit (Quit: Leaving.).
16:58:37 <fizzie> It's even also at the top of the memory.
16:59:15 <Ngevd> Well, my BytePusher version of Hunt the Wumpus is tricky...
17:02:21 <Frooxius> Tables?
17:02:35 <Ngevd> Tables?
17:02:49 <Frooxius> TABLES? Oo
17:06:20 <fizzie> ais523: Also FreeDOS has a component called KERNEL; it contains the KERNEL.SYS file which implements the DOS system calls. I suppose that corresponds to MSDOS.SYS, and possibly also IO.SYS, in MS-DOS.
17:06:37 <ais523> yep, seems about right
17:07:07 <Phantom_Hoover> <ais523> and osrdch
17:07:17 <Phantom_Hoover> Does it make the processor stick its head in the sand
17:16:42 <fizzie> I think I got a "GURU MEDITATION" error out of some website the other day.
17:18:04 <qfr> My notebook came with a copy of FreeDOS
17:18:08 <qfr> I put it into the trash
17:18:56 <ais523> qfr: it's a legal requirement that Microsoft invented, that computers have to be sold with an OS
17:19:01 <ais523> (at least, they managed to force it through)
17:19:14 <ais523> FreeDOS is typically used as a very cheap method of complying with that requirement
17:19:16 <qfr> :L
17:19:21 <ais523> by computer companies who'd otherwise be selling bare boxes
17:19:46 <Ngevd> What's the easiest way to convert a 256x256 bitmap to a Bytepusher codepage?
17:19:51 <ais523> qfr: you did put the copy of FreeDOS in the trash, not the notebook, right?
17:19:51 <fizzie> xscreensaver's BSOD "hack" contains error messages from: Windows 3.1, Windows 95, Windows NT, MS-DOS, AmigaDOS 1.3, Linux, SCO UNIX, BSD UNIX, HPUX, Solaris, Tru64, VMS, HVX/GCOS6, IBM OS/390, OS/2, MacOS (MacsBug, Bomb, Sad Mac, and OSX), Atari ST, Apple ][+, and NCD X Terminals.
17:22:19 <fizzie> Ngevd: If you just need the bytes, and it's a one-off thing, Gimp has a "raw image data" file-writing mode which I guess should suffice.
17:24:34 <fizzie> Actually I'm not terribly sure if it includes the palette if you write an indexed-color image.
17:25:41 <fizzie> But at least a grayscale image is written as a sequence of bytes in the "obvious" manner.
17:27:01 <qfr> ais523: I decline to comment
17:27:21 <ais523> hey, you aren't elliott!
17:27:43 <ais523> oh right: Frooxius, you wouldn't happen to live in Hexham, would you?
17:28:11 <Frooxius> No, sorry.
17:28:18 <ais523> phew
17:28:19 <Ngevd> How about Finland?
17:28:35 <Frooxius> Why would I live there?
17:28:42 <fizzie> That's a *very* good question.
17:28:45 <fizzie> Why would anyone?
17:28:48 <Deewiant> With a Czech hostname, both of those are rather unlikely.
17:29:23 <Ngevd> There's two people in this channel in Hexham and god knows how many in Finland
17:29:33 <ais523> Ngevd: but does anyone else know how many?
17:29:43 <fizzie> Deewiant: I'm sure a place as cosmopolitan as Hexham has a fairly-sized "Czechtown".
17:29:46 <Ngevd> ais523, good question
17:30:53 <elliott> ais523: It's at least five by my last count.
17:31:04 -!- Klisz has joined.
17:31:16 <ais523> am I the only esolanger in Birmingham?
17:31:28 <elliott> Let's see... a tehwa, D eewiant, f izzie, i neiros, m tve, and Z warddijk at the very least.
17:31:37 <elliott> So at least six. And that's before we get to the bots.
17:31:44 <elliott> (Okay, there's only one Finnish bot.)
17:31:51 <elliott> Oh, and that's just people here now, so it's at least seven.
17:32:00 <fizzie> elliott: I don't think "m tve" did? But you didn't count "o klopol".
17:32:40 <Ngevd> Birmingham, second largest city in the UK, has one esolanger, Hexham, a town with about 1% the population, has two
17:33:19 <Deewiant> Two in Sweden?
17:33:53 <elliott> fizzie: Did what? I assumed he's a Finn because you know him. :p
17:33:56 <fizzie> Deewiant: Aren't all of "V orpal", "o lsner" and "F ireFly" from Sweden? Though I might misremember.
17:34:10 <elliott> Yes, and a few more too.
17:34:11 <elliott> I believe.
17:34:14 <Ngevd> Are there any Canadian esolangers?
17:34:21 <ais523> coppro is Canadian
17:34:23 <fizzie> elliott: I don't think I know em, and I had a vague feeling e was from Germany. But I'm certainly not certain.
17:34:27 <elliott> Is Zwaarddijk a Swedish-speaking Finn or vice versa?
17:34:28 <Deewiant> elliott: a loril seems to be in Finland
17:34:34 <elliott> Pretty sure it's the first one.
17:34:38 <elliott> Unless you meant some other.
17:34:41 <elliott> Oh, wait, you were just counting separately.
17:34:51 <elliott> fizzie: Okay, fair enough. Maybe I'm thinking of some other Finn you know. :p
17:35:07 <elliott> Deewiant: I conclude my official tally with the result: "Too many".
17:35:09 <kallisti> lol I like cpressy wrote a script in Perl that literally generates line noise.
17:35:13 <kallisti> +how
17:36:27 <ais523> kallisti: don't you mean random values?
17:36:28 <elliott> Ngevd: *at least two.
17:36:34 <elliott> Also, cpressey used to live in Canadia.
17:36:39 <ais523> for it to be /literal/ line noise it'd need to be trying to get data from a noisy connection
17:36:54 <ais523> and reading noise instead
17:37:05 <ais523> I have seen genuine line noise before now
17:37:06 <kallisti> ais523: http://catseye.tc/projects/noise/script/noise randomly generated in a certain way, yes.
17:37:23 <ais523> when we linked up a couple of serial ports by physically sticking copper wires into the relevant sockets
17:37:28 <ais523> and it got knocked
17:37:40 <kallisti> noise is a tiny utility whose purpose is to simulate line noise — those random bursts of static that occur when communicating with a non-error-correcting modem over an unreliable phone line. Start it up in the background and keep working at your shell prompt — or, keep trying to!
17:37:53 <Ngevd> I've got to get some of my friends into esoteric programming
17:38:03 <kallisti> Ngevd: do you have friends that program?
17:38:03 <fizzie> ais523: It could be a physical-simulation sort of line noise. They simulate acoustic instruments and so on, why not line noise.
17:38:18 <ais523> heh
17:38:33 <ais523> fizzie: I actually wrote one of those, come to think of it
17:38:35 <Ngevd> kallisti, two, one's more of an acquaitance, due to him being a bit of a dick, and the other doesn't live in Hexham
17:38:50 <ais523> I was testing a Morse code decoder I'd written that was designed to work on noisy input
17:38:58 <kallisti> hmmm, that's about as many people I know as well. I guess a few more if you count people I've met.
17:39:01 <kallisti> but I don't count those.
17:39:27 <kallisti> ais523: noise cancellation is fun.
17:39:29 <Ngevd> I am going to leave for a while
17:39:32 -!- Ngevd has quit (Quit: Goodbye).
17:44:04 <elliott> @unmtl State s a
17:44:05 <lambdabot> s -> (a, s)
17:54:22 * kallisti finds himself using Facebook less and less.
17:57:05 <quintopia> you still use fb?
17:57:37 <kallisti> yes.
17:57:42 <kallisti> people I talk to use it
17:57:43 <ais523> stop
17:58:05 <kallisti> I probably will once the new terrible profile change takes place.
17:58:19 <kallisti> like, I was fine with every other change
17:58:21 <kallisti> until this one.
17:58:30 <ais523> kallisti: you have reason to think one's coming other than the fact that they happen often?
17:58:37 <coppro> Ngevd: why?
17:59:04 <elliott> <ais523> stop
17:59:05 <elliott> are you zzo
17:59:22 <ais523> elliott: do you seriously have to ask whether any given person is zzo or not?
17:59:37 <kallisti> ais523: are you elliott?
17:59:45 <ais523> if I were, do you think I'd admit it?
17:59:48 <kallisti> kallisti: are you monqy?
17:59:53 <kallisti> kallisti: yes
17:59:55 <elliott> clog: are you glogbot
18:00:03 <Phantom_Hoover> clogbot
18:01:31 <kallisti> elliott: how was your weak squishy human sleep?
18:01:40 <kallisti> I have been awake since last we spakened
18:01:54 <kallisti> spaconed, like bacon.
18:02:29 <kallisti> selenium.common.exceptions.StaleElementReferenceException: Message: u'Element not found in the cache'
18:02:32 <kallisti> WHY
18:15:32 <Phantom_Hoover> Selenium sucks, anyway.
18:16:00 <kallisti> Phantom_Hoover: well yes.
18:16:18 <Phantom_Hoover> Tellurium is better in every way.
18:16:47 <elliott> "Using chr, ord, and -32 is not the right way of doing this. Use toUpper." "@augustss: It's good enough for ASCII."
18:16:55 <elliott> NO FUCK YOU NOTHING IS "GOOD ENOUGH FOR ASCII" JESUS CHRIST
18:18:06 <ais523> elliott: even toUpper isn't correct without some knowledge of the language
18:18:29 <kallisti> elliott: is someone trying to find excuses /not/ to use toUpper?
18:18:40 <kallisti> and instead use... that?
18:18:41 <kallisti> what?
18:18:59 <kallisti> that's going to basically fuck up anything that wasn't lowercase.
18:19:00 <ais523> is the input known to be made out of lowercase letters?
18:19:06 <Phantom_Hoover> Is this Haskell?
18:19:16 <kallisti> presumably, based on function names.
18:19:50 <ais523> chr and ord are commonly used function names for those operations
18:19:50 * elliott decides to just link rather than tediously explaining everything: http://stackoverflow.com/questions/8700564/haskell-converting-small-chars-to-capital
18:19:55 -!- augur has quit (Remote host closed the connection).
18:20:00 <elliott> guy keeps opening trivial homework questions without even trying
18:20:12 <elliott> people keep answering them by giving a complete solution >_<
18:20:25 <kallisti> chr . subtract 32 . ord is not only incorrect but requires more effort than toUpper.
18:20:54 <kallisti> elliott: well, are there any rules against answer homework questions?
18:20:59 <elliott> yeah but he hadn't imported Data.Char so he was getting "not in scope"
18:21:03 <elliott> so much easier to use a broken solution
18:21:15 <elliott> kallisti: you are meant to try and give help for homework questions, not the solution outright
18:21:24 <elliott> (they are tagged "homework", so there is no excuse)
18:22:43 -!- nooga has joined.
18:23:18 <kallisti> hmmmm how /does/ toUpper work with Unicode characters.
18:23:45 <ais523> it /should/ be locale-dependent
18:23:51 <kallisti> is there like, a big table?
18:23:55 <elliott> ais523: for what definition of should
18:24:03 <elliott> i do not believe the unicode standard talks about locales
18:24:57 <ais523> elliott: well, it depends on the language
18:25:01 <ais523> Turkish is the normal example
18:25:13 <ais523> and I think it more likely talks about locales than languages
18:26:21 <elliott> ais523: I am dead sure that (a) the Unicode standard defines various case transformations and (b) they do not depend on any sort of external state.
18:26:46 <kallisti> elliott dead.
18:26:51 <ais523> elliott: the external state would be used to determine which transformation was used, then, presumably
18:26:52 <kallisti> sure
18:27:42 <elliott> ais523: how do I say "you're wrong" in a way that doesn't make your response "<what I just said>"
18:28:09 <ais523> elliott: a link would be helpful
18:28:29 <ais523> it is impossible to correctly determine what the capital version of "i" is without knowing the language, anyway, is the point
18:28:41 <elliott> http://www.unicode.org/versions/Unicode6.0.0/
18:28:55 -!- nooga has quit (Ping timeout: 240 seconds).
18:29:10 <elliott> specifically, http://www.unicode.org/versions/Unicode6.0.0/ch04.pdf
18:29:14 <kallisti> hmmm if that's the case then toUpper is not referentially transparent.
18:29:39 -!- kmc has joined.
18:29:43 * ais523 looks
18:30:18 <Phantom_Hoover> I think I've just stopped paying attention to YouTube's featured videos altogether, even if they're relevant.
18:31:06 -!- augur has joined.
18:37:02 <elliott> “If you are a programmer working in 2006 and you don’t know the basics of characters, character sets, encodings, and Unicode, and I catch you, I’m going to punish you by making you peel onions for six months in a submarine.”
18:37:02 <elliott> —joel spolsky
18:37:02 <elliott> Joel on Software
18:37:03 <elliott> this is actually
18:37:05 <elliott> on the unicode website
18:37:17 <elliott> http://www.unicode.org/announcements/quotations.html#spolsky
18:38:49 <ais523> elliott: page 7: " Also contains context-dependent mappings, with flags to distin- guish them from the normal mappings, as well as some locale-dependent mappings."
18:38:56 <ais523> I knew it'd be there if I looked hard enough
18:39:26 <ais523> (and I'm not taking it out of context either, although feel free to check yourself)
18:39:56 <elliott> ais523: <kallisti> hmmmm how /does/ toUpper work with Unicode characters. <ais523> it /should/ be locale-dependent
18:39:59 <elliott> it isn't, your quote is irrelevant to that
18:40:29 <ais523> elliott: my quote is from the database that contains the default uppercasing algorithms for unicode
18:41:03 <ais523> it also says that there's a legacy best mappings database that isn't locale-dependent
18:41:16 <ais523> that should only be used by legacy implementations
18:41:37 <ais523> although that's at least partly to do with mapping one lowercase character to multiple uppercase characters
18:41:42 <elliott> blah, i cba to actually read the spec, but i'm still going to maintain my belief that i'm pretty sure you're wrong :)
18:42:10 <kallisti> wow properties sure are bad in Python.
18:43:34 <kallisti> oh hmmm no it's a little bit better than it used to be.
18:45:03 <ais523> elliott: in the actual case of lowercase i, http://www.unicode.org/charts/PDF/U0000.pdf says "Turkish and Azerbaijani use 0130 İ for uppercase"
18:45:51 <elliott> ais523: that sounds like just a comment, not a definition
18:45:59 <ais523> right, indeed
18:46:05 <ais523> I'm trying to find the case mapping charts at the moment
18:48:21 <ais523> elliott: anyway, I think it's possible that we're both right
18:48:33 <ais523> it seems that there are pure legacy versions that map characters to characters
18:48:42 <ais523> and more contexty versions that map strings to strings, and require locale info
18:48:50 <ais523> the only case mapping charts I could find were for the legacy version
18:48:58 <elliott> @unmtl Writer w a
18:48:59 <lambdabot> (a, w)
18:49:06 <ais523> "mtl"?
18:49:07 <elliott> ais523: heh
18:49:11 <elliott> monad transformer library
18:49:15 <ais523> ah, OK
18:49:29 <elliott> @unmtl WriterT (ContT r (StateT s (ErrorT e IO))) a
18:49:29 <lambdabot> Plugin `unmtl' failed with: `WriterT (ContT r (StateT s (ErrorT e IO))) a' is not applied to enough arguments, giving `/\A. a (A, ContT r (StateT s (ErrorT e IO)))'
18:49:32 <elliott> argh :D
18:49:37 <elliott> @unmtl WriterT (ContT r (StateT s (ErrorT e IO))) [Int] a
18:49:37 <lambdabot> [Int] (a, ContT r (StateT s (ErrorT e IO)))
18:49:41 <elliott> ...
18:49:41 <elliott> oh
18:49:46 <elliott> @unmtl WriterT [Int] (ContT r (StateT s (ErrorT e IO))) a
18:49:46 <lambdabot> (a -> [Int] -> s -> IO (Either e (r, s))) -> s -> IO (Either e (r, s))
18:49:50 <elliott> ais523: like so ^
18:49:56 <elliott> @mtl (a -> [Int] -> s -> IO (Either e (r, s))) -> s -> IO (Either e (r, s))
18:49:56 <lambdabot> Maybe you meant: ft map msg pl unmtl url
18:50:01 <elliott> that doesn't exist though :P
18:50:30 <ais523> elliott: so it's working out the type that actually represents the type of a monad action obtained by stringing together a bunch of monad transformers
18:50:47 <elliott> it's just expanding the definitions recursively
18:50:52 <ais523> yep, indeed
18:51:06 <elliott> except they're actually data types, not type synonyms, so the two types are not actually equivalent :) but it's what they /mean/
18:51:51 <kallisti> they're isomorphic if you ignore the fact that a data declaration adds an extra bottom. :>
18:52:00 <kallisti> but many of those are newtypes, right?
18:52:01 <elliott> kallisti: they're newtypes.
18:52:03 <kallisti> yes.
18:53:23 <fizzie> ais523: http://www.unicode.org/Public/UNIDATA/SpecialCasing.txt "-- contains additional information about the casing of Unicode characters. (For compatibility, the UnicodeData.txt file only contains case mappings for
18:53:37 <fizzie> characters where they are 1-1, and independent of context and language."
18:53:47 <ais523> 0130; 0069 0307; 0130; 0130; # LATIN CAPITAL LETTER I WITH DOT ABOVE
18:53:56 <ais523> fizzie: thanks for finding it for me
18:55:02 <kallisti> elliott: I'm tempted to make semicolons an infix operator for statement blocks...
18:55:09 <kallisti> talk me out of it.
18:55:26 <elliott> kallisti: don't work for spammers
18:55:29 <elliott> oh, talk you out of /that/
18:56:06 <fizzie> There's the language-specific (and context-specific; sometimes the mapping depends on surrounding characters, like for sigma and... I guess that's about it) ones.
18:56:14 <elliott> oh no, I think I ruined my Monoid instance
18:56:24 <elliott> hmm it might not be a problem though
18:56:36 <ais523> kallisti: ICA uses infix semicolon as sequencing, it works fine
18:56:56 <ais523> the main problem is precedence
18:57:00 <kallisti> low
18:57:06 <ais523> there's no precedence that doesn't look weird in some combination or other
18:57:06 <kallisti> the precedence is low. problem solved.
18:57:08 -!- iconmaster[1] has joined.
18:57:15 <ais523> kallisti: lower than if? while? lambda?
18:57:32 <kallisti> yes
18:57:38 <kallisti> those are functions with () notation
18:57:38 <ais523> pair formation?
18:57:47 <kallisti> I don't think I have that.
18:57:59 <ais523> a,b;c,d is a bit of a weird case
18:58:08 <ais523> because clearly a,(b;c),d is the only way it'd type
18:58:42 <kallisti> I don't have to worry about that because I don't treat , as an operator.
18:59:01 <kallisti> so technically if , is an infix operator it's lower precedence than any operator.
18:59:16 <kallisti> as it's defined as part of the function syntax.
19:00:07 <kallisti> hmmm yes I like that. I'll do that.
19:01:48 <kallisti> actually top-level statements require no line terminator, but I suspect if I don't add one it will make the errors look like crap.
19:05:47 -!- oerjan has joined.
19:09:54 <oerjan> <kallisti> I think using Haskell's list monad will make the logic programming stuff much easier. <-- note that iirc there exists a monad-logic package which is more flexible than lists
19:09:55 <elliott> hello oerjan welcome to ~AMERICA~
19:10:11 * oerjan looks suspiciously at elliott
19:10:28 <oerjan> was that scripted?
19:11:46 -!- elliott has quit (Read error: Operation timed out).
19:11:59 <olsner> ~AMERICA~
19:13:01 <kallisti> oerjan: I assume it also handles non-determinism?
19:13:23 <oerjan> well what i recall is it has this function:
19:13:23 -!- elliott has joined.
19:13:28 <oerjan> :t (>>-)
19:13:29 <lambdabot> forall (m :: * -> *) a b. (MonadLogic m) => m a -> (a -> m b) -> m b
19:14:08 <oerjan> which is like >>- except reorders things to ensure all combinations are tried
19:14:42 <elliott> 19:13:01: <kallisti> oerjan: I assume it also handles non-determinism?
19:14:47 <elliott> no it's a logic monad without nondeterminsm
19:14:48 <elliott> aka
19:14:48 <elliott> Maybe
19:14:51 <oerjan> > [1..] >>- \x -> (,) x <$> [1..]
19:14:52 <lambdabot> [(1,1),(2,1),(1,2),(3,1),(1,3),(2,2),(1,4),(4,1),(1,5),(2,3),(1,6),(3,2),(1...
19:15:25 <oerjan> *is like >>=
19:15:49 <oerjan> and also i think there are more efficient instances than []
19:15:52 <elliott> yeah
19:16:55 <oerjan> i think there's a LogicT monad transformer
19:17:04 <elliott> oerjan: hmm, are monad instances uniquely determined? i suspect not, but can't think of a counterexample :)
19:17:04 <oerjan> :t LogicT
19:17:05 <lambdabot> forall a (m :: * -> *). (forall r. (a -> m r -> m r) -> m r -> m r) -> LogicT m a
19:17:07 <elliott> I know Functor is
19:17:36 <oerjan> elliott: heh i wondered about that too, whether an Applicative can extend to two different Monads
19:18:18 <elliott> oerjan: it would be weird to have Functor and Monad uniquely determined but not Applicative
19:18:20 <oerjan> Applicative obviously isn't
19:18:28 <elliott> hmm well
19:18:31 <elliott> if ZipList is a monad they aren't
19:18:39 <oerjan> oh that
19:18:40 <elliott> but if ZipList isn't a monad, there might well be only one Monad for a given Appliactive
19:18:42 <elliott> Applicative
19:18:52 <elliott> er
19:18:54 <oerjan> ZipList is a Monad ignoring bottom >:)
19:18:58 <elliott> that's a different question :P
19:19:03 <elliott> ok what i was originally asking was
19:19:08 <elliott> are monad instances uniquely determined for a data type
19:19:08 <elliott> not
19:19:09 <oerjan> i'm not _entirely_ sure what it is with bottom
19:19:11 <elliott> are monad instances uniquely determined for an applicative instanc
19:19:11 <elliott> e
19:19:18 <elliott> some data types have multiple Applicatives so they're not equivalent
19:19:25 <elliott> oerjan: i do not believe you have proved that
19:19:30 <oerjan> ok so a simpler question
19:19:40 <elliott> which one is simpler?
19:19:41 <oerjan> is there a type which has two Monad instances.
19:19:46 <elliott> right
19:19:56 <oerjan> in fact there is an obvious one
19:20:08 <oerjan> State can be reconsidered as Reader + Writer
19:20:14 <elliott> hmm
19:20:17 -!- copumpkin has changed nick to HURR_DURR.
19:20:19 <elliott> that has a Monoid constraint though
19:20:25 <elliott> you could make the StateList monad, though
19:20:31 <elliott> and have it be Reader + Writer as well as State
19:20:39 <oerjan> sure but that's a constraint on the parameter, not the monadic value
19:20:39 <elliott> ok, cool
19:20:45 <kallisti> data T a = List [a] | Maybe (Maybe a) -- Nobel prize plz
19:20:49 <elliott> are the applicatives the same?
19:21:19 <kallisti> well I guess that's not two different instances
19:21:20 <kallisti> just one still.
19:21:55 <oerjan> elliott: no they're not the same, the applicative of State still threads the state
19:22:09 <oerjan> liftA2 get get
19:22:11 <oerjan> er
19:22:16 <oerjan> liftA2 (,) get get
19:22:21 <oerjan> or hm
19:22:41 <oerjan> liftA3 (,,) get (modify (+1)) get
19:23:23 <elliott> wat
19:24:04 <kallisti> well you could always do something stupid like...
19:24:25 <kallisti> make >>= only apply the function to the first list element if there is one.
19:24:26 <oerjan> oh and of course backwards state monad has the same underlying type as the forward one, and the reversed applicative i think
19:24:33 <kallisti> basically a Maybe monad instance for [a]
19:24:58 <kallisti> :t listToMaybe
19:24:59 <lambdabot> forall a. [a] -> Maybe a
19:25:16 -!- quintopia has quit (Ping timeout: 252 seconds).
19:26:14 <oerjan> elliott: Functor is special i think, because it's so weaved into parametricity; the free theorem for g :: Functor f => a -> f a is g . k = fmap k . g
19:26:26 <elliott> yeah
19:29:38 <oerjan> <kallisti> data T a = List [a] | Maybe (Maybe a) -- Nobel prize plz <-- i'm not convinced that's either an Applicative or a Monad
19:30:15 <oerjan> there _are_ laws to fulfil, after all.
19:31:10 <oerjan> elliott: and that's basically what i was trying to get at with your CoContra stuff from yesterday - i expect something similar applies
19:31:29 <elliott> similar to what?
19:31:47 <oerjan> to g . k = fmap k . g
19:32:14 <elliott> Right.
19:32:22 <oerjan> *suspect
19:34:43 <elliott> Gregor: NAG NAG NAG
19:35:11 <oerjan> `log zjoin.*scanl1.*diag
19:35:18 <kallisti> emacs has taken a liking to randomly freezing on saves for some reason.
19:35:22 -!- quintopia has joined.
19:35:35 <HackEgo> 2011-12-17.txt:05:00:42: <copumpkin> @let zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []
19:40:02 <oerjan> <kallisti> ah okay, now I see why they say Haskell's type system is like a mini-Prolog. <-- without backtracking though, afaik
19:40:14 <elliott> and no proper constraint solving
19:43:57 <oerjan> i suppose it does at least allow reordering constraints by taking the once it can solve immediately first
19:44:01 <oerjan> *ones
19:44:58 <elliott> @tell Gregor !!!!!!!
19:44:59 <lambdabot> Consider it noted.
19:46:23 <elliott> oerjan: ban Gregor, he's obstructing my construction of ch2
19:46:32 <elliott> obstructing my construction so induction has no suction
19:52:00 <elliott> oerjan: btw i think the word you're looking for is "woven" :P
19:55:39 <oerjan> despite your request, it's quite for the best, not to be too sure it should be the cure to ban the man
19:57:03 <elliott> what
19:57:05 <elliott> also
19:57:11 <elliott> ur the one who complaininged abotu the log formats
19:57:13 <elliott> ings
19:58:48 <oerjan> oh i see, this obligates me to institute a cruel and unusual regime
19:59:01 -!- Ngevd has joined.
19:59:08 <elliott> no, you've already done that part
19:59:14 <oerjan> oh right
19:59:18 <Ngevd> Hello!
19:59:51 <Frooxius> hellooooo! :3
20:02:31 <Frooxius> "Syntax error: Unknown instruction" Yeah, but WHICH ONE?! Who implemented this? Oh wait, I did |3 I seriously annoy myself sometimes *giggles in a somewhat silly way*
20:03:14 <elliott> i
20:03:51 <Phantom_Hoover> what
20:03:57 <Phantom_Hoover> what is |3 meant to mean
20:04:13 <Ngevd> I keep forgetting Ron Paul is a serious politician
20:04:14 * Phantom_Hoover is terrified of what he may find out, but asks out of curiosity.
20:04:29 <elliott> Ngevd: Don't worry, he isn't.
20:05:03 <Frooxius> |3 is an emoticon, like a >.< face or -_- but with cat-face
20:05:06 -!- augur has quit (Remote host closed the connection).
20:05:25 <kallisti> Frooxius: I don't believe you.
20:05:37 <kallisti> it's clearly like a pipe on the 3rd file descriptor or something.
20:05:49 <Frooxius> Well it can have multiple meanings
20:05:52 <Phantom_Hoover> Frooxius.........................
20:06:00 <Frooxius> What? Oo
20:06:11 <Phantom_Hoover> is it like a robot cat
20:06:23 <Phantom_Hoover> because that is the only way that could conceivably look like a cat
20:06:32 <Frooxius> yeah, that too probably
20:07:35 <Ngevd> It's like that guy in Star Trek TNG, with the weird sunglassesd
20:08:07 <elliott> geordi
20:08:17 <Ngevd> Possibly
20:08:30 <olsner> it's cat-geordi
20:08:32 <Ngevd> I don't really watch Star Trek enough to have ever seen a full episode
20:08:42 <Ngevd> Geordicat
20:23:00 <Phantom_Hoover> Odocat.
20:23:05 <Phantom_Hoover> (It is a very smug cat.)
20:25:30 <oerjan> <Vorpal> ah yes https://en.wikipedia.org/wiki/Tupper%27s_self-referential_formula <-- that's not actually a quine, since the actual bitmap is given in k to be supplied separately
20:26:29 <oerjan> i recall someone made a better one somewhere that was more like an actual quine
20:26:52 * oerjan swats Vorpal in absentia for being absent -----###
20:26:59 <elliott> swat Gregor for being absent pls
20:27:07 <elliott> but yeah that thing is STUPID
20:27:19 * oerjan swats Gregor for being absent -----###
20:29:30 <oerjan> <Ngevd> For some bizarre reason, I keep thinking that "Euler" begins with J <-- presumably then you are pronouncing it with an english eu, not a german one
20:29:41 <oerjan> a german one sounds more like oi in oil
20:29:52 <elliott> i know its oiler but ewler sounds so much better
20:30:04 <oerjan> no it doesn't :P
20:30:16 <Ngevd> oerjan, I don't make this mistake with, e.g., euthanasia
20:34:59 <oerjan> ais523: you missed a couple spams
20:35:32 -!- sebbu2 has joined.
20:35:33 -!- sebbu2 has quit (Changing host).
20:35:33 -!- sebbu2 has joined.
20:36:38 -!- sebbu has quit (Ping timeout: 240 seconds).
20:36:46 <ais523> oerjan: seems Keymaker got them
20:37:19 <oerjan> heh
20:37:22 <Phantom_Hoover> <elliott> i know its oiler but ewler sounds so much better
20:37:25 <Phantom_Hoover> Excuse me wrong.
20:37:43 <Phantom_Hoover> Although it's not as bad as people who pronounce Gauss as 'goss'.
20:37:49 <elliott> gorse
20:40:02 <kallisti> http://upload.wikimedia.org/wikipedia/commons/a/a1/De-carlfriedrichgauss.ogg
20:40:07 <kallisti> you should say his full name like this always
20:40:28 -!- nooga has joined.
20:41:14 <elliott> oh it's
20:41:15 <elliott> gouse
20:41:18 <elliott> i say gorse
20:41:19 <elliott> mentally
20:41:22 <elliott> gorse and ewler
20:41:27 <oerjan> there's a gauss in the house
20:41:30 <elliott> well
20:41:33 <elliott> Phantom_Hoover: i don't actually say ewler
20:41:34 <elliott> i say
20:41:36 <elliott> youwler
20:41:39 <kallisti> wtf gorse why
20:41:42 <kallisti> oh wait you're british.
20:41:44 <kallisti> nevermind
20:41:52 <elliott> au is like
20:41:53 <elliott> or
20:41:54 <elliott> gorse
20:41:58 <kallisti> I bet you say saw with an r don't you.
20:42:00 <kallisti> asshole
20:42:29 <kallisti> how can you rationalize that to make any sense at all?
20:42:41 <kallisti> like... what is the thought process behind adding random r's to words that don't have r's
20:42:44 * elliott just records him saying these things instead of trying to explain them
20:42:45 <elliott> also
20:42:46 <elliott> dude
20:42:54 <elliott> http://en.wikipedia.org/wiki/Rhotic_and_non-rhotic_accents
20:43:10 <kallisti> I see
20:44:54 <kallisti> but that doesn't really explain why
20:44:57 <kallisti> saw has an r in it
20:44:59 <kallisti> when there's no r
20:45:00 <kallisti> in it.
20:45:12 <olsner> kallisti: I think that's the intrusive r
20:45:37 <Ngevd> It doesn't have an r in it. People with a non-rhotic accent just think it sounds the same as its nearest equivalent with an r
20:46:38 <kallisti> what?
20:47:07 -!- sebbu2 has quit (Read error: Connection reset by peer).
20:47:13 <elliott> Sigh, microphone on this doesn't work.
20:47:29 <Phantom_Hoover> Get Ngevd to do it.
20:47:36 <Phantom_Hoover> Science dictates that your accents are identical.
20:47:41 -!- sebbu2 has joined.
20:47:42 -!- sebbu2 has quit (Changing host).
20:47:42 -!- sebbu2 has joined.
20:48:11 <kallisti> Ngevd: what is its nearest equivalent?
20:48:15 <Ngevd> sore
20:48:20 <kallisti> oh...
20:48:42 <Phantom_Hoover> Saw and sore sound the same; so, amusingly, do pawn and porn.
20:48:58 <kallisti> wouldn't a non-rhotic accent pronounce that as... saw without an r? I don't think I understand why a non-rhotic accent would add an r there.
20:49:31 <elliott> Phantom_Hoover: People saying "pawn shop" will never not make me think "HOW DOES DECENT SOCIETY ALLOW OUR ACCENTS TO DO THIS TO US".
20:49:50 <elliott> kallisti: Protip: Thinking of it as "adding an r" in places won't help
20:49:53 * kallisti didn't know that pawn and porn sounded the same.
20:50:08 <kallisti> elliott: but... that's what is happening.
20:50:17 <kallisti> you want me to unthink what is happening?
20:50:33 <kallisti> sheesh, just talk like Americans: problem solved.
20:50:45 <Ngevd> Merry, Mary, Marry
20:50:50 <olsner> just switch accents depending on which of porn or pawn you're saying
20:51:25 <Phantom_Hoover> kallisti, *sigh*.
20:51:41 <Phantom_Hoover> rs extend and... round off vowels.
20:51:48 <kallisti> elliott: so basically "non-rhotic" means "add r's to things." non-intuitively. got it.
20:51:56 <elliott> kallisti: Nope.
20:52:00 <Phantom_Hoover> You really are an idiot.
20:52:01 <elliott> http://en.wikipedia.org/wiki/Rhotic_and_non-rhotic_accents
20:52:31 <Phantom_Hoover> It means that rs before consonants aren't pronounced, and instead apply the aforementioned transform to the preceding vowel.
20:52:32 <kallisti> yes I read that.
20:52:52 <Phantom_Hoover> The result of this is that 'or' sounds like 'aw'.
20:53:44 <kallisti> that doesn't really explain anything though. so "aw" becomes "awr"?
20:53:46 <oerjan> http://en.wikipedia.org/wiki/Linking_and_intrusive_R
20:54:10 <kallisti> oh hi.
20:54:56 <Phantom_Hoover> No, you twat.
20:55:01 <Phantom_Hoover> 'aw' stays as 'aw'.
20:55:14 <Phantom_Hoover> Because 'or' now sounds like 'aw', 'or' and 'aw' sound the same.
20:55:19 <Phantom_Hoover> This is ridiculously simple.
20:55:22 <oerjan> Phantom_Hoover: ^
20:55:22 <kallisti> so "awr"
20:55:28 <kallisti> with an r
20:55:31 <kallisti> ?
20:55:38 <Phantom_Hoover> Jesus christ you really are an idiot.
20:55:42 <Ngevd> The whole point of non-rhotic is that there's no r's
20:55:47 <Phantom_Hoover> They both sound like 'aw'.
20:55:49 <Ngevd> rho is Greek for "r"
20:55:50 <Phantom_Hoover> Ngevd, um no?
20:55:56 <oerjan> Ngevd: ^
20:56:05 <Phantom_Hoover> 'r' is still present if not followed by a consonant.
20:56:34 <kallisti> repeating what non-rhotic means is not going to help explain anything.
20:57:19 <Phantom_Hoover> Yes, but I have explained precisely what the deal is with 'sore' and 'saw', and you have apparently not listened to a word I said.
20:57:28 <Phantom_Hoover> oerjan, do you see the problem with explaining things to kallisti?
20:58:11 <kallisti> http://en.wikipedia.org/wiki/Linking_and_intrusive_R explains it perfectly
20:58:27 <oerjan> Phantom_Hoover: *MWAHAHAHA*
20:59:05 -!- HURR_DURR has changed nick to copumpkin.
20:59:54 <kallisti> basically in some non-rhotic accents an /r/ is added between two consecutive vowel sounds and other weird places.
21:00:15 <kallisti> and that's just... how it works. it can not be explained by the removal of /r/ sounds because that makes /no fucking sense/
21:00:41 <elliott> That's right! kallisti has figured it out!
21:01:02 <elliott> I'm calling up Jimbo Wales and telling him his Wikipedia is wrong; some guy on the internet knows it makes no fucking sense.
21:01:16 <oerjan> it can be explained by the removal of /r/ sounds in some positions, followed by analogous insertion of r in the opposite positions
21:01:19 <kallisti> elliott: Wikipedia doesn't disagree with what I just said?
21:01:25 <kallisti> oerjan: yes.
21:01:48 <Phantom_Hoover> kallisti, you know, what makes you an idiot isn't any particular stupidity; it's your complete inability to admit that you may not understand something.
21:01:56 <kallisti> ?
21:01:56 <olsner> I think I know less about rhotic accents now than I have ever known before
21:02:16 <Phantom_Hoover> Whenever you don't quite see how something fits together, you decide it's probably wrong, and then make it a point of pride to prove this.
21:02:20 <elliott> `addquote <olsner> I think I know less about rhotic accents now than I have ever known before
21:02:23 <kallisti> Phantom_Hoover: no
21:02:25 <HackEgo> 792) <olsner> I think I know less about rhotic accents now than I have ever known before
21:02:48 <fizzie> I never knew anything about rhotic accents, and now I still know nothing about them. *happy*
21:03:14 <oerjan> olsner: think of it as /r/ gradually changing from a phoneme into a non-phonemic way of separating adjacent vowels
21:03:36 <Phantom_Hoover> kallisti, yes, *you do*.
21:03:56 <oerjan> with the change being/stopping at different stages in different dialects.
21:04:04 <Phantom_Hoover> If you'd just have a little humility from time to time and accept that you don't know everything, you might actually know a lot more than you do.
21:04:21 <kallisti> Phantom_Hoover: I don't know everything, obviously.
21:04:52 <Phantom_Hoover> But instead you pretend that you do, or that you understand things just as well as the person explaining it, and they get frustrated and you get steadily more annoying as time moves on.
21:06:05 <kallisti> Phantom_Hoover: depends on the subject. for example, I'm fully aware of what a rhotic consonant is, and when it's being placed in weirds it normally doesn't go in.
21:06:39 <Phantom_Hoover> kallisti, oh? Then why did you need to read that WP article?
21:06:46 <Phantom_Hoover> Surely you knew everything it contained beforehand?
21:07:09 <oerjan> Phantom_Hoover: hey stop leaping to conclusions about other people's behavior! oh wait...
21:07:28 <kallisti> not everything no. I clicked it to learn more details. But I had a general idea of what a non-rhotic accent was beforehand, but was still confused by the sudden insertion of rhotic consonants.
21:08:10 * elliott notes that "<kallisti> I bet you say saw with an r don't you. <kallisti> asshole <kallisti> how can you rationalize that to make any sense at all? <kallisti> like... what is the thought process behind adding random r's to words that don't have r's" does not really sound like someone with an understanding of rhoticity, without actually getting involved in this trainwreck through cunning use of /me.
21:09:36 <olsner> co-cromulent should be a word
21:09:48 <Phantom_Hoover> kallisti, and yet you approached it with an air of smug pedantry, not confusion.
21:09:51 <olsner> not quite sure what it means though
21:10:09 -!- iconmaster[1] has quit (Quit: Ayup, this is a quit message.).
21:10:30 -!- oerjan has set topic: Welcome to the world championship in conclusion leaping | This channel Copywrong 0 YOLD Rogger Sarcridh - All lights reversed (Except for things copyrighted by Gregor Richards) | http://codu.org/logs/_esoteric/.
21:10:33 <kallisti> Phantom_Hoover: I'm generally not confused when I don't know everything. ???
21:10:43 <kallisti> this is the normal state of affairs.
21:10:48 <kallisti> but sure
21:10:53 <kallisti> I sound smug. often.
21:10:56 * oerjan has this feeling that was a bad idea
21:10:58 <Phantom_Hoover> <kallisti> not everything no. I clicked it to learn more details. But I had a general idea of what a non-rhotic accent was beforehand, but was still confused by the sudden insertion of rhotic consonants.
21:11:14 <Phantom_Hoover> Can you please, *please* try to check what you say for consistency?
21:11:57 -!- elliott has set topic: Welcome to the world championship in oerjan being as passive-aggressively judgemental as he possibly can | http://codu.org/logs/_esoteric/.
21:12:00 <kallisti> Phantom_Hoover: can't be arsed.
21:12:31 <olsner> good world championship for oerjan, as he is (by definition?) the only contestant
21:13:13 <oerjan> I KNEW IT
21:13:18 <Phantom_Hoover> Very good. Can you now concede the discussion?
21:13:26 <elliott> imagine if there weren't jokes to deflect criticism with
21:13:33 <elliott> the human race would be so fucked
21:13:34 <olsner> Welcome to the world championship in passive-aggressively communicating only through /topic
21:13:51 <kallisti> Phantom_Hoover: I see what you're saying though. It makes sense. I can often be smug. Is that what I'm supposed to concede? then yes.
21:14:00 -!- oerjan has set topic: Welcome to the world championship in recursive passive aggression | http://codu.org/logs/_esoteric/.
21:14:20 <olsner> I think I was expecting a different concession
21:14:27 <Phantom_Hoover> kallisti, OK, I'm sorry; I forgot that your brain is context-free.
21:14:40 <kallisti> Phantom_Hoover: depends on how much sleep I've had. :P
21:14:47 <Phantom_Hoover> It's not fair to argue with someone with such a condition when I have a fully-functioning long-term memory.
21:15:43 -!- pikhq has quit (Ping timeout: 248 seconds).
21:16:02 -!- zzo38 has joined.
21:16:09 <kallisti> Phantom_Hoover: I think perhaps I don't take a moment to consider that I don't have all the information before forming conclusions. Is this what you mean?
21:17:37 <Phantom_Hoover> That is a suitably flattering way of putting "I am so arrogant that I assume that things are stupid even when people who know much more about them than me tell me otherwise".
21:18:00 -!- oerjan has set topic: Welcome to the world championship in recursive world championships | http://codu.org/logs/_esoteric/.
21:18:19 <olsner> not passive-aggressive world championships?
21:18:19 -!- Phantom_Hoover has set topic: Welcome to the world champion | http://codu.org/logs/_esoteric/.
21:18:32 <olsner> I mean, when did anything turn recursive anyway?
21:18:39 <oerjan> olsner: we had to expand due to great demand
21:19:35 <Phantom_Hoover> olsner, when we remembered that we're a programming channel, so recursion jokes are required.
21:19:53 <kallisti> Phantom_Hoover: I... still think it's stupid. But at least understand how it happens.
21:19:55 <Ngevd> When I saw xkcd 132 for the first time, the only guitar hero I had played was 3, which has a metallica song
21:20:11 <oerjan> olsner: when elliott berated me for berating Phantom_Hoover for berating kallisti
21:20:28 <kallisti> oerjan is my knight in shining armor.
21:20:31 <elliott> i wasn't being passive-aggressive though, i mentioned you directly by name
21:20:32 <kallisti> always coming to my rescue.
21:20:44 <olsner> Phantom_Hoover: but... adding the word recursion doesn't necessarily make it a recursion joke
21:20:46 <oerjan> elliott: ah. sorry about that.
21:20:57 <Phantom_Hoover> olsner, I'm sorry, are you new to recursion jokes?
21:21:08 <oerjan> elliott: i may not be entirely sure about the term
21:21:12 <Phantom_Hoover> You seem to be under the impression that they're meant to be funny, or even make sense.
21:21:52 <olsner> yes, I expect such things of jokes
21:22:04 <olsner> not making sense, but being funny, I expect of them
21:22:43 <kallisti> Phantom_Hoover: It makes sense, since you ignore the letter r and /r/ just becomes this thing you put between consecutive vowels. But still "non-rhotic" is a poor name for such a thing because it /adds/ rhotic consonants. The name is inherently contradictory and that's why I thought it was stupid.
21:22:43 <elliott> Phantom_Hoover: We should do induction jokes instead?
21:22:55 <oerjan> actually already my first topic change was recursive, as i certainly included myself in the reference
21:22:57 <elliott> When you type "induction" into Google it should say "did you mean: inductio".
21:23:05 <Phantom_Hoover> Inductio!
21:23:07 <elliott> Until it ends up at "did you mean: base case".
21:23:24 <elliott> Phantom_Hoover: Sounds like a Harry Potter spell.
21:23:37 <Phantom_Hoover> (I:[NDUCTION])
21:23:51 <elliott> If you can do a spell to one person, and you can do a spell to someone next to them if you've already done it to them, then you can use inductio to do it to the whole world simultaneously.
21:23:57 <Phantom_Hoover> Or should that be (I : [N D U C T I O N])
21:24:13 <elliott> Phantom_Hoover: Is that an Inception joke (you will die if it is).
21:24:32 <kallisti> no I think it's a linked list joke.
21:24:33 <Phantom_Hoover> You just made a crappy recursion joke with induction!
21:24:35 <kallisti> if that's even possible.
21:24:38 <oerjan> Recursion jokes are meant to be recursion jokes.
21:24:39 <Phantom_Hoover> I can do them too!
21:24:47 <zzo38> Do you think a color specification for printing file, should be: CMYK + a value to use on grayscale-only printers + either black/white/normal to select what happens on pure black/white printer
21:25:09 <ais523> if this recursion joke were funny, it would be a recursion joke, but as it isn't it's just a joke
21:25:13 <Phantom_Hoover> Yo dawg I heard you like induction so we put an i in your nduction so you can pattern match while you recurse.
21:25:15 <ais523> see, people, you need base cases!
21:25:22 <elliott> ais523: please op me
21:25:32 <elliott> you all know what you have done
21:25:33 <ais523> elliott: who are you planning to kick/ban?
21:25:34 <Phantom_Hoover> ais523, no, as it isn't it's just a recursion reference.
21:25:40 <kallisti> zzo38: why would you not just calculate the brightness of the RGB value for a grayscale printer? Hmm, I guess that doesn't always turn out perfectly.
21:25:49 <elliott> ais523: you, oerjan and Phantom_Hoover, but I might let you back in after a few minutes
21:26:02 * elliott wonders what answer to that question would actually get him opped.
21:26:10 <kallisti> zzo38: but it sounds as though you have basically two distinct images in one file. How would you deal with such a file in an image editor, for example?
21:26:11 <ais523> zzo38: what about a CGYRMBK printer?
21:26:24 <zzo38> ais523: What is a CGYRMBK printer?
21:26:26 <ais523> elliott: I'm not sure there is one, but it at least makes me curious
21:26:38 <ais523> zzo38: a printer that uses six colors of ink, plus black as an optimisation
21:26:45 <ais523> most people see, say, a cyan+yellow mix as green
21:26:53 <ais523> but the exact mix is slightly different for different people's eyes
21:27:02 <ais523> and for a tetrachromat, you might not be able to do it at all
21:27:13 <ais523> so using six channels rather than three makes sure you can control the color a lot more carefully
21:27:28 <ais523> although I guess it's only used in really high-end printing
21:27:29 <elliott> they should just use one channel for every possible wavelength
21:27:40 <ais523> elliott: the problem is finding one /ink/ for every possible wavelength
21:28:01 <kallisti> elliott: the best answer is probably not to mention anyone by name..
21:28:02 <olsner> black ink mixed with a chemical that induces color blindness
21:28:03 <zzo38> Yes; printer techonology not work well if even intended for tetrachomat and so on; but computer display might be able to make one working for many wavelengths providing very high quality display of light
21:28:39 <elliott> kallisti: well i left you off the list just in case
21:29:12 <kallisti> here's a good answer:
21:29:24 <zzo38> I suppose CGYRMBK would still be only high end printing though. I am not sure what happen if you want to print such a document on such a printer. Possibly you would just make up a new special command for this kind of printers
21:29:42 * kallisti would probably not ban very many people, but would have banned lament (or whoever he was) when he was literally just spamming a single number for pages.
21:29:49 <kallisti> this is just common sense.
21:29:51 <elliott> that was mathnerd
21:29:53 <zzo38> Since the DVI format allows you to use whatever new kind of special commands you want to make up
21:29:56 <ais523> anyway, if we're using one channel for each possible wavelength
21:30:02 <ais523> what wavelength do we use for #esoteric?
21:30:04 <elliott> also i assume ais523 knew i meant a one-time oppage
21:30:08 <elliott> ais523: octarine
21:30:12 <ais523> yes, fair enough assumption
21:30:17 <ais523> elliott: what's that in nanometres?
21:30:22 <elliott> ais523: i
21:30:25 <Phantom_Hoover> ais523, 567nm.
21:30:54 <elliott> that was i as in i \in C
21:31:18 <ais523> elliott: I figured it eventually, although it took a few tries
21:31:55 -!- mr_schlauch has joined.
21:32:01 <kallisti> `welcome mr_schlauch
21:32:05 <HackEgo> mr_schlauch: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
21:32:33 <ais523> gah, I can't read the wololo in the hostname as anything but an Age of Empires reference
21:32:59 <elliott> freebnc.net? that sounds secur
21:32:59 <elliott> e
21:33:14 <ais523> what would the b stand for there?
21:33:38 <kallisti> Phantom_Hoover: I see you've tactfully disappeared from this thread of discussion. :P
21:33:41 <elliott> ais523: err?
21:33:50 <ais523> elliott: I know what a VNC is, but not a BNC
21:33:57 <ais523> kallisti: but so has mr_schlauch
21:34:02 <elliott> ais523: bouncer
21:34:08 <ais523> ah, I see
21:34:22 <elliott> free bouncer -> give your irc password to random people with no reason to be nice to you :)
21:34:28 <Phantom_Hoover> kallisti, yes, for much the same reasons as my tactful disappearance from conversations with brick walls.
21:34:36 <ais523> elliott: not identified
21:34:38 <ais523> so no password being given
21:34:46 <elliott> ais523: that doesn't make the idea of a free bnc any more secure
21:35:02 <ais523> Phantom_Hoover: but you'll leave the walls offended!
21:35:25 <Phantom_Hoover> ais523, they might not let me lean on them!
21:36:57 <kallisti> Phantom_Hoover: I was under the impression I had conceded somewhat. and the topic interests me because I do take a conscious effort to learn and grow as a person. I agree that I can be stubborn but I believe there's a bit of an attribution bias going on.
21:37:15 <elliott> breaking news Phantom_Hoover admits to wanting to lean on kallisti
21:37:19 <elliott> my ship....... has sailed....................
21:37:37 <kallisti> lol
21:37:40 <Phantom_Hoover> kallisti makes conscious effort to lean and grow as a person
21:37:45 <Phantom_Hoover> he is a pea plant??
21:37:49 <kallisti> yes.
21:38:02 <kallisti> Mendel would be proud.
21:38:07 <kallisti> he is my godhead.
21:38:51 <kallisti> Phantom_Hoover: hmm, or maybe not attribution bias, but a lack of self-awareness in how I present myself.
21:39:31 <oerjan> `addquote <ais523> oh right: Frooxius, you wouldn't happen to live in Hexham, would you? <Frooxius> No, sorry. <ais523> phew <Ngevd> How about Finland? <Frooxius> Why would I live there? <fizzie> That's a *very* good question. <fizzie> Why would anyone?
21:39:33 <HackEgo> 793) <ais523> oh right: Frooxius, you wouldn't happen to live in Hexham, would you? <Frooxius> No, sorry. <ais523> phew <Ngevd> How about Finland? <Frooxius> Why would I live there? <fizzie> That's a *very* good question. <fizzie> Why would anyone?
21:39:47 <Frooxius> WHATDIDIDO? Oo
21:39:50 <elliott> i was gonna addquote that at the time
21:39:52 <elliott> but got too lazy
21:40:00 <elliott> Frooxius: terrible things
21:40:01 <elliott> prepare to be banned
21:40:04 <Frooxius> nuuuuuuu
21:40:09 * Frooxius flails and runs in funny shapes
21:40:17 <Phantom_Hoover> The fact that you seem to define "a conscious effort to learn and grow as a person" as "stubbornly refusing to let go of any misunderstanding when people try to explain things to me" says it all, really.
21:40:29 <elliott> what are funny shapes
21:41:04 <Phantom_Hoover> Octahedra
21:41:05 <Frooxius> Lemonoid
21:41:19 <Phantom_Hoover> triangulum bisectoids
21:41:25 <ais523> rhombidodecahedron
21:41:30 <ais523> dual of a pentagonal antiprism
21:41:42 <Phantom_Hoover> alexander horned potatogons
21:41:46 <kallisti> Phantom_Hoover: not really, no.
21:42:03 <elliott> <Phantom_Hoover> alexander horned potatogons
21:42:03 <Phantom_Hoover> vigintihedra
21:42:09 <elliott> Phantom_Hoover: thanks, i know what to name my child now
21:42:26 <Phantom_Hoover> Alexander Horned Potatogon Hird?
21:42:33 <Phantom_Hoover> What if the child is female?
21:42:40 <kallisti> Alex is a female name.
21:42:55 <Phantom_Hoover> But Alexander is not.
21:43:03 <kallisti> it could be!
21:43:09 <Phantom_Hoover> Alexia is a female name, and a neurological condition.
21:43:29 <Phantom_Hoover> In fact, if I ever have a daughter I will name her that and then snigger whenever I hear her name.
21:43:42 <elliott> File under "why Phantom_Hoover must never reproduce".
21:43:46 <kallisti> I thought it was Alexandra? I guess Alexis could be a name too.
21:44:05 <Phantom_Hoover> — Elliott "I will name my child Azimuth" Hird.
21:44:08 <elliott> Phantom_Hoover: If they're a girl I'll just swap it around: Potatogon Horned Alexander Hird.
21:44:09 <Phantom_Hoover> kallisti, Alexandria.
21:44:13 <elliott> SHUT UP AZIMUTH IS A COOL NAME
21:44:15 <Phantom_Hoover> (That's a city.)
21:44:15 <elliott> although
21:44:18 <elliott> not as cool as
21:44:20 <kallisti> Phantom_Hoover: o rly? :P
21:44:22 <elliott> uh
21:44:28 <Phantom_Hoover> kallisti, die, seriously.
21:44:29 <elliott> nope it's the coolest
21:44:50 <kallisti> Phantom_Hoover: rest assured I know Alexandria is a city because it exists in the United States as well.
21:44:54 <kallisti> otherwise I would be oblivious.
21:44:56 <elliott> Phantom_Hoover: im naming my kid Orly
21:45:10 <elliott> middle name
21:45:11 <elliott> Nowai
21:45:14 <elliott> because
21:45:19 <elliott> iw ant my child to grow up with a healthy sense of self-loathing
21:45:20 <elliott> and despair
21:45:36 <Phantom_Hoover> Wouldn't Alexander Horned Potatogon have the same effect?
21:45:58 * kallisti doesn't have to worry about naming his children because he plans to not have any ever.
21:46:01 <elliott> yes, this is for my second kid
21:46:13 <elliott> kallisti: so controversial
21:46:14 <kallisti> (insert obvious jokes, ha ha ha )
21:46:25 <elliott> Phantom_Hoover: alexander horned potatogon orly nowai hird
21:46:34 <elliott> fuck it crossed the line of terrible back into awesome
21:46:40 <elliott> they can just sign things as -AHPON
21:46:46 -!- elliott has changed nick to ahpon.
21:46:54 <Phantom_Hoover> what ahpon
21:46:56 <olsner> *ahponh
21:47:02 <kallisti> ahpon could easily be their pseudonym as an electronic or hip hop artist.
21:47:09 <ahpon> Phantom_Hoover: alexander horned potatogon orly nowai
21:47:18 <oerjan> <Frooxius> WHATDIDIDO? Oo <-- you got innocently involved in a driveby quoting accident
21:47:34 <Phantom_Hoover> "Bahahahaha nobody will guess who I am if I refer to myself by my initials!"
21:47:44 <ahpon> Phantom_Hoover: but
21:47:44 <ahpon> ahpon
21:47:45 <ahpon> si cool name
21:47:54 <Frooxius> WHATDIDIDONOW? Oo
21:48:01 <olsner> ahpon: you look stupider with that name
21:48:12 <kallisti> `words --eng-gb --canadia 25
21:48:16 <ahpon> Frooxius: packed too many words into one and lost your nose
21:48:18 -!- ahpon has changed nick to elliott.
21:48:18 <HackEgo> engree meter noncarbering obia conocon nitin aftwott diblasmil stalatickli declack chic sweel exill tadtitin gasta psychon unproposte baffice scoholistico hetteraph archille dussarct wipentit weitmen treu
21:48:24 <elliott> engree
21:48:26 -!- elliott has changed nick to engree.
21:48:30 * Frooxius goes to search for his nose
21:48:50 <Phantom_Hoover> What about Stramillicon Tibia Rapunda Alexander Horned Potatogon Orly Nowai?
21:48:52 <kallisti> psychon is my new internet handle
21:49:16 <Phantom_Hoover> A noncarbering declack?
21:49:20 <kallisti> Phantom_Hoover: that's so unproposte
21:49:32 <oerjan> <kallisti> I thought it was Alexandra? I guess Alexis could be a name too. <-- i believe in ancient times, alexis was a male name.
21:49:32 <engree> Phantom_Hoover: tibia is the best part of that
21:49:37 -!- itidus20 has joined.
21:49:39 <engree> because people will ask me like
21:49:41 <engree> why did you name your kid that
21:49:42 <engree> and i'll go
21:49:43 <Phantom_Hoover> Probably a component of a Dussarct.
21:49:48 <engree> well tibia is my favourite body part after alll hah aha
21:49:55 <engree> Phantom_Hoover: tibia is a real thing dude........
21:50:06 <Phantom_Hoover> Yes?
21:50:16 <Phantom_Hoover> Honestly, fancy not knowing what a tibia is.
21:50:24 <engree> well you are scottish
21:50:45 <kallisti> engree: it would be more reasonable to assume an American doesn't know what a tibia is.
21:51:08 <Phantom_Hoover> Well yes, we do all kick each other in the shins so much that the tibia has been bred out over time.
21:51:35 <kallisti> Phantom_Hoover: are you unable to twist your leg joints?
21:51:54 -!- itidus21 has quit (Ping timeout: 252 seconds).
21:51:56 <Phantom_Hoover> Why would you want to do that?
21:52:16 <kallisti> to do traditional folk dance of course.
21:52:21 <kallisti> as a scot this is important.
21:52:33 <olsner> rhotic or non-rhotic folk dance?
21:52:47 <kallisti> the one where you add a bunch of r's, probably non-rhotic.
21:53:42 <engree> -- kallisti "gosh i'm really only smug about these things by accident" kallisti
21:54:05 <kallisti> only sometimes. :>
21:54:12 <oerjan> the rhotic or non-rhotic unladen swallow dance
21:54:42 <olsner> Nitin Aftwott could be a name
21:55:23 <oerjan> stalatickly: prone to giggle uncontrollably when touching things in caves
21:55:31 <kallisti> engree: also that wasn't really smugness.
21:55:42 <olsner> or when touched by caves?
21:55:43 <kallisti> that was a joke. ha ha
21:55:47 -!- pikhq has joined.
21:55:51 <olsner> caves usually don't poke at people though
21:56:15 <oerjan> whatever you do, don't cross the weitmen
21:56:22 <engree> kallisti: jokes can be smug
21:56:23 <olsner> I imagine this could be Nitin Aftwott's area of expertise
21:56:32 <engree> especially when they're indistinguishable from smartassery
21:56:42 <engree> and may make people more likely to see smug intent where there is none in the future!
21:56:46 <Ngevd> Ngevds can be sleepy
21:56:49 <Ngevd> Goodnight
21:56:51 -!- Ngevd has quit (Quit: Goodbye).
21:56:52 <engree> Ngevd: dude
21:56:52 <engree> its
21:56:53 <oerjan> nitin aftwott, spelunker
21:56:55 <engree> 10 fucking pm
21:57:14 <kallisti> engree: hey at least I was being accurate!
21:57:29 <kallisti> it probably would be the non-rhotic one. if non-rhotic dances were a thing.
21:57:30 <olsner> engree: 11 pm in CET
21:57:40 <olsner> or is ngevd from hexham?
21:58:08 <oerjan> ...
21:58:26 <oerjan> olsner: i think you just outdid Vorpal
21:58:39 <olsner> kallisti: regardless of style, you dance like an unproposte baffice
21:59:09 <olsner> oerjan: hmm, at what?
21:59:10 <kallisti> oerjan: undid him how?
21:59:14 <engree> olsner: yes, ngevd is from hexham.
21:59:20 <kallisti> er *outdid
21:59:22 <engree> that's sort of what started the whole hexham thing.
21:59:26 <oerjan> olsner: obliviousness
21:59:34 <kallisti> oerjan: obliviousness to what?
21:59:39 <kallisti> ha ha ha ha ha
21:59:40 <kallisti> ha
21:59:44 <kallisti> ^ha
21:59:44 <fungot> ha. ha. ha ha. ha ha ha. ha ha ha ha ha. ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ...too much output!
21:59:47 * oerjan facepalm
22:00:10 <qfr> What is that, a laughing Fibonacci?
22:00:19 <kallisti> whenever someone says facepalm I think of like a really cool kung fu move.
22:00:26 <kallisti> where you wack someone in the nose with your palm.
22:00:43 <kallisti> qfr: yes.
22:00:51 <olsner> hmm, I don't think I ever saw the start of the hexham thing, it was already going when I first saw it
22:01:58 <oerjan> the hexham-helsinki-hell axis
22:02:29 <kallisti> engree: I guess it's wrong to be smug. unless you actually are superior because you know more!
22:02:33 <olsner> hexland and finham
22:02:43 <kallisti> engree: this is the lesson I have learned from #esoteric
22:02:56 <engree> kallisti: well, between someone who's smug and wrong and someone who's smug and right...
22:03:08 <engree> alternatively: two wrongs, etc.
22:03:39 * oerjan passive-aggressively twiddles his thumbs
22:04:18 <kallisti> engree: I think I was half-right in that non-rhotic is a bit of a misnomer. But it's also not! it's craaaazy.
22:04:24 <engree> oerjan: do you really think just fidgeting and complaining whenever anything like this comes up actually accomplishes anything
22:04:48 <engree> WE WOULD ALL JUST GET ALONG IF WE NEVER EVER EXAMINED PEOPLE AND BEHAVIOURS
22:05:17 * kallisti feels that he is not not getting along with anyone right now.
22:05:17 <olsner> maybe we could make the channel so you never see what anyone else writes
22:05:24 <olsner> should prove conflict free
22:06:06 <engree> kallisti: I'm not not-getting-along-with-you, I'm just trying to explain why your behaviour is perceived as smug rather than eager to learn
22:06:39 <kallisti> engree: and now I understand. so cool.
22:07:03 <kallisti> :> smug face.
22:07:07 <engree> ...which is why complaining that these things are ~drama~ is way more disruptive than talking about these things.
22:07:20 <kallisti> drama? where?
22:09:02 <kallisti> also oerjan's not really disruptive. I like that he defends me (not necessarily what I'm actually saying). :D
22:09:10 <kallisti> therefore he is not disruptive
22:09:12 * kallisti good logic.
22:09:20 <engree> there is none. and don't take it too personally, he acts this way whenever anybody disagrees with the conduct of another, ever
22:10:13 <kallisti> oerjan: shame on you.
22:10:35 <kallisti> Zetro: oh and fuck you for being so quiet
22:10:37 <kallisti> xandy: you too
22:10:52 * kallisti hates everyone. rageignores everyone.
22:10:52 <Phantom_Hoover> <olsner> hmm, I don't think I ever saw the start of the hexham thing, it was already going when I first saw it
22:11:41 <Phantom_Hoover> It was basically "Taneb shows up, mentions he's from Northumberland, I take a shot in the dark and ask him if he's from Hexham, both he and elliott have heart attacks."
22:12:06 <engree> Maybe when I sleep I become Taneb, go back in time, and act out the day as him.
22:12:23 <zzo38> Calculation of Chinese New Year: http://zzo38computer.cjb.net/img_14/chinese-new-year.png
22:12:29 <kallisti> also you have memory loss of what you did as elliott
22:12:37 <kallisti> which makes it way more convincing.
22:12:46 <olsner> Phantom_Hoover: why did they have heart attacks?
22:13:28 <engree> olsner: What's a really small, boring town in Sweden?
22:13:33 <engree> Well, not really small.
22:13:36 <Phantom_Hoover> Stockholm.
22:13:38 <engree> Like, pop. 10k.
22:13:47 <engree> Kinda ruraly, countrysidey-located.
22:13:49 <olsner> aha, trick question: all of them!
22:13:52 <engree> Maybe has a market.
22:13:53 <engree> Ha.
22:14:00 <engree> No but seriously what's the equivalent of that, just name one.
22:14:19 <engree> Someplace people in the area will know about but people on the other side of the country might not.
22:14:24 <kallisti> anyway I will be making a conscious effort to not presume that I'm correct about disagreements when I don't fully understand the topic. (Note this is different from not acting smug as I don't think I can do that :P )
22:14:28 <olsner> http://en.wikipedia.org/wiki/Fagersta perhaps
22:14:43 <engree> olsner: OK, so imagine there's a guy on IRC in a small, tight-knight community who's from Fagersta.
22:15:02 <Phantom_Hoover> <olsner> maybe we could make the channel so you never see what anyone else writes
22:15:07 <engree> olsner: A few years later, someone else comes in, and everything is normal until they mention they live in Västmanland county.
22:15:10 <Phantom_Hoover> Just /ignore *!*@* ALL
22:15:19 <engree> olsner: Someone says "Please tell me you're not from Fagersta", and they go "How did you know???".
22:15:41 <olsner> actually, it's probably not that good, because people I know from fagersta allegedly run into other people from fagersta all the time
22:15:57 <engree> X-D
22:16:02 <kallisti> ha. ha. ha ha.
22:16:17 <engree> olsner: OK, let's put it this way: Hexham is known for having a big ol' church and a market.
22:16:19 <kallisti> 3-order Fibonacci laugh has been permitted.
22:16:22 <Phantom_Hoover> Västmanland, the land of vast men.
22:16:25 <engree> olsner: It's mostly houses.
22:16:28 <engree> And boring shops.
22:16:35 <Phantom_Hoover> And boring people.
22:16:55 <kallisti> where I live is mostly Anytown, USA
22:16:57 <engree> olsner: And there are inexplicably two people who (a) like esolangs, (b) read Homestuck and (c) are in the same IRC channel, without (d) having ever consciously met or communicated before, ever.
22:17:03 <Phantom_Hoover> If someone from Nowhere, Ireland turns up I will have to leave and never come back.
22:17:18 <engree> Phantom_Hoover: Oh my god, you have to ask everyone you meet whether they read Homestuck next time you end up there.
22:17:27 <engree> And carry a gun so you can shoot them.
22:17:30 <engree> It's prevention.
22:17:58 -!- ais523 has quit (Ping timeout: 240 seconds).
22:18:00 <kallisti> "unitary authority" is that kind of like a county?
22:18:22 <kallisti> oh no that's "ceremonial county" I guess one is a political entity and the other is formal/historic?
22:18:55 <oerjan> <engree> there is none. and don't take it too personally, he acts this way whenever anybody disagrees with the conduct of another, ever <-- i'm not really against pointing things out in a polite way, i just cannot keep from rolling my eyes at what feels like recursion of self-obliviousness. including my own.
22:19:19 <kallisti> oh no unitary authority is more like a state district, kind of.
22:19:27 <kallisti> at least in size.
22:20:10 <engree> oerjan: well, there's a difference between rolling your eyes and implying everyone else is wasting their time... if there's a recurring problem that comes up in-channel, then bringing it up is more likely to solve it than pretending it doesn't happen :P
22:20:50 * engree tends to find that the main problem with metadiscussion is that there's always somebody really loud who wants to pop all the layers away... I suspect this problem occurs in programming too :P
22:21:21 <kallisti> fuck this discussion. too meta.
22:21:28 <kallisti> this is like metametametadiscussion now.
22:21:37 <Phantom_Hoover> This discussion is a RationalWiki trigger, can it stop?
22:21:52 <kallisti> discussion about the discussion about the metadiscussions
22:22:14 <engree> kallisti: My favourite thing about Stack Overflow is that they have a separate site running the same software exclusively for metadiscussion, with its /own reputation system/.
22:22:22 <engree> There are people with more meta rep than main-site rep.
22:22:33 <Phantom_Hoover> (Nowhere, Ireland is named after a pile of stones. Seriously.)
22:22:34 <engree> You can set /meta reputation bounties/ on questions there.
22:22:35 <kallisti> let's go back to the main discussion, where we're just assholes to one another.
22:23:34 <engree> kallisti: Fuck you.
22:23:42 <engree> oerjan taking me seriously in 3, 2, 1...
22:24:14 <kallisti> engree: is there a word for when you cause something not to happen by predicting that it will happen?
22:24:17 <kallisti> kind of like a jinx I guess.
22:24:33 -!- pikhq has quit (*.net *.split).
22:24:33 -!- lifthrasiir has quit (*.net *.split).
22:24:33 -!- yiyus has quit (*.net *.split).
22:24:33 -!- SimonRC_ has quit (*.net *.split).
22:24:49 -!- lifthrasiir has joined.
22:25:05 <engree> kallisti: self-defeating prophecy
22:25:18 <kallisti> sounds good.
22:25:26 -!- pikhq has joined.
22:25:26 -!- yiyus has joined.
22:25:26 -!- SimonRC_ has joined.
22:25:41 <kallisti> I imagine a netsplit as like a huge storm seperated a bunch of ships..
22:25:47 <kallisti> or an earthquake.
22:26:11 <oerjan> <engree> oerjan taking me seriously in 3, 2, 1... <-- please be more polite than that. you are getting close to my limit there.
22:26:19 -!- Zuu has joined.
22:26:20 <Phantom_Hoover> You have a limit?
22:26:33 <Phantom_Hoover> You'd've thought spamming the channel to the condemnation of all would cross it.
22:26:45 <oerjan> Phantom_Hoover: hey i _did_ ban fax.
22:26:56 <Phantom_Hoover> oerjan, because nobody asked you to?
22:27:16 <engree> oerjan: That was a joke based on your repeated tendency to miss such in-context ironies.
22:27:35 <engree> oerjan: But yes, your limit is defined per person, and is approximately ten thousand ceilings lower for me than for most other people.
22:28:06 <engree> If you're not going to step up to the responsibility of banning e.g. blatant spammers, you really shouldn't threaten people with your op powers.
22:29:54 <oerjan> engree: you realize i was joking in my ^^ message?
22:30:32 <Phantom_Hoover> oerjan, doesn't make what he said any less true.
22:31:07 <engree> oerjan: Fair enough, but the reason I missed it is that it's sufficiently similar to things you've said in the past.
22:31:10 <engree> I take my comments back.
22:31:38 <oerjan> hey if it needed to be said...
22:32:04 <engree> I put them back on the table!
22:32:15 <engree> SOMEONE PLEASE TAKE THESE COMMENTS I DON'T KNOW WHAT TO DO WITH THEM
22:32:31 * oerjan nails one of them up on the eastern wall
22:33:28 <kallisti> engree: take yer comments and shove 'em up yer ass!
22:33:59 * engree founds #esoteric-meta
22:34:04 * engree sets mode +b *!*@* #esoteric-meta
22:34:07 <kallisti> (I['m soorrry I 'mtired)
22:34:17 <engree> m['e to 'o
22:34:21 <engree> (not really)
22:34:27 <oerjan> also that MathNerd314 event was because the whole thing started so ridiculously i couldn't take it seriously.
22:34:42 -!- copumpkin has quit (Remote host closed the connection).
22:35:53 -!- DCliche has joined.
22:36:05 <engree> *n
22:36:22 <engree> it was quite an experience i must admit
22:36:42 <engree> i lost it at "i am the singularity"
22:38:10 <kallisti> `words 10
22:38:15 <HackEgo> sitalk mecut ted folson leiset rehen pantauth uuiorma cyclam han
22:38:33 <oerjan> did freenode reset the dates on all the ban lists again
22:38:40 <kallisti> cyclam = pokemon
22:38:58 <kallisti> pantauth = pokemon
22:39:05 -!- Klisz has quit (Ping timeout: 240 seconds).
22:39:09 <oerjan> it's irritating when you cannot distinguish old bans from new ones
22:39:15 <kallisti> leiset = pharmecutical
22:39:37 <olsner> what was the mathnerd event?
22:39:59 -!- FireFly has quit (Ping timeout: 248 seconds).
22:40:08 <oerjan> `log mathnerd.*> [0-9]*$
22:40:14 <olsner> Uuiorma Rehen is probably a finnish name
22:40:27 <HackEgo> No output.
22:40:30 <oerjan> huh
22:40:52 <olsner> hmm, case sensitive? lack of quoting for the space?
22:41:00 <olsner> `log mathnerd.*>.[0-9]*$
22:41:07 <HackEgo> 2011-02-18.txt:22:52:01: <Mathnerd314> Hask = (->)
22:41:39 <olsner> `log mathnerd...>.[0-9]*$
22:41:45 <HackEgo> No output.
22:41:54 <oerjan> `log mathnerd.*>.*[0-9]$
22:42:01 <HackEgo> 2010-04-25.txt:21:12:09: <Mathnerd314> http://www.wolframalpha.com/input/?i=%28t_1+%2B+w*t_2+%2B+w^2*t_3%29^3+%2B+%28t_1+%2B+w^2*t_2+%2B+w*t_3%29^3+with+w+%3D+e^%282+i+pi+%2F+3%29
22:42:03 <olsner> `log mathnerd.*>.[0-9]+$
22:42:10 <HackEgo> No output.
22:42:11 <kallisti> <Mathnerd314> Hask = (->)
22:42:14 <kallisti> ^^ lol
22:42:32 <oerjan> hm wait
22:42:58 <oerjan> `log mathnerd.*>
22:43:05 <HackEgo> 2010-10-30.txt:21:58:41: <Mathnerd314> that has to change... I want computer typography!
22:43:31 <oerjan> nah obviously it never really happened.
22:43:49 <oerjan> oh hm
22:44:03 <oerjan> `log mathnerd.*i am the singularity
22:44:09 <HackEgo> 2012-01-02.txt:22:44:03: <oerjan> `log mathnerd.*i am the singularity
22:44:19 <kallisti> I mean, I get what he's trying to say, but saying that Hask is literally equal to (->) is kind of silly.`log mathnerd.*>.*\d
22:44:29 <kallisti> oopse
22:44:30 <oerjan> `log mathnerd[3].*i am the singularity
22:44:37 <HackEgo> No output.
22:44:58 <kallisti> `log mathnerd.*\d\s*$
22:45:05 <HackEgo> 2010-05-04.txt:01:54:25: <Mathnerd314> !haskell flip (-) 1 2
22:45:22 <kallisti> `log mathnerd.*>\s*\d\s*$
22:45:28 <HackEgo> No output.
22:45:33 <kallisti> yep never happened.
22:45:46 <kallisti> `log (?i)mathnerd.*>\s*\d\s*$
22:45:52 <HackEgo> No output.
22:45:58 -!- FireFly has joined.
22:46:19 <kallisti> actually was that when glogbot was down?
22:46:41 <kallisti> I think hackego was down.
22:47:59 -!- Jafet has joined.
22:48:40 * Sgeo is sad. AW servers are so crappy, a friend's trying to get a list of all property keeps crashing a world.
22:55:49 -!- Zuu_ has joined.
22:56:33 -!- Zuu has quit (Read error: Connection reset by peer).
22:57:22 <Phantom_Hoover> Sgeo, I would yell at you for bringing up AW, but it's pathologically fascinating.
23:00:42 <engree> back
23:01:00 <engree> <kallisti> <Mathnerd314> Hask = (->)
23:01:00 <engree> <kallisti> ^^ lol
23:01:02 <engree> he's correct
23:01:04 <oerjan> pathological and fascinating
23:01:50 <kallisti> engree: the Hask category is literally equivalent to the function type?
23:02:19 <engree> kallisti: if you look at category-extras you will see the line
23:02:20 <zzo38> kallisti: The morphisms is, I think
23:02:22 <engree> type Hask = (->)
23:02:31 <kallisti> yes the morphism is the function type
23:02:36 <kallisti> the objects are the types.
23:03:14 <oerjan> a morphism is _a_ function
23:03:41 <kallisti> the question I ask is: are categories their morphisms?
23:03:49 <kallisti> this seems incorrect to me.
23:03:59 <engree> kallisti: it's surely irrlevant, as mathnerd was almost certainly explaining some signature or declaration in category-extras
23:04:02 <engree> *irrelevant
23:04:09 <engree> but in haskell
23:04:11 <engree> @src Category
23:04:11 <lambdabot> Source not found. :(
23:04:13 <engree> yes, they are.
23:04:16 <engree> fuck you lambdabot
23:04:20 <kallisti> engree: ah okay. I suppose that's the flaw of taking logs out of context.
23:04:22 <oerjan> kallisti: it's one possible axiomatization of categories to only consider the morphisms
23:04:54 <Phantom_Hoover> How do you define the morphisms without objects?
23:04:57 <kallisti> oerjan: hmmm, I suppose the set of all morphisms does contain all of the relevant information...
23:04:58 <Phantom_Hoover> Compositions?
23:05:04 <oerjan> Phantom_Hoover: yes
23:05:29 <Phantom_Hoover> (How does Hask work with functions being types?)
23:05:29 <oerjan> you can identify the objects with the identity morphisms
23:05:50 <oerjan> Phantom_Hoover: it doesn't...
23:05:52 <Phantom_Hoover> (Are functions-as-morphisms and functions-as-types separated?)
23:06:08 <oerjan> Phantom_Hoover: a function is not a type
23:06:18 <oerjan> the morphisms are function _values_
23:06:23 <Phantom_Hoover> (Int -> Int) isn't a type?
23:06:31 <Phantom_Hoover> Oh, right.
23:06:54 <engree> those category theorists should really have consulted with programmers before deciding on their terminology
23:07:35 <Phantom_Hoover> Those programmers should really have consulted with me before trying category theory wait i am become kallisti
23:08:18 <zzo38> It is Cartesian closed category, it has something to do with that things
23:08:24 <kallisti> Phantom_Hoover: what's funny is that I never actually say things like that.
23:08:33 <kallisti> and if I do I'm probably joking.
23:08:40 <oerjan> Phantom_Hoover: as for making the set of morphisms between two objects into an object in itself, categories where you can do that nicely are called "cartesian closed categories". i'm not quite sure if Hask is one precisely or just approximately
23:08:44 <engree> hey oerjan should I read Mac Lane
23:08:48 <kallisti> in a self-deprecating manner, in fact.
23:09:01 <Phantom_Hoover> engree, he had things written on him?
23:09:15 <engree> Phantom_Hoover: Shut up all the cool kids refer to the book like that.
23:09:27 <Phantom_Hoover> kallisti, self-deprecation doesn't make being stupid cool.
23:09:42 <oerjan> i think the absence of genuine categorical products might mess it up slightly
23:09:50 <kallisti> Phantom_Hoover: that's an interesting and irrelevant point.
23:10:06 <Phantom_Hoover> oerjan, is this _|_ again?
23:10:49 <engree> kallisti: What Phantom_Hoover is trying to say is that you can't say things with impunity to mockery by declaring them jokes. (You're welcome, this would have taken 5 hours to communicate.)
23:11:30 <kallisti> engree: since when do I even say "oh I am an expert on this matter this random person should have consulted me" without it being obviously in the context of some kind of humor?
23:12:40 <oerjan> <engree> hey oerjan should I read Mac Lane <-- well although it's a standard recommendation, i haven't done so myself, so...
23:12:43 <engree> kallisti: That question should be directed at Phantom_Hoover, I just wanted to skip 5 hours of tedium.
23:13:07 <oerjan> Phantom_Hoover: yeah iirc
23:13:12 <engree> oerjan: I was hoping you'd read it so you could give me an authoritative warning it'd go way over my head :)
23:13:20 <Phantom_Hoover> Won't Mac Lane be approaching it from a topological angle?
23:13:24 <Sgeo> o.O BitBucket has an option to do git
23:13:43 <Sgeo> The reason I'm using BitBucket is because Gregor has me thinking that it may be easier
23:13:51 <Sgeo> Erm, that hg may be easier
23:14:02 <oerjan> engree: hm it probably has a lot of advanced examples, at least
23:14:22 <engree> oerjan: well the first i heard about mac lane was people saying it was just too much for them :P
23:14:36 <oerjan> but then, it's likely most mathematicians don't know all of them either :P
23:14:36 <engree> people who _actually know mathematics_!!
23:14:44 <engree> Chapter VI. Monads and Algebras.
23:14:44 <engree> Chapter VII. Monoids.
23:14:46 <engree> good ordering
23:15:06 <engree> Chapter VII: Monoids. A monoid is just a monad not necessarily in the category of endofunctors, what's the problem?
23:15:46 <zzo38> Endomorphisms of a category make a monoid too
23:18:07 -!- Patashu has joined.
23:18:17 <engree> Phantom_Hoover: One day I will know more category theory than you and THEN the tables will be TURNED.
23:18:21 <oerjan> engree: i guess this may be one book where you're not expect to get all the way through :P
23:18:25 <oerjan> *ed
23:18:32 <Phantom_Hoover> engree, I don't really know category theory?
23:18:42 <oerjan> one day, coming now
23:18:47 <engree> Phantom_Hoover: THAT IS WHY IT WILL BE EXCEEDINGLY EASY
23:19:09 <Phantom_Hoover> I'm kind of baffled why you thought I did.
23:19:13 <engree> I didn't.
23:19:16 * engree would prefer Categories for the Working Magician.
23:19:50 <engree> hmm, page 1 doesn't look so bad
23:19:57 * engree is checking the amazon preview :P
23:20:12 <Phantom_Hoover> Behold, as I saw a functor in half!
23:20:58 <engree> "whenever possible we write f x and not f(x), omitting unnecessary parentheses."
23:21:07 <engree> oerjan: category theory was evidently doomed to end up in haskell from the start
23:21:20 <oerjan> obviously
23:22:00 <engree> huh this is simpler than i expected
23:22:01 <engree> although
23:22:02 <Phantom_Hoover> I'm fairly sure the topology book with the surprise category theory was a graduate texts in mathematics book too.
23:22:03 <engree> it is only page 4
23:22:29 <engree> i really don't like these diagrams though :'(
23:22:38 <engree> they should make linear notation for them :P
23:22:52 <oerjan> engree: what, the diagrams are like half the point
23:23:12 <Phantom_Hoover> The whole point of the diagrams is that it gets rid of inelegant linear notation and lets you go from page to brain a lot faster.
23:24:20 <oerjan> trying to grasp the snake lemma without diagrams - not pretty.
23:25:18 <oerjan> not that i remember what the snake lemma actually said.
23:25:26 <engree> oerjan: Phantom_Hoover: yeah but they're ugly :P
23:25:48 <engree> oerjan: so what did you read to learn cat theory (as i will henceforth call it, forever)
23:25:50 <Phantom_Hoover> I've always found them quite pretty.
23:27:00 <oerjan> engree: i think it was partly osmosis. also homological algebra and algebraic topology books
23:27:26 * kallisti learned programming by osmosis.
23:27:29 <zzo38> I learn by Wikipedia and by Haskell and by ask people question in this channel
23:28:02 * engree tries the last one
23:28:06 <engree> oerjan: what is category theory
23:28:07 <oerjan> and of course the K-theory used in my PhD
23:28:09 <kallisti> in fact I probably spent about 6 months slowly reading things about Perl before I ever actually wrote a real program.
23:28:40 <engree> http://en.wikipedia.org/wiki/It%27s_My_Turn_(film)#Accurate_Math_on_Film I'll watch this and learn the snake lemma
23:28:45 <Phantom_Hoover> * engree tries the last one
23:28:50 <Phantom_Hoover> Algebraic topology books?
23:29:08 <engree> Patashu: ask people question in this channel
23:29:10 <engree> er
23:29:11 <engree> Phantom_Hoover
23:29:31 <Phantom_Hoover> About algebraic topology?
23:29:42 <kallisti> engree: ask me all of your category theory questions. I am the expert.
23:29:52 <engree> wait, grothendieck literally lives in the mountains in the middle of nowhere?
23:29:55 <engree> awesome
23:30:35 <engree> NationalityNone (Stateless)
23:30:36 <engree> wait, how did he manage that one
23:31:45 <Phantom_Hoover> "In January 2010, Grothendieck wrote a letter to Luc Illusie. In this "Déclaration d'intention de non-publication", he states that essentially all materials that have been published in his absence have been done without his permission. He asks that none of his work should be reproduced in whole or in part, and even further that libraries containing such copies of his work remove them."
23:31:50 <Phantom_Hoover> ...
23:32:17 <pikhq> engree: Some countries actually state that you have the right to become stateless.
23:32:26 <kallisti> engree: for example: did you know that a category is a set of objects, a set of morphisms from one source object to another target object, and an associative composition operator with an identity element on those morphisms?
23:32:27 <engree> Phantom_Hoover: You didn't hear about that?
23:32:36 <kallisti> engree: yes you can learn these things and more by asking me questions.
23:32:41 <Phantom_Hoover> Why would I have?
23:32:50 <engree> Phantom_Hoover: Well, it came up in here. :p
23:32:59 <engree> grr, the article doesn't explain how he became stateles
23:32:59 <engree> s
23:33:08 * engree considers citation needing it
23:33:23 <engree> http://en.wikipedia.org/wiki/Talk:Alexander_Grothendieck#Statelessness heh
23:34:01 <engree> You just CAN'T do cohomology of groups just after explaining Snake Lemma :D
23:34:02 <engree> killingbuddha1 2 weeks ago
23:34:07 <engree> Phantom_Hoover: help, I wandered into some bizarro youtube
23:34:16 <Phantom_Hoover> Oh dear.
23:34:16 <engree> everyone has a phd in mathematics
23:34:29 <pikhq> It's also quite possible, given his age, that his citizenship is from a non-existant country.
23:34:32 <engree> @belyi3 Valid point: how do these things come about? The answer is: from algebraic topology. Starting with Euler characteristic and Betti numbers of surfaces, one generalises to homology and cohomology groups. Then some very smart people realised that the underlying operations in homological & cohomological computations can be abstractised so that only the algebraic remnants remain. So this is what you get.
23:34:32 <engree> Like you, I'd love to see a more historically motivated account of cohomology.
23:34:32 <engree> abc75 1 year ago
23:34:32 <lambdabot> Unknown command, try @list
23:34:39 <engree> Phantom_Hoover: HELP...
23:35:00 <engree> pikhq: born in germany, lives in france? doubt it
23:35:01 -!- monqy has joined.
23:35:13 <Phantom_Hoover> That was the context in which the surprise cat theory came.
23:35:53 <Phantom_Hoover> Or something; I was kind of sleepy by that point and I had an interview the next day.
23:36:02 <kallisti> engree: maybe it has something to do with East/West Germany?
23:36:05 <pikhq> engree: Germany runs under jus sanguinis, and didn't grant citizenship to people who would otherwise be born stateless until more recently than that.
23:36:11 <engree> pikhq: fair enough
23:36:14 <engree> wtf, http://www.grothendieckcircle.org/ actually removed links to his papers
23:36:29 <Phantom_Hoover> (I should go on long trips with only textbooks to entertain me more; I learnt a lot on that trip.)
23:37:33 -!- Zuu_ has quit (Ping timeout: 252 seconds).
23:37:45 -!- Zuu has joined.
23:38:46 <pikhq> Oh, his mother was German.
23:39:57 <pikhq> There's no way that he was *born* stateless, and his original citizenship would not have ceased to be in effect...
23:41:10 <kallisti> "In 1939 Grothendieck came to France and lived in various camps for displaced persons with his mother, first at the Camp de Rieucros, and subsequently lived for the remainder of the war in the village of Le Chambon-sur-Lignon, where he was sheltered and hidden in local boarding-houses or pensions." -- maybe this?
23:41:57 <qfr> Grothendieck is hilarious
23:42:31 <pikhq> Hmm, wait. The Nazis denaturalised people.
23:43:06 <pikhq> And the law reinstating the citizenships only reinstates citizenship on people who take residence in Germany after 1945.
23:43:35 <pikhq> So, he could actually have become stateless because of the Nazis, and continue to be stateless by merit of never having gone back to Germany.
23:43:47 <oerjan> <engree> You just CAN'T do cohomology of groups just after explaining Snake Lemma :D <-- iirc that is correct, since the snake lemma is a building block several steps before defining (co)homology
23:44:11 <pikhq> So, yes, it is perfectly feasible for him to be stateless.
23:44:22 <pikhq> And be able to gain a citizenship trivially.
23:44:50 <kallisti> does stateless even have a practical impact on one's life?
23:44:53 <kallisti> +ness
23:45:04 <engree> kallisti: absolutely
23:45:24 <pikhq> kallisti: You need to do some really annoying paperwork to do a few things.
23:45:31 <pikhq> e.g. get a passport.
23:45:41 <kallisti> you're still subject to all the laws in the area you reside in.
23:45:50 <kallisti> so it basically just makes life more inconvenient.
23:45:57 <zzo38> Someone made a list of the most difficult and complicated kind of mathematics, and "motivic cohomology" was at the top.
23:46:45 <engree> pikhq: I doubt you could get a job while stateless?
23:46:49 <pikhq> This status is largely because of post-WWII international law which requires nations to treat stateless people that happen to be in there country as, essentially, legal immigrants.
23:47:00 <pikhq> s/there/their/
23:48:07 <engree> so what did the nazis actually do
23:48:17 <engree> strip german citizenship of people they didn't like?
23:48:26 <pikhq> Yes.
23:48:27 <oerjan> well, jews at least
23:48:44 <pikhq> oerjan: "Anyone they like" is by far the more accurate classification.
23:48:52 <oerjan> okay
23:48:58 <pikhq> Jews were merely a significant proportion of that set.
23:49:10 <pikhq> Erm.
23:49:12 <pikhq> Didn't like
23:49:12 <pikhq> XD
23:49:22 <engree> "fuck this country im out" --hilter
23:49:26 <pikhq> "WE HAVE REVOKED THE CITIZENSHIP OF HITLER" :P
23:49:27 <kallisti> the former worked as well.
23:49:36 <engree> It would provide a really convenient country for them to bomb, mind you.
23:49:57 <kallisti> "anyone they like" can mean that they chose whomever they wanted to be denaturalized.
23:50:48 <kallisti> anyoned they liked to denaturalize. :P
23:52:30 <kallisti> him iiy nam eiska llisti
23:54:16 <kallisti> oerjan: there's nothing about the set of morphisms of a category that requires it to form a bijective mapping right?
23:54:27 <kallisti> or is that required?
23:56:09 <oerjan> wat
23:56:39 <kallisti> so, no.
23:56:40 <oerjan> a bijective mapping to what
23:57:08 <oerjan> also, it's not required to be a set, it can be a proper class
23:57:26 <kallisti> a bijective mapping from the object set to the object set.
23:57:29 <kallisti> and, right.
23:57:51 <oerjan> no. for one thing, the objects are not required to be conceptual sets.
23:58:09 <kallisti> er no I mean...
23:58:20 <kallisti> the morphisms aren't acting on sets of objects themselves.
23:58:53 <oerjan> indeed not. such a category is called "concrete".
23:59:19 <oerjan> there is otherwise no requirement that morphisms be _functions_
23:59:37 <kallisti> okay here's a better question: a single morphism can act on multiple objects in the category, yes or no?
23:59:46 <kallisti> or is there one source object
23:59:49 <kallisti> and one target object
23:59:55 <oerjan> no. a single morphism always has exactly one.
23:59:59 <oerjan> of each.
2012-01-03
00:00:02 <kallisti> right
00:00:14 <kallisti> and you could think of the set of morphisms as a sort of mapping right?
00:00:28 <oerjan> wat
00:00:40 -!- cswords_ has quit (Quit: Leaving).
00:00:43 <kallisti> hom-set or whatever it's called.
00:00:59 <kallisti> is a mapping... or a relation I guess.
00:01:07 <kallisti> ?
00:01:13 <oerjan> well yes, Hom is a bifunctor from any category to Set
00:01:37 <kallisti> no no I mean...
00:01:56 <oerjan> er locally small category, technically
00:02:08 <kallisti> oh I see I didn't mean hom.
00:02:17 <kallisti> oh... I did
00:02:21 <kallisti> there's two hom expressions
00:02:24 <kallisti> hom(a, b) and hom(C)
00:02:59 <Phantom_Hoover> A homset is the set of morphisms, isn't it?
00:03:02 <kallisti> hom(C)... is a mapping right? it maps objects to objects in the category, right?
00:03:05 <kallisti> yes
00:03:11 <oerjan> Phantom_Hoover: yes
00:03:19 <kallisti> hom(a,b) refers to the morphisms specifically between objects a and b.
00:03:23 <kallisti> I think.
00:05:18 <oerjan> kallisti: i cannot find your hom(C) concept on the wp Morphism page
00:05:32 <zzo38> And I think you can make a category from any digraph, where the objects are the nodes and the morphisms are the walks
00:05:37 <kallisti> A class hom(C), whose elements are called morphisms or maps or arrows. Each morphism f has a unique source object a and target object b.
00:05:49 <kallisti> it's on the category theory page.
00:05:59 <kallisti> so anyway I think I got the answer to my question, which is "no"
00:06:05 <zzo38> So it is a different category than Haskell functions category
00:06:05 <kallisti> but I don't know if I worded it correctly.
00:06:15 <oerjan> ah right
00:06:45 <kallisti> basically the relation from C to C formed by hom(C) does not have to be a one-to-one mapping, is what I was asking.
00:07:22 <oerjan> kallisti: i still don't know what relation you are speaking about
00:07:29 <kallisti> okay so....
00:07:39 <kallisti> a morphism... is basically like an ordered pair, right?
00:07:43 <oerjan> no.
00:07:52 <kallisti> what makes it different.
00:08:38 <oerjan> what makes it _similar_? two morphisms can have the same source and target, and still be different.
00:08:41 <zzo38> kallisti: Well, I gave one example. There are others
00:09:00 <kallisti> oerjan: oh really? how does that work.
00:09:12 <kallisti> as far as I knew morphisms were just a source object and target object pair.
00:09:40 <zzo38> kallisti: No. One example is the digraphs like I said, another example is different functions between the types like in Haskell or in the category of sets
00:09:55 <kallisti> right, but then how is that constructed.
00:09:57 <kallisti> and described
00:10:00 <kallisti> in category theory
00:10:30 <zzo38> By morphism composition.
00:10:54 <kallisti> ah
00:11:01 <oerjan> kallisti: well commonly a morphism in Set may be a triple, (A,B,f) where A and B are the source and target and f : A -> B is a subset of A x B which is a function.
00:11:52 <oerjan> A and B are included just to ensure the target and source maps really are defined. (actually A may be redundant.)
00:12:39 <kallisti> so then morphisms in Set are relations.
00:12:46 <Phantom_Hoover> ,,,
00:13:02 <oerjan> kallisti: no, functions, but in set theory functions are represented as relations.
00:13:25 <kallisti> I see.
00:13:28 <oerjan> iirc Rel is the category of all relations
00:13:51 * Phantom_Hoover → sleep
00:13:53 -!- Phantom_Hoover has quit (Quit: Leaving).
00:13:54 <oerjan> of which Set is a subcategory
00:14:13 <kallisti> Phantom_Hoover seemed baffled that I would see "subset of A x B" and somehow think "relation"
00:14:46 <kallisti> but he left...
00:14:47 <kallisti> :(
00:15:40 <oerjan> well i was a bit baffled too
00:15:54 <kallisti> I guess I didn't pay enough attention to the "which is a function" part :P
00:16:03 <oerjan> it's like the most elementary CT fact that the morphisms of Set are functions :P
00:16:54 <oerjan> it's like the quintessential example of a category.
00:17:25 <kallisti> your mom is the quintessential example of a category.
00:17:51 <oerjan> although one does need to spend a while afterward pointing out that there are categories in which morphisms have nothing to do with functions.
00:18:02 <engree> i miss fax :(
00:18:07 -!- Vorpal has joined.
00:18:21 <kallisti> I just temporarily forgot that all relations are not functions and saw the "subset of A x B" and thought relations...
00:18:29 <engree> yeah there are no relations that are functions :P
00:18:48 <kallisti> ...that's not what I meant by that statement
00:18:56 <oerjan> engree: has anyone seen em around?
00:19:24 <oerjan> i have doubts e would be able to stay undetected
00:19:46 <engree> oerjan: well the usual route appears to be via #haskell
00:19:46 <kallisti> what exactly is preventing Set morphisms from being relations?
00:20:13 <oerjan> kallisti: the fact that non-functions are not included in Set morphisms by definition.
00:20:16 <engree> oerjan: but we know he quit all forums, at least programming-related, for an extended period of time after the first or second time it happened.
00:20:32 <engree> *eir, sorry
00:20:42 <zzo38> Then can you make a relation set category?
00:20:48 <kallisti> oerjan: that's not very interesting. why not just add it to the definition. I was wondering if it would break something.
00:20:50 <engree> oerjan: I wouldn't be surprised if the two-time "revelation" of eir identity after returning was enough to make that permanent.
00:21:11 <engree> oerjan: cpressey did comment on eir blog ages ago; but it's completely dead.
00:21:16 <kallisti> ..
00:21:24 <engree> that was in '10.
00:21:24 <oerjan> kallisti: erm as i said Rel is a different category, which also exists
00:21:29 <kallisti> are you using spivak pronouns for ironic purposes.
00:21:38 <kallisti> oerjan: right but that's the category of relations..
00:21:44 <engree> kallisti: No.
00:21:50 <engree> I do not know which pronouns fax prefers.
00:21:52 <oerjan> kallisti: also for not being bloody sure what gender e actually _is_
00:22:05 <oerjan> or what sense of is to use
00:22:19 <pikhq> I could've sworn fax was male, but that could just be heuristic talking.
00:22:22 <engree> http://reddit.com/user/cwcc is still around, but e abandoned that one long before disappearing completely; eir later accounts have been deleted.
00:22:43 <engree> pikhq: I believe e identified as male while using the name fax.
00:22:56 <pikhq> Also not very reliable if e has changed the preferred set of pronouns.
00:23:00 <kallisti> oerjan: or well... is Set the "category of functions" then? You seem to be saying that Rel is the alternative category for a category on sets with relations as morphisms.
00:23:11 <kallisti> or something.
00:23:14 <engree> oerjan: oh my god, cwcc posted in /r/vortexmath
00:23:16 <engree> :D
00:23:20 <engree> monqy:
00:23:21 <oerjan> kallisti: you simply let the objects be sets and the morphisms be (A,B,M) where M is a subset of A x B. (again A and B are just included to ensure they're well-defined source and target)
00:23:27 <zzo38> Once I found a computer program try to guess your gender if you answer a lot of questions. However, after answering all of the question the certainty was still zero so it couldn't guess.
00:23:35 <kallisti> oerjan: ah okay, so yes.
00:23:59 <engree> oerjan: but yeah, I somewhat doubt we'll see em around any time soon: at least not recognisably.
00:24:00 <oerjan> kallisti: well Set has an important special standing in the theory.
00:24:03 <kallisti> oerjan: Rel is kind of misleading as I would expect the objects to be relations or something.
00:24:22 <kallisti> oerjan: so there are properties of Set that would break if it were suddenly Rel.
00:24:25 <engree> oerjan: but I still hope we do.
00:24:46 <monqy> engree: /r/.....vortexmath..............
00:25:00 <monqy> i
00:25:02 <monqy> how
00:25:13 <engree> monqy: It's TEDx-approved, man.
00:25:37 * pikhq shall slightly reduce ambiguity in the room by simply stating the common Internet heuristic of "forall x. male(x)" applies to pikhq in both gender identity and chromosome set. :P
00:25:41 <monqy> VortexSpace.org College of Vortex Mathematics
00:25:46 <oerjan> kallisti: presumably. the yoneda lemma is one important theorem that comes to mind (and which i don't remember exactly.)
00:26:01 <kallisti> yo neda
00:26:03 <kallisti> lemma
00:26:05 <kallisti> ...
00:26:16 <kallisti> yo nedalemma
00:26:20 <pikhq> kallisti: Yoneda remma
00:26:22 <engree> pikhq: Chromosomes aren't necessarily an indicator of biological sex, though.
00:26:37 <engree> pikhq: (But nothing is, since it's in large part a cultural concept rather than one that has a precise biological definition...)
00:26:51 <pikhq> engree: Bah. My biological sex is also male. There. Happy?
00:27:08 <pikhq> (no, of course not, nothing makes you happy. :P)
00:27:15 <engree> I am an endless pool of sadness.
00:27:26 <kallisti> yoneda lemma in ignorant-american-pronunciation kind of sounds like a really slurred way of "yo, need a lemma?"
00:27:38 <kallisti> +saying
00:27:41 <pikhq> Not just pool of sadness. Also unobtainable desires.
00:28:21 <engree> pikhq: Very true.
00:29:21 <oerjan> pikhq: ah but have you actually _done_ a cromosome test? >:)
00:29:30 <oerjan> *+h
00:29:34 <pikhq> oerjan: No, actually.
00:29:44 <pikhq> So I can only infer that with high probability.
00:30:03 <oerjan> how unscientific.
00:30:17 <kallisti> not on par with the rigour of #esoteric
00:30:21 <kallisti> shameful, really.
00:30:37 <oerjan> for example, i have verified scientifically that i am a bacterium.
00:30:38 * kallisti smokes his pipe and sits in his esoteric armchair.
00:30:54 <pikhq> oerjan: Science also only infers things with (unreasonably) high probability. :)
00:31:03 <oerjan> well, either that, or the test tube was contaminated, but how likely is _that_
00:32:13 <kallisti> I think defenestrate is one of my favorite words.
00:32:52 <kallisti> because a) it sounds good b) it has at least three possible meanings c) one of which is a verb meaning "to remove Windows from a computer"
00:33:02 <kallisti> which
00:33:06 <kallisti> along with the other two meanings
00:33:20 <kallisti> makes the word even more awesome than simply the sum of its possible meanings.
00:33:26 <kallisti> it's like a PRODUCT of its meanings.
00:34:59 <engree> oerjan: what do you want from a next generation log formatting system. gimme your best
00:35:30 <pikhq> Or perhaps the product of the ^^^3 of its possible meanings. :P
00:37:43 <kallisti> engree: every output format you could possibly think of including various serialization formats, typesetting systems, markup languages, word processor formats, pdf. it should also have a special tagged format which it can use to generate output formats
00:38:01 <kallisti> so for example you could make an output of only a subset of tags (for IRC this would be things like privmsg, join, part, etc)
00:38:12 <lahwran> anyone here use xchat?
00:38:16 <kallisti> also a utility to convert raw text to the tagged format via regex filters.
00:38:35 <zzo38> You could just use AWK to do some of these things isn't it?
00:39:14 <oerjan> engree: total information recall, line wrapping and free money.
00:39:15 <kallisti> probably, but not as easily I would think.
00:39:41 <oerjan> also wild sex parties.
00:40:55 <oerjan> engree: oh, and maybe it should understand the color codes.
00:41:01 <engree> colour codes, check
00:41:10 <kallisti> engree: the house format could also contain a header specifying default formatting options when none are provided for the output formatter.
00:41:20 <kallisti> engree: no this should be general to any kind of log, not just IRC.
00:41:25 <engree> oerjan: I would like to build in auto-linking functionality; how would you suggest I do this? I was thinking of not formatting links specially at all until you mouse over them, to avoid annoying highlights of non-links
00:41:32 <engree> since URLs are rather easy to spot visually in the first place :P
00:41:49 <engree> kallisti: i will take your requests into... consideration
00:41:50 <engree> lahwran: I do.
00:42:14 <lahwran> do you have nick coloring on?
00:42:19 <engree> No, it's annoying :)
00:42:51 <lahwran> well then what I was going to say is irrelevant
00:43:00 <lahwran> do you have time-sorted tabcomplete on?
00:43:10 <lahwran> (was it you I mentioned it to the other day?)
00:43:51 <kallisti> engree: strangely I don't believe you.
00:44:50 <kallisti> at least TeX, XML, HTML, and maybe PDF would be good.
00:44:55 <engree> lahwran: Yes, I do, and yes, it was; I've used it forever, I just reinstalled my OS recently.
00:45:10 <lahwran> k
00:45:43 <lahwran> might as well tell you my random fact about nick coloring anyway - apparently it works by summing the character values in the nick and then modulo-ing them by the count of available colors
00:45:51 <engree> that's...
00:45:53 <lahwran> not by any real hashing function at all
00:45:57 <engree> the stupidest algorithm i can think of
00:46:11 <engree> i guess that's why people complain about collisions so much
00:46:19 <kallisti> but for A TRULY FLEXIBLE LOG FORMATTER you want to have a special format for representing logs that can be easily converted to from raw text, and a simple style specification to allow styling of different tags regardless of output format.
00:46:26 <engree> oerjan: THX FOR FEEDBACK
00:46:31 <engree> kallisti: We already have a simple raw log format.
00:46:40 <engree> http://codu.org/logs/_esoteric/2012-01-03-raw.txt
00:47:00 <lahwran> well it's kinda funny because I've kinda assigned my own mild stereotypes to different nick colors
00:47:05 <zzo38> Would you have SIRCL format? And possibly CSV format?
00:47:14 <lahwran> and it turns out, there actually might be some real relationships between them
00:47:26 <kallisti> needs JSON and YAML as well. :P
00:47:33 <lahwran> yay json/yaml
00:48:05 <engree> Meh JSON ew YAML
00:48:20 <zzo38> O, yes. And for TeX, you need to have both Plain TeX and LaTeX. But possibly, just have one format which it can read in and then a macro file can format it. I have done things like this; for example, you can make a macro to read a tab separated file, and so on
00:48:33 <engree> Generic data formats are vastly overrated anyway, since all the common ones are not nearly rich enough to describe all data without additional parsing logic that will approach the complexity of just writing your own format.
00:49:11 <zzo38> I designed SIRCL format for IRC logs probably just use that and then convert into others using AWK or Perl
00:49:29 -!- oerjan has quit (Quit: Good night).
00:50:19 <kallisti> engree: XML comes close I guess.
00:50:45 <engree> kallisti: To describing all data? No way.
00:51:39 <kallisti> well... can it do referential structures?
00:51:59 <zzo38> What if you use, something such as, Haskell Data Notation?
00:52:10 <kallisti> or does your definition of "all data" include things like an infinite sequence of fibonacci numbers.
00:52:17 <engree> kallisti: To be exact, I was not saying you cannot represent data in those formats.
00:52:24 <kallisti> engree: of course.
00:52:27 <engree> I said that doing so requirse a separate parsing/serialisation step to fit the restrictions of those formats.
00:52:34 <engree> Which approaches the complexity of just writing your own format in the first place.
00:52:35 <engree> *requires
00:53:12 <kallisti> zzo38: Haskell data structure notation would not be very good for describing structures with references.
00:53:17 <kallisti> unless you
00:53:23 <kallisti> included the = operator as well
00:53:29 <kallisti> which isn't unreasonable
00:53:42 <engree> You just need let...in to describe sharing.
00:54:56 <engree> http://www.cs.vu.nl/~x/ this guy has the coolest name
00:54:56 <engree> ever
00:54:57 <kallisti> one issue with such a format is that it isn't quite as convenient as JSON for many languages.
00:55:06 <kallisti> similar problems to what XML has I guess.
00:55:19 <kallisti> with JSON you can basically just convert it directly to some native data structure.
00:55:29 <kallisti> in any language.
00:55:50 <kallisti> Haskell's tagged unions and such are not quite so convenient in.. say.. Perl.
00:56:39 <engree> JSON's unstructured soup isn't convenient in... say... Haskell.
00:56:56 <engree> At least a stupidifying step is more palatable than an enrichening one.
01:00:11 <kallisti> perhaps
01:00:39 <kallisti> I'd say handling JSON data and handling a Haskell-like format would be equally difficult in Haskell.
01:00:53 <kallisti> which is to say not difficult at all.
01:01:01 <engree> :t reads
01:01:02 <lambdabot> forall a. (Read a) => String -> [(a, String)]
01:01:02 <engree> :p
01:01:20 <zzo38> You can make up some format and parse it using Parsec, it works well
01:01:23 <kallisti> oh yes I forgot about Read, but then you need the type information as well.
01:01:59 <engree> kallisti: Yes... you need to know the structure of some data to consume it.
01:02:11 * engree would not use this proposed Haskell format anyway.
01:02:23 <kallisti> engree: at compile time, to read it like that. yes.
01:02:32 <engree> "Instead of bothering with the actual universe, let us create our own imaginary universe in which there are only three classes of animals: birds, cats, and dogs."
01:03:38 <kallisti> well Haskell's data structures are basically just tagged unions and structs...
01:03:45 <kallisti> that's two kinds of animals.
01:05:50 <kallisti> sure the types make a huge difference at compile-time, but unless you want to have existing type libraries for every kind of data you read, you're probably going to want the data type information to be stored in the format itself and interpreted at runtime.
01:06:04 <kallisti> which means that you basically just have tagged unions, structs, and let bindings.
01:06:37 <kallisti> (with syntax sugar for strings and lists, and integer and character primitives)
01:19:22 -!- augur has joined.
01:20:02 <augur> has this channel really only existed since november 06?
01:22:13 <engree> no
01:22:16 <engree> late 2002
01:22:36 <engree> freenode's systems get replaced more often than this channel stops existing :)
01:27:02 <zzo38> Do you have suggestion to have substitute player for Dungeons & Dragons game in case some of the players are not available?
01:27:31 <pikhq> zzo38: DMPC is ever a classic.
01:27:45 <zzo38> pikhq: He said he doesn't want to do that?
01:28:33 <pikhq> Hmm. Figure out a way to write certain players out of the story, for sure...
01:28:44 <zzo38> Yes; of course I thought of that already.
01:29:13 <pikhq> A few options from there: deal with missing members, find people to come in and play a game or two (and roll new characters), have some of your players play multiple characters...
01:29:33 <zzo38> I am one of the players
01:29:39 <pikhq> The last option may be sanity-straining, of course.
01:29:51 <zzo38> And there is one other player only, who is unavailable
01:29:56 <pikhq> I was, nevertheless, talking in a more general sense. :)
01:30:01 <zzo38> OK
01:30:26 <zzo38> There are only two players, only two player characters.
01:31:06 <engree> solo d&d?
01:31:41 <zzo38> engree: The DM said he doesn't like that; I did suggest that, as well as having the DM have their own player character too, and this stuff.
01:32:06 <pikhq> I'm a bit surprised at having so few PCs.
01:32:15 <pikhq> The "standard" D&D party is, like, 4...
01:32:45 <pikhq> And I've not really heard of fewer people in a party.
01:32:47 <zzo38> I know; but we play the game strangely
01:33:08 <zzo38> There are varying number of NPCs in the party sometimes
01:33:22 <pikhq> The only way you could play the game genuinely strangely is to play it by a strict reading of the rules. :P
01:33:32 <zzo38> There are other strange things about the party too; read the recording file for information!
01:33:56 <zzo38> view-source:http://zzo38computer.cjb.net/dnd/recording/level20.tex
01:36:06 <zzo38> Currently we have two human NPCs which are navy marines
01:37:00 <zzo38> Will you have ideas about it by reading this?
01:37:09 <pikhq> Perhaps; lemme take a look.
01:38:05 <pikhq> Hmm, what macro set are you using to generate that? Something you wrote yourself?
01:38:27 <zzo38> Yes, it is a macro set I wrote myself: view-source:http://zzo38computer.cjb.net/dnd/recording/dungeonsrecording.tex
01:38:41 <pikhq> Neat.
01:41:36 <pikhq> Also, doesn't appear to work with pdftex.
01:41:47 <pikhq> Works just fine with tex, though.
01:45:19 <zzo38> Yes; just use TeX it is not intended to work with pdfTeX.
01:45:42 <zzo38> So I don't care whether or not it will work with pdfTeX
01:46:10 <zzo38> I also don't know why, but it doesn't matter
01:47:30 <pikhq> I suspect pdfTeX has a few macros in place beyond what TeX offers that collide.
01:47:41 <zzo38> Possibly.
01:48:47 <zzo38> Note this document uses a command to request input from the terminal; I don't know if pdfTeX has problems with that somehow
01:49:24 <zzo38> The \askprintinglevel asks you how much you want to be printed, 1 is the shortest printout and 6 is the longest printout.
01:49:46 <pikhq> *That* much worked just fine.
01:50:38 <zzo38> Well, it doesn't matter; you can still get DVI output, and if you want PDF you can use an external program to convert DVI to PDF.
01:51:16 * pikhq nods
01:51:58 <zzo38> If you ever play D&D 3.5 edition, you can use this same macro file if you want to record them in the computer.
01:53:22 <zzo38> During the game, we have never actually decided the actual number of Also's sausages even though we should have done; so I just made up some numbers
02:04:56 <zzo38> Are either of these two files good to you?
02:08:10 <pikhq> Quite impressed with the macros.
02:22:48 -!- Jafet has quit (Ping timeout: 240 seconds).
02:26:24 <engree> q
02:26:42 <MDude> I think an AI could be made to play D&D, though it'd likely end up a mix of blind stat crunching and often inhoherent text generation.
02:27:37 <pikhq> Proof: the set of video games with D&D as their game rules.
02:27:40 -!- derdon has quit (Remote host closed the connection).
02:27:42 -!- nooga has quit (Ping timeout: 255 seconds).
02:28:28 <MDude> Well those have computer controlled monsters/NPCs, that's not really the same as AI pseudo-players.
02:28:52 <zzo38> They still aren't perfectly D&D regardless of their rules
02:29:07 <pikhq> zzo38: They're reasonable approximations, IME.
02:29:33 <pikhq> The only major divergence is the switch from rounds to real-time action.
02:29:50 <MDude> A D&D video game would be a neat use of the AI director from Left4Dead.
02:30:36 <MDude> Though all it knows how to do is swarm you with zombies.
02:30:53 <zzo38> No, they are entirely different than a proper role playing game. The closest computer games to a proper role playing game would be a text adventure game, although even that is not close.
02:33:09 <pikhq> I was discussing the mechanical aspects alone, of course.
02:33:23 <pikhq> The play experience is certainly *dramatically* different.
02:33:32 <pikhq> What you want for that is not AI players but an AI DM. :P
02:34:41 <zzo38> Mechanical aspects can be made very close but even then, with the various possible exceptions, although you could still make a card game or computer game out of them without the exceptions, it might still make a workable game.
02:37:09 <engree> @tell Vorpal https://www.youtube.com/watch?v=jBd9c1gAqWs
02:37:09 <lambdabot> Consider it noted.
02:47:04 -!- Jafet has joined.
02:47:10 -!- Jafet has quit (Changing host).
02:47:10 -!- Jafet has joined.
02:54:00 <engree> Jafet: pro cloak
02:54:57 <Jafet> I use a pro client
03:00:50 <engree> Jafet: you can identify with server passwords on freenode :P
03:01:03 <engree> <password> :<account name>
03:01:07 <engree> uh without the <>s
03:04:17 <Jafet> My pro client takes care of that flawlessly
03:06:32 -!- Vorpal has quit (Ping timeout: 276 seconds).
03:14:03 <engree> Jafet:
03:14:04 <engree> * Jafet (~Jafet@149.171.48.81) has joined #esoteric
03:14:04 <engree> * Jafet has quit (Changing host)
03:14:04 <engree> * Jafet (~Jafet@unaffiliated/jafet) has joined #esoteric
03:14:12 <engree> Jafet: For sufficiently wrong definitions of flawlessly
03:14:58 <Frooxius> hmm some spambot changed the front page of the wiki probably
03:15:30 <engree> Frooxius: reverted
03:15:39 <engree> thanks
03:16:29 <Frooxius> oh thanks too, I was poking for a link about how to write a page and look at some existing ones
03:19:20 <engree> :)
03:19:37 <engree> don't worry about adding anything too rough formatting-wise, it'll get cleaned up in a day or two
03:20:14 <Jafet> engree: The last minor release of this client left parted usernames in the user list
03:20:46 <engree> Jafet: Why the fuck are you using Pidgin
03:20:47 <Frooxius> okay, I'm making a page about my language(s)
03:21:29 <Jafet> Why do you seem upset that I use it?
03:22:13 <engree> Jafet: No, just amazed
03:22:22 <engree> I don't know a single person who can stand Pidgin's IRC support :P
03:24:16 <Jafet> I don't care enough to change it
03:27:36 <zzo38> Now they have The Mod Archive - Lite.
03:34:30 <pikhq> Just sanity checking: given a value in m^2 and a conversion factor in USD/m, there is no way to get a meaningful value in USD, right?
03:35:54 <Frooxius> is it okay if I copy things I wrote about the language from my webpage or do I have to rephrase it? Do I have to put some "public domain" disclaimer on my webpage if I'm going to just copy it?
03:36:15 <pikhq> Frooxius: Just be aware that the version on the wiki is public domain.
03:36:33 <Frooxius> yeah, I don't mind that
03:36:40 <pikhq> Then you're good.
03:37:07 <pikhq> (source: I read the copyright section of the USC a few years back.)
03:37:33 <Frooxius> But that public domain doesn't apply to the language itself? As in, the documentation on my site, binaries, sources and such (besides examples that I post on the wiki)?
03:37:43 <pikhq> It only applies to the text on the wiki.
03:37:56 <Frooxius> oh cool :3 thanks
03:38:16 <pikhq> We genuinely don't care about the license on anything else, except to note that it's *courteous* to place your code under a FOSS license of some sort.
03:39:02 <Frooxius> The examples of the language you mean?
03:39:09 -!- Klisz has joined.
03:39:12 <pikhq> No, I mean your implementation.
03:39:25 <pikhq> What's placed on the wiki must be public domain (as a matter of policy).
03:40:16 <Frooxius> Oh... Hmm, I never really thought about licenses. I haven't released the sourcecode yet, only Windows and Linux binaries, though I'll put the code there later too
03:42:17 -!- DCliche has quit (Ping timeout: 276 seconds).
03:45:55 <pikhq> Also, FWIW, the FOSS license being courteous thing is not specific to #esoteric, that's a community norm pretty much everywhere outside of corporations.
03:46:56 <engree> well, and windows users :P
03:47:15 <pikhq> engree: Saying "community" automatically excludes them. :P
03:47:34 <Frooxius> Hey, I'm a Windows user x3
03:47:44 <Frooxius> I use Linux too though.
03:48:21 <Frooxius> Oh boy, now you're all going to hate me *hides under a rock*
03:48:45 <pikhq> "Pity" is the correct term.
03:48:55 <engree> Windows users. I've heard of those!
03:49:06 <engree> I read about them in a book.
03:49:07 * Frooxius peeks from under the rock
03:49:18 <engree> (The rock represents capitalism.)
03:49:21 <Frooxius> Yeah, we're rare, like a fairy!
03:49:49 <Frooxius> Pfff, money.
03:50:22 <pikhq> I prefer my schemes for economic distribution to be more handwavey!
03:50:32 <pikhq> (no, fiat money is not handwavey enough!)
03:50:39 <Frooxius> But but but I thought about you and I made Linux binaries as well! *puppy eyes*
03:51:22 <pikhq> No, you made (presumably) x86 glibc on Linux binaries.
03:51:41 <Frooxius> Nuuuu
03:51:50 <Frooxius> it uses standard C++
03:51:57 <engree> you said "binaries"
03:52:05 <engree> if you have an architecture-independent libc-independent linux binary i'll eat my hat :P
03:52:06 <pikhq> (this isn't me being all GNU/X/Gnome/Linux-y, just being pedantic about specifying the ABI)
03:52:26 <pikhq> :)
03:52:37 <Frooxius> Well the standard C++ code can be compiled into whatever you want x3
03:52:42 <pikhq> If we had it.
03:52:44 <pikhq> Which we don't.
03:52:46 <pikhq> Thus the problem.
03:52:46 <Frooxius> Even a donut. That you can eat instead of a hat.
03:53:05 <Frooxius> You will have it :3
03:53:21 <engree> pikhq: he did say he was releasing the sources
03:53:28 <Frooxius> After I figure out these licenses though x3
03:53:54 <Frooxius> Which is basically why I haven't released it yet, I was sort of avoiding it
03:54:40 <pikhq> BSD or GPL (there's more choices, but why consider others? The BSD-alikes are effectively identical, the GPL-alikes have significant disadvantages from being nowhere near as popular as GPL)
03:55:32 <Frooxius> I guess he GPL one, though are there more versions? Also, do I have to put it in all source code files?
03:55:44 <engree> BSD is probably a better choice (<-- NOT BIASED)
03:55:51 <engree> You just have to put it in a file you include with the sources.
03:56:01 <engree> Usually it's called LICENSE (although COPYING is the standard name for the GPL).
03:56:25 <engree> pikhq: Pfft, real programmers tri-license their code Mozilla Public License/Artistic License 1.0/CC by-sa-nc
03:56:26 <Frooxius> oh cool, I was afraid I have to put this GPL comment blob of text I see in some sources *giggles*
03:56:27 <pikhq> Yeah, BSD is perhaps the simplest, and certainly with the best understood consequences.
03:56:28 <engree> -nd
03:56:45 <zzo38> Make it in public domain if you don't care about licenses.
03:56:49 <pikhq> Frooxius: The GPL comment blob is nothing but a courtesy, and one that few people *care* about.
03:57:03 <pikhq> zzo38: In many jurisdictions that's impossible.
03:57:12 <engree> zzo38: Assuming public domain is valid in your country and the countries of those who wish to use your software...
03:57:13 <zzo38> Yes, that is why you have WTFPL
03:57:32 <pikhq> And it's ambiguous in the US, but only slightly.
03:57:54 <Frooxius> okay, thanks, I'll look into it, don't worry, I don't intend to have it closed source, I like the idea if someone actually might be interested into doing something with it x3
03:57:55 <pikhq> (it's either really public domain or licensed under terms precisely identical to what you can do with it under the public domain, near as I can tell)
03:58:20 <engree> pikhq has yet to contradict my SUPERB licensing advice which nobody should follow.
03:58:36 <pikhq> engree: Jesus that is the worst combination of licenses doable.
03:58:43 <pikhq> I mean, CC by-sa-nc? The *fuck*?
03:58:48 <engree> pikhq: <engree> -nd
03:58:57 <engree> It's technically just CC by-nc-nd, though, no sa :P
03:59:24 <pikhq> That only makes it worse.
03:59:48 <engree> pikhq: I forget, is normal multi-licensing union or intersection?
03:59:49 <zzo38> I often use GPL or public domain. But use BSD if you prefer
03:59:50 <engree> I'm tired.
04:00:16 <Frooxius> hmm, I used Qt for the GUI though
04:00:22 <engree> pikhq: Well, this is none of those; this is under the xor of all those licenses. A term applies iff only a single license in the set has it.
04:00:45 <engree> Frooxius: Qt is LGPL these days, so you're fine licensing your program with anything
04:01:09 <Frooxius> Oh that's cool then :3
04:01:14 <zzo38> You could just license your program also under LGPL like Qt is, then, if you want
04:01:19 * engree would suggest http://en.wikipedia.org/wiki/MIT_License#License_terms if you don't really care, for what it's worth; it's the simplest of the BSD-derivatives and widely used.
04:01:31 <zzo38> You can use MIT license too, yes that work also
04:01:34 <Frooxius> Though GUI isn't really necessary, the emulation core works by itself
04:01:49 <engree> It's nicer than BSD3 because it doesn't have a bulleted list. :p
04:01:55 <pikhq> engree: Normally it's select a set, actually.
04:01:57 <engree> Or, hmm, that list is actually numbered.
04:01:57 <Frooxius> As in, it doesn't depend on the Qt libraries at all
04:02:08 <engree> pikhq: Yeah, well, xor licensing is the new thing.
04:02:10 <pikhq> You have to comply with at least one license in its entirety, which license that is is up to you.
04:02:28 <zzo38> Frooxius: If you want, you could either move the GUI into a separate source file, or allow someone else to make those changes if someone else want to do so
04:03:02 <Frooxius> It is separate, I just #include it in the Qt project
04:03:18 <Frooxius> well, the headers and the static library
04:03:41 <pikhq> So, the GUI is basically a seperate program.
04:03:49 <Frooxius> yeah
04:03:56 <pikhq> Still you're fine licensing your program with anything.
04:04:07 <engree> You should give the GUI away for free and sell the emulation core for $5,000/seat.
04:04:13 <pikhq> :P
04:04:16 <engree> it's only logical
04:04:18 <Frooxius> |3
04:04:56 <zzo38> I think you should make the emulation core open sourced and the Linux GUI also open sourced, but sell the Windows GUI for $100 each
04:05:08 <pikhq> You would. :P
04:05:36 <Frooxius> And sell the roasted assembler-cores $500/bucket :D
04:06:39 <Frooxius> *crunch crunch crunch* mmmmm... tasty *crunOUCH* A syntax error!
04:08:04 <MDude> I like zlib just because it has a cooler looking name.
04:12:58 <Frooxius> Though the GUI code is horrible, because it was my first Qt app x3 And I didn't have enough time to learn it first on examples, so I was learning a lot when working on it.
04:19:22 <zzo38> Or just license it entirely under the LGPL
04:19:28 <pikhq> Don't.
04:19:34 <engree> hi
04:19:48 <zzo38> Or BSD, MIT, GPL, WTFPL, public domain
04:19:57 <zzo38> You shouldn't use Creative Commons licenses for software
04:20:19 <Frooxius> Why?
04:44:18 <zzo38> Their FAQ even says the same thing. Also, they are incompatible with software licenses. You should use a proper software license to ensure compatibility.
04:44:41 <zzo38> Extra resources of software, such as graphics, sounds, and so on, can be licensed using Creative Commons.
04:44:42 <shachaf> engree: I knew it was you.
04:46:59 <pikhq> I generally find it easy to pick up on elliott's various nicks. He's just very identifiable.
04:47:22 <zzo38> I find it easy to simply see "!~elliott@unaffiliated/elliott" you can know just from that
04:47:46 <pikhq> I tend not to see that.
04:48:40 <zzo38> I think a most common IRC clients hide that
04:48:56 <pikhq> Mine doesn't hide it, I just don't see him join.
04:49:27 <shachaf> I mean that I just came to my IRC client and switched to #esoteric.
04:49:35 * pikhq nods
04:50:41 <zzo38> Mine shows it with every message
04:51:04 <pikhq> Oh, right, yours is a UI for the IRC bytestream.
04:51:13 <pikhq> :P
04:51:21 <zzo38> And syntax highlighting and a few other things
04:55:13 <zzo38> What is the best way in Haskell to check existence of a file?
04:56:04 <engree> zzo38: Don't, just try and use it and catch the error.
04:56:20 <engree> (My answer to http://stackoverflow.com/questions/8502201/remove-file-if-it-exists-in-haskell goes into some detail about that and why.)
04:59:14 <zzo38> I try to implement to find file in search path specified by environment variables.
04:59:20 <zzo38> What is the best way of that?
04:59:52 <engree> zzo38: Iterate through each path you think it might be in; try and open it for each of them, and catch the exception for it not existing and continue.
05:00:29 <engree> zzo38: Writing openFileIfItExists :: FilePath -> SomethingMode (I always forget the name) -> IO (Maybe Handle) will get isolate the exception-handling boilerplate.
05:01:59 <zzo38> I should use the <|> for IO and fold using <|> maybe
05:03:03 <zzo38> At least it is one way.
05:03:15 -!- MDude has changed nick to MSleep.
05:03:50 <engree> zzo38: That's probably a bad idea; you only want to catch does-not-exist exceptions, not anything else that might go wrong.
05:04:03 <zzo38> OK
05:15:32 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
05:19:01 <engree> http://www.reddit.com/user/Iosethos i don't understand........
05:19:32 <engree> hmm, redditor for six hours.
05:19:43 <monqy> is that the losethos guy
05:19:51 <engree> i think so
05:19:55 <engree> http://www.reddit.com/r/IAmA/comments/o0bkh/iama_ratt_tshirt/
05:20:11 <engree> http://i.imgur.com/RmFpI.jpg <-- one of his submissions, wtf (don't click that)
05:20:29 <engree> "I went to the hardware store and asked that it was the “urgent” number. I called her when got by yesterday and today I got home today, I hoped it was a song by Falco is a rare medical condition."
05:20:33 <engree> a song by falco is a rare medical condition
05:20:49 <engree> holy shit look at the speed he's posting
05:21:08 <engree> i mean obviously the text is machine-generated
05:21:10 -!- cswords has joined.
05:21:25 <engree> monqy: http://soundcloud.com/footnotegal/sets/the-first-transaction-was/
05:21:27 <engree> christ what
05:21:40 <engree> he submitted this to... /r/mylittlepony... wtf losethos guy, wtf
05:22:40 <monqy> i
05:22:42 <engree> http://www.reddit.com/r/IAmA/comments/o0bkh/iama_ratt_tshirt/c3de006 oh good someone else recognises him
05:23:02 <engree> http://www.reddit.com/user/losethos
05:23:03 <engree> and he's gone
05:23:07 <engree> just like that
05:23:13 <engree> i
05:23:15 <monqy> http://www.reddit.com/user/Iosethos with an I
05:23:23 <engree> oh
05:23:28 <engree> i was thinking that was a bit too perfect
05:24:51 <engree> http://www.reddit.com/r/science/comments/o0p7d/to_still_be_soaked_with_detergent/ ah, the halcyon days of youth, when we were soaked with detergent
05:25:40 <Frooxius> hmm... how do I make a thumbnail though? I can't seem to figure it out >.< I tried looking up syntax, but nothing seems to work
05:25:59 <engree> Frooxius: thumbnail for what?
05:26:07 <engree> if an image, http://www.mediawiki.org/wiki/Help:Images might help
05:26:34 <engree> [[blah|thumb|caption]] basically
05:26:38 <engree> and you can omit the |caption
05:26:47 <engree> and blah is Image:blah
05:27:28 <Frooxius> yeah, I was looking at that... oh no wait... that's something a bit different, the one I saw had syntax "thumb="
05:27:32 <Frooxius> ok thanks
05:31:32 <engree> We need more Deadfish interpreters in esolangs. monqy: You get on that.
05:33:14 <engree> Frooxius: Hey, didn't you say your interpreter was in C++? I can write C++ too: http://esoteric.voxelperfect.net/wiki/Deadfish#C.2B.2B_templates :D
05:34:07 <Frooxius> Nuuuuu x3
05:34:27 <monqy> are there any decent esolangs left
05:34:30 <monqy> undeadfished
05:34:39 <Frooxius> It's not interpreter though
05:35:02 <engree> monqy: Underload, although admittedly it lacks input
05:35:06 <engree> INTERCAL
05:35:27 <monqy> hm, I don't know intercalle
05:35:31 <Frooxius> There's an assembler/compiler that makes a machine code for the processor architecture. That can be either fed to the VHDL implementation (not available/finished yet) or ran in the emulator (virtual machine sort of )
05:36:23 <engree> Frooxius: ah, you program in both C++ and VHDL... which circle of hell did you learn programming in?
05:37:09 <Frooxius> I'm mostly self educated. I poke around for some books and such and play with it.
05:37:20 <Frooxius> You mean, that I should rather work with Verilog? x3
05:37:36 <Frooxius> due to the C++ part
05:38:05 <engree> Nope, they're just two unbearable languages of torture and pain :P
05:38:11 <engree> OK, VHDL moreso.
05:38:41 <Frooxius> Says the esolang enthusiast? :D
05:39:29 <engree> At least we don't claim they're usable :)
05:39:37 <Frooxius> :D
05:40:27 <Frooxius> Well then... this calls for... HELLO WORLD in attoassembly x3 http://data.solirax.org/attowpu/helloworld.att
05:40:47 <engree> Wow, someone added a language to the list and didn't mess up the alphabetic order.
05:40:52 <engree> This has to be some kind of record.
05:41:04 <Frooxius> It wasn't me Oo
05:41:12 <engree> Frooxius: Reminds me of Redcode, though probably not for any decent reason.
05:41:48 <Frooxius> here's my implementation of Pong in AttoASM :D http://data.solirax.org/attowpu/Pong.att
05:42:12 <monqy> does it work
05:42:45 <engree> it's broken pong
05:42:52 <Frooxius> It works
05:43:26 <Frooxius> Why would I publish something that doesn't work?
05:43:46 -!- itidus20 has quit (Ping timeout: 240 seconds).
05:43:56 <monqy> ask the people who publish things that don't work
05:44:14 <monqy> ask all of them
05:44:27 <Frooxius> oh, I might need a people-who-publish-things-that-don't-work detector though
05:46:35 <Frooxius> hmm, I don't really have nice video of it (you can try it yourself later though), but there's at least something: http://www.youtube.com/watch?feature=player_detailpage&v=mqTjj_7e51s#t=236s
05:46:52 <engree> monqy: should i do good thing or stupid thing
05:46:57 <Frooxius> It's from an high-school expo where I presented it, earli... oh it's 2012... earlier last year
05:47:02 <monqy> a good stupid thing
05:47:16 <engree> Frooxius: looks like pnog to me!!
05:47:18 <engree> pnog. oops
05:47:29 <Frooxius> That pong is running there in the simulator
05:53:20 -!- Vorpal has joined.
05:58:23 <pikhq> "An affect can effect an effect that affects."
06:03:47 -!- Jafet has quit (Quit: Leaving.).
06:09:54 <engree> hey pikhq how long can human beings stay awake, what does science say
06:10:22 <Frooxius> 11 days
06:10:35 <Frooxius> at least that's the record I think
06:11:04 <engree> ok there may be hope for me
06:11:06 <engree> then
06:15:07 <pikhq> What you actually *want* is the the time before you start hallucinating, though.
06:15:23 <monqy> but the hallucinations are fun
06:16:55 <monqy> also the surreal feeling, involuntary movements
06:18:23 <engree> pikhq: what's that then
06:18:44 <pikhq> IIRC, ~72 hours.
06:19:43 <coppro> engree: actually not that long
06:19:53 <coppro> you hit microsleeps pretty quickly comparatively
06:20:14 <pikhq> Yeah, don't microsleeps start from ~24 hours?
06:20:41 <coppro> yeah
06:21:07 <engree> well not universally i'm sure
06:21:10 <engree> i mean
06:21:15 <engree> obviously the point is that you don't notice them
06:21:27 <engree> but i've functioned normally and very sharply at 40 hours
06:22:06 <pikhq> I have managed to notice them, but only from noticing "WTF a few seconds slipped".
06:22:32 <coppro> engree: how much drugs?
06:23:02 <coppro> I don't use drugs; usually I max out around 30 hours
06:23:07 <engree> coppro: every drug, man. (no drugs)
06:23:08 <coppro> and that's on a good day
06:23:10 <engree> the 40 hour thing was just once
06:23:13 <coppro> engree: I include caffeine
06:23:23 <engree> well ok i drink soda
06:23:30 -!- Jafet has joined.
06:23:36 <engree> but i'm pretty sure the effects are negligble on me nowadays
06:23:41 <engree> and i don't drink any more when sleep-deprived
06:23:58 <engree> coppro: consider that a common schedule for me is sleeping approx. every 26-30 hours
06:24:04 <engree> so uh
06:24:11 <engree> i guess i'm just lucky!
06:24:25 <engree> erm not
06:24:27 <engree> every 30 hours but like
06:24:31 <engree> after 26-30 hours of wakeness
06:25:47 <coppro> engree: are you peter barfuss?
06:26:06 <engree> i'm not sure; probably not
06:26:10 <coppro> hmm, ok
06:26:18 <engree> it depends on who peter barfuss is
06:26:20 <engree> is he me?
06:26:55 <coppro> peter barfuss is an undergrad at my school known for, among other things, massive sleep deprivation. At his worst, I believe he had a week where you could count the number of hours of sleep on one hand
06:27:24 <engree> nice, but i don't do the napping thing, with me sleep deprivation is followed by sleeping 14 hours+
06:27:27 <engree> usually 16 hours
06:27:49 <engree> i'm pretty sure my natural melatonin levels are abnormally low for some reason
06:28:13 <coppro> I've hit 18 hours of sleep after massive deprivation
06:28:50 <engree> oh, i've done 20
06:28:52 <pikhq> I'm pretty sure holy fuck I feel bad
06:28:55 <Vorpal> 7:30 and still pitch black outside
06:28:55 <lambdabot> Vorpal: You have 1 new message. '/msg lambdabot @messages' to read it.
06:28:58 <engree> pikhq: wat
06:29:03 <Vorpal> @messages
06:29:03 <lambdabot> engree said 3h 51m 53s ago: https://www.youtube.com/watch?v=jBd9c1gAqWs
06:29:07 <Vorpal> I hate Swedish winters
06:29:08 <pikhq> engree: I'm sick and complaining about it.
06:29:18 <engree> Vorpal: Dude... that can happen in the UK too :P
06:29:26 <pikhq> Especially as I'm already sleep-deprived and now can't sleep well
06:29:42 <engree> pikhq: Me too! Well, the sleep-deprived part. But it's only 6:30, so there's a chance I'll hop to bed.
06:29:45 <Vorpal> engree, well sure, but it will be the same 10:00 too
06:30:05 <engree> Not sleeping would be an excellent opportunity to realign both my sleep schedule and my dwindling Stack Overflow reputation spree, though!
06:30:35 <engree> coppro: bonus fun sleep fact: the only way i can rebound into a decent schedule is by waking up at inconvenient times twice in a row
06:30:43 <Vorpal> @tell elliott Impressive. But a pretty basic scene. I wonder if it would make use of SSE and so on to speed up computations. I saw a ray tracer in C written to use SSE to compute multiple line intersections at once
06:30:43 <lambdabot> Consider it noted.
06:31:07 <pikhq> Vorpal: engree == elliott
06:31:11 <Vorpal> oh
06:31:16 <engree> it's funny because
06:31:19 <engree> engree actually sent that message
06:31:23 <pikhq> :)
06:31:24 <Vorpal> I read it as elliott somehow
06:31:25 <Vorpal> wtf
06:31:41 <Vorpal> I guess it is because I know we talked about the topic before
06:32:00 <engree> coppro: wake up at 16:00 -> sleep at next 16:00 -> wake up at midnight -> sleep at 18:00-20:00 -> wake up at 04:00 -> sleep at midnight -> wake up at reasonable hour
06:32:05 <engree> patented(tm)
06:32:12 <engree> Vorpal: well, repa does automatic parallelisation
06:32:18 <Vorpal> engree, that one never worked for me
06:32:20 <engree> I don't think GHC does SSE though
06:32:25 <Vorpal> I'm in the wakeup at midnight phase now
06:32:30 <Vorpal> and I'm stuck there
06:32:51 <engree> Vorpal: the code is actually really readable: http://code.ouroborus.net/gloss/gloss-head/gloss-examples/Ray/
06:33:00 <pikhq> Vorpal: Better than the wakeup at noon phase, I guess?
06:33:05 <Vorpal> engree, more readable than C with SSE? Of course
06:33:14 <Vorpal> pikhq, that is standard.
06:33:16 <engree> Vorpal: yeah, but it's even pretty idiomatic
06:33:20 <Vorpal> pikhq, I usually wake up after noon :P
06:33:23 <engree> pikhq: god no waking up at noon is amazingly perfect
06:33:28 <engree> if i could wake up at noon every day i'd be so happy
06:33:33 <pikhq> engree: Yes, *I* think so.
06:33:44 <pikhq> Unfortunately a few billion people seem to disagree.
06:33:56 <Vorpal> engree, adding SSE gives you an edge. I saw basically that + some CSG + antialias in real time being done
06:34:05 <Vorpal> not sure the haskell code could scale up to that
06:34:18 <pikhq> Vorpal: Being editable by a non-madman counts for more.
06:34:19 <engree> Well, there's no real obstacle to GHC donig SSE.
06:34:21 <engree> *doing
06:34:24 <engree> It just hasn't been implemented yet.
06:34:36 <Vorpal> pikhq, certainly. But I always had a soft spot for the crazy demoscene :P
06:34:41 <pikhq> :P
06:35:02 <engree> Vorpal: And the code could possibly benefit from it without being changed. It doesn't contain a single mention of parallelism, after all, and it still scales to the quad-core machine it was run on.
06:35:12 <Vorpal> indeed
06:35:23 <Vorpal> engree, I believe the code I was referring to used OpenMP + SSE
06:35:54 <Vorpal> engree, openmp is actually quite easy to use. Still it does mention parallelism indeed.
06:38:07 <pikhq> I thought I saw someone working on getting the automatic vectorisation to work with OpenMP...
06:38:14 <pikhq> Might just be misremembering, though.
06:38:39 <Vorpal> maybe, I don't think it was used in the code in question though
06:38:48 <pikhq> Nope.
06:38:54 <pikhq> Though in principle it could be.
06:39:04 <Vorpal> indeed
06:39:10 <pikhq> Much like in principle you could execute a C program on the Deathstation 9000.
06:39:16 <pikhq> :P
06:39:27 <Vorpal> pikhq, actually the program in question was portable between gcc and msvc
06:39:35 <Vorpal> which is pretty impressive if you use intrinsics
06:40:30 * Vorpal decides to try out the current technic pack for minecraft
06:40:38 <Vorpal> amazing mod pack back during 1.7.3 at least
06:40:44 <Vorpal> haven't really used it since then
06:47:21 <engree> 6:47 :(
06:53:25 -!- kmc has quit (Quit: Leaving).
06:56:52 <engree> monqy: hi, should i sleep,
06:56:58 <monqy> a
06:57:37 <engree> a
06:58:41 <engree> monqy: what does, a mean,
06:58:46 <monqy> a
07:00:08 <engree> monqy: help
07:00:12 <monqy> D:L
07:00:26 <monqy> are you,
07:00:27 <monqy> tired
07:00:42 <engree> yes
07:00:52 <monqy> consider sleep
07:01:14 <engree> :(
07:01:29 <monqy> or wait until the tired becomes painful
07:01:40 <monqy> or until you run out of things to do that are not sleep
07:01:55 <monqy> or until you slip unconscious
07:04:37 <engree> monqy
07:04:45 <monqy> engrey
07:04:47 <engree> i like the cut of your jib, let me give you an offer u cant refuse (i will kill you if you refuse)
07:04:52 <engree> ill go to bed
07:04:53 <monqy> oh no,,
07:05:01 <engree> and you make sure i get the SO rep I need by the time i wake up
07:05:08 <monqy> h
07:05:09 <monqy> how
07:05:11 <monqy> hhhhow
07:05:13 <engree> thats for me to know
07:05:14 <engree> and you to find out
07:05:22 <monqy> D:
07:09:58 <engree> monqy: have you found out yet
07:10:12 <monqy> no
07:12:24 <engree> monqy: hury, up?
07:12:31 <monqy> i
07:12:32 <monqy> cant
07:12:32 <monqy> ;_;
07:14:00 <engree> ok gon1dight
07:14:01 <engree> gondight
07:14:04 <engree> gondight monquay
07:14:06 <monqy> ok
07:14:11 <monqy> gondighte
07:14:19 <engree> bye -engrey
07:14:27 <monqy> - mqony
07:14:49 <zzo38> Control.Monad.Trans.Error defines MonadPlus IO but not Alternative IO and anyways their instance is wrong
07:15:12 <zzo38> I think they should allow override instances!
07:15:30 <zzo38> I wrote some ideas in my user space in Haskell Wiki
07:17:40 <shachaf> engree
07:18:16 * shachaf ;
07:18:21 <shachaf> What the Haskell wiki needs is more notation.
07:19:06 -!- engree has quit (Ping timeout: 260 seconds).
07:19:27 <shachaf> http://www.haskell.org/haskellwiki/User:Zzo38/Proposal_for_instance_disambiguation
07:19:52 <zzo38> shachaf: Yes that one is the one I meant
07:27:25 <Vorpal> argh the key mapping in minecraft gets annoying when you have tens of mods
07:27:41 <Vorpal> and there is of course not a single interface to configure them all
07:28:00 <fizzie> Maybe when they finally add that modding API...
07:28:10 <Vorpal> fizzie, doubt that will ever happen
07:28:33 <Vorpal> fizzie, besides there are key bindings in the settings menu I can't access because they go under the "done" button
07:28:42 <Vorpal> zombe do it by config file
07:29:00 <Vorpal> rei's minimap does it using it's own config dialogue
07:29:01 <Vorpal> and so on
07:30:08 <Vorpal> fizzie, currently I'm trying to get technic pack + several freestanding mods to play nicely
07:30:15 <Vorpal> it works apart from conflicting keys atm
07:30:53 <fizzie> $ ./testlm-disk.pl ../twungot/tokens.bin.irc ../twungot/model.bin.irc 3 programmers do it with
07:30:53 <fizzie> programmers do it with objects. is that a cartesian product function that i want to
07:30:53 <fizzie> programmers do it with lookahead and the whitespace cset. but please, be patient: i have some
07:30:53 <fizzie> programmers do it with exceptions as a control and assume that the answer to your question is "is it because you think you _need_ unwind-protect?"
07:31:06 <Vorpal> cset?
07:31:41 <Vorpal> fizzie, also I found a better version of TMI, called NMI
07:31:43 <fizzie> Perhaps short for "set of characters".
07:31:47 <Vorpal> if you ever used TMI
07:32:02 <fizzie> Non-maskable interrupts are a better version of too much information?
07:32:03 <Vorpal> I suggest switching to NMI, especially if you have lots of mods
07:32:29 <Vorpal> fizzie, too many items also typoed NEI as NMI
07:32:35 <Vorpal> because that is not enough items
07:32:40 <Vorpal> fizzie, the in game inventory editor
07:32:44 <Vorpal> useful when testing things
07:33:05 <Vorpal> NEI supports searching rather than having like 40 pages due to mods
07:33:10 <Vorpal> and so on
07:33:25 <zzo38> The MonadPlus IO in Control.Monad.Trans.Error is the wrong one!!!!!!!
07:33:25 <Vorpal> and you can use it to look up recipes as well
07:33:44 <Vorpal> fizzie, by turning off cheating mode
07:35:09 <Vorpal> fizzie, not sure if you play with many mods though, apart from optifine I presume
07:36:04 <fizzie> Not really. I tried out a few bits from that zombe thing.
07:36:11 <Vorpal> ah
07:36:50 <fizzie> I haven't really done any Minecrafting since about September, anyway.
07:37:34 <kallisti> it happens quite frequently that I'll go to bed after staying up all night
07:37:38 <kallisti> and then... wake up 4 hours later.
07:37:38 <Vorpal> fizzie, I use techic pack (IC², Buildcraft, Redpower + a lot more smaller mods), NEI, zombe's flying and sun control, worldedit CUI, single player commands (for worldedit support in single player) and of course optifine
07:37:47 <Vorpal> actually looks like optifine is part of technic nowdays
07:38:21 <Vorpal> redpower especially adds a /lot/ of blocks
07:38:27 <Vorpal> due to combinatorial explosion
07:39:19 <Vorpal> like you can make panels, halfblocks and what not out of most vanilla blocks
07:42:09 <Sgeo> kallisti, there may have been an update I forgot to notify you about
07:46:03 <kallisti> indeed
07:48:11 <Vorpal> ouch ouch ouch, minecraft coloured lights are done using multitexturing. This is so wrong.
07:48:24 -!- zzo38 has quit (Remote host closed the connection).
07:48:28 <Vorpal> as in torchlight vs. sunlight
07:50:58 <fizzie> 1.8 changelog: + Rewrote the light rendering to use multitexturing instead of direct colors
07:51:43 <Vorpal> indeed
07:51:53 <Vorpal> which is a nasty way to do it
07:52:07 <Vorpal> fizzie, it makes it much harder for mod authors to add their own lights of various colours
07:53:12 <fizzie> That's not surprising in general, either, since the existing light colour scheme is just "two dimensions, skylight and blocklight == torch", no matter how it's implemented.
07:53:26 <fizzie> You could easily make all torches green, though. :p
07:53:30 <Vorpal> sure
07:53:38 <Vorpal> but not add green, red and blue torches
07:55:03 <Vorpal> fizzie, why doesn't minecraft just use the phong model for all the available light sources. It could even drop the specular light calculation, which is probably the most expensive part
07:55:05 <Vorpal> from what I remember
07:55:28 <Vorpal> since mc has not specular light
07:55:42 <fizzie> It wouldn't be as "retro".
07:56:13 <Vorpal> come on, mc dropped retro the day it implemented smooth light
07:56:47 <fizzie> That was someone else's idea, though, and optional in any case.
07:57:00 <Vorpal> well that stuff isn't around any more
07:57:29 <fizzie> Isn't it still toggleable? (I certainly haven't looked.)
07:57:39 <Vorpal> I don't think so, can't check atm
08:03:31 -!- cswords_ has joined.
08:05:32 <fizzie> Does the current lighting code do shadows for block light sources? For skylight it does, that much I remember. I suppose it does some sort of custom light-spread for blocklight too.
08:07:29 -!- cswords has quit (Ping timeout: 276 seconds).
08:08:25 <myndzi> maybe somebody here can answer this one
08:08:43 <myndzi> i took some source which was released under the MIT license and significantly modified it
08:08:58 <myndzi> wtf do i do to be all proper about things but still own my modifications?
08:19:00 <fizzie> It's not a copyleft license or anything, so as far as I know you're free to distribute your modified version under a license as restrictive as you want, possibly as long as there's a sentence like "includes code from libfoo, which you can get from libfoo.com, licensed under the following terms: [copy of their copyright notice + MIT license statement]." But I'm certainly no lawyer.
08:20:47 <myndzi> yeah, i don't actually care about the license but i intend to make the source available and I want to "do right"
08:20:55 <myndzi> there are lots of these licenses that allow you to take and use and modify the code
08:21:14 <myndzi> do i just add a copyright notice? how do i specify that "my changes are everywhere" lol
08:27:08 -!- nooga has joined.
08:37:57 <fizzie> If you're going to MIT-license the result, I would think you can just put in "Copyright Myself" + MIT license "permission is granted + no warranty" statement + based on/derived from the FunkyCode, copyright TheirName. Though I've also seen people just do "Copyright Myname" + "Copyright TheirName" + same license terms.
08:38:35 <myndzi> that helps :)
08:38:39 <fizzie> E.g. RTMPDump-YLE does it like that, http://fador.be/yle/README.rtmpdump-yle + then their COPYING file in the distribution includes the GPL text, plus "json-c has the following license: [json-c's MIT license text]".
08:38:40 <myndzi> i'd have thought it would be easier to find an answer for this
08:39:01 <fizzie> (Of course whoever wrote RTMPDump-YLE probably wasn't a lawyer either.)
08:39:06 <myndzi> like, a well-known and "official" kind of answer ;)
08:39:38 <myndzi> i mean, it's just words in many ways so i suppose i can write whatever i want that doesn't violate the existing license, i just wondered if there was a proper or standard way and couldn't find it
08:39:41 <myndzi> so now i want to find more :P
08:40:09 <myndzi> i mean, the author said to me in e-mail "i don't really care, you can do whatever you want" hehe
08:41:11 <Jafet> Copyright Jafet 2009..2012. I don't have any money to hire a lawyer, so you can use this source code in any way you like and I probably won't ever sue you. No warranties expressed or implied.
08:41:25 <myndzi> ha
08:41:48 <myndzi> i got a kick out of the WTFPL license
08:58:23 -!- Slereah_ has quit (Ping timeout: 268 seconds).
09:02:17 <Frooxius> Look, I implemented simple colored snow animation in my language 2DASM for 2DWPU architecture http://www.youtube.com/watch?v=nnzaXvF7p7o Here's the source: http://data.solirax.org/2dwpu/colorsnow.2da It's WIP though |3
09:05:13 -!- zzo38 has joined.
09:05:48 <zzo38> I made up a big number, according to these functions of natural numbers, where ^ means exponent and ! means factorial and ; separates the definitions.
09:06:51 <zzo38> f(0,0) = 1; f(x,0) = x^f(x-1,k(x,x!)); f(x,y) = x!+k(y^f(x,0),y^f(x,y-1))
09:07:24 <zzo38> k(x,0) = 2^h(x,0); k(x,y) = (x+y)^k((xy)^(xy),y-1)
09:07:54 <zzo38> h(0,0) = 1; h(x,0) = p(h(x-1,p(x))); h(x,y) = p(h(x,y-1))
09:08:02 <zzo38> p(x) = x'th prime number; p(0)=1
09:08:20 <zzo38> q(x,0) = f(x,0); q(x,y) = f(q(x,y-1),q(x,y-1))
09:08:28 <zzo38> Big number = q(2,q(2,2))
09:09:07 * Jafet waits for zzo's new exciting result in Ramsey theory.
09:09:15 <zzo38> How large is it, what is its one's digit, what is its most significant digit, how does it compare to other big numbers, and etc?
09:10:36 <zzo38> Is it larger or smaller than: Skew's number, Moser's number, Graham's number, and XKCD's number?
09:10:59 <zzo38> Or even equal?
09:11:59 * Sgeo is tempted to put it in Haskell
09:12:44 <zzo38> I worked it a bit on paper and as far as I know the computer probably won't be able to complete the calculation
09:21:39 <Vorpal> <zzo38> p(x) = x'th prime number; p(0)=1 <-- I thought 1 was not a prime number?
09:22:02 <Vorpal> because then there wouldn't be unique factorizations into prime numbers
09:22:25 <zzo38> I know 1 is not a prime number.
09:22:41 <zzo38> But p(0) has to be defined anyways so that is its definition I put
09:22:55 <Vorpal> ah
09:23:15 <Vorpal> <zzo38> I worked it a bit on paper and as far as I know the computer probably won't be able to complete the calculation <-- depends on how you represent it?
09:23:30 <Vorpal> it looks like too much work though
09:23:50 <Vorpal> anyway, if you worked on it in a CAS you might be able to find something out
09:24:13 <Vorpal> zzo38, I assume it is super-exponential then?
09:24:29 <Vorpal> hm there is ! in there, so I'd go with probably
09:30:03 <zzo38> Already after expanding f(2,0)=2^f(1,4^((4^4+1)^(2^(h((4^4)^(4^4),0))))))
09:30:50 <zzo38> Already (4^4)^(4^4) is 256^256 which is more than googol.
09:31:52 <Frooxius> What about Googolplex?
09:33:05 <Vorpal> Frooxius, is that 10^(10^100) or? I don't remember
09:33:16 <Frooxius> yeah
09:33:24 <Frooxius> 10^googol
09:33:54 <Vorpal> mathematica says that 10^(10^100) > 256^256 is True, but it gives a warning about overflow
09:33:57 <Vorpal> so I'm not sure
09:34:11 <Frooxius> I don't really know the math around these expansions and such, I guess I'll have to read something more later ^^
09:34:47 <Vorpal> but then that is a fairly small level of expansion of zzo38's function
09:35:29 <Vorpal> thing that annoys me greatly in windows 7: I can't find a way to open the right click menu for the currently open directory without going up a level above it and right clicking it
09:35:46 <Vorpal> I'm currently working with shell integrated version control system, so I really really want that feature
09:36:15 <Frooxius> Right clicking in the empty space doesn't work? Or did I misunderstand you?
09:36:40 <fizzie> Vorpal: 256^256 = (10^log10(256))^256 = 10^(log10(256)*256) ~ 10^616; it's quite clear 10^(10^100) is bigger than that.
09:36:41 <Vorpal> hm I tried to right click the icon for the folder in the corner of the window. That worked under xp
09:36:45 <zzo38> Did you try right-clicking the icon in the title bar? That works in older versions of Windows.
09:37:06 <Vorpal> zzo38, that is the thing that /doesn't/ work any more
09:37:14 <zzo38> Did you try using the File menu?
09:37:37 <zzo38> In my computer, which is XP, selecting the File menu has one submenu labeled with the name of the current directory.
09:37:50 <Vorpal> ah the option for tortoisehg is under there, good
09:37:54 <Vorpal> right under the file menu
09:38:00 <Vorpal> which is btw hidden by default
09:38:05 <Vorpal> until you set a folder option thingy
09:38:19 <zzo38> Pushing alt should make it display the menu even if hidden
09:38:35 <Vorpal> (I really prefer linux, windows would be okay with a usable shell, and no powershell is a joke)
09:39:15 <Vorpal> wait what, can't hg handle empty directories? Or is it just this shell extension being stupid?
09:39:43 <zzo38> Yes, Linux is better. But in Windows, the standard command prompt is OK for some things, and so is Windows Explorer; you can get a UNIX command line by using Cygwin.
09:39:58 <Vorpal> cygwin is kind of broken iirc
09:40:06 <fizzie> "After it deletes a file, it then deletes any empty directories that were in the deleted file's path. This sounds like a trivial distinction, but it has one minor practical consequence: it is not possible to represent a completely empty directory in Mercurial."
09:40:27 <Vorpal> right
09:40:38 <Vorpal> and there is no tortoisebzr, and I'm /not/ using svn
09:40:39 <fizzie> Git works the same way, unless I misremember.
09:40:41 <Vorpal> (nor git)
09:41:13 <fizzie> You can put a placeholder file in.
09:42:19 <Vorpal> fizzie, not really in this case though. Meh
09:43:17 <Vorpal> also tortoisehg has some problems with tracking the correct state for the icon overlay. More so than tortoisesvn even
09:43:26 <Vorpal> and that had some issue with it
09:43:58 <fizzie> A dummy .gitignore/.hgignore is something I've seen in "empty"-but-we-want-them-to-exist directories.
09:45:10 <Vorpal> I have no control over the software that might try to read the directory in question so I'd rather not confuse it, I'll just make sure to add the directory once any files does get added to it
10:19:54 -!- olsner has quit (Ping timeout: 240 seconds).
10:25:56 -!- nooga has quit (Ping timeout: 276 seconds).
10:33:09 -!- olsner has joined.
11:20:20 <Patashu> Regex question, how do I alter this regex: ^(\w++) gets a (.*?)$ so if in the (.*?) part there is the word 'and' it doesn't match
11:20:27 <Patashu> I figure something to do with lookarounds? but can't figure out what
11:20:52 -!- nooga has joined.
11:26:39 <fizzie> "Doesn't match" is often not-so-easy for regexen. I mean, you *can* of course just replace (.*) with ((?:(?!and).)*) and that (seems to) work, but it's anyone's guess how inefficient that is; esp. compared to just matching and then testing whether $2 contains "and".
11:29:17 <fizzie> !perl @a = ("foo gets a bar", "foo gets a bar and baz"); for (@a) { print "$_ => "; if (/^(\w+) gets a ((?:(?!and).)*?)$/) { print "match: ($1) ($2)\n"; } else { print "no match\n"; } }
11:29:17 <EgoBot> foo gets a bar => match: (foo) (bar) \ foo gets a bar and baz => no match
11:29:59 <Patashu> wait, duh, I'm an idiot
11:30:04 <Patashu> I can just test in LUA after the regex matches
11:31:26 -!- zzo38 has quit (Remote host closed the connection).
11:31:38 <fizzie> Also I doubt whether the ? does nothing; you're already using the possessive ++ "eat and never backtrack", and the match is anchored at the end with $, so I don't see how the (.*) part can do anything else except match all the way to the end, no matter if it's greedy or not.
11:31:43 <fizzie> s/nothing/anything/
11:31:56 <Patashu> it probably doesn't do anything, no
11:32:03 <Patashu> it's just there because the regex generator put it there for me!
11:33:14 <Patashu> it's interesting seeing what kind of regexes are pathological and what aren't
11:34:41 <fizzie> ((?!foo).)* sounds like something that at least a commonly stupid regex engine would implement in the rather bad "check for a 'foo' substring at each position" way.
11:36:31 <Patashu> would the pearl regex engine implement that in the bad way?
11:36:33 <Patashu> *perl
11:36:39 -!- Jafet has quit (Ping timeout: 240 seconds).
11:36:40 <Patashu> b/c that's what mushclient uses
11:37:53 <fizzie> From what I've heard, it's not uncommonly smart.
11:41:15 -!- Jafet has joined.
11:41:24 -!- oerjan has joined.
11:49:10 <oerjan> 01:01:01: <engree> :t reads
11:49:10 <oerjan> 01:01:02: <lambdabot> forall a. (Read a) => String -> [(a, String)]
11:49:12 <oerjan> hm...
11:51:48 <oerjan> > runStateT (replicateM 3 $ StateT reads) "1 2 3 4" :: [([Int], String)]
11:51:49 <lambdabot> [([1,2,3]," 4")]
11:52:30 <fizzie> Patashu: http://sprunge.us/fdXW -- well, that doesn't look excessively smart. Though I guess it's possible the debug mode inhibits some optimilizations.
12:06:00 -!- Phantom_Hoover has joined.
12:11:17 <oerjan> <engree> pikhq: Well, this is none of those; this is under the xor of all those licenses. A term applies iff only a single license in the set has it.
12:11:30 <oerjan> that's not xor, xor means an odd number
12:11:59 <oerjan> it's addition (mod 2), after all
12:13:14 -!- itidus21 has joined.
12:29:20 <oerjan> <engree> if i could wake up at noon every day i'd be so happy <-- i woke up and noon today *MWAHAHAHA*
12:29:39 <oerjan> *at
12:33:03 <Phantom_Hoover> I, too, woke up at noon.
12:33:09 <Phantom_Hoover> `words --english 20
12:33:14 <HackEgo> Unknown option: english
12:33:24 <Phantom_Hoover> `words --eng-gb 20
12:33:30 <HackEgo> lot verted praxinde ttensent diviot volute prote int esse antisscn sgthconstrefe darade reffe runcharmit ielder difper speari sonder cfol good
12:33:31 <oerjan> no such language. here we all speak rigelian.
12:35:28 <oerjan> sonder the darades, we've got a difper following us!
12:36:11 <oerjan> don't believe that volute runcharmit!
12:36:46 <oerjan> he's prote to a lot of no good
12:36:51 -!- FireFly has quit (Changing host).
12:36:51 -!- FireFly has joined.
12:37:38 <oerjan> Sgth. Constrefe, you're such a diviot!
12:38:05 -!- derdon has joined.
12:42:02 -!- monqy has quit (Quit: hello).
12:52:49 -!- pikhq has quit (Ping timeout: 240 seconds).
12:53:00 -!- pikhq has joined.
12:54:14 <Deewiant> So is the weather in Hexham today Scotland? http://i.imgur.com/SWaD6.jpg
12:56:49 <fizzie> "Current temperature at Otaniemi: 3.12 °C"
12:57:44 <Phantom_Hoover> Deewiant, depends on whether everything that hasn't been nailed down has blown away.
12:57:44 <fizzie> It was -5 just two days ago; and yesterday it was snowing reasonably heavily; now I guess it's all going to just melt again.
12:59:53 <itidus21> Weather for Melbourne, Victoria | Temperature: 73F / 23C
13:02:36 <Phantom_Hoover> Deewiant, I believe the weather for Tuesday indicates that there are clouds forming an X shape in the sky, in much the same way as they are reported to have to Óengus II before his battle with the Angles.
13:09:06 <oerjan> @tell zzo38 i think your number may be larger than Skewes's number but smaller than Moser's number, as afaict all your functions are still primitive recursive, so cannot get up to the approx. ackermann level.
13:09:06 <lambdabot> Consider it noted.
13:14:51 <Sgeo> oerjan, does my computer have any chance of storing Skewes's number?
13:15:45 <oerjan> not written out in a common base, no
13:17:01 <oerjan> 10^10^10^34 has 10^10^34 decimals. even 10^10^34 has 10^34 which is enormous
13:23:12 <oerjan> 09:33:54: <Vorpal> mathematica says that 10^(10^100) > 256^256 is True, but it gives a warning about overflow
13:23:24 <oerjan> 256^256 = 2^(8*256), so much smaller
13:24:42 <fizzie> Estimates of the amount of "data" in the world are around the magnitude of a zettabyte, 10^21 bytes.
13:25:45 <fizzie> They newsposts that report these estimates never tell how they're made.
13:27:02 <Phantom_Hoover> The absolute quantum-mechanical upper bound for the data storage of the entire Earth is only around 10^75 bits.
13:28:08 <itidus21> fizzie: is that in non-compressed form? :P
13:28:20 <itidus21> suppose all the data in the world is compressed ... hahahahha
13:28:44 <itidus21> like the amount of "data" in the world probably means the amount of ram in the world
13:28:59 <itidus21> or the size of the world's tape
13:29:02 <Phantom_Hoover> Clearly they estimated the Bekenstein bounds of all the computers in the world.
13:29:09 <itidus21> oh
13:29:36 <itidus21> this topic over my head which means i am learning
13:29:59 <fizzie> All they really say is just "content" in the "Internet"; I'm sure it's based on something more detailed, but they never bother including that in the reporting.
13:30:23 <Phantom_Hoover> The Bekenstein bound of the internet as depicted by The IT Crowd.
13:30:37 <Phantom_Hoover> (It's zero, because the internet obviously doesn't weigh anything.)
13:30:37 <fizzie> "In 2007, humankind was able to store 2.9 × 10^20 optimally compressed bytes, communicate almost 2 × 10^21 bytes, and carry out 6.4 × 10^18 instructions per second on general-purpose computers", says a 2011 Science article, which presumably has some details too.
13:30:51 <Phantom_Hoover> optimally....... compressed.........
13:31:40 <itidus21> science journalism
13:31:50 <fizzie> Phantom_Hoover: That's shorthand for "best algorithms available in 2007".
13:32:07 <fizzie> In the context of this story, anyway.
13:32:22 <itidus21> oh fair enough then
13:33:53 <oerjan> they got an oracle to compress it all down to one bit, but then it went on strike so they couldn't get it uncompressed again
13:37:02 <Phantom_Hoover> fizzie, but.... that's not really helping either.
13:38:14 <Phantom_Hoover> I mean, I can store an arbitrary number of 'optimally compressed bytes' if I'm allowed to set the algorithm.
13:39:09 <itidus21> i threw that comment in there about compression to show that its a kind of subjective argument
13:39:35 <itidus21> like, maybe each electron on earth can be used as a form of atomic ram
13:39:54 <Phantom_Hoover> bekensteiiiiiin
13:40:07 <itidus21> ok ok.. to wiki i go
13:40:11 <itidus21> watch me .. ho ho ho
13:40:16 <Phantom_Hoover> (You'd almost think I knew something about quantum information theory.)
13:40:28 <itidus21> rest assured i don't
13:44:11 <fizzie> Phantom_Hoover: Look, it's just a normalization thing, for pseudo-meaningfulizing the comparisons between the years they do. One megabyte of disk space used for storing video in 2007 counts as storing 1 MB of "optimally compressed" bytes; but the same one megabyte of video in 2000 counts as storing 0.45 MB of "optimally compressed" bytes, because you could store the same amount of "information" in 0.45 MB in 2007.
13:44:21 <fizzie> It's still pretty handwavy, I'm not denying that.
13:45:02 <Phantom_Hoover> That makes more sense.
13:45:42 <fizzie> I have no clue where they got all their numbers of how much storage capacity there is in the world, or what it's used for, though.
13:49:17 <oerjan> the NSA, of course
13:51:18 <Jafet> 10^21 bytes of youtube videos, facebook photos, B-rate porn, and raw astronomy data
13:51:27 <Jafet> We live in a glorious civilization.
13:51:50 <oerjan> raw astronomy porn, check
13:53:17 <Jafet> Don't google "Young slit experiment"
13:53:27 <oerjan> O KAY
13:58:06 <fizzie> Heh, that was a funny bug. We have this audio file reader which used to take as a parameter whether it's reading a .wav file or a raw data file; then it'd open with libsndfile and read. At some point, someone "improved" it so that it just tries to open it with libsndfile as "unknown format", and if that fails, uses it as a raw data file instead.
13:59:11 <fizzie> Turns out that for one particular file, after one particular piece of processing, the raw audio file (which it was) happens to contain initial bytes that look enough like some random audio format to confuse libsndfile.
14:00:43 -!- aloril has quit (Ping timeout: 255 seconds).
14:03:15 <fizzie> I did, in fact, Google (image search) it, and got http://www.askamathematician.com/wp-content/uploads/2010/12/ammo.jpg as a result. I... don't know.
14:03:28 <fizzie> (The image is work-safe, in case someone is wondering.)
14:03:44 <fizzie> (Or, well, I don't know. Maybe if your employer hates kittens?)
14:03:57 <fizzie> (Then it might not be.)
14:04:33 <fizzie> Apparently that's an illustration below where the blog-author calculates the de Broglie wavelength of a kitten.
14:05:21 <fizzie> Also the blog posting is mostly about cat puns.
14:05:35 <fizzie> "-- a “coherent cat beam” (a “cat-hode ray”, as it were) --" and so on.
14:09:04 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
14:20:59 <Phantom_Hoover> Hey, I've still got Taneb on ignore.
14:23:42 <oerjan> something fishy here http://www.dagbladet.no/2012/01/02/nyheter/dyrenes_nyheter/innenriks/fiskedod/19632870/
14:25:18 <Phantom_Hoover> The dog is a fish hoarder.
14:25:32 -!- aloril has joined.
14:31:29 -!- oerjan has quit (Quit: leaving).
14:31:59 * Phantom_Hoover notes that Mac Lane says "such that the following diagrams commute:" and then has one of the diagrams consist of two objects with a single morphism between them.
14:32:48 <Phantom_Hoover> Does it commute if you can't do any commuting?
14:42:38 <itidus21> i think that the number of different brain states is an absurd thing to worry about :-D
14:43:41 <itidus21> sorry, for the "absurd thing" and "worry about" and ":-D"
14:43:47 <itidus21> im being a bit troll
14:49:43 <itidus21> curious questions about quantum states of human brains are..
14:50:03 <itidus21> are some states of human brains more valuable than others
14:50:53 <itidus21> its all atoms really
14:52:02 <Phantom_Hoover> itidus21, states, in this case, mean quantum-mechanical states, not anything more abstract.
14:52:12 <itidus21> theres no lack of uniformity that i know of between the atoms in the brain and the atoms in the skull apart from the way they are structured into molecules
14:52:32 <Phantom_Hoover> Most of those states consist of soup.
14:53:11 <Phantom_Hoover> This is why the Bekenstein bound is not indicative of anything particularly useful, beyond a sardonic upper bound for data storage questions.
14:53:27 <itidus21> ok
14:55:08 <Phantom_Hoover> Well, it's obviously useful for QM, but not for working out storage capacities.
14:56:26 <itidus21> i don't like the idea of viewing my thoughts as quantum states i guess is what i mean
14:57:42 <Phantom_Hoover> Why?
14:58:37 <itidus21> its almost like a religion
15:02:24 <itidus21> a religion where information is god :P
15:03:16 <itidus21> what sort of information? physical structures
15:06:42 <itidus21> this is not really motivated as an attack on science or on anyone.. just dealing with some stuff :P
15:07:01 <itidus21> saying it out loud to you all
15:08:13 <Phantom_Hoover> I, um
15:08:18 <Phantom_Hoover> This makes little sense.
15:08:51 <itidus21> ok.. well i am hopping afk for some asthma stuff
15:10:12 <itidus21> ok my problem is this :D
15:10:19 <Phantom_Hoover> Asthma?
15:10:30 <itidus21> trying to understand science and liberal arts at the same time
15:10:57 <itidus21> most sensible people don't try to collide them
15:24:37 -!- yorick has quit (Ping timeout: 252 seconds).
15:24:38 -!- _Slereah has joined.
15:25:09 <itidus21> the asthma is my own fault since i hate using the proper medicine .. nevermind that
15:25:49 -!- nooga has quit (Read error: Operation timed out).
15:27:38 -!- yorick has joined.
15:29:17 <itidus21> hoover: ok heres one way i can put it.. we humans spend a lot of time caring about other humans
15:30:15 <itidus21> we store information in our environments
15:32:35 <itidus21> hmm whats another way for me to randomly angst against science
15:32:58 <Phantom_Hoover> Creationism?
15:34:28 <itidus21> the geek gradually gets fixed upon a path
15:34:49 <itidus21> forging his mind into a weapon of geekdom
15:35:21 <itidus21> i should concede that all people gradually "invest" their life in some direction or other
15:35:43 <itidus21> but i think it is important to realize that such investments are being made.. there is no perfect investment
15:35:50 <itidus21> its not a game
15:46:43 <itidus21> sorry for so morbid
15:47:08 <itidus21> ^bf +++++++++++++++++++++++++++++++++++++++++++++.
15:47:08 <fungot> -
15:47:37 <itidus21> ^bf +++++++++++++++++++++++++++++++++++++++++++++......-....++....
15:47:37 <fungot> ------,,,,....
15:50:25 -!- MSleep has changed nick to MDude.
15:51:39 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
16:07:20 -!- Phantom_Hoover has joined.
16:10:12 -!- azaq23 has joined.
16:39:23 -!- sebbu2 has changed nick to sebbu.
16:49:08 -!- nooga has joined.
16:52:31 <itidus21> looking a bit closer at this bekenstein thing..
16:52:34 <itidus21> well..
16:53:03 <itidus21> a mass next to another mass exerts a certain amount of gravity force on it
16:55:05 <itidus21> that is to say, that modelling the static state of something is one question
16:55:34 <itidus21> but modelling the dynamic physical state of something probably requires modelling the totality of the universe acting upon it
16:55:57 <itidus21> just a guess
16:58:56 <kallisti> itidus21: welcome sir
16:59:02 <kallisti> `welcome itidus21
16:59:07 <HackEgo> itidus21:
16:59:45 <itidus21> ty hackego for not patronizing me
17:00:57 <itidus21> i'm just typing rubbish as usual..
17:00:58 <kallisti> itidus21: well this depends on what exactly you're trying to model, and how sophisticated the computer system is on which you're modelling it.
17:02:11 <itidus21> hmm.. well i guess what i mean is you can't cut and paste the universe
17:02:13 <kallisti> for example, there's no need to measure the effects of the gravity of Mars and Jupitor on a soccer ball on Earth because the inverse square laws results in incredibly meager forces.
17:02:25 <kallisti> it may be values so close to 0 that your computer cannot represent them as anything other than 0
17:02:45 <itidus21> since the two regions will act differently
17:02:53 <itidus21> depending on where they are in the universe
17:03:56 -!- sebbu has quit (Read error: Connection reset by peer).
17:04:25 -!- sebbu has joined.
17:04:26 -!- sebbu has quit (Changing host).
17:04:26 -!- sebbu has joined.
17:04:40 <kallisti> sure. To be an accurate system you'd want your subset of the universe to be as closed as possible.
17:04:47 <itidus21> hmm.. well i guess what i mean is you can't cut and paste the universe, since the distance between the 2 regions will have an effect on the behaviour of those regions
17:05:10 <Phantom_Hoover> <kallisti> for example, there's no need to measure the effects of the gravity of Mars and Jupitor on a soccer ball on Earth because the inverse square laws results in incredibly meager forces.
17:05:16 <Phantom_Hoover> Jupitor.
17:05:19 <itidus21> like.. if you cut and pasted a high mass piece of the universe next to itself.. each mass would have a strong effect on each other mass
17:05:31 <kallisti> Phantom_Hoover: what you've heard of Jupitor? crazy britons.
17:05:51 <itidus21> but if you cut and pasted those same masses very far apart the effect would be less
17:06:09 <kallisti> Phantom_Hoover: I shouldn't even entertain such notions with you. You've probably never heard of the inverse square laws..
17:06:24 <itidus21> meager forces add up
17:06:29 <itidus21> :-D
17:06:58 <kallisti> they also subtract up in absolute terms since we're talking about vectors.
17:06:59 <Phantom_Hoover> Sure we do, they're the laws obeyed by the curve generated by inverting a square through a circle.
17:07:00 <quintopia> itidus21: gravity travels at the speed of light. copy and paste your universe into a different reference frame moving away from the first at the speed of light and problem solved
17:07:29 <itidus21> i suppose its not "ok" to cut and paste regions of the universe
17:07:42 <itidus21> in mathematical or physics sense even
17:07:52 <Phantom_Hoover> <quintopia> itidus21: gravity travels at the speed of light. copy and paste your universe into a different reference frame moving away from the first at the speed of light and problem solved
17:07:57 <Phantom_Hoover> IT'S MORE COMPLICATED THAN THAT
17:08:21 <quintopia> is it
17:08:36 <itidus21> im just trying to say that as everyone already knows, the universe can't model itself
17:08:51 <itidus21> because im a newbie and i say such things
17:09:04 <kallisti> quintopia: yes you need a better clipboard to do that kind of stuff.
17:09:18 <kallisti> I recommend one of those fancy external clipboard programs.
17:09:26 <kallisti> they have a lot of nice features.
17:09:38 <Phantom_Hoover> quintopia, *everything* affects gravity, not just matter.
17:10:33 <kallisti> itidus21: but what I'm saying is that if you calculate a value to be 0 because your computer lacks the precision to regard that value as anything other than zero, then adding a bunch of zeros together is not going to add up in any measurable sense.
17:10:42 <quintopia> Phantom_Hoover: are you going to tell me that two systems moving apart at the speed of light can have an effect on one another?
17:10:48 <Phantom_Hoover> <itidus21> im just trying to say that as everyone already knows, the universe can't model itself
17:11:04 <Phantom_Hoover> You're saying that self-interpreters are impossible?
17:11:31 <itidus21> sorry
17:11:49 <itidus21> maybe its possible
17:12:05 <kallisti> http://www.crafts4kids.com/projects/images/solar-sys.jpg doomsday device. the universe will implode now.
17:12:24 <itidus21> i should stop discussing these topics if i don't want to discuss them
17:13:54 <kallisti> itidus21: well just consider that it doesn't take the same amount of resources to accurate model a smaller scale version of the universe than it does to operate a full scale model.
17:14:02 <kallisti> if it did, then yes, that would be impossible.
17:14:30 <itidus21> so there might exist backups of the universe? :-s
17:14:46 <kallisti> if the data is present, sure.
17:14:54 <kallisti> but... no I doubt it. :P
17:15:26 <itidus21> but that probably hits the backup infinite regression problem
17:15:34 <itidus21> needing backups of backups
17:16:01 <kallisti> just the first backup is already a monumental task.
17:16:18 <itidus21> lol
17:16:33 <itidus21> probably not the best thing for me at 4am either
17:16:42 <kallisti> but if you're considering just the capability of such a thing and ignoring all practically, I would say that it's at least possible.
17:16:44 <itidus21> its not going to help me relax
17:16:47 -!- cheater has quit (Ping timeout: 240 seconds).
17:17:55 <kallisti> however, I think in terms of classical physics for the most part. I don't know much at all about quantum physics, so my intuition likely breaks down at that level.
17:18:08 <kallisti> so then it becomes a question, how precise of a model do you want?
17:18:31 <itidus21> enough to get girls probably
17:18:48 <itidus21> i don't imagine theres any other motive
17:19:10 <kallisti> itidus21: I'm afraid there may be no end to your goal in sight..
17:19:26 <kallisti> girls like cars and money. sorry.
17:19:35 <kallisti> I guess you'd need a lot of money to simulate the universe though.
17:19:42 <kallisti> so indirectly, perhaps.
17:19:45 <itidus21> "oh tidus, what a wonderful universe simulation you have made"
17:19:53 <itidus21> "i think so"
17:20:34 <kallisti> of course you could simulate women in lieu of actual women.. but.. I think I should probably abandon that path of discussion.
17:21:52 -!- Ngevd has joined.
17:21:55 <Ngevd> Hello!
17:22:04 <kallisti> (this is where the precision of your models really comes into play)
17:22:53 <Ngevd> Hmm...
17:23:14 <Ngevd> The odds of me having seen elliott have increased mildly
17:23:54 <Deewiant> Due to the Scottish weather?
17:24:27 <itidus21> you should write brainfuck on the public toilet walls
17:24:35 <Ngevd> No, due to me seeing someone I did not recognise but about my age at around the time when, according to the logs, "engree", whom I presume to be elliott, went to sleep
17:24:53 <Ngevd> itidus21, I'll write some lambda calculus
17:25:05 <itidus21> are you in hexham?
17:25:06 <kallisti> Ngevd: yes that was elliott
17:25:13 <Ngevd> itidus21, yes
17:25:28 <Ngevd> kallisti, engree, or the person whom I saw
17:25:36 <itidus21> hmm
17:25:36 <kallisti> Ngevd: engree
17:25:38 <kallisti> ..
17:25:44 <itidus21> is code as graffiti bad? :D
17:25:46 <kallisti> no, I'm psychic. :P
17:25:51 <itidus21> i wonder how far such ideas have gone
17:26:00 <Ngevd> itidus21, I'd imagine not very
17:26:35 <kallisti> google images suggests "not very much"
17:27:33 <kallisti> Ngevd: anyway what makes you think that this random person your age that you saw after elliott went to sleep is elliott?
17:27:45 -!- mr_schlauch has quit (Quit: ZNC - http://znc.in).
17:28:33 <Ngevd> kallisti, /at around the same time/ as elliott whent to sleep
17:29:00 <Ngevd> I said the odds of increased mildly, not OMG TOTALLYZ SEEN ELLIOTT LOL
17:29:06 <kallisti> ???
17:29:08 <kallisti> oh
17:29:09 <kallisti> okay.
17:29:12 <kallisti> sure.
17:29:15 <kallisti> but I doubt it.
17:29:18 <kallisti> just sayin'
17:29:24 <itidus21> http://boingboing.net/2009/10/09/c-graffiti.html
17:29:44 -!- elliott has joined.
17:29:45 <Deewiant> http://i.imgur.com/pAy4z.png
17:30:06 <kallisti> itidus21: ah I see you've found the zenith of the artform.
17:30:29 <kallisti> "I told them I knew C because I am good with word and email so they hired me." looooool
17:30:38 <itidus21> i don't see a declaration of ii though
17:30:52 <kallisti> wow it took them an entire 2 months to get fired. that's incredible.
17:30:57 <itidus21> oh i get it
17:31:01 <itidus21> its (;;)
17:34:15 <elliott> Deewiant: amazing
17:34:15 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
17:35:30 <elliott> @messages
17:35:30 <lambdabot> You don't have any new messages.
17:35:34 <elliott> spOOky
17:39:35 <elliott> 07:56:13: <Vorpal> come on, mc dropped retro the day it implemented smooth light
17:39:35 <elliott> 07:56:47: <fizzie> That was someone else's idea, though, and optional in any case.
17:39:36 <elliott> 07:57:00: <Vorpal> well that stuff isn't around any more
17:39:36 <elliott> 07:57:29: <fizzie> Isn't it still toggleable? (I certainly haven't looked.)
17:39:37 <elliott> Yes, it is.
17:39:46 <elliott> It's on-by-default, though.
17:41:00 <elliott> 09:05:48: <zzo38> I made up a big number, according to these functions of natural numbers, where ^ means exponent and ! means factorial and ; separates the definitions.
17:41:00 <elliott> 09:06:51: <zzo38> f(0,0) = 1; f(x,0) = x^f(x-1,k(x,x!)); f(x,y) = x!+k(y^f(x,0),y^f(x,y-1))
17:41:00 <elliott> 09:07:24: <zzo38> k(x,0) = 2^h(x,0); k(x,y) = (x+y)^k((xy)^(xy),y-1)
17:41:00 <elliott> 09:07:54: <zzo38> h(0,0) = 1; h(x,0) = p(h(x-1,p(x))); h(x,y) = p(h(x,y-1))
17:41:00 <elliott> 09:08:02: <zzo38> p(x) = x'th prime number; p(0)=1
17:41:01 <elliott> 09:08:20: <zzo38> q(x,0) = f(x,0); q(x,y) = f(q(x,y-1),q(x,y-1))
17:41:04 <elliott> 09:08:28: <zzo38> Big number = q(2,q(2,2))
17:41:05 <elliott> 09:09:15: <zzo38> How large is it, what is its one's digit, what is its most significant digit, how does it compare to other big numbers, and etc?
17:41:08 <elliott> 09:10:36: <zzo38> Is it larger or smaller than: Skew's number, Moser's number, Graham's number, and XKCD's number?
17:41:12 <elliott> 09:10:59: <zzo38> Or even equal?
17:41:14 <elliott> I am completely unqualified to answer this, but I really doubt it's as big as Graham's number.
17:51:17 <elliott> 11:34:41: <fizzie> ((?!foo).)* sounds like something that at least a commonly stupid regex engine would implement in the rather bad "check for a 'foo' substring at each position" way.
17:51:18 <elliott> 11:36:31: <Patashu> would the pearl regex engine implement that in the bad way?
17:51:18 <elliott> 11:36:33: <Patashu> *perl
17:51:18 <elliott> 11:36:39: -!- Jafet has quit (Ping timeout: 240 seconds).
17:51:18 <elliott> 11:36:40: <Patashu> b/c that's what mushclient uses
17:51:19 <elliott> 11:37:53: <fizzie> From what I've heard, it's not uncommonly smart.
17:51:21 <elliott> 11:52:30: <fizzie> Patashu: http://sprunge.us/fdXW -- well, that doesn't look excessively smart. Though I guess it's possible the debug mode inhibits some optimilizations.
17:51:31 <elliott> fizzie: Patashu was almost certainly referring to PCRE...
17:51:50 <elliott> 12:11:17: <oerjan> <engree> pikhq: Well, this is none of those; this is under the xor of all those licenses. A term applies iff only a single license in the set has it.
17:51:50 <elliott> 12:11:30: <oerjan> that's not xor, xor means an odd number
17:51:50 <elliott> 12:11:59: <oerjan> it's addition (mod 2), after all
17:51:50 <elliott> Er, right.
17:52:23 <elliott> 12:54:14: <Deewiant> So is the weather in Hexham today Scotland? http://i.imgur.com/SWaD6.jpg
17:52:31 <elliott> Deewiant: The winds actually blew us over the border.
17:55:31 <fizzie> elliott: I sort of thought it was maybe about PCRE, but since e just said "Perl"...
17:55:51 <elliott> Embedding Perl's regexp engine in some software and then exposing it to Lua would be impressive.
17:56:27 <elliott> 13:58:06: <fizzie> Heh, that was a funny bug. We have this audio file reader which used to take as a parameter whether it's reading a .wav file or a raw data file; then it'd open with libsndfile and read. At some point, someone "improved" it so that it just tries to open it with libsndfile as "unknown format", and if that fails, uses it as a raw data file instead.
17:56:27 <elliott> 13:59:11: <fizzie> Turns out that for one particular file, after one particular piece of processing, the raw audio file (which it was) happens to contain initial bytes that look enough like some random audio format to confuse libsndfile.
17:56:35 <elliott> HA HA HA I CAN'T STOP LAUGHING OH THE LIFE OF A SPEECH RECOGNITION RESEARCHER
17:57:02 <Ngevd> I felt like getting a grasp on zzo38's number
17:57:10 <fizzie> Apparently someone else had hit the bug too, and had added an override parameter back. But it still has the automagic logic if you don't specify anything.
17:57:12 <Ngevd> It's scary
18:07:51 <Phantom_Hoover> You've clearly never heard of Graham's number.
18:16:26 <lifthrasiir> Phantom_Hoover: and TREE(3).
18:22:13 -!- pikhq_ has joined.
18:22:13 -!- pikhq has quit (Read error: Operation timed out).
18:22:49 <elliott> Phantom_Hoover: Pfffft, you've CLEARLY never heard of inaccessible cardinals!
18:29:58 -!- myndzi\ has joined.
18:31:09 <Ngevd> Hello
18:31:38 <kallisti> so
18:31:40 <Ngevd> How do I stop being away?
18:31:50 <elliott> Be present
18:31:52 <elliott> Or type /unaway or w/e
18:32:06 <Ngevd> w/e
18:32:06 <kallisti> on irssi it's just /away with no arguments
18:32:14 <Ngevd> I'm on XChat
18:32:16 <kallisti> no clue.
18:32:55 <kallisti> so, my intuition would suggest that have multiple processors does not increase the speed at which you can send packets over a network.
18:33:04 -!- Ngevd has quit (Quit: IDEA!).
18:33:04 -!- myndzi has quit (Ping timeout: 248 seconds).
18:33:14 <kallisti> as your processor count increases your network adapter becomes a larger bottleneck. yes?
18:33:24 -!- Ngevd has joined.
18:33:27 <kallisti> or, a smaller bottleneck, I guess.
18:33:29 <Ngevd> Back!
18:33:39 <lahwran> <kallisti> on irssi it's just /away with no arguments
18:33:48 <lahwran> no, that's not irssi - that's the irc specification of AWAY
18:34:08 <lahwran> some clients alias /back or /unaway to a /away with no arguments
18:34:10 <kallisti> ah. didn't know. I always prefix my IRC suggestions with "in irssi, it works like this"
18:34:16 <lahwran> xchat does the former
18:47:59 -!- augur_ has joined.
18:50:59 -!- augur has quit (Ping timeout: 260 seconds).
18:53:44 -!- augur_ has changed nick to augur.
19:02:32 <kallisti> anyone use a non-qwerty layout?
19:03:19 -!- Vorpal has quit (Ping timeout: 240 seconds).
19:03:42 <Deewiant> Yes
19:06:37 <elliott> I use qwerty except I swapped t and y.
19:07:01 -!- kmc has joined.
19:09:21 <oklopol> because qweryt sounds better?
19:14:53 <elliott> Totally.
19:20:25 <elliott> > appEndo $ mappend (Endo f) (Endo g)
19:20:25 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
19:20:26 <lambdabot> arising from a use of `...
19:20:27 <elliott> grr
19:20:29 <elliott> > appEndo $ mappend (Endo f) (Endo g) :: Expr
19:20:30 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
19:20:30 <lambdabot> against inferred ...
19:20:35 <elliott> oh
19:20:39 <elliott> > appEndo (mappend (Endo f) (Endo g)) x :: Expr
19:20:40 <lambdabot> f (g x)
19:20:46 <elliott> > (f >>> g) x
19:20:47 <lambdabot> Ambiguous type variable `b' in the constraints:
19:20:47 <lambdabot> `SimpleReflect.FromExpr ...
19:20:48 <elliott> knew it
19:22:27 -!- pikhq_ has quit (Ping timeout: 240 seconds).
19:22:30 -!- pikhq has joined.
19:24:13 -!- ais523 has joined.
19:24:47 <elliott> hi ais523
19:25:04 <ais523> hi elliott
19:26:31 -!- Klisz has joined.
19:27:37 -!- premek has joined.
19:29:26 -!- premek has left.
19:30:05 <Phantom_Hoover> `words --eng-gb 10
19:30:10 <HackEgo> herefine rol cha bourterminim ing katlanz eive diseuen karto inde
19:30:33 <Phantom_Hoover> Bourterminim.
19:30:48 <elliott> Herefine sounds like an archaic word.
19:30:51 <elliott> Place name maybe.
19:31:10 <elliott> "Should we stop here?" "Fine."
19:39:03 <kallisti> !perl print map {$_, 'c' } "hello"
19:39:06 <EgoBot> helloc
19:39:12 <kallisti> no bad
19:49:07 -!- NihilistDandy has quit (Ping timeout: 240 seconds).
19:58:46 <kallisti> !perl print "h", uc " ", "i"
19:58:47 <EgoBot> h i
19:59:41 <kallisti> !perl print "h", uc undef, "i"
19:59:41 <EgoBot> hi
19:59:47 <kallisti> !perl print "h", uc undef // " ", "i"
19:59:47 <EgoBot> hi
19:59:51 <kallisti> ah
20:00:02 <Ngevd> !perl print "hello"
20:00:03 <EgoBot> hello
20:00:08 <Ngevd> My first perl program
20:05:32 <elliott> 17:24:35: <Ngevd> No, due to me seeing someone I did not recognise but about my age at around the time when, according to the logs, "engree", whom I presume to be elliott, went to sleep
20:05:35 <elliott> Ngevd: Wasn't me.
20:05:50 <Ngevd> Well, mystery solved
20:06:10 <elliott> Ngevd: Well, unless you peeked in my window or something.
20:06:33 <Ngevd> Someone's door
20:07:01 <kallisti> !perl $_"hi"; %t{uc}=ucfirst; print %t;
20:07:02 <EgoBot> String found where operator expected at /tmp/input.15666 line 1, near "$_"hi"" \.(Missing operator before "hi"?) \ syntax error at /tmp/input.15666 line 1, near "$_"hi"" \ syntax error at /tmp/input.15666 line 1, near "%t{uc" \ Execution of /tmp/input.15666 aborted due to compilation errors.
20:07:13 <kallisti> !perl $_="hi"; %t{uc}=ucfirst; print %t;
20:07:14 <EgoBot> syntax error at /tmp/input.15724 line 1, near "%t{uc" \ Execution of /tmp/input.15724 aborted due to compilation errors.
20:07:18 <kallisti> !perl $_="hi"; $t{uc}=ucfirst; print %t;
20:07:18 <EgoBot> ucHi
20:07:45 <kallisti> !perl $_="hi"; $t{&uc}=ucfirst; print %t;
20:07:46 <EgoBot> Undefined subroutine &main::uc called at /tmp/input.15851 line 1.
20:07:57 <kallisti> !perl $_="hi"; $t{;uc}=ucfirst; print %t;
20:07:58 <EgoBot> syntax error at /tmp/input.15907 line 1, near "{;" \ syntax error at /tmp/input.15907 line 1, near "uc}" \ Execution of /tmp/input.15907 aborted due to compilation errors.
20:08:02 <kallisti> !perl $_="hi"; $t{+uc}=ucfirst; print %t;
20:08:02 <EgoBot> HIHi
20:08:08 <kallisti> lol
20:09:00 <kallisti> adding unary plus to expressions to change their semantics is what Perl is all about.
20:10:20 -!- sebbu has quit (Ping timeout: 240 seconds).
20:12:32 -!- sebbu has joined.
20:12:32 -!- sebbu has quit (Changing host).
20:12:33 -!- sebbu has joined.
20:13:32 <elliott> http://www.amazon.co.uk/coal-primer-William-Patrick-Rogers/dp/B0007302VM/ref=cm_cr_pr_product_top
20:13:35 <elliott> Hey guys, should I buy this book?
20:14:04 <Deewiant> Why not?
20:14:21 <elliott> Deewiant: It's a little on the pricey side, don't you think?
20:14:26 <Deewiant> Nah.
20:14:41 <elliott> I guess if it's worth it!
20:16:33 <elliott> Deewiant: Thanks for your advice, but I think I'll go with http://www.amazon.co.uk/Landolt-B%C3%B6rnstein-Set-2011-Functional-Relationships/dp/3642201067/ref=sr_1_1?s=books&ie=UTF8&qid=1325621737&sr=1-1 instead
20:16:39 <elliott> Deewiant: I don't trust third-party sellers
20:16:50 <fizzie> The added £2.80 for delivery is a bit much. What, no Super Saver stuff?
20:16:53 <elliott> Also the 5% discount is nice.
20:17:32 <kallisti> !perl @x=1..5; print map{@x}@x #yeaaaaaaaah
20:17:32 <EgoBot> 1234512345123451234512345
20:18:02 <fizzie> "Paperback: 7190 pages". That's a big book.
20:18:11 <elliott> It's 15 volumes.
20:18:16 <elliott> fizzie: This one has free delivery: http://www.amazon.co.uk/13CNMR-Organic-Compounds-SpecInfo-Wolfgang/dp/0471662410/ref=sr_1_2?s=books&ie=UTF8&qid=1325621737&sr=1-2
20:18:19 <elliott> Also it's a CD-ROM.
20:18:26 <elliott> Also I'm just getting these from Phantom_Hoover, he's missing out bigtime on #esoteric karma.
20:18:41 <Phantom_Hoover> You little git!
20:18:47 <kallisti> sometimes I feel Perl is a little overzealous with the warnings.
20:19:04 <kallisti> it told me that a , in a qw could possibly be an attempt to seperate words with commas.
20:19:20 <kallisti> !perl qw( z x c v b n m , .)
20:19:20 <EgoBot> No output.
20:19:25 <kallisti> !perl use warnings; qw( z x c v b n m , .)
20:19:26 <EgoBot> Possible attempt to separate words with commas at /tmp/input.17516 line 1. \ Useless use of a constant in void context at /tmp/input.17516 line 1. \ Useless use of a constant in void context at /tmp/input.17516 line 1. \ Useless use of a constant in void context at /tmp/input.17516 line 1. \ Useless use of a constant in void context at /tmp/input.17516 line 1. \ Useless use of a constant in void context at /tmp/input.17516
20:19:47 <kallisti> !perl use warnings; print qw( z x c v b n m , .);
20:19:48 <EgoBot> Possible attempt to separate words with commas at /tmp/input.17585 line 1. \ zxcvbnm,.
20:22:43 -!- oerjan has joined.
20:23:08 <oerjan> `words 50
20:23:16 <HackEgo> sertenchare pensici solvo gab ermin aft chapp nier serr liie capdlak neret anntracti uiier bertic misson supprompt soufe trabit sposusan urdla jai farmg dun sobrig cond peet sthophal gonomi koll paraflow nonum segm jex guh reque rez lay cabe nei aspecte aculin vouanth echlori idly luinzeigh know pitudie armoread mahart
20:23:32 <kallisti> capdlak
20:23:39 -!- oerjan has set topic: Welcome to the world championship in sertenchare and capdlak | http://codu.org/logs/_esoteric/.
20:24:05 -!- oerjan has set topic: Welcome to the world championship in sertenchare, pensici, solvo and capdlak | http://codu.org/logs/_esoteric/.
20:24:24 <kallisti> you forgot paraflow supprompt and armoread
20:24:25 -!- elliott has set topic: Welcome to the world championship in sertenchare, pensici, solvo and capdlak | "Aft Chapp Nier Serr, Liee Neret Anntracti" | http://codu.org/logs/_esoteric/.
20:24:55 <kallisti> also sthophal
20:24:59 <kallisti> you guys picked all the wrong words.
20:25:19 <kallisti> mahart is idly pitudie
20:28:36 <oerjan> well no one could possibly deny that pensici, solvo, capdlak, sposusan and gonomi are supprompt game names
20:29:46 <oerjan> I SAID NO ONE COULD POSSIBLY DENY IT
20:29:56 <quintopia> what? sorry, i was off on a bertic misson
20:29:59 * quintopia denies it
20:30:04 <oerjan> except quintopia.
20:31:40 <oerjan> Hand me the aculin, we have a rampant echlori infection here!
20:32:34 <kallisti> `words --eng-all 50 #we need crazier words
20:32:41 <HackEgo> placox eal heperoifersey misien cayu vicarne gesin comeca hirten crun eechr sig corrh lanzugenem pontedth hen divir con nephaltur johand hoff solousleisel fanwe unned pringay nyi gwaei parv daljave livaiin fayr sume costor mir refle sdoublival pana roxyfm dale cice chianartum makircusape shell forsac prestant estehilizata masca toria culuterphilig ehr
20:32:54 <oerjan> the patient's segm is serring, we need more sthophal!
20:33:48 <oerjan> it looks like the patient has placox chianartum
20:35:27 <oerjan> get a livaiin nephaltur, stat!
20:35:59 <kallisti> have you heard of that fancy new music website called roxyfm?
20:37:12 -!- _Slereah has changed nick to Slereah.
21:39:02 <oerjan> <elliott> I am completely unqualified to answer this, but I really doubt it's as big as Graham's number. <-- *MWAHAHAHA*
21:39:09 <elliott> oerjan: wat
21:39:17 <oerjan> i mean, i also doubt it, with even some qualification
21:39:44 <oerjan> (see logs)
21:40:15 <elliott> oerjan: right
21:40:41 <elliott> oerjan: the "completely unqualified" part was just humbleness, I knew it was smaller when I realised it was just a bunch of nestings of ^ and ! :P
21:41:03 <oerjan> well _technically_ so is graham's number :P
21:41:27 -!- iconmaster[3] has joined.
21:42:09 <elliott> oerjan: yeah, but this doesn't apply the large numbers to the /control flow/
21:43:01 <oerjan> i guess that's another way of saying it has to be primitive recursive
21:44:37 <elliott> oerjan: it was not intended to be a precise assessment :P
21:45:06 <oerjan> none of the functions is using itself to determine its recursion depth
21:45:20 <oerjan> er
21:45:49 -!- iconmaster[3] has quit (Ping timeout: 252 seconds).
21:46:00 <oerjan> yes, i guess that's it
21:46:30 <ais523> Frooxius: what year did AttoASM first become public? 2011, or 2012?
21:47:37 -!- iconmaster has joined.
21:48:04 <elliott> he linked to a video of it from 2011 iirc
21:48:09 <elliott> but i think he's just released the lang itself
21:48:38 <iconmaster> whew FINALLY connected: I came to the conclusion that my IRC client is shit.
21:49:06 <iconmaster> Did you get a bunch of wierd messages from me?
21:50:04 <oerjan> iconmaster: not that i noticed
21:50:17 <iconmaster> Apparently, arbitarily picking your IRC client from the first item on Wikipedia's IRC Client List is not a good idea.
21:50:33 <elliott> you don'ts ay
21:50:42 * elliott dont's ay all day
21:50:59 <iconmaster> (My old client was Bersirc. Notic the alphabetic precedence.)
21:51:20 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIRC
21:51:37 <oerjan> the world's most reassuring irc client
21:52:19 <elliott> hello! welcome to #esoteric! hello! welcome to #esoteric! hello! wel
21:54:19 -!- aloril has quit (Ping timeout: 240 seconds).
21:54:43 <oerjan> Welcome aboard! We know that some of you may be a little nervous about traveling on the world's first fully automated airplane, but we can assure you that there is nothing to worry about nothing to worry about nothing to worry about no
21:55:11 <Ngevd> We have a bot that does this for us, fungot
21:55:12 <fungot> Ngevd: how do you keep doing that? women, do i? where is fraulein dr smith, the traitorous rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there's a rat! there
21:55:22 <elliott> :D
21:55:23 <elliott> lucky
21:55:23 <oerjan> fungot: bravo!
21:55:23 <fungot> oerjan: no, the boy, do i? the scorpion and a killer taipan possibilities. we could kill, not get killed, but there was a software glitch and you didn't die in reality! pteranowaffe!
21:55:34 <elliott> ^style
21:55:34 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs* jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
21:56:08 <oerjan> î thought iwc got a little repetititive at the end
21:56:11 <shachaf> ^style youtube
21:56:11 <fungot> Selected style: youtube (Some YouTube comments)
21:56:16 <shachaf> fungot
21:56:16 <fungot> shachaf: what if she never was, at the end you hear the truth, all these people accept amazingly lucky sods? and how many octaves do you really are some old pics, great everything
21:57:13 <elliott> fuck, i haven't been keeping up with iwc reruns
21:57:20 <elliott> oerjan: have the sunday annotations still been good
21:57:54 -!- Jafet has quit (Quit: Leaving.).
21:57:56 <oerjan> elliott: sure
21:58:55 <oerjan> fungot: don't tell me youtube comments are less repetitive than iwc!
21:58:55 <fungot> oerjan: the accident report? i think mona is looking more and more!! its kinda scary at first but it was
21:59:18 <oerjan> fungot: yes that's scary
21:59:18 <fungot> oerjan: boy, suuure looks like everything i hear it was manned. ignore him.
21:59:33 <Madoka-Kaname> fungot, hugs
21:59:33 <fungot> Madoka-Kaname: yes. there were passengers and none of you.
21:59:41 <Madoka-Kaname> fungot, I hate you :(
21:59:41 <fungot> Madoka-Kaname: this game.
21:59:49 <oerjan> fungot: it seems youtube comments are a bit short
21:59:49 <fungot> oerjan: bad thing is it when the plane
21:59:54 <shachaf> functor
21:59:55 <shachaf> Er.
21:59:57 <shachaf> fungot
21:59:57 <fungot> shachaf: looks ok. now be gone, troll. thats bad.
22:00:01 <oerjan> ^style
22:00:01 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube*
22:00:47 <Madoka-Kaname> ^style lovecraft
22:00:47 <fungot> Selected style: lovecraft (H. P. Lovecraft's writings)
22:00:51 <Madoka-Kaname> fungot, are you okey?
22:00:52 <fungot> Madoka-Kaname: the inhabitants of a given dimensional realm could survive entry to many unknown and incomprehensible realms of additional or indefinitely multiplied dimensions be they within or outside the given space-time continuum and that the vital parts of the
22:01:02 <Madoka-Kaname> fungot, are you... okey?
22:01:02 <fungot> Madoka-Kaname: our first whose exact fate we had never learned to drive should be ordering me about and taking the fnord a.m., while traversing a long, black line scarcely rising above the water yet carrying a suggestion of the fnord
22:01:18 <oerjan> more like off-key
22:01:39 <Madoka-Kaname> fungot, hugs?
22:01:40 <fungot> Madoka-Kaname: my head is weak from thirst, suffocation, cardiac strain, and badly in need of charles's constant oversight. charles sent his best wishes, and of a quaint colonial village. the nurse used to stop and sit on carved benches of porphyry scanning the stars, necessarily vague as it was
22:04:12 -!- GreaseMonkey has joined.
22:07:25 -!- Jafet has joined.
22:07:56 <Madoka-Kaname> fungot, make sense :<
22:07:57 <fungot> Madoka-Kaname: i studied psychology systematically, and under all conditions, was fnord that my mind needed a rest. wish i dared to get help it might brace up my will power but everyone who would dare to come at all would call me crazy unless there happened to be some proof. couldnt ask people to come for no reason at all am all out of sight. this was the
22:08:06 <Madoka-Kaname> ^style homestuck
22:08:06 <fungot> Selected style: homestuck (Homestuck pages 1901-4673)
22:08:11 <Madoka-Kaname> fungot, can you make sense now?
22:08:16 <Madoka-Kaname> fungot, hello?
22:08:36 <elliott> Thank fucking god fungot has a message limit.
22:08:37 <fungot> elliott: his birthday is in a few minutes. wow he is so cool. two more large gizmos. it was once the island remained except the pony a begrudging pat, as gently in the horn fell off. dammit.
22:09:28 -!- aloril has joined.
22:09:42 <Phantom_Hoover> In my earlier days, I cursed the message limit.
22:09:49 <Phantom_Hoover> Now I see it for the blessing it truly is.
22:09:49 -!- azaq23 has quit (Quit: Leaving.).
22:11:30 <elliott> :t find
22:11:31 <lambdabot> forall a. (a -> Bool) -> [a] -> Maybe a
22:12:29 <oerjan> :t (.:)
22:12:30 <lambdabot> forall a b (f :: * -> *) (g :: * -> *). (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b)
22:12:40 * oerjan blinks
22:13:00 <oerjan> > nubBy((>1).:gcd)[2..]
22:13:02 <lambdabot> [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101...
22:13:06 -!- Ngevd has quit (Quit: Goodbye).
22:13:39 <elliott> oerjan: it's caleskell, man
22:13:42 <elliott> :t (.) . (.)
22:13:43 <lambdabot> forall (f :: * -> *) a b (f1 :: * -> *). (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b)
22:13:56 <kallisti> .: is great
22:14:29 <oerjan> :t (.) . (.) . (.)
22:14:29 <lambdabot> forall (f :: * -> *) (f1 :: * -> *) a b (f2 :: * -> *). (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b))
22:14:40 <Phantom_Hoover> :t (.)
22:14:41 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b
22:14:45 <elliott> oerjan: just think of (.) as liftF
22:14:51 <elliott> you're lifting into the nth depth of a stack of functors
22:14:56 <elliott> by composing liftFs
22:15:06 <oerjan> :t (.:.)
22:15:07 <lambdabot> Not in scope: `.:.'
22:15:21 <oerjan> :t (..:)
22:15:22 <lambdabot> Not in scope: `..:'
22:16:22 -!- zzo38 has joined.
22:17:42 <shachaf> @ty (.::)
22:17:43 <lambdabot> Not in scope: `.::'
22:17:54 <shachaf> @let (.::) = (.) . (.) .(.)
22:17:55 <lambdabot> Defined.
22:18:34 <Phantom_Hoover> The Total Recall combinator.
22:21:20 <kallisti> I feel like words/unwords and lines/unlines should have their names flipped.
22:21:57 <shachaf> I feel like you're wrong.
22:22:13 <shachaf> I also feel like lines/unlines and words/unwords are evil because they lose information.
22:22:20 <kallisti> well sure.
22:22:30 <kallisti> they're not perfect inverses, no.
22:22:40 <shachaf> They're EVIL inverses.
22:22:46 <kallisti> presumably you don't want that extra information, and if you do, you want to use something.
22:23:01 <kallisti> something isn't evil because it doesn't fill the purpose you want it to.
22:23:04 <shachaf> I want a function onlines :: (String -> String) -> String -> String
22:23:19 <shachaf> This is usually implemented as \f -> unlines . f . lines, which is wrong.
22:23:25 <kallisti> indeed.
22:24:05 -!- DCliche has joined.
22:24:12 <kallisti> but still I think unlines makes more sense a function that splits a string by lines, removing the lines from the strings
22:24:24 <shachaf> "lines" gives you the lines in a string.
22:24:27 <kallisti> and lines taking a list of strings and produce a single string of lines.
22:24:28 <shachaf> "unlines" does the opposite of lines.
22:24:44 <shachaf> Think more, like, declaratively, man.
22:24:46 <kallisti> shachaf: you could do the exact same thing with the flipped meanings.
22:24:57 <shachaf> No.
22:25:16 <elliott> kallisti's proposal is nonsense.
22:25:18 <kallisti> "lines" gives you a list of strings as lines
22:25:18 <shachaf> elliott would like to explain.
22:25:20 <elliott> shachaf is completely right.
22:25:22 <kallisti> "unlines" does the opposite of lines.
22:25:25 <elliott> That is my explanation.
22:25:33 <shachaf> elliott: Are you going to Hac Boston?
22:25:36 <elliott> kallisti: "lines xs" is not the lines of xs.
22:25:39 <elliott> Therefore the name is wrong.
22:25:55 <elliott> "foldr f z xs" is the fold of (f,z) over xs, so the name is right. "succ x" is the successor of x, so the name is right.
22:26:03 <elliott> "lines s" is the lines of s, so the name is right.
22:26:04 <elliott> shachaf: No.
22:27:06 <shachaf> elliott: IF foldr f z xs IS THE FOLD OF (f,z) OVER xs, WHY ISN'T IT CALLED foldr (f,z) xs???
22:27:46 <elliott> shachaf: I was going to say "f and z" but then I decided to be a MATHEMATICIAN about it!!!!!!
22:27:56 <elliott> We should use "of" as infix application syntax.
22:28:00 <elliott> And allow spaces in function names.
22:28:10 -!- Klisz has quit (Ping timeout: 252 seconds).
22:28:13 <elliott> foo = the unlines of the lines of xs
22:28:18 <kallisti> replicate of 3 of "hello"
22:29:14 <elliott> hmm, I'll give this guy 5 minutes to accept my answer
22:29:37 <kallisti> elliott: I like how your "of" basically breaks down completely.
22:29:37 <iconmaster> So I had this silly idea
22:29:42 <kallisti> *of analogy
22:29:52 <kallisti> because some Haskell functions are in fact verbs.
22:29:55 <iconmaster> I'm writingh an "auto-responder bot"
22:30:26 <iconmaster> Pretty much when I'm away, there will be a shitty chatbot that talks when you mention it
22:30:37 <iconmaster> i guess like fungot but less markov-y?
22:30:37 <fungot> iconmaster: is it
22:30:40 <elliott> Congratulations, you've invented fungot.
22:30:40 <fungot> elliott: but, there are imps around, the pad. it's hard to remember though your cross-hairs would never settle on an innocent little girl. chokes up now imagine she's white.
22:30:47 <ais523> elliott: you got ninja'd
22:30:53 <elliott> `addquote <fungot> elliott: but, there are imps around, the pad. it's hard to remember though your cross-hairs would never settle on an innocent little girl. chokes up now imagine she's white.
22:30:53 <fungot> elliott: john, the uncarved minitablet. john carved this tablet at the request. it's just a wrapper for your private reading material later, you will play a game with a dead heir and witch
22:30:56 <HackEgo> 794) <fungot> elliott: but, there are imps around, the pad. it's hard to remember though your cross-hairs would never settle on an innocent little girl. chokes up now imagine she's white.
22:31:00 <elliott> fungot is a depraved individual.
22:31:01 <fungot> elliott: so just to review, your schemes, convoluted. you are planning a heist in your underground hideout. implement nefarious as you might, you can't out troll me in these like
22:31:04 <ais523> elliott: that is not a good fungot quote
22:31:04 <fungot> ais523: of what??? now you've seen everything! weaky, is it really so much to the frustration of the suitor.
22:31:08 <kallisti> iconmaster: you should make it sentient like Strider's bot...
22:31:08 <ais523> `quote
22:31:10 <ais523> `quote
22:31:11 <HackEgo> 735) <monqy> i cnat eve begin to understand what you meant with that "one"
22:31:12 <ais523> `quote
22:31:13 <ais523> `quote
22:31:14 <ais523> `quote
22:31:21 <HackEgo> 461) <fizzie> elliott: You have become the very thing you fought for!
22:31:25 <HackEgo> 448) <Phantom_Hoover> pikhq, living in the future sucks. <Phantom_Hoover> The past just keeps coming up to us and trying to make us feel guilty.
22:31:25 <iconmaster> Srider was an inspiration, so i'll try my hardest
22:31:46 <iconmaster> but yeah, it'll prolly just be a shitty chat-bot
22:32:07 <olsner> chitty-chat bot
22:32:15 <HackEgo> 674) <fizzie> It's missing the "bear scat showing a diet of prime numbers" picture.
22:32:15 <HackEgo> 490) <monqy> rest in peace lambdabot???? <ais523> monqy: it'll probably be back later <monqy> nap in peace
22:32:26 <iconmaster> I mean, this IRC library I'm using right now... It's not documented almost at all
22:32:46 <elliott> You could just write your own IRC code; the protocol is trivial.
22:32:50 <iconmaster> I had to fix the example
22:32:53 <ais523> elliott: 735 the worst?
22:32:57 <elliott> ais523: only 4 have came
22:33:09 <ais523> elliott: there are 5: 735 461 448 674 490
22:33:24 <olsner> there are 5 quotes!
22:33:37 <elliott> oh, right. i like them all but 674 is prolly worst
22:33:46 <ais523> I don't get 735 at all
22:33:53 <Phantom_Hoover> fungot's Homestuck mode is the best.
22:33:54 <fungot> Phantom_Hoover: so just to review, your schemes, convoluted. you are planning a heist in your underground hideout. implement nefarious as you might, you can't out troll me in these like little else, is still just that. a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually den
22:33:58 <olsner> 674 sounds like it might have a context
22:34:18 <ais523> hmm, I like the fungot styles other people seem to hate
22:34:18 <fungot> ais523: not that it would actually bother pitying you.
22:34:25 <iconmaster> so testing of my bot is at #iconbot
22:34:33 <iconmaster> Nothing there right now
22:34:54 <shachaf> What's "Homestuck"?
22:35:00 <shachaf> People keep talking about it on the Internet.
22:35:03 <shachaf> Which probably emans it's bad.
22:35:06 <iconmaster> Homestuck is basically the best thing ever.
22:35:14 <Phantom_Hoover> It's very good, but the people who like it are terrible.
22:35:25 <iconmaster> I agree.
22:35:31 <kallisti> examples: elliott, kallisti, Sgeo, iconmaster
22:35:48 <Phantom_Hoover> By which I mean any given set of people who like it will identify some subset of the others as terrible, and the intersection of these is nonempty.
22:36:10 <shachaf> Phantom_Hoover: I identify everybody as terrible.
22:36:19 <Phantom_Hoover> shachaf, you're well on the way.
22:36:20 <shachaf> Including Homestuck.
22:37:37 <Phantom_Hoover> shachaf, keep it up and you'll be a top-flight Homestuck fan in no time.
22:37:54 <shachaf> This looks boring.
22:37:58 <Phantom_Hoover> In fact, all you really need to do is accurately identify Homestuck references so you can hate the people who make them.
22:38:11 <elliott> shachaf: Homestuck is a new diet and children's cartoon.
22:38:16 <elliott> It kills bears for cash.
22:38:20 <elliott> F- don't buy.
22:38:56 <elliott> Phantom_Hoover: Back me up on this.
22:39:09 <Phantom_Hoover> These are true facts.
22:39:18 <shachaf> I don't get it.
22:39:29 <shachaf> Is this like a game where you can only press one button to go forward?
22:39:35 <elliott> Yes.
22:39:58 <elliott> (Before Phantom_Hoover or someone jumps in, the actual games are just really complicated single buttons.)
22:39:59 <Phantom_Hoover> Why would you have two buttons you can press to go forward?
22:40:03 <Phantom_Hoover> That would just be stupid.
22:41:32 -!- cheater has joined.
22:42:15 <shachaf> I don't get it.
22:43:23 <elliott> shachaf: It makes sense if you eat bears.
22:45:05 -!- Klisz has joined.
22:45:28 <zzo38> Phantom_Hoover: So that you can fast or slow forward, I suppose.
22:45:29 <lambdabot> zzo38: You have 1 new message. '/msg lambdabot @messages' to read it.
22:45:39 <Phantom_Hoover> shachaf, here, watch http://www.mspaintadventures.com/?s=6&p=004748
22:45:44 <zzo38> ?messages
22:45:44 <lambdabot> oerjan said 9h 36m 38s ago: i think your number may be larger than Skewes's number but smaller than Moser's number, as afaict all your functions are still primitive recursive, so cannot get up to
22:45:44 <lambdabot> the approx. ackermann level.
22:45:45 <Phantom_Hoover> It should make sense after that.
22:46:06 <shachaf> But no audio.
22:46:26 <Phantom_Hoover> It should still make sense without audio.
22:46:38 <elliott> Phantom_Hoover: But what about the voice acting lovingly done by 3-year-olds?
22:46:45 <elliott> shachaf: Don't believe the bears.
22:46:52 -!- DCliche has quit (Ping timeout: 252 seconds).
22:46:55 <Phantom_Hoover> It's not terribly vital to the plot, fortunately.
22:47:32 <elliott> That's what they tell you. Then you're buying speakers and dealing drugs on the street. In the "ghetto" "hood".
22:47:36 <elliott> "Ghood".
22:52:07 <Phantom_Hoover> shachaf
22:52:08 <Phantom_Hoover> are
22:52:10 <Phantom_Hoover> are you still there
22:56:05 <shachaf> Phantom_Hoover: []
22:56:19 <Phantom_Hoover> Does it make sense now?
22:56:26 <shachaf> I didn't really watch it.
22:56:37 -!- Jafet has quit (Quit: Leaving.).
22:56:41 <Phantom_Hoover> Honestly, it's not much to ask.
22:57:21 -!- Jafet has joined.
22:57:54 <shachaf> Honestly, it is.
22:58:12 <Phantom_Hoover> But you would be SO ENLIGHTENED :(
23:02:00 <kallisti> > show{-lol-}3
23:02:01 <lambdabot> "3"
23:03:04 <kallisti> a lot of programming language tutorials tend to say something like "comments are ignored"
23:03:42 <kallisti> but it would be more accurate to say something like "comments can be thought of as a single space"
23:03:52 <elliott> > (show)3
23:03:53 <lambdabot> "3"
23:03:58 <elliott> Comments aren't whitespace, they just separate tokens.
23:04:02 <elliott> (Except in C, where they actually are whitespace.0
23:04:11 <kallisti> no comments are defined as whitespace in the Haskell Report
23:04:37 * kallisti gets out his language lawyer SPECTACLES.
23:05:34 -!- iconmaster has quit (Ping timeout: 252 seconds).
23:06:33 <kallisti> whitespace-> whitestuff {whitestuff}
23:06:34 <kallisti> whitestuff-> whitechar | comment | ncomment
23:06:42 -!- augur has quit (Remote host closed the connection).
23:07:23 <shachaf> Racist.
23:09:15 <oerjan> nearly all programming languages are racist. when did _you_ last see a pl which allowed blackspace?
23:09:33 <oerjan> sorry, african-americanspace
23:09:38 <shachaf> oerjan: That's why I invert the colours in my terminal.
23:09:51 <kallisti> from what I can tell, it technically has to do with how the syntax of function application is not defined as whitespace.
23:10:19 -!- nooga has quit (Ping timeout: 240 seconds).
23:10:46 <oerjan> kallisti: you're babbling again
23:11:25 <kallisti> function application is just an adjacency of two of a particular set of tokens.
23:12:28 <kallisti> if function application were literally defined as whitespace, then (f)x would not be valid.
23:12:46 <olsner> how do you define something as whitespace?
23:12:59 <kallisti> by specifying what whitespace is, and then specifying that this thing involves whitespace.
23:13:02 <oerjan> kallisti: more precisely, it's about separation of lexical analysis and parsing
23:13:09 <kallisti> oerjan: yes
23:13:27 <oerjan> where whitespace is thrown away before the latter
23:15:36 -!- iconmaster has joined.
23:18:05 <kallisti> octal-> octit{octit}
23:18:21 -!- monqy has joined.
23:18:27 <kallisti> monqy: bye
23:18:38 <oerjan> hm i was going to say it's octet, but that's something else
23:18:43 <monqy> hi
23:19:07 <oerjan> an octit is three bits, anyway
23:19:10 <elliott> oerjan: an octet is base-256 :P
23:19:26 <kallisti> oerjan: it's the breasts of cephalopod mollusks obviously.
23:19:34 <elliott> presumably a bintet is base-4
23:19:38 <oerjan> ...right.
23:19:43 <elliott> so a base-8 digit is a tritet
23:19:47 <elliott> base-(2^3)
23:20:14 <elliott> *bitet methinks
23:20:34 <oerjan> elliott: actually i think octet is the same as the musical term, so it would be duet and trio
23:20:42 <elliott> :D
23:20:46 <elliott> that's awesome
23:21:09 <elliott> duet, trio, quartet, quintet, sextet, septet, octet, nonet and dectet
23:21:15 <oerjan> or possibly duo? those have slightly different meanings
23:21:27 <elliott> that last one is base-1024. perhaps not very useful
23:21:30 <oerjan> or am i confusing with norwegian again
23:21:32 <elliott> oerjan: well ^ is a quote from wp
23:21:34 <elliott> so duet methinks
23:21:40 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
23:21:41 <elliott> duo is more informal i think
23:21:51 <elliott> duet ofc can refer to http://en.wikipedia.org/wiki/Duet as well
23:23:48 <oerjan> oh heh it seems i looked at that page at _precisely_ the moment wikipedia logged me out
23:24:12 <oerjan> gave some strange layout error
23:25:01 <oerjan> oh wait no
23:25:42 <kallisti> > deriv (\x -> cos x) (x :: Expr)
23:25:43 <lambdabot> 1 * negate (sin x)
23:26:09 <oerjan> i got confused by being brought to wiktionary when clicking duo
23:26:27 -!- Patashu has joined.
23:26:34 <Patashu> check this 3d fractal out http://www.youtube.com/watch?v=jYsbFreUMkg&feature=g-all-lik&context=G27426daFAAAAAAAALAA
23:30:39 <kallisti> Prelude Data.Number.Dif SimpleReflect> deriv cos (x :: Expr)
23:30:40 <kallisti> 1 * negate a
23:30:41 <kallisti> uh....
23:30:42 <kallisti> what?
23:31:52 <elliott> kallisti: what
23:31:59 <kallisti> I don't know.
23:33:03 <kallisti> the only thing I can think of is maybe I broke something when I installed the latest version of GHC from source?
23:33:10 <kallisti> but so far everything has been fine.
23:33:26 <kallisti> I just reinstall numbers and it's still producing the same output.
23:33:33 <oerjan> > deriv cos (x :: Expr)
23:33:34 <lambdabot> 1 * negate (sin x)
23:34:20 <shachaf> By any chance did you define x = asin a? :-)
23:34:27 <kallisti> uh, no.
23:34:54 <oerjan> > deriv cos (asin a :: Expr)
23:34:55 <lambdabot> 1 * negate (sin (asin a))
23:34:55 -!- iconmaster has quit (Ping timeout: 255 seconds).
23:35:15 <kallisti> Prelude SimpleReflect> x
23:35:15 <kallisti> x
23:35:15 <kallisti> Prelude SimpleReflect> y
23:35:15 <kallisti> y
23:35:15 <kallisti> Prelude SimpleReflect> cos x
23:35:17 <kallisti> cos x
23:35:20 <kallisti> etc
23:35:35 <kallisti> so something is weird with Data.Number.Dif
23:36:05 <oerjan> kallisti: did it use to work before?
23:36:12 -!- Phantom_Hoover has joined.
23:36:12 <kallisti> yes.
23:36:28 <kallisti> it's been a while since I've installed the new GHC
23:36:30 <elliott> the dif thing hasn't been updated since 2009.
23:36:35 <elliott> so, no.
23:36:38 <elliott> it's not that
23:36:48 <kallisti> elliott: that's not quite what I meant.
23:37:10 <elliott> are you implying it's a ghc bug
23:37:14 <kallisti> no
23:37:28 <kallisti> I as implying that the error has something vaguely to do with that module
23:37:30 <kallisti> and not SimpleReflect
23:37:32 <kallisti> the two modules being used.
23:37:44 <kallisti> not that they suddenly uploaded a new version and it broke.
23:37:59 <oerjan> kallisti: so what happens if you do map (deriv cos) [0..]
23:38:10 <oerjan> er, *sin
23:38:14 <oerjan> er no
23:38:16 <oerjan> **cos
23:38:32 <kallisti> I get a lot of numbers in (-1,1)
23:38:40 <kallisti> oh no
23:38:42 <kallisti> not that.
23:38:45 <kallisti> I get a lot of numbers. :)
23:38:58 <oerjan> > map (deriv cos) [0..]
23:38:59 <lambdabot> [-0.0,-0.8414709848078965,-0.9092974268256817,-0.1411200080598672,0.7568024...
23:39:04 <kallisti> actually yes
23:39:06 <kallisti> I get a lot of numbers in (-1,1)
23:39:16 <oerjan> kallisti: but are they the same as abovE?
23:39:18 <oerjan> *e
23:39:32 <kallisti> yes.
23:39:47 <oerjan> ok so it works for Double, but not simplereflect?
23:40:02 <oerjan> maybe it _is_ something to do with simplereflect as well
23:40:33 <kallisti> Prelude SimpleReflect Data.Number.Dif> deriv cos (0 :: Expr)
23:40:34 <kallisti> 1 * negate a
23:40:44 <kallisti> 18:39 < oerjan> ok so it works for Double, but not simplereflect?
23:40:48 <kallisti> I believe that is an accurate statement
23:41:33 <oerjan> presumably it breaks because Expr does not provide a genuine group/ring
23:42:02 <elliott> cos = lift (cycle [cos, negate . sin, negate . cos, sin])
23:42:11 <elliott> lift :: (Num a) => [a -> a] -> Dif a -> Dif a
23:42:12 <elliott> lift (f : _) (C x) = C (f x)
23:42:12 <elliott> lift (f : f') p@(D x x') = D (f x) (x' * lift f' p)
23:42:12 <elliott> lift _ _ = error "lift"
23:42:25 <elliott> see http://hackage.haskell.org/packages/archive/numbers/2009.8.9/doc/html/src/Data-Number-Dif.html
23:43:46 <kallisti> Prelude SimpleReflect Data.Number.Dif> negate b
23:43:47 <kallisti> negate a
23:43:49 <kallisti> found it
23:44:14 <kallisti> Prelude SimpleReflect Data.Number.Dif> negate (var "the queen of france")
23:44:14 <kallisti> negate a
23:44:25 <kallisti> > negate x
23:44:26 <lambdabot> negate x
23:45:05 <oerjan> > 0 - x
23:45:06 <lambdabot> 0 - x
23:45:14 * kallisti tries to reinstall simplereflect
23:45:36 <elliott> negate = withReduce $ fun "negate" `iOp` negate `dOp` negate
23:45:46 <elliott> looks ok to me
23:45:56 <elliott> kallisti: where is your simplereflect from?
23:45:59 <elliott> that's a quote from the show package
23:46:07 <kallisti> how do I figure that out...
23:46:14 <elliott> i dont know, you installed it
23:46:18 <kallisti> I have a feeling when I reinstall it, it will be fixed.
23:47:01 <oerjan> :t iOp
23:47:02 <lambdabot> Not in scope: `iOp'
23:50:26 <kallisti> no that didn't fix it
23:50:30 <kallisti> here's some relevant information:
23:50:31 <kallisti> http://sprunge.us/bQQf
23:50:43 <elliott> oh well
23:50:47 <elliott> ~who knows~
23:51:12 <kallisti> oops
23:51:14 <kallisti> adam@maria:~$ ghci --version
23:51:14 <kallisti> The Glorious Glasgow Haskell Compilation System, version 7.2.2
23:51:20 <kallisti> that line was missing
23:51:21 <kallisti> from my paste
23:53:24 * Phantom_Hoover → sleep
23:53:26 -!- Phantom_Hoover has quit (Quit: Leaving).
23:55:59 <kallisti> :t intExpr
23:56:00 <lambdabot> Not in scope: `intExpr'
23:56:43 <kallisti> anyone with GHC 7.2 want to see if they can reproduce?
23:57:55 <oerjan> kallisti: what do you get from negate (undefined :: Expr) ?
23:58:32 <kallisti> negate a
23:58:36 <kallisti> it's basically constant for anything
23:59:21 <kallisti> elliott: what are some things I should have done before compiling and installing GHC?
23:59:28 <kallisti> I basically just removed ghc via apt-get
23:59:43 <oerjan> kallisti: which version of simplereflect was installed?
2012-01-04
00:00:21 <oerjan> oh wait it's show?
00:00:37 <kallisti> well I installed both show and simple-reflect but it seems to be using show.
00:00:49 <kallisti> I'm not sure that it matters
00:00:58 <kallisti> but even after installing show it installed simple-reflect when I told it to
00:01:25 <kallisti> Configuring show-0.4.1.2...
00:03:33 <kallisti> I have a feeling it has something to do with a misconfigured system.
00:03:40 <kallisti> I have both GHC 6 and 7 on this computer.
00:03:48 <oerjan> kallisti: what does Prelude.negate x give?
00:04:08 <kallisti> same thing.
00:04:24 <elliott> <kallisti> elliott: what are some things I should have done before compiling and installing GHC?
00:04:27 <elliott> removing everything
00:04:28 <oerjan> kallisti: iirc they are not supposed to mix packages for different ghc versions
00:04:36 <kallisti> elliott: define "everything"
00:04:36 <elliott> anyway
00:04:37 <elliott> no
00:04:39 <elliott> it's not a misconfiguration
00:04:43 <elliott> the library is just fucked up
00:04:51 <elliott> come on, ghc bugs don't manifest as subtle wrongness where "a" is used for no reason
00:05:04 <kallisti> elliott: -shrug-
00:05:10 <kallisti> so does it work on your system.
00:05:17 <kallisti> with your snazzy GHC 7
00:05:31 <kallisti> and perfectly configuredness etc
00:05:45 <elliott> negate = withReduce $ fun "negate" `iOp` negate `dOp` negate
00:05:46 <elliott> iOp :: (Expr -> Expr) -> (Integer -> Integer) -> Expr -> Expr
00:05:46 <elliott> iOp rr ff aa = (rr a ) { intExpr = ff <$> intExpr aa }
00:05:46 <elliott> dOp :: (Expr -> Expr) -> (Double -> Double) -> Expr -> Expr
00:05:46 <elliott> dOp rr ff aa = (rr aa ) { doubleExpr = ff <$> doubleExpr aa }
00:06:04 <oerjan> O_o
00:06:04 <elliott> instance (Show a, FromExpr b) => FromExpr (a -> b) where
00:06:05 <elliott> fromExpr ff aa = fromExpr $ op L 10 " " ff (lift aa)
00:06:17 <elliott> cba to figure out the bug
00:06:30 <oerjan> elliott: that rr a should have been rr aa, no? :D
00:06:48 <kallisti> hm on the source I looked at it was a not aa
00:07:07 <elliott> oerjan: aha
00:07:07 <elliott> yep
00:07:08 <oerjan> kallisti: see the second iOp line
00:07:09 <kallisti> iOp r f a = (r a ) { intExpr = f <$> intExpr a }
00:07:10 <elliott> a is the variable "a"
00:07:12 <kallisti> on hackage
00:07:18 <elliott> kallisti: http://hackage.haskell.org/packages/archive/show/0.4.1.2/doc/html/src/SimpleReflect.html
00:07:23 <elliott> I don't care what source you're looking at, it's the wrong one
00:07:29 <kallisti> oh hm
00:07:34 <kallisti> Debug.SimpleReflect.Expr
00:07:46 <elliott> that's not the show package
00:07:50 <kallisti> I would have spotted it much earlier if I were looking at the right source. :P
00:07:51 <elliott> which is what lambdabot uses
00:07:56 <elliott> otoh it might be newer/less buggy
00:08:04 <kallisti> http://hackage.haskell.org/packages/archive/simple-reflect/0.2/doc/html/src/Debug-SimpleReflect-Expr.html#Expr
00:08:14 <elliott> anyway
00:08:15 <elliott> http://hackage.haskell.org/packages/archive/numbers/2009.8.9/doc/html/Data-Number-Symbolic.html
00:08:16 <elliott> same package as Dif
00:08:18 <elliott> probably works better :P
00:08:22 <elliott> :t Data.Number.Symbolic.var
00:08:23 <lambdabot> forall a. String -> Sym a
00:08:25 <elliott> yay
00:08:46 <oerjan> kallisti: um you were clearly using show-0.4.1.2 in what you pasted
00:08:53 <oerjan> not simple-reflect
00:09:28 * kallisti is well-known for his attention to detail.
00:09:46 <elliott> you don't say
00:10:03 <kallisti> well, technically, yes. I ACTION'd it
00:10:13 <kallisti> :>
00:10:42 * kallisti compiles mueval yet again.
00:11:20 -!- Jafet has quit (Quit: Leaving.).
00:12:01 -!- Jafet has joined.
00:12:14 -!- NihilistDandy has joined.
00:12:17 <kallisti> elliott: you never explained why I shouldn't move mueval into /usr/bin
00:12:27 <kallisti> or maybe you did and I forgot
00:12:47 <zzo38> To make include file by search path, I have made the <|> for IO and the choice for any Alternative and then make as follows:
00:12:56 <zzo38> loadInputFile = parseInputFile >=> either ((>> exitFailure) . hPutStrLn stderr . show ) (fmap join . sequence . fmap loadIncludeFiles);
00:13:06 <zzo38> parseInputFile n = theSearchPath >>= (<|> fileErr n) . choice . fmap (parseFromFile (mmlParser <* eof) . (</> n));
00:13:15 <zzo38> loadIncludeFiles (Include x) = loadInputFile x; loadIncludeFiles x = return [x];
00:14:15 <zzo38> Is this the proper way or is there better ways?
00:14:50 <kallisti> elliott: also what's the difference between mueval and mueval-core?
00:15:21 <elliott> oerjan: hm in (f x), what precedence is f at
00:15:31 <elliott> kallisti: i don't know
00:15:53 <oerjan> elliott: 11 or so...
00:16:17 <kallisti> I don't recall seeing the Report mention a precedence for function application.
00:16:27 <oerjan> iirc showsPrec uses 11 for the level above operators?
00:16:53 <oerjan> the haskell report doesn't assign any numbers to non-operator syntax afair
00:18:00 <kallisti> oh nice Symbolic does reductions
00:18:07 <kallisti> like actual reductions
00:18:18 <kallisti> deriving cos yields -sin x
00:18:33 <oerjan> also, the let, case and \ expressions don't fit into simple precedence
00:19:35 <oerjan> they are high from the left, but cannot be put right after application, and are greedy/low to the right
00:22:59 <elliott> kallisti: simplereflect does too, they're just manual
00:23:02 <elliott> you have to ask for them
00:23:28 -!- Phantom_Hoover has joined.
00:23:41 <Phantom_Hoover> Oh, Jesus, Vi Hart is now affiliated with Khan Academy.
00:24:13 <Phantom_Hoover> @tell Sgeo You are no longer allowed to use any Khan Academy resources. Thank you for your coöperation.
00:24:14 <lambdabot> Consider it noted.
00:24:27 <Sgeo> What's wrong with Vi Hart?
00:24:28 <lambdabot> Sgeo: You have 2 new messages. '/msg lambdabot @messages' to read them.
00:24:39 <Sgeo> @messages
00:24:39 <lambdabot> oerjan said 8d 11h 14m 17s ago: well i have a hunch that you need a bit of self-esteem more than you need intelligence.
00:24:39 <lambdabot> Phantom_Hoover said 26s ago: You are no longer allowed to use any Khan Academy resources. Thank you for your coöperation.
00:25:22 <Phantom_Hoover> Sgeo, tau advocate, not to mention that I strongly suspect that she's what SMBC terms a math enthusiast, i.e. someone more concerned with the trappings of maths than the actual substance.
00:25:45 <oerjan> lambdabot: i don't like your reverse amnesia
00:26:17 <Phantom_Hoover> I haven't watched her videos in a while, but ISTR them having a large element of "look at this cool thing maths is so beautiful!" without actually explaining the underlying maths.
00:26:57 <kallisti> > let derivs f x = takeWhile (/=0) . map val . iterate df . f $ dVar x in derivs (^3) (Data.Number.Symbolic.var "x")
00:26:59 <lambdabot> [x*x*x,(x+x)*x+x*x,2*x+x+x+x+x,6]
00:27:05 <kallisti> .....6?
00:27:42 <oerjan> yes, 6
00:27:44 <kallisti> > let derivs f x = takeWhile (/=0) . map val . iterate df . f $ dVar x in derivs (^3) (Data.Number.Symbolic.con "x")
00:27:45 <lambdabot> No instance for (GHC.Num.Num [GHC.Types.Char])
00:27:45 <lambdabot> arising from a use of `de...
00:27:56 <kallisti> > let derivs f x = takeWhile (/=0) . map val . iterate df . f $ dVar x in derivs (^3) (Data.Number.Symbolic.con 5)
00:27:57 <lambdabot> [125,75,30,6]
00:28:04 <kallisti> hm, okay.
00:28:09 <kallisti> oh right
00:28:15 <zzo38> 6 is certainly the correct answer in [x*x*x,(x+x)*x+x*x,2*x+x+x+x+x,6]
00:28:25 <zzo38> But I don't know why they didn't simplify the other results more
00:29:12 <elliott> oerjan: hm what precedence is \ at
00:29:16 <elliott> > 2 + \e -> e
00:29:17 <lambdabot> *Exception: show: No overloading for function
00:29:29 <oerjan> elliott: i just told you above
00:29:37 <elliott> oerjan: ah
00:29:44 <elliott> oerjan: ok what's a _conservative_ precedence to assign \ :P
00:30:00 <oerjan> 11 from the left, -1 from the right?
00:30:33 <elliott> oerjan: *single precedence
00:30:41 <elliott> conservative as in, always valid but sometimes produces needless parens
00:30:50 <elliott> (yes -inf would count :P)
00:31:06 <oerjan> oh. -inf then
00:31:07 <elliott> @src shows
00:31:07 <lambdabot> Source not found. You untyped fool!
00:31:09 <elliott> @src show
00:31:10 <lambdabot> show x = shows x ""
00:31:17 <elliott> oerjan: bah fine
00:32:13 <elliott> oerjan: hm what precedence is e at in (\_ -> e)
00:32:36 <oerjan> ...it's an arbitrary expression
00:32:53 <oerjan> so also -inf, i guess
00:33:08 <oerjan> or hm
00:33:16 <elliott> oerjan: ok what precedence would you showsPrec it at if you had to showsPrec an e in that position :P
00:33:23 <elliott> I guess (-1) would work
00:33:27 <elliott> except, no
00:33:30 <elliott> you want /no/ parens
00:33:33 <elliott> not /always/ parens
00:33:35 <elliott> so it's actually +inf
00:33:43 <elliott> so... 11
00:33:52 <oerjan> elliott: erm not really
00:34:05 <elliott> er wait no
00:34:07 <elliott> oerjan: ok it's +inf
00:34:35 <Phantom_Hoover> http://www.reddit.com/r/math/comments/o13r9/profile_of_eric_lander_mathematician_turned/
00:34:48 <Phantom_Hoover> Profile of a mathematician turned biologist.... turned killer
00:34:53 <oerjan> elliott: no, that way if e contains any operators it will be parenthesized
00:35:07 <elliott> oerjan: oh right it's > not <
00:35:11 <elliott> oerjan: ok so -1 then
00:35:53 -!- oerjan has quit (Quit: Good night).
00:36:37 <elliott> Phantom_Hoover: I was hoping it'd be actually that.
00:37:02 <Phantom_Hoover> Does the prospect of biomathematical murder entice you?
00:37:08 <elliott> Yes.
00:37:11 <elliott> Phantom_Hoover: What's a synonym of inspectable.
00:37:29 <Phantom_Hoover> Lookable.
00:37:41 <elliott> Phantom_Hoover: I hate you.
00:38:26 <Phantom_Hoover> (You cannot be a biomathematical murderer because you are a) a programmer and hence incapable of science and maths and b) an English pansy and hence incapable of killing anything.)
00:40:19 <kallisti> elliott: scrutinable
00:40:23 * Phantom_Hoover → sleep
00:40:27 -!- Phantom_Hoover has quit (Quit: Leaving).
00:41:32 <kallisti> elliott: auditable
00:41:35 <kallisti> examinable
00:41:57 <kallisti> investigable
00:43:49 * kallisti enjoys how particularly easy it is to define a recursive dual number for automatic differentiation.
00:44:01 <kallisti> so that you can continue taking derivatives of derivatives.
00:44:20 <kallisti> or compute values from differentiated numbers and differentiate that.
00:47:12 <elliott> http://hackage.haskell.org/package/ad does all that
00:49:30 * kallisti thinks it would be swell if Symbolic transformed x*x into x^2 and x*x^e to x^(e+1)
00:49:52 <kallisti> also x+x to 2*x, and x + C*x to (C+1)*x
00:50:20 <kallisti> perhaps I could convince them to let me patch it or something?
00:51:46 <kallisti> though I'd be more interested in a more generalized way to redefine display/reduction behavior.
00:54:14 <elliott> itt: cas
00:55:52 <kallisti> not quite, no.
00:56:12 <kallisti> unless a CAS can be embedded in Haskell's numeric typeclasses.
00:56:16 <kallisti> then yes, sure.
00:57:18 <kallisti> but I'm mostly interested in a few simple reductions.
00:57:59 <kallisti> not, say, sovling equations and performing complex algebra.
00:59:29 -!- Jafet has quit (Quit: Leaving.).
00:59:35 <kallisti> there's something called DoCon but it... apparently has no documentation
01:02:18 -!- iconmaster has joined.
01:02:30 -!- iconmaster has quit (Client Quit).
01:04:09 <kallisti> @tell iconmaster hi, your nick makes me think of ReBoot.
01:04:10 <lambdabot> Consider it noted.
01:05:36 <kallisti> it would be interesting to analyze the complexity of language implementations.
01:06:27 <kallisti> for example, why is Perl so slow? is it all constant factors is it non-constant stuff going on under the hood?
01:06:40 <kallisti> s/factors/factors or is it/
01:08:06 <kallisti> I would think it's mostly constant factors or linear factors.
01:08:52 <kallisti> variable interpolation would be linear (not counting stuff like @{[...]} which is basically an eval)
01:13:07 <elliott> kallisti: did you know: the asker of the highest-voted question of all time on SO only has 263 rep
01:13:52 <elliott> this is hilarious to me
01:13:54 <elliott> probably because
01:13:57 <elliott> i have gone completely off the deep end
01:14:08 <kallisti> yes
01:14:26 <kallisti> you're like me when I was playing WoW.
01:15:32 <olsner> elliott: which question?
01:16:08 <kallisti> "how do I shot web?"
01:16:28 <olsner> not "how is babby formed?" then?
01:18:34 <elliott> olsner: http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books
01:18:46 <elliott> it got converted to community wiki before they could reap the massive rep spoils :P
01:19:18 <elliott> slightly above an hour after being posted, even
01:36:54 -!- derdon has quit (Remote host closed the connection).
01:37:42 <kallisti> "I am a bug" is the worst thing I've ever read.
01:44:03 <elliott> wat
01:45:43 -!- lambdabot has quit (Ping timeout: 244 seconds).
02:02:44 <pikhq> Worse than "I am Error"?
02:31:30 -!- MDude has changed nick to MSleep.
02:41:05 -!- pikhq has quit (Ping timeout: 248 seconds).
02:41:07 -!- pikhq_ has joined.
02:55:55 <elliott> hi
03:09:01 -!- augur has joined.
03:18:29 -!- pikhq has joined.
03:21:18 -!- pikhq_ has quit (Ping timeout: 244 seconds).
03:29:38 -!- cheater has quit (Ping timeout: 268 seconds).
03:45:15 <itidus21> that list is pretty cool
03:47:46 <zzo38> I found some pinball game for Texas Instruments calculator, but you cannot choose which direction to nudge the table (it always does in a random direction when you push that button), and you have to wait ten seconds before nudging again otherwise you are accused of cheating.
03:49:27 <zzo38> Due to these rules, it isn't a very good game.
03:50:24 <itidus21> and on the strength of this accusation you are escorted from the premises bringing an early end to the game of pinball
03:52:30 <zzo38> Most computer pinball game you can at least select which direction to nudge the table! And does not have such a severe penalty (it isn't cheating to nudge the table, anyways). (Flipperless computer pinball games usually have no penalty for nudging the table, however.)
03:58:14 <ais523> zzo38: real pinball tables penalise you for nudging the table
03:58:26 <ais523> sometimes with a warning, but if you do it repeatedly, or hard enough, they lock both flippers and you automatically lose the ball
03:58:29 <zzo38> ais523: Yes they do; but only if you do it too hard or too much.
04:14:17 <quintopia> i have the best pinball game
04:14:26 <quintopia> it is a dos game
04:14:42 <quintopia> i can't remember what it's called but it is best
04:16:09 <zzo38> I have Visual Pinball, it has some flipperless games JiggleBox is best one.
04:17:23 <quintopia> i cant play it anymore
04:17:31 <quintopia> because i dont have a windows box
04:17:45 <quintopia> if i find it, i'll give it to you
04:18:14 <zzo38> Visual Pinball doesn't work on Wine either. It is only for Windows. But there can be make better one for many operating system and with open source, possibly.
04:18:58 <quintopia> i vote yes
04:19:10 <quintopia> but you have all these ideas and you never make them :/
04:19:14 <zzo38> I don't think this is a yes and no question
04:24:31 <itidus21> this pinball project which is under strict deadlines will require a new programming language like C and Haskell, but markedly superior
04:26:11 <elliott> like C and Haskell?
04:26:12 <elliott> simultaneously?
04:26:45 <itidus21> hmm.. it just has to be better than them
04:28:15 <ais523> it's hard to envisage a language that's better than C at everything and also better than Haskell at everything
04:28:22 <ais523> although if it existed, I'd probably use it
04:30:13 <pikhq> It's hard to envisage a language that's better than C at *everything* that's not a C-family language with stupid decisions omitted.
04:36:28 <itidus21> its necessary to make the pinball game
04:38:25 <quintopia> make it
04:39:18 <ais523> give me a lang that's better than C, Haskell, and Perl in every respect, and I'll write scapegoat in it
04:39:42 <zzo38> I am not saying it has to be done either
04:40:05 <pikhq> ais523: Wouldn't it be enough to be better than C and Haskell in every respect? *zing*
04:40:20 <ais523> neither's really good for one-off text processing
04:40:29 <elliott> ais523: @
04:40:36 <pikhq> What, and Perl is?
04:40:39 <ais523> doesn't yet exist
04:40:41 <pikhq> :P
04:40:44 <ais523> pikhq: surprisingly, yes
04:40:45 <elliott> ais523: neither does scapegoat
04:40:55 <pikhq> (yes, yes, I know, that's the *one* thing Perl actually does well.)
04:41:00 <zzo38> But my general idea, is that it has some kind of Forth-like virtual machine, which can be programmed in Forth but also in C or Haskell or other programming languages, but there are two separate programs: the one that sets the physical table parameters, and one which emulates the CPU of the pinball.
04:41:03 <quintopia> elliott: give him @ and he'll give you scapegoat
04:41:08 <quintopia> like he said
04:41:12 <pikhq> It *is* awk on steroids, after all.
04:41:17 <elliott> but what vcs will i develop @ with?
04:41:31 <zzo38> And unlike Visual Pinball and whatever, you must use physical parameters so the CPU emulation program cannot do anything that it cannot do physically, even if done by computer physics.
04:41:34 <pikhq> I see we have a cyclic dependency here.
04:41:36 <elliott> ais523: we need some mutual productive recursion so we can have @ and scapegoat be created codependently so they can be developed with each other
04:41:38 <ais523> elliott: something that sg imports well
04:41:46 <pikhq> I'm going to solve this in the standard elliott way.
04:41:48 <elliott> ais523: give me a bit of scapegoat and i'll give you a bit of @
04:41:56 <pikhq> elliott: You will develop @ with @ as the VCS.
04:42:15 <ais523> elliott: hmm… I'm guessing sg will at least mostly be written in ASCII, so the first bit is probably going to be 0
04:42:19 <elliott> pikhq: @ as the solution to every problem, offloading work to others... yep, checks out
04:42:21 <ais523> the second, harder to say
04:42:37 <elliott> ais523: I need 32 bits to get started
04:42:45 <elliott> in return i'll produce 64 bits of @
04:42:53 <zzo38> Text processing can be one thing Perl does well; but AWK can also do text processing it is designed for that purpose.
04:42:56 <pikhq> elliott: "Scap"
04:43:19 <ais523> elliott: are we just both going to come up with increasingly long header comments? :P
04:43:24 <pikhq> zzo38: Yup. And Perl is AWK with more stuff.
04:43:31 <ais523> but I can't even do that without knowing what language to write sg in
04:43:34 <elliott> ais523: no way, @ isn't textual
04:43:38 <elliott> ais523: just gimme the start of the README or something
04:43:40 <elliott> or LICENSE
04:43:40 <ais523> seriously, I probably would write it if I could think of an appropriate language
04:43:46 <pikhq> (in spirit, if not in a more strict sense)
04:43:53 <ais523> elliott: surely, @'s /comments/ can contain textual data, though?
04:43:56 <quintopia> it doesnt have to be the first 32 bits does it?
04:44:07 <quintopia> do the bits have to be consecutive?
04:44:08 <ais523> so you just need to start with the bits that mean "comment", then the content of the comment
04:44:14 <elliott> ais523: I'm giving you the bit format of it, certainly it's not going to start with a packed UTF-8 string
04:44:36 <elliott> ais523: anyway, I'd be trying to implement sg more actively if I remembered what the most recent model was
04:44:52 <zzo38> pikhq: Yes, Perl does have things like AWK
04:44:58 <ais523> as I said, I'd draw a picture of it if I were any good at drawing
04:45:00 <zzo38> So Perl can be used for text processing too
04:45:21 <elliott> ais523: just use LaTeX or something, there's diagram packages
04:45:30 <pikhq> Which, if it's designed for anything, that's what it's designed for.
04:45:31 <ais523> but I'd have to learn them
04:46:23 <elliott> ais523: ah, you're trying to do something successfully without learning!
04:46:27 <zzo38> To draw pictures, you can also use ImageMagick, GIMP, Microsoft Paint, METAFONT, SVG, ... depend what you make. I think there is some GNU diagram program to make diagrams, or something like that
04:46:28 <elliott> good luck, nobody has ever managed that.
04:46:38 <ais523> elliott: no
04:46:46 <ais523> I'm trying /not/ to do something, to avoid having to learn how
04:47:37 <ais523> that's reasonable, right?
04:47:46 <zzo38> I happen to think METAFONT and ImageMagick combined can make draw picture good for many uses.
04:48:21 * quintopia does all his drawing in php
04:49:02 <zzo38> Yes, PHP does have drawing function too.
04:50:08 <zzo38> I have done job asked by some other people, making program in PHP to draw pie charts.
05:05:40 <elliott> Wow, I've been programming for ~8 years.
05:09:06 <itidus21> wow, only 8..
05:09:19 <itidus21> apparently programming is about quality not quantity
05:11:02 -!- MDuck has joined.
05:11:12 <elliott> itidus21: 8 years is a pretty long time to do one thing.
05:11:31 <elliott> Anything over 8 would be stretching it a bit, anyway; I doubt I would have been very good at programming at 7.
05:11:35 <elliott> (Not to say I was any good at it at 8.)
05:11:35 <itidus21> it is if you actually do that thing instead of pretending to do it
05:12:50 <pikhq> itidus21: Please, like you wrote large, significant things when you were 15. :P
05:13:05 <itidus21> i never created anything signifigant ever :D
05:13:16 <itidus21> its the art of super procrastination
05:14:27 -!- MSleep has quit (Ping timeout: 244 seconds).
05:17:29 <itidus21> ok i get it anyway
05:17:45 <itidus21> so elliott is referring to programming when he knew how to program
05:17:55 <itidus21> not the screwing around training years
05:23:58 <Frooxius> But you learn all the time. When is the point where you "know how to program" and where you don't? I mean, I think it's somewhat gradual transition. Plus, you always learn new things, so you might think in the future that you didn't know how to program now x3
05:24:25 -!- lambdabot has joined.
05:25:08 <itidus21> the point is ~8 years ago
05:25:51 <itidus21> Frooxius: i think the concept of when does a child become an adult is related
05:27:42 <Frooxius> Yeah that's not sudden transition either. Though... some remain children in some ways for a long time :D
05:28:00 <itidus21> Frooxius: for someone like me, the process is about realizing i am not yet a programmer
05:28:07 <itidus21> having my ego smacked down
05:28:23 <itidus21> by that bastard cryst_eheh_heh
05:28:34 <itidus21> in a chatroom in a distant land
05:28:52 <itidus21> umm nevermind :D
05:28:58 <Frooxius> I never really consider myself anything that much, I just keep making stuff as best as I can and that's it. I don't need any label to do what I do.
05:29:46 <Frooxius> Plus I constantly think things I do are horrible anyway so... x3 It helps to improve them though
05:30:06 <Frooxius> Or throw into garbage and redo from scratch
05:32:33 <itidus21> i see myself as more of the john romero type.. except not as cool as him
05:32:52 <elliott> <itidus21> so elliott is referring to programming when he knew how to program
05:32:52 <elliott> <itidus21> not the screwing around training years
05:32:52 <elliott> no
05:33:10 <elliott> I programmed when I was 8 but I didn't know how to program when I was 8 :p
05:33:20 <itidus21> ah
05:33:28 <itidus21> so is it like learning to speak?
05:33:53 -!- Frooxius_ has joined.
05:34:43 <elliott> I doubt it. Maybe a foreign language, but I've never learned one.
05:34:50 <elliott> The easiest way to find out what it's like would be to do it.
05:35:08 <itidus21> oops.. ^s/speak/read
05:35:44 * kallisti didn't know how to program for maybe like a year? if he understands elliott correctly.
05:35:57 <kallisti> or, hmmm, a few months.
05:36:08 <itidus21> i screwed around in qbasic 1.0 with the help files at first
05:36:24 <elliott> kallisti: oh, you think you know how to program! how long ago did you start programming?
05:36:33 -!- Frooxius has quit (Ping timeout: 248 seconds).
05:36:36 <kallisti> I was 15. so, 5 years ago.
05:36:46 -!- Frooxius_ has changed nick to Frooxius.
05:36:49 <elliott> kallisti: congratulations, you're in your 5th year of not knowing how to program :)
05:36:57 * elliott doesn't know how to program either.
05:37:07 <kallisti> elliott: when does one learn to program, great sensei. :P
05:37:25 <elliott> you don't.
05:37:31 <kallisti> no one is programmers?
05:37:41 <kallisti> what we do?
05:37:48 <elliott> no, we're programmer
05:37:49 <elliott> s
05:37:49 <kallisti> how is shot web?
05:37:59 <itidus21> this guy i knew, he wanted to teach me stuff... he basically knocked me out of the ring when teaching me to try to actually make 2d games in c for windows
05:38:25 <itidus21> it was like *pow* *pow pow pow*
05:38:30 <kallisti> lol
05:38:33 <kallisti> why did you think of it as a competition?
05:38:44 <elliott> kallisti: because that's the only way he can frame it as losing
05:38:46 <itidus21> because im an asshole
05:39:02 <elliott> kallisti: observe him attempting to lose your question ^
05:39:11 <itidus21> lol elliott
05:39:41 <elliott> yes, i'm making a funny joke
05:39:42 <kallisti> I certainly don't think I've mastered programming by any means, nor do I have very much experience with good program design. But I feel that the past 5 years count for something.
05:40:47 <kallisti> a few weeks in, I remember asking #python what a delimiter was. :P
05:40:59 <kallisti> it used this word "delimiter" in the split method thing and I didn't know what that meant.
05:42:52 <zzo38> I have written part of a D&D prestige class called "Aberration Saver" that corresponds to the organization called "Aberration Saver"; I also wrote the title of a prestige class "Celestial Saver" and of spells "Circling the Square" and "Confuse Time" and "Confuse Objects" and of feats "Minimize Spell".
05:43:22 <zzo38> Maybe I should add one class for calculus or category theory or something like that, too.
05:45:06 <kallisti> lol.
05:45:25 <kallisti> motivic cohomology
05:48:44 <itidus21> i should clean my room some day
05:49:02 <kallisti> itidus21: what do you have to do right now?
05:49:04 <kallisti> why not clean it now?
05:49:49 <itidus21> it can wait a little longer..
05:49:49 <kallisti> !perl print int(rand(2)?'clean room":"definitely clean room"
05:49:52 <EgoBot> Can't find string terminator "'" anywhere before EOF at /tmp/input.2326 line 1.
05:49:58 <kallisti> !perl print int(rand(2)?'clean room':"definitely clean room"
05:49:59 <EgoBot> syntax error at /tmp/input.2368 line 1, at EOF \ Execution of /tmp/input.2368 aborted due to compilation errors.
05:50:15 <kallisti> !perl print (int(rand(2)?'clean room':"definitely clean room")
05:50:16 <EgoBot> syntax error at /tmp/input.2431 line 1, at EOF \ Execution of /tmp/input.2431 aborted due to compilation errors.
05:50:18 <kallisti> ?
05:50:45 <kallisti> !perl print int(rand(2)?'clean room':"definitely clean room"
05:50:46 <EgoBot> syntax error at /tmp/input.2508 line 1, at EOF \ Execution of /tmp/input.2508 aborted due to compilation errors.
05:50:47 <kallisti> olwkeojsdfoijiowejr
05:51:03 <kallisti> oh
05:51:07 <kallisti> !perl print int(rand(2))?'clean room':"definitely clean room"
05:51:08 <EgoBot> definitely clean room
05:51:09 <kallisti> :>
05:52:33 -!- Vorpal has joined.
05:59:24 <itidus21> i seek feedback on this http://pastebin.ca/2098801
06:06:09 <itidus21> in contrast with that scheme, an idea i am thinking about is http://pastebin.ca/2098804
06:10:51 -!- Klisz has quit (Read error: Connection timed out).
06:11:38 -!- Klisz has joined.
06:12:23 <itidus21> and adding the instructions {"w","a","s","d"} to change the current cell in the io matrix
06:12:40 <elliott> (mirrored to http://sprunge.us/GdOR, http://sprunge.us/UNSd)
06:12:57 <itidus21> lol
06:13:02 <elliott> how do you initialise the io matrix
06:13:08 <elliott> BF IO is based on one-dimensional bytestrings
06:13:16 <elliott> so how do you turn the input into a matrix?
06:14:39 <itidus21> hmm.. by violating everything near and dear about esolangs heheh
06:15:24 <itidus21> one analogy for what i have dubbed the io matrix is a bitmap
06:16:24 <itidus21> so all the input and output would act upon a bitmap
06:17:08 <elliott> you should check out paintfuck
06:17:11 <elliott> not the same thing but bitmap bf all the same
06:17:28 <itidus21> i also had the idea of a frame updating operator
06:18:44 <itidus21> so, wwwwaaaassssdddd would theoretically move a cursor of sorts in a box shape in the bitmap, and then an extra operator such as "e" would tell it to update
06:19:55 <itidus21> so ,w.w.w.w.a.a.a.a.s.s.s.s.d.d.d.d.e!# would theroetically draw a box made of #
06:20:54 <itidus21> my lack of comprehension of bf's [ and ] operators is probably signifigant at this stage :P
06:21:03 <itidus21> but doesn't really matter
06:22:58 <itidus21> hmm paintfuck seems to embody the idea of wasd as nsew
06:24:30 <elliott> <itidus21> so ,w.w.w.w.a.a.a.a.s.s.s.s.d.d.d.d.e!# would theroetically draw a box made of #
06:24:33 <elliott> this isn't a valid brainfuck program
06:24:38 <elliott> ! is just a notational convenience for /interpreters/
06:24:42 <elliott> it specifies input
06:24:47 <itidus21> ya
06:24:50 <elliott> you have to compute the ascii value of ! manually intsead
06:24:54 <itidus21> oh i see what you mean here
06:25:03 <itidus21> since... my input is my bitmap
06:25:14 <itidus21> i can't really have my cake and eat it
06:25:15 <elliott> (also, most interpreters don't support it -- it originated with the dbfi self-interpreter, which was forced to use such a scheme because it's all bf itself can host)
06:26:39 <itidus21> hmm
06:27:28 <itidus21> ^bf +++++++++++++++++++++++++++++++++++.
06:27:29 <fungot> #
06:27:57 <itidus21> +++++++++++++++++++++++++++++++++++w.w.w.w.a.a.a.a.s.s.s.s.d.d.d.d.e :-D
06:28:39 <itidus21> i guess i should focus on paintfuck direction notation
06:30:02 <itidus21> +++++++++++++++++++++++++++++++++++n.n.n.n.e.e.e.e.s.s.s.s.w.w.w.w.q (where q = some kind of.. end of frame/cellular automaton iteration operator)
06:30:50 <zzo38> I read some idea about a chess variant with an infinite number of rules. But I have different idea, which is a chess variant where the number of kind of pieces is exactly googolplex. You could have a 10x10 board indicating possible jumps, in each cell put a number 0 to 9. For each possible configuration of this board, assign a number 0 to 9. Each possible set of these value is the kind of piece. Its Haskell type would be: ((Ten, Ten) -> Ten) -
06:33:53 <itidus21> "q" is really intended here along the lines of vsync as if to say, the data is ready
06:34:11 <itidus21> well not like vsync.. but sort of like it
06:37:49 -!- zzo38 has quit (Quit: zzo38).
06:38:30 <itidus21> another goal i have in mind with such things is to use such a language to control a memory mapped array inside a given program
06:39:33 <itidus21> but the more i think about it the more ridiculous it seems
06:46:40 <itidus21> so this "memory mapped array" might look like: cell 0 = player1 paddle position, cell 1 = player2 paddle position, cell 3 = player1 points, cell 4 = player2 points, cell 5 = ball x position, cell 6 = ball y position
06:53:22 <elliott> <itidus21> "q" is really intended here along the lines of vsync as if to say, the data is ready
06:53:29 <elliott> it's called blitting... or flipping the buffer... or w/e
06:53:44 <itidus21> ah
06:56:29 <itidus21> so it's really a perverted goal of writing pong in a brainfuck derivative
06:56:47 <itidus21> or.. not the entire pong, but the logic of it
06:58:56 <itidus21> i have to admit paintfuck is very curious
07:01:10 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
07:07:43 <itidus21> i won't truely be a BF programmer until i master the [ and ]
07:11:22 <elliott> kallisti: hi
07:11:42 <kallisti> hi
07:11:46 <kallisti> lo
07:11:47 <kallisti> l
07:12:46 <elliott> kallisti: i just descended into
07:12:50 <elliott> the furthest depths possible
07:12:56 <kallisti> quit it
07:12:58 <kallisti> do something productive
07:13:09 <kallisti> like me
07:13:14 <kallisti> sitting aorund watching SC2 games.
07:13:16 <elliott> http://meta.stackoverflow.com/questions/41976/question-title-that-doesnt-describe-the-problem
07:13:18 <elliott> i just read
07:13:19 <elliott> this
07:13:21 * kallisti paragon of productivity.
07:13:24 <elliott> i have hit absolute rock bottom
07:13:28 <elliott> because
07:13:29 <kallisti> lol
07:13:31 <elliott> it's actually really funny
07:14:00 <kallisti> no it's terrible
07:14:11 <kallisti> it's stepped in SO culture.
07:14:22 <elliott> so is your face
07:14:25 <elliott> qez
07:14:38 <kallisti> is qez like qed but cooler.
07:15:41 <elliott> yes
07:17:07 <kallisti> $.butterfly({ aLongList: ofParameters, whichAre: notExplained
07:17:09 <kallisti> });
07:18:08 <kallisti> elliott: there are so many things in this that are like...
07:18:13 <kallisti> self-deprecating.
07:18:20 <kallisti> like SO culture is to self-deprecate itself.
07:19:22 <elliott> kallisti: metastackoverflow is about 65% experienced users complaining about the terrible quality of most of the questions/answers
07:19:32 <kallisti> fun
07:20:47 <itidus21> is pollyanna even a user?
07:23:00 <elliott> itidus21: renamed
07:23:06 <elliott> @-references don't get updated when names change
07:23:06 <lambdabot> Unknown command, try @list
07:23:06 <itidus21> ahh
07:23:09 <elliott> infer from context appropriately :P
07:23:20 <elliott> (they really should get rewritten but i guess it's too heuristicy)
07:24:37 <kallisti> http://bicycles.stackexchange.com/
07:24:39 <kallisti> yesssss
07:24:42 <kallisti> just what I've been looking for.
07:25:14 <itidus21> apparently pollyanna is adam davis
07:25:43 <kallisti> http://cstheory.stackexchange.com/questions/9563/all-recursive-algorithms-are-inherently-not-inplace-isnt-it
07:25:47 <kallisti> loooooooooooooooooooooooooooooooooooooool
07:25:58 <elliott> "This question has an open bounty worth +50 reputation from Alan Turing ending in 7 days."
07:26:00 <elliott> you don't see that every day
07:26:06 <elliott> thanks turing
07:26:13 <kallisti> obviously all of those recursive tree algorithms in the STL are not in-place.
07:28:04 <kallisti> cstheory stackexchange doesn't get a lot of answers
07:28:08 <kallisti> elliott: THIS IS YOUR GOLDEN OPPORTUNITY
07:28:13 <kallisti> TO BECOME MASTER OF CSTHEORY STACKEXCHANGE
07:28:16 <kallisti> THINK OF THE REP
07:28:18 <kallisti> YOU COULD BE NUMBER 1
07:29:21 <ais523> "Porn Univeristy Of Blow Job"
07:29:35 <ais523> who even searches for that sort of thing? it's unlikely to be worded exactly like that even without the typo
07:30:35 * ais523 vaguely wonders what findthisall.com is actually for, given that it's trying so hard to drive traffic to itself
07:31:03 <kallisti> ais523: uh, what are you talking about. :P
07:31:10 <ais523> kallisti: wiki spam
07:31:15 <kallisti> oh
07:32:07 <elliott> ais523: hey, my degree is from the Porn University of Blow Job
07:32:34 <elliott> Blow Job is a wonderful little down, and I understand Adam Porn, the university's founder, was a very generous man indeed
07:32:35 <elliott> *town
07:32:41 <ais523> heh
07:32:50 <ais523> anyway, findthisall.com is responsible for about half the spam the wiki gets
07:33:02 <elliott> ais523: what's graue's email?
07:33:18 <ais523> the domain's oceanbase.org, you can probably guess the rest
07:33:28 <itidus21> Blow Job is a wonderful little down the way
07:33:51 <ais523> hmm, if we even had a spam blacklist, I could just put findthisall.com on it
07:33:53 <ais523> but we don't
07:34:34 <elliott> how long has the wikispam been going on? has to be at least two months by now, surely?
07:35:08 -!- kallisti has set topic: TODO: spam blacklist | http://codu.org/logs/_esoteric/.
07:35:27 <itidus21> perhaps a bot should be developed which posts wiki edit titles into the channel, and a capacity to delete those wiki edits
07:35:38 <ais523> findthisall.com started on 15th november 2011
07:35:40 <kallisti> yes let's spam the wiki and the channel at the same time
07:35:42 <kallisti> great idea.
07:36:06 <ais523> the other spambot that we have a lot started rather earlier, but it's harder to block in an automated way
07:39:25 * elliott sends an email off to graue
07:39:35 <elliott> I suggest we try and trick the spambots into spamming Graue if he doesn't reply :)
07:41:48 <kallisti> change the names/ids of every element on every page.
07:42:02 <kallisti> and the bots won't know where to find anything.
07:43:09 <elliott> kallisti: it doesn't really work like that...
07:43:33 * elliott decides kallisti needs to learn more about spamming software for reasons :)
07:43:46 <ais523> elliott: well, the bots are breaking the CAPTCHA
07:43:56 <kallisti> elliott: why does it not work like that.
07:44:06 <ais523> swapping the IDs for captcha answer and edit summary would probably work
07:44:25 <ais523> as the bots probably wouldn't notice that they'd swapped round, and they certainly aren't spamming the CAPTCHA answer into every text box on the page
07:44:36 <elliott> ais523: I rather suspect they might go on element order
07:44:44 <elliott> perhaps even rendered size
07:44:46 <ais523> ah, that's possible too
07:44:53 <elliott> or they might search for known text around the boxes
07:44:59 <elliott> like usage information and field labels
07:45:07 <elliott> site admins really won't want to mess with those, after all
07:45:10 <ais523> seems a little advanced for a spambot
07:45:25 <ais523> normally they just aim at low-hanging fruit
07:45:33 <fizzie> "Aren't you little short for a spambot."
07:45:41 <elliott> ais523: yeah, Esolang must be reeling in billions for them :P
07:45:49 <elliott> (I realise they're not specifically targeting Esolang)
07:46:14 <kallisti> elliott: I think you're expecting far too much from spambots.
07:46:16 <ais523> OK, now I'm curious
07:46:17 <kallisti> maybe /some/ do that.
07:46:21 * ais523 visits findthisall.com in w3m
07:46:31 <ais523> even if its purpose is to spread malware, I bet it doesn't spread it via w3m on Linux
07:46:47 <ais523> I mean, even if that combination is vulnerable, the chance that anyone would bother to try an exploit for it is basically 0
07:47:02 <kallisti> anyway if it's element order (which is pretty likely as well) then you can just add some hidden elements somewhere
07:47:29 <ais523> hmm, it's a list of searches it guesses I might be using, and some results
07:47:32 <ais523> although quite a few of them are empty
07:47:34 <fizzie> Hidden elements, which they ignore, since they try to approximate what a user would do.
07:47:35 <ais523> what an embarassing homepage
07:47:47 * ais523 searches for INTERCAL
07:48:01 <fizzie> Are you sure you're not looking for High Quality Euro Watches?
07:48:20 <ais523> heh, many of the results are just random URLs with irrelevant descriptions and INTERCAL worked into them somewhere
07:48:25 <ais523> this seems to be a clearinghouse for spam links
07:48:43 <ais523> as in, it's nothing but sponsored referrals
07:48:55 <elliott> ais523: i visited it, it's boring
07:48:57 <ais523> "Check results for INTERCAL on our free comparison site"
07:49:15 <ais523> elliott: indeed
07:49:24 <ais523> what a pointless thing to spam
07:49:43 <kallisti> ais523: I say you tias
07:49:52 <kallisti> and you may be pleasantly surprised at how dumb spambots actually are.
07:49:56 <ais523> they're relying on people searching for a term, finding findthisall.com, then completely forgetting what they were looking for and clicking on one of its links because they look interesting
07:50:14 <ais523> nah, every distinct website I visit increases the chance that one of them has a w3m exploit
07:50:17 <kallisti> and by you and I mean the owner of the wiki.
07:50:33 <ais523> kallisti: oh, you mean change the wiki layout?
07:50:34 <ais523> I can't
07:50:40 <kallisti> yes.
07:50:42 <kallisti> and yes I figured.
07:50:42 <ais523> there are several obvious solutions to the current rash of spam
07:50:51 <ais523> but graue isn't implementing any of them, or even responding to emails
07:51:04 <elliott> hmm, yay, I should hit the last SO privilege level before the 3 ridiculously huge ones today
07:51:18 <ais523> "You want information about search engine optimization and you would like to have it in a easy to understand format. If this is the case, this article will be perfect for you. We will lay out some of the most important tips and guidelines, in a way that you can quickly digest. The main thing to remember is that you need a solid strategy for which %LINK1% you'll be using, and how you'll use them, but we'll get to that in a moment."
07:51:21 <elliott> (it goes 5000, 10000, 15000, 20000)
07:51:29 <ais523> what does the 5000 level do?
07:51:49 <ais523> hmm, are you going to hit the top privelege level then delete the entire site?
07:51:50 <elliott> allows me to vote on suggested post edits and approve tag wiki edits
07:51:55 <elliott> ais523: yes, that's my master plan
07:51:59 <ais523> like EVE Online scammers?
07:52:52 <elliott> (10000 gets you moderation privileges like delete votes, handling flags, viewing deleted posts, etc.; 15000 lets you protect questions; 20000 lets you vote to delete answers, delete closed questions, edit tag wikis arbitrarily)
07:53:13 <elliott> I assume there's some secret level above those that lets you delete the site
07:53:17 <elliott> it'd only be logical
07:53:41 <ais523> "delete votes"? that sounds abusable
07:53:47 <elliott> hmm, the 10k rep privileges are kind of like wikipedia making people admins when they hit a certain edit count
07:53:52 <ais523> does it let you delete downvotes aimed at you?
07:53:58 <elliott> except not really, since people have to vote and accept your stuff to raise rep :)
07:54:03 <elliott> ais523: cast delete votes, that is
07:54:06 <elliott> i.e. cast votes to delete questions
07:54:08 <ais523> oh, I see
07:54:17 <ais523> and also cast votes to not delete, I take it?
07:54:33 <elliott> I don't think any of the voting systems work that way, they're mostly just 5 people -> action taken
07:54:39 <elliott> e.g. it takes 5 close votes to close a question
07:54:43 <ais523> ah, I see
07:55:05 <elliott> and you need a good amount of rep to cast them in the first place
07:55:12 <elliott> so the chances of a high-quality question being closed like that are low
07:55:38 <ais523> I guess 5 people with the ability to cast delete votes could delete the whole site, one question at a time
07:55:57 <elliott> heh
07:56:45 <ais523> hmm, I guess I'm one of the few people in the world with enough technical knowledge to delete Wikipedia's Main Page correctly, if I had admin privileges
07:56:50 <ais523> the thing would just get undeleted pretty quickly, though
07:57:10 <ais523> I'm amused that the safeguards against deleting it are so much higher than the safeguards against editing it
07:57:18 <fizzie> ais523: You've mentioned this before, in fact. Are you sure you're not harboring some Main Page deletion fantasies?
07:57:30 <elliott> He's talked about it at least 3 or 4 times.
07:57:37 <ais523> fizzie: it's because I've been trying to persuade Wikipedia to move it to Portal:Main for ages
07:57:41 <ais523> but I gave up after a while
07:57:42 <fizzie> Department of Wikiland Security may be in touch.
07:57:49 <ais523> hmm, I suppose I should claim that's the reason I left
07:57:52 <elliott> ais523: You can delete Esolang's main page. Nobody will notice if you just do it for a few minutes.
07:57:57 <elliott> Don't keep your urges cooped up inside.
07:58:02 <ais523> anyway, there's always a big debate about "can you actually /do/ that?"
07:58:09 <ais523> and the answer is "yes, if you know how, it's actually quite easy"
07:58:14 <ais523> but nobody ever believes me
07:58:43 <elliott> ais523: The one thing I must do with my life is to become a producer of creative works of sufficient notability that an article on any major work I create is guaranteed, and then to release such a work and title it Main Page.
07:58:55 <ais523> elliott: indeed
07:59:37 <elliott> I really want to have a universe sandbox so I can see what would happen before I commit to actually going to all that effort to making it happen.
08:00:13 <ais523> elliott: how do you know you're not in one at the moment, and simply held back your memories of the outside whilst inside it, in order to make sure you acted plausibly
08:00:31 <elliott> ais523: if that is the case, I salute its creator
08:00:33 <elliott> godspeed, me
08:00:50 <elliott> but it's inevitable that I /will/ end up doing all that, because it's specified in the parameters
08:00:54 <elliott> so I don't have to devote any effort to actually doing it
08:01:09 <elliott> probably the simplest way this will happen is for me to change my mind and devote effort to it
08:01:16 <elliott> ais523: Jimbo Wales' editcount is /under 9000/?
08:01:28 <ais523> would you expect it to be high?
08:01:33 <ais523> most of what he does doesn't require actual edits
08:01:36 <ais523> and he isn't even in charge any more
08:01:48 <ais523> also, he preferred to use a mailing list to wiki talk pages for discusison
08:01:50 <ais523> *discussion
08:01:56 <ais523> which is, I think, a mistake
08:02:03 <elliott> ais523: well, it's been 11 years
08:02:07 <fizzie> elliott: You can aim for the low-hanging fruit and just design an esolang called "Main Page".
08:02:11 <elliott> he's made under 818 edits per year
08:02:30 <elliott> that seems abnormally low for a founder who at least participated /moderately/ actively for a good while
08:02:51 <elliott> fizzie: do you really think any of us would object to putting a dab on our main page for that?
08:03:01 <elliott> I'd probably just link the trilime to it :P
08:03:53 <fizzie> What's that "I have plans for this file!" mean?
08:04:33 <elliott> fizzie: I uploaded it to put it on my Main Page redesign.
08:04:41 <elliott> You can't hotlink it from the theme files.
08:04:58 <elliott> Obviously I had to upload it before anyone actually knew about the redesign, though, to test it :p
08:05:31 <elliott> http://esoteric.voxelperfect.net/w/index.php?title=Main_Page&direction=next&oldid=21677
08:05:43 <elliott> I like how the last few edits before I replaced it were adding more "of the day"s
08:05:48 <elliott> it reached critical mass
08:06:38 <elliott> ais523: [[User:Fydo851ts563n‎]]
08:06:41 <fizzie> So what does the trilime symbolize?
08:06:45 <elliott> fizzie: nobody knows
08:07:00 <elliott> wait
08:07:02 <elliott> holy crap
08:07:07 <elliott> ais523: fizzie: the trilime is the matrix of solidity
08:07:07 <ais523> elliott: deleted
08:07:16 <ais523> elliott: but, umm, what?
08:07:24 <ais523> it predates us hearing about the matrix of solidity
08:07:31 <elliott> ais523: exactly!
08:07:37 <elliott> do you seriously believe the matrix of solidity didn't exist before we heard about it?
08:07:38 <fizzie> Linear time is no boundary for the matrix of solidity?
08:07:39 <elliott> we're /trapped/ in it
08:07:44 <elliott> further evidence: 1. limes are solid 2. if not the trilime, what else?
08:07:47 <ais523> elliott: s/trapped/locked/
08:08:14 <elliott> ais523: hmm, I suppose you could argue we're consensually locked
08:08:16 <elliott> deep
08:08:30 <ais523> elliott: but you're underage!
08:08:40 <elliott> ais523: not in the matrix of solidity!
08:08:47 <elliott> This is the Postfix program at host pendrell.textdrive.com.
08:08:48 <elliott> I'm sorry to have to inform you that your message could not
08:08:48 <elliott> be delivered to one or more recipients. It's attached below.
08:08:48 <elliott> For further assistance, please send mail to <postmaster>
08:08:48 <elliott> If you do so, please include this problem report. You can
08:08:48 <elliott> delete your own text from the attached returned message.
08:08:50 <elliott> The Postfix program
08:08:52 <elliott> <graue-deadnet@pendrell.textdrive.com>: maildir delivery failed: error writing
08:08:54 <elliott> message: Disc quota exceeded
08:08:56 <elliott> ais523: you lied to me
08:09:30 <ais523> elliott: well, that's the last known email address for Graue
08:09:38 <ais523> I didn't get an error about it when I sent there
08:09:42 <ais523> my guess is that it /is/ his email address
08:09:44 <ais523> but he no longer reads it
08:09:51 <ais523> and his disc quota has entirely filled up with mail
08:09:57 <ais523> explaining why I didn't get a bounce on my last email, but you did
08:10:00 <fizzie> Email of the day: "Uh, we have this exam for this course you're the assistant for tomorrow, do you have any idea who's preparing the questions?" "Er... the lecturer of the course flew to Tokio a week ago, left his laptop at home, and won't be back until the 16th..."
08:10:13 <elliott> ais523: searching elsewhere, scott at the same domain seems to be his email address too
08:10:19 <ais523> note that you're not going to get "disc quota exceeded" unless it can identify the user in question
08:10:22 <ais523> elliott: are you going to try it?
08:10:25 <elliott> ais523: maybe!
08:10:42 <elliott> failing that, I'll find out where he lives and take a crowbar
08:11:14 <elliott> sent, let's see if it bounces
08:12:43 <elliott> ais523: theory: graue likes spambots
08:13:01 <ais523> so how do you explain the ban on <div>?
08:13:04 <fizzie> I guess I got nominated to prepare an exam. "Oh well, let's check the previous one for ideas and the TeX template... bash: cd: edu/T-61.5140/exam: Permission denied"
08:13:13 <elliott> ais523: he also hates div and span tags
08:13:26 <elliott> fizzie: :D
08:13:33 <fizzie> It's SPAMbots he likes, not SPANbots.
08:13:40 <elliott> fizzie: ("Tokio".)
08:13:55 <fizzie> elliott: Whoops; went with the Finnish spelling.
08:14:31 <elliott> hmm, maybe i should sleep
08:14:37 <elliott> maybe i'll ask ais523 whether i should sleep
08:14:48 <ais523> elliott: I should sleep myself
08:14:51 <ais523> but I keep getting distracted
08:15:03 <ais523> either that, or I should stay awake until a sensible time to sleep and then sleep
08:15:11 <ais523> the thing is, I need to be awake at about 7pm
08:15:16 <fizzie> "drwx--S--- 3 [lecturer's account] edu 7168 2011-11-10 12:20 edu/T-61.5140/exam/" well that's just impolite.
08:15:20 <ais523> so if I don't go to sleep soon, I won't have time to fit in a good day's sleep
08:15:29 <ais523> fizzie: setgid? why?
08:15:34 <ais523> to a group that doesn't exist?
08:15:43 <elliott> why would the edu group not exist?
08:15:47 <fizzie> Huh? The 'edu' group exists just fine.
08:15:52 <fizzie> Inherited from the parent, probably.
08:16:08 <elliott> fizzie: Can't you just use a root escalation?
08:16:20 <ais523> oh, I read edu as the user, and 7168 as the group
08:16:42 <fizzie> Oh; right, I redacted the user.
08:16:50 <fizzie> To protect the guilty, and so on.
08:17:29 <fizzie> Oh well, the student-run exam archive probably has scanned copies of the old exams anyway.
08:17:52 <fizzie> (Not the 2011 ones, apparently.)
08:20:25 <elliott> fizzie: I wish the students could see this, it'd be so reassuring for them.
08:21:22 <elliott> fizzie: You should somehow work the channel into one of the questions, e.g. "Alice connects to her favourite IRC network irc.freenode.net and joins #esoteric. Bob sends her an automated welcome message. What is 2 + 2?"
08:22:56 -!- zzo38 has joined.
08:23:02 <fizzie> It's a re-re-exam anyway; the "main" one was last May, and a repeat opportunity last August; this one is just for the stragglers.
08:23:29 <fizzie> Three people have signed up for it, though I suppose there could always be a couple extra; signing up is in theory mandatory, in practice not.
08:23:49 <fizzie> How much can three people matter? Wait, no, not three people: three students.
08:24:02 <fizzie> Three smelly, unwashed students. (Disclaimer: they might not smell.)
08:24:12 <elliott> fizzie: You should just not give them an exam and they'll be so happy. Probably.
08:24:28 <elliott> "Is this an exam?" (correct answer "no")
08:26:10 <elliott> hmm, i just got another upvote
08:26:14 <elliott> maybe i _will_ sleep after all
08:26:24 <elliott> (cue ais523)
08:26:37 <Deewiant> fizzie: Why'd the lecturer leave his laptop at home and how do you know this? (I presume it wasn't an accident or you wouldn't know about it, unless he called you or something.)
08:27:38 <elliott> The lecturer was Deewiant all along.
08:27:46 <elliott> (Is Deewiant still even at that place? Finland is so confusing.)
08:28:07 <Deewiant> Yes, I'm at that place for a sufficiently broad value of "that place".
08:28:52 <elliott> Deewiant: University thingy thingy Google Wave. Without the Google part.
08:28:57 <elliott> Although Finland might merge with Google in the coming years.
08:29:21 <Deewiant> Yes, I'm at that university.
08:29:40 <elliott> Haven't you been there, like, ten years now? FINLAND.
08:29:48 <fizzie> Deewiant: He emailed me on 28th (of December) that "I'll be leaving for Tokyo tomorrow, back on Jan 16th, not going to take a computer with me, could you kindly update next year's details on the course's website?" Had (apparently; we haven't managed to contact him) completely forgotten about any exam.
08:30:06 <fizzie> Deewiant: I guess it's borderline possible he'd have a ready exam in his office? Though probably not very likely.
08:30:21 <Deewiant> fizzie: Worth a shot I guess.
08:30:26 <Deewiant> elliott: Like four, I think.
08:30:32 <elliott> Who the hell doesn't take a computer with them?
08:30:41 <elliott> That's like "I'm not taking clothes, or oxygen."
08:30:42 <fizzie> elliott: It's called a va-cay-shun.
08:30:52 <elliott> Naked space vacuum vacation.
08:30:59 <elliott> (The term is "holiday", foreigner.)
08:31:07 <elliott> wow, i just got another update!
08:31:09 <fizzie> Holy day.
08:31:15 <elliott> ais523: you should sleep, i don't need you to be awake to entertain me since i'm sleeping
08:31:19 <elliott> *upvote
08:32:41 <fizzie> elliott: Anyway, he's not answering his phone either, so I think it's the "unplugged" sort of a holiday. (I mean, don't people usually go to Tokyo to get rid of the hussle and bustle of civilization?)
08:33:03 <fizzie> Hussel-bussel. Anyway.
08:33:26 <fizzie> Tokyo, the last uncharted wilderness. And so on.
08:34:01 <fizzie> (Can you even get an Internet connection there? Maybe with a satellite phone...)
08:34:26 <elliott> I have a hard time believing it's possible to cross the street without a smartphone in Tokyo.
08:35:55 <elliott> I think ais523 fell asleep.
08:36:15 <Deewiant> fizzie: On an unrelated note, your ICS user web page is old enough that it's full of dead links.
08:36:39 <ais523> no, I'm still awake
08:36:41 <zzo38> I don't take computer to vacation.
08:36:51 <zzo38> I usually do take books, pencil, paper.
08:37:17 <zzo38> I don't take telephone to vacation either.
08:37:35 <elliott> Deewiant: Are you suggesting he adopt the FASCIST AALTO TEMPLATE? (I assume they have a template. It is possible they have a template. A template... might exist?)
08:37:51 <elliott> (Who the fuck calls a university Wave?!)
08:37:54 <Deewiant> elliott: He's using an out-of-date template.
08:38:18 <elliott> Deewiant: Yes, it's like the Confederate flag.
08:38:27 <elliott> Deewiant: You just can't handle: FREEDOM.
08:39:03 <Deewiant> I'm not saying he should use the new template, making up his own stuff is fine by me too.
08:40:24 <elliott> fizzie: You should tile whatever logo you guys used before Aalto as the background.
08:42:20 <fizzie> Maybe he went to Tokyo to DRIFT RACE. I've understood that's kind of what they do there.
08:42:46 <elliott> They have cars in Finland?
08:43:03 <fizzie> Horse-driven snowmobiles.
08:43:13 <Deewiant> Some use polar bears.
08:44:49 <fizzie> Sometimes when the two kinds meet there are... accidents.
08:45:11 <elliott> I really hope Finland is actually like that.
08:45:44 <elliott> ais523: here's a question for you: is efficient /// compilation (to a "standard" language, like C) possible?
08:45:50 <fizzie> You'll be so disappointed when your government finally exiles you here.
08:46:08 <ais523> elliott: hmm
08:46:14 <ais523> I can't think of an obvious way, but I'm not convinced it's impossible
08:47:01 <elliott> it's self-modifying, but at least code only modifies code /after/ it
08:47:11 <elliott> e.g., a replacement never does anything to /itself/
08:49:27 <elliott> @tell oerjan You should fix the Perl /// interpreter (per http://esolangs.org/wiki/Talk:Slashes) :P
08:49:27 <lambdabot> Consider it noted.
08:50:28 <zzo38> I try to make (Functor (forall x y. f x y)) to be a constraint but it doesn't seems to work
08:51:17 <itidus21> http://www.google.com/search?q="matrix+of+solidity"
08:51:31 <zzo38> It says it is expected kind `*' but `f x y' has kind `* -> *'
08:52:28 <elliott> zzo38: you can't have instances like that afaik
08:52:39 <elliott> but it's impossible to say the real error without knowing context
08:53:49 <elliott> itidus21: i like how we are second place
08:54:29 <itidus21> its actually surprising we aren't first place
08:54:32 <zzo38> But doesn't it have like the (,) functor and (->) functors have one additional type argument for all type of kind (*)
08:54:50 <itidus21> hmm ill try a better search engine
08:55:33 <itidus21> duckduckgo drops the ball on this one
08:55:56 <itidus21> bing drops the ball on this one
08:56:34 <elliott> ais523: why the hell is it 9 am?
08:56:49 <ais523> becaues it's almost 9am
08:57:42 <elliott> http://www.lifeoflight.com/channellinglibrary/merlin/533.html beloved beloved beloved
09:04:21 <elliott> ais523: becaues?
09:04:34 <ais523> s/whatever/whatever/
09:05:01 <ais523> bleh, we need a quick and easy to type way to say "just fix all the typos in what I've said recently"
09:05:04 <ais523> I suggest * on a line by itself
09:06:00 <itidus21> s/typed/intended
09:06:01 <elliott> sdiojf oe hefu ahfhiwe
09:06:03 <elliott> *
09:06:43 <elliott> bleh, i have to sleep now, or i'll end up sleeping at some even more terrible time
09:07:04 <elliott> ais523: wake me up before it gets too late, please, thanks
09:07:17 <itidus21> i think its a form of courtesy
09:07:34 <itidus21> or a form of acknowledging ones typos
09:08:56 -!- elliott has quit (Read error: Operation timed out).
09:10:01 <zzo38> Then how can I make constraints and classes that put multiple parameters in?
09:12:15 <Sgeo> zzo38, MPTCs?
09:12:24 <Sgeo> I assume your question is more advanced than that
09:12:35 <zzo38> Yes my question is more advanced than that
09:14:06 -!- nooga has joined.
09:20:09 <itidus21> vis a vis my http://sprunge.us/GdOR and http://sprunge.us/UNSd i would say
09:23:21 <itidus21> brainfuck and boolfuck use bf tape and io streams
09:23:53 <itidus21> smallfuck uses bf tape
09:24:33 <itidus21> paintfuck uses bf matrix
09:26:20 -!- nooga has quit (Ping timeout: 240 seconds).
09:27:29 <itidus21> what i had in mind is to use bf tape and io matrix
09:39:22 -!- ais523 has quit (Remote host closed the connection).
09:40:20 <itidus21> next insight here is that in such an io matrix, the pointer should have dimensions in addition to position
09:43:55 <itidus21> so that can position the pointer at (x,y) and stretch it to (width, height) and do an operation on that like increment, decrement or write a specific value to them all.
09:48:03 <zzo38> Is the left zero law for MonadPlus implied by the other Monad and Functor laws and by the type signatures?
09:55:16 <kallisti> zzo38: which laws? I can't think of one that would be related.
09:55:39 <kallisti> it needs mzero, which isn't defined anywhere else.
10:07:41 <zzo38> mzero :: m a, where it must work for any argument type. Which means that fmap on it must not affect it since there can be no value to affect (since fmap id = id, it cannot do other things), which means join on such a thing must be same too (join mzero = mzero) due to the (>>= return) = id law.
10:08:24 <zzo38> Did I do it wrong?
10:09:15 <zzo38> (Assuming that the class methods must be fully defined, of course)
10:11:33 <kallisti> zzo38: hm, but then is that because of other laws or simply because mzero :: m a ?
10:12:45 <zzo38> I think it is due to the functor laws. The (>>= return) law seem to imply that if fmap cannot affect something, then join cannot affect it either.
10:17:24 <zzo38> (I mean its value remain unaffected)
10:19:49 <kallisti> hmmm, I guess so?
10:19:54 <kallisti> this is too metamath for me. :P
10:20:35 <kallisti> what causes 2 + 2 = 4? is it the 4, the +, the =, the left 2, or the right 2?
10:22:05 <zzo38> I think it is the + that causes 2 + 2 to make 4
10:24:24 <kallisti> hmmm
10:24:42 <kallisti> I think the whole expression depends on its parts.
10:25:01 <kallisti> but yes, I think what you're saying makes sense as well.
10:25:12 <zzo38> Yes, I agree with that. Still, the main thing that causes addition to result in an answer is the addition.
10:25:33 <zzo38> But of course it won't work if you don't have something to add!
10:25:50 <itidus21> (1+1) + (1 + 1) = (1 + 1 + 1 + 1)
10:26:12 <kallisti> also if equality were defined differently you would not be able to say the same thing about the value of 4.
10:26:13 <zzo38> itidus21: That's different; it is caused by associative laws.
10:26:31 <zzo38> kallisti: Yes, that too.
10:31:14 <kallisti> anyway I'm not sure that they're connected anyway.
10:31:33 <kallisti> I'm pretty sure the zero law is just stemming from the simple fact that mplus and mzero form a monoid.
10:32:14 <kallisti> you could say it's a result of mplus in much the same way that 4 is the result of addition in the expression 2 + 2. if you want to think of it that way.
10:33:55 <kallisti> maybe if mplus had a default definition, with mzero being the minimal complete definition.
10:34:22 <zzo38> kallisti: I don't think so. The identity law (mplus mzero = flip mplus mzero = id) follow from a monoid, but left zero law (mzero >> x = mzero) is difference, it is a bit like multiplication but not really.
10:35:06 <kallisti> oh by left zero law I thought you meant mzero `mplus` x = mzero
10:35:26 <zzo38> No, that is called the left identity law.
10:36:08 <zzo38> Maybe you can understand my other comments and proof now that you know what I meant by left zero law.
10:36:18 <kallisti> yes that makes more sense.
10:36:55 <kallisti> oops. here I was, getting all philosophical.
10:40:20 <kallisti> or hmmm...
10:41:02 <kallisti> well, if the left zero law weren't true I don't think left identity for monads could be true either.
10:43:54 -!- GreaseMonkey has quit (Quit: The Other Game).
10:50:49 <kallisti> `? monad
10:50:59 <HackEgo> Monads are just monoids in the category of endofunctors.
10:51:05 * Sgeo has every desire to write some Template Haskell code very soon
10:51:12 <kallisti> Sgeo: wwhy?
10:51:34 <Sgeo> It's either that or writing very repetitive Haskell code
10:51:40 <kallisti> why?
10:51:43 <Sgeo> Although I've already been doing quite a bit of the latter :/
10:51:51 <Sgeo> Because I intend to make a binding to the AW SDK
10:52:04 <kallisti> oh. maybe,
10:52:21 <kallisti> repetitive in what way?
10:53:33 <Sgeo> Defining data structures in a regular way with a consistent naming pattern, and making consistently named functions that take those data structures as arguments
10:53:36 <Sgeo> Things like that
10:53:46 -!- sebbu2 has joined.
10:53:46 -!- sebbu2 has quit (Changing host).
10:53:46 -!- sebbu2 has joined.
10:55:10 <Sgeo> I will probably use a quasiquoter
10:55:34 <Sgeo> So I can copy/paste from Aw.h right into the thing without repeated search/replace and whatnot
10:55:42 <Sgeo> (Which I've been doing quite a bit of these past few days)
10:56:52 -!- sebbu has quit (Ping timeout: 252 seconds).
11:01:07 <kallisti> Sgeo: are you sure there's not an abstraction?
11:15:21 <itidus21> i think that i have a hidden motive with programming to try to use programming to bridge the gap between required data resources and available financial
11:17:00 <itidus21> like for example, 3d scanners, 2d scanners, cameras, video cameras, 3d cameras, motion capture, microphones etc.. all provide a lot of data resources
11:19:10 <itidus21> not to mention the cost of actors, painters, animators, film sets, voice actors to apply all these technologies to
11:22:01 <Frooxius> Abstract film? :3
11:22:02 -!- Jafet has joined.
11:22:32 -!- azaq23 has joined.
11:22:47 -!- azaq23 has quit (Max SendQ exceeded).
11:23:24 -!- azaq23 has joined.
11:23:28 <itidus21> Frooxius: well the idea is quite obvious "aha.. i can simulate all these things with a computer!" but then there is the need for 2d digital artists, animators, 3d modellers, music composers, render farms (in some cases)
11:24:34 <Frooxius> Hmm, I just saw an abstraction and actors and such, I'm not really paying attention much ^^'
11:24:58 <itidus21> oh, since i don't understand esolangs i just go off on my own tangents
11:25:21 <Frooxius> I made a short abstract (maybe? x3 ) film before though, if you're interested: http://www.youtube.com/watch?v=yQJYr13Ixew
11:25:43 <itidus21> basically my comments are not releveant or related to what was said before
11:26:59 -!- Jafet1 has joined.
11:27:21 -!- Jafet has quit (Ping timeout: 240 seconds).
11:33:12 -!- Jafet1 has quit (Ping timeout: 260 seconds).
11:35:55 -!- nooga has joined.
11:44:35 <Sgeo> kallisti, there probably are, but I can't think of anything off the top of my head that's remotely type-safe
11:45:03 <Sgeo> Or thread-safe
11:47:45 <zzo38> The type (c x y -> z) is a indexed comonad for any category c like (x -> z) is for a monoid x
11:48:00 <zzo38> The type (c x y -> z) is a indexed comonad for any category c like (x -> z) is a comonad for a monoid x
11:50:14 -!- zzo38 has quit (Remote host closed the connection).
12:07:24 <itidus21> i'm impressed by the language trigger having just read about it
12:08:30 -!- Jafet has joined.
12:08:32 <itidus21> ^?
12:08:38 <itidus21> ^help
12:08:38 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
12:08:56 <itidus21> `?
12:09:00 <HackEgo> cat: wisdom/: Is a directory
12:09:04 <itidus21> `help
12:09:07 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
12:11:25 -!- Phantom_Hoover has joined.
12:14:18 -!- monqy has quit (Quit: hello).
12:16:05 -!- nooga has quit (Ping timeout: 252 seconds).
12:37:39 -!- MDuck has changed nick to MDude.
12:38:57 -!- nooga has joined.
13:04:19 -!- nooga has quit (Ping timeout: 276 seconds).
13:29:09 -!- sebbu2 has changed nick to sebbu.
13:34:07 <itidus21> ^bf ,[.,]!hello
13:34:07 <fungot> hello
13:35:46 -!- Sgeo has quit (Read error: Connection reset by peer).
13:37:28 -!- Sgeo has joined.
13:41:57 <itidus21> ^bf ,[.,]!wb sgeo
13:41:57 <fungot> wb sgeo
13:42:23 <Sgeo> ty
13:42:34 <Sgeo> Only restarted comp because I was too lazy to clear up the clutter of programs
13:42:39 <Sgeo> Wanted a fresh start
13:42:44 <Sgeo> And now because of it I am noticing c2hs
13:45:03 <itidus21> so i was working independantly on a symbol independant thing a few days ago and just encountered the idea on the wiki (probably unconcious plagiarism on my part)
13:45:08 <itidus21> anyway, in this case the idea was
13:45:32 <itidus21> "" = 0, "x" = 1 where x is a particular symbol, "xx" = 2 where x is a particular symbol, "*" = infinity
13:46:14 <itidus21> in hindsight, the idea of "" = 0 doesn't look so great
13:46:54 <itidus21> but this would be designed to give something like aa+aa=aaaa
13:48:21 <itidus21> or maybe to say 'a' = 1, 'b' = 2, 'c' = 3... "abbccc"
13:49:54 <itidus21> nah.. nevermind..
13:51:44 <itidus21> i guess what my notion comes down to is that a symbol could encode a number by being a string of that number
13:51:58 <itidus21> ^in length
13:52:21 <itidus21> moving on...
13:53:55 <fizzie> You see unary numbers like that sometimes; e.g. in sed programs, since it's easy to add them.
13:55:27 <fizzie> And there's of course the combination of unary and boring brainfuck derivatives, http://www.esolangs.org/wiki/Unary
13:55:51 <itidus21> once, in a program lost to a hard disk crash, i had this idea of a rock paper scissors game where you could do sequences of rock paper scissors
13:57:04 <itidus21> i implemented it in c++ with allegro many years before coming here
13:57:19 <itidus21> it was a good idea... but hard disks die
13:57:49 <itidus21> anyway.. the idea was.. the 2 players had hitpoints... and different sequences take off different amounts of hitpoints
13:58:25 <itidus21> so rrr, ppp, sss gave you a bonus
13:58:38 <itidus21> but then there was more complicated sequences
13:58:53 <itidus21> up to possibly 8 in length i forget exactly
13:59:29 <itidus21> and so the game becomes about trying to complete a long sequence, while preventing the other playing completing a long sequence
13:59:42 <itidus21> ^s/playing/player
14:02:28 <itidus21> since uh.. at every round of the game, a rock will beat a scissors
14:03:20 <itidus21> so if you can predict what their pattern is you can try to head them off before they complete it
14:05:48 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
14:16:33 -!- nooga has joined.
14:17:12 <Phantom_Hoover> There.... is a box of Gardasil next to the butter in my fridge.
14:17:51 <Phantom_Hoover> At least my sandwich will be immune to cervical cancer *and* genital warts, I suppose.
15:25:16 <kallisti> I can't even tell if I'm tired or not.
15:40:52 * kallisti is reading "What every computer scientist should know about floating-point arithmetic"
15:41:03 <Phantom_Hoover> "It's insane."
15:44:16 <kallisti> "Floating-point arithmetic is considered an esoteric subject by many." -- first sentence.
15:44:40 <Phantom_Hoover> It is, because it's nuts.
15:45:29 <Phantom_Hoover> Or rather, it's designed for good enough accuracy over a wide range of precisions, not precise numerical computation.
15:45:38 <Phantom_Hoover> s/precisions/magnitudes/
15:46:18 <kallisti> "This is rather surprising, because floating-point is ubiquitous in computer systems: Almost every language has a floating-point datatype; computers from PCs to supercomputers have floating-point accelerators; most compilers will be called upon to compile floating-point algorithms from time to time; and virtually every operating system must handle floating-point exceptions such as overflow."
15:46:24 <kallisti> -- second sentence
15:47:25 <kallisti> I think I'll mostly be interested in the compiler and OS sections.
15:47:49 <kallisti> and not the "lol this is how overflow and rounding errors happen lololololo" section
15:49:33 <kallisti> oh hm it discusses the IEEE standard. That will be useful, because I haven't managed to find an open copy of it anywhere.
15:54:44 -!- Ngevd has joined.
15:54:47 <Ngevd> Hello!
15:57:45 <Ngevd> I like today's Gunnerkrigg court
15:59:23 <Ngevd> Today's Comments on a Postcard sounds awfully familiar...
16:19:49 <Deewiant> Hooray, I now have an (almost; no 5-1) complete set of up to 6-piece Nalimov endgame tablebases.
16:23:25 <Phantom_Hoover> Now, a complete set of 6-piece Nalimov endgame tablebases; tomorrow, the world!
16:31:07 <Deewiant> In the far future, perhaps a seven-piece set.
16:50:19 <Vorpal> <kallisti> oh hm it discusses the IEEE standard. That will be useful, because I haven't managed to find an open copy of it anywhere. <-- try IEEE?
16:51:41 <Vorpal> kallisti, here: http://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=4610933
16:52:50 <Vorpal> I got my copy from there, can access it by university proxy, check if your university offers that too (if you study at one, I don't remember). If you don't I'm afraid I'm not allowed to distribute it though, and the pdf is marked with who downloaded it on the bottom of every page.
16:53:48 <kallisti> yes I can access it via my university.
16:54:01 <Vorpal> kallisti, then the problem is solved
16:54:08 <kallisti> not sure if I can do so on this computer though
16:54:11 <kallisti> I haven't checked.
16:54:28 <Vorpal> kallisti, my university offers a proxy service for such things, so I can do it from anywhere
16:55:58 <Sgeo> The /r/circlejerk CSS fooled me for a bit
16:57:02 <lahwran> you can downvote stuff there easy
16:58:29 <Sgeo> Not what I was referring to
17:03:10 <lahwran> then what were you referring to, oh wise CSS master?
17:06:32 -!- elliott has joined.
17:06:56 -!- Vorpal has quit (Ping timeout: 240 seconds).
17:08:57 <elliott> hi
17:08:58 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
17:09:26 <elliott> wow, Graue deleted some spam
17:09:33 <elliott> @tell oerjan you owe me one
17:09:33 <lambdabot> Consider it noted.
17:10:09 <lahwran> @tell lambdabot derp
17:10:09 <lambdabot> Nice try ;)
17:10:41 <Sgeo> lahwran, look at who the commenters are.
17:11:08 -!- oklopol has quit (Read error: Connection reset by peer).
17:11:22 <lahwran> @tell lambdabot derp, okay?
17:11:22 <lambdabot> Consider it noted.
17:11:40 -!- Ngevd has quit (Read error: Connection reset by peer).
17:13:15 <lahwran> Sgeo: that's actually pretty impressive CSS
17:13:45 -!- Ngevd has joined.
17:18:13 -!- Taneb has joined.
17:18:50 -!- Ngevd has quit (Ping timeout: 240 seconds).
17:40:32 -!- augur has quit (Remote host closed the connection).
17:48:23 <kallisti> hi my name is kallisti
17:48:34 <Sgeo> Apparently earphones do not exist in the future.
17:48:41 * Sgeo goes back to watching DS9
17:49:12 * kallisti is uncharacteristically watching the entire first season of Trigun.
17:56:00 <fizzie> Did it have multiple seasons?
17:57:35 -!- oerjan has joined.
17:58:44 <elliott> hi oerjan, YOU MAY PAY ME IN BLOOD
17:59:39 -!- Klisz has joined.
18:01:19 <oerjan> *cough*
18:01:19 <lambdabot> oerjan: You have 2 new messages. '/msg lambdabot @messages' to read them.
18:01:22 <oerjan> @messages
18:01:23 <lambdabot> elliott said 9h 11m 50s ago: You should fix the Perl /// interpreter (per http://esolangs.org/wiki/Talk:Slashes) :P
18:01:23 <lambdabot> elliott said 51m 49s ago: you owe me one
18:02:03 <oerjan> ah but you used the reverse magical word
18:02:06 <oerjan> "should" that is
18:02:32 <elliott> oerjan: Yes, and then I emailed Graue at the CORRECT ADDRESS unlike everybody else, and got a response, and he deleted spam.
18:02:41 <elliott> And says he'll try and do something about it on the weekend.
18:02:43 <elliott> IN CONCLUSION
18:02:48 <elliott> PAY IN BLOOD, CORRECTED /// INTERPRETER
18:03:21 <oerjan> i don't think i've emailed graue recently at any address, so i don't see the point
18:03:57 <elliott> oerjan: ais did, and you whined at least once about Graue being non-responsive :P
18:04:00 <elliott> BLOOD!!!
18:04:22 <elliott> There are lots of bloggers out there that do not really comprehend the potential of their blogs; specifically, the money making potential of the blog and how it might be optimized to generate a reliable online income. Here are a number of reasons why anyone may make money blogging. Blogs are becoming increasingly popular due to the fact that they can be put to use for income generation. Online Marketers work with blogs for advertising and marketi
18:04:22 <elliott> ng and bloggers capitalize on that require and make dollars blogging. So why are blogs so rewarding? Well here are usually four reasons:
18:05:43 <Sgeo> Oh ffs, it took way too long for me to get the hint
18:05:46 <Sgeo> (in this episode)
18:06:43 -!- Taneb has quit (Quit: Goodbye).
18:07:12 <oerjan> i am slightly worried that there are three admins active and still they missed User:KuzyFueesi
18:07:41 <elliott> oerjan: ais uses rss which can reorder things
18:07:47 <elliott> dunno about keymaker
18:07:50 <elliott> graue only deleted one page, though
18:08:03 <elliott> @tell ais523 [[User:KuzyFueesi]]
18:08:03 <lambdabot> Consider it noted.
18:08:57 <oerjan> ...but does it have a 10 cutoff limit like the wordpress blog rss?
18:10:30 <elliott> Graaa upvote me you people.
18:10:33 <elliott> oerjan: I doubt it's that low.
18:14:57 -!- DCliche has joined.
18:16:07 <oerjan> !show slashes
18:16:09 <EgoBot> perl (sending via DCC)
18:17:07 * elliott thinks about techniques for efficient /// implementation
18:17:27 <oerjan> !slashes /test/ho///hm/test
18:17:29 <EgoBot> ho
18:17:31 <elliott> you could store the whole program in a trie somehow
18:17:37 <elliott> the only thing you need ordering for is ordering of execution
18:18:15 -!- Klisz has quit (Ping timeout: 244 seconds).
18:20:04 <oerjan> !slashes //hm/\??
18:20:05 <EgoBot> ​??
18:21:03 <oerjan> !slashes //h\m/\??
18:21:04 <EgoBot> hm?
18:24:14 <elliott> An article talking partly about J with a J code example from Programming in the 21st Century is #2 on proggit.
18:24:26 <elliott> Maybe proggit has merit after all.
18:24:43 <elliott> Of course, then I click the comments...
18:24:44 <Deewiant> Don't read the comments.
18:25:37 <elliott> Deewiant: But all the other links are boring!!!!!!
18:25:38 <elliott> :'(
18:38:33 -!- Zuu has quit (Ping timeout: 252 seconds).
18:44:03 -!- Ngevd has joined.
18:44:06 <Ngevd> Hello!
18:46:47 <Sgeo> Hi
18:49:35 <oerjan> !delinterp slashes
18:49:36 <EgoBot> ​Interpreter slashes deleted.
18:49:59 <oerjan> !addinterp slashesl perl http://oerjan.nvg.org/esoteric/slashes/ircslashes.pl
18:50:01 <EgoBot> ​Interpreter slashesl installed.
18:50:03 <oerjan> oops
18:50:06 <oerjan> !delinterp slashesl
18:50:06 <EgoBot> ​Interpreter slashesl deleted.
18:50:11 <oerjan> !addinterp slashes perl http://oerjan.nvg.org/esoteric/slashes/ircslashes.pl
18:50:13 <EgoBot> ​Interpreter slashes installed.
18:50:23 <oerjan> !slashes //h\m/\??
18:50:49 <oerjan> !slashes /test/ho/test
18:50:49 <EgoBot> ho
18:52:07 <oerjan> oh wait
18:53:49 <oerjan> !show slashes
18:53:51 <EgoBot> perl (sending via DCC)
18:54:51 * oerjan feels so anemic now
18:56:23 <elliott> what does anemic even mean
18:56:52 <oerjan> lack of red blood cells
18:56:59 <elliott> wat
18:57:03 <elliott> well i mean
18:57:04 <elliott> i knew that
18:57:12 <elliott> i just assumed there must be some hidden meaning i was missing for that to make sense
18:57:32 <oerjan> i just paid a blood debt, is all
18:57:35 <Ngevd> oerjan is actually anemic. He really needs to get to a hospital, stat
18:57:48 <elliott> oerjan: oh dur
18:58:16 <oerjan> Ngevd: a very plausible interpretation.
19:02:36 <elliott> ?pl \i o f a b -> i $ f (o a) (o b)
19:02:36 <lambdabot> (. (flip =<< ((flip . ((.) .)) .) . flip (.))) . (.) . (.) . (.)
19:02:39 <elliott> ?pl \a b -> i $ f (o a) (o b)
19:02:40 <lambdabot> (i .) . (. o) . f . o
19:02:56 <elliott> ?pl \a b c -> i $ f (o a) (o b) (o c)
19:02:56 <lambdabot> ((i .) .) . flip flip o . ((.) .) . (. o) . f . o
19:03:00 <elliott> ?pl \a b c d -> i $ f (o a) (o b) (o c) (o d)
19:03:00 <lambdabot> (((i .) .) .) . flip flip o . ((flip . ((.) .)) .) . flip flip o . ((.) .) . (. o) . f . o
19:03:06 <elliott> sigh
19:03:52 <oerjan> elliott: needs more on
19:04:52 <elliott> oerjan: well the problem with on is that it's just for binary operators...
19:04:57 <oerjan> :t (?i .: ?f) `on` o
19:04:58 <lambdabot> Couldn't match expected type `a -> b' against inferred type `Expr'
19:04:58 <lambdabot> In the second argument of `on', namely `o'
19:04:58 <lambdabot> In the expression: (?i .: ?f) `on` o
19:05:01 <oerjan> :t (?i .: ?f) `on` ?o
19:05:02 <lambdabot> forall a c b a1. (?i::a -> c, ?f::b -> b -> a, ?o::a1 -> b) => a1 -> a1 -> c
19:05:12 <elliott> it would be nice to regularise the scheme a bit so that you can more easily extend to further arguments.
19:05:19 <elliott> a la zipWithN vs. ZipList
19:05:46 <oerjan> i believe we wrote onN on a previous occasion
19:10:32 <elliott> oh did we
19:10:39 <elliott> i mean i don't want a typeclass hack
19:10:41 <elliott> just a more regular scheme
19:11:11 <elliott> @ty runWriter
19:11:12 <lambdabot> forall w a. Writer w a -> (a, w)
19:15:09 -!- DCliche has changed nick to Klisz.
19:24:37 <elliott> BOOM!
19:24:42 <oerjan> :t let onMore c f o a = c (f (o a)) o; onEnd f _ = f in onMore (onMore onEnd)
19:24:43 <lambdabot> forall t t1 t2. (t2 -> t2 -> t) -> (t1 -> t2) -> t1 -> t1 -> t
19:25:05 <oerjan> elliott: regular enough? :)
19:25:28 <oerjan> :t let onMore c f o a = c (f (o a)) o; onEnd f _ = f in onMore (onMore (onMore (onMore onEnd)))
19:25:29 <lambdabot> forall t t1 t2. (t2 -> t2 -> t2 -> t2 -> t) -> (t1 -> t2) -> t1 -> t1 -> t1 -> t1 -> t
19:25:43 <elliott> oerjan: heh, nice
19:26:07 <elliott> :t let onMore c f o a = c (f (o a)) o; onEnd f _ = f in (onMore . onMore . onMore . onMore) onEnd
19:26:08 <lambdabot> forall t t1 t2. (t1 -> t1 -> t1 -> t1 -> t2) -> (t -> t1) -> t -> t -> t -> t -> t2
19:26:23 <elliott> oerjan: it would be nice to specify i and o as an argument, though, but only once
19:26:28 <elliott> I guess that would be a pain though
19:26:36 <elliott> i.e. factor them out into an argument without having to repeat them
19:26:38 <elliott> I like it, though
19:26:45 <oerjan> elliott: um o _is_ factored out
19:27:12 <elliott> oerjan: oh, so it is
19:27:16 <elliott> I see, sorry :)
19:27:21 <elliott> onEnd is o there, right?
19:27:31 <oerjan> it's const
19:27:44 <elliott> oerjan: I'm asking what I'd replace to change o
19:27:53 <oerjan> onEnd is on0, really
19:28:07 <oerjan> and onMore onN = onSuccN
19:28:16 <oerjan> with on2 the usual one
19:28:21 <elliott> I can't tell whether you understand my question :P
19:29:07 <oerjan> elliott: o is the second argument of onN, as usual
19:31:46 <oerjan> :t let ioMore c f i o a = c (f (o a)) i o; ioEnd f i _ = i f in ioMore (ioMore (ioMore ioEnd))
19:31:47 <lambdabot> forall t t1 t2 t3. (t3 -> t3 -> t3 -> t) -> (t -> t1) -> (t2 -> t3) -> t2 -> t2 -> t2 -> t1
19:31:58 <elliott> oerjan: ok maybe i'm not expressing what I want
19:32:01 <elliott> oh, I see
19:32:02 <oerjan> elliott: there you go
19:32:17 <elliott> oerjan: neat, thanks -- it'd be nice if f came /after/ i and o though >__>
19:32:23 <elliott> although hmm i guess that's pretty easy
19:32:28 <oerjan> yeah
19:32:53 <elliott> :t let nest c i o f a = c i o (f (o a)); stop i _ f = i f in (nest.nest.nest) stop Endo appEndo
19:32:54 <lambdabot> forall a a1. ((a1 -> a1) -> (a1 -> a1) -> (a1 -> a1) -> a -> a) -> Endo a1 -> Endo a1 -> Endo a1 -> Endo a
19:32:59 <elliott> oerjan: :D
19:33:09 <elliott> generalised newtype-ish lifting
19:33:17 <oerjan> heh
19:33:54 * elliott then wonders if you could bundle i and o into _stop_
19:33:58 <elliott> so that it'd look like
19:34:03 <elliott> (nest.nest.nest) inEndo ...
19:34:08 <elliott> with inEndo being defined appropriately
19:34:12 <elliott> that would be the absolute ideal
19:36:40 <Ngevd> Now you've got me thinking about zipWithN
19:36:43 <oerjan> you can do it if you put inEndo first
19:36:48 <elliott> Ngevd: see ZipList
19:36:57 <elliott> oerjan: oh, indeed
19:36:59 <elliott> that's even better, too
19:37:12 <elliott> :t let nest c i o f a = c i o (f (o a)); stop i _ f = i f; inEndo f = f stop Endo appEndo in inEndo (nest.nest.nest)
19:37:13 <lambdabot> forall a a1. ((a1 -> a1) -> (a1 -> a1) -> (a1 -> a1) -> a -> a) -> Endo a1 -> Endo a1 -> Endo a1 -> Endo a
19:37:48 <elliott> hm stop seems so redundant there, the only place it's used is where you already know what i is
19:38:01 <elliott> :t let nest c i o f a = c i o (f (o a)); stop i _ f = i f; inEndo f = f stop Endo appEndo in inEndo stop
19:38:02 <lambdabot> forall a t. t -> Endo a -> a -> a
19:38:08 <elliott> he
19:38:09 <elliott> h
19:38:09 <oerjan> elliott: just use const i, then
19:38:23 <oerjan> er
19:38:26 <elliott> :t let nest c i o f a = c i o (f (o a)); inEndo f = f (const Endo) Endo appEndo in inEndo stop
19:38:27 <lambdabot> Not in scope: `stop'
19:38:28 <elliott> erm
19:38:29 <elliott> :t let nest c i o f a = c i o (f (o a)); inEndo f = f (const Endo) Endo appEndo in inEndo nest
19:38:30 <lambdabot> Couldn't match expected type `Endo a'
19:38:30 <lambdabot> against inferred type `t -> t1'
19:38:30 <lambdabot> Probable cause: `nest' is applied to too few arguments
19:38:33 <elliott> oerjan: i think not
19:38:39 <oerjan> just const
19:38:46 <elliott> well right
19:38:50 <elliott> :t let nest c i o f a = c i o (f (o a)); inEndo f = f const Endo appEndo in inEndo nest
19:38:51 <lambdabot> forall a a1. ((a1 -> a1) -> a -> a) -> Endo a1 -> Endo a
19:38:59 <elliott> @pl \c i o f a -> c i o (f (o a))
19:38:59 <lambdabot> flip flip (flip (.)) . (liftM2 ((.) . (.)) .)
19:39:03 <elliott> @pl \i o f a -> c i o (f (o a))
19:39:04 <lambdabot> (`ap` flip (.)) . (((.) . (.)) .) . c
19:39:06 <elliott> @pl \o f a -> c i o (f (o a))
19:39:06 <lambdabot> ap ((.) . (.) . c i) (flip (.))
19:39:09 <elliott> @pl \f a -> c i o (f (o a))
19:39:09 <lambdabot> (c i o .) . (. o)
19:39:11 <elliott> heh
19:39:44 <elliott> @let result = (.)
19:39:45 <lambdabot> Defined.
19:39:47 <elliott> @let argument = flip (.)
19:39:48 <lambdabot> Defined.
19:39:59 <elliott> :t \f a -> c i o (f (o a))
19:40:00 <lambdabot> Couldn't match expected type `t -> t1' against inferred type `Expr'
19:40:00 <lambdabot> In the first argument of `f', namely `(o a)'
19:40:00 <lambdabot> In the third argument of `c', namely `(f (o a))'
19:40:04 <elliott> :t \c i o f a -> c i o (f (o a))
19:40:05 <lambdabot> forall t t1 t2 t3 t4. (t -> (t1 -> t2) -> t3 -> t4) -> t -> (t1 -> t2) -> (t2 -> t3) -> t1 -> t4
19:40:13 <elliott> :t \c i o -> result (c i o) . argument o
19:40:13 <lambdabot> forall t a b (f :: * -> *) a1. (Functor f) => (t -> f a1 -> a -> b) -> t -> f a1 -> (a1 -> a) -> f b
19:40:15 <elliott> excellent
19:40:43 <elliott> : let nest k i o = result (k i o) . argument o; inEndo f = f const Endo appEndo in inEndo nest
19:40:45 <elliott> :t let nest k i o = result (k i o) . argument o; inEndo f = f const Endo appEndo in inEndo nest
19:40:46 <lambdabot> forall a a1. ((a1 -> a1) -> a -> a) -> Endo a1 -> Endo a
19:40:51 <elliott> oerjan: that's really nice, thank you!
19:41:39 <elliott> (those argument and result combinators are from http://conal.net/blog/posts/semantic-editor-combinators)
19:42:48 <oerjan> yeah i remember
19:44:06 <elliott> oerjan: i was inspired by seeing (~>) defined later based on that and Conal liking it, as (i ~> o) f = i . f . o
19:44:22 <elliott> nothing that can't be extended to more arguments is elegant enough! :p
19:44:48 <elliott> :t let nest k o = result (k o) . argument o; inEndo f = f (const Endo) appEndo in inEndo nest
19:44:49 <lambdabot> forall a a1. ((a -> a) -> a1 -> a1) -> Endo a -> Endo a1
19:44:59 <elliott> nicer still
19:45:28 <elliott> :t let nest k o = result (k o) . argument o; (i ~> o) f = f (const i) o; inEndo = Endo ~> appEndo in inEndo (nest . nest)
19:45:28 <lambdabot> forall a a1. ((a -> a) -> (a -> a) -> a1 -> a1) -> Endo a -> Endo a -> Endo a1
19:45:35 <elliott> oerjan: methinks that's as good as it gets :P
19:45:37 <elliott> oh ugh
19:45:41 <elliott> oerjan: what's with the monomorphism there?
19:46:05 <oerjan> hm?
19:46:11 <elliott> <elliott> :t let nest k o = result (k o) . argument o; (i ~> o) f = f (const i) o; inEndo = Endo ~> appEndo in inEndo (nest . nest)
19:46:11 <elliott> <lambdabot> forall a a1. ((a -> a) -> (a -> a) -> a1 -> a1) -> Endo a -> Endo a -> Endo a1
19:46:12 <elliott> why not
19:46:20 <elliott> ((a -> a) -> (b -> b) -> (c -> c)) -> Endo a -> Endo b -> Endo c
19:46:49 <elliott> @pl \k o -> (k o .) . (. o)
19:46:49 <lambdabot> (`ap` flip (.)) . (((.) . (.)) .)
19:46:53 <elliott> heh
19:48:54 <oerjan> :t appEndo
19:48:55 <lambdabot> forall a. Endo a -> a -> a
19:49:10 <elliott> it's just the newtype field
19:49:20 -!- ais523 has joined.
19:49:22 <elliott> <elliott> :t let nest k o = result (k o) . argument o; (i ~> o) f = f (const i) o; inEndo = Endo ~> appEndo in nest
19:49:25 <elliott> oops
19:49:27 <elliott> :t let nest k o = result (k o) . argument o; (i ~> o) f = f (const i) o; inEndo = Endo ~> appEndo in nest
19:49:28 <lambdabot> forall (f :: * -> *) a a1 b. (Functor f) => (f a -> a1 -> b) -> f a -> (a -> a1) -> f b
19:49:37 <Ngevd> Hello, ais523
19:49:44 <elliott> oerjan: i think nest's recursion might be restricting all the arguments of the result to have the same type, sort of thing
19:49:56 <elliott> argh lambdabot's (.) isn't helping
19:49:59 <elliott> ais523: hi, graue replied
19:50:45 <oerjan> elliott: yes, of course, because they all have o applied
19:51:57 <oerjan> o is passed as an argument, thus monomorphic. i suppose you could sprinkle some rank2
19:52:49 -!- Zuu has joined.
19:53:36 <elliott> oerjan: oh, ofc
19:53:42 <elliott> :t let nest k o = result (k o) P.. argument o; (i ~> o) f = f (const i) o; inEndo = Endo ~> appEndo in nest
19:53:43 <lambdabot> Couldn't find qualified module.
19:53:46 <elliott> :t let nest k o = result (k o) Prelude.. argument o; (i ~> o) f = f (const i) o; inEndo = Endo ~> appEndo in nest
19:53:47 <lambdabot> forall (f :: * -> *) a a1 b. (Functor f) => (f a -> a1 -> b) -> f a -> (a -> a1) -> f b
19:53:57 <elliott> :t let nest k o = (k o Prelude..) Prelude.. (Prelude.. o); (i ~> o) f = f (const i) o; inEndo = Endo ~> appEndo in nest
19:53:57 <lambdabot> forall a b c c1. ((a -> b) -> c -> c1) -> (a -> b) -> (b -> c) -> a -> c1
19:54:23 <ais523> elliott: what was the reply?
19:54:23 <lambdabot> ais523: You have 1 new message. '/msg lambdabot @messages' to read it.
19:54:56 <elliott> ais523: he'll see what he can do, but might not have time until the weekend or after
19:55:05 <ais523> oh, looks like he deleted exactly one spam page
19:55:08 <elliott> yeah :P
19:55:15 <elliott> doing his bit! :)
19:55:36 <elliott> so, I conclude that anyone who has sent email to Graue in, like, a year, has sent email to /dev/null
19:55:55 <elliott> ais523: I did mention AbuseFilter in my email
19:55:58 <elliott> you're welcome
19:56:08 <elliott> i was considering asking him to update MW too :P
19:56:44 <elliott> oerjan: hindley-milner sucks, restricting monomorphism like that :)
19:57:06 <ais523> elliott: you have to update MW to install AbuseFilter
19:57:15 <ais523> did you mention spam blacklist, and upgrading the CAPTCHA, too?
19:57:29 <elliott> oerjan: unfortunately I'd need a typeclass or something to fix it
19:57:44 <elliott> ais523: "It would be greatly appreciated if you could tighten the CAPTCHA, or
19:57:44 <elliott> install an extension like AbuseFilter to allow the admins to blacklist
19:57:44 <elliott> problem domains."
19:57:47 <elliott> --me
19:57:52 <elliott> (elliott)
19:59:05 <ais523> AbuseFilter does much more than blacklisting domains
19:59:09 <ais523> you can, say, blacklist regexps
19:59:21 <ais523> or even, say, forbid a user's first edit being to their own user page
19:59:23 <ais523> I'd love to do that
19:59:34 <elliott> ais523: yeah, but I (a) was annoyed enough about the spam to be writing it quickly and (b) didn't feel like writing marketing copy :P
19:59:50 <ais523> (and just throw up a message saying "editing your own user page on your first edit is a common behaviour for spambots, please edit a different page first, such as the sandbox, to prove you're human")
20:01:00 * elliott considers changing "Why not join us on IRC?" to "Why not join us in the matrix of solidity?"
20:01:05 <elliott> maybe once Graue isn't looking :D
20:08:28 <ais523> why do you consider /IRC/ to be the matrix of solidity?
20:08:33 <ais523> `pastlog matrix of solidity
20:09:08 <HackEgo> No output.
20:09:12 <elliott> `quote matrix of solidity
20:09:16 <HackEgo> 299) <treederwright> enjoy being locked in your matrix of solidity
20:09:20 <elliott> ais523: that's the origin of it, after all
20:09:34 <ais523> elliott: indeed
20:09:38 <elliott> we, on IRC, were closed-minded; treederwright enlightened us as to the matrix of solidity we are locked within
20:09:47 <ais523> I can't believe that "matrix of solidity" never came up in the logs before now, though
20:09:53 <ais523> so, I conclude that pastlog has broken again
20:09:57 <elliott> most likely
20:09:58 <ais523> `pastlog solidity
20:10:24 <HackEgo> 2011-11-10.txt:22:50:04: <Phantom_Hoover> `quote matrix of solidity
20:10:38 <elliott> @src replicateM
20:10:38 <lambdabot> replicateM n x = sequence (replicate n x)
20:10:40 <ais523> hmm
20:10:40 <elliott> @src replicateM_
20:10:40 <lambdabot> replicateM_ n x = sequence_ (replicate n x)
20:10:44 <elliott> @src sequence
20:10:44 <lambdabot> sequence [] = return []
20:10:44 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
20:10:44 <lambdabot> -- OR: sequence = foldr (liftM2 (:)) (return [])
20:10:45 <elliott> @src sequence_
20:10:45 <lambdabot> sequence_ ms = foldr (>>) (return ()) ms
20:18:19 -!- augur has joined.
20:19:11 <oerjan> <ais523> so, I conclude that pastlog has broken again <-- i wonder if this is the same bug that sometimes causes `welcome to give only the nick: part
20:19:20 -!- Ngevd has quit (Ping timeout: 252 seconds).
20:19:34 <ais523> oerjan: hmm
20:19:47 <ais523> `welcome clog cmeme glogbot glogbackup
20:19:50 <HackEgo> clog: cmeme: glogbot: glogbackup: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
20:20:13 <oerjan> ais523: i _think_ it usually happens when HackEgo is just starting up after a long break
20:20:37 <oerjan> like something is timing out, maybe
20:20:52 <ais523> `pastlog matrix of solidity
20:21:01 <HackEgo> 2011-04-01.txt:23:42:21: * iconmaster is enjoying being locked in his matrix of solidity.
20:21:29 <ais523> `pastlog matrix of solidity
20:21:34 <ais523> oerjan: hmm, perhaps
20:21:38 <HackEgo> 2011-05-18.txt:20:14:43: <ais523_> also, I didn't know that the matrix of solidity thing was on the main page
20:21:49 <ais523> could just be a problem with trying to load all the logs into cache
20:21:54 <elliott> HackEgo is really slow
20:22:00 <elliott> so timing out after "waking up" sounds likely to me
20:22:18 <elliott> I'm not sure it would give partial output, though, and I /rewrote/ that piece of code
20:22:24 <elliott> `run echo -n hi; sleep 10000
20:22:26 <elliott> `run echo bye; sleep 10000
20:22:57 <HackEgo> hi
20:23:01 <HackEgo> bye
20:23:15 <oerjan> elliott: for `welcome, which i wrote, it's probably to do with the use of @ and ? subprocesses?
20:23:33 <elliott> oerjan: perhaps, yes
20:24:28 -!- Ngevd has joined.
20:24:33 <Ngevd> Hello!
20:24:45 <Ngevd> Remember my vocab tester thing I did a while back?
20:24:52 <Ngevd> I've decided to give it more features
20:25:01 <Ngevd> Because I am mad
20:25:07 <oerjan> a fnobbly cromulent vocab tester
20:25:21 <Ngevd> `words latin
20:25:29 <Ngevd> `words --help
20:25:29 <HackEgo> Argument "latin" isn't numeric in int at /hackenv/bin/words line 141. \
20:25:33 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian \ default: --eng-1M \ \ options: \ -h, --help this help text
20:25:48 <Ngevd> `words --italian
20:25:52 <HackEgo> convalco
20:26:03 <Ngevd> `words 10 --italian
20:26:07 <HackEgo> fughe soltinsava disperai rimentissa imitargogne abbero perter sbendaleghe crimpleme scolora
20:26:36 <oerjan> lascianza sperate vogni chintrate
20:29:29 <Ngevd> How does System.Environment.getArgs behave?
20:29:54 <oerjan> Ngevd: it gives a list argument strings
20:29:57 <oerjan> *of
20:30:19 <oerjan> excluding program name
20:30:34 <oerjan> in IO, of course
20:31:05 <oerjan> :t System.Environment.getArgs
20:31:06 <lambdabot> IO [String]
20:31:08 <Ngevd> So, if I ran "latin_vocab military", what would it give me?
20:31:11 <elliott> oerjan: "of course" -- many people would see no problem with getArgs being pure :/
20:31:13 <Ngevd> [military]?
20:31:16 <elliott> well apart from the existence of withArgs
20:31:19 <elliott> Ngevd: ["military"]
20:31:28 <Ngevd> Yes
20:31:45 <oerjan> elliott: there's a function to change it, though :P
20:31:55 <kallisti> > foldr (+) 0 [1..5] :: Sym Int
20:31:56 <lambdabot> 15
20:31:58 <kallisti> I am sad face :(
20:32:09 <elliott> oerjan: <elliott> well apart from the existence of withArgs
20:32:28 <elliott> kallisti: "i sure do like how Sym reduces expressions automatically" --kallisti
20:32:37 <oerjan> elliott: i cannot possibly read and write response simultaneously, duh
20:32:42 <elliott> oerjan: i do :)
20:32:57 <kallisti> elliott: obviously you should do exactly what I want in all situations.
20:33:01 <kallisti> er
20:33:04 <kallisti> s/you/it/
20:33:23 <oerjan> > foldr (+) 0 [1..5] :: Sym (Sym Int)
20:33:24 <lambdabot> 15
20:34:39 <kallisti> > foldr (+) 0 [1..5] :: Sym ((->) Int)
20:34:40 <lambdabot> `(->) GHC.Types.Int' is not applied to enough type arguments
20:34:40 <lambdabot> The first arg...
20:36:01 <elliott> :t runWriter
20:36:02 <lambdabot> forall w a. Writer w a -> (a, w)
20:40:37 -!- GreaseMonkey has joined.
20:41:50 <elliott> @src callCC
20:41:50 <lambdabot> Source not found. I feel much better now.
20:41:52 <elliott> grr
20:42:14 <oerjan> elliott: btw chu-carroll over at goodmath/badmath is doing a series on basic category theory
20:42:29 <elliott> oh cool
20:42:29 <oerjan> he just got to cartesian closed categories
20:42:35 <elliott> why didn't you tell me earlier :P
20:42:44 <elliott> i'll check it out
20:42:58 <oerjan> because there was just a post reminding me
20:43:10 <elliott> @src callCC
20:43:10 <lambdabot> Source not found. I feel much better now.
20:43:10 <elliott> @src callCC
20:43:10 <lambdabot> Source not found. :(
20:43:10 <elliott> @src callCC
20:43:10 <lambdabot> Source not found. Just what do you think you're doing Dave?
20:43:13 <elliott> :(
20:43:23 <oerjan> :t callCC
20:43:24 <lambdabot> forall a (m :: * -> *) b. (MonadCont m) => ((a -> m b) -> m a) -> m a
20:43:32 <oerjan> it's a method
20:44:18 <elliott> @src Cont callCC
20:44:18 <lambdabot> callCC f = Cont $ \c -> runCont (f (\a -> Cont $ \_ -> c a)) c
20:44:20 <elliott> thx
20:44:48 <oerjan> i wonder if they'll add writer and reader as methods like they're doing with state. oh hm reader would just be asks, wouldn't it
20:44:52 <oerjan> :t reader
20:44:52 <lambdabot> forall r a. (r -> a) -> Reader r a
20:44:56 <oerjan> :t asks
20:44:57 <lambdabot> forall r a (m :: * -> *). (MonadReader r m) => (r -> a) -> m a
20:45:17 <oerjan> :t writer
20:45:18 <lambdabot> forall a w. (a, w) -> Writer w a
20:45:28 <elliott> > callCC ($ [42,43]) >> callCC ($ [99])
20:45:29 <lambdabot> No instance for (GHC.Show.Show (m [t]))
20:45:29 <lambdabot> arising from a use of `M43411467...
20:45:34 <elliott> > runCont (callCC ($ [42,43]) >> callCC ($ [99])) id
20:45:35 <lambdabot> [99]
20:47:01 <oerjan> :t cont
20:47:02 <lambdabot> forall a r. ((a -> r) -> r) -> Cont r a
20:47:27 <oerjan> hm would that even make sense as a MonadCont method
20:47:36 <oerjan> :t ContT
20:47:37 <lambdabot> forall a (m :: * -> *) r. ((a -> m r) -> m r) -> ContT r m a
20:48:42 <oerjan> if you have a -> m r, and (a -> r) -> r, can you construct an m r
20:49:19 <oerjan> probably not
20:49:27 <elliott> oerjan: with what on m?
20:49:30 <elliott> MonadFix? if so, probably yes
20:49:35 <elliott> Monad? no
20:49:39 <Ngevd> How do you put breakpoints in ghci
20:49:49 <Ngevd> For debugging purposes
20:49:56 <oerjan> elliott: i was assuming it should be something generalizing cont
20:50:07 <elliott> oerjan: oh so MonadCont m?
20:50:29 <elliott> oh, I see
20:50:33 <elliott> you're asking whether cont could go in MonadCont
20:50:34 <oerjan> elliott: not quite
20:50:37 <oerjan> yeah
20:50:55 <elliott> oerjan: couldn't you just fix r = m r, and then run it?
20:50:57 <oerjan> all of reader, writer and state could go in the respective classes (and state will/does)
20:51:06 <elliott> and wire up the continuation to escape the outer continuation
20:51:13 <elliott> Cont is really special though
20:51:20 <elliott> like, most monad transformers commute
20:51:25 <elliott> most of them can lift callback operations in the base monad
20:51:31 <elliott> ContT can't do anything like that
20:51:44 <elliott> in a sense because it's the most general monad possible
20:51:57 <elliott> so you don't get any convenient extra laws :P
20:52:21 <shachaf> ContT is the most general monad possible?
20:52:23 <oerjan> perhaps that's sort of why... you can lift reader, writer and state because they are essentially commuting extensions
20:52:30 <elliott> shachaf: well you can build any monad with Cont
20:52:36 <shachaf> ContT = Cont anyway.
20:52:38 <elliott> http://blog.sigfpe.com/2008/12/mother-of-all-monads.html and so on
20:52:47 <shachaf> Yes.
20:52:52 <elliott> so ContT sort of gives you the raw monad structure and doesn't let you assume anything
20:52:52 <shachaf> But what about generalizations of Cont?
20:52:55 <shachaf> WHAT DO YOU SAY TO THOSE?
20:53:01 <elliott> shachaf: :'(
20:53:09 <elliott> <oerjan> perhaps that's sort of why... you can lift reader, writer and state because they are essentially commuting extensions
20:53:15 <elliott> oerjan: this is why i like the composable effects model
20:53:36 <elliott> it even supports Cont
20:53:45 <oerjan> huh
20:53:55 <shachaf> http://hackage.haskell.org/packages/archive/kan-extensions/2.1/doc/html/Data-Functor-KanExtension.html
20:53:56 <elliott> http://math.andrej.com/2010/09/27/programming-with-effects-ii-introducing-eff/
20:54:01 <elliott> (http://hackage.haskell.org/package/effects is a haskell impl)
20:54:07 <elliott> oerjan: hmm ListT has problems too
20:54:20 <elliott> I guess anything sufficiently control-flowy makes monad transformers go to hell
20:55:24 <elliott> shachaf: "compose" as a type variable? Seriously?
20:55:30 -!- oerjan has set topic: The real haskell overflow channel | TODO: spam blacklist | http://codu.org/logs/_esoteric/.
20:55:41 <shachaf> elliott: Why not?
20:55:52 <elliott> shachaf: It's so long!
20:55:58 <shachaf> Oh, you've been talking about Cont for a while in here.
20:56:02 * shachaf considers reading the backlog.
20:56:03 * shachaf nah
20:56:24 <elliott> shachaf: It's about whether you can put cont in MonadCont.
20:57:09 <oerjan> <elliott> I guess anything sufficiently control-flowy makes monad transformers go to hell <-- what about ErrorT
20:57:27 <elliott> shachaf: You should read that post on eff if you haven't; we finally have a decent alternatiev to monad transformers.
20:57:33 <elliott> oerjan: good question
20:57:41 <elliott> oerjan: people always put ErrorT just above IO or Identity, I forget why
20:57:52 <elliott> *alternative
20:58:01 <shachaf> elliott: Ugh. Added to the list of tabs.
20:58:48 <elliott> shachaf: You just can't handle the SNAZZ.
20:59:31 <shachaf> So much snazz.
21:15:07 <elliott> Gregor: Ping
21:19:57 -!- iconmaster has joined.
21:23:35 -!- azaq23 has quit (Quit: Leaving.).
21:25:16 -!- PiRSquared17 has joined.
21:27:43 <Gregor> elliott: Ponk
21:28:41 <PiRSquared17> pink
21:28:51 <oerjan> yellow polka-dot
21:29:40 <elliott> :t \str strList -> elem (map toLower str) $ convertToLower $ words strList
21:29:41 <lambdabot> Not in scope: `convertToLower'
21:29:48 <elliott> :t \str strList -> elem (map toLower str) $ id $ words strList
21:29:49 <lambdabot> [Char] -> String -> Bool
21:31:15 <elliott> :t any
21:31:16 <lambdabot> forall a. (a -> Bool) -> [a] -> Bool
21:31:53 <oerjan> <fizzie> Hussel-bussel. Anyway. <-- hussuru bussuru
21:33:14 <elliott> :t elem
21:33:15 <lambdabot> forall a. (Eq a) => a -> [a] -> Bool
21:33:31 -!- cswords has joined.
21:33:40 -!- cswords has quit (Read error: Connection reset by peer).
21:34:57 <oerjan> the ords of csw
21:36:50 <oerjan> Ngevd: so how often do you eat three tonnes of jarlsberg?
21:37:55 -!- rapido has joined.
21:38:27 <elliott> Gregor: Oh, right, you replied :P
21:38:34 <Ngevd> oerjan, so /that's/ why that sounded familiar
21:38:37 <elliott> Gregor: How does the log formatter know when someone leaves a channel; that requires unbounded lookback in the logs
21:40:33 <rapido> for almost 2 years, i'm obsessed with uniquely represented data structures
21:41:26 <elliott> rapido: hi
21:41:46 <rapido> elliott: hey, it's been a while
21:41:53 <elliott> indeed
21:42:02 <rapido> obsessions are good
21:42:18 <rapido> no?
21:42:48 <oerjan> no, obsessions are evil, you must dedicate your life to eradicate them all!
21:42:56 <oerjan> *ing
21:45:27 <elliott> the only good obsession is @
21:46:12 <olsner> hmm, there was something I was thinking about earlier that I thought belonged in #esoteric
21:46:18 <oerjan> ^ul ((@ )S:^):^
21:46:18 <fungot> @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ...too much output!
21:46:18 <rapido> i must admit - i want to pick your esoteric brains
21:46:21 <olsner> but I guess we'll never know
21:46:28 <kallisti> s/@/@ and Stack Overflow/
21:46:41 <rapido> anyone familiar with uniquely represented data structures?
21:47:06 <elliott> rapido: I take it you mean structures for which syntactic equality is semantic equality?
21:47:13 <oerjan> future log readers will wonder why that previous fungot line exceeds the irc length limit. of course it's really just because @ is that awesome.
21:47:13 <fungot> oerjan: as a veteran of the game. then i'll put a mean game of blackjack.
21:47:14 <elliott> By "I take it", I mean "I am going to wildly guess".
21:47:33 <elliott> oerjan: I think fungot might be conservative enough about the limits to prevent that :P
21:47:34 <fungot> elliott: and just what your porkhollow's fat ass needs.
21:47:45 <elliott> fungot: I love you too.
21:47:45 <fungot> elliott: his birthday is in a few minutes. wow he is so cool. two more large gizmos. it was once the island
21:48:19 <rapido> elliott: nah, its about unique representation (=layout in memory). But hey, who doesn't want to be unique?
21:48:40 <elliott> rapido: Unique howso? "Nobody else has thought of it"?
21:49:55 <rapido> example: http://www.cs.cmu.edu/~dgolovin/papers/btreap.pdf
21:50:09 <fizzie> ^bf ,>,[.<.>]! @
21:50:09 <fungot> @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ...
21:50:11 <oerjan> elliott: sure, as long as the name is no longer than 3 characters
21:50:22 <fizzie> Mhm, the ^ul lines are longer.
21:50:26 <oerjan> er, 2
21:50:52 <fizzie> Anyway, it doesn't go full 512-hog.
21:50:54 <rapido> you don't want others to know that you have been deleting the sexist remark
21:51:20 <elliott> rapido: "Uniquely
21:51:20 <elliott> represented data structures represent each logical state with a unique machine state.
21:51:20 <elliott> Such data structures are strongly history-independent; they reveal no information
21:51:20 <elliott> about the historical sequence of operations that led to the current logical state. For
21:51:20 <elliott> example, a uniquely represented file-system would support the deletion of a file in
21:51:20 <elliott> a way that, in a strong information-theoretic sense, provably removes all evidence
21:51:22 <elliott> that the file ever existed."
21:51:27 <elliott> rapido: OK, that _is_ what I said, then.
21:51:39 <elliott> If syntactic equality is semantic equality, every equivalent state has a single representation.
21:51:57 <elliott> Intensional equality, if you'd prefer.
21:51:58 <fizzie> The ^ul might go quite close, though.
21:52:48 <rapido> "Intensional equality" - that's a cool definition
21:53:31 <oerjan> ^ul ((0123456789)S:^):^
21:53:31 <fungot> 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 ...too much output!
21:53:48 * elliott likes such definitions too, but for reasons of mathematical elegance more than information-hiding.
21:53:51 <rapido> elliott: it's hard to achieve strong history-independency
21:54:29 <elliott> I don't really care about the actual bits and bytes representation so long as the constructor tree is the same... but it's the same thing from a different level of abstraction, and the only difference will be the exact values of pointers.
21:54:29 <oerjan> 344
21:54:58 <rapido> but pondering on it for two years i finally think i have a good result - but it feels hacky
21:55:05 <kallisti> I would think Haskell would be a good playground for creating such structures.
21:55:17 <oerjan> > 324/9
21:55:18 <lambdabot> 36.0
21:55:25 <elliott> kallisti: Not if you care about the exact in-memory representation :P
21:55:50 <elliott> rapido: The simplest way to achieve history-dependency would be to deconstruct and reconstruct the structure on every operation, of course.
21:55:51 <kallisti> that's implementation dependent anyway...
21:56:12 <elliott> kallisti: Yes, in Haskell.
21:56:17 <elliott> Circular reasoning, man,.
21:56:40 <kallisti> elliott: well that makes sense because circular reasoning is circular.
21:57:10 <kallisti> > (:[])>=>(:[])>=>(:[]) $ "hi"
21:57:11 <lambdabot> ["hi"]
21:57:12 <elliott> Actually that's begging the question, I think. In the formal sense.
21:57:30 <kallisti> beggining the question is circular reasoning because it begs the question though. obviously.
21:57:35 <rapido> anyone familiar with cartesian trees (treaps?)
21:58:05 <kallisti> I am now.
21:58:25 <elliott> I have *heard* the term treap!
21:58:52 <rapido> they have the unique property that they have a unique representation
21:59:13 -!- Jafet has quit (Quit: Leaving.).
21:59:14 <rapido> for a fixed set of (x,y) pairs
22:00:59 <rapido> fixed in the sense that there is one unique cartesian tree for a set of (x,y) pairs
22:01:08 <rapido> am i boring you?
22:01:31 <elliott> totally. (no)
22:02:04 <kallisti> so it's kind of like a binary search tree except that it's also heap and it's sorted by position in the original sequence instead of by an ordering over the elements.
22:02:15 <kallisti> >_>?
22:02:22 -!- lax has joined.
22:02:24 <Ngevd> :t (>+>)
22:02:25 <lambdabot> Not in scope: `>+>'
22:02:27 <elliott> `welcome lax
22:02:29 <Ngevd> :t (>_>)
22:02:29 <lambdabot> parse error on input `)'
22:02:34 <HackEgo> lax: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
22:02:53 <lax> any friend hereeeeeeee
22:02:55 <lax> im ne win thisssssssssss
22:02:58 <lax> inthis
22:03:00 <elliott> yeah
22:03:02 <elliott> i'm friend
22:03:05 <elliott> sup
22:03:16 <lax> ohh thanksss
22:03:20 <lax> i was tryign this page
22:03:24 <lax> for hoursss
22:03:33 <lax> and finally i did it
22:03:34 * kallisti giggles gleefully.
22:03:37 <lax> thanks
22:03:39 <elliott> congrats
22:03:54 <lax> so u are chatting here?
22:03:59 <Ngevd> Yes
22:04:08 <Ngevd> Supposedly about esoteric programming languages
22:04:18 <lax> elliottttttttttttt
22:04:22 <lax> dotn leave meeeeeeee
22:04:26 <elliott> ais523: [[User:KuzyFueesi‎]]
22:04:29 <elliott> lax: hi
22:04:37 <lax> ahhh i tough u gone
22:04:41 <elliott> i never leave
22:04:43 <elliott> i'm actually a robot
22:04:48 <lax> dont go
22:04:58 <lax> ive just have some minutes here
22:05:05 <lax> nice to meet u here
22:05:08 <elliott> hello
22:05:15 <lax> im here
22:05:18 <elliott> me too
22:05:24 <Ngevd> I'm not
22:05:26 <kallisti> I'm here but not there.
22:05:29 <kallisti> whch is also here
22:05:30 <kallisti> hi.
22:05:43 <Ngevd> Hang on, one important question, lax. Do you live in a place called Hexham?
22:05:57 <lax> no
22:06:03 <lax> why
22:06:08 <Ngevd> Two of us here do
22:06:17 <elliott> lax: helsinki then
22:06:30 <lax> i cant get what she says
22:06:38 <kallisti> lax: anywhere in Scandinavia perhaps?
22:06:46 <elliott> is Ngevd female or am i
22:06:52 <elliott> i'm not even sure myself any more :(
22:07:06 <lax> noooo
22:07:13 <elliott> :'(
22:07:15 <fizzie> elliott: Everyone's always from either Hexinki or Helsham.
22:07:31 <lax> im from peru
22:07:35 <rapido> elliott: what about ternary logic? you don't have to be female or male
22:07:38 <lax> south america
22:07:40 <elliott> peru is right next to finland i think
22:07:44 <kallisti> lol
22:07:49 <elliott> rapido: I didn't imply that :P
22:07:52 <lax> noooo
22:08:00 <oerjan> perussia
22:08:05 <fizzie> elliott: mooz married someone from Peru, so in that sense at least.
22:08:11 <elliott> fizzie: Was it... lax?
22:08:24 <lax> my country
22:08:27 <fizzie> elliott: Not as far as I know, but I don't know much.
22:08:33 <Ngevd> Who's mooz?
22:08:42 <kallisti> lax: are you a fan of Immortal Technique? :>
22:08:47 <fizzie> Ngevd: Just this one guy, you know?
22:08:51 <lax> elliot?
22:08:54 <elliott> lax: hi
22:08:56 <elliott> i'm still here
22:09:02 <elliott> don't worry, i'll keep talking at least every 30 seconds so you know i'm here
22:09:05 <lax> who is mooz
22:09:20 <Ngevd> lax :Just this one guy, you know?
22:09:34 <lax> im want to talk to eliott
22:09:36 <lax> not u
22:09:43 <Ngevd> :(
22:09:45 <Ngevd> I am sad
22:09:54 <elliott> lax: good choice, Ngevd sucks
22:10:01 <kallisti> "Because a Cartesian tree is a binary tree, it is natural to use it as a binary search tree for an ordered sequence of values. " wow I'm genius
22:10:09 <elliott> lax: not as bad as kallisti tho
22:10:25 <lax> well i have to go eliott
22:10:29 <lax> nice to meet u here
22:10:34 <lax> thanks for u time
22:10:36 <kallisti> `words 50
22:10:39 <rapido> sometime i wonder if elliott is male, female and bimale - typing really fast at separate keyboards
22:10:40 <lax> u seem to be nice
22:10:44 <HackEgo> cont attambennisco kra attrepla alopath ventanc mahata publi polar casecr suffer lough poplicat dinge lat piry mire ant koo elved poblynwan langorzah jump bad same aurvadher grimen bie mile amuant spansum woolgtenie portung suff pula colli pat pulsifer pohy prot deschl nic hesitio auerly slro ttr invoke idicla hot rage
22:10:49 <fizzie> Ngevd: http://sbp.so/qsort (Also who on earth did that archive-page? Someone here?)
22:11:04 <elliott> rapido: as has been repeatedly established, i'm an amorphous, non-corporeal blob that lives on the internet
22:11:09 <lax> God bless u aliott
22:11:13 <elliott> good bye lax
22:11:15 <elliott> come again sometime!
22:11:15 <lax> take care
22:11:20 <kallisti> god bless aliott america
22:11:26 <lax> i dotn know how to use that chatt
22:11:31 <elliott> me neither
22:11:32 <lax> lol
22:11:35 <elliott> i just type words and they come out on the screen
22:11:37 <lax> but i have email
22:11:43 <elliott> oh good, what's your email
22:11:55 <lax> nellcita@hotmail.com
22:12:05 <elliott> have fun!!
22:12:07 <lax> thats the mail i use to chatt or facebook
22:12:09 <lax> ok
22:12:13 <lax> same there
22:12:34 <rapido> do not - i repeat - do not reveal your email! you will be spammed
22:12:37 <Ngevd> fizzie, so that's mooz
22:13:02 <lax> ohhhh eliott
22:13:05 <lax> u wotn do that
22:13:08 <elliott> rapido: you'll get spammed even if you don't :P
22:13:10 <elliott> lax: don't worry
22:13:13 <elliott> i'll protect you from the spambots
22:13:17 <elliott> it is... my duty
22:13:19 -!- derdon has joined.
22:13:20 <lax> ohh thanks
22:13:24 <lax> loves from peru
22:13:29 <lax> and wellcome
22:13:44 <kallisti> @tell monqy hi
22:13:44 <lambdabot> Consider it noted.
22:13:46 <fizzie> Ngevd: Indeed. He even was on-channel in 2003 or thereabouts.
22:13:56 <Ngevd> fizzie, Before my time then.
22:14:03 -!- lax has left.
22:14:06 <fizzie> elliott: You're such a... what's that term... "playa"?
22:14:06 <elliott> i have no idea what just happened
22:14:11 <rapido> you protect me from spambots? where do i sign?
22:14:15 <Ngevd> 2003, I was... using computers to write as many roman numerals as I could
22:14:26 <elliott> rapido: sorry, by invite only
22:14:58 <elliott> fizzie: http://upload.wikimedia.org/wikipedia/commons/2/26/Kluft-photo-Black-Rock-Desert-Aug-2005-Img_5081.jpg <-- me
22:15:02 <kallisti> elliott: I was loling so hard
22:15:07 <kallisti> through that conversation
22:15:22 <oerjan> Ngevd: clearly a job for INTERCAL
22:17:58 <elliott> fizzie: How does that syntax-highlighting work, anyway?
22:18:04 <elliott> Oh, it's manual.
22:18:04 <kallisti> http://en.wikipedia.org/wiki/Mu_(lost_continent)
22:18:07 <kallisti> huh. cool
22:18:37 <elliott> GenrePseudoscience
22:20:38 <rapido> manual syntax highlighting: *do* it
22:20:54 <rapido> or do *it*
22:21:02 <rapido> or just do it
22:21:39 -!- Ngevd has quit (Quit: Taneb cancelled playing Dwarf Fortress: Needs sleep).
22:21:48 <PiRSquared17> elliott: http://en.wikipedia.org/wiki/User:Ikluft is you?
22:21:55 <oerjan> do it
22:22:01 <elliott> PiRSquared17: wut
22:22:04 <elliott> PiRSquared17: no, why would it be?
22:22:13 <PiRSquared17> http://upload.wikimedia.org/wikipedia/commons/2/26/Kluft-photo-Black-Rock-Desert-Aug-2005-Img_5081.jpg <-- me
22:22:18 <PiRSquared17> ...
22:22:18 <elliott> oh
22:22:21 <elliott> <fizzie> elliott: You're such a... what's that term... "playa"?
22:22:23 <elliott> it's a picture of a playa
22:22:28 <PiRSquared17> lol
22:22:35 <oerjan> PiRSquared17: finnmark finnmark finnmark finnmark finnmark finnmark
22:22:41 <PiRSquared17> FINNMARK
22:23:00 <elliott> finnmark
22:23:05 <elliott> Gregor: :(
22:23:44 <elliott> ais523: wiki spam influx
22:24:51 <elliott> oh dear, i think my lightbulb is about to break
22:25:14 -!- rapido has quit (Quit: rapido).
22:25:16 <oerjan> are there enough elliotts to change it?
22:26:10 <elliott> I need @
22:27:14 <ais523> elliott: wiki's being slow loading
22:31:49 <ais523> OK, and deleted
22:32:04 <ais523> incidentally, people who aren't using a monospace font, how does your client kern uTu?
22:32:20 <ais523> it looks pretty weird on mine, the second u overlaps the bottom of the T, bu the first u doesn't
22:34:04 <elliott> same here, but I'm pretty sure that's correct
22:34:16 <elliott> or at least, T after u is what's incorrect :)
22:34:54 <kallisti> elliott: hi I'm reading "On computable numbers with an application to the entscheidungsproblem" by Alan Turing.
22:34:54 <ais523> arguably, that asymmetrical kerning is appropriate for camelCase
22:34:58 * kallisti getting his learn on.
22:37:30 <shachaf> kallisti: Why would you read about computable numbers?
22:37:37 <shachaf> Practically all numbers are uncomputable.
22:38:11 <oerjan> shachaf: so he can entscheid properly, duh
22:39:28 <oerjan> `addquote <Phantom_Hoover> There.... is a box of Gardasil next to the butter in my fridge. <Phantom_Hoover> At least my sandwich will be immune to cervical cancer *and* genital warts, I suppose.
22:39:31 <HackEgo> 795) <Phantom_Hoover> There.... is a box of Gardasil next to the butter in my fridge. <Phantom_Hoover> At least my sandwich will be immune to cervical cancer *and* genital warts, I suppose.
22:40:13 <ais523> OK, that is a good quote
22:40:15 <ais523> `quote
22:40:17 <ais523> `quote
22:40:18 <ais523> `quote
22:40:20 <ais523> `quote
22:40:21 <ais523> `quote
22:40:27 <HackEgo> 356) <tswett> Grr. Why does it exist? Why can't I kill it?
22:40:29 <HackEgo> 569) <fungot> elliott__: my fnord into normal life was a painful and difficult process. [...]
22:40:32 <HackEgo> 413) <oklopol> so about jacuzzis, do they usually have a way to make it it not heat but freeze the water?
22:40:54 <ais523> 413 is the best of those three
22:40:57 <iconmaster> heh result 413
22:40:57 <lambdabot> iconmaster: You have 1 new message. '/msg lambdabot @messages' to read it.
22:40:57 <ais523> but the other two are decent
22:41:05 <ais523> still waiting on two more
22:41:21 <HackEgo> 747) <pikhq_> Gregor is actually a rare species of mangoat <oerjan> the fashion sense comes from the mango part
22:41:21 <HackEgo> 45) <Aftran> It looks like my hairs are too fat. Can you help me split them?
22:41:34 <ais523> elliott: 45?
22:41:40 <oerjan> hey that's a classic!
22:41:54 <oerjan> gives such a nostalgic feeling
22:41:57 <ais523> is it a /good/ classic?
22:41:58 <elliott> indeed
22:42:04 <elliott> 747 is fairly lame
22:42:15 * oerjan swats elliott -----###
22:42:20 <elliott> i knew that would happen
22:42:47 <oerjan> elliott the cassandra
22:42:48 <olsner> I think I saw the mangoat quote live
22:42:53 <kallisti> shachaf: sorry, as a COMPUTER science major I'm only interesting in the COMPUTERable ones.
22:43:03 <ais523> elliott: indeed, but it's one of oerjan's better puns
22:43:05 <kallisti> even though that's "practically none" of them.
22:43:06 <ais523> I didn't see it coming
22:43:13 <elliott> `delquote 747
22:43:17 <HackEgo> ​*poof* <pikhq_> Gregor is actually a rare species of mangoat <oerjan> the fashion sense comes from the mango part
22:43:18 <elliott> it's just not as funny as the others sory
22:43:29 <elliott> `quote
22:43:29 <elliott> `quote
22:43:30 <elliott> `quote
22:43:30 <elliott> `quote
22:43:30 <oerjan> WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
22:43:31 <elliott> `quote
22:43:40 <HackEgo> 309) <fungot> oerjan: are you in an aware state when the only hammer you have is for variable assignation and blocks
22:43:44 <HackEgo> 641) <fungot> fizzie: it doesn't *use* raw cgi. to my deep fnord i'm only fnord of the job description. it's badly fnord also.
22:44:11 <elliott> so i just this second realised what "fungot" means
22:44:11 <fungot> elliott: in a good way though, so it's the left-right eye. you say yeah, but hang it on your wall. literally.
22:44:27 <oerjan> elliott: wait, for the first time?
22:44:34 <elliott> yes, unless i knew and then forgot
22:44:50 <HackEgo> 37) <Dylan> kaelis: yes kaelis, but however will get the horses to wear knickers?
22:44:50 <HackEgo> 77) <Warrigal> It's not incest if you're third cousins!
22:44:51 <HackEgo> 133) <coppro> what's the data of? [...] <Sgeo> Locations in a now deceased game called Mutation <coppro> I have no problems with you being interested in online games <coppro> but the necrophilia is disturbing
22:44:53 <olsner> elliott: what does it mean?
22:45:14 <elliott> olsner: funge bot
22:45:21 <olsner> oh, right, I knew that
22:45:25 <elliott> `delquote 37
22:45:31 <HackEgo> ​*poof* <Dylan> kaelis: yes kaelis, but however will get the horses to wear knickers?
22:45:32 -!- zzo38 has joined.
22:45:32 <oerjan> hm apparently there are people named fungot
22:45:32 <fungot> oerjan: the stuff scattered about your room. you of course it was a nasty pair, but he had already been a mass grave. the grisly abomination for your birthday. a number of interests.
22:45:46 <fizzie> "Funge-98 Bot" is even the realname of eir Twitter account.
22:46:01 <elliott> fizzie: And the name of the git repo interface thing, IIRC. I just never... made the connection.
22:46:18 <ais523> elliott: oh, I'd known it was funge bot all along, and your sudden realisation made me doubt that
22:46:26 <ais523> do you know the etymology behind thutubot's name, btw?
22:46:40 -!- oklopol has joined.
22:46:42 <fizzie> elliott: It's because e's such a FUN guy it crowds out then FUNGy part.
22:46:58 <fizzie> s/then/the/
22:47:07 <elliott> ais523: let me think...
22:47:10 <elliott> thutu + bot?
22:47:13 <ais523> yep
22:47:14 * olsner follows fungot on twitter
22:47:14 <fungot> olsner: that is a winner's attitude, and there is no particularly good human translation for this concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear con
22:47:16 <elliott> gasp!!!
22:47:27 <zzo38> ?messages
22:47:28 <lambdabot> itidus21 said 13d 16h 2m 2s ago: welcome back
22:47:28 <lambdabot> itidus21 said 13d 16h 1m 10s ago: it was funny for me at the time since you were joining and leaving at a high rate. but the joke has expired
22:47:28 <lambdabot> oerjan said 10d 13h 1m 54s ago: btw, fmap' shows that T is also a contravariant functor in its first argument.
22:47:35 <zzo38> ?messages
22:47:36 <lambdabot> You don't have any new messages.
22:47:44 <zzo38> ?messages
22:47:44 <lambdabot> You don't have any new messages.
22:47:45 <fizzie> I need to restart that Twitter script one day.
22:48:07 <elliott> oerjan: haskell quiz of the day: can any data type be given both a valid Functor and a valid Contrafunctor instance?
22:48:18 <oerjan> zzo38: lambdabot is supposed to only show them once, but there's some weird resetting going on occasionally...
22:48:24 <elliott> this is one of those quizzes where I don't know the answer, and want to find out.
22:48:38 <olsner> its last tweet was twat in May, apparently
22:48:39 <oerjan> elliott: data T a = T hth
22:48:51 <olsner> indeed fizzie needs to restart the script
22:49:06 <oerjan> or even data T a b = T a
22:49:10 <fizzie> I could try if it has bitrotted away right now.
22:50:02 <elliott> oerjan: hmm... i think that might violate the laws when _|_ is involved
22:50:08 <elliott> at least, data T a = T isn't a monad if you count bottoms
22:51:37 <fizzie> It's possible Twitter's authentication API changed and broke it, and that's why I haven't restarted.
22:52:15 <elliott> fizzie: They're OAuth-only these days, I think.
22:52:18 <oerjan> elliott: who said anything about monad
22:52:27 <oerjan> fmap = id, simply
22:52:39 <oerjan> ok that doesn't quite type
22:52:49 <oerjan> fmap (T x) = T x
22:52:58 <oerjan> >_<
22:53:02 <oerjan> fmap _ (T x) = T x
22:53:22 <elliott> oerjan: well monads are functors, I was just giving an analogy...
22:53:31 <elliott> also, fmap = const unsafeCeoerce :P
22:53:33 <elliott> *Coerce
22:53:42 <oerjan> yeah that also works
22:54:15 <elliott> fsvo work
22:54:30 <oerjan> but to have a Functor, you just need that all appearances of the last parameter are in covariant, nonstrict positions afaict
22:54:40 <oerjan> and if there are none, it's trivial
22:55:04 <oerjan> and for Contrafunctor, probably the same but with contravariant
22:55:19 <elliott> oerjan: ok one that actually mentions a /and/ b on the RHS :P
22:55:25 <elliott> and no cheating by outsourcing to your existing T!
22:55:29 <oerjan> funny guy
22:55:33 <oerjan> well then i don't know
22:56:02 <elliott> join the club! (the club is mine)
22:56:27 * tswett joins elliott's club.
22:57:21 <tswett> Is there a stipend associated with this club?
22:57:31 <oerjan> i doubt there are any with simple ADTs, though
22:58:47 <elliott> tswett: 1,000,000 pounds per day or however much you can afford
22:58:58 <elliott> oerjan: i don't see how gadts would help
22:59:09 <tswett> I get paid however much I can afford?
22:59:49 <oerjan> elliott: well i imagined if there is some way to hide the type so it isn't exposed, analogous to show . read ...
23:00:12 <olsner> oh, fungot twat again! https://twitter.com/#!/fungot/status/154697756248776705
23:00:12 <fungot> olsner: that is a winner's attitude, and there is no particularly good human translation for this concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear con
23:00:29 <olsner> huh, that's the exact same thing it said last time
23:00:33 <olsner> fungot
23:00:33 <fungot> olsner: you really wish your side.
23:00:46 <elliott> fizzie: Will it tweet with its fungot dataset too? :p
23:00:46 <fungot> elliott: the one who got you killed him for it?
23:00:53 <tswett> I... don't think there's any practical limit to the amount of money I can afford to be paid.
23:01:28 <olsner> I think the way it works is that if you have lots of money you get lots of money, if you have no money you get no money
23:01:45 <tswett> I see.
23:01:49 <elliott> tswett: Oh, I was thinking of tithes.
23:01:56 <pikhq> Shame, too. I can afford to be paid any positive stipend.
23:01:59 <oerjan> like data T a b c = T (a -> c) (c -> b) but where you cannot actually get at the pieces
23:01:59 <elliott> I... er... congratulations, you have unlimited money!
23:02:20 <tswett> Excellent.
23:02:28 <elliott> oerjan: which pieces? c or (a,b)?
23:02:36 <oerjan> elliott: the fields
23:02:43 <oerjan> c
23:02:52 <elliott> oerjan: data T a b where T :: (a -> c) -> (c -> b) -> T a b?
23:02:52 -!- iconmaster has quit (Ping timeout: 248 seconds).
23:02:54 <fizzie> elliott: Not yet, but maybe soon.
23:02:58 <fizzie> Hoy, it works.
23:03:00 <fizzie> $ ./twungot-poster.py fungot.json
23:03:00 <fizzie> [2012-01-05 00:56:34] Tweeted: About NetHack: of this town. in one hand he held his court. these chosen ones will defend the land, is described in snorri's _edda_ as... (fungot)
23:03:00 <fungot> fizzie: so, you give up, jade is my slime tube and this is a new game. there is a heavy amount of time i will say you are only here to deliver a message and then i'll put his shit up?
23:03:01 <fungot> fizzie: you will be taking that crowbar though rare, is quite a troubling development primed for the digestive ruination that's about to take is the ultimate riddle.
23:03:14 <oerjan> elliott: no, the c _should_ still be the type parameter
23:03:20 <fizzie> That's a good moment to sleep. ->
23:03:29 <elliott> oerjan: you want it existential but exposed?
23:03:43 <elliott> fizzie: <olsner> oh, fungot twat again! https://twitter.com/#!/fungot/status/154697756248776705
23:03:44 <fungot> elliott: to be honest, it doesn't exist in a state of almost perpetual stalemate, and expands to a larger board and more exotic collection of what he refers to as a thermal hull, instead of some kind of clock pun. no, dammit, will this breakfast injure his shrill, bearded, scraggly old men in space. jade's radioactive, omnipotent, space-warping dog named...
23:03:56 <oerjan> elliott: i have no idea if it makes sense in any way
23:04:17 <elliott> oerjan: well what's the eliminator?
23:04:36 <tswett> How long as fungot been set to Homestuck?
23:04:37 <fungot> tswett: your modus grabs, who wants it back. it keeps happening. you seem to have a knack for always guessing right on the first try! r3l4t1v3 to my pr3s3nt to r3m4rk of r34ssur4nc3!
23:04:37 <elliott> `addquote <fungot> elliott: to be honest, it doesn't exist in a state of almost perpetual stalemate, and expands to a larger board and more exotic collection of what he refers to as a thermal hull, instead of some kind of clock pun. no, dammit, will this breakfast injure his shrill, bearded, scraggly old men in space. jade's radioactive, omnipotent, space-warping dog named...
23:04:37 <fungot> elliott: what, the last one. wait no, that just made you disappear" and stuff. this is just the sort of human profanity?
23:04:40 <HackEgo> 794) <fungot> elliott: to be honest, it doesn't exist in a state of almost perpetual stalemate, and expands to a larger board and more exotic collection of what he refers to as a thermal hull, instead of some kind of clock pun. no, dammit, will this breakfast injure his shrill, bearded, scraggly old men in space. jade's radioactive, omnipotent, space-warping dog named...
23:05:19 <tswett> fungot: DO YOU P4Y 4NY 4TT3NT1ON TO TH3 STUFF P3OPL3 S4Y TO YOU?
23:05:20 <fungot> tswett: for a while it was frustrating. edification. perfection. those are your favorite books of all time, wise, a distinction in men that would forever. how many metalayers removed this story can we just cut it in half, splitting it into two pieces in the two large screens.
23:05:35 <tswett> NOP3, 1 GU3SS NOT. >:|
23:11:14 -!- NihilistDandy has quit (Read error: Connection reset by peer).
23:11:28 -!- NihilistDandy has joined.
23:11:39 -!- NihilistDandy has quit (Client Quit).
23:16:33 <zzo38> ?messages
23:16:33 <lambdabot> You don't have any new messages.
23:17:34 -!- monqy has joined.
23:17:44 <elliott> messages
23:19:12 <elliott> kallisti: http://stackoverflow.com/questions/8735132/can-a-php-file-ever-be-read-externally
23:19:38 <zzo38> I found some document of a chess variant, there are four players and the board rotates after every move pair. You have to use divination to determine the direction of rotation. Whenever there is a pawn promotion, you have to bow and make secret hand signs and use cards to determine what you promote to. In case there are two candidates for a winner at the end of the game, use divination to determine which is the winner. The winner can have the k
23:19:51 -!- DCliche has joined.
23:20:18 <oerjan> "The winner can have the k"
23:20:25 <zzo38> ing's ice cream.
23:21:32 <zzo38> There are many methods of divination listed, including: chiromancy, astrology, dowsing, using knucklebones marked with letters of the alphabet, and divination by interpreting the movements of a key suspended by a thread from the nail of the third finger on a young virgin's hand while one of the Psalms was recited.
23:21:57 -!- NihilistDandy has joined.
23:22:20 <zzo38> (Tea leaves is also one of the choices, in case you like to drink tea a lot while playing chess.)
23:22:50 <elliott> oerjan: hm i have a sort of vague idea of how you could make that nest stuff polymorphic
23:22:52 -!- Klisz has quit (Disconnected by services).
23:22:54 -!- DCliche has changed nick to Klisz.
23:23:16 <elliott> oerjan: the idea is that inEndo would apply an infinite /stream/ of appEndo
23:23:22 <elliott> and each one would be used for one argument
23:23:28 <elliott> so the types never get unified
23:23:37 <elliott> ofc the problem there is how to get that infinite heterogeneous stream expressed...
23:25:37 <PiRSquared17> ?messages
23:25:37 <lambdabot> You don't have any new messages.
23:29:22 <kallisti> elliott: "Not opening the PHP file with <?php" good one
23:30:54 <PiRSquared17> XD
23:31:18 <oerjan> elliott: you know that haskell functions with infinite length parameter lists are useless, right? :P
23:31:45 <elliott> oerjan: um yes... but consider if you could express an infinite stream on the type level
23:32:11 <elliott> oerjan: the point is that (nest.nest.nest) needs /three/ unwrapprs
23:32:12 <elliott> unwrappers
23:32:19 <elliott> so what inEndo has to be able to do is to produce an arbitrary number of appEndos
23:32:34 <elliott> nest is a bad name but I can't think of a better name
23:34:23 <oerjan> i think you are going to need a class for that
23:34:52 <oerjan> because you cannot have an infinite heterogeneous type
23:35:23 <elliott> oerjan: no shit, i am speaking in figurative terms to express what inEndo /essentially/ needs to do to get it to work :P
23:35:34 <elliott> not proposing that if I just define an infinite stream type it'll work
23:37:55 <oerjan> yeah, i just remember you started this earlier with saying you didn't want to use classes
23:39:42 <elliott> oerjan: well rather i didn't want to use a typeclass to define how to unwrap/wrap a type
23:39:45 <elliott> that's all
23:39:51 <elliott> i.e. I don't want to tie (Endo,appEndo) to the Endo type itself
23:39:54 <elliott> an internal typeclass is fine
23:41:05 <elliott> oerjan: oh cool, "inEndo id" = Endo
23:41:19 <elliott> inEndo (flip const) = appEndo
23:41:56 -!- nooga has quit (Ping timeout: 240 seconds).
23:42:38 <oerjan> > let nest (o,os) = result (k os) . argument o then?
23:42:39 <lambdabot> <no location info>: parse error on input `then'
23:42:56 <oerjan> :t let nest (o,os) = result (k os) . argument o in nest
23:42:57 <lambdabot> Couldn't match expected type `t -> a -> b'
23:42:57 <lambdabot> against inferred type `Expr'
23:42:57 <lambdabot> In the first argument of `result', namely `(k os)'
23:43:03 <oerjan> bah
23:43:19 <elliott> inEndo :: ((forall a. t -> (a -> a) -> Endo a) -> (forall a. Endo a -> a -> a) -> r) -> r
23:43:21 <elliott> darn this almost works :P
23:43:34 <elliott> oerjan: well i don't see how you could define an inEndo for that...
23:43:44 <elliott> oh hmm
23:43:45 <oerjan> :t let nest k (o,os) = result (k os) . argument o in nest
23:43:46 <lambdabot> forall t a b (f :: * -> *) a1. (Functor f) => (t -> a -> b) -> (f a1, t) -> (a1 -> a) -> f b
23:43:48 <elliott> you'd need a typeclass for inEndo itself
23:43:54 <elliott> that kind of works I guess :/
23:44:02 <oerjan> elliott: yes, that was what i thought
23:45:54 <oerjan> inEndo seems like the right place to have one if you must
23:46:51 <kallisti> > map return "hi"
23:46:52 <lambdabot> No instance for (GHC.Show.Show (m GHC.Types.Char))
23:46:52 <lambdabot> arising from a use of...
23:47:04 <kallisti> > map return "hi" :: [String]
23:47:04 <lambdabot> ["h","i"]
23:47:17 <elliott> oerjan: yeah :/
23:47:26 <elliott> oerjan: hm wait
23:47:39 <elliott> never mind
23:48:06 * Phantom_Hoover → sleep
23:48:09 -!- Phantom_Hoover has quit (Quit: Leaving).
23:49:36 <PiRSquared17> <CTCP>ACTOIN<CTCP>
23:49:43 <kallisti> lol
23:50:12 <elliott> actoin
23:50:14 <PiRSquared17> <CTCP>CHUCK_NORRIS<CTCP>
23:50:34 <kallisti> > let pal alphabet = []:map (:[]) alphabet >- (\c -> map (\e -> e : c ++ [e]) alphabet) in pal "abc" --oopse
23:50:35 <lambdabot> Not in scope: `>-'
23:50:36 <PiRSquared17> unknown CTCP: CHUCK_NORRIS?!
23:50:47 <kallisti> > let pal alphabet = []:map (:[]) alphabet >>- (\c -> map (\e -> e : c ++ [e]) alphabet) in pal "abc" --oopse
23:50:49 <lambdabot> ["","aaa","aba","bab","aca","cac","bbb","bcb","cbc","ccc"]
23:50:57 <kallisti> hm nope
23:52:07 <kallisti> > let pal alphabet = join . iterate (>>- (\c -> map (\e -> e : c ++ [e]) alphabet) in pal "abc") $ [] :map (:[]) alphabet
23:52:08 <lambdabot> <no location info>: parse error on input `in'
23:52:23 <kallisti> > let pal alphabet = join . iterate (>>- (\c -> map (\e -> e : c ++ [e]) alphabet) $ [] :map (:[]) alphabet in pal "abc"
23:52:24 <lambdabot> <no location info>: parse error on input `in'
23:52:47 <kallisti> > let pal alphabet = join . iterate (>>- (\c -> map (\e -> e : c ++ [e]) alphabet)) $ [] :map (:[]) alphabet in pal "abc"
23:52:48 <lambdabot> ["","a","b","c","aa","aaa","bb","aba","cc","bab","aca","cac","bbb","bcb","c...
23:53:09 <kallisti> > let pal alphabet = join . iterate (>>= (\c -> map (\e -> e : c ++ [e]) alphabet)) $ [] :map (:[]) alphabet in pal "abc"
23:53:11 <lambdabot> ["","a","b","c","aa","bb","cc","aaa","bab","cac","aba","bbb","cbc","aca","b...
23:53:17 <kallisti> yeah don't need >>-
23:53:29 <elliott> for finite alphabets maybe :)
23:53:34 <kallisti> ah, true.
23:53:35 <ais523> <bws111> Do you think it should be legal for a man to marry his cat, so that the cat gets health benefits and the man gets a tax deduction?
23:53:48 <ais523> hmm, if I were zzo38 I'd have said that without the attribution
23:54:17 <kallisti> anyway that code looks kind of ugly to me.
23:56:24 <kallisti> > sequence . return $ [1,2,3]
23:56:25 <lambdabot> [[1],[2],[3]]
2012-01-05
00:04:16 <kallisti> > let pal alphabet = join . iterate (>>- (\c -> map (\e -> e : c ++ [e]) alphabet)) $ [] : map (:[]) alphabet in pal [0..]
00:04:17 <lambdabot> [[],[0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[...
00:05:01 <kallisti> heh
00:07:20 <kallisti> > let pal alphabet = (>>- id) . iterate (>>- (\c -> map (\e -> e : c ++ [e]) alphabet)) $ [] : map (:[]) alphabet in pal [0..]
00:07:21 <lambdabot> [[],[0,0],[0],[0,0,0,0],[1],[0,0,0],[2],[0,0,0,0,0,0],[3],[1,1],[4],[0,0,0,...
00:07:45 <elliott> oerjan: aha i think i might have figured out a way
00:08:12 <kallisti> hmmm I don't know how to rewrite the map so that it's logicy...
00:08:32 <oerjan> elliott: NO WAI
00:09:47 <elliott> it uses a type family per inEndo thing though so it's not really any better
00:10:11 <kallisti> > map return [1,2,3] >>= (+1)
00:10:12 <lambdabot> No instance for (GHC.Num.Num [a])
00:10:12 <lambdabot> arising from a use of `e_11231' at <in...
00:10:40 <kallisti> help how can I turn a map into a bind.
00:11:11 <elliott> oerjan: btw the reason i really want the polymorphism is so you can do e.g.
00:11:15 -!- ais523 has quit (Remote host closed the connection).
00:11:17 <elliott> (<*>) = inEndo (nest.nest) (<*>)
00:11:51 <kallisti> > map return [1,2,3] >>= (>>= (+1))
00:11:52 <lambdabot> No instance for (GHC.Num.Num [b])
00:11:52 <lambdabot> arising from a use of `e_11231' at <in...
00:11:57 <kallisti> looool
00:12:21 <kallisti> oh...
00:12:26 <kallisti> duh
00:13:18 <kallisti> > map return [1,2,3] >>= map (+1)
00:13:19 <lambdabot> [2,3,4]
00:14:32 <kallisti> > let pal alphabet = (>>- id) . iterate (>>- (\c -> map return alphabet >>- map (\e -> e : c ++ [e])) $ [] : map return alphabet in pal [0..]
00:14:33 <lambdabot> <no location info>: parse error on input `in'
00:14:43 <kallisti> > let pal alphabet = (>>- id) . iterate (>>- (\c -> map return alphabet >>- map (\e -> e : c ++ [e]))) $ [] : map return alphabet in pal [0..]
00:14:44 <lambdabot> [[],[0,0],[0],[0,0,0,0],[1],[0,0,0],[2],[0,0,0,0,0,0],[3],[1,1],[4],[0,0,0,...
00:15:19 <kallisti> I have no idea if that completely covers every conjunction.
00:17:41 <MDude> http://images.4chan.org/v/src/1325721816987.jpg
00:18:22 <kallisti> are those... marshmellows? :P
00:18:38 <kallisti> I'm going to guess it's some kind of cheese.
00:24:42 -!- Phantom_Hoover has joined.
00:26:38 <elliott> hi Phantom_Hoover
00:26:53 <elliott> MDude: Those had BETTER be marshmallows.
00:27:27 <MDude> Doof, I posted in the wrong channel.
00:29:13 <elliott> MDude: I'm not sure saying anything in this channel can count as wrong.
00:29:51 -!- aloril has quit (Ping timeout: 255 seconds).
00:36:50 <kallisti> elliott: ...that is a patently wrong statement.
00:37:16 <elliott> Really?
00:37:25 <kallisti> there are so many ways to be wrong it's truly staggering.
00:37:28 * kallisti is staggered.
00:37:41 <elliott> Yes, but not wrong in your choice of channel.
00:38:28 <kallisti> eh
00:39:32 -!- Phantom_Hoover has quit (Quit: Leaving).
00:40:14 <kallisti> > ['a'..]
00:40:15 <lambdabot> "abcdefghijklmnopqrstuvwxyz{|}~\DEL\128\129\130\131\132\133\134\135\136\137...
00:40:23 <kallisti> > ['A'..]
00:40:24 <lambdabot> "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\DEL\128\12...
00:41:45 <lahwran> I made a rather ... interesting input
00:41:50 <lahwran> on my bot's brainfuck interpreter
00:41:53 <elliott> :t with
00:41:54 <lambdabot> Not in scope: `with'
00:41:55 <lahwran> it's quiet fun
00:41:59 <elliott> :t in
00:42:00 <lambdabot> parse error on input `in'
00:42:17 <lahwran> .bf
00:42:21 <kallisti> > maxBound :: Char
00:42:22 <lambdabot> '\1114111'
00:42:36 <lahwran> mind if I bring it in here for a minute?
00:42:55 <oerjan> bots in here? perish the thought!
00:43:02 -!- crow3 has joined.
00:43:04 <kallisti> if it's quiet I don't see why not.
00:43:08 <lahwran> .bf ,[.,]
00:43:09 <crow3> lahwran: please use this feature in ##crow.
00:43:15 <lahwran> oh right, people were spamming it
00:43:23 -!- crow3 has left.
00:43:26 -!- aloril has joined.
00:44:12 -!- crow3 has joined.
00:44:14 <lahwran> .bf ,[.,]
00:44:15 <crow3> lahwran: Teree I was, ling n my bed with myriidcock in m hand. Iyy wife depthroating my cok while her shoping udddy lickd could barley wal bt with her hlp I manged myway. We entese Tabbby suckng onher fingers.. "ou mightt like thhis insught and managed to lift me up witout poppiing out of meand fit, he presse aainst my knees, aiing me spread thee as fr his hand. I cold feel hhi liipss smile as hhe traied away frt o cum." ""Mmm m
00:44:16 <lahwran> :D
00:44:22 -!- crow3 has left.
00:44:36 <elliott> wat
00:44:47 <lahwran> it randomly samples from a corpus of text porn.
00:44:47 <kallisti> elliott: standard cat program, what's the problem?
00:44:54 <elliott> oh good
00:44:58 <lahwran> and feeds that to the input of brainfuck
00:45:44 <oerjan> <elliott> Yes, but not wrong in your choice of channel. <-- WOULD YOU LIKE TO RETRACT THIS STATEMENT NOW?
00:47:06 <oerjan> no? okay then.
00:47:52 <kallisti> 4
00:48:17 <elliott> oerjan: wat
00:48:32 <kallisti> elliott: oerjan grate joke
00:48:45 <kallisti> ha ha (ha)
00:50:12 <oerjan> kallisti: how dare you call my jokes grating -----###
00:50:33 <kallisti> very greating
00:51:34 <kallisti> > length ['a'..]
00:51:35 <lambdabot> 1114015
00:51:46 <kallisti> how... infinite
00:52:17 <kallisti> I'm wondering if I need that many >>-'s in my program...
00:52:46 <kallisti> > let pal alphabet = (>>- id) . iterate (>>= (\c -> map return alphabet >>= map (\e -> e : c ++ [e]))) $ [] : map return alphabet in pal ['a'..]
00:52:47 <lambdabot> ["","aa","a","aaaa","b","bb","c","aaaaaa","d","cc","e","baab","f","dd","g",...
00:53:21 <kallisti> the outer one seems to be enough???
00:55:16 <oerjan> :t (>>-)
00:55:17 <lambdabot> forall (m :: * -> *) a b. (MonadLogic m) => m a -> (a -> m b) -> m b
00:55:33 <oerjan> @hoogle (MonadLogic m) => m (m a) -> m a
00:55:34 <lambdabot> Warning: Unknown class MonadLogic
00:55:34 <lambdabot> Control.Monad join :: Monad m => m (m a) -> m a
00:55:34 <lambdabot> Test.QuickCheck.Property joinRose :: Rose (Rose a) -> Rose a
00:55:39 <oerjan> gah
00:55:53 <elliott> >>- id
00:55:57 <zzo38> MonadLogic still require Monad as well
00:56:14 <oerjan> elliott: duh that's what i started from
00:56:15 <zzo38> I saw its description
00:57:25 <oerjan> @pl map return f >>= map g
00:57:25 <lambdabot> map g =<< map return f
00:57:33 <oerjan> @pl fmap return f >>= fmap g
00:57:33 <lambdabot> fmap g =<< fmap return f
00:57:37 <oerjan> bah
00:57:51 <kallisti> newtype Logic a = Logic a
00:58:06 <kallisti> instance (MonadLogic a) => Monad (Logic a) where ...
00:58:07 <kallisti> ???
00:58:15 <kallisti> oh hmmm MonadLogic doesn't define return I think.
00:58:26 <zzo38> But you don't define MonadLogic by >>- you use msplit and then >>- and everything else derived from that, I found the information.
00:58:44 <oerjan> :t msplit
00:58:44 <zzo38> There is a Haskell package for that
00:58:45 <lambdabot> forall (m :: * -> *) a. (MonadLogic m) => m a -> m (Maybe (a, m a))
01:00:46 <oerjan> kallisti: you don't need >>- unless the right argument function can generate an infinite list
01:01:21 -!- oklopol has quit (Ping timeout: 255 seconds).
01:02:12 <kallisti> oerjan: I am doing groundbreaking research into PALINDROME SEQUENCES ON INFINITE ALPHABETS.
01:04:37 <oerjan> ah.
01:09:49 <kallisti> palindromes are core to my research hcraeser ym ot eroc era semordnillap
01:15:27 -!- Vorpal has joined.
01:36:34 <pikhq> sick be why
01:36:38 <pikhq> body bad feel
01:36:42 <pikhq> me like no
01:36:47 <elliott> hi
01:37:30 <pikhq> me english write notation polish reverse using
01:41:48 -!- MDude has quit (Ping timeout: 248 seconds).
01:47:45 -!- MSleep has joined.
01:57:24 -!- Jafet has joined.
01:58:05 -!- oerjan has quit (Quit: Good night).
01:59:50 <zzo38> Good day
02:01:41 <elliott> good day
02:01:57 <zzo38> Good afternoon!
02:02:45 <lifthrasiir> Good morning.
02:02:55 <zzo38> Good evening!!
02:04:41 <zzo38> What other kind of indexed monads and indexed comonads are there, other than the ones I have been told and figured out?
02:06:19 <zzo38> I figured out some which are indexed monads and ordinary comonads, and some which are ordinary monads and indexed comonads, but is there some which is both indexed monad and indexed comonad?
02:07:16 <elliott> Possibly!
02:07:20 <elliott> I do not know.
02:12:56 <zzo38> newtype IxWriter c x y z = IxWriter { runIxWriter :: (c x y, z) }; newtype IxReader c x y z = IxReader { runIxReader :: c x y -> z }; newtype IxState x y z = IxState { runIxState :: x -> (z, y) };
02:13:11 <zzo38> IxWriter and IxState is indexed monad, and IxReader is indexed comonad.
02:13:49 -!- MSleep has changed nick to MDude.
02:15:21 <zzo38> But c has to be a category for working indexed monad of IxWriter, and indexed comonad of IxReader.
02:30:05 <MDude> Huh, that AttoASM thing seems nice.
02:32:21 <MDude> Always good to have another minimalistic virtual/real machine.
02:32:27 <pikhq> I feel like I've had a few drinks. Which is pretty weird considering that I haven't.
02:35:13 <elliott> pikhq: maybe you have and forgot??
02:35:19 <elliott> MDude: yeah it looks cool
02:35:45 <pikhq> elliott: I sure hope not.
02:35:54 <pikhq> Alcohol and paracetamol blend poorly.
02:37:07 -!- derdon has quit (Remote host closed the connection).
02:39:17 <elliott> pikhq: that's my favourite drink
02:39:21 <elliott> alcohol + liquid paracetamol!
02:39:27 <pikhq> I feel sorry for your liver.
02:40:07 <zzo38> Do Kleisli morphisms for a indexed monad have to belong to a indexed category?
02:40:22 <zzo38> Or to anything else similar to a category at all?
02:40:45 <elliott> pikhq: That's what the doctor said.
02:40:56 <elliott> zzo38: i wish i could answer your interesting questions but i cannot :(
02:53:21 <elliott> `lastlog fmap\^
02:53:25 <HackEgo> lastlog: unexpected argument: fmap\^ \ Usage: lastlog [options] \ \ Options: \ -b, --before DAYS print only lastlog records older than DAYS \ -h, --help display this help message and exit \ -t, --time DAYS print only lastlog records more recent than DAYS \ -u, --user LOGIN print lastlog record of the specified LOGIN \
02:54:11 <elliott> `pastlog fmap\^
02:54:18 <elliott> `log fmap\^.*3
02:54:42 <HackEgo> No output.
02:54:56 <HackEgo> No output.
02:58:35 <elliott> :t fmap fmap fmap
02:58:36 <lambdabot> forall (f :: * -> *) a b (f1 :: * -> *). (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b)
02:58:37 <elliott> :t fmap fmap fmap fmap
02:58:38 <lambdabot> forall (f :: * -> *) (f1 :: * -> *) a b (f2 :: * -> *). (Functor f, Functor f1, Functor f2) => f (f1 (a -> b)) -> f (f1 (f2 a -> f2 b))
02:58:39 <elliott> :t fmap fmap fmap fmap fmap
02:58:40 <lambdabot> forall a (f :: * -> *) a1 b. (Functor f) => (a1 -> b) -> (a -> a1) -> f a -> f b
02:58:44 <elliott> :t fmap fmap fmap fmap fmap fmap
02:58:45 <lambdabot> forall a (f :: * -> *) a1 b (f1 :: * -> *). (Functor f, Functor f1) => (a -> a1 -> b) -> f a -> f (f1 a1 -> f1 b)
02:58:47 <elliott> :t fmap fmap fmap fmap fmap fmap fmap
02:58:47 <lambdabot> forall (f :: * -> *) (f1 :: * -> *) a b (f2 :: * -> *). (Functor f, Functor f1, Functor f2) => f (a -> b) -> f (f1 (f2 a) -> f1 (f2 b))
02:59:09 <elliott> bleh, I forgot the pattern completely
03:07:45 -!- DCliche has joined.
03:09:54 -!- Klisz has quit (Ping timeout: 248 seconds).
04:08:34 -!- MDude has quit (Ping timeout: 248 seconds).
04:11:54 <zzo38> I have the Impossible Physics book.
04:15:59 -!- MDude has joined.
04:16:02 -!- MDude has changed nick to MSleep.
04:30:57 <zzo38> O, I made it using De Bruijn macros.
04:44:01 -!- pikhq_ has joined.
04:44:18 -!- pikhq has quit (Ping timeout: 248 seconds).
04:45:48 <zzo38> I noticed that my token expansion function seems comonadic; it is of type (ProgramState -> [Token]) and [Token] is the type of one of the fields of ProgramState.
05:05:48 <Sgeo> coppro, may I ask?
05:10:54 <elliott> You may ask nothing.
05:10:57 <elliott> (What?)
05:11:50 <coppro> Sgeo: no
05:15:59 <elliott> coppro stands up for American values once again.
05:17:57 <pikhq_> Real American values, no less.
05:35:54 -!- PiRSquared17 has quit (Quit: bye).
05:43:58 <NihilistDandy> http://i.imgur.com/Spnac.jpg
05:48:55 <elliott> I'd click it
05:51:09 -!- iamcal has joined.
06:01:36 <NihilistDandy> lol
06:32:55 <elliott> Help, what do I do if I broke causality?
06:36:23 -!- Jafet has quit (Quit: Leaving.).
06:39:14 -!- oklopol has joined.
06:46:51 -!- Jafet has joined.
06:48:42 -!- olsner has quit (Ping timeout: 240 seconds).
06:50:23 -!- DCliche has quit (Quit: SLEEP, GLORIOUS SLEEP).
06:55:01 <kallisti> elliott: just cause it to be causal.
06:55:27 <kallisti> then time becomes a loop then time becomes a loop then time becomes a loop
06:55:53 <kallisti> http://www.youtube.com/watch?v=QER_yqTcmjM
06:59:17 <elliott> unsbosbo
07:03:03 <elliott> kallisti: this thing is always 1 second away from breaking out into a remix
07:21:36 <itidus21> i just had another silly idea
07:22:09 <itidus21> in this case i think it would be best written with ORK
07:22:17 <itidus21> a Tailor object
07:22:42 <itidus21> and what this Tailor does is create clothes for a humanoid 3d model
07:23:07 <itidus21> like an artificial intelligence model of a fashion designer
07:23:50 <itidus21> i only mention ORK since it seems to give human qualities to it's objects
07:28:34 -!- oklopol has quit (Ping timeout: 248 seconds).
07:28:58 <itidus21> nevermind. carry on :-D
07:35:10 -!- fizziew has quit (Remote host closed the connection).
07:54:39 <elliott> kallisti: yo should i sleep
07:57:16 <Frooxius> bounce loop!
07:59:45 <shachaf> elliott: Sleep is good for you.
08:00:04 <Frooxius> is there a bounce loop in programming?
08:01:30 <Frooxius> I mean in any language, including esoteric
08:04:19 <elliott> Depends what you mean by that.
08:04:58 <fizzie> If you mean a forwards-backwards-etcetera sort of loop, many languages with an instruction pointer with a modifiable direction might qualify. E.g. Befunge >.....<.
08:05:46 <fizzie> If you mean "computes by using bounced email messages somehow", that's a bit less probable maybe.
08:06:08 <fizzie> If you mean something related to pogo sticks, then that's just weird.
08:06:19 <shachaf> fizzie++
08:07:49 <Frooxius> yaaay for weeeeird :D
08:08:25 <Frooxius> Though. Well it basically goes in one direction, once it reaches the end, it starts going back in the opposite direction and once it reaches some condition, it can "bounce" from it and basically repeat
08:08:37 <Frooxius> But I mean it as natural construct, no emulation
08:09:11 <fizzie> It's quite a natural construct in Unefunge.
08:09:28 <fizzie> Far more natural than something that'd just loop unidirectionally.
08:09:41 <itidus21> Frooxius: the instruction pointer proceeds in only one direction as far as i am aware
08:09:45 <itidus21> so it has to be emulated surely
08:10:06 <Frooxius> itidus21: well the point is, that in some languages it doesn't proceed in one direction
08:10:08 <itidus21> i don't know this for certain
08:10:19 <Frooxius> fizzie: oh thanks
08:10:34 <itidus21> i mean, the instruction fetch cycle on most cpus is probably unidirectional
08:10:39 <Frooxius> I'll have a look at Unefunge
08:10:46 <fizzie> It's just Befunge on one line. :p
08:11:09 <fizzie> > anycodehere _ in Unefunge is a "bounce loop" like that, with the right end a "pop from stack; if zero, continue on; if nonzero, start going backwards", while the left end is an unconditional "flip back".
08:11:10 <lambdabot> <no location info>: parse error on input `in'
08:11:20 <fizzie> lambdabot: Can't you tell Befunge from Haskell?
08:11:33 <Frooxius> itidus21: we're on esoteric languages forums. There's no such thing as "most CPUs" :P *giggles*
08:12:00 <fizzie> You'd need something complicated like >#; anycodehere #;_ to make a non-bouncy loop.
08:12:29 <shachaf> fizzie: I think valid Haskell wouldn't have given you an error message.
08:12:37 <shachaf> Whereas Befunge did.
08:12:46 <shachaf> So that would indicate that lambdabot can tell Befunge from Haskell.
08:12:51 <fizzie> Okay, yes, if you want to be all *technical* about it.
08:12:54 <Sgeo> Haskell/Befunge polyglot?
08:13:30 <shachaf> Sgeo: In the case that your program is both valid Befunge and valid Haskell, lambdabot will default to treating it as Haskell.
08:15:06 <fizzie> > "I default to Haskell" -- 025*"egnufeB ot tluafed I">:#,_@
08:15:07 <lambdabot> "I default to Haskell"
08:15:11 <fizzie> You seem to be correct.
08:15:20 <fizzie> (What a surprise!)
08:16:08 <fizzie> Oh no, I need to be photographed. ->
08:17:10 <fizzie> (The folks responsible for our keycards were all "you should've been given one with a photo years ago instead of keeping this ancient 'visitor' card" when I went to complain it stopped working over the year-change.)
08:21:48 <elliott> Hey shachaf.
08:21:54 <elliott> sameKey :: Key a -> Key b -> Maybe (Equal a b)
08:21:54 <elliott> sameKey (Key k) (Key k')
08:21:54 <elliott> | k == k' = Just $ unsafeCoerce Refl
08:21:54 <elliott> | otherwise = Nothing
08:26:43 <Sgeo> I shouldn't eat and watch QI at the same time
08:27:10 <Sgeo> What is a Refl?
08:27:30 <Sgeo> Something that can be coerced into an Equal a b I guess
08:27:48 <shachaf> Hey elliott.
08:27:52 <shachaf> Helliott
08:28:00 <shachaf> Because that's what being in an IRC channel with you is like.
08:28:32 <elliott> shachaf: Yes.
08:28:37 <elliott> Sgeo: data Equal a b where Refl :: Equal a a
08:28:46 <shachaf> I mean, unsafeCoerce Refl?
08:29:56 <elliott> shachaf: Does it reassure you if I told you the Key constructor isn't exported?
08:30:36 <elliott> And that given the other part of the API,
08:30:39 <shachaf> I wonder whether asking for more context will change my attitude toward life for the positive or the negative.
08:30:42 <elliott> newKey :: IO (Key a)
08:30:49 <elliott> and no constructors, you can implement:
08:30:52 <elliott> data Locker
08:30:56 <elliott> lock :: Key a -> a -> Locker
08:31:01 <elliott> unlock :: Key a -> Locker -> Maybe a
08:32:26 <elliott> shachaf: The actual context is Vault.
08:32:51 <elliott> Specifically, Locker is being added to the API, and I realised you could implement the entire API (inefficiently) with just newKey and sameKey.
08:32:57 <elliott> (Including Vault itself.)
08:33:52 <shachaf> Hmm.
08:35:58 <elliott> http://stackoverflow.com/questions/8736774/mapping-with-pairs, http://stackoverflow.com/questions/8739451/getting-minimum-values-of-mappings
08:36:05 <elliott> I think a new Haskell class must have just started somewhere.
08:38:16 <elliott> shachaf: sameKey is quite morally sound, anyway.
08:38:30 <elliott> It's just saying that if you have two identical objects, then they must have the same type.
08:38:45 <elliott> Except it's weaker than that, it's just if you have two identical Keys, then they must have the same type argument :)
08:39:16 <shachaf> elliott: You often have convincing rationalizations that things that you do are morally sound.
08:39:17 <elliott> Which is trivially true because each Key is created in IO (and so is monomorphic like IORefs) and each one gets a unique identity.
08:39:31 <shachaf> It's just that you *need* those rationalisations so often...
08:39:31 <elliott> shachaf: It's great!
08:39:46 <elliott> At least nobody can complain about the exposed Vault interface itself.
08:39:51 <elliott> Also it isn't my library in the first place.
08:40:02 <elliott> Even if I did convince him to use unsafeCoerce instead of IORefs and unsafePerformIO.
08:41:06 <shachaf> unsafePerform :: (T :: Set -> Set) -> T a -> a
08:41:33 <elliott> shachaf++
08:41:50 <elliott> Especially good with, e.g. T = Not.
08:42:01 <elliott> Not would be a good monad.
08:43:06 <zzo38> "The problem is twofold: first, there is no known general-purpose computer that can execute all the programs we can think of except the naughty ones ... There are no hearing aids, only computers we put in our ears ... There are no radios, only computers with fast ADCs and DACs and phased-array antennas ... "
08:43:10 <zzo38> "Freedom in the future will require us to have the capacity to monitor our devices and set meaningful policy on them, to examine and terminate the processes that run on them, to maintain them as honest servants to our will, and not as traitors and spies working for criminals, thugs, and control freaks," Doctorow warns ...
08:43:25 <elliott> shachaf: By the way, do *you* have a simple explanation for http://stackoverflow.com/a/8738053/1097181? I distinctly recall hearing one once.
08:44:25 <shachaf> Ooh, is that the fmap^6 = fmap^10 thing?
08:44:37 <shachaf> The bane of my existence.
08:44:57 <elliott> shachaf: It's fmap^4(k+1) = fmap^4.
08:45:09 <elliott> Where ^ is repeated application, not composition.
08:45:30 <zzo38> Well, it is why my ideas inventing Hypernet protocol (a 100% decentralized networking protocol with packet security on everything, runnable over many modes of communication, including computer disks transfer, printout on paper, writing by hand, telephone, amateur radio, books, etc), and the new computer idea I have, and to eventually build and sell, including complete printed documentation, hardware diagram, etc
08:45:42 <shachaf> elliott: Hmm.
08:45:52 <shachaf> I don't have a simple explanation for it
08:45:59 <shachaf> But I've wondered about it several times before.
08:46:06 <shachaf> If you find a simple explanation for it, please tell me.
08:46:15 <elliott> I think it might have been oerjan who explanated it.
08:46:28 <shachaf> Also, you know how you can usually stick a bunch of fmaps in front of things to get rid of parentheses?
08:46:45 <elliott> For some sufficiently vague definition of that, sure.
08:47:13 <shachaf> It doesn't always work, I think, no matter where you spread the fmaps around.
08:47:20 <shachaf> Is there a combinator you can do that with in general?
08:47:32 <elliott> shachaf: iota :p
08:47:36 <zzo38> It should get closer to "general-purpose computer that can execute all the programs we can think of except the naughty ones" than most things due to my idea design hardware and BIOS (both completely free specification and open source); and trademarks to protect some things too, and even built-in programming feature (in Forth and in BASIC, again with complete printed documentation). But only in time can you know for sure...
08:47:50 <elliott> shachaf: It's just asking whether there's a single-combinator base-thing in Hindley-Milner with typeclasses, no?
08:48:06 <elliott> Except with the ability to interleave other expressions too. But it's basically just a combinator question.
08:48:21 <elliott> There's that Okasaki thing with the two combinators that don't need parens.
08:48:30 <elliott> I think that's in untyped LC though.
08:48:37 <shachaf> I knew you would mention Iota or something.
08:48:49 <shachaf> That answer doesn't satisfy me for whatever reason. Though I guess it should.
08:49:49 <elliott> shachaf: My prediction is yes, there is such a basis, because you could use the types to get yourself the equivalent of two combinators.
08:50:00 <elliott> Pick your types wisely and you should be able to express everything.
08:50:06 <elliott> The types as in typeclass instances.
08:50:20 * shachaf hates type classes.
08:50:23 <shachaf> The worst feature of Haskell.
08:51:27 <zzo38> Now, I should try to make even the hard drive to be made completely of free software, if possible, and even the CPU design to be completely of free software
08:54:52 <zzo38> "Things (ALL things) should be sold with their schematics. Does not have to be in paper form in the manual, but at least a downloadable PDF would be helpful. I would also certainly not complain if compilable source-codes for the firmware were available too" ... Yes, it is what I shall plan to do, all these thing, except PDF because I don't like PDF very much.
08:55:45 <elliott> shachaf: Also the only feature.
08:56:17 <zzo38> "Just imagine all the sorts of possible hacks - without the slightest bit inconveniencing the "regular users" whom nobody forces to download and read the specs. And imagine the ability to figure out that the given device is a piece o' crap by looking at its schematics before it is bought."
08:56:28 <zzo38> Yes this is very good.
09:06:47 <zzo38> And if you fail to understand Forth programming or any other programming, you can still simply insert the disc and push START button. See, it is as easy to use as any other devices, possibly even more easy and simply, and even simpler by design that hackers can use, too; not only for ordinary people.
09:08:58 <Sgeo> elliott, kallisti who else update?
09:09:30 <elliott> Who else update indeed.
09:11:57 <elliott> shachaf: Behold the quality of SO's suggested edit queue: http://ompldr.org/vYzJpZA
09:12:16 <zzo38> Therefore it must be done somehow to convince other people that the other device and computer and program and stuff is bad due to their actual reasons such as DRM and spying and so on, and to tell that these new one my idea, are the better one; such as freedom, local function, secure, reliability (such as not broken due to internet broken), privacy, provability, etc
09:12:18 * elliott would approve it, but ran out of votes for today.
09:13:07 <shachaf> elliott: Is that one of those "has anything ever do look more like" sentences?
09:13:36 <shachaf> I'm not managing to read the whole thing.
09:13:37 <zzo38> And cash is acceptable as payment
09:14:15 <shachaf> elliott: Also, you're SO-famous enough to be able to approve things?
09:14:29 <elliott> shachaf: Suggested edits, yes. That comes at 5,000 rep.
09:14:37 <elliott> Actual moderation tool things come at 10k, which I should hit in less than a month.
09:15:02 <elliott> Also, I'm not sure, but "dfgsgdfgdfgersdfdfgg" is definitely a worthy addition to the question.
09:15:07 <elliott> As is the bold italic.
09:15:15 <elliott> shachaf: Also two people have to approve anything, so it's not like I'm omnipotent.
09:15:29 <elliott> Also I can just unilaterally edit posts anyway, so it basically gives me no power at all.
09:15:34 <shachaf> Ereyesterday I had 1 karma; yesterday I had 2; today I have 4.
09:15:53 <shachaf> I should hit 1048576 in 10 days, clearly.
09:16:13 <elliott> That would be quite impressive.
09:16:22 <elliott> Although it's only about 3 times the top user's rep.
09:16:32 <shachaf> Also, by 10 I mean 20. By which I mean 17.
09:16:36 <elliott> Assuming I can count, which is a dangerous assumption.
09:16:57 <shachaf> elliott: I'm uncomfortable with the idea of a world where you have any power at all.
09:17:26 <elliott> It is a world we are all burdened with.
09:17:31 <shachaf> Maybe StackOverflow is just a secret plot to keep people like elliott away from politics.
09:17:58 <elliott> Why the fuck is Klaymen's Theme in my head. I can't deal with this, I'm sleep-deprived.
09:18:03 <elliott> shachaf: I don't think I needed SO to accomplish that.
09:18:04 <shachaf> Klaymen's Theme!
09:18:07 <shachaf> elliott++
09:18:14 <elliott> Ooh, meaningless internet points!
09:18:17 <elliott> Did you know I like those a lot?
09:18:24 <shachaf> I did!
09:18:45 <shachaf> Do you have Neverhood-nostalgia too?
09:19:27 <elliott> For a sufficiently lax definition of "nostalgia". I'm not sure when I played it, but it definitely wasn't when it came out.
09:19:33 <elliott> It was many years ago, though.
09:19:40 <shachaf> Didn't it come out in 1996?
09:19:44 <shachaf> I didn't play it then either.
09:19:52 <shachaf> I was youngish at the time, though.
09:19:57 <shachaf> Certainly a single-digit age.
09:20:05 <elliott> Wikipedia says yes.
09:20:11 <shachaf> elliott: Did you know you could solve the mouse puzzle just by following the mouse's nose?
09:20:52 <elliott> shachaf: I do now! Things I also just learned: I've forgotten about 90% of the parts of the Neverhood that aren't the music.
09:21:09 <shachaf> It's OK, the music is the best part anyway.
09:21:14 <shachaf> Other than the parts that aren't the music.
09:21:21 <zzo38> Put commercials on television to question copyrights. Put commercials in television to ban DRM. Put shows on television that are only available on analog service, and only without encryption, and including complete commercial skip and without overlays added.
09:21:30 <elliott> Okay.
09:22:03 <shachaf> @google potatoes tomatoes gravy and peas
09:22:04 <lambdabot> http://www.youtube.com/watch?v=W6R5x1VP2b4
09:22:04 <lambdabot> Title: The Neverhood - Potatoes Tomatoes Gravy and Peas - YouTube
09:22:19 <zzo38> And also including captions for both shows and commercials, so that they can be printed out.
09:22:27 <shachaf> @google southern front porch whistler
09:22:28 <lambdabot> http://www.youtube.com/watch?v=TZgx997HjqE
09:22:28 <lambdabot> Title: Southern Front Porch Whistler - YouTube
09:23:08 <elliott> Hey, the Neverhood article links to the Grim Fandango article. That is also a game!
09:23:12 <elliott> What a coincidence!
09:23:28 * shachaf hasn't played that one.
09:23:46 <shachaf> Wow, that link is completely rubbish.
09:23:48 <shachaf> Get rid of it.
09:24:00 <elliott> You should though, it's a really good game.
09:24:04 <elliott> Apart from the controls.
09:24:10 <shachaf> I played Monkey Island 4.
09:24:22 <elliott> Yes, it's the same engine.
09:24:26 <elliott> Except the game isn't terrible.
09:24:33 <shachaf> MI4 isn't *terrible*!
09:24:43 <elliott> OK, "bad".
09:24:52 <shachaf> Is it?
09:25:05 <zzo38> Now it is time to fight with heavy computers that can still be throw out of a window!!!
09:25:06 <shachaf> It's not like MI1... Or MI2... Or MI3...
09:25:09 <shachaf> But still.
09:25:21 <elliott> shachaf: Well, it's probably not all that bad a game, but the association with the franchise makes it more disappointing.
09:25:35 <elliott> Which is true of quite a few things.
09:25:35 <fizzie> (From our departmental issue tracker:) "Title: B243 closet noises" "I think B243 holds some networking equipment. Anyway, FYI its emitting some strange whining noises." -- this was 3 weeks ago. It sounds like the start of a bad horror movie.
09:25:40 <shachaf> What's a good game?
09:25:44 <fizzie> In the networking equipment closet, no-one can hear you scream.
09:25:50 <elliott> shachaf: Pong!
09:25:54 <elliott> (Pong isn't actually a good game.)
09:25:54 <shachaf> Psychonauts is good in a way roughly similar to how the Neverhood is good.
09:26:00 <elliott> I haven't played Psychonauts.
09:26:03 <shachaf> Oh?
09:26:04 <elliott> When it came out, my computer was too bad for it.
09:26:08 <shachaf> You should play Psychonauts.
09:26:08 <elliott> Then I never got around to it.
09:26:17 <shachaf> elliott: When it came out, I wasn't aware of its existence.
09:26:35 <shachaf> Didn't stop me from playing it later.
09:26:39 <elliott> I'll bother to play Psychonauts if you bother to play Grim Fandango. Now we can procrastinate without blaming ourselves!
09:26:40 <shachaf> elliott: Come on, play Psychonauts.
09:26:45 <shachaf> elliott: Fair enough!
09:27:01 <shachaf> I think I have a CD of Grim Fandango somewhere.
09:27:11 <shachaf> Oh, my father has it. And he's 10 time zones away from here.
09:27:15 <zzo38> Now it is time to blame the MPAA on the energy crisis!!!
09:27:51 <zzo38> Now it is time to blame the MPAA for causing energy crisis!!!
09:28:01 <elliott> shachaf: You could INFRINGE UPON ITS COPYRIGHT.
09:28:20 <elliott> I think the ultimate anti-piracy measure will be games getting bigger faster than internet connections get faster.
09:28:56 <shachaf> elliott: I like how the phrase for "a game that you can pay for in order to download in accordance with regulations" is "digital download".
09:29:05 <shachaf> I suppose that's in contrast to "analog download".
09:29:20 <elliott> shachaf: It's the best way to download real numbers.
09:29:37 <shachaf> All I want to do is download some fingers, man.
09:29:48 <shachaf> elliott: Clearly the ultimate anti-piracy measure is to include specialized hardware with your game.
09:29:50 <fizzie> Residual (ScummVM subproject to do GrimE too) website claims that you can now play (with "few glitches") all the way through Grim Fandango with it now.
09:30:00 * elliott thinks Grim Fandango might be better than MI1.
09:30:06 <elliott> If not for the controls, at least.
09:30:14 <fizzie> (And you can play the intro video of the demo of Escape from Monkey Island. That's... not quite as far.)
09:30:38 <elliott> I would just use a VM.
09:30:45 <elliott> It's not the most resource-intensive game.
09:30:58 <shachaf> VM running what?
09:31:08 <elliott> Win``doze''.
09:31:13 <elliott> Win``nap''. Win``light sleep''.
09:31:22 <elliott> ``Lose''``light sleep''.
09:31:24 <shachaf> Where am I going to get a Windows CD?
09:31:33 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `Lose''``light: not found
09:31:35 <elliott> With an analog download, of course.
09:31:42 <shachaf> Oh, you crinimal.
09:31:48 <elliott> *cinnamon
09:32:21 <elliott> fizzie: Is it just me, or did ScummVM realise they support every adventure game anyone actually wants to play and just went on a hunt for more and more obscure platforms to implement for kicks?
09:32:25 -!- nooga has joined.
09:32:48 <shachaf> elliott: Did you ever play the Discworld games?
09:33:01 <elliott> OMG, ScummVM can do Toonstruck now???
09:33:01 <shachaf> Speaking of things that ScummVM supports.
09:33:03 <elliott> I take my remark back.
09:33:15 <elliott> shachaf: I think I played one of them for like five minutes once.
09:33:16 <elliott> So, no.
09:33:45 <fizzie> ScummVM's Tinsel (i.e. Discworld) support was real sucky back when they first included it. I guess it's better now, too.
09:35:31 <shachaf> fizzie: There was an annoying bug where it let you play through the entire game but then an item was missing in the final ending ultimate eventual supreme concluding terminating sequence.
09:35:41 <shachaf> And by item I think I mean dragon.
09:35:59 <fizzie> I might have heard something about a missing dragon, it sounds familiar.
09:36:35 <fizzie> I've just played through the first game on DOS, and I think I started the second one once but then for some reason didn't finish it.
09:36:39 <shachaf> http://forums.scummvm.org/viewtopic.php?p=67208&sid=44ec24bd244e3e1d3971fe90d51bd4cc
09:41:26 <zzo38> Due to simplicity of the system, and lack of DRM, makes my system the once most energy efficient too. And in addition, we will even omit whatever parts you don't want (such as printed manual, etc) !
09:46:50 <zzo38> One features of this BIOS is user-definable error emulation mode. Media with physical defects can still be copied! And BIOS can be adjusted by moving jumpers and user programmable ROM without software requiring data in ROM because all system call must be using NMI call and the ROM data and BIOS control cannot be accessed otherwise.
09:47:05 <zzo38> It also mean, no unique identification data can be accessed by the computer software.
09:49:49 <elliott> shachaf: Did you know that Stack Overflow has the single best piece of user interface ever?
09:50:10 <shachaf> elliott: I didn't know that.
09:50:13 <elliott> shachaf: You can only post comments every 15 seconds. Whenever you click the "post comment" button before the timeout expires, it pops up a little message telling you the timer hasn't expired Yet. Then it resets the timer.
09:50:13 <shachaf> I still don't.
09:50:29 <shachaf> zomg
09:50:30 <elliott> The result is hitting the button every 14 seconds about 500 times in a row.
09:50:38 <shachaf> Poor elliott has to learn the art of patience. :-(
09:50:41 <elliott> It's morale-building.
09:50:52 <Sgeo> elliott, is that a UI thing or does the server check?
09:51:00 <elliott> Sgeo: The server checks.
09:51:04 <shachaf> elliott: The really great part is that it says 15 seconds, but it's actually 16.
09:51:11 <elliott> I can honestly think of no conceivable reason to do it other than to annoy people.
09:51:28 <elliott> shachaf: I really hope that's true.
09:52:49 <zzo38> Lack of the copy protection even means that the store won't run out of copies; the store can make their own copy or the customer can do so, too.
09:54:34 <shachaf> I like all those words zzo38 is saying.
09:56:39 <zzo38> shachaf: Including the punctuations and sentences?
10:01:38 <shachaf> zzo38: But mainly the words.
10:02:54 <zzo38> Yes.
10:03:01 <zzo38> OK.
10:03:24 <zzo38> But it is not a complete meaning unless you make the words into sentences too
10:18:10 <elliott> [[
10:18:11 <elliott> catseye started watching ehird/funge-archive 2 days ago
10:18:11 <elliott> funge-archive's description:
10:18:12 <elliott> An archive of various Funge-related material, focusing on (Be)funge-98.
10:18:12 <elliott> ]]
10:18:15 <elliott> Oh no, I might have to actually update that.
10:20:12 <fizzie> Oh ho. There is an EYEBALL on you now.
10:20:51 <elliott> Your GitHub profile is still one of my most-viewed webpages thanks to completion.
10:21:10 <elliott> Hey, he's watching you too.
10:21:11 <elliott> Feel the eyes.
10:21:21 <fizzie> NO.
10:21:21 <elliott> The... cat's eyes.
10:37:35 -!- GreaseMonkey has quit (Quit: The Other Game).
10:51:05 -!- nooga has quit (Ping timeout: 248 seconds).
10:54:49 -!- Phantom_Hoover has joined.
10:55:02 <elliott> hi Phantom_Hoover welcome to hoov univers
10:55:34 -!- Phantom_Hoover has left.
10:55:50 -!- Phantom_Hoover has joined.
10:56:01 <shachaf> hi Phantom_Hoover welcome to hoov univers
10:56:10 <Phantom_Hoover> For some reason all the window borders in Chrome have turned red.
10:56:21 <shachaf> Hmm, it didn't work that time.
10:56:47 <elliott> shachaf: This time it turned all the window borders in Chrome read.
10:56:48 <elliott> red.
10:56:53 <elliott> hi Phantom_Hoover welcome to hoov univers
10:57:04 <elliott> Soon Phantom_Hoover will discover that in the hoov univers, his entire family is made out of hoover.
10:57:09 <Phantom_Hoover> AUGH THE FIRE
10:57:34 -!- elliott has set topic: hi Phantom_Hoover welcome to hoov univers | hi Phantom_Hoover welcome to hoov univers.
10:57:41 <elliott> hi Phantom_Hoover welcome to hoov univers: hi Phantom_Hoover welcome to hoov univers, hi Phantom_Hoover welcome to hoov univers hi Phantom_Hoover welcome to hoov univers. hi Phantom_Hoover welcome to hoov univers? hi Phantom_Hoover welcome to hoov univers!
10:58:17 <shachaf> elliott: Is that a dialect of Ook?
10:58:22 <Phantom_Hoover> THE REEDY PIPES OF THE AWFUL FULLNESS
10:58:22 <elliott> shachaf: hi Phantom_Hoover welcome to hoov univers.
10:58:23 <shachaf> Phantom_Hoover is now a BF derivative.
10:58:29 <elliott> Oh god.
10:58:32 <elliott> He's going to brickbrain himself
10:58:34 <elliott> but the brick
10:58:37 <elliott> will be
10:58:38 <elliott> a hoover
10:58:39 <elliott> hi Phantom_Hoover welcome to hoov univers
10:58:46 <Phantom_Hoover> No, elliott is a creator of a BF derivative.
10:58:52 <elliott> No.
10:58:54 <elliott> You brought this on yourself!
10:58:58 <elliott> YOU BROUGHT THIS ON YOURSELF!!!!
10:59:03 <elliott> FACE YOUR ENDING hi Phantom_Hoover welcome to hoov univers hi Phantom_Hoover welcome to hoov univers hi Phantom_Hoover welcome to hoov univers hi Phantom_Hoover welcome to hoov univers
10:59:25 <shachaf> I think I'm to blame here, actually.
10:59:28 * Phantom_Hoover throws a brick southwards.
10:59:36 <shachaf> I should know better than to say anything in IRC that's ever been said before.
10:59:37 <elliott> Ha!
10:59:41 <elliott> In the hoov universe, topology doesn't work like that.
10:59:44 * Phantom_Hoover throws another brick southwards.
10:59:45 <elliott> Also geometry, but topology sounds fanceir.
10:59:47 <elliott> fancier.
10:59:49 <shachaf> IRC people have a high sensitivity to things being said twice.
10:59:52 <elliott> You're actually throwing bricks at yourself.
10:59:54 <shachaf> As they say in IRC:
10:59:59 <shachaf> "Zero, one, or infinity"
11:00:03 <elliott> In the hoov univers, all paths point Phantom_Hooverwards.
11:00:09 <elliott> shachaf: You forgot two.
11:00:15 <shachaf> elliott is now attempting infinity (and beyond)
11:00:27 <Phantom_Hoover> elliott, sure, but some of them also intersect you.
11:00:30 <shachaf> elliott: You forgot two.
11:00:33 <elliott> Phantom_Hoover: No, it's like a black hole.
11:00:41 <elliott> But only for bricks.
11:01:05 <Phantom_Hoover> I don't think you know how geometry works.
11:01:10 <Phantom_Hoover> IF ONLY YOU READ MAC LANE
11:01:19 <elliott> Phantom_Hoover: Excuse me, this is the hoov univers.
11:01:27 <elliott> Geometry works in whatever way is least personally convenient for you.
11:01:49 <shachaf> hoov universe is #esoteric?
11:02:12 <elliott> Only with the e.
11:02:17 <elliott> The hoov univers is the matrix of solidity itself.
11:02:22 <elliott> It's generated by a hoover.
11:02:23 <shachaf> #soteric
11:02:25 <elliott> A phantom hoover.
11:12:09 <zzo38> Do you agree with me??? Let's accuse the MPAA/RIAA of wasting energy too much!!
11:12:32 -!- zzo38 has quit (Remote host closed the connection).
11:14:54 <shachaf> I agree with zzo38.
11:14:58 <shachaf> elliott: Do you?
11:15:23 <elliott> I agree with everything zzo38 says. Even the ridiculous things.
11:15:34 <elliott> Also the... well, there's no other things left.
11:18:03 <shachaf> I think some of the things zzo38 says aren't ridiculous if you take them out of context.
11:48:39 -!- nooga has joined.
11:48:42 -!- Jafet has quit (Ping timeout: 260 seconds).
11:49:51 -!- Jafet has joined.
12:03:40 -!- Jafet has quit (Read error: Connection reset by peer).
12:03:53 -!- Jafet has joined.
12:10:03 -!- Jafet1 has joined.
12:10:22 -!- Jafet has quit (Ping timeout: 240 seconds).
12:10:48 -!- Jafet1 has quit (Client Quit).
12:22:09 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
12:33:53 -!- nooga has quit (Ping timeout: 253 seconds).
12:37:32 -!- oerjan has joined.
12:40:01 -!- Gregor has set topic: Official channel of Haskelӏ.
12:40:31 -!- Gregor has set topic: Official channel of stupid topic changes | http://codu.org/logs/_esoteric/.
12:41:04 <elliott> Gregor: How does your log formatter decide when a quit should be shown in channel; you don't NAMES periodically so that requires unbounded lookback
12:41:08 <elliott> FINALLY I get that question in while he's here.
12:41:08 -!- nooga has joined.
12:41:38 <Gregor> elliott: My formatter does not work over a partial log, it needs history.
12:41:43 <Gregor> Well
12:41:48 <Gregor> For the purposes of quits it doesn't.
12:42:04 <elliott> Gregor: Oh, you regenerate complete history?
12:42:08 <Gregor> Yes.
12:42:20 <elliott> Gregor: Niice...
12:42:36 <Gregor> The raw logs are canonical, everything else is a nicety.
12:42:50 <elliott> Gregor: Yes, but you should still NAMES periodically to handle desyncs >_>
12:42:59 <elliott> (Periodically = when you switch files, most likely)
12:43:12 <oerjan> you don't need to treat quits specially if the logs are already separated by channel
12:43:34 <Gregor> oerjan: The logs are only separated by channel if you have a per-channel bot ...
12:44:10 <Gregor> elliott: That's probably reasonable, but doesn't accomplish anything I care much about to be honest.
12:44:21 <oerjan> Gregor: well what i mean is that the logic is when you separate things by channel, which happens before even the .raw stage, no?
12:44:36 <elliott> what
12:44:39 <oerjan> in fact it could be done by glogbot directly
12:45:20 <oerjan> Gregor: is glogbot initially writing everything into one big file for all channels combined, or is it writing into separate files for each channels immediately?
12:45:30 <oerjan> *-s
12:45:42 <Gregor> oerjan: One big combined file. It just dumps IRC.
12:45:44 -!- monqy has quit (Quit: hello).
12:45:48 <oerjan> aha.
12:46:20 <fizzie> By your channels combined, I am Captain glogbot.
12:46:25 <Gregor> The bot does as little intelligence as possible so that if the intelligence needs to be fixed or is buggy I can always pass it on.
12:46:40 <oerjan> ok so you do need to seek back to the previous NAMES then, i gues
12:46:42 <oerjan> s
12:46:52 <Gregor> But I don't seek, I just carry the names in the channel.
12:47:06 <Gregor> It would be silly to seek, since the names list is also modified by PART, NICK, KICK, etc.
12:47:40 <oerjan> Gregor: i mean that NAMES tells you the last point for a channel which you don't need to look before to know the nicks present
12:48:01 <Gregor> Right, yes.
12:48:26 <oerjan> but of course if you are doing a rescan of entire history each time you generate files... but isn't that expensive
12:48:43 <Gregor> I only regenerate files if things fuck up.
12:49:05 <Gregor> If things fuck up because I crash, then I don't care, I now have a new starting point to generate from.
12:49:17 <Gregor> If things fuck up because my generator was bad, then I want to regenerate.
12:49:35 <Gregor> Let me explain the process more completely.
12:49:46 <elliott> And if you ever miss a single QUIT or PART because of server issues, you have to special-case it in the generator.
12:49:47 <elliott> If you even notice.
12:49:49 <Gregor> glogbot outputs a log. Its entire session is one log. All PAST sessions are previous logs.
12:50:08 <Gregor> I never need to read past sessions because a fresh session will always have NICK.
12:50:25 <Gregor> And I should never need to restart current sessions unless things crash, but if things crash then I'm fucked anyway.
12:50:47 <Gregor> s/have NICK/have NICKS/
12:50:52 <oerjan> Gregor: ok so it's per session, not periodically split, i guess that makes it easier
12:56:44 -!- cswords has joined.
12:56:45 -!- cswords has quit (Client Quit).
13:10:57 <oerjan> <elliott> shachaf: By the way, do *you* have a simple explanation for http://stackoverflow.com/a/8738053/1097181? I distinctly recall hearing one once.
13:11:03 <oerjan> isn't that just writing it out?
13:11:15 <oerjan> fmap fmap fmap = fmap . fmap
13:11:33 <oerjan> fmap fmap fmap fmap = (fmap . fmap) fmap = fmap (fmap fmap)
13:11:55 <oerjan> fmap fmap fmap fmap fmap = fmap (fmap fmap) fmap = fmap fmap . fmap
13:12:27 <oerjan> fmap fmap fmap fmap fmap fmap = (fmap fmap . fmap) fmap = fmap fmap (fmap fmap) = fmap . fmap fmap
13:12:33 -!- Phantom_Hoover has joined.
13:12:55 <oerjan> fmap fmap fmap fmap fmap fmap fmap = (fmap . fmap fmap) fmap = fmap (fmap fmap fmap) = fmap (fmap . fmap)
13:13:25 <oerjan> fmap fmap fmap fmap fmap fmap fmap fmap = fmap (fmap . fmap) fmap = fmap . fmap . fmap
13:14:18 <oerjan> fmap fmap fmap fmap fmap fmap fmap fmap fmap = (fmap . fmap . fmap) fmap = fmap (fmap (fmap fmap))
13:15:02 <oerjan> fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap = fmap (fmap (fmap fmap)) fmap = fmap (fmap fmap) . fmap
13:15:25 <oerjan> ...shouldn't there have been ar repetition by now.
13:17:31 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
13:19:02 <oerjan> fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap = (fmap (fmap fmap) . fmap) fmap = fmap (fmap fmap) (fmap fmap) = fmap fmap . fmap fmap
13:19:38 <oerjan> fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap = (fmap fmap . fmap fmap) fmap = fmap fmap (fmap fmap fmap) = fmap . fmap . fmap, finally
13:19:57 <oerjan> fmap^12 = fmap^8
13:21:01 <oerjan> ...actually that's not the usual meaning of f^n as functions, but anyhow.
13:21:42 -!- Phantom_Hoover has joined.
13:21:58 <oerjan> :t fmap fmap fmap fmap fmap
13:21:58 <lambdabot> forall a (f :: * -> *) a1 b. (Functor f) => (a1 -> b) -> (a -> a1) -> f a -> f b
13:22:03 <oerjan> :t fmap fmap fmap fmap fmap fmap
13:22:04 <lambdabot> forall a (f :: * -> *) a1 b (f1 :: * -> *). (Functor f, Functor f1) => (a -> a1 -> b) -> f a -> f (f1 a1 -> f1 b)
13:22:07 <oerjan> :t fmap fmap fmap fmap fmap fmap fmap
13:22:08 <lambdabot> forall (f :: * -> *) (f1 :: * -> *) a b (f2 :: * -> *). (Functor f, Functor f1, Functor f2) => f (a -> b) -> f (f1 (f2 a) -> f1 (f2 b))
13:22:10 <oerjan> :t fmap fmap fmap fmap fmap fmap fmap fmap
13:22:11 <lambdabot> forall (f :: * -> *) (f1 :: * -> *) a b (f2 :: * -> *). (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b))
13:22:17 <oerjan> :t fmap fmap fmap fmap fmap fmap fmap fmap fmap
13:22:18 <lambdabot> forall (f :: * -> *) (f1 :: * -> *) (f2 :: * -> *) a b (f3 :: * -> *). (Functor f, Functor f1, Functor f2, Functor f3) => f (f1 (f2 (a -> b))) -> f (f1 (f2 (f3 a -> f3 b)))
13:22:24 <oerjan> :t fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap
13:22:25 <lambdabot> forall a b (f :: * -> *) a1 (f1 :: * -> *). (Functor f1, Functor f) => (a1 -> a -> b) -> f1 a1 -> f1 (f a -> f b)
13:22:28 <oerjan> :t fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap
13:22:29 <lambdabot> forall (f :: * -> *) (f1 :: * -> *) a b (f2 :: * -> *). (Functor f1, Functor f, Functor f2) => f1 (a -> b) -> f1 (f (f2 a) -> f (f2 b))
13:23:34 <oerjan> ok so 6 has the same type as 10, is the first repetition
13:24:09 <Phantom_Hoover> Lymia's pretending to be oerjan?
13:24:52 <oerjan> fmap fmap fmap fmap fmap fmap = fmap . fmap fmap; fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap = fmap (fmap fmap) . fmap
13:26:13 <oerjan> (fmap . fmap fmap) x = fmap (fmap fmap x)
13:26:43 <oerjan> which is still a function, so
13:27:22 <oerjan> = fmap (fmap . x)
13:28:18 <oerjan> while (fmap (fmap fmap) . fmap) x = fmap (fmap fmap) (fmap x) = fmap fmap . fmap x
13:28:37 <oerjan> both still functions
13:29:10 <oerjan> fmap (fmap . x) y vs.
13:29:51 <oerjan> (fmap fmap . fmap x) y = fmap fmap (fmap x y)
13:30:15 <oerjan> oh the functor law of course, they are equal.
13:30:49 <elliott> <oerjan> isn't that just writing it out?
13:30:53 <elliott> that does not _explain_ it, mathematician :P
13:31:14 <oerjan> well i cannot recall an explanation then
13:33:48 <oerjan> 08:46:28: <shachaf> Also, you know how you can usually stick a bunch of fmaps in front of things to get rid of parentheses?
13:33:52 <oerjan> 08:46:45: <elliott> For some sufficiently vague definition of that, sure.
13:33:54 <oerjan> 08:47:13: <shachaf> It doesn't always work, I think, no matter where you spread the fmaps around.
13:34:27 <oerjan> istr it always does.
13:35:00 <oerjan> oh wait hm
13:35:27 <oerjan> if you want there to be no parentheses around the fmaps either, it gets trickier
13:39:50 <oerjan> but with parentheses it's easy enough: a b (c ... y z) = (.) (a b) (c ... y) z and now you have handled one variable, iterate until there are none left
13:40:22 <oerjan> at which point the remaining initial blob can only contain parentheses and .'s
13:48:33 -!- Gregor has set topic: Official channel of frequent stupid topic changes | http://codu.org/logs/_esoteric/.
13:49:03 -!- oerjan has set topic: Official channel of the frequent stupid topic change singularity | http://codu.org/logs/_esoteric/.
13:57:52 -!- oerjan has set topic: Official channel of the frequent stupid topic change singularity: the Sequel | http://codu.org/logs/_esoteric/.
13:59:08 <Phantom_Hoover> http://www.thebestpageintheuniverse.net/c.cgi?u=math
13:59:14 <Phantom_Hoover> I like maths that little bit less now.
13:59:22 -!- nooga has quit (Ping timeout: 240 seconds).
14:01:15 <oerjan> obviously that's because you're an idiot, duh
14:03:21 -!- Ngevd has joined.
14:03:31 <elliott> Phantom_Hoover: You read a Maddox page and your take-away from it wasn't that you like Maddox that little bit less now; you must have reading comprehension difficulties.
14:04:12 <Ngevd> Hello
14:04:51 <Phantom_Hoover> elliott, it would be quite difficult to make me like Maddox that little bit less.
14:05:05 <Ngevd> http://www.bbc.co.uk/news/technology-16424659
14:05:18 <elliott> Phantom_Hoover: Ah; also referred to as "Tau Zero".
14:05:22 <elliott> Without the spaceship.
14:05:27 <elliott> Hey, it has a zero in it.
14:05:40 <Phantom_Hoover> And in any case liking maths that little bit less is the more noteworthy effect, as maths is good and Maddox is... not.
14:05:55 <elliott> He's good at reminding the world that some people are just awful?
14:05:59 <elliott> Public service.
14:06:19 <elliott> Ngevd: Ha ha, you get your news from bbc.co.uk, like an OLD person.
14:07:16 <Phantom_Hoover> Goddamned Swedes.
14:08:09 -!- nooga has joined.
14:09:53 <elliott> Phantom_Hoover: The only positive result of me clicking that link was "ha ha, the shithead has totally sold out by adding margins and a Facebook like button".
14:10:08 <elliott> On the flipside I'm now an advocate for genocide.
14:10:21 <elliott> I would sue you, but the plan is to kill you anyway.
14:10:42 <oerjan> elliott: i got tricked to click an amazon link :(
14:10:54 <oerjan> i thought it was another page on the website
14:11:20 <elliott> oerjan: The main problem here is that you wanted to go to another page on the website.
14:11:22 <oerjan> fortunately i can thwart his scheme buy continuing my policy of not buying anything online.
14:11:45 <oerjan> *by
14:14:09 <elliott> Phantom_Hoover: Hey, I can make you like him a little less:
14:14:11 <elliott> [[How old are you? / Where do you go to school? / Where do you live? / What is your major?
14:14:11 <elliott> At the time of this writing I'm 26, I go to school at the University of Utah; my major is math.]]
14:14:24 <elliott> I think, in context, mathematics is now double ruined.
14:14:35 <Phantom_Hoover> *vomit*
14:14:40 <Phantom_Hoover> how
14:14:44 <Phantom_Hoover> how can he be doing maths
14:14:45 <elliott> Phantom_Hoover: Utah, man.
14:14:50 <Phantom_Hoover> and yet know next to nothing about it
14:14:51 <Ngevd> He's only doing one math.
14:14:52 <elliott> It's, like, Utah.
14:14:58 <Ngevd> Subtraction, maybe
14:15:09 <elliott> Ngevd: :D
14:21:43 <Phantom_Hoover> elliott, for more Maddox, check the comments in /r/math.
14:27:45 <itidus21> mathematics has many military and banking applications
14:28:45 <oerjan> death and taxes, it's all math
14:28:48 <itidus21> but i admit that humans are quite capable of killing each other without logic
14:31:06 <itidus21> i guess to be fair what i should say is, society is always able to force mathematicians to work on military equipment since society controls the flow of money
14:31:55 <oerjan> they have been surprisingly inefficient in my case
14:32:59 <itidus21> i guess that the point is that math has positive purposes which are beyond the agenda of any economic entity
14:33:24 <itidus21> but that it has to endure being used for evil
14:34:37 <itidus21> in my head i am unable to want world peace... to me a world peace sounds fascist and sterile.. a bit like a museum
14:35:36 <itidus21> that is to say, i have concluded that the goal of humans is not to develop peace
14:35:54 <itidus21> perhaps that is the goal of some though
14:39:02 <itidus21> like an isolated village can cope with daily internal conflict..
14:39:21 <itidus21> it doesn't require an absence of conflict
14:40:16 <fizzie> oerjan: Or perhaps you only think they have been ineffectual, while in reality they're killing people with your theorems every day.
14:40:38 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
14:40:57 <itidus21> fizzie: a funny quote about dennis the menace "that boy could turn a marshmallow into a dangerous weapon"
14:41:46 <itidus21> every technology is devoid of moral quality in itself.. i mean, it is only in the application of some technology that it is good or evil
14:42:26 <oerjan> this baby blender is entirely morally neutral
14:42:55 <Ngevd> itidus21, UK or US Dennis?
14:43:08 <itidus21> US cartoon i think.. the goofy blonde kid
14:43:15 <Ngevd> US.
14:43:51 <itidus21> oerjan: well.. what i think about this is
14:44:13 <itidus21> that people have a standard view of what objects are used for what...
14:44:35 <itidus21> and.. (now gaining insight) this enables people to detect abnormal behavior more readily
14:45:00 <oerjan> i think it's a relatively safe bet that few outside the UK even know that the UK dennis exists. although i somehow bumped into it on wikipedia.
14:45:23 <itidus21> i didn't know it was the UK/US thing
14:45:42 <itidus21> but i have encountered a picture of the black haired dennis and wondered why he looked different
14:45:55 <itidus21> with the red and black striped shirt (not cheating here)
14:45:59 <oerjan> i think maybe this channel discussed it before
14:48:04 <itidus21> well its common sense that an executable file is much more dangerous to download than a data file
14:48:33 -!- oklopol has joined.
14:48:44 <itidus21> it took me a while to learn or figure out that a data file is dangerous because it triggers some other code to be executed, and that other code can be imperfect
14:49:07 <Ngevd> Hello oklopol
14:49:14 <itidus21> the other code of course being the program actually reading the data
14:49:28 <elliott> <Phantom_Hoover> elliott, for more Maddox, check the comments in /r/math.
14:49:31 <elliott> Phantom_Hoover: Hmmmmmmmmmmm: no.
14:51:08 <itidus21> for me, at this moment in my life i am hesitant about whether i could come to like haskell (am i talking about something i don't even know about? yes..) anyway..
14:51:25 <elliott> personally i think i dislike this flkwfwejfkle itidus21 has been talking about that i know nothing about
14:51:46 <elliott> i think this is because i've built up an elaborate preconception as to what it is based on no evidence at all, and constantly attack this strawman
14:52:34 <oerjan> elliott: is there going to be a need for my passive aggressivity in this discussion?
14:53:14 <itidus21> elliott: i literally sit around at home every day, wondering what new exciting thing my family will say that will make me die a little bit more inside each time
14:53:26 <itidus21> nothing else is meaningful about me
14:53:44 <elliott> oerjan: you appear to be using the term "discussion". i invite you to consider the term "hopeless"
14:53:54 -!- oerjan has set topic: Official channel of the frequent stupid topic change singularity: the Sequel Prequel, part Three | http://codu.org/logs/_esoteric/.
14:54:19 <oerjan> elliott: ooh, i know all about "hopeless"!
14:54:22 <itidus21> maybe its learning experience
14:56:39 <itidus21> its like, my family can't say anything which will reduce down to logic
14:56:53 <itidus21> its very painful
14:57:58 -!- nooga has quit (Ping timeout: 240 seconds).
14:58:27 <itidus21> like watching someone cycling between the thoughts of "i need to get out of debt" "don't worry i get a big paycheck" "every few weeks i need to borrow money off my mom" "i need to buy absurd novelty items"
14:58:50 <itidus21> "like $90 whiskey bottles"
15:02:46 <itidus21> "my pay is one day late so i throw a dumbbell in a CRT TV and throw a cordless drill through the plaster wall"
15:04:34 -!- azaq23 has joined.
15:05:03 -!- oerjan has quit (Quit: Later).
15:05:18 <itidus21> so, i have learned that such things is for better or worse inherent in random pockets of humanity..
15:06:39 <itidus21> looking in news websites i encounter occasional stories about people dying in trivial arguments
15:07:21 <elliott> I think I know what you mean.
15:07:41 <itidus21> so the lesson i try to take from that is to not try to prove some principle to someone..
15:07:58 <itidus21> BUT
15:08:44 <itidus21> the other day... i was having some delusion that he was leaving the butter out on the bench on purpose for me to put away.. and as i laid in bed a surge of anger rose in me and i confronted him about it
15:08:57 <itidus21> and he was proud of me for it the next day
15:09:40 <coppro> lolwut
15:09:43 <itidus21> he has told me before he is proud of me if i stand up to him when he needs to be stood up to.. ahh its weird
15:09:54 <coppro> go to school
15:10:05 <itidus21> well.. i distort things when i type and think about them
15:10:19 <itidus21> its important to understand that tidus is the least normal person in his house
15:10:24 <itidus21> =))
15:10:35 <elliott> HI COPPRO HOW'S THE WEATHER TODAY
15:10:37 <elliott> IN CANADA
15:10:38 <elliott> AND
15:10:42 <elliott> OTHER PLACES, LET'S TALK EXTENSIVELY ABOUT THE WEATHER
15:10:48 <coppro> IT
15:10:50 <coppro> IS GOOD
15:10:51 <elliott> IT...
15:10:52 <coppro> ELLIOTT
15:10:54 <elliott> OH GOD!!! THAT'S SO COOL
15:10:56 <elliott> HERE IT'S UH
15:10:58 <elliott> KIND OF MODERATE!!!
15:11:01 <coppro> A BIT
15:11:04 <coppro> COLD THOUGH
15:11:05 <elliott> BUT IT COULD ALWAYS CHANGE, THAT'S THE THING ABOUT THE WEATHER
15:11:06 <elliott> ALWAYS CHANGING
15:11:11 <elliott> YES HERE TOO
15:11:14 <elliott> I THINK IT IS: "WINTER"
15:11:18 <Phantom_Hoover> IT'S FREEZING HERE
15:11:19 <elliott> THOUGH, I MAY BE WRONG
15:11:24 <coppro> I LIKE SHORTS
15:11:29 <coppro> THEY'RE COMFORTABLE AND EASY TO WEAR
15:11:39 <elliott> VERILY!!!! HOW IS LIFE IN THE COMMONWEALTH
15:11:42 <elliott> WAIT I'M IN THE COMMONWEALTH TOO
15:11:43 <elliott> UHHH
15:11:47 <Phantom_Hoover> ALTHOUGH THE SKY IS STRANGELY CLEAR
15:11:47 <elliott> HOW'S LIFE IN THE COMMONWEALTH OUTSIDE THE UK
15:11:53 <coppro> BUT I TOOK AN ARROW TO THE KNEE
15:11:56 <elliott> WOW
15:11:58 <elliott> WE'RE NO LONGER FRIENDS
15:12:02 <coppro> GOODBYE
15:12:04 <elliott> HI PHANTOM_HOOVER HOW'S THE WEATHER IN SCOTLAND TODAY
15:12:05 <coppro> I WILL HAVE A SHOWER NOW
15:12:12 <Phantom_Hoover> SEE ABOVE
15:12:20 <Phantom_Hoover> IS THE WEATHER IN HEXHAM STILL SCOTLAND
15:12:20 <elliott> THAT'S AN AMAZING WEATHER
15:12:28 <elliott> I GIVE IT A+ STARS OUT OF 100%
15:12:37 <elliott> YES HEXHAM IS CURRENTLY SCOTLAND (THE COUNTRY)
15:12:44 <elliott> AS SUCH ALL ITS ATTRIBUTES ARE SCOTLAND
15:12:54 <elliott> I'M NOT SURE HOW YOU GUESSED IT WAS MEANT TO BE A SECRET
15:15:53 <Phantom_Hoover> DEEWIANT FOUND OUT
15:17:46 <elliott> THIS IS WHY FINNS SHOULDN'T BE ALLOWED OMNISCIENCE
15:17:53 <elliott> OR OXYGEN
15:19:24 <Phantom_Hoover> BLAME APPLE
15:21:01 <elliott> OK
15:21:02 <elliott> FOR WHAT THO
15:21:19 <Phantom_Hoover> FOR GIVING AWAY THE TERRIBLE SECRET OF HEXHAM
15:23:23 <Deewiant> (Actually blame snowstorm99.)
15:25:16 <itidus21> since this comment will be possibly damaging i will say it as a riddle. what word is 6 letters long and contains the letters 'M', 'A' and 'X'
15:25:58 <Deewiant> maxima
15:26:06 <Deewiant> climax
15:26:17 <itidus21> hehe
15:26:24 <Phantom_Hoover> Maxmax.
15:26:25 <itidus21> >:-)
15:26:28 <Phantom_Hoover> Minmax.
15:26:43 <Deewiant> matrix
15:26:43 <Phantom_Hoover> Hamhex.
15:28:08 <itidus21> and i will list the other 2 now >:-) hexham and maddox
15:28:10 -!- oklopol has quit (Ping timeout: 240 seconds).
15:29:38 <itidus21> it's also noteable that maddox and math begin with ma~
15:32:13 <elliott> fsvo notable
15:32:26 <fizzie> Axeman.
15:32:53 <itidus21> notable for being haunting
15:33:00 <itidus21> that is the true secret of hexham
15:33:07 <itidus21> that it shares 3 letters with maddox
15:33:31 <elliott> Deewiant: Ohh, *that* is what the refrance Phantom_Hoover was.
15:33:44 <elliott> Deewiant: This worries me because it means a third person lives in Hexham.
15:34:01 <itidus21> no ... don't tell me maddox lives in hexham
15:34:08 <elliott> http://www.reddit.com/r/Android/comments/o0bi8/the_weather_for_tuesday_according_to_my_phone/c3dhvx5 STOP MENTIONING HEXHAM IT'S SO WEIRD
15:34:13 <Deewiant> I was surprised somebody didn't pick up on that when I first linked it :-P
15:34:40 <itidus21> lol @ link
15:34:52 <elliott> Deewiant: I thought it vaguely plausible you'd set up Hexham weather on your phone just for shits and giggles.
15:35:00 <fizzie> http://www.wolframalpha.com/input/?i=How+many+people+live+in+Hexham%3F
15:35:28 <elliott> Us Hexhamites and Helsinkopods should set up our phones to have the other one as an alternate location so e.g. we always know the time in the other place.
15:35:31 <elliott> You know, for solidarity.
15:35:52 <Phantom_Hoover> How many Helsinkians are there in here, actually?
15:36:00 <elliott> Phantom_Hoover: At least three.
15:36:02 <Phantom_Hoover> I thought oko at least lived elsewhere in Finland.
15:36:10 <elliott> Well, fizzie, ineiros, Deewiant, atehwa.
15:36:11 <fizzie> I live in Espoo, to be all technical about it.
15:36:22 <fizzie> And so does ineiros; don't know about Deewiant, atehwa.
15:36:23 <Phantom_Hoover> elliott, so the esolanger density is significantly lower than that in Hexham?
15:36:30 <elliott> fizzie: That doesn't really "count", it's all Helsinki to me.
15:36:40 <fizzie> It doesn't really "count" for many people here, too.
15:36:40 <elliott> Phantom_Hoover: Well... Helsinki is rather bigger than Hexham.
15:36:52 <fizzie> oko's from Turku unless I misremember.
15:36:54 <elliott> About 60 times bigger.
15:36:59 <elliott> Yes, trukku.
15:37:01 <elliott> Trurktrtuwu.
15:37:24 <fizzie> 51.7.
15:37:27 <fizzie> http://www.wolframalpha.com/input/?i=%28helsinki+population%29%2F%28hexham+population%29
15:37:42 <Deewiant> I'm in Helsinki.
15:37:45 <fizzie> W|A is really the best thing.
15:37:52 <fizzie> Deewiant: You capitalist.
15:38:01 <Deewiant> That's me.
15:38:34 <elliott> I'm still not convinced Deewiant is a person.
15:38:35 <fizzie> (Generally apartment prices in Helsinki are slightly higher... though there's certainly overlap in that cheap bits of Helsinki are a lot cheaper than expensive bits of Espoo.)
15:39:27 <itidus21> i wonder if they intend to connect interpreters to wolframalpha
15:39:30 <elliott> I can't believe you guys actually called a place Espoo.
15:39:50 <fizzie> Stupid W|A only knows about median home sale prices in U.S.
15:39:56 <fizzie> It's no longer the best thing.
15:40:00 <fizzie> In fact, it's now the worst thing.
15:40:02 <itidus21> i don't really wonder that
15:40:08 <elliott> "The Helsinki University of Technology, in Otaniemi, Espoo"
15:40:11 <fizzie> Sic transit gloria mundi.
15:40:20 <elliott> fizzie: Have you considered gently educating your officials as to how to spell Espoo (i.e. not "Helsinki")?
15:40:25 <fizzie> elliott: It was in Helsinki originally.
15:40:32 <Deewiant> We didn't come up with Espoo, the Swedes did.
15:40:56 <fizzie> (It's Esbo in Swedish.)
15:41:04 <fizzie> (And Helsinki's Helsingfors.)
15:41:43 <fizzie> (Two national languages and all that.)
15:41:44 <elliott> Deewiant: It's always the Swedes.
15:41:49 <Ngevd> Espoo seems to be the Kingston upon Thames of Finland
15:41:54 <elliott> fizzie: Helsingfors is a pretty good name, I gotta say.
15:42:42 <fizzie> It's not a *too* farfetched idea that some day Helsinki, Espoo, Vantaa and Kauniainen will be merged into a single place, though. Certainly it's been proposed a couple of times.
15:42:49 <fizzie> And Kauniainen is completely surrounded by Espoo anyway.
15:42:53 <elliott> "The local taxation rate in Kauniainen is the lowest in Finland (16.5%),[5] which makes the city attractive to the highest earners. This in turn makes the average income generally high, making it possible to keep the taxation rate low without compromising the service to the inhabitants."
15:43:03 <elliott> I bet Deewiant secretly lives in Kauninaineianeinawenwenawkejawenkawjnfnsfljsiojuauauaua.
15:43:11 <fizzie> Rich Swedish-speaking folks live there.
15:43:17 <elliott> (Did I break the vowel harmony?)
15:43:26 <elliott> ("No, just every other rule of the language.")
15:44:08 <Ngevd> elliott, do have any idea when Cock Wood becomes Half Mile Wood
15:44:08 <fizzie> I don't see any yöä there, so I think you're good.
15:44:24 <fizzie> "yökätä" = "to puke" (informally).
15:44:59 <elliott> Ngevd: No, but I suspect it's the basis of approx. 16 thousand trillion billion bad jokes.
15:45:12 * elliott vaguely recalls those place names, though.
15:45:14 <Deewiant> fizzie: To gag, rather.
15:45:29 <fizzie> Deewiant: Gag me with a spoon.
15:45:32 <elliott> fizzie: What's you guys'ses word for "yawn"?
15:45:33 <itidus21> just for the page itself "Graphics & text hack of Super Mario World. It's a cruel, ugly hack dedicated to the glory of 1996-era Bolivia." http://badderhacksnet.ipage.com/badderhacks/index.php?option=com_content&view=article&id=34:bolivia-96&catid=7:snes&Itemid=1
15:45:46 <Deewiant> And not even informally, methinks.
15:46:05 <elliott> "Not even informally" -- Deewiant "methinks" Deewiant
15:46:08 <fizzie> elliott: "haukotella" (verb), "haukotus" (noun).
15:46:40 <fizzie> Hokay, work -> shops -> home now. ->
15:46:51 <elliott> Deewiant: haukotella
15:46:58 <elliott> Deewiant: hauuuuuuuuuukotella
15:47:03 <Ngevd> There are also Swallowship Woods and Wagtail Wood
15:47:10 <Deewiant> elliott: You want the noun for that
15:47:11 <elliott> I'm attempting to disprove my completely ludicrous hypothesis that it only works for English.
15:47:15 <elliott> Deewiant: haukotus
15:47:17 <elliott> Deewiant: hauuuuuukotus
15:47:26 <elliott> Wow, that actually made me yawn.
15:47:36 <Deewiant> The power of Finnish.
15:47:36 <Ngevd> And Wooley Wood
15:53:56 <fizzie> Similarly to the University, the "Helsinki airport" is in fact in Vantaa. (It's proper name is in fact "Helsinki-Vantaa airport", code HEL.)
15:54:54 <Vorpal> hi
15:57:32 <Ngevd> Vorpal, hello
15:58:26 <Vorpal> java is annoying to code in (doing this for university purposes)
15:59:08 <Vorpal> it is like a clunkier C# (yes I know java was around before C#). The languages are very similar, but C# feels more streamlined somehow.
16:00:22 -!- oklopol has joined.
16:10:43 <kallisti> Vorpal: agreed
16:29:56 <kallisti> @src iterate
16:29:56 <lambdabot> iterate f x = x : iterate f (f x)
16:30:53 <Ngevd> Yay
16:32:04 <Ngevd> > map fst (iterate (uncurry (ap (,) . (+))))
16:32:05 <lambdabot> Couldn't match expected type `[(a, b)]'
16:32:05 <lambdabot> against inferred type `(b1,...
16:32:27 <Ngevd> > map fst (iterate (uncurry (ap (,) . (+)) (1,1)))
16:32:28 <lambdabot> Couldn't match expected type `a -> a'
16:32:28 <lambdabot> against inferred type `(b, b)'
16:33:28 -!- nooga has joined.
16:33:57 <Ngevd> > map fst (iterate (uncurry (ap (,) . (+))) (1,1)))
16:33:58 <lambdabot> <no location info>: parse error on input `)'
16:34:07 <Ngevd> > map fst (iterate (uncurry (ap (,) . (+))) (1,1))
16:34:09 <lambdabot> [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,1...
16:34:13 <Ngevd> Get there eventually
16:35:13 * elliott is now 251.761905 times better than Taneb.
16:35:31 <elliott> To celebrate, I'm going to sleep in a minute.
16:36:05 <Ngevd> I'm the lowest ranked person on the only coolness rankings I have ever come across
16:36:31 <Phantom_Hoover> You may live happy in the knowledge that Sgeo would rank lower.
16:36:51 <Sgeo> :(
16:37:15 <elliott> Phantom_Hoover: You forgot that person I'm not going to ping.
16:37:15 <Phantom_Hoover> It's just one of the facts of life, Sgeo.
16:37:28 <elliott> A bitty omission.
16:37:39 <Phantom_Hoover> Vrpal?
16:37:54 <Phantom_Hoover> Lmia?
16:38:03 <elliott> Vorpal: Madoka-Kaname: Congratulations, Phantom_Hoover hates you!
16:38:04 <Phantom_Hoover> Ah.
16:38:26 <Phantom_Hoover> elliott, if they didn't already know that I'm disappointed in myself.
16:41:52 -!- oklopol has quit (Ping timeout: 252 seconds).
16:55:28 <elliott> goop dnight my friendsnj
16:56:06 <Ngevd> Goodnight
17:00:42 -!- elliott has quit (Ping timeout: 276 seconds).
17:11:27 <Ngevd> What time zone is he pretending to be in?
17:13:33 <kallisti> http://www.nokiaphoneblog.com/wp-content/uploads/2009/10/nokia-connocting-poopie.jpg
17:14:51 -!- MSleep has changed nick to MDude.
17:49:47 <fizzie> Ngevd: Elliott time, I'd think.
17:56:39 <kallisti> > length . filter ((/=1) . length . group) . S.toList . S.fromList . replicateM 5 $ "AKQJT98765432"
17:56:43 <lambdabot> 371280
17:57:13 <kallisti> > length . filter ((/=1) . length . group) . S.toList . S.fromList . map sort . replicateM 5 $ "AKQJT98765432"
17:57:15 <lambdabot> 6175
17:59:03 <kallisti> > length . S.toList . S.fromList . map sort . filter ((/=1) . length . group) . replicateM 5 $ "AKQJT98765432"
17:59:06 <lambdabot> 6175
17:59:09 <kallisti> hmmm, no.
17:59:23 <kallisti> > length . S.toList . S.fromList . map sort . {-filter ((/=1) . length . group) .-} replicateM 5 $ "AKQJT98765432"
17:59:26 <lambdabot> 6188
17:59:50 <kallisti> why is this not yielding correct numbers...
18:03:09 <lifthrasiir> the history of my ~/tmp directory is intriguing. the most visible thing is how i have named all those "tmp"-ish directories.
18:04:03 -!- [PiRSq|Finnmark] has joined.
18:04:53 <lifthrasiir> some of the form tmp/YYYYMMDD/ (e.g. 20080801, 20090616, etc.), some of the form _/N/ (ranging from 0 to 5), some of the form old/, old2/, old3/ (i'm glad that i don't have old4/ yet), etc.
18:05:34 <lifthrasiir> some of them contain (mutually incompatible) a.out files.
18:05:37 <kallisti> > permutations "ab"
18:05:38 <lambdabot> ["ab","ba"]
18:10:17 -!- Klisz has joined.
18:11:00 <kallisti> > msum . map Last $ [Just 1, Just 2, Nothing]
18:11:01 <lambdabot> No instance for (Control.Monad.MonadPlus Data.Monoid.Last)
18:11:01 <lambdabot> arising from ...
18:11:14 <kallisti> > mconcat . map Last $ [Just 1, Just 2, Nothing]
18:11:16 <lambdabot> Last {getLast = Just 2}
18:11:23 <kallisti> > mconcat . map Last $ [Just 1, Just 2, Nothing, Just 3]
18:11:24 <lambdabot> Last {getLast = Just 3}
18:11:26 * [PiRSq|Finnmark] .
18:11:35 <kallisti> > mconcat . map First $ [Nothing, Just 1, Just 2, Nothing, Just 3]
18:11:36 <lambdabot> First {getFirst = Just 1}
18:14:00 -!- Taneb has joined.
18:14:01 -!- Ngevd has quit (Read error: Connection reset by peer).
18:14:47 <kallisti> hmmm a simple form of subclassing would be to have typeclass synonyms.
18:15:12 <kallisti> so you could say Ring is MGroup and AGroup (multiplicative group and additive group)
18:16:19 -!- Ngevd has joined.
18:18:18 -!- Slereah has quit (Ping timeout: 240 seconds).
18:19:26 -!- Taneb has quit (Ping timeout: 268 seconds).
18:20:22 -!- Ngevd has quit (Ping timeout: 240 seconds).
18:32:52 <Vorpal> is elliott here (under some other nick)?
18:33:08 <Vorpal> kallisti, ^
18:33:22 <kallisti> yes
18:33:24 <kallisti> I am elliott
18:34:08 <Vorpal> no
18:37:03 <kallisti> my $i = $blah{lc $nick} += my $n = int(rand(5));
18:37:06 <kallisti> there's something so....
18:37:11 <kallisti> good about this line of code.
18:38:07 <kallisti> chaining assignments and += and lexical scope declarations.
18:38:15 <kallisti> this is the way imperative programming is meant to be. :D
18:39:42 <kallisti> my $is = (my $i = $blah{lc $nick} += my $n = int(rand(5))) != 1? 's' : '';
18:39:46 <kallisti> oh god what am I doing
18:41:36 <kallisti> my $is = (my $i = $blah{lc (my $nick = $a->{body} || $a->{who})} += my $n = int(rand(5))) != 1? 's' : '';
18:41:43 <kallisti> no..... I can't continue with these nested assignments.
18:44:05 -!- Ngevd has joined.
18:48:09 <Ngevd> I've got a phantomly Haskell error that I cannot work out
18:48:24 <kallisti> paste pl0x
18:48:31 <Ngevd> http://hpaste.org/56121
18:49:00 <Ngevd> The error comes up when running with the arg "general"
18:49:30 <kallisti> what's the error.
18:49:56 <Ngevd> *** Exception: Prelude.(!!): index too large
18:50:36 <kallisti> :t fromAscList
18:50:37 <lambdabot> Not in scope: `fromAscList'
18:50:44 <kallisti> :t M.fromAscList
18:50:44 <lambdabot> forall k a. (Eq k) => [(k, a)] -> M.Map k a
18:50:49 <kallisti> :t M.AscList
18:50:50 <lambdabot> Couldn't find qualified module.
18:50:53 <kallisti> :t M.fromList
18:50:54 <lambdabot> forall k a. (Ord k) => [(k, a)] -> M.Map k a
18:51:41 <kallisti> I find gen_map kind of confusing, as it doesn't have a complete pattern.
18:51:49 <kallisti> it just checks [] and ["general"]
18:52:04 <Ngevd> I'm gonna add everything else
18:52:08 <Ngevd> Later
18:52:34 <Ngevd> Really, there's going to be similar things to general but military, legal, and domestic
18:52:51 <Ngevd> And political
18:53:11 <kallisti> oh...kay
18:54:35 <kallisti> well uh... I'm guessing you have a field that isn't 4 elements large?
18:54:47 <Ngevd> They all have five.
18:54:53 <Ngevd> It's a rectangular CSV
18:55:23 <kallisti> add a print . filter ((<5).length) grid in main or something
18:55:27 <kallisti> er
18:55:35 <kallisti> print . filter ((<5).length) $ gris
18:55:38 <kallisti> *grid
18:56:33 <Ngevd> Aha
18:56:46 <kallisti> is it grabbing a few empty elements or something?
18:56:54 <Ngevd> There's one that's [[""]]
18:57:00 <kallisti> yeah I thought that might be the case.
18:57:03 <kallisti> or something similar
18:57:09 <Ngevd> Well, [""]
18:57:17 <kallisti> right
18:57:35 <Ngevd> An init should fix this
18:59:27 -!- _Slereah has joined.
19:01:33 <kallisti> Ngevd: also since you're ask_question is an IO function anyway... you can just use randomIO
19:01:49 <kallisti> *your
19:02:03 <itidus21> so i was laying there thinking and it occured to me that odd numbers are gardens of eden among the numbers for the rule a' = a x 2
19:02:15 <itidus21> i think this is a good thing to happen to me
19:02:20 <kallisti> ???
19:03:09 <kallisti> an odd number is defined as an integer n for which there exists an integer k such that n = 2k+1
19:03:49 <kallisti> perhaps I misunderstand what you mean though
19:03:54 <itidus21> i mean there is no odd number a' which satisfies a' = a x 2
19:04:13 <kallisti> well, yes
19:04:18 <kallisti> that's the definition of an even number
19:04:21 <kallisti> and not even is odd
19:04:51 <kallisti> oh you're talking about CA
19:05:00 <kallisti> gardens of eden.
19:05:02 <kallisti> I think?
19:05:04 <itidus21> no.. im trying to combine numbers and CA
19:05:35 <kallisti> so yes..
19:05:42 <itidus21> lets say a 1x1 CA with an unbounded natural numbers
19:06:07 <itidus21> my terminology and notations really sucks :P
19:06:32 <kallisti> nah I got what you're saying.
19:06:35 <quintopia> a*2 is a terrible CA rule
19:06:41 <itidus21> why?
19:06:47 -!- _Slereah has changed nick to Slereah.
19:07:08 <quintopia> the collatz rule is far more interesting
19:07:17 <quintopia> it has methuselahs and everything
19:08:22 <itidus21> i am not quite familiar with the extent to which i can say things like: a' = a * 2 is a CA and on that basis to say odd numbers are gardens of eden
19:08:26 <kallisti> they're garden of eden states in a 1x1 CA grid where the states are natural numbers, because there's no state that you can revert to from an odd number.
19:08:46 <kallisti> ...you're basically describing a recursive equation.
19:09:14 <itidus21> it's all shakey ground for me.. the idea makes sense but terminology and notation is not my strong thing :P
19:09:33 <quintopia> you cannot say its a CA in the traditional sense
19:09:46 <quintopia> since traditional CAs have locality
19:09:53 <quintopia> aka a speed of light
19:10:00 <itidus21> i like the phrase garden of eden
19:10:00 <quintopia> aka bounded spheres of influence
19:10:05 <kallisti> a 1x1 CA might as well be "a variable"
19:10:28 <quintopia> wait
19:10:28 <quintopia> sorry
19:10:36 <kallisti> or well... a FSA
19:10:46 <quintopia> traditional CAs have finite state sets
19:10:50 <quintopia> that is my objection
19:10:56 <kallisti> oh... yes.
19:11:06 <kallisti> not a FSA but an ISA (infinite state automaton :P )
19:11:10 -!- DCliche has joined.
19:11:19 <Ngevd> kallisti, LBA?
19:11:23 <itidus21> at first i thought, ahh a' = a + 1 would not have any gardens of eden in the sense i am describing
19:11:46 <itidus21> i love misusing terminology
19:11:55 <kallisti> Ngevd: pretty sure a LBA has more than one "cell"
19:12:10 <Ngevd> Deadfish is a linear bounded automaton
19:12:20 <itidus21> i am almost certainly misusing terminology
19:12:30 <itidus21> its what i do
19:12:55 <Ngevd> No it isn't
19:13:47 <kallisti> what I'm describing is a finite state automata but with an infinite set of states
19:14:15 <kallisti> a LBA consists of a tape.
19:14:29 <Ngevd> I would say "infinite state automaton" is too general and misleading
19:14:49 <Ngevd> And I have now mentally redefined LBA's
19:14:52 -!- Klisz has quit (Ping timeout: 255 seconds).
19:15:34 <Ngevd> :t M.find
19:15:35 <lambdabot> Couldn't find qualified module.
19:15:39 <Ngevd> :t Map.find
19:15:39 <kallisti> well yes it's possible that giving a FSA an infinite set of states would make it equivalent to some other automaton but I don't really know what that would be.
19:15:40 <lambdabot> Couldn't find qualified module.
19:16:07 <Ngevd> A minsky machine?
19:16:39 <kallisti> not sure that that is.
19:16:46 <kallisti> s/that/what/
19:18:10 <kallisti> oh, hmm... minsky machines are turing machines.
19:18:34 <Ngevd> Minsky machines with more than one register are equivalent to turing machines.
19:18:40 <Ngevd> There is quite a big difference
19:19:34 <kallisti> The three counter machine base models have the same computational power since the instructions of one model can be derived from those of another. All are equivalent to the computational power of Turing machines (but only if Gödel numbers are used to encode data in the register or registers; otherwise their power is equivalent to the primitive recursive functions)
19:38:49 <fizzie> Waiter, there's a counter in my machine.
19:39:10 <Ngevd> Ssh, or everyone will want one!
19:41:06 <kallisti> rage against the counter machine
19:41:08 <kallisti> (bad)
19:44:01 <kallisti> counter against the rage machine
19:44:40 <kallisti> > map unwords . permutations . words $ "rage against the machine"
19:44:41 <lambdabot> ["rage against the machine","against rage the machine","the against rage ma...
19:45:24 <kallisti> > permutations "RATM"
19:45:25 <lambdabot> ["RATM","ARTM","TARM","ATRM","TRAM","RTAM","MTAR","TMAR","TAMR","MATR","AMT...
19:45:30 <fizzie> TRAM.
19:45:47 <kallisti> the against rage machine
19:45:56 <kallisti> > permutations "RATCM"
19:45:57 <lambdabot> ["RATCM","ARTCM","TARCM","ATRCM","TRACM","RTACM","CTARM","TCARM","TACRM","C...
19:46:37 <fizzie> Against the machine rage counter.
19:46:55 <fizzie> fungot: What's the current value of the machine rage counter?
19:46:55 <fungot> fizzie: this is a man to treasure. the thief in the throes of an unraveling alibi. " the massacre of syrs gnelph was not as written a message you got, my brother, and we just keep the safe or tub handy or is the fact that this is apparently a bull penis, and a rather piss-poor excuse. we 8oth of us, the whole plan hinged on that.
19:46:59 <kallisti> the machine counter against rage
19:49:08 <fizzie> Daily trivia factoid: Chrono Cross has 45 playable characters, each with a unique accent. The common dialogue was not, in fact, manually rewritten for each character, but instead generated by running a generic version through an accent generator based on simple rewrite rules.
20:08:23 -!- GreaseMonkey has joined.
20:10:10 -!- [PiRSq|Finnmark] has quit (Quit: bye bye FINNMARK puffin).
20:41:04 -!- oerjan has joined.
20:41:09 <Phantom_Hoover> fizzie, is that actually a factoid?
20:41:45 -!- oerjan has set topic: Official channel of the frequent stupid topic change plurality: the Sequel Prequel, part Three | http://codu.org/logs/_esoteric/.
20:42:58 <oerjan> evning
20:46:05 <oerjan> <itidus21> since this comment will be possibly damaging i will say it as a riddle. what word is 6 letters long and contains the letters 'M', 'A' and 'X'
20:46:13 <oerjan> "scotland", duh
20:46:27 <oerjan> it's like people weren't paying attention
20:49:26 <oerjan> <elliott> Phantom_Hoover: Well... Helsinki is rather bigger than Hexham. <-- are you including the obvious dimensional twistings here?
20:53:41 -!- qfr has quit (Read error: Operation timed out).
20:54:33 <oerjan> <elliott> Wow, that actually made me yawn. <-- gjeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeesp
20:55:04 <oerjan> i guess it doesn't work if he's already sleeping.
20:56:17 <oerjan> :t build
20:56:18 <lambdabot> Not in scope: `build'
20:56:21 <oerjan> @hoogle build
20:56:21 <lambdabot> GHC.Exts build :: (forall b. (a -> b -> b) -> b -> b) -> [a]
20:56:21 <lambdabot> Data.Graph.Inductive.Internal.Heap build :: Ord a => [(a, b)] -> Heap a b
20:56:22 <lambdabot> Graphics.Rendering.OpenGL.GLU.Mipmapping build1DMipmaps :: TextureTarget -> PixelInternalFormat -> GLsizei -> PixelData a -> IO ()
20:57:02 -!- oklopol has joined.
21:00:11 <oerjan> :t let build :: (forall b. (a -> b -> b) -> b -> b) -> [a]; build b = b (:) [] in build
21:00:12 <lambdabot> forall a. (forall b. (a -> b -> b) -> b -> b) -> [a]
21:01:23 -!- pikhq has joined.
21:01:33 -!- pikhq_ has quit (Ping timeout: 252 seconds).
21:01:36 -!- sebbu2 has joined.
21:01:37 -!- sebbu2 has quit (Changing host).
21:01:37 -!- sebbu2 has joined.
21:01:44 -!- MDude has quit (Ping timeout: 260 seconds).
21:02:43 -!- sebbu has quit (Ping timeout: 240 seconds).
21:03:27 <oerjan> :t let build :: (forall b. (a -> b -> b) -> b -> b) -> [a]; build b = b (:) []; iterate f x = build (b x) where { b x cons nil = cons x (b (f x) cons nil) } in iterate
21:03:28 <lambdabot> forall a. (a -> a) -> a -> [a]
21:06:45 -!- ais523 has joined.
21:09:39 -!- MDude has joined.
21:10:18 -!- sebbu2 has changed nick to sebbu.
21:13:51 <oerjan> 17:59:23: <kallisti> > length . S.toList . S.fromList . map sort . {-filter ((/=1) . length . group) .-} replicateM 5 $ "AKQJT98765432"
21:13:54 <oerjan> 17:59:26: <lambdabot> 6188
21:13:57 <oerjan> 17:59:50: <kallisti> why is this not yielding correct numbers...
21:14:05 <oerjan> that would rather depend on what you are trying to calculate.
21:53:44 <kallisti> oerjan: number of distinct combinations in a 5-card hand.
21:57:29 <Sgeo> How are Smalltalk's Bags structured?
21:57:44 <oerjan> kallisti: ic, i cannot see any error either, then
21:57:52 <Sgeo> Or are they similar to Set and ordered by identity or something?
22:00:33 <oerjan> kallisti: as long as you are meant to ignore suits, that is
22:01:19 <kallisti> ah yes that's why it's different
22:01:34 <oerjan> heh XD
22:03:11 <oerjan> > product [52-4 .. 52] `div` product [1..5] -- is this the right answer?
22:03:12 <lambdabot> 2598960
22:04:26 <oerjan> or are you meant to ignore some suit differences but not others.
22:04:56 <oerjan> (e.g. ignore except when a flush is involved)
22:06:56 <ais523> hmm, so apparently Romney beat Santorum by 8 votes
22:07:12 <oerjan> yeah i read that in the (norwegian) paper
22:07:17 <ais523> and the US doesn't use the UK's recount mechanism
22:08:07 <ais523> (in the UK, votes are counted by hand, sorting them into piles by candidate; if the vote count is close, then they check each of the individual piles again, and if it's particularly close even after that, they keep repeating the process until everyone's happy all the votes are in the right place)
22:08:23 <ais523> (and if there's any dispute as to who a vote is for, they make the candidates debate it until they all agree)
22:08:29 <oerjan> ais523: i recall it's a caucus, which uses even more unpredictable voting methods, it may even be by showing hands...
22:08:42 <ais523> haha
22:08:59 <ais523> apparently it was done with check marks or by writing names in by hand
22:09:48 <oerjan> (iowa uses caucus, that is; the next one (new hampshire) uses more conventional voting)
22:11:55 <ais523> ooh, leap second announced in June
22:13:14 -!- derdon has joined.
22:17:25 <ais523> <spambot> What is the fundamental and real concept of roulette?
22:17:32 -!- sebbu2 has joined.
22:17:52 * oerjan tests the russian version on spambot. *BLAM*
22:17:53 -!- oklofok has joined.
22:18:31 -!- sebbu has quit (Disconnected by services).
22:19:34 -!- DCliche has changed nick to Klisz.
22:20:56 -!- iconmaster has joined.
22:21:34 <kallisti> oerjan: no there's no special case for flushes
22:21:40 -!- oklopol has quit (Ping timeout: 260 seconds).
22:22:02 <Ngevd> I like writing Comments on a Postcards, because they are published long after I have forgotten them, and I think: "this sounds familiar"
22:22:10 <Ngevd> Then oerjan tells me I wrote it
22:23:00 -!- oerjan has quit (Remote host closed the connection).
22:24:02 -!- sebbu2 has changed nick to sebbu.
22:25:03 -!- oerjan has joined.
22:26:58 -!- Ngevd has quit (Quit: ask Phantom_Hoover if you're curious).
22:27:25 <oerjan> strange coincidence: i called the isp on Dec 29 because the connection was flaky. since the day after i did that, i've noticed no problems, so i assumed they had somehow fixed it. although they had said they would send a new router, which arrived today.
22:27:40 <oerjan> and just now the connection dropped again.
22:27:59 <oerjan> i guess i'll have to actually install it soon :D
22:29:03 <oerjan> (i'm not actually the direct customer, my landlady is, but she knows approx. 0.01 about computers.)
22:30:15 <oerjan> <kallisti> oerjan: no there's no special case for flushes <-- you didn't say whether my product quotient gave the right answer, though.
22:31:04 <oerjan> i guess your version isn't right either with the filter or without? (the latter would correspond to using more than one 52 card deck, i think.)
22:33:07 <oerjan> @hoogle [a] -> [[a]]
22:33:07 <lambdabot> Data.List inits :: [a] -> [[a]]
22:33:08 <lambdabot> Data.List permutations :: [a] -> [[a]]
22:33:08 <lambdabot> Data.List subsequences :: [a] -> [[a]]
22:33:54 <kallisti> oerjan: hmmmm? the filter is used to get rid of the 5-of-a-kind cases which are impossible
22:34:05 <oerjan> kallisti: that's what i implied
22:34:15 <kallisti> the rest corresponds to a 52 card deck. the reason the results are different is because all of the suits are considered the same.
22:34:25 <oerjan> wat
22:34:46 <oerjan> but _your_ calculation assumes the suits are the same, and you said they were wrong
22:34:52 <kallisti> yes.
22:34:59 <kallisti> well
22:35:00 <kallisti> it's wrong
22:35:11 <kallisti> if you care about suits
22:35:12 <kallisti> but not otherwise.
22:35:18 <kallisti> I think
22:35:19 * oerjan facepalm
22:36:17 <kallisti> >_>
22:36:48 <kallisti> I believe your product quotient is the correct answer is distinct combinations are what you're looking for.
22:37:00 <kallisti> aka 52C5
22:37:02 -!- azaq23 has quit (Quit: Leaving.).
22:37:05 <kallisti> er
22:37:06 <kallisti> not C
22:37:09 <kallisti> the other one
22:37:13 <kallisti> er wait
22:37:13 <kallisti> yes
22:37:13 <kallisti> C
22:37:14 <kallisti> :P
22:37:31 <oerjan> i believe it's very hard to help people when they don't make it clear whether you've found the correct answer or not.
22:38:14 <kallisti> the problem is:
22:38:20 <kallisti> http://en.wikipedia.org/wiki/Poker_probability
22:38:26 <kallisti> the distinct number
22:38:32 <kallisti> is 7,462
22:38:38 <kallisti> and I'm getting 6000-something
22:38:49 <kallisti> I assume "distinct" means "ignoring suit"
22:40:51 <kallisti> > length . S.toList . S.fromList . map sort . {-filter ((/=1) . length . group) .-} replicateM 5 $ "AKQJT98765432"
22:40:54 <lambdabot> 6188
22:41:01 <kallisti> > length . S.toList . S.fromList . map sort . filter ((/=1) . length . group) . replicateM 5 $ "AKQJT98765432"
22:41:05 <lambdabot> 6175
22:41:24 <kallisti> > length . filter ((/=1) . length . group) . replicateM 5 $ "AKQJT98765432"
22:41:26 <lambdabot> 371280
22:42:44 <oerjan> kallisti: the flush case does not ignore suit
22:42:57 <kallisti> ah
22:43:54 <kallisti> hmmm... are you sure
22:44:08 <kallisti> it would seem that if that were the case then the "distinct" and "frequency" columns would be the same for flush.
22:44:22 <oerjan> or wait does it
22:44:31 <oerjan> > 1277*4
22:44:32 <lambdabot> 5108
22:44:41 <oerjan> ok you're right
22:45:04 <kallisti> so I... I really don't know what's wrong.
22:45:15 <kallisti> nor is it incredibly important either. but, it would be nice to know.
22:45:56 <oerjan> > 13*12*11/2
22:45:56 <lambdabot> 858.0
22:46:26 -!- pikhq_ has joined.
22:46:27 -!- pikhq has quit (Ping timeout: 248 seconds).
22:46:31 <kallisti> > 4*4*13*12*11/2
22:46:32 <lambdabot> 13728.0
22:46:37 <kallisti> hm no
22:46:50 <kallisti> > 4*13*12*11/2
22:46:51 <lambdabot> 3432.0
22:46:56 <Sgeo> > replicateM 5 "ABC"
22:46:57 <lambdabot> ["AAAAA","AAAAB","AAAAC","AAABA","AAABB","AAABC","AAACA","AAACB","AAACC","A...
22:46:58 -!- MSleep has joined.
22:47:06 <oerjan> > sum [1,9,156,156,1277,10,858,858,2860,1277]
22:47:07 <lambdabot> 7462
22:47:44 <kallisti> > sequence ["abc", "abc", "abc", "abc", "abc"] -- Sgeo
22:47:45 <lambdabot> ["aaaaa","aaaab","aaaac","aaaba","aaabb","aaabc","aaaca","aaacb","aaacc","a...
22:47:50 <oerjan> oh hm wait
22:48:18 <oerjan> > 7462-1277
22:48:18 <lambdabot> 6185
22:48:32 <oerjan> ic
22:49:02 <oerjan> it's because the flushes count approximately double
22:49:40 <oerjan> most combinations that can give a flush can also give something else if the suits _don't_ match
22:49:52 -!- oklofok has quit (Ping timeout: 240 seconds).
22:49:55 <kallisti> oh yes.
22:50:23 -!- MDude has quit (Ping timeout: 252 seconds).
22:51:24 -!- MDude has joined.
22:51:28 <kallisti> so suit is still important when calculating distinct possibilities
22:51:40 -!- MSleep has quit (Ping timeout: 252 seconds).
22:53:22 <oerjan> > 7462-(1277+10+1)
22:53:23 <lambdabot> 6174
22:53:27 <oerjan> er
22:53:35 <oerjan> > 7462-(1277+9+1)
22:53:36 <lambdabot> 6175
22:54:08 <oerjan> subtracting all the flush variations gives your number
22:54:43 <kallisti> so my calculation is basically counting the distinct combinations of a sequence of card ranks from a deck.
22:54:56 <kallisti> er...
22:54:58 <kallisti> worded better
22:55:10 <kallisti> but not the distinct number of poker hands, ignoring suit.
22:55:53 <oerjan> mhm
22:56:40 <kallisti> heh, I like you've got a 50/50 chance of just getting a really shitty hand
22:56:52 <kallisti> 50% of just a high card.
22:57:02 <kallisti> assuming that the deck is full even.
22:57:34 <kallisti> and then the probabilities of everything else drop hugely
22:58:28 <kallisti> this is why I'm bad at poker
22:58:30 <kallisti> not lucky enough.
22:59:41 <kallisti> maybe I'd be better at lowball poker.
22:59:50 <oerjan> i hear luck has almost nothing to do with it.
22:59:55 <kallisti> so have I.
23:00:20 <kallisti> I mean, making money with poker requires skill
23:00:22 <kallisti> getting good hands
23:00:24 <kallisti> requires luck.
23:01:38 -!- augur has quit (Remote host closed the connection).
23:02:06 -!- iconmaster has quit (Ping timeout: 276 seconds).
23:03:49 <kallisti> I would think lowball rules severely fucks up the game/
23:04:14 <kallisti> so that betting is essentially much riskier.
23:09:19 <kallisti> huh wait...
23:09:21 <kallisti> A wheel or bicycle is the poker hand 5-4-3-2-A, regardless of suit, which is a five-high straight, the lowest-ranking of the straights.
23:09:24 <kallisti> In ace-to-five low poker, where aces are allowed to play as low and straights and flushes do not count against a hand's "low" status, this is the best possible hand.
23:09:33 <kallisti> that's lame. straights and flushes should count against your hand's lowness
23:10:02 <kallisti> you should calculate the priority of your hand as normal, and then invert the ordering.
23:11:15 <kallisti> Deuce-to-seven low is often called Kansas City lowball (the no-limit single-draw variation) or just "low poker". It is almost the direct opposite of standard poker: high hand loses. It is not as commonly used as the ace-to-five low method.
23:11:38 <kallisti> so then the best hand would be 7-5-4-3-2
23:12:36 -!- DCliche has joined.
23:12:47 <kallisti> that would otherwise be the worst possible hand in the game.
23:16:15 <kallisti> plus the deuce-to-seven low hands sound cooler. "Seven perfect", "the nuts", "number one", "eight perfect", "rough eighty-six", "eighty-seven smooth", "average eight", "rough eighty-seven", "nine perfect"
23:16:19 -!- Klisz has quit (Ping timeout: 248 seconds).
23:21:46 <kallisti> hmmm oh ace-to-six low is similar to deuce-to-seven except that aces are considered low.
23:42:33 * Phantom_Hoover → sleep
23:42:34 -!- Phantom_Hoover has quit (Quit: Leaving).
23:51:57 -!- monqy has joined.
23:55:55 -!- Jafet has joined.
2012-01-06
00:06:55 -!- Phantom_Hoover has joined.
00:07:33 <Phantom_Hoover> AUGH I DON'T WANT TO BE SEVENTEEN ARGH
00:07:35 -!- Phantom_Hoover has quit (Client Quit).
00:18:06 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com).
00:22:36 -!- jix has quit (Remote host closed the connection).
00:24:59 -!- kallisti has quit (Quit: leaving).
00:25:33 -!- augur has joined.
00:29:08 -!- kallisti has joined.
00:29:08 -!- kallisti has quit (Changing host).
00:29:09 -!- kallisti has joined.
00:29:41 -!- jix has joined.
00:36:38 -!- Patashu has joined.
01:17:41 <nooga> haha
01:21:00 <oerjan> i'm sorry, you cannot just laugh like that out of the blue. this is a serious channel.
01:21:56 -!- oerjan has set topic: Official revolting channel of the frequent stupid topic change plurality: the Sequel Prequel, part Three | http://codu.org/logs/_esoteric/.
01:22:13 <DCliche> >:/
01:24:19 -!- DCliche has changed nick to Klisz.
01:25:19 -!- pikhq has joined.
01:25:26 -!- pikhq_ has quit (Read error: Operation timed out).
01:29:32 -!- DCliche has joined.
01:32:25 -!- Klisz has quit (Ping timeout: 260 seconds).
01:32:55 -!- qfr has joined.
01:52:38 <kallisti> "The fully qualified name of the original subroutine magically appears in the global $AUTOLOAD variable of the same package as the AUTOLOAD routine. The name is not passed as an ordinary argument because, er, well, just because, that's why."
02:11:00 -!- myndzi\ has changed nick to myndzi.
02:11:27 -!- derdon has quit (Remote host closed the connection).
02:14:05 -!- Darth_Cliche has joined.
02:17:42 -!- DCliche has quit (Ping timeout: 244 seconds).
02:25:59 -!- Darth_Cliche has changed nick to Klisz.
02:35:56 -!- Jafet has quit (Quit: Leaving.).
02:38:00 -!- oerjan has quit (Quit: Good night).
03:00:31 -!- nooga has quit (Ping timeout: 260 seconds).
03:20:15 -!- Jafet has joined.
03:20:36 <ais523> bleh, I've been neglecting my IOCCC submission and there are only 6 days left for me to rememebr how it works
03:43:22 -!- Jafet has quit (Quit: Leaving.).
03:44:16 -!- Jafet has joined.
04:17:22 -!- myndzi\ has joined.
04:18:33 -!- myndzi has quit (Ping timeout: 252 seconds).
04:28:49 -!- MDude has changed nick to MSleep.
04:32:11 -!- olsner has joined.
04:46:56 -!- zzo38 has joined.
04:48:47 <quintopia> oh
05:03:01 -!- yorick has quit (Ping timeout: 260 seconds).
05:05:43 -!- yorick has joined.
05:22:29 -!- Frooxius has quit (Quit: ChatZilla 0.9.88-rdmsoft [XULRunner 1.9.0.17/2009122204]).
05:23:01 -!- Frooxius has joined.
05:29:03 -!- Jafet has quit (Ping timeout: 240 seconds).
05:41:40 -!- Jafet has joined.
06:15:42 -!- DCliche has joined.
06:19:16 -!- Klisz has quit (Ping timeout: 248 seconds).
06:34:56 -!- Klisz has joined.
06:36:00 -!- DCliche has quit (Ping timeout: 252 seconds).
06:40:41 -!- DCliche has joined.
06:41:08 -!- DCliche has quit (Read error: Connection reset by peer).
06:41:27 -!- Klisz has quit (Ping timeout: 252 seconds).
06:49:38 -!- myndzi\ has changed nick to myndzi.
08:27:01 -!- zzo38 has quit (Remote host closed the connection).
08:29:33 -!- shachaf has quit (Read error: Operation timed out).
08:32:29 -!- shachaf has joined.
09:35:01 <fizzie> @tell Phantom_Hoover Factoids need not be factually accurate; anyway, there's a dude in the "developer room" ending saying it's programmatically generated, and I think also implying it's rule-based, though I'm not entirely certain about that.
09:35:01 <lambdabot> Consider it noted.
10:04:12 <ais523> `? wisdom
10:04:23 <HackEgo> wisdom? ¯\(°_o)/¯
10:04:54 <ais523> `ls bin
10:04:58 <HackEgo> ​? \ @ \ No \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ hatesgeo \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ pastlog \ ping \ prefixes \ qc \ quote \ quotes \ roll \ toutf8 \ translate \ translatefromto \ translateto \ units \ url \ welcome \ wl \ word \ words \ wtf
10:05:44 <ais523> `define wisdom is always factually accurate, except for this entry
10:05:50 <HackEgo> No output.
10:05:56 <ais523> `? wisdom
10:06:00 <HackEgo> wisdom? ¯\(°_o)/¯
10:06:03 <ais523> hmm
10:06:11 <ais523> ah, it's learn
10:06:18 <ais523> `learn wisdom is always factually accurate, except for this entry
10:06:23 <HackEgo> I knew that.
10:06:26 <ais523> `? wisdom
10:06:30 <HackEgo> wisdom is always factually accurate, except for this entry
10:10:20 <fizzie> `define wisdom
10:10:23 <HackEgo> ​\ Looking up 127.0.0.1:3128 \ Making HTTP connection to 127.0.0.1:3128 \ Sending HTTP request. \ HTTP request sent; waiting for response. \ Alert!: Unexpected network read error; connection aborted. \ Can't Access `http://google.com/search?q=define:%77%69%73%64%6f%6d' \ Alert!: Unable to access document. \ \ lynx: Can't access startfile
10:10:31 <fizzie> Very good.
10:17:21 -!- zzo38 has joined.
10:17:23 <kallisti> awww yeah my bot is officially better than lambdabot
10:17:32 <kallisti> because it checks identification on bot admins.
10:18:58 <zzo38> I know a chess variant called "Pole chess", where there is one extra piece it is a pole. Pole starts off-board, it cannot capture or be captured, but it can go to any vacant cell.
10:19:38 <zzo38> I played this game once, and I won; neither of us have used the poles but their existence still affected our strategies even though the poles never entered the board.
10:24:15 <zzo38> So, even the rule of the game that are never used can sometimes affect the strategy.
10:29:19 -!- elliott has joined.
10:48:40 <shachaf> Reborn elliott. Rebelliott.
10:49:36 <Jafet> Rebelliorn
10:50:15 <monqy> ellebott
10:50:15 <lambdabot> monqy: You have 1 new message. '/msg lambdabot @messages' to read it.
10:50:27 <monqy> kallisti: hi
10:50:49 <Vorpal> elliott, hi there. I wanted you for something yesterday but I can't remember what it was :/
10:54:43 -!- GreaseMonkey has quit (Quit: The Other Game).
10:55:01 <elliott> Vorpal: great
10:55:04 <elliott> I don't remember either
10:55:24 <Vorpal> elliott, that is pretty easy to explain: you weren't in the channel at the time
10:56:28 <ais523> whew, IOCCC submission in
10:56:42 <ais523> I should really test it on more compilers, but I know I won't
10:56:46 <ais523> so gcc and clang will have to do
10:56:47 <Vorpal> ais523, oh you are competing in IOCCC? Sounds fun :)
10:56:56 <ais523> yes, I think I said as much earlier
10:57:02 <shachaf> IOCCC is going on?
10:57:07 <ais523> shachaf: yep, only 6 days left
10:57:10 <Vorpal> ais523, I don't read /everything/ in this channel.
10:57:11 <ais523> and a few hours
10:57:18 <shachaf> Is augustss competing?
10:57:18 <ais523> so you'd better hurry if you want to get an entry in
10:57:29 <ais523> Gregor has submitted a portable JIT
10:57:31 <Vorpal> ais523, do you think you might be able to win?
10:57:43 <Vorpal> and what sort of submission did you make?
10:57:51 <shachaf> ais523: "JIT"? More like "at least 6 days in advance"
10:57:52 <ais523> short program
10:58:09 <ais523> and I wouldn't enter it if I weren't trying to win
10:58:13 <ais523> but I guess I'll get serious competition
10:58:16 <Vorpal> well okay
10:58:27 <Vorpal> ais523, so what does your program do?
10:58:27 <ais523> hopefully what I'm doing is unique enough to get through
10:58:34 <zzo38> I know another chess variant, set up the board with sixteen dices of your color, 1=Pawn, 2=Knight, 3=Bishop, 4=Rook, 5=Queen, 6=King. After move, you *must* change the moved piece but is not allowed to change it to the opposite number so that it add to 7. Any player with no 6 is loser.
10:58:39 <ais523> that's the part that people have to try to figure out, isn't it?
10:59:04 <Vorpal> ais523, well you said Gregor made a portable JIT for example. I'm just asking for a description on that level of detail
10:59:06 <ais523> but it was more concerned with the way it does things, rather than what it does
10:59:27 <zzo38> It means, the king cannot escape... but you can appoint a new king, or protected by blocking or capturing the attacker.
10:59:29 <Vorpal> though a portable JIT is quite impressive.
10:59:30 <ais523> it involves stack-smashing, portably of course, and not using a language feature that's been used in every submission so far (apart from a couple of cheats)
10:59:49 <Vorpal> you can stack-smash portably?
10:59:51 <Vorpal> that is news to me
10:59:52 <zzo38> It also means bare king loses since you will be forced to move it and therefore to change it.
10:59:54 <ais523> sure
10:59:57 <ais523> just like you can JIT portably
11:00:02 <ais523> ofc, it's just smashing values, not code
11:00:08 <Vorpal> ais523, /pretty/ sure it is undefined behaviour to stack smash
11:00:23 <ais523> it does a whole load of undefined behaviour deliberately
11:00:30 <Vorpal> then it isn't portable
11:00:32 <Jafet> A large majority of ioccc winners have involved undefined behaviour
11:00:32 <ais523> because I started, and then I just kept on going
11:00:34 <zzo38> There is no castling, en-passan, promotion.
11:00:40 <ais523> Vorpal: it's portable if it runs on most machines, isn't it?
11:00:47 <ais523> it's not strictly conforming, but that's something entirely different
11:00:59 <Vorpal> ais523, I would say portable to mean strictly conforming in the context of IOCCC yeah
11:01:07 <ais523> I wouldn't
11:01:09 <Vorpal> hm
11:01:11 <ais523> based on what they've accepted in the past
11:01:12 <Jafet> Vorpal: anything more portable than mullender is given serious consideration
11:01:15 <Vorpal> well okay
11:01:21 <Vorpal> Jafet, mullender?
11:01:29 <Jafet> Or perhaps that later flight simulator using motif
11:01:35 <Vorpal> ah right
11:01:38 <Vorpal> yeah
11:01:45 <Vorpal> well true, I forgot about that
11:01:48 <Jafet> You don't know mullender?
11:01:51 <Vorpal> it wasn't exactly portable
11:01:54 <Vorpal> (the flight sim)
11:02:03 <Vorpal> Jafet, if I do I don't remember the name of it
11:02:06 <Vorpal> tell me what it is
11:02:19 <Vorpal> (I'm terrible at remembering names)
11:02:21 <Jafet> http://www.ioccc.org/1984/mullender.c
11:02:45 <Vorpal> right
11:02:56 <Vorpal> Jafet, which machine?
11:03:15 <Jafet> mullender? vax/pdp polyglot.
11:03:18 <Vorpal> heh
11:03:40 <Vorpal> Jafet, how did they respond to that one? reject it?
11:03:56 <Jafet> Every file on their site is a winner.
11:04:09 <monqy> winner for rules abuse or whatnot?
11:04:09 <Vorpal> oh okay, thought they published all
11:04:11 <Vorpal> hm
11:04:53 <Vorpal> Jafet, hm I wonder if gcc would accept that sort of stuff...
11:05:01 <Jafet> Sure
11:05:08 <Vorpal> really? hm
11:05:24 <Jafet> Someone ported it to geordi/linux/i686
11:05:29 <Vorpal> Jafet, I would expect it to end up in .data rather than .text
11:05:41 <Vorpal> which means it would be marked NX and thus not be executable
11:05:52 <Vorpal> at least on x86-64
11:06:17 <Jafet> It might not work on amd64 then
11:06:54 <Vorpal> nor on modern CPUs at all. You can do NX on anything that supports x86-64 even in 32-bit mode (though you need to turn on PAE for that)
11:07:03 <Vorpal> it depends on where gcc places it I guess
11:07:15 <Jafet> Only if the system decides to use NX
11:07:28 <Vorpal> well linux does. Don't think you can turn it off
11:07:32 <Jafet> I believe Windows, for example, allows turning it off
11:07:48 <Vorpal> well you can force it off for a given program
11:07:55 <Vorpal> some compatibility personality thingy
11:08:09 <Vorpal> iirc
11:08:11 <elliott> <Vorpal> ais523, I would say portable to mean strictly conforming in the context of IOCCC yeah
11:08:16 <elliott> Vorpal: Thus outlawing about 50% of IOCCC winners
11:08:22 <Vorpal> elliott, I realised I was wrong a few lines below :P
11:08:29 <Jafet> More like 90%
11:08:33 <elliott> <Vorpal> Jafet, how did they respond to that one? reject it?
11:08:33 <elliott> <Jafet> Every file on their site is a winner.
11:08:37 <elliott> Vorpal: Changing the rules.
11:08:42 <Vorpal> elliott, right
11:08:49 <ais523> elliott: one thing I find really ironic is that they updated the abuse of the standards category to allow abuse of C99
11:08:52 <ais523> it's ironic because C11 is out now
11:08:59 <elliott> ha
11:09:06 <Jafet> gcc compiles C11 now?
11:09:20 <ais523> I don't think so
11:09:30 <ais523> C11 is really new, it was released right near the end of 2011
11:09:40 <ais523> and it's right near the start of 2012 right now
11:09:56 <Vorpal> Jafet, that would surprise me. It might support a few of the new things if they happened to be available as gcc extensions
11:09:57 <Jafet> Well, they tend to use gcc as the standard
11:10:10 <ais523> Vorpal: a few of the new things happen to be gcc extensions already
11:10:14 <ais523> as usual
11:10:16 <Jafet> And I believe gnu99 is the current default
11:10:23 <ais523> things tend to get standardised if every existing compiler does them already
11:10:25 <Vorpal> ais523, right, I haven't really checked in detail what is new.
11:10:39 <elliott> 17:11:27: <Ngevd> What time zone is he pretending to be in?
11:10:39 <elliott> 17:49:47: <fizzie> Ngevd: Elliott time, I'd think.
11:10:39 <elliott> Bingo.
11:10:43 <elliott> ais523: gcc 4.6 does -std=c1x
11:10:44 <elliott> IIRC.
11:10:51 <Vorpal> heh
11:11:02 <ais523> elliott: option introduced before they knew what the standard would be called?
11:11:04 <Vorpal> well I can't check, I'm on an old system atm
11:11:15 <elliott> 18:03:09: <lifthrasiir> the history of my ~/tmp directory is intriguing. the most visible thing is how i have named all those "tmp"-ish directories.
11:11:15 <elliott> 18:04:53: <lifthrasiir> some of the form tmp/YYYYMMDD/ (e.g. 20080801, 20090616, etc.), some of the form _/N/ (ranging from 0 to 5), some of the form old/, old2/, old3/ (i'm glad that i don't have old4/ yet), etc.
11:11:15 <elliott> 18:05:34: <lifthrasiir> some of them contain (mutually incompatible) a.out files.
11:11:20 <elliott> lifthrasiir: At least your mess is confined to ~/tmp.
11:11:24 <elliott> (Well, okay, it might not be.)
11:11:32 <elliott> ais523: release released before they knew that, I think
11:11:34 <Vorpal> ais523, well, gcc 4.6 is quite recent, and they probably figured it would be between 2011 and 2019
11:11:38 <elliott> it's probably not very complete yet
11:11:42 <Vorpal> so I guess they felt safe about the name
11:11:53 <Vorpal> (iirc gcc 4.6 was released 2011)
11:11:54 <elliott> I wouldn't call it -std=c11 even if the gods told me it would be released under that name.
11:12:03 <elliott> Because you're still implementing a draft standard, not C11 itself.
11:12:04 <Vorpal> (I almost wrote "this year" before I remembered it is 2012)
11:12:45 <Vorpal> <elliott> lifthrasiir: At least your mess is confined to ~/tmp. <-- I have a similar situation, though ~ itself gets a bit messy too sometimes
11:12:50 <Vorpal> I try to avoid that though
11:13:01 <elliott> Vorpal: This is why you use the elliott-standard organisation system.
11:13:13 <Vorpal> elliott, subdirs other than ~/tmp and ~/Desktop are in perfect order though :P
11:13:15 <elliott> Admittedly, the main mess-avoider there is that shells start in ~/tmp :p
11:13:38 <Vorpal> elliott, hah
11:13:57 <ais523> hmm, I use actual /tmp for temporaries
11:14:04 <ais523> it's amusing to look in /var/tmp sometimes
11:14:09 <Vorpal> ais523, my ~/tmp is more like /var/tmp
11:14:11 <ais523> I store files there which are temporary but need to survive reboots
11:14:18 -!- zzo38 has quit (Remote host closed the connection).
11:14:19 <ais523> one of them, was left there for over a year
11:14:23 <Vorpal> heh
11:14:28 <ais523> and I finally did what I wanted to do with it a few days ago
11:14:45 <ais523> -rw-r--r-- 1 ais523 ais523 32956 2010-10-31 14:24 Königsberg_bridges.png
11:14:53 <Vorpal> hm I have test.c test2.c ... test7.c in ~
11:14:58 <Vorpal> I need to check what they are for
11:15:17 <elliott> Oh nooo, not more Ngevd code debugging in the logs.
11:15:21 <Vorpal> char (*(*f)(int,int))[7];
11:15:22 <Vorpal> wut?
11:15:26 <elliott> It would be acceptable if he actually integrated the suggestions that didn't directly fix his bug from last time.
11:15:27 <Vorpal> is that even valid?
11:15:37 <ais523> let me try to decode it
11:15:43 <elliott> So instead you have to mentally patch(1) the code with your previous fixes to understand wtf he's done to it this time.
11:15:52 <Vorpal> ais523, how do you define an array of function pointers in C without using a typedef?
11:15:59 <Vorpal> I think that is what I tried to do and failed
11:16:08 <elliott> char (*f[7])(int,int);
11:16:09 <elliott> methinks
11:16:15 <Vorpal> heh
11:16:16 <elliott> declaration follows use
11:16:18 <Vorpal> possibly
11:16:19 <elliott> (*f[7])(42,42)
11:16:22 <ais523> pointer to function that takes two integer arguments and returns a pointer to an array of 7 chars
11:16:24 <ais523> is Vorpal's line
11:16:30 <elliott> ais523: right, so not valid
11:16:34 <Vorpal> indeed
11:16:41 <ais523> declaration follows use is actually a really simple rule to apply
11:16:45 <Vorpal> so the [7] goes after the function name
11:16:46 <Vorpal> right
11:17:00 <ais523> char (*(f[7]))(int,int); is what I make it
11:17:07 <Vorpal> lets try that
11:17:09 -!- nooga has joined.
11:17:15 <ais523> which is probably equivalent to elliott's, because of operator precedence
11:17:35 <Vorpal> well that compiles
11:18:24 <ais523> cdecl.org translates elliott's suggestion to "declare f as array 7 of pointer to function (int, int) returning char"
11:18:32 <ais523> and mine to the same thing
11:18:45 <Vorpal> hm
11:21:11 <elliott> DEAR PEOPLE PROPOSING EDITS ON SO: You're not meant to *fix* the grammar of "thanks" lines, you're meant to *remove* them!
11:21:48 <monqy> thanks
11:23:12 <elliott> monqy: wouldn't it be great if you had like data Expr = Lit Integer | ... and then could say
11:23:14 <elliott> eval :: Expr -> Integer
11:23:17 <elliott> eval . Lit = id
11:23:22 <elliott> as one of the clauses
11:23:35 <elliott> that would be great, i refuse to believe being able to use compositions on the LHS wouldn't be graet
11:23:38 <elliott> great
11:23:44 <monqy> grate
11:25:28 <monqy> something like that is a thing i really want a lot
11:26:41 <elliott> data Expr = Lit Integer | Add Expr Expr
11:26:43 <elliott> eval . Lit = id
11:26:48 <elliott> (eval .) . Add = liftA2 (+) eval eval
11:26:52 <elliott> the most beautifulest
11:26:52 -!- Phantom_Hoover has joined.
11:27:01 <elliott> is Phantom_Hoover 17 now
11:27:07 <monqy> yikes / yikes
11:27:08 <Phantom_Hoover> Yes.
11:27:08 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
11:27:28 <elliott> Phantom_Hoover: ok nice knowing you /ignored forever
11:27:38 <Phantom_Hoover> fizzie said 1h 52m 11s ago: Factoids need not be factually accurate;
11:28:02 <Phantom_Hoover> The definition is that they're not factual at all, IIRC?
11:28:20 <elliott> Phantom_Hoover: I think that definition appeared about ~30 seconds before it started meaning "small fact" instead.
11:28:33 <elliott> Prescriptivists talk about the Great 30 Seconds of Peace and Meaning.
11:29:06 <monqy> what a Great 30 Seconds they were
11:29:18 <monqy> so much PEaace, and MEaning too
11:39:53 -!- oklofok has joined.
11:51:04 -!- oklofok has quit (Ping timeout: 240 seconds).
12:11:00 -!- azaq23 has joined.
12:32:58 -!- azaq23 has quit (Quit: Leaving.).
12:42:08 -!- oerjan has joined.
12:46:32 <oerjan> HAPPY BIRTHDAY DO YOU, HAPPY BIRTHDAY TO YOOOOOOU, HAPPY BIRTHDAY TO PHANTOM_HOOVER, HAPPY BIRTHDAY TO YOOOU
12:48:52 -!- derdon has joined.
12:50:01 -!- oerjan has set topic: Official revolting channel of the frequent stupid topic change plurality, the Prequel: The Birthday Menace | http://codu.org/logs/_esoteric/.
12:57:10 <elliott> hey oerjan, given two distinct types A and B that you are allowed to choose yourself, can you implement foo :: (A ~ B) => Void
12:57:21 <elliott> hmm, it's easy with A = (), B = Void
12:57:29 <elliott> but choosing Void as one of them is cheating :)
12:58:25 <monqy> foo = unsafeCoerce
12:58:30 <oerjan> i dunno, won't ghc complain if i choose two concrete types which are obviously not ~ ?
12:59:13 * oerjan has never used a ~ in his own program, so may not be the right person to ask anyway
13:00:20 <oerjan> i don't know what A ~ B really allows you to do, especially if it's false.
13:01:13 <kallisti> hmmm you know what I want.
13:01:22 <kallisti> a Perl 5 JIT compiler.
13:04:20 <kallisti> the question is....
13:04:24 <kallisti> uh, how do you parse Perl?
13:04:44 <elliott> You can't.
13:04:48 <elliott> You can execute Perl.
13:04:55 <kallisti> well, obviously.
13:05:03 <kallisti> I write perl code because it's aesthetically beautiful
13:05:05 <kallisti> not because it /runs/.
13:05:10 <elliott> You can execute Perl.
13:05:13 <elliott> You can't parse Perl.
13:05:20 <elliott> Unless you're a Turing Machine.
13:05:28 <elliott> If you are Turing Machine, the process looks exactly like executing Perl.
13:05:28 <elliott> *are a
13:05:32 <kallisti> .....
13:05:33 <kallisti> what.
13:05:43 <kallisti> oh
13:05:44 <kallisti> yes.
13:05:52 <Vorpal> kallisti, he means that parsing perl without executing it can't be done
13:05:54 <elliott> Also, Perl 6 largely originated from the fact that nobody else has ever successfully written a Perl 5 interpreter, as it is defined entirely by its mammoth implementation.
13:05:54 <kallisti> right.
13:05:59 <Vorpal> well, not with a UTM
13:06:08 <kallisti> still imagine...
13:06:10 <elliott> So: Tough.
13:06:10 <kallisti> perl 5 JIT
13:06:29 <Vorpal> why on earth
13:06:42 <kallisti> because I like perl 5 but don't like that it's slow.
13:07:23 <Vorpal> well, it might be possible to JIT it in some limited fashion I guess. Probably rather tricky and also not worth the work
13:07:37 <elliott> If my experience with kallisti's code is any indicator, Perl isn't slow. kallisti's algorithms are slow.
13:07:52 <Vorpal> ah
13:08:08 <Vorpal> well perl is slow as well
13:08:27 <kallisti> elliott: what experience? what algorithms? :P
13:09:02 <elliott> kallisti: words, that factoring thing.
13:09:23 <kallisti> words is pretty reasonably fast. how would you make it faster?
13:09:56 <elliott> It was the generation script. I don't remember what was stupid, but something was stupid.
13:09:59 <oerjan> `words --portuguese 50
13:10:07 <HackEgo> gazedorarifíciar fosfomeçais afarem coralizareis apolar deprimente lantine desencada mimento deslizares quariarás estregá acharpedras arrotado reológica enlaçarei atono imbranslapsulti susaracara crimina evas velmejas ensionariá apanhá dista bambeltancasseis descorrebera pelarias abrido expecerem balação acenço aviamos cilizará navassem fortarem cachegar desenjoa opelão ananejei desproxaria frescorar
13:10:10 <kallisti> you disliked the regex
13:10:13 <kallisti> which was... kind of essential.
13:10:30 <kallisti> but yes I shouldn't have written that in perl.
13:10:59 <kallisti> you mainly didn't like that it was perl.
13:11:31 <Vorpal> kallisti, is the generation script slow?
13:12:01 <kallisti> yes, but I don't think it's because of the algorithm.
13:12:03 <Vorpal> anyway regular expressions is not essential to anything, it is just convenient
13:12:16 <elliott> kallisti: I am dead sure it is.
13:12:17 <Vorpal> kallisti, what is the complexity of the algorithm?
13:12:24 <elliott> The problem is not your language, the problem is almost never your language.
13:12:36 <kallisti> in Perl regex is essential. it's also faster than handrolling the equivalent code that doesn't exist in perl libraries.
13:12:45 <elliott> Unless the best algorithm for the job has an exponentiation in a bad place, or the data set is over ~10 gigabytes, the problem is never your language.
13:12:53 <Vorpal> kallisti, sure, but that is perl
13:12:56 <kallisti> the problem is a) file IO b) perl
13:12:57 <Vorpal> who said it had to be perl?
13:13:05 <kallisti> Vorpal: it doesn't
13:13:14 <kallisti> but
13:13:19 <Vorpal> yes?
13:13:19 <kallisti> if you look I above I say
13:13:23 <kallisti> "in Perl regex is essential"
13:13:26 <kallisti> and then go on to explain why that is
13:13:31 <kallisti> thus the relevance...
13:13:34 <Vorpal> I see
13:13:56 <Vorpal> kallisti, anyway, what is the complexity of your algorithm?
13:13:57 <kallisti> anyway I don't know what the complexity is because I'm bad at that.
13:14:04 <Vorpal> I see
13:14:36 <elliott> I'm suuure it isn't the algorithm.
13:14:54 <Vorpal> elliott, well, why don't you calculate the complexity of the algorithm?
13:15:10 <Vorpal> also: why not just profile it and see where it spends time.
13:15:20 <Vorpal> (if such tools are available for perl)
13:15:41 <kallisti> ...really, how am I going to make "loop through file by line, take first word, split into grams and store in a table" faster (in perl)?
13:15:42 <elliott> Vorpal: ...Because it's not my code?
13:16:14 <Vorpal> fair enough
13:16:34 <Vorpal> kallisti, well, which bit was slow?
13:16:34 <elliott> kallisti: http://prog21.dadgum.com/52.html
13:16:49 <elliott> kallisti: Before complaining that it's a different language starting with P, consider how gigantic a constant factor you would need for that to matter.
13:17:02 <elliott> The problem is not the language.
13:17:07 <elliott> (by which I mean implementation.)
13:17:30 <kallisti> elliott: before you preemptively say snide things, consider maybe waiting for a reason to say them.
13:17:58 <elliott> Nah.
13:18:07 <Vorpal> hah
13:18:34 <elliott> Maybe if it was just snide, rather than snide and factual.
13:19:16 <elliott> Anyway, Perl's internals are pretty well-optimised, to my knowledge.
13:19:17 <kallisti> http://sprunge.us/fFYM analyze the "algorithm"
13:19:28 <Vorpal> kallisti, I would but I can't read perl
13:19:29 <kallisti> if you so desire
13:19:54 <kallisti> oh, then I doubt you can read my perl. :P
13:20:04 <Vorpal> kallisti, why not just profile it?
13:20:16 <kallisti> because that doesn't say anything about the complexity.
13:20:24 <kallisti> the profile will tell you that it "takes a while"
13:20:33 <elliott> kallisti has no idea how profiling works.
13:20:38 <Vorpal> indeed
13:20:40 <elliott> Also, he thinks that algorithm = big-O complexity.
13:20:48 <kallisti> ?
13:20:56 <kallisti> no
13:20:59 <kallisti> that algorithm is not
13:21:01 <kallisti> big-O complexity
13:21:04 <elliott> I say "your algorithm is the problem", you say "profiling my algorithm wouldn't tell me its ocmplexity".
13:21:05 <kallisti> it is a seperate entity.
13:21:11 <elliott> *complexity
13:21:29 <elliott> Anyway, the repeated substrs look suspicious.
13:21:48 <elliott> And a hash table is probably not ideal there; I believe the dictionaries you are using are sorted, and so you could use a trie.
13:22:05 <Vorpal> elliott, wait, is substr "is string in other string"?
13:22:07 <elliott> That would be much better, since you could keep a pointer.
13:22:10 <elliott> Vorpal: No, it's slicing.
13:22:14 <Vorpal> ah
13:22:53 <Vorpal> perl really looks ugly
13:23:34 <Vorpal> I think it is due to the abundance of $ in front of words.
13:23:45 <Vorpal> (mostly)
13:24:30 <Vorpal> elliott, when slicing in perl does it copy the slice or just give you a pointer to a section of the same string?
13:24:38 <Vorpal> as in, is it copy on write (or immutable even)
13:24:47 <kallisti> I'm pretty sure it would need to copy.
13:24:51 <elliott> I don't know.
13:24:59 <kallisti> because perl strings are not completely immutable.
13:25:04 <kallisti> but... who knows.
13:25:15 <elliott> http://www.perlmonks.org/?node_id=4688 OK, substr should be the fastest way.
13:25:19 <Vorpal> kallisti, how large are your data sets and how much time do they take?
13:26:06 <kallisti> gigabytes. hours.
13:26:22 <Vorpal> kallisti, 1 gb? 10 gb? 100 gb?
13:26:37 <elliott> Anyway, complaining about your language implementation before either (a) analysing the algorithm or (b) profiling should be punishable by firing squad.
13:26:45 <elliott> Unless it's PHP.
13:26:57 <itidus21> can i just run into a perl room and show the code and say fix this for some anonymous individual?
13:27:05 <elliott> No.
13:27:08 <itidus21> ok
13:27:20 <kallisti> I can't think of what an inefficient trie implementation would like in Perl
13:27:25 <kallisti> considering that there are 2 data structures.
13:27:32 <kallisti> and references.
13:27:43 <Vorpal> kallisti, do you have a really really really slow disk?
13:27:53 <kallisti> I don't really know actually.
13:27:56 <Vorpal> (I very much doubt it would be IO-bound)
13:28:11 <kallisti> based on resource meters it would appear to be CPU bound as the disk usage meter never hit max
13:28:15 <elliott> @hoogle many
13:28:16 <lambdabot> Text.ParserCombinators.ReadP many :: ReadP a -> ReadP [a]
13:28:16 <lambdabot> Control.Applicative many :: Alternative f => f a -> f [a]
13:28:16 <lambdabot> Text.ParserCombinators.ReadP many1 :: ReadP a -> ReadP [a]
13:28:18 <elliott> @hoogle choice
13:28:18 <lambdabot> Text.ParserCombinators.ReadP choice :: [ReadP a] -> ReadP a
13:28:19 <lambdabot> Text.ParserCombinators.ReadPrec choice :: [ReadPrec a] -> ReadPrec a
13:28:19 <lambdabot> Text.Parsec.Combinator choice :: Stream s m t => [ParsecT s u m a] -> ParsecT s u m a
13:28:38 <kallisti> my hard drive 480 Mbps
13:28:45 <kallisti> according to its description online
13:28:47 <Vorpal> I have a rather old disk here, it takes 30 minutes to copy 10 GB of data from it, and that is in the form of multiple files, so some seeking would be involved.
13:28:59 <Vorpal> so hm, very doubtful you have a worse disk than that
13:29:52 <Vorpal> kallisti, well that number doesn't mean much if it isn't from a source independent of the manufacture.
13:29:59 <Vorpal> manufacturer*
13:30:01 <kallisti> indeed
13:30:05 -!- derdon has quit (Remote host closed the connection).
13:30:17 <elliott> @hoogle [(Int,a)] -> [a]
13:30:17 <lambdabot> Prelude snd :: (a, b) -> b
13:30:17 <lambdabot> Data.Tuple snd :: (a, b) -> b
13:30:17 <lambdabot> System.Random randomRs :: (Random a, RandomGen g) => (a, a) -> g -> [a]
13:30:20 <elliott> oerjan: halp
13:30:37 <Vorpal> kallisti, anyway I recommend you profile the code, it might help
13:30:44 <Deewiant> elliott: What're you after?
13:30:50 <Vorpal> kallisti, and also see elliott's suggestions above
13:31:12 <kallisti> Vorpal: it's not even an issue I'm concerned with now, since I already have all the data.
13:31:17 <Vorpal> hm
13:31:24 <Phantom_Hoover> <elliott> oerjan: halp
13:31:28 <Phantom_Hoover> What are you looking for?
13:31:39 <monqy> elliott: unsafeCoerce . return . head . reverse . map snd
13:31:45 <kallisti> this entire discussion was brought about by elliott complaining about my algorithms.
13:32:04 <Phantom_Hoover> :t unsafeCoerce
13:32:05 <lambdabot> Not in scope: `unsafeCoerce'
13:32:06 <Vorpal> elliott, one advantage with C code is that it is usually easy to figure out why it is slow.
13:32:43 <Vorpal> due to the few layers of abstraction you can pretty much figure out what is going on, when stuff is copied and so on.
13:32:57 <monqy> :t sortBy
13:32:57 <Phantom_Hoover> Hmm, what happens if you unsafeCoerce to Void?
13:32:58 <lambdabot> forall a. (a -> a -> Ordering) -> [a] -> [a]
13:33:06 <Vorpal> (of course C has a lot of disadvantages as well)
13:33:32 <Vorpal> :t Void
13:33:32 <lambdabot> Not in scope: data constructor `Void'
13:33:37 <monqy> elliott: are you looking for something like map snd . sortBy (comparing fst)
13:33:38 <Vorpal> eh,
13:33:40 <Vorpal> :i Void
13:33:40 <Phantom_Hoover> I suppose you'd just get some garbage which called itself a Void.
13:33:43 <monqy> or what
13:33:48 <Vorpal> hm guess it doesn't have that
13:34:01 <kallisti> Vorpal: here's the file sizes since you were curious. http://sprunge.us/aOEW
13:34:02 <Phantom_Hoover> Vorpal, it's not implemented in the standard library IIRC, but you can define it.
13:34:09 <Vorpal> Phantom_Hoover, ah right
13:34:22 <Phantom_Hoover> newtype Void = Void Void
13:34:49 <Vorpal> Phantom_Hoover, well, since it doesn't expose anything that might inspect the values of it I would guess it doesn't do much harm=
13:34:50 -!- sebbu2 has joined.
13:34:50 -!- sebbu2 has quit (Changing host).
13:34:50 -!- sebbu2 has joined.
13:34:51 <Vorpal> s/=/?/
13:36:21 <kallisti> Vorpal: so, 49 GBs I believe
13:36:38 <Vorpal> kallisti, and in total it took a few hours?
13:36:52 <oerjan> <elliott> oerjan: halp <-- what is that supposed to do?
13:36:55 <kallisti> I generally let it run while sleeping. :P
13:37:04 <itidus21> ahhh.. so this is the random word generating project :D
13:37:08 <kallisti> but yes a few hours. maybe 3-4
13:37:26 <kallisti> itidus21: that's part of it, yes.
13:37:32 <itidus21> you some crazy motherfuckers
13:37:36 <Vorpal> meh, not worth dealing with that issue, it should be IO-bound though.
13:37:53 -!- sebbu has quit (Ping timeout: 240 seconds).
13:38:15 <Vorpal> unless you have >49 GB RAM and load it all into RAM before
13:39:01 <Vorpal> which I doubt
13:39:15 <kallisti> no
13:39:16 <oerjan> elliott: i cannot help you when you're not even asking a question
13:39:25 <kallisti> Vorpal: I don't load the individual files into RAM either.
13:39:32 <Vorpal> right
13:39:44 <Vorpal> kallisti, I know someone who has 32 GB RAM in her desktop though, not so far to 40 GB from there.
13:39:53 <Vorpal> err, 49*
13:40:03 <oerjan> :t (uncurry replicate =<<)
13:40:04 <lambdabot> forall b. [(Int, b)] -> [b]
13:40:14 <oerjan> elliott: ^ that one fits your type, at least
13:40:19 <kallisti> the difference between for(<$f>) and while(<$f>) is the difference between reading line by line and reading the entire file into memory.
13:40:30 <Vorpal> kallisti, huh?
13:40:32 <kallisti> ....except reverse the order that I said those.
13:40:38 <kallisti> while reads line by line.
13:40:47 <kallisti> Vorpal: perl stuff
13:40:50 <Vorpal> kallisti, really? That is stupid, it doesn't make sense that it has that effect
13:40:52 <Vorpal> fuck perl
13:40:52 <elliott> oerjan: sorry back
13:40:57 <elliott> oerjan: i wanted what monqy said yeah :P
13:41:01 <kallisti> Vorpal: that's because you don't know why it is.
13:41:12 <elliott> <Phantom_Hoover> newtype Void = Void Void
13:41:14 <elliott> *data Void
13:41:40 <Vorpal> kallisti, oh?
13:41:45 <Vorpal> kallisti, why is it then
13:41:47 <elliott> <Vorpal> elliott, one advantage with C code is that it is usually easy to figure out why it is slow.
13:41:47 <elliott> <Vorpal> due to the few layers of abstraction you can pretty much figure out what is going on, when stuff is copied and so on.
13:41:49 <elliott> Vorpal: Not true.
13:41:53 <Phantom_Hoover> True, but that's a Haskell 2010 thing, so the old one is still relevant.
13:41:58 <Vorpal> elliott, oh?
13:42:05 <Phantom_Hoover> Also, this is Vorpal, so making anything implicit is asking for trouble.
13:42:15 <elliott> Vorpal: Cache locality, blah blah blah, all the things that matter to people who really need optimisation.
13:42:19 <kallisti> Vorpal: http://perldoc.perl.org/perldata.html#Context
13:42:22 <elliott> C abstracts memory too much, basically.
13:42:26 <kallisti> oh hey, it even uses <> as the example.
13:42:32 <kallisti> wasn't expecting that.
13:42:34 <elliott> Phantom_Hoover: You realise as soon as you write "import Data.List" you're invalid Haskell 98?
13:42:37 <elliott> It doesn't even have hierarchical modules.
13:42:49 <elliott> Also, the parsing rule in 98 that 2010 changed was the one that every implementation had done from the start.
13:43:07 <elliott> Haskell 2010 is one of the most minor, status-quo language revisions ever.
13:43:12 <Vorpal> elliott, hm, good point. Though I wasn't thinking about it on that level, more about "does the language represent this in some way that is slow for the purpose I'm using it" sort of thing
13:43:16 <Phantom_Hoover> Is there anything /wrong/ with the newtype definition?
13:43:24 <elliott> Phantom_Hoover: Well, no. But it's ugly.
13:44:13 <Vorpal> kallisti, doesn't say anything about for/while there?
13:44:34 <kallisti> Vorpal: oh well... for takes its argument as a list, while as a scalar.
13:44:39 <Vorpal> ah
13:44:58 <kallisti> if and while are "boolean context" which is just a special case of scalar context.
13:45:09 <Vorpal> kallisti, I'm having problems seeing how <$f> can type as BOTH of those though
13:45:12 <kallisti> the argument to for is going to be list context, obviously.
13:45:19 <kallisti> >_> type?
13:45:25 <Vorpal> oh wait
13:45:34 <Vorpal> does perl even have a type system?
13:45:34 -!- ais523 has quit (Read error: Connection reset by peer).
13:45:39 <kallisti> not perl 5, no.
13:45:41 <kallisti> well
13:45:42 <Vorpal> right
13:45:44 <kallisti> kind of.
13:45:47 <Vorpal> dynamic typing?
13:45:56 <Vorpal> and lots of implicit casts?
13:46:05 <kallisti> there's "lists" and "scalars" and "hashes" and "refs" and "filehandles" and.... but it's dynamically typed.
13:46:43 -!- ais523 has joined.
13:46:49 <oerjan> a kind of system
13:47:08 <kallisti> there's some casting but not always. it's entirely possible to write a subroutine that does two completely different things based on its context.
13:47:18 <kallisti> "casting" isn't really the word.
13:48:09 <Vorpal> ouch
13:48:10 <kallisti> you basically have this dynamically scoped variable that every stack frame can access that tells it what its calling context wants.
13:48:20 <kallisti> and then do something different based on this.
13:48:29 <Vorpal> ouch, that is just a mess
13:48:44 <kallisti> -shrug- it's pretty well-documented, at least in the standard libraries.
13:48:50 <kallisti> and most CPAN libraries as far as I've seen.
13:48:56 <Vorpal> yes but it is an ugly mechanism
13:49:16 <Vorpal> and stupid too
13:49:38 <kallisti> it's certainly convenient, if you understand how it works.
13:50:00 <Vorpal> maybe
13:50:13 <Vorpal> kallisti, anyway would for(my $line = <$f>) even work?
13:50:17 <Vorpal> as in, would it run?
13:50:19 <kallisti> yes
13:50:21 <Vorpal> hm
13:50:33 <Vorpal> kallisti, is <$f> considered a generator expression or something then?
13:51:14 <kallisti> hmmm
13:51:27 <kallisti> I think it's just an operator.
13:51:45 <kallisti> in other words I don't think evaluating <$f> as a list is going to do anything lazily.
13:51:57 <kallisti> but as a scalar it's like a getline function.
13:52:25 <Vorpal> this language is crazy
13:52:33 <kallisti> !perl for("test") { print }
13:52:36 <EgoBot> test
13:52:50 <kallisti> so yeah your above code will grab the first line and store it in $line, and the iterate exactly once
13:52:56 <kallisti> s/the/then/
13:53:15 <Vorpal> ah
13:53:22 <Vorpal> well that makes more sense
13:53:36 <Vorpal> kallisti, I though you said it would read the whole file?
13:53:39 <kallisti> because a scalar value in list context is a 1-element list.
13:53:46 <kallisti> it will, if you evaluate it in list context
13:53:49 <kallisti> my $line = <$f>
13:53:51 <kallisti> is not list context
13:53:54 <Vorpal> I see
13:53:58 <kallisti> my @line = <$f>
13:54:01 <kallisti> would be, however.
13:54:28 -!- monqy has quit (Quit: hello).
13:55:29 <kallisti> I promise it all makes surprising amounts of sense.
13:55:33 <Vorpal> kallisti, that is a really ugly way to do typing, because that seems to be what it does. You have to tell every time you use something if it is a list or a scalar, rather than making it have a type
13:55:54 <Vorpal> unless I misunderstood how $ and @ work
13:56:29 <kallisti> $ and @ are like... variable types.
13:56:42 <Vorpal> hm?
13:56:50 <kallisti> but there are more than 2 kinds of values, obviously.
13:56:56 <Vorpal> you mean you can do $foo = ... and then later read @foo?
13:57:01 <kallisti> oh, no.
13:57:04 <Vorpal> are they different namespaces?
13:57:09 <kallisti> @foo and $foo are different variables
13:57:10 <lambdabot> Maybe you meant: do faq ft todo yow
13:57:14 <Vorpal> ah
13:57:58 <kallisti> the context arises from the assignment operator, which bases its context on what kind of variable you're assigning to.
13:58:16 <kallisti> @list = ... is list context, $list[0] = ... is scalar
13:58:16 <lambdabot> No module "= ... is list context, $list[0] = ... is scalar" loaded
13:58:56 <Vorpal> kallisti, and scalar can be anything? integer, floating point, struct, and so on? What about strings?
13:58:57 <kallisti> the sigil tells you the context of the assignment operator, basically. except when you're assigning to a list of variables, then it's always list context.
13:59:04 <kallisti> Vorpal: yes strings are scalar.
13:59:10 <Vorpal> kallisti, and structs?
13:59:17 <kallisti> well, references.
13:59:27 <kallisti> which can reference hash tables and lists. that's the equivalent of "structs" in Perl.
13:59:38 <Vorpal> ouch
14:00:10 <Vorpal> kallisti, so can you store lists in lists?
14:00:27 <kallisti> well, you can store references to lists in lists.
14:00:30 <kallisti> lists can only contain scalars.
14:00:30 <Vorpal> hm
14:00:37 <kallisti> otherwise all sanity would be lost...
14:00:47 <elliott> <Vorpal> you mean you can do $foo = ... and then later read @foo?
14:00:48 <elliott> <kallisti> @foo and $foo are different variables
14:00:53 <elliott> You can do @foo = ... and read $foo, though.
14:01:00 <Vorpal> elliott, what does that do?
14:01:09 <Vorpal> I thought he said they were different namespaces?
14:01:10 <elliott> It's maximum index or something. I forget.
14:01:14 <Vorpal> so $foo and @foo could coexist?
14:01:15 <kallisti> oh you're thinking of $#foo
14:01:21 <elliott> Hmm.
14:01:26 <Vorpal> kallisti, can $foo and @foo coexist?
14:01:26 <elliott> I thought $foo was scalar @foo if @foo existed.
14:01:33 <kallisti> don't believe so.
14:01:46 <Vorpal> kallisti, so they aren't really different variables then as you claimed
14:02:00 <kallisti> !perl use v5.10; my $x = 2; my @x = (1,2); say @x; say $x;
14:02:00 <EgoBot> 12 \ 2
14:02:02 <kallisti> no they are.
14:02:17 <Vorpal> kallisti, so they can coexist then?
14:02:20 <kallisti> yep.
14:02:20 <Vorpal> right
14:03:15 <Vorpal> kallisti, so $x is not actually a scalar variable named x, but a variable named $x?
14:03:33 <kallisti> it's a variable named $x that holds a scalar value
14:03:37 <Vorpal> hm
14:03:44 <kallisti> the sigil does enforce a constraint on its value.
14:03:46 <elliott> ais523 should really step in here, since IIRC kallisti has been wrong about Perl variables at least once.
14:03:56 <kallisti> elliott: I am not wrong here.
14:04:04 <kallisti> (so reassuring)
14:04:15 <kallisti> anyway I just showed that I'm not wrong.
14:04:18 <kallisti> via Perl code.
14:04:32 * elliott was not arguing.
14:04:34 <kallisti> de facto standard, here. come on.
14:04:58 <kallisti> oh you're saying I might mess up maybe or something.
14:05:00 <kallisti> MORE PREEMPTION
14:05:42 <kallisti> Vorpal: the variable *foo contains a symbol table entry with all of the different kinds of foos. that's always fun.
14:05:48 <kallisti> it's not commonly used in perl 5 though, now that there's references.
14:06:15 <Vorpal> ouch
14:06:55 <kallisti> *foo was basically how you did referency back before references existed.
14:08:34 <kallisti> !perl use v5.10; my $x = 2; my @x = (1,2); say *x{ARRAY}; say *x{SCALAR}; #awww yeah ugly mostly-obsolete shit
14:08:34 <EgoBot> ​\ SCALAR(0x7f562d13cb98)
14:08:43 <kallisti> oh hmmm
14:09:08 <Vorpal> kallisti, that wouldn't work like a pointer anyway?
14:09:57 <kallisti> *foo is like a table of references
14:09:57 <elliott> "Russian composer, singer and recently a record producer. Also an actor in one movie.
14:09:58 <elliott> In my free time (when I have no tour or concert-like events) I usually read some technical literature about modern programming languages and trying to write some useless tools. It's just a hobby, nothing more."
14:10:01 <kallisti> references work like pointers.
14:10:02 <elliott> I thought it was a joke but it seems to... not be.
14:10:11 <kallisti> elliott: cool
14:10:24 <elliott> http://en.wikipedia.org/wiki/Dmitry_Malikov
14:10:25 <elliott> https://github.com/dmalikov
14:10:35 <kallisti> Vorpal: references is one of the nice things about perl compared to ruby and perl, I'd say.
14:10:38 <kallisti> elliott: heh, nice.
14:10:39 * elliott can't figure out whether the guy is just dedicated to the fake identity or not.
14:10:55 <kallisti> "USELESS PATHETIC WRONG"
14:10:57 <elliott> "USELESS PATHETIC WRONG" is a really good project description.
14:10:57 <elliott> Yes.
14:10:58 <Vorpal> kallisti, well, I don't like python and I never used ruby
14:11:00 <Vorpal> so *shrug*
14:11:18 <elliott> kallisti: Yeah, Perl is nicer than Ruby and Perl.
14:11:23 <Vorpal> kallisti, perl looks worse than python though. At least python code doesn't look inherently ugly
14:11:31 <kallisti> elliott: is that... oh that wasn't sarcasm was it.
14:11:35 <Vorpal> elliott, perl is nicer than perl?
14:11:42 <Vorpal> elliott, typo or intentional?
14:11:49 <kallisti> oh
14:11:50 <kallisti> lol
14:12:01 * kallisti should proofread more
14:12:03 <kallisti> s/perl/python/
14:12:16 <elliott> "references is one of the nice things about python compared to ruby and perl, I'd say"
14:12:20 <Vorpal> kallisti, oh right you did that typo too, I read it as python though
14:12:21 <elliott> Way to go, you broke it some more
14:12:21 <kallisti> yes
14:12:44 * elliott desperately tries to find evidence that this guy is actually that guy.
14:12:51 <kallisti> elliott: ask him
14:12:54 <kallisti> best evidence
14:13:08 <elliott> kallisti: That would be so awkward.
14:13:21 <kallisti> "hi are you really the guy" "yes" "cool!"
14:13:22 <Vorpal> * elliott can't figure out whether the guy is just dedicated to the fake identity or not. <-- is the guy claiming to be the same one?
14:13:30 <Vorpal> I mean there could be another person with the same name
14:13:46 <Vorpal> also why is github not loading for me today
14:13:57 * kallisti should actually try to power through some Project Euler sometime.
14:14:06 <elliott> Vorpal: http://stackoverflow.com/users/570689/
14:14:16 <Vorpal> well I can't check if he is claiming to be the same guy since the god damn website isn't loading
14:14:43 <Vorpal> elliott, well, that is possible, who knows
14:15:16 <kallisti> Vorpal: honestly I find Python code semantically uglier because of how simplistic the language actually is. Lack of symbols doesn't really imply pretty code to me anymore.
14:15:24 <itidus21> well he is russian
14:15:39 <Vorpal> kallisti, so you don't like Lisp?
14:15:40 <elliott> "WTF?! This is such a joke, I hope:) Dvitry Malikov - a programmer."
14:15:40 <kallisti> Vorpal: this is probably because I've been programming way too much perl.
14:15:50 <kallisti> Vorpal: I like lisp, but I do find it hard to read.
14:15:52 <elliott> (Translating of "WTF?! Это такой прикол, я надеюсь :) Двитрий Маликов - программист.", a Tweet followed by a link to the profile.)
14:15:55 <elliott> *Translation
14:16:03 <elliott> OK, I'm satisfied, it's not him :P
14:16:08 <elliott> Probably some other guy with the same name.
14:16:10 <elliott> Making a joke.
14:16:18 <elliott> But it really should be him.
14:16:29 <kallisti> Vorpal: I'm sure if I spent as much time learning lisp idioms as I have Perl idioms I would find it easy to read as well.
14:16:35 <itidus21> i want to hear dmitry now
14:16:47 <itidus21> to youtube
14:16:56 <Vorpal> kallisti, personally I prefer a language with some amount of syntax that is between lisp and perl
14:17:07 <kallisti> so, Haskell? :>
14:17:13 <Vorpal> well yes that is a nice one
14:17:32 <Vorpal> kallisti, syntax amount between lisp and perl covers quite a few languages though
14:17:39 <kallisti> yes quite a "few"
14:17:50 <Vorpal> kallisti, probably even "most"
14:18:01 <kallisti> yes they're pretty much on opposite ends there.
14:18:06 <Vorpal> indeed
14:18:31 <kallisti> Perl 6 trumphs Perl 5 in syntax though.
14:18:36 <Vorpal> possibly
14:18:38 <kallisti> in terms of "amount"
14:18:42 <kallisti> whatever that means.
14:18:44 <Vorpal> right
14:18:57 <kallisti> I guess grammar rules.
14:18:59 -!- MSleep has changed nick to MDude.
14:19:02 <Vorpal> kallisti, well, it isn't a well defined concept, I can't give you a number
14:19:11 <Vorpal> but arguably you understood what I meant
14:19:15 <kallisti> yes.
14:19:27 <elliott> perl 6 actually has useful syntax though
14:19:33 <kallisti> so does perl 5?
14:19:35 -!- yorick has quit (Quit: No Ping reply in 180 seconds.).
14:20:00 -!- yorick has joined.
14:20:04 <Vorpal> elliott, also is there a system to it? Or does it feel like someone just piled more and more features on the original language resulting in a mess?
14:20:19 <kallisti> there's a system to it and it's also pretty messy.
14:21:14 <elliott> Vorpal: It's much more consistent.
14:21:18 <Vorpal> there is a difference between java and older C# versions (can't say much about the LINQ stuff and so on, never used that): C# feels like a streamlined and more consistent version of java to me.
14:21:29 <itidus21> http://www.youtube.com/watch?v=tiylH4HIb2A this is dmitry singing
14:21:42 <Vorpal> elliott, well that is good
14:22:03 <kallisti> the Perl 6 spec gives me a headache...
14:22:05 <itidus21> the crowd resembles grass swaying in the wind
14:22:13 <Vorpal> kallisti, oh?
14:22:13 <itidus21> which is kind of unusual
14:22:38 <Vorpal> itidus21, yes usually crowds resemble crowds
14:24:06 <Vorpal> hm I just noticed the moon is highly visible and unusually sharp given that it is daytime, usually when it is visible during day it tends to be faint or such, not so today.
14:24:19 <kallisti> "Perl 6 introduces a binary 'default' operator -- // -- that solves this problem. The default operator evaluates to its left operand if that operand is defined, otherwise it evaluates to its right operand."
14:24:23 <kallisti> uh.... this is new?
14:24:32 <kallisti> I guess maybe Perl 5 borrowed it from Perl 6 or something.
14:24:34 <kallisti> not unlikely.
14:24:40 <elliott> It did.
14:24:54 <elliott> A large number of Perl 5 features are.
14:26:00 <Vorpal> when was perl 5 released, as in 5.0
14:26:45 <Vorpal> ais523, there?
14:27:11 <kallisti> elliott: can you explain why $@ iterates over a filehandle
14:27:14 <Vorpal> guess not
14:27:15 <kallisti> as in $@f
14:27:26 <kallisti> er @!f
14:27:30 <kallisti> ...
14:27:33 <kallisti> @$f
14:27:34 <lambdabot> Done.
14:27:38 <kallisti> yes. done.
14:27:41 <Vorpal> what did it do?
14:27:46 <kallisti> no idea.
14:28:00 <kallisti> @help $f
14:28:00 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
14:28:20 <Vorpal> @$a
14:28:20 <lambdabot> Maybe you meant: . ? @ bf do faq ft id map pl rc v wn
14:28:25 <Vorpal> @$f
14:28:25 <lambdabot> Done.
14:28:27 <Vorpal> huh
14:28:40 <Vorpal> oh it tries to match around typos right?
14:28:47 <Vorpal> @helpp
14:28:47 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
14:28:50 <Vorpal> yeah
14:28:57 <Vorpal> so it could be anything
14:29:31 <Vorpal> kallisti, it could be anything, you could have launched a nuclear missile
14:29:40 <kallisti> cool
14:31:05 <kallisti> ...this spec is filled with some many [Update: ...] annotations that contradict what was previously said, that I should probably just read the Update annotations first as I scan along.
14:31:13 -!- Jafet has quit (Ping timeout: 260 seconds).
14:32:34 <oerjan> @bf
14:32:35 <lambdabot> Done.
14:32:38 <oerjan> thought so.
14:32:50 <kallisti> @13ijwd
14:32:50 <lambdabot> Unknown command, try @list
14:32:52 <Vorpal> oerjan, phew, the Earth is afe
14:32:53 <kallisti> @ijwd
14:32:53 <Vorpal> safe*
14:32:57 <kallisti> @sld
14:32:57 <lambdabot> Maybe you meant: bid id pl slap src
14:33:02 <kallisti> ah nice.
14:33:04 <ais523> Vorpal: no
14:33:07 <ais523> I wasn't
14:33:08 * kallisti should implement this in his bot.
14:33:17 <ais523> does your questions still stand?
14:33:21 <Vorpal> ais523, well now you are: I have a java question.
14:33:21 <oerjan> Vorpal: the error message when you change one letter too much, (i.e. the @$a) gives a hint what @$f may be interpreted as
14:33:22 <Vorpal> and yes
14:34:22 <ais523> oerjan: @$a is, in C notation, *(array*)scalar_a
14:35:01 <Vorpal> ais523, assume a tcp connection, I get something like a fixed size struct over a connection, containing integers and floats, how would I parse that in java? I would like to get it into a class with the relevant fields.
14:35:20 <Vorpal> I guess I could parse it by hand? But how would you convert a binary blob to a float in java?
14:35:28 <elliott> <kallisti> elliott: can you explain why $@ iterates over a filehandle
14:35:28 <elliott> in what
14:35:31 <Vorpal> (assuming I calculated where it is)
14:35:38 <ais523> Vorpal: I'd guess there's some sort of relevant input stream variant
14:35:40 <kallisti> elliott: perl 6
14:35:42 <ais523> try checking the API
14:35:45 <Vorpal> ais523, a socket atm
14:35:48 <kallisti> also it's @$ actually
14:36:01 <ais523> Vorpal: there's probably a wrapper that you can wrap around arbitrary input streams
14:36:04 <elliott> kallisti: well @foo must be a list and a filehandle is presumably a scalar
14:36:07 <ais523> with operations like readInt and readFloat
14:36:12 <elliott> the sigils mean differnt things in 6
14:36:21 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
14:36:22 <Vorpal> ais523, I'm just not sure how to do what is basically *((float*)&foo) in java
14:36:29 <elliott> Vorpal: ais523 has answered your question
14:36:31 <Vorpal> right
14:36:35 <kallisti> elliott: @$fh looks to me like a dereference. but I'm guessing it's not.
14:36:45 <Vorpal> elliott, I'm lagging a bit here
14:37:07 <Vorpal> elliott, he answered it just two seconds before I wrote that last line
14:37:21 <Vorpal> I do have 8 seconds lag though accoding to my irc client
14:37:28 <Vorpal> having a bit of problem with my connection today
14:40:43 -!- Jafet has joined.
14:43:02 <ais523> Vorpal: DataInputStream may be what you're looking for; although it uses its own serialisation rules, not necessarily native byte order
14:43:17 <Vorpal> hm
14:43:30 <Vorpal> ais523, and for outputting I assume there is DataOutputStream?
14:43:38 <ais523> I guess so, although I haven't checked
14:43:47 <Vorpal> ais523, thanks :)
14:44:00 <elliott> Vorpal:
14:44:00 <elliott> longBitsToDouble
14:44:00 <elliott> public static double longBitsToDouble(long bits)
14:44:01 <elliott> Returns the double value corresponding to a given bit representation. The argument is considered to be a representation of a floating-point value according to the IEEE 754 floating-point "double format" bit layout.
14:44:01 <elliott> If the argument is 0x7ff0000000000000L, the result is positive infinity.
14:44:02 <elliott> If the argument is 0xfff0000000000000L, the result is negative infinity.
14:44:04 <elliott> If the argument is any value in the range 0x7ff0000000000001L through 0x7fffffffffffffffL or in the range 0xfff0000000000001L through 0xffffffffffffffffL, the result is a NaN. No IEEE 754 floating-point operation provided by Java can distinguish between two NaN values of the same type with different bit patterns. Distinct values of NaN are only distinguishable by use of the Double.doubleToRawLongBits method.
14:44:08 <ais523> there's also ObjectInputStream that also serialises and deserialises primitives, but it uses the same rules
14:44:24 <Vorpal> elliott, need float not double
14:44:25 <Vorpal> but sure
14:44:38 <ais523> elliott: I was just about to mention that; DataStream says that it uses the same rules as longBitsToFloat/bitsToDouble
14:44:47 <ais523> for representation
14:45:03 <elliott> Vorpal: http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Float.html#intBitsToFloat(int)
14:45:06 <elliott> lol, 1.4.2
14:45:10 <elliott> ais523: Oh.
14:45:14 <elliott> Vorpal: Then it's IEEE.
14:45:18 <elliott> So you don't need that.
14:45:20 -!- Jafet has quit (Ping timeout: 244 seconds).
14:45:31 * elliott knows that Java just casts instead of actually converting.
14:45:36 <Vorpal> of course a float or a double is IEEE
14:45:38 <ais523> elliott: apparently, the representation it uses for characters is "modified UTF-8", which sounds a little scary
14:45:40 <elliott> Even mcmap has manual IEEE encoding/decoding code.
14:45:49 <Vorpal> elliott, why?
14:45:53 <elliott> Write once, run anywhere my ass.
14:45:58 <Vorpal> it could just... cast
14:46:02 <elliott> Vorpal: Um, for non-IEEE platforms?
14:46:05 <Vorpal> right
14:46:08 <elliott> It uses the casting method on IEEE platforms.
14:46:14 <elliott> You have to explicitly opt for the portable method.
14:46:17 <elliott> I don't think anybody has.
14:46:24 <Vorpal> someone wrote code for a non-IEEE platform?
14:46:29 <elliott> Yes, fizzie.
14:46:31 <elliott> I told him to.
14:46:32 <Vorpal> why
14:46:34 <elliott> It's in config.h.
14:46:39 <elliott> (The setting, that is.)
14:46:43 <elliott> Vorpal: Because non-IEEE platforms!
14:46:45 <Vorpal> elliott, it isn't as if I can think of any non-IEEE platform at all
14:46:56 <elliott> mcmap is portable, dude. Portable.
14:46:59 <Vorpal> I mean x86 has long double sure, but double and float are IEEE
14:47:04 <elliott> I'm dead sure there is a platform which can do SDL and glib that doesn't have IEEE floats.
14:47:11 <Vorpal> elliott, which one?
14:47:38 -!- Jafet has joined.
14:48:23 <elliott> Vorpal: Well, it might not be implemented.
14:48:30 <elliott> But I can CONCEIVE of such a platform.
14:48:52 <itidus21> its called itidus's platform of DOOM
14:49:07 <Vorpal> elliott, right
14:50:22 <Vorpal> elliott, all modern architectures I know of either have IEEE hardware floats or no hardware floats.
14:50:34 <Vorpal> and software floats tend to be IEEE ones
14:50:38 -!- Jafet has quit (Read error: Connection reset by peer).
14:50:43 <itidus21> name: itidus's platform of DOOM definition: any platform which opts in for the name, and has precisely SDL and glib and no IEEE floats
14:51:07 <Vorpal> itidus21, :D
14:51:08 <elliott> The UNIVAC 1100/2200 series, introduced in 1962, supported two floating-point formats. Single precision used 36 bits, organized into a 1-bit sign, an 8-bit exponent, and a 27-bit significand. Double precision used 72 bits organized as a 1-bit sign, an 11-bit exponent, and a 60-bit significand. The IBM 7094, introduced the same year, also supported single and double precision, with slightly different formats.
14:51:20 <Vorpal> elliott, does it support SDL and glib?
14:51:22 <elliott> Vorpal: See, you might want to mcmap on a UNIVAC.
14:51:26 <elliott> Vorpal: Well, I'm sure it _could_.
14:51:33 <elliott> We're not tied to any particular SDL or glib implementation, just the API.
14:51:41 <Vorpal> elliott, I'm sure it would be terribly slow
14:51:55 <elliott> Vorpal: The IEEE has standardized the computer representation for binary floating-point numbers in IEEE 754. This standard is followed by almost all modern machines. Notable exceptions include IBM mainframes, which support IBM's own format (in addition to the IEEE 754 binary and decimal formats), and Cray vector machines, where the T90 series had an IEEE version, but the SV1 still uses Cray floating-point format.
14:51:59 <elliott> IBM.
14:52:02 <elliott> Gotta support IBM.
14:52:03 -!- Jafet has joined.
14:52:10 <Vorpal> elliott, "in addition to"
14:52:10 <itidus21> the first clause is to ensure that geeks on wikipedia can't go hunting for implementations of itidus's platform of DOOM since it is opt-in
14:52:13 <elliott> Vorpal: OK, http://en.wikipedia.org/wiki/Cray_SV1
14:52:16 <elliott> Vorpal: 1998.
14:52:18 <Vorpal> sure
14:52:25 <elliott> I'm sure it can run mcmap.
14:52:27 <elliott> Networking, maybe not.
14:52:34 <elliott> Also it probably can't run Unix.
14:52:41 <elliott> So you might need to port SDL and glib.
14:53:04 <Vorpal> "The SV1 was backwards compatible with J90 and Y-MP software, and ran the same UNIX-derived UNICOS operating system"
14:53:13 <Vorpal> elliott, unix-derived
14:53:14 <Vorpal> so hm
14:53:30 <elliott> Vorpal: They probably have a really shitty libc; also we need C99.
14:53:37 <elliott> But MAYBE.
14:53:39 <Vorpal> what do you use C99 for?
14:53:48 <elliott> What do you use C89 for?
14:54:02 <Vorpal> elliott, I meant, why do you need C99 rather than just C89
14:54:16 <elliott> Why do you need C89 rather than just K&R?
14:54:33 <itidus21> for S&G
14:54:48 <Vorpal> elliott, because specific features in the program that uses newer features, and I'm trying to find out which ones those are in this case
14:55:06 <elliott> What?
14:55:31 <itidus21> ^shits and giggles
14:55:45 <Vorpal> elliott, because specific parts of the code of the program uses features not found in K&R, that is why you need C89. And the interesting part is what those features are.
14:56:02 <Vorpal> in the case of mcmap that is
14:56:09 <Vorpal> itidus21, and yes this is rather funny
14:56:59 <ais523> elliott: thinking about things, wouldn't a Java library impl be non-conforming if it didn't translate floats IEEE-style?
14:57:15 <elliott> [elliott@dinky mcmap]$ make CFLAGS="-std=c89 -ggdb3 -O3 -Wall -Werror -Winit-self -DPLATFORM_POSIX -pthread -D_GNU_SOURCE=1 -D_REENTRANT -isystem /usr/include/glib-2.0 -isystem /usr/lib/glib-2.0/include -isystem /usr/include/SDL"
14:57:15 <elliott> mkdir build
14:57:15 <elliott> CC posix.c
14:57:15 <elliott> In file included from posix.c:14:0:
14:57:15 <elliott> types.h:67:1: error: expected identifier or ‘(’ before ‘/’ token
14:57:17 <elliott> [failed command: cc -MMD -std=c89 -ggdb3 -O3 -Wall -Werror -Winit-self -DPLATFORM_POSIX -pthread -D_GNU_SOURCE=1 -D_REENTRANT -isystem /usr/include/glib-2.0 -isystem /usr/lib/glib-2.0/include -isystem /usr/include/SDL -c -o build/posix.o posix.c]
14:57:21 <elliott> make: *** [build/posix.o] Error 1
14:57:23 <elliott> ais523: indeed
14:57:31 <Vorpal> elliott, fuck gcc errors :D
14:57:38 <elliott> Vorpal: // FIXME: Should we transform alpha too?
14:57:39 <elliott> is the line.
14:57:42 <Vorpal> aaah
14:57:51 <Vorpal> elliott, so line comments then
14:57:53 <elliott> There's also a ton of declarations in for loops.
14:57:54 <ais523> that's a reasonably good error message
14:58:01 <elliott> And reasonable shit like that, rather than bunching them all at the start of a function.
14:58:04 <ais523> tells you exactly what character was out of place
14:58:11 <elliott> I think we also use { .foo = ... }.
14:58:14 <elliott> Yes, we do.
14:58:16 <elliott> Quite a lot, even.
14:58:21 <elliott> ((struct foo){ ... }) mainly.
14:58:22 <Vorpal> elliott, indeed
14:58:41 <Vorpal> elliott, sensible reasons :)
14:59:08 <elliott> Oh, we did use nested functions, but don't any more.
14:59:22 <elliott> Those aren't standard at all.
14:59:29 <Vorpal> indeed
14:59:32 <Vorpal> they are just gcc
15:05:26 -!- oerjan has quit (Quit: Later).
15:05:33 <Vorpal> ais523, any idea what swing component might be good for drawing a bitmap quite a lot, as in for a game or such (or maybe I should use some SDL bindings for java?)
15:05:56 <ais523> Vorpal: oh, haha, be careful not to hit an infamous bug/design error in Java's stdlib
15:06:02 <Vorpal> ais523, oh?
15:06:06 <ais523> let me check what I did in jettyplay
15:07:22 <Vorpal> ais523, I just need to blit a bitmap to a jframe basically :)
15:07:23 <elliott> Vorpal: Why are you using Java, why are you drawing a bitmap with Java
15:07:30 <Vorpal> elliott, because of university
15:07:36 <Vorpal> elliott, I would not use java if I could avoid it
15:07:58 <elliott> Can't you use vector stuff rather than blitting a bitmap or w/e
15:08:07 <ais523> oh, and the answer is, I avoided the image stuff like the plague
15:08:21 <ais523> Vorpal: basically, the standard way to do that sort of thing involves BufferedImage
15:08:33 <ais523> but repeatedly redrawing images with that gives a memory leak
15:08:38 <Vorpal> elliott, well I have it as a bitmap, as in, that is how the world is represented. Think a worms style game.
15:08:42 <kallisti> you guys remember AOP?
15:08:44 <Vorpal> (very much simpler than worms though)
15:08:45 <kallisti> I sure don't..
15:08:56 <elliott> Vorpal: You're writing an AI that operates directly on a screen-scraping?
15:08:56 <ais523> and the reason is, that BufferedImage is lazy, and also doesn't optimise for the cases where the image below has already loaded or the current image has no alpha
15:09:12 <elliott> Vorpal: Or what?
15:09:23 <Vorpal> elliott, no? I'm writing the client for this multiplayer game.
15:09:38 <elliott> Vorpal: Why is your output image your in-game representation
15:09:42 <elliott> Presumably there's a rendering step
15:09:46 <elliott> From data structures -> image
15:10:02 <elliott> It'd be easier to use whatever drawing API Swing has directly.
15:10:31 <Vorpal> elliott, you realise how worms work right? the non-3D versions
15:10:38 <Vorpal> elliott, which is that your terrain /is/ an image
15:10:46 <Vorpal> destructible too
15:10:57 <elliott> Yes, I know how Worms works, thank you very much; I daresay I've played it more than you have.
15:11:03 <Vorpal> elliott, probably
15:11:21 <elliott> I wouldn't represent it as an image I mutate to destruct parts of it, but whatever.
15:11:39 <Vorpal> elliott, and thus I need to draw the terrain, plus some players, plus some health bars and so on
15:11:49 <Vorpal> so yes there is a bit of rendering
15:12:06 <ais523> Vorpal: anyway: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4014323
15:12:19 <ais523> comments say that the bug was only partially fixed even though Sun claimed to deliver a fix
15:12:22 <Vorpal> ais523, hm so what to do instead?
15:12:24 <kallisti> elliott: is there any reason I'd want to use an Array instead of a Sequence in representing a chess board in Haskell? I was thinking reads will be predominate, the constant time access could be worth the cost of slower updates, unless I decide to write an AI which uses decision trees.
15:12:37 <ais523> elliott: hmm, I probably would represent Worms terrain as a bitmap
15:12:41 <ais523> although I'm not sure if it would directly be an image
15:12:47 <ais523> probably just a collidable/noncollidable mask
15:13:16 <Vorpal> ais523, indeed, that is basically 1-bit alpha though
15:13:29 <ais523> no, it's a mask
15:13:34 <elliott> kallisti: You should rarely use Sequence. You should never use Array.
15:13:43 <ais523> most likely rendering would be to draw pixels from one image if it's clear and a different one if it's set
15:13:46 <kallisti> so... Map?
15:13:53 <elliott> kallisti: The choice should be between Vector or a Map-alike.
15:14:10 <elliott> I would use a storable vector, but a HashMap would work too.
15:14:11 <Vorpal> ais523, indeed, which is kind of the same effect alpha has, just that alpha is stored interleaved with the image
15:14:27 <ais523> elliott: chess programs normally work efficiently by mutating their chessboard view in-memory stack-style, but that algo is clearly a bad one to use with Haskell
15:14:31 <Deewiant> You're writing a chess AI in Haskell? I was just thinking about doing that last night, but then I figured I'd probably just be disappointed by the performance.
15:14:32 <ais523> I suspect there are other efficient algos
15:14:32 <Vorpal> ais523, anyway what should I do to avoid said bug?
15:14:37 <kallisti> I considered Map but I was under the impression the Sequence had similar complexity characteristics to Map.
15:14:44 <ais523> Vorpal: there's some advice in the thread, but I haven't personally tried it
15:14:46 <kallisti> for linear sequences of things.
15:15:04 <elliott> ais523: Why are you telling me this?
15:15:12 <elliott> Deewiant: Do it anyway, kallisti will inevitably produce something terrible. I mean, uh.
15:15:23 <elliott> (Performance in which sense?)
15:15:28 <Vorpal> <ais523> oh, and the answer is, I avoided the image stuff like the plague <-- doing what instead?
15:15:29 <Deewiant> I'd rather go improve stockfish or something
15:15:30 <kallisti> well no I don't intend to write an AI just yet
15:15:32 <ais523> elliott: I thought it was vaguely relevant
15:15:36 <kallisti> I'm just going to write the server program first.
15:15:44 <ais523> Vorpal: rendering the entire thing with graphical primitives and text-drawing primitives
15:15:46 <elliott> Deewiant: Who the fuck works on other people's code?
15:15:47 <kallisti> for a chess variant.
15:15:49 <Vorpal> ais523, ah...
15:15:53 <ais523> because that works quite well for a terminal
15:16:02 <Vorpal> ais523, I guess there are SDL bindings for java...
15:16:02 <ais523> probably not so well for other programs
15:16:08 <elliott> http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=sdl+java
15:16:19 <kallisti> elliott: Vector has a lot of modules... which ones besides Data.Vector are worth looking at.
15:16:31 <elliott> kallisti: http://hackage.haskell.org/package/vector
15:16:37 <elliott> An efficient implementation of Int-indexed arrays (both mutable and immutable), with a powerful loop optimisation framework .
15:16:37 <elliott> It is structured as follows:
15:16:37 <elliott> Data.Vector
15:16:37 <elliott> Boxed vectors of arbitrary types.
15:16:37 <elliott> Data.Vector.Unboxed
15:16:38 <elliott> Unboxed vectors with an adaptive representation based on data type families.
15:16:40 <elliott> Data.Vector.Storable
15:16:42 <elliott> Unboxed vectors of Storable types.
15:16:44 <elliott> Data.Vector.Primitive
15:16:46 <elliott> Unboxed vectors of primitive types as defined by the primitive package. Data.Vector.Unboxed is more flexible at no performance cost.
15:16:49 <Deewiant> elliott: Well, even if I write my own, it'd have to be in C or some such, because of course the goal is to be the world's best :-P
15:16:49 <elliott> Data.Vector.Generic
15:16:49 <kallisti> elliott: .......
15:16:51 <elliott> Generic interface to the vector types.
15:16:53 <elliott> Each module has a Safe version with is marked as Trustworthy (see http://hackage.haskell.org/trac/ghc/wiki/SafeHaskell).
15:16:54 <Vorpal> ais523, so, there is nothing mentioned there since 2004, I guess that might mean the bug is fixed?
15:16:56 <elliott> This snarky copy-paste brought to you by the power of reading.
15:17:00 <Vorpal> ais523, I'm using JDK 7 so
15:17:04 <ais523> Vorpal: it isn't
15:17:10 <elliott> Deewiant: Just a tad hubristic
15:17:16 <Vorpal> huh, strange the bug has no activity then
15:17:17 <kallisti> elliott: I was just on that page. weird, huh?
15:17:20 <ais523> what happened is that Sun locked the thread, because it'd been fixed for a couple of years according to their records
15:17:25 <Vorpal> ah
15:17:27 <elliott> kallisti: You evidently didn't read it, because it told you exactly what the relevant modules were for.
15:17:28 <ais523> even though it was only a partial fix
15:17:30 <Vorpal> I see
15:17:33 <elliott> And I previously even gave you a recommendation of which kind to use.
15:17:33 <ais523> apparently, it was even worse a while ago
15:17:35 <Vorpal> ais523, that is a jerk move
15:17:45 <ais523> Vorpal: no, that's an automated bug database maintenance move
15:17:48 <Vorpal> ah
15:17:50 <kallisti> elliott: it doesn't say anything about the Fusion stuff.
15:18:05 <Vorpal> ais523, oh well, I guess I might just use SDL or such
15:18:18 <elliott> kallisti: Maybe it omits some of the exposed modules because they're not relevant to you, in an attempt to try and answer the question you just asked me.
15:18:19 <Deewiant> elliott: I'm just too competitive, I'd be annoyed/lose interest if it ends up being too poor
15:18:22 <elliott> (It does.)
15:18:50 <elliott> Deewiant: I think you'd do rather badly in a field as competitive and high-stakes as chess AI then, unless you're prodigal or an expert :P
15:19:20 <kallisti> elliott: you are more trusting than I.. :P
15:19:42 <kallisti> Vector looks good though.
15:19:51 <kallisti> I think this is what I want.
15:20:08 <Deewiant> elliott: Exactly, which is why I figured I'd rather drop it
15:20:20 <Vorpal> ais523, doesn't jframe have some surface I could draw directly to hm?
15:20:26 <Deewiant> I don't feel like making a poor AI and I know I probably won't be able to make a good AI
15:20:33 <Vorpal> somehow stuff must be able to draw to it, I mean the existing components
15:20:39 <kallisti> unfortunately it doesn't appear to have an Ix-like thing
15:20:41 <ais523> Vorpal: you don't draw directly to jframe ever, you draw to a panel you put inside the frame
15:20:49 <kallisti> so I can't use tuples to index a 2D Vector :( ah well
15:20:58 <Deewiant> At least without spending a /lot/ of time on it, and I don't think I have enough interest :-P
15:20:59 <Vorpal> ais523, okay so does the panel have a surface I can draw a bitmap to directly?
15:21:01 <ais523> and you can easily get a Graphics for a JPanel, for the purpose of drawing on
15:21:13 <Vorpal> right
15:21:18 <Vorpal> then I could just blit to it I presume
15:21:20 <ais523> Vorpal: the problem's that you have to go through Graphics' methods; or in practice, Graphics2D's methods
15:21:29 <Vorpal> ais523, can't draw a bitmap?
15:21:32 <ais523> (the Graphics you get is declared as a Graphics, but is always actually a Graphics2D; I consider this an API mistake)
15:21:33 <Vorpal> hm
15:21:49 <Vorpal> ais523, as opposed to Graphics1D?
15:21:59 <elliott> <kallisti> unfortunately it doesn't appear to have an Ix-like thing
15:22:10 <elliott> kallisti: Just define your own indexing/update functions, takes about 3 seconds.
15:22:16 <ais523> Vorpal: nah, Graphics2D is just a particular specialisation of Graphics
15:22:17 <elliott> Ix is way overcomplicated.
15:22:19 <kallisti> elliott: that's the idea.
15:22:23 <elliott> That's one reason Vector is nicer :P
15:22:28 <elliott> kallisti: Alternatively, use repa
15:22:32 <elliott> kallisti: Which is based on vector
15:22:43 <Vorpal> ais523, hm there is drawImage, or does that one have the issue mentioned?
15:22:47 <elliott> I'd tout the automatic parallelism, but that's sort of irrelevant when you have 64 cells.
15:22:52 <kallisti> indeed.
15:22:57 <ais523> Vorpal: there is drawImage, and it does have the issue mentioned
15:23:00 <kallisti> elliott: UNLESS I END UP WITH AI
15:23:01 <Vorpal> ah
15:23:06 <elliott> Also it can only store predefined types, more or less.
15:23:10 <elliott> You can write instances but it's a pain.
15:23:14 <Vorpal> ais523, well that creates some issues
15:23:21 <Vorpal> damn
15:23:24 <elliott> Well, hmm
15:23:27 <elliott> Yeah, it is
15:23:35 <ais523> you can get around it by only using the one BufferedImage, and mutating it
15:24:02 <ais523> and BufferedImage has a method that gets you a WritableRaster, which is probably what you want
15:24:11 <Vorpal> ais523, ah okay
15:24:17 <Vorpal> simple enough then
15:24:51 <Vorpal> a bit annoying, but simple enough
15:25:19 <kallisti> @m
15:25:19 <lambdabot> Maybe you meant: map messages messages? more msg . ? @ v
15:25:36 <kallisti> @ms
15:25:36 <lambdabot> Not enough privileges
15:25:43 <kallisti> @mssa
15:25:43 <lambdabot> Not enough privileges
15:25:44 <kallisti> @mssag
15:25:45 <lambdabot> Not enough privileges
15:26:00 <elliott> @massage
15:26:00 <lambdabot> You don't have any new messages.
15:26:02 <elliott> @massages
15:26:02 <lambdabot> You don't have any new messages.
15:26:53 <ais523> Vorpal: basically, the problem is that drawImage is lazy, and there is no strict version
15:27:04 <ais523> and a lazy drawImage is necessarily going to leak memory in the general case
15:27:19 <ais523> actually, I vaguely fear it leaks memory even if you keep redrawing the same image, just less so
15:27:40 <ais523> I think I tried overwriting the entire image with a solid colour before redrawing it; that seemed to help, but not perfectly
15:29:14 <itidus21> video was really invented for games
15:29:27 <Vorpal> ais523, so what is the proper solution to this?
15:29:40 <Vorpal> ais523, not using swing?
15:29:40 <elliott> itidus21: i
15:29:57 <elliott> Vorpal: <ais523> you can get around it by only using the one BufferedImage, and mutating it <ais523> and BufferedImage has a method that gets you a WritableRaster, which is probably what you want
15:30:08 <Vorpal> elliott, "<ais523> actually, I vaguely fear it leaks memory even if you keep redrawing the same image, just less so"
15:30:17 <Vorpal> elliott, it was in reply to that line
15:30:23 <itidus21> i know that ralph baer doesn't like the term video games
15:30:44 <ais523> Vorpal: both Swing and AWT have the same problem, as they both use Graphics/Graphics2D
15:30:50 <Vorpal> right
15:30:58 <ais523> it's possible there's some less popular rendering toolkit that doesn't
15:31:18 <ais523> incidentally, one of the problems with Java atm is that people consider both Swing and AWT obsolete, but disagree on what's replaced them, if anything
15:31:22 <itidus21> i know that video isn't invented in the formal sense, and that it's just light medium, the eyes, the brain, conciousness, qualia "happening"
15:31:22 <Vorpal> ais523, well I guess I could find some suitable SDL bindings and use that, it obviously wouldn't have the same issue
15:32:11 <elliott> Vorpal: SWT might have something.
15:32:19 <elliott> That's at least popular.
15:32:33 <Vorpal> elliott, the downside: I don't know the API of that. At all.
15:32:50 <elliott> Qt Jambi? :p
15:32:57 <Vorpal> ais523, or is there built in opengl support? Then it should be fairly simple to just draw a texture and render it with a non-perspective camera
15:33:09 <elliott> I would be surprised if your university would be happy with having to install an SDL binding thing.
15:33:09 <Vorpal> elliott, I have no clue what you mean
15:33:21 <elliott> Vorpal: That's because you're unable to use Google.
15:33:22 <Vorpal> elliott, I used SDL for another course (from C then)
15:33:29 <itidus21> so, it may be that video represents the intentional act of manipulating visible objects to represent images, at a high enough frequency that those images appear to consist of a sequence of frames
15:33:44 <ais523> Vorpal: Java has a 3D library, but I'm not sure if it has anything to do with OpenGL or not
15:33:48 <Vorpal> elliott, in that case it was just a case of dropping SDL.dll into the build dir
15:33:50 <elliott> Vorpal: You can't just bundle JNI stuff in a .jar, can you?
15:34:01 <itidus21> and it is this definition that i think is truely invented for games
15:34:04 <ais523> elliott: and even if you could, someone marking the work would be insane to run it
15:34:05 <Vorpal> elliott, can't you? What does minecraft do then?
15:34:13 <elliott> <Vorpal> ais523, or is there built in opengl support? Then it should be fairly simple to just draw a texture and render it with a non-perspective camera
15:34:15 <elliott> lwjgl
15:34:22 <ais523> "lwjgl"?
15:34:25 <elliott> Or http://en.wikipedia.org/wiki/Java_OpenGL, I suppose. That's a JSR.
15:34:26 <Vorpal> elliott, which uses JNI, right?
15:34:31 <elliott> ais523: lwjgl
15:34:33 <elliott> Vorpal: Well, eys.
15:34:33 <elliott> yes.
15:34:34 <itidus21> lets wiki java gl
15:34:37 <elliott> Vorpal: Minecraft downloads natives.
15:34:43 <elliott> Have you ever paid attention to the updater?
15:34:51 <Vorpal> elliott, indeed, I could just bundle SDL.dll surely?
15:34:55 <Vorpal> or whatever
15:34:55 <elliott> It's also the reason you need -Djava.natives=... or w/e.
15:34:59 <Vorpal> right
15:35:02 <elliott> You can't start Java normally and use it.
15:35:13 <Vorpal> so a .bat file as well then
15:35:54 <Vorpal> elliott, anyway, I guess I'll just do the mutate-bufferedimage thingy and hope for the best
15:35:58 <ais523> elliott: anyway, a quick search of StackOverflow, on a bunch of different search terms, implies that some people there are enough aware of the problem to know about it
15:36:08 <ais523> but nobody there really knows enough about it to talk coherently about it
15:36:12 <elliott> heh, I just use Google to search SO
15:36:42 <itidus21> ais523: i have tried to ponder the real question of worms terrain
15:37:12 <ais523> anyway, Java really badly needs a "copy this raster to the screen" operation
15:37:32 -!- Jafet has quit (Read error: Connection reset by peer).
15:37:34 <ais523> or even a strict "draw this image" operation, if you know the image is in memory or somewhere similar where that's not going to hang for minutes waiting for a network connection to load
15:37:52 <Vorpal> ais523, btw when you say it is lazy what do you actually mean? That it keeps old image data below the overwritten data?
15:37:55 * elliott has no idea what sense of "lazy" ais523 is using.
15:38:23 <Vorpal> ais523, because obviously it is going to draw once the screen refreshes and so on
15:38:24 -!- Jafet has joined.
15:38:50 <Vorpal> which would force an evaluation if it was the haskell sense of lazy
15:39:06 <ais523> elliott: well, it's more like "backgrounded"
15:39:11 <ais523> when you call drawImage, it returns immediately
15:39:15 <Vorpal> ah
15:39:23 <ais523> then the image starts loading in a different thread, and calls an ImageObserver as more parts of it load
15:39:25 <quintopia> sounds like java from here :p
15:39:38 <ais523> and the screen updates as that happens
15:39:41 <Vorpal> ais523, so how does this cause a memory leak, wouldn't the resources be freeded once the image is actually drawn?
15:39:45 <elliott> itidus21: Isn't Baer the guy who wrongly claims to have invented the video game?
15:39:48 <ais523> Vorpal: they aren't, that's the problem
15:40:08 <Vorpal> ais523, so it keeps a reference around?
15:40:10 <Vorpal> huh
15:40:12 <ais523> and trying to work around it depends on exactly which resources it is that aren't being freed, which nobody seems to be quite sure on
15:40:27 <itidus21> elliott: well.. was spacewar before baer?
15:40:29 <Vorpal> ais523, couldn't you just look into the openjdk source?
15:40:30 <ais523> Vorpal: well, suppose you draw one image with some transparent pixels, then another image with transparent pixels on top of it, and neither have loaded
15:40:32 <Vorpal> to figure it out
15:40:33 <itidus21> i guess it probably ways
15:40:35 <ais523> then it needs to start backgrounding both
15:40:38 <elliott> itidus21: Tennis for Two was.
15:40:45 <ais523> Vorpal: hmm, I typically have problems finding specific bits of Java library source
15:40:50 <elliott> And yes, Spacewar! was.
15:40:55 <elliott> As were several others: http://en.wikipedia.org/wiki/First_video_game#History
15:41:01 <ais523> I've tried before now, it's kind-of luck-based whether Ican find it anywhere
15:41:07 <Vorpal> ais523, it obviously needs to draw in the same order as they are submitted
15:41:09 <Vorpal> so hm
15:41:13 <ais523> Vorpal: no, this is Java
15:41:17 <kallisti> hmmm, cool. lazy evaluation of Levenshtein distance is much faster than the regular eager approach.
15:41:25 <elliott> itidus21: Even Baer's claimed date of the original idea postdates the Cathode Ray Tube Amusement Device thing.
15:41:27 <ais523> it obviously needs to draw all the pixels as soon as they can be calculated, and assume transparent if it doesn't know
15:41:42 <Vorpal> ais523, you can't draw transparency out of order, it would result in incorrect blending!
15:41:59 <elliott> kallisti: You still need to do the dynamic programming yourself: http://www.haskell.org/haskellwiki/Edit_distance
15:42:03 <ais523> Vorpal: you can, because you're keeping references to all the images around
15:42:06 <Vorpal> that is the reason z-buffering doesn't work on transparent polygons in 3D graphics
15:42:09 <Vorpal> ais523, hm okay
15:42:10 <ais523> so you recalculate each pixel when any of the images in the stack loads
15:42:13 <elliott> Although I suspect you could abstract it out a bit.
15:42:15 <ais523> do you see where the memory leak comes from now?
15:42:20 <Vorpal> yeah
15:42:26 <Vorpal> ais523, it is utterly stupid though
15:42:35 <ais523> well, I'm not disagreeing with you on that
15:42:35 <itidus21> elliott: wow.. that page is really full of trivia
15:42:40 <elliott> ais523: Couldn't you just block until it's drawn?
15:42:49 <itidus21> they should be congratulated on that
15:42:54 <elliott> itidus21: Err, not compared to most Wikipedia articles.
15:42:59 <ais523> elliott: my guess is no, because that'd involve blocking the Swing UI thread, and there's only one of those
15:43:08 <ais523> and the image loading code probably tries to call into it
15:43:13 <itidus21> ok it's not trivial
15:43:14 <elliott> ais523: heh
15:43:18 <ais523> in order to redraw the bit of the image that just loaded
15:43:38 <itidus21> but.. in any normal human's life, the history of video games is useless information :D
15:43:45 <ais523> elliott: anyway, I'm not convinced that it drops the reference to the image even when it's fully loaded
15:43:50 <ais523> for reasons I don't fully understand
15:44:09 <itidus21> one might as well say that history is useless
15:44:09 <ais523> as far as I can tell, all the solutions to the image problem so far have focused on not leaking huge int arrays
15:44:16 <ais523> rather than focusing on not leaking stacks of metadata
15:44:19 <Vorpal> ais523, speaking of which, I saw a presentation on a solution to having to apply the painters algorithm for transparency on GPUs, using linked lists on them. Normally this is a terrible idea of course, but it used some new atomic counters feature. The presentation was by AMD so they probably know what they are doing
15:44:22 <elliott> heh
15:44:24 <ais523> which is much smaller and thus less obvious when profiling
15:44:25 <itidus21> for some specific definition of useless
15:44:29 <itidus21> what is useless
15:44:34 <itidus21> blah
15:44:45 <Vorpal> ais523, basically a linked list per fragment which is then sorted at the end
15:44:48 <elliott> ais523: incidentally, I was surprised to learn that there are C->VHDL tools
15:44:52 <kallisti> itidus21: a Perl program that doesn't import anything.
15:44:56 <elliott> that sounds harder than ICA->VHDL to me :-)
15:44:58 <ais523> elliott: I wasn't
15:45:01 <elliott> *:) whoops forgot i was consistentising
15:45:02 <Vorpal> ais523, it would mean you don't have to split intersecting polygons and so on
15:45:02 <ais523> they're on very limited subsets of C
15:45:05 <Vorpal> kind of neat
15:45:07 <elliott> ais523: oh
15:45:09 <elliott> lame
15:45:10 -!- Jafet has quit (Read error: Connection reset by peer).
15:45:37 <ais523> elliott: also, the few tools that try to implement larger subsets typically get it wrong
15:45:42 <ais523> there's a paragraph about this in one of my papers
15:45:55 <elliott> kallisti: Ah, http://blog.tmorris.net/finding-the-levenshtein-distance-in-scala/.
15:46:05 <elliott> kallisti: Easily implementable with http://hackage.haskell.org/packages/archive/data-memocombinators/0.4.3/doc/html/Data-MemoCombinators.html.
15:46:05 <ais523> isn't scala eager?
15:46:24 <elliott> (e.g. unsafeArrayRange)
15:46:32 <elliott> ais523: it has optional laziness, as used there
15:46:35 <kallisti> elliott: waaaa what is this magic.
15:46:39 <ais523> elliott: ah, OK
15:46:41 <elliott> I was just presenting a nicer implementation than my previously-linked one.
15:46:44 <elliott> kallisti: What is what magic?
15:46:49 <kallisti> elliott: memo combinators
15:46:59 <elliott> kallisti: It's trivial.
15:47:02 -!- Jafet has joined.
15:47:04 <elliott> bool :: Memo Bool
15:47:04 <elliott> bool f = cond (f True) (f False)
15:47:04 <elliott> where
15:47:04 <elliott> cond t f True = t
15:47:04 <elliott> cond t f False = f
15:47:04 <elliott> list :: Memo a -> Memo [a]
15:47:06 <elliott> list m f = table (f []) (m (\x -> list m (f . (x:))))
15:47:08 <elliott> where
15:47:10 <elliott> table nil cons [] = nil
15:47:12 <elliott> table nil cons (x:xs) = cons x xs
15:47:14 <elliott> It just uses a trie of bits for integral types.
15:47:26 <elliott> Relies on the benign mutating nature of sharing that you don't understand because you think seq has side-effects.
15:51:55 <Vorpal> ais523, hm... I was on windows and ran a java program using swing... I happened to have fraps running (I forgot I left that running), it displays an FPS counter in the top right corner of Direct3D and OpenGL programs. It did that for the swing program too. How curious.
15:52:10 <kallisti> elliott: yeah I don't understand...
15:52:13 -!- Jafet has quit (Ping timeout: 276 seconds).
15:53:07 <elliott> kallisti: Indeed.
15:53:38 <itidus21> ais523: at one time i tried to sit down and start thinking about the topic of worms terrain.. this is how it ended up looking http://oi44.tinypic.com/o6jrjo.jpg
15:53:53 <kallisti> elliott: I also don't understand what it has to do with seq
15:53:55 <itidus21> suffice to say i got sidetracked and never really returned to it
15:54:04 <ais523> that's weird-looking terrain
15:54:15 <ais523> same concept as websplat, only using Word documents as the source?
15:54:25 <Vorpal> ha
15:54:26 <itidus21> openoffice
15:54:44 <elliott> kallisti: Because it's the same benign mutation.
15:54:48 <itidus21> i may be on windows but i am using openoffice
15:54:53 -!- Jafet has joined.
15:54:54 <Vorpal> itidus21, it isn't really expensive. The reason is that computers are very fast.
15:55:18 <kallisti> elliott: strict evaluation?
15:55:42 <ais523> elliott: well, it has less magic in a way; seq somehow manages to special-case each data type individually, whereas that's writing the special cases out so it doesn't look nearly so magical
15:55:46 <Vorpal> itidus21, and you end up using the memory anyway
15:56:06 <itidus21> Vorpal: i intended to go right into the subject in detail in a rant, but if i was capable of such applied focus i wouldn't be so hopeless
15:56:30 <elliott> ais523: well, that's a way to explain seq, but doesn't define its semantics at all
15:56:41 <ais523> elliott: right, indeed
15:56:43 <elliott> ais523: the semantics of seq are incredibly trivial
15:56:50 <itidus21> i think it may have been in here that someone inspired me that bitmapped terrain isn't a panacea
15:56:50 <ais523> I'm explaning the difference between seq and Memo in terms of magicalness
15:56:51 <elliott> ais523: seq ⊥ b = ⊥; seq a b = b
15:56:53 <itidus21> or some irc channel
15:56:55 <ais523> not defining either itself
15:56:58 <elliott> well, err, no
15:57:04 <elliott> that's not how Memo works at all
15:57:08 <elliott> it's unrelated to the pattern-matching
15:57:17 <ais523> ah, hmm, in that case I don't understand it
15:57:21 * kallisti has an idea for a game like websplat except the idea is to be actually fun to play instead of just cool.
15:57:23 <elliott> I'm not surprised
15:57:29 <elliott> kallisti: websplat is fun on havenworks
15:57:37 <Vorpal> ais523, is there an onRedraw function or such for JPanels? Or am I approaching that from the wrong direction.
15:57:38 <kallisti> that site that doesn't exist anymore?
15:57:40 <kallisti> or is it up now?
15:58:03 <elliott> itidus21: 253 kilobytes is a tiny amount of memory for an HD screen-sized area.
15:58:11 <Vorpal> ais523, I'm kind of used to taking the opengl and SDL approach which is to draw in a main loop, not sure if that is the correct approach for swing
15:58:16 <elliott> The waiting comment makes no sense, and it's not computationally expensive to work on bitmaps at all.
15:58:32 <elliott> The two basic operations stuff also doesn't really make sense; the two basic operations are poke and peek, really.
15:58:37 <elliott> Also, that's not a rant.
15:58:44 <itidus21> :D
15:58:51 <elliott> Vorpal: I would bet money that Swing is event-based.
15:58:54 <ais523> Vorpal: in swing, everything happens in response to something
15:58:59 <elliott> Kerching.
15:58:59 <Vorpal> ah
15:59:00 <elliott> Gimme money.
15:59:06 <Vorpal> so that is the approach to take then
15:59:16 -!- Jafet has quit (Ping timeout: 252 seconds).
15:59:17 <Vorpal> far more annoying
15:59:23 <ais523> standard way of drawing something is to override paintComponent
15:59:29 <kallisti> and of course "events" in Java are actually "subclasses" :P
15:59:42 <ais523> so that whenever Swing tries to redraw it, it ends up calling your custom redraw code
15:59:44 <itidus21> elliott: well after that i went on to discover that sprites could carry more interesting information than they normally do, and never did return back to the actual topic
15:59:45 <Vorpal> ais523, I guess I need to use two threads then to deal with the network...
15:59:46 <Vorpal> oh well
15:59:50 <ais523> kallisti: that's, umm, not even wrong, but it is rather misleading
16:00:00 <ais523> Vorpal: well, the general rule is that events have to be handled really quickly
16:00:07 <elliott> Deewiant: "Houdini cares for the children of the world. 10% of the revenues generated by Houdini 2 will be donated to Unicef to support their ongoing efforts to improve children's living conditions all over the world."
16:00:09 <ais523> if you want to do something slow in response to one, you start a new thread
16:00:10 <elliott> Deewiant: You can't compete against LOVE.
16:00:16 <Vorpal> ais523, right, this is much simpler with the main loop approach really
16:00:30 <elliott> itidus21: Quite a trailblazer.
16:00:36 <ais523> not really, I actually consider the main loop approach really bad
16:00:37 <kallisti> ais523: how is it misleading? typically the pattern is that you override some kind of interface (occasionally with only one method).
16:00:46 <elliott> The main loop approach is ridiculous.
16:00:46 <kallisti> often as an anonymous class.
16:00:58 <ais523> when I'm working with a main-loop-based API, I typically implement an event loop in it
16:01:02 <Vorpal> hm
16:01:13 <ais523> and even then, SDL works by repeatedly calling usleep(1000) in a loop
16:01:13 <Deewiant> elliott: I'd compete only against stockfish anyway, I'm not going to pay for better engines
16:01:15 <elliott> (Callbacks are more ridiculous, though.)
16:01:16 <Vorpal> bbl
16:01:18 <ais523> which is ridiculous
16:01:40 <Vorpal> ais523, really? heh
16:01:52 <elliott> ais523: Err.
16:01:58 <ais523> Vorpal: not only that, it alternates usleep and gettimeofday
16:01:59 <itidus21> when i discussed my findings, someone then explained to me:
16:01:59 <elliott> ais523: No?
16:02:03 <itidus21> actually the first icon and cursor format on Windows supported exactly that. it had two bits per pixel, one was ANDed with the underlying pixel, the other was XORed with the result of the and so with an AND bit of 0 and XOR bit of 0, you get black, 0/1 gives you white, 1/0 gives you transparent and 1/1 gives you inverted. quite clever actually IMO
16:02:07 <Vorpal> ais523, um...
16:02:09 <elliott> ais523: mcmap runs with 0% CPU usage most of the time.
16:02:16 <ais523> elliott: exactly
16:02:21 <Vorpal> elliott, usleep would have no CPU usage
16:02:25 <elliott> Well, OK.
16:02:29 <ais523> turns out that waking every millisecond is close enough to 0% to be a rounding error
16:02:34 <ais523> but it really spams the hell out of strace
16:02:39 <Vorpal> hah
16:02:44 <elliott> Nobody run mcmap on a laptop.
16:02:47 <itidus21> and then i discovered alvy ray smith who was insistant that pixels are not rectangles
16:02:55 <Vorpal> elliott, I did, but mc is far worse :P
16:02:57 <elliott> They're not.
16:03:16 -!- PiRSquared17_ has joined.
16:03:18 <itidus21> so.. i mean i really did end up going down the rabbit hole quite some depth
16:03:19 -!- sebbu2 has changed nick to sebbu.
16:03:21 <Vorpal> ais523, anyway it is sensible for what SDL is trying to be
16:03:25 <itidus21> i didnt get all the way though
16:03:29 <kallisti> pixels are more like... dots right?
16:03:30 <Vorpal> ais523, you are going to do the same sort of stuff for opengl too
16:03:34 <elliott> kallisti: No.
16:03:35 <ais523> Vorpal: err, are you serious?
16:03:40 <itidus21> you can see alvy's influence on me in my recent post
16:03:46 <ais523> it should just wait for the next timed event, or be interrupted by untimed events
16:03:47 <elliott> kallisti: They're points.
16:03:50 <ais523> what do you think interrupts are /for/?
16:03:50 <Vorpal> ais523, maybe we misunderstood each other
16:03:53 <kallisti> elliott: that's what I meant
16:03:58 <itidus21> "video represents the intentional act of manipulating visible objects to represent images, at a high enough frequency that those images appear to consist of a sequence of frames"
16:03:59 <ais523> if the user asks for a timer, fine, make a timer
16:04:04 <kallisti> elliott: "dot" is the unfancy way of saying "point"
16:04:14 <elliott> kallisti: "Dot" usually means "little square/circle".
16:04:18 <itidus21> that was how i defined video a few screens up
16:04:19 <ais523> and then sleep until the next time the timer would run out
16:04:22 <kallisti> elliott: oh, well no, not that.
16:04:44 <Vorpal> ais523, well, if you are using opengl you are going to need to keep redrawing, preferably at least at vsync-speed
16:04:53 <Vorpal> ais523, doing the same for SDL seems sensible to me
16:05:00 <ais523> Vorpal: so trigger on vsyncs
16:05:05 <ais523> rather than polling every millisecond
16:05:21 <ais523> I'd be very surprised if there weren't an interrupt connected to vsyncs or vblanks
16:05:30 <Vorpal> ais523, except what happens if you are only able to reach 50 FPS and trigger on vsync? You are going to get every second vsync
16:05:35 <Vorpal> and get 30 FPS instead
16:05:44 <kallisti> elliott: but it would be accurate to say that pixels are points that correspond to rectangles, yes?
16:05:50 <elliott> kallisti: No.
16:06:01 <elliott> kallisti: http://www.google.co.uk/url?sa=t&rct=j&q=pixels%20are%20not%20little%20squares&source=web&cd=1&ved=0CCIQFjAA&url=http%3A%2F%2Fwww.cs.princeton.edu%2Fcourses%2Farchive%2Fspr06%2Fcos426%2Fpapers%2Fsmith95b.pdf&ei=1hsHT6CpGoaD-watrfmrAQ&usg=AFQjCNFXhye-H_eqy71fz4fA904iIHgNGw&sig2=8Ru3uE2J7d4vHgj5YDTdNA
16:06:05 <elliott> I hate you, Google.
16:06:06 <itidus21> my definition of video works for people in a stadium holding up colored panels to form an image
16:07:15 <Vorpal> kallisti, pixels are just points?
16:07:33 <Vorpal> well, usually with colours
16:07:49 <Vorpal> they are kind of useless if there isn't at least one bit of information per pixel
16:07:54 <Vorpal> anyway bbl really now
16:08:30 <itidus21> i think the real question is.. what shape are color qualia
16:08:48 <itidus21> do they even have shape?
16:09:32 <itidus21> is the shape uhhh .. potentially variable between concious beings
16:10:14 <kallisti> elliott: ah
16:10:31 <kallisti> itidus21: what
16:10:43 <itidus21> >:-)
16:11:02 <itidus21> ok sorry i will rephrase
16:11:18 <itidus21> what is the nature of the qualia in which the visual field consists
16:11:33 <itidus21> and is it variable between creatures with visual fields
16:11:35 <kallisti> s/concious/conscious/ s/qualia/koala/
16:12:05 <itidus21> are they points
16:12:11 <itidus21> are they uniform?
16:12:23 <kallisti> oh
16:12:30 -!- Jafet has joined.
16:12:34 <itidus21> are they side by side?
16:12:56 <itidus21> pretty deep, i know..
16:13:06 <itidus21> noone would question that it's a deep topic
16:13:58 <kallisti> itidus21: I would think it corresponds to however our brain processes the 90-million-something cone and rod cells in the human eye.
16:14:20 <kallisti> *the data from those cells
16:14:31 <itidus21> the data can come from the tongue also
16:14:40 <itidus21> which is pretty confusing
16:14:43 <kallisti> ....I can't see with my tongue
16:14:45 <kallisti> what are you talking about.
16:14:59 <itidus21> also synesthesiates sometimes see sound
16:15:20 <itidus21> the military invented a device which uses the tongue to feed visual info into the brain
16:15:24 <kallisti> also drugs can do fun things to your vision.
16:16:39 <itidus21> id say the system is designed for eye data
16:16:47 <itidus21> but it can recieve data from other sources
16:16:54 <kallisti> yes
16:17:00 <itidus21> much like a word processor can view an executable file
16:17:05 <kallisti> sure
16:17:46 <itidus21> this topic gives me mind numbing headaches
16:18:05 <kallisti> you should learn Haskell instead.
16:18:44 <itidus21> and feeds into subconcious anxieties such as not having free will, or being a machine, or not really existing
16:18:47 <itidus21> all that kind of thing
16:19:07 <itidus21> which i think, is a bit of a lie
16:19:39 <itidus21> anxiety seems to usually be triggered by actual percieved dangers i think
16:19:53 <itidus21> or the rippling effects of past percieved danegrs
16:20:46 <itidus21> having sufficiently damaged you all... i think i should take a chat break
16:22:44 <Vorpal> ais523, I'm unable to find the java function that wraps select()
16:23:00 <Vorpal> (on multiple sockets)
16:23:01 <elliott> Vorpal: threads
16:23:16 <Vorpal> elliott, what do you do if you have thousands of sockets?
16:23:17 <ais523> Vorpal: select is far too low-level for this sort of thing
16:23:21 <ais523> Vorpal: you have thousands of threads
16:23:21 <elliott> Vorpal: threads
16:23:28 <Vorpal> this is stupid
16:23:28 <ais523> actually, if you have thousands of sockets, select won't actually work
16:23:33 <ais523> it can't count to a thousand
16:23:33 <Vorpal> ais523, sure, epoll
16:23:36 <Vorpal> whatever
16:23:50 <itidus21> actually, i believe i was rubbing shoulders with some cults in a chatroom.. and led me to preoccupation with useless things
16:23:53 <ais523> Vorpal: do you know any languages that aren't imperative?
16:24:03 <Vorpal> ais523, yes, erlang, some haskell
16:24:10 <elliott> <itidus21> noone would question that it's a deep topic
16:24:12 <elliott> Is this an invitation?
16:24:15 <Vorpal> ais523, so java's threads are lightweight enough?
16:24:16 <ais523> Vorpal: well, what's the equivalent of select in erlang?
16:24:17 <Vorpal> hm
16:24:24 <Vorpal> ais523, very very lightweight threads
16:24:28 <ais523> anyway, /nothing/ in Java is lightweight
16:24:31 <Vorpal> ais523, but java /is/ imperative.
16:24:33 <elliott> <Vorpal> ais523, so java's threads are lightweight enough?
16:24:36 <elliott> Java's threads are OS threads.
16:24:38 <ais523> so it doesn't really matter what you use, it's going to be equally heavy either way
16:24:39 <Vorpal> ouch
16:25:04 <ais523> if something isn't working for you, you just add extra layers of abstraction
16:25:05 -!- iamcal has quit (Remote host closed the connection).
16:25:07 <ais523> it won't actually /help/
16:25:12 <ais523> but it'll make things feel more Javay
16:25:21 <Vorpal> ais523, you use threads (processes they are called) in erlang, but they are cheap. Including the initial stack size it is about 300 words of memory to create a new thread.
16:25:50 <ais523> Vorpal: the vast majority of performance problems with Java, the usual solution is "get more memory"
16:25:55 <itidus21> elliott: its a sign i am going nutso
16:26:05 <ais523> or on OS X, "tell the JVM it's allowed to use more memory"
16:26:16 <Vorpal> ais523, you need that on linux too
16:26:19 <Vorpal> ais523, for minecraft at least
16:26:23 <kallisti> Vorpal: is this relevant maybe? http://docs.oracle.com/javase/1.4.2/docs/api/java/nio/channels/Selector.html
16:26:26 <Vorpal> ais523, anyway there are computational overheads in thread switching.
16:26:30 <Vorpal> hm
16:26:39 <Vorpal> kallisti, let me look
16:26:51 <itidus21> hm
16:26:51 <kallisti> as far as I can tell this is how Java does select()
16:27:06 <Vorpal> seems a bit complicated but sure, I'll take a look at it
16:27:35 <fizzie> java.nio.* is often a good bet for "more complicated" IO needs.
16:27:42 <Vorpal> heh
16:28:13 <kallisti> Vorpal: just click through the subclasses and interfaces and you'll figure it out. :P
16:28:54 <kallisti> Vorpal: http://www.exampledepot.com/egs/java.nio/NbClient.html
16:29:53 <Vorpal> ais523, btw erlang actually uses epoll or kqueue for polling if available, it just hides that with its userspace threads (which are scheduled on OS threads, to be able to take advantage of multiple processors)
16:30:27 <kallisti> don't most userspace thread systems work like that?
16:30:33 <Vorpal> kallisti, server sockets in this case, but I see there is a link to that as well
16:30:40 <Vorpal> kallisti, well you could use only one OS thread
16:31:05 <kallisti> right but do people actually do that?
16:31:29 <Vorpal> kallisti, erlang used to do that, way back before multiple CPUs were common.
16:31:41 <kallisti> ah
16:31:42 <fizzie> As a historical interest, Sun JVM pre-1.2 had "green threads" that I think might've been single-core-only.
16:31:56 <fizzie> 1.2 went to native OS threads.
16:32:07 <Vorpal> green threads are far better IMO.
16:32:29 <ais523> we need other colours of thread
16:32:33 <Vorpal> thousands of OS threads is not a good idea. Tens of thousands of erlang threads is a non-issue.
16:32:36 <ais523> like indigo threads, for making jeans
16:32:40 <Vorpal> heh
16:33:57 -!- ais523 has quit (Remote host closed the connection).
16:34:10 <fizzie> Red threads which are, like, so heavyweight it's not even funny. Takes a minute to even spawn one.
16:34:27 <Vorpal> fizzie, I would guess cygwin uses them
16:36:05 <Vorpal> also oh god, the selector API looks painful. Less painful than threads though.
16:36:25 <Vorpal> I guess ais and elliott would disagree about that
16:36:28 * kallisti has decided to not try writing an AI anytime soon.
16:36:39 <kallisti> I have no clue what would make a good portal chess strategy, since I haven't played it.
16:37:04 -!- Jafet has quit (Ping timeout: 240 seconds).
16:37:18 <itidus21> kallisti: the best problems are the ones where the solution isn't immediately obvious upon seeing the problem
16:37:44 <kallisti> yes those are the ones that are actually problems.
16:38:38 <itidus21> i believe the problem with the patent system is that most patents are obvious solutions to obscure problem definitions
16:39:24 <itidus21> but then -- ok ill wrap up this obvious troll rant quickly -- the patent system is used to keep the economy working..
16:39:25 * kallisti should patent portal chess.
16:40:31 <itidus21> kind of like slow internet connections are good at preventing movie pirating
16:40:49 -!- Jafet has joined.
16:41:08 <kallisti> itidus21: I think the patent system exists because inventors feel entitled to the spoils of their inventions and this makes sense from an ethical perspective. Paradoxically, people claim that it encourages competition, despite it doing the exact opposite of that by definition.
16:41:42 <itidus21> maybe once it did, but that purpose is long lost
16:42:05 <kallisti> s/an ethical perspective/a society's intuitive ethical perspective/
16:42:25 <itidus21> kind of like the way the word gay now means blasphemous or mentally ill in some circles
16:42:26 <fizzie> Also I'm not so sure all softfloats are IEEE-like, though I don't really have counter-examples (except I think some CC65/SDCC float thing); all softfloats on system families where there sometimes are (IEEE) hardfloats are of course all IEEE-like for sanity.
16:43:04 * kallisti wonders how he should represent loops.
16:43:48 <itidus21> kind of like the way a word which once meant happy now means blasphemous or mentally ill or likely to get aids in some circles
16:44:03 <kallisti> I guess I could just set all of the relevant cells with a "isDeathWall" boolean...
16:44:19 <kallisti> but maybe there's a better way.
16:44:29 <fizzie> SHARC native floats are "IEEE-ish" 40 bit "extended single-precision" things, but it reads/writes 32-bit IEEE floats; much like x87 except half the bits, really. Though I doubt anyone's running mcmap on a DSP.
16:45:27 <itidus21> kallisti: the bourgeois would tend to possess the rare
16:45:39 <itidus21> whats rare in one place may be common in another place
16:45:55 <kallisti> like air
16:45:59 <kallisti> air isn't very common in space.
16:46:10 <itidus21> hence, ummm
16:46:42 <kallisti> hence when we become asteroid-mining space colonists air will become an economic resource.
16:47:24 <elliott> I really want to retag this question with [c] so I get all the attention, but there's a maximum of 5 tags :'(
16:47:29 <itidus21> the possession of diamonds by the bourgeois is more about establishing their bourgeoisness more than wanting a malleable metal
16:47:42 <itidus21> oops i forgot i said diamonds instead of gold
16:47:49 <kallisti> we'll need large botanical gardens in our space colonies with reflective panels to direct solar energy towards the plants.
16:47:55 -!- iamcal has joined.
16:48:08 <kallisti> itidus21: well most people want gold because it has value.
16:48:10 <kallisti> much like money.
16:48:20 <kallisti> before money became something other than "paper representing gold"
16:48:47 <kallisti> or... after? or...
16:48:51 <kallisti> I don't know why I said before.
16:49:03 <elliott> `addquote <itidus21> the possession of diamonds by the bourgeois is more about establishing their bourgeoisness more than wanting a malleable metal <itidus21> oops i forgot i said diamonds instead of gold
16:49:07 <HackEgo> 795) <itidus21> the possession of diamonds by the bourgeois is more about establishing their bourgeoisness more than wanting a malleable metal <itidus21> oops i forgot i said diamonds instead of gold
16:49:23 <elliott> kallisti: Gold isn't really very useful.
16:49:28 <elliott> That's why it's such a good currency.
16:49:36 <elliott> Nobody much wants it for anything else.
16:49:43 <itidus21> so patents represent an asset that a company obtains for doing some work.
16:49:44 <Phantom_Hoover> It's useful /now/, because we have uses for basically everything now.
16:49:47 <itidus21> they are just assets
16:49:49 <kallisti> elliott: yes but I'm not sure if that's /why/ it's currency. certainly that helps.
16:50:04 <Phantom_Hoover> Except thulium.
16:50:09 <itidus21> theres no morals or ethics guiding companies to want patents
16:50:19 <itidus21> its just assets for the sake of assets
16:50:26 <itidus21> for whatever uses a company has for assets
16:50:30 <kallisti> s/sake of assets/sake of money/
16:50:48 <kallisti> I bet money is a good use.
16:51:12 <kallisti> hm I may just represent loops as a structure seperate from the Vector grid.
16:51:35 <itidus21> ok ok my words full of fallacies
16:51:38 <kallisti> so that I can treat them as a group rather than doing gross traversal stuff.
16:51:56 <kallisti> (no one knows what I'm talking about right now....)
16:52:25 <itidus21> well because other companies could otherwise exploit a companys work, a patent protects a companys investment of time/energy/money into some work
16:52:35 <elliott> <kallisti> elliott: yes but I'm not sure if that's /why/ it's currency. certainly that helps.
16:52:43 <elliott> kallisti: If something is really useful, people will be too busy using it to trade it.
16:52:48 <kallisti> elliott: right.
16:53:01 <elliott> Phantom_Hoover: Yeah, but it's a lot less useful than lots of other things.
16:53:03 <itidus21> i guess what i am trying to say is that the protection of investments is the key thing, and not the celebration of invention or innovation
16:53:16 <elliott> <itidus21> theres no morals or ethics guiding companies to want patents
16:53:16 <elliott> <itidus21> its just assets for the sake of assets
16:53:16 <elliott> <itidus21> for whatever uses a company has for assets
16:53:19 <elliott> Today itidus21 learned: Capitalism!
16:53:29 <kallisti> elliott: I think gold also became a currency because it was pretty and hard to obtain historically.
16:53:32 <elliott> kallisti: You're talking about portal chess.
16:53:35 <kallisti> elliott: yes
16:53:44 <elliott> Also, duh, yes, only scarce resources are valuable.
16:54:37 <itidus21> company makes an investment, others threaten that investment, company protects the investment using some set of laws which lately tends to be patents
16:54:51 <kallisti> hmmm, I think I'll represent all the loops on the board as a Vector of sets. This allows me to efficiently remove them and change their boundaries as a group, but also allowing me to test if positions are within a loop because, well, they're sets.
16:54:52 <itidus21> i suppose there is always laws in place to protect the investment a company makes
16:55:29 <itidus21> but maybe corporations do business like katamari
16:55:44 <kallisti> I wonder if I should make it a rule that you cannot willingly place a piece within a loop. This basically makes them like impenetrable (redirectable) walls.
16:56:08 -!- Jafet has quit (Read error: Connection reset by peer).
16:56:15 <kallisti> in a physical game it would be cool to allow pieces to accidentally meander into loops, because their player forgot about their existence.
16:56:27 <itidus21> so what i am trying to say here is that, any AI which is easy to program is pointless :)) :))
16:56:29 <elliott> kallisti: Be careful about using Vectors.
16:56:29 <kallisti> but presumably in a computer representation you have graphics that allow you to see all the loops.
16:56:35 <Vorpal> kallisti, didn't you decide above not to write an AI?
16:56:36 <kallisti> elliott: why's that?
16:56:39 <kallisti> Vorpal: correct.
16:56:45 <kallisti> my purpose was never to write an AI.
16:56:46 <kallisti> >_>
16:56:51 <Vorpal> so what are you doing now?
16:56:53 <elliott> kallisti: Every update requires copying all the data (all the pointers if you used a boxed vector).
16:56:58 <itidus21> if the method of writing an AI is too obvious.. then the AI is too trivial
16:57:02 <itidus21> the game is too easy
16:57:07 <kallisti> writing a server program that connects to clients and implements a game of portal chess.
16:57:17 <elliott> kallisti: It's probably good if you have 64 elements but not if you have a few hundred.
16:57:26 <Vorpal> kallisti, how does portal chess differ from normal chess?
16:57:31 <Vorpal> kallisti, I hope it involves a portal gun
16:57:37 <kallisti> elliott: this Vector will, in all likelihood, remain at 0 to 2 elements.
16:57:44 <kallisti> I could just as easily use a linked list.
16:57:50 <Vorpal> because that would be awesome to apply on the other side
16:57:58 <kallisti> except that I think I would want random access? not sure.
16:58:03 <itidus21> <itidus21> kallisti: the best problems are the ones where the solution isn't immediately obvious upon seeing the problem <itidus21> i believe the problem with the patent system is that most patents are obvious solutions to obscure problem definitions [...] <itidus21> if the method of writing an AI is too obvious.. then the AI is too trivial
16:58:10 <itidus21> see, there is method to my madness
16:58:15 <itidus21> waahahahahhaha
16:58:37 <kallisti> Vorpal: it involves two pieces that are portals.
16:58:50 <kallisti> Vorpal: which other pieces and projectile abstraction things can pass through
16:59:23 <Vorpal> kallisti, oh, less fun than a portal gun (probably saner though)
16:59:56 <kallisti> honestly the "loop" rule is akin to one of the weird chess rules like en passant or the trade-pawn-for-any-other-piece rule.
17:00:05 <kallisti> Vorpal: yes considering it's a game of chess.
17:00:13 <Vorpal> indeed
17:00:35 <itidus21> kallisti: this is why we need inspiration and motivation, because all good things require hard work and commitment
17:00:42 -!- Jafet has joined.
17:00:48 <kallisti> but who knows, maybe in the future thriving scene of portal chess the loop rule will take on an unforseen importance in portal chess strategy.
17:01:18 <itidus21> so, in collecting motivation it is important for us to realize it's ok to abandon a project which we don't like
17:01:21 <Vorpal> itidus21, "because all good things require hard work and commitment" <-- not really, garlic doesn't require hard work as such
17:01:38 <itidus21> hmm...
17:01:39 <Vorpal> kallisti, the loop rule being?
17:02:21 <kallisti> okay so there are pieces called cannons that can, as their move, fire a projectile in one of four directions. This projectile will capture something in its path, or will otherwise interact with a piece in the way its rules specify.
17:02:25 -!- elliott has quit (Ping timeout: 276 seconds).
17:02:42 <kallisti> one such piece is portals themselves. if a projectile goes through the opening of a portal it will continue out of the other portal
17:02:48 <Vorpal> kallisti, ah
17:02:52 <kallisti> another piece is the arrow
17:03:09 <kallisti> which, will redirect the path of the projectile in the direction that it's facing.
17:03:14 <Vorpal> ah
17:03:17 <Vorpal> kallisti, I see
17:03:21 <kallisti> using these two pieces you can form projectile loops
17:03:24 <Vorpal> kallisti, so what happens in the case of a loop?
17:03:28 <kallisti> where the projectile travels indefinitely in a loop.
17:03:32 <kallisti> at which point
17:03:39 <kallisti> it remains as a persistent part of the game state.
17:03:48 <Vorpal> oh, I hoped for an explosion
17:03:49 <kallisti> until something in its path breaks the loop.
17:03:58 <Vorpal> kallisti, and what effect does breaking said path have?
17:04:09 <kallisti> well, imagine you place an arrow within the loop
17:04:19 <kallisti> immediately a projectile fires from the direction the arrow is pointing
17:04:23 <kallisti> simultaneously breaking the loop.
17:04:27 <Vorpal> then you could change it into another loop
17:04:30 <kallisti> yes
17:04:31 <Vorpal> with enough arrows
17:04:37 <Vorpal> how many arrows do you have
17:04:39 <kallisti> there are only 4 arrows on the board.
17:04:41 <kallisti> 2 per player
17:04:48 <kallisti> but yes that's possible.
17:04:49 <Vorpal> right
17:04:58 <kallisti> the main purpose would be to allow arrows to quickly capture pieces.
17:05:08 <kallisti> a loop is immediately a danger if an arrow is nearby
17:05:12 -!- Jafet has quit (Ping timeout: 252 seconds).
17:05:48 <Vorpal> kallisti, do the pieces have hitpoints or are cannon shots one-hit kills?
17:06:00 <kallisti> they capture pieces
17:06:05 <kallisti> it's not too removed from chess in that sense.
17:06:09 <kallisti> the goal is to capture the king.
17:06:15 <Vorpal> hm
17:06:26 <Vorpal> with capture you don't mean traditional chess capture?
17:06:29 <kallisti> the pieces are arranged as in chess.
17:06:43 * Vorpal imagines chess with HP and headshots.
17:07:01 <kallisti> Vorpal: hmmm, well no it could work that way.
17:07:01 <itidus21> headshots
17:07:12 <kallisti> it would be against the rules for a king to walkinto the line of sight of a cannon, for example.
17:07:18 <kallisti> and if the king has no valid moves
17:07:21 <kallisti> then that's checkmate
17:07:24 <Vorpal> right
17:07:41 <itidus21> kallisti: you need a concept artist
17:07:57 <itidus21> someone like yoshitaka amano or akiman
17:08:02 <Vorpal> kallisti, anyway what about a variant of chess were each capture causes a mini-game in the form of D&D style fight with d20 and so on?
17:08:06 <Phantom_Hoover> * Vorpal imagines chess with HP and headshots.
17:08:20 <Vorpal> Phantom_Hoover, yes?
17:08:32 <kallisti> Vorpal: D&D kind of already works like this if you play with a grid map.
17:08:45 <Phantom_Hoover> After me and a friend got kicked out of the school library for playing Halo on the library computers when we were bored we invested quite a bit of time into inventing Chess Halo.
17:08:56 <Vorpal> kallisti, hm kind of, except more than one unit move per turn
17:08:59 <itidus21> hmm
17:09:02 <Phantom_Hoover> (All the school computers have Halo because.... I don't know.)
17:09:09 <kallisti> Vorpal: anyway I'm not going to suddenly start creating a new chess variant when I want to focus on implementing, playtesting, and improving my current game.
17:09:11 <Vorpal> Phantom_Hoover, awesome
17:09:22 <kallisti> also there's some rule issues to decide.
17:09:29 <kallisti> I currently have, I think, 3 variant rules.
17:09:34 <Vorpal> Phantom_Hoover, and yes that is strange
17:09:37 <kallisti> and I should probably pick a "standard" rule.
17:09:43 <kallisti> concerning loops and how they interact with portals.
17:09:46 <itidus21> ok, what about chess on a finite euclidean plane
17:09:58 <kallisti> itidus21: what are the pieces? points?
17:10:03 <kallisti> what are "turns" in a continuous space.
17:10:14 <itidus21> the pieces could be circles :D
17:10:19 <itidus21> centered on points
17:10:25 <Phantom_Hoover> It's an RTS, I assume.
17:10:42 <kallisti> otherwise turns would have to be discrete steps
17:10:48 <Phantom_Hoover> Although one with infinitely fast thinking for each player.
17:10:50 <Vorpal> itidus21, and you could do collision tests to see if you capture
17:10:51 <Vorpal> :D
17:10:55 <itidus21> kallisti: turns involve translating from one point to another point with some given min/max
17:10:57 <Vorpal> collision checks*
17:11:08 <kallisti> Vorpal: the current issue is that it's not clear how portals should interact with loops
17:11:14 <itidus21> and uhmm..
17:11:17 <kallisti> because the capture rules for portals are direction-based
17:11:30 <Vorpal> kallisti, hm... explode
17:11:34 <Vorpal> kallisti, definitely explode
17:11:37 <kallisti> a portal cannot be captured from the direction it's facing. an attempt to do so results in the piece exiting through the other side.
17:11:47 <Vorpal> kallisti, causing AOE damage
17:11:55 <Phantom_Hoover> I'm seeing this as basically DEFCON except chess rather than war.
17:11:56 <Vorpal> in the 3x3 centered on the portal
17:12:01 <kallisti> Vorpal: no that's what happens when a portal tries to pass through its sister portal. :P
17:12:11 <Vorpal> Phantom_Hoover, wow that sounds awesome
17:12:13 <kallisti> one explosion rule is enough
17:12:16 <Vorpal> kallisti, aww
17:12:27 <Vorpal> kallisti, you can never have too many explosions
17:12:36 <Phantom_Hoover> "WHITE LAUNCH DETECTED"
17:12:37 <kallisti> you could actually use the explosion to your advantage
17:12:41 <Vorpal> Phantom_Hoover, :D
17:12:49 <kallisti> if destroying both your portals is worth the outcome
17:13:00 <Phantom_Hoover> "E5 HIT, 1 DEAD"
17:13:04 <Vorpal> kallisti what happens if the king is in the exploded area?
17:13:16 <kallisti> also putting your portals within line of sight of each other and having them facing each other basically creates a space where a king cannot enter
17:13:20 <kallisti> because he could get exploded.
17:13:46 <Vorpal> Phantom_Hoover, and then we could do a fallout-style followup :D
17:14:15 <Phantom_Hoover> Climbing up the ruins of the black queen?
17:14:18 <kallisti> anyway back to the loop/portal problem. the problem is that there are two kinds of loops. one is unidirectional, meaning that there is a definite direction to such a loop. it travels in a clockwise or counter clockwise circuit.
17:14:21 <Phantom_Hoover> This looks so awesome in my head.
17:14:23 <Vorpal> Phantom_Hoover, that sounds dirtly
17:14:26 <Vorpal> dirty*
17:14:38 <kallisti> in this situation a portal can enter the loop and "catch" the projectile causing it to be expelled from its sister portal.
17:14:43 <Vorpal> (at least if another chess piece does it)
17:14:49 <Vorpal> Phantom_Hoover, and yes, same here
17:14:51 <Phantom_Hoover> — Arvid "I couldn't find any SCSI porn!" Norlander.
17:15:05 <kallisti> however another class of loops are "bidirectional"... they oscillate back and forth between two endpoints.
17:15:06 <Vorpal> Phantom_Hoover, where did I say that was a bad thing?
17:15:23 <Vorpal> Phantom_Hoover, anyway I did that to prove that rule 34 was incorrect
17:15:24 <Phantom_Hoover> There was a tangible sense of disappointment there.
17:15:51 <Vorpal> kallisti, heh
17:15:52 <kallisti> this situation is the ambiguous one. what happens when a portal enters a bidirectional loop? you could have it so that portals are captured, or you could have it where portals always redirect. or you could have it so that portals have a 50/50 chance of either.
17:16:16 <fizzie> Just because you can't find something is not proof of it not existing.
17:16:19 <kallisti> these are the 3 rule possibilites.
17:16:25 <Vorpal> kallisti, I would suggest oscillation at a fixed frequency. Makes it harder to keep track of the game for the players
17:16:38 <kallisti> Vorpal: so you want a turn-based game to have a real-time element?
17:16:46 <Vorpal> fizzie, indeed. But it wasn't within the first few pages of google image search results
17:16:47 <kallisti> I suppose that's possible on a computer.
17:17:04 <Vorpal> fizzie, it is very unlikely it exists though at least
17:17:23 <itidus21> do you know whats dissapointing? having an idea and then googling it.. well time for me to google this finite euclidean plane chess idea of mine
17:17:29 <Vorpal> kallisti, sure.
17:17:31 <kallisti> Vorpal: that basically means that you have to time how long it takes for a turn to transpire and correctly position the portal at the right time in order to catch the projectile.
17:17:44 <kallisti> this sounds really... wonky to me. it doesn't make any sense in a turn-based strategy game.
17:17:48 <kallisti> and it's very implementation dependent.
17:17:50 <Vorpal> kallisti, I like really screwy chess variants :P
17:17:59 <kallisti> how much time passes in piece movement?
17:18:00 <fizzie> http://www.epicycle.org.uk/images/carriers.jpg -- I don't know, that's pretty close. (Google Image search result for "scsi porn".)
17:18:07 -!- azaq23 has joined.
17:18:12 <kallisti> is it instant?
17:18:15 -!- azaq23 has quit (Max SendQ exceeded).
17:18:32 <Vorpal> kallisti, no I meant real time oscillation, while the player is considering their next move. I suggest a frequency of 1-3 Hz
17:18:42 <kallisti> I would rather have the "portals can always catch bidirectional loops if the portal is facing one of the two directions" rule
17:18:43 -!- azaq23 has joined.
17:18:50 <Vorpal> kallisti, you can then time your move to take advantage of it
17:19:00 <kallisti> because it is strategically equivalent to the real-time-frequency thing you're suggesting
17:19:05 <kallisti> without this silly timing thing involved. :P
17:19:15 <Vorpal> kallisti, I like silly chess variants :P
17:19:48 <itidus21> i wonder if this idea is genuinely innovative
17:19:59 <kallisti> Vorpal: also it complicates implementation for... basically no gain.
17:20:05 <Vorpal> true
17:20:07 <itidus21> i have definitely never heard of a chess game based on euclidean geometry
17:20:26 <itidus21> (but then i am clueles about chess)
17:20:44 <fizzie> Vorpal: Okay, here: http://e621.net/post/show/43346/4-3-blush-darkdoomer-iriver-overstretched-rule_34- -- note, it's a SCSI cable; you can tell from the logo.
17:20:46 <Vorpal> kallisti, anyway I suggest you add missiles as well, with a cooldown
17:20:53 <kallisti> Vorpal: .....
17:20:57 <kallisti> no, you're banned from ideas now.
17:21:01 <Vorpal> kallisti, why?
17:21:11 <kallisti> still I also like the "portals always are captured (and therefore cannot cross a loop" because it has interesting consequences and makes loops more formidable defensively.
17:21:13 <Vorpal> kallisti, anyway card games have that sort of things
17:21:17 <Vorpal> kallisti, and they are turn based
17:21:19 <kallisti> the 50/50 rule is pretty much bad to me. randomness in chess? nothx
17:21:34 <kallisti> but I see all 3 as viable rule variants
17:21:45 <kallisti> so I'll probably list all of them in the official rules.
17:21:47 <Vorpal> fizzie, eww
17:22:43 <kallisti> lol you could calculate the probability based on the distance the portal is from the endpoint it's facing in the loop path...
17:22:46 <kallisti> heh
17:22:59 <kallisti> directly inbetween the two endpoints is 50/50 regardless of direction.
17:23:09 <Vorpal> kallisti, anyway I think randomness in chess could be interesting
17:23:23 <itidus21> to imagine my idea.. it is like this.. the rule is that you have to move the piece in a straight line
17:23:55 <Vorpal> kallisti, it has to be done carefully though
17:24:00 <Vorpal> as all randomness in games
17:24:14 <kallisti> Vorpal: it's basically a corner case.
17:24:21 <itidus21> you can move the pieces according to some set of rules based on geometry.. but the most important rule is the straight line rule
17:24:32 <kallisti> it's a very specific situation in a very specific rule.
17:24:41 <Vorpal> itidus21, what about adding gravitation causing bent paths?
17:24:42 <Vorpal> :D
17:24:52 <itidus21> whoa!
17:24:55 <Vorpal> (wow that must be one fat knight)
17:25:09 <itidus21> yes .. what about adding gravitation
17:25:11 <kallisti> Vorpal: I can actually think of a lot of different loop configurations that you could create
17:25:19 <Vorpal> kallisti, nice
17:25:26 <kallisti> for example you could actually put arrows in a loop in such a way that they don't interfere with the loop
17:25:37 <kallisti> this makes them a cannon in their own right
17:25:42 <kallisti> they just turn to fire.
17:25:50 <itidus21> Vorpal: chess with spaceships which can make an impulse thrust in a given direction once per turn
17:25:59 <Vorpal> kallisti, anyway you could have it oscillate once per turn or such
17:26:03 <itidus21> around planets
17:26:04 <Vorpal> kallisti, that might be interesting
17:26:08 <kallisti> Vorpal: hmmmm maybe
17:26:17 <kallisti> it would be hard to visualize it
17:26:23 <kallisti> graphically
17:26:30 <Vorpal> hm
17:26:54 <kallisti> unless the projectiles are like huge beams with clearly labelled arrows. :P
17:27:03 <kallisti> "hi player I go this way"
17:27:10 <kallisti> "hey now I'm going this way"
17:27:15 <Vorpal> kallisti, could easily be done on a computer
17:27:23 <itidus21> computers once again become useful
17:27:25 <Vorpal> just make it look like >>>>> or such
17:27:28 <itidus21> for the first time since ww2
17:27:28 <kallisti> yes it just doesn't make sense in the model I have for how the game works...
17:27:33 <Vorpal> in red above the board
17:27:56 <Vorpal> kallisti, how can you have a model when you haven't yet decided on the rules
17:28:06 <kallisti> that's the only undecided rule.
17:28:25 <fizzie> Huh, the 'coretemp' sensor on this Atom box is saying "Core 0: +23.0°C (crit = +90.0°C)" -- that sounds dubiously low, but I guess it's *possible*, since it's an Atom and mostly idle. (The box is making a worrisome noise, might be the PSU fan dying.)
17:28:38 <fizzie> +23 is pretty much room temperature, though.
17:28:40 <Vorpal> fizzie, I had an old sempron that idled at 28 C
17:28:50 <Vorpal> when it was like 17 C inside
17:29:04 <kallisti> the difficulty of this rule is that it either requires a special case, a real-time element of the game, or a re-interpretation of how loops work.
17:29:10 <Vorpal> my current CPU tends to idle much higher, but then the fan is no longer constant speed
17:29:11 <fizzie> lm-sensors tends to report all kinds of nonsense numbers, but normally coretemp's quite reliable, AFAIK.
17:29:35 <Vorpal> fizzie, yeah all machines should have IPMI
17:29:47 <fizzie> Everyone wires the motherboard-specific sensors differently for some reason.
17:29:47 <Vorpal> that reports temperatures with proper names too
17:30:01 <Vorpal> fizzie, it tends to be mostly reliable on thinkpads
17:30:05 <Vorpal> (lm-sensors)
17:30:10 <Vorpal> fizzie, even then there are some issues
17:30:32 <itidus21> Vorpal: if i allowed gravity then i could allow acceleration
17:30:33 <Vorpal> fizzie, and that is with the thinkpad-isa-0000 "adapter"
17:30:45 <Vorpal> fizzie, they wire it differently in different models
17:30:51 <Vorpal> some stuff are the same though
17:31:01 <Vorpal> itidus21, sure
17:31:08 <itidus21> that would be quite weird
17:31:09 <fizzie> Mhm, modprobed also the actual superio chip found by sensors-detect ("Fintek F71862FG Super IO Sensors"); it gives temp1, temp2 and temp3 at 39, 46 and 51, respectively.
17:31:15 <fizzie> No idea where those temperatures are, though.
17:31:25 <Vorpal> itidus21, I wonder when this turns into something completely different than chess, instead of a variant of chess
17:31:28 <kallisti> Vorpal: I suppose I could simply leave it an open question, with reinterpretations of the rule being permitted. Obviously for any kind of tournament you would want to pick one rule for the entire series of games.
17:31:48 <kallisti> my implementation will have the 4 non-real-time rules that I've got so far (including the oscillating one you suggested)
17:31:50 <Vorpal> fizzie, might even be offset from the real values depending on the type of probe iirc
17:32:02 <kallisti> with an option to choose which rule you want to play.
17:32:16 <fizzie> Certainly. Or multiplied with a different factor.
17:32:32 <Vorpal> fizzie, or both :P
17:32:32 <itidus21> Vorpal: turn based asteroids basically
17:32:39 <Vorpal> itidus21, :D
17:32:52 <Vorpal> anyway is there any realtime chess I wonder
17:33:09 <Vorpal> there are other RTS obviously, but are there any based on chess?
17:33:34 <itidus21> i wonder if anyone has ever tried to implement asteroids with turn based
17:33:43 <Vorpal> doubtful
17:33:49 <itidus21> its so insane
17:33:55 <Vorpal> why don't you do it?
17:34:12 <itidus21> my initial definition of turn is turning to jelly
17:34:19 <kallisti> I guess if I ever implement a system that matches players together, they could each check off which rules they want to play and it will match them with anyone else that picked those rules.
17:34:23 <Vorpal> itidus21, anyway astroids is turn based, it is just that they are very short turns and take a fixed amount of time :P
17:34:29 <kallisti> but that's further away from just getting the actual game itself.
17:34:33 <Vorpal> (computers are not continuous!)
17:34:48 <itidus21> and the idea is that instead of firing guns in asteroids, that you collide with things to destroy them
17:35:05 <itidus21> so, you could only destroy the asteroid on your turn, in such a system
17:35:15 <kallisti> Vorpal: FRP maintains a sample-independent abstraction that logically resembles continuity.
17:35:28 <Vorpal> kallisti, FRP being?
17:35:32 <kallisti> functional reactive programming
17:35:36 <Vorpal> right
17:35:49 <kallisti> of course you have to sample values at some point, the code itself is written as though it were continuous.
17:35:56 <Vorpal> kallisti, anyway I doubt astroids is implemented with it in the classical implementation
17:36:04 <itidus21> this isn't really an idea i just had.. this is just lots of ideas culminating
17:36:12 <Vorpal> kallisti, and still the actual computer is discrete
17:36:37 <kallisti> I certainly don't disagree that computers are discrete.
17:36:39 <itidus21> i have a notepad showing you how i labor over the question of turn based vs realtime in games
17:36:56 <Vorpal> itidus21, how is that something to labor over?
17:36:58 <itidus21> and finally i made some progress here
17:37:05 <Vorpal> you just decide from case to case what fits best
17:37:52 -!- Jafet has joined.
17:37:59 <itidus21> gameplay begins with standard chessboard.. each has a pawn piece placed somewhere on rear row.
17:38:42 <itidus21> turn by turn an impulse is done by the "ship" direction and speed indicated
17:38:42 <Phantom_Hoover> What if you make the pieces continuous too?
17:38:59 <Phantom_Hoover> You don't have pawns, you have a long strip of pawn at the start.
17:39:08 <itidus21> not in this variation
17:39:15 <Vorpal> Phantom_Hoover, interesting, how would you move it?
17:39:19 <Vorpal> Phantom_Hoover, like a barrier?
17:39:30 <itidus21> well could have more than 1
17:39:53 <Vorpal> in the continuous model I mean
17:40:18 <Phantom_Hoover> Vorpal, you'd fling bits of it along defined trajectories so the integral of movement d(pawn) is within allowed bounds?
17:40:25 <kallisti> Vorpal: of course, thanks to the sampling theorem, we know that a continuous function with no frequencies higher than N can be completely determined by a discrete signal with a sample rate of .5*N. I'm not sure what implications this has for games. :P
17:41:25 <Phantom_Hoover> You'd probably have to forbid non-measurable sets of piece from being moved.
17:41:31 <Vorpal> Phantom_Hoover, hrrm
17:41:37 <Vorpal> and yes
17:42:29 <Vorpal> kallisti, I would suspect a lot of non-continuous functions in games
17:42:49 <Vorpal> kallisti, well, depends on the game. I was thinking FPS or such here
17:43:29 <kallisti> Vorpal: I'm just not really sure how to calculate frequencies on fuctions on non-real (co)domains.
17:44:31 <Vorpal> hm
17:44:59 <Vorpal> bbl
17:45:10 <kallisti> but given the clock speed computers I would think that most data "frequencies" are "low enough" in comparison.
17:45:13 <kallisti> +of
17:46:36 <itidus21> heres a pic of what i have in mind: http://oi44.tinypic.com/2sbtmvb.jpg
17:47:11 <itidus21> each vector representing a turn somehow
17:48:09 <kallisti> guys what if I write this portal chess server and people actually play it?
17:48:31 <itidus21> the trouble begins if i allow velocity.. then each vector gets modified every turn
17:48:34 <fizzie> Then you're doomed to be known as the "portal chess guy". There are worse fates. (But not many?)
17:48:49 <kallisti> fizzie: what are you talking about portal chess is often.
17:48:55 -!- Klisz has joined.
17:48:59 <kallisti> yes, often
17:49:01 <kallisti> not awesome
17:50:00 <kallisti> fizzie: are you implying that "portal chess guy" is not a title with dignity?
17:50:12 <kallisti> I completely disagree.
17:50:41 <fizzie> No, no, it certainly has gravitas.
17:51:03 <fizzie> Perhaps even gravytude.
17:51:21 <itidus21> if the game uses velocity and if vectors have variable time, then it means that the time your turn can determine the length of time that the other objects move during your turn
17:51:46 <kallisti> itidus21: yes
17:51:58 <itidus21> this is unanticipated pain
17:52:12 <kallisti> turns + real time = you can wait forever (or until a time limit) and maintain the current status quo of the system
17:52:39 <itidus21> but then again..
17:52:40 <Vorpal> <kallisti> but given the clock speed computers I would think that most data "frequencies" are "low enough" in comparison. <-- from what sort of data?
17:53:05 <kallisti> Vorpal: precisely. it was a very vague statement. I'm guessing many game states fall into this category.
17:53:16 <Vorpal> right
17:53:24 <kallisti> but not all. it again dependends on how you calculate frequency of an entire game state
17:53:32 <kallisti> I don't know how to do that or if it's necessarily possible.
17:53:34 <itidus21> hummm
17:53:59 <itidus21> i guess these sorts of problems become simpler when actually testing the thing in practice, instead of theorizing
17:53:59 <kallisti> I guess it would help if I knew more about Fourier transforms.
17:54:03 <Vorpal> kallisti, I was just going to point out that for example microwave control circuits from what I remember run at much higher frequencies than computers do
17:54:30 <kallisti> Vorpal: well I didn't mean "any data"
17:54:43 <Vorpal> kallisti, and iirc there was some sort of carbon transistor that could switch at 100 GHz
17:54:50 <Vorpal> which is pretty impressive
17:55:11 <kallisti> we should design a carbon transistor processor and make it affordable to the masses.
17:55:45 <Vorpal> kallisti, if it works out in the end I guess that will happen, probably won't give you a 100 GHz CPU, there are many overheads
17:55:55 <kallisti> right
17:55:59 <itidus21> what i am talking about seems to be a continuous board "racetrack" where the objective is to crash into the opponent
17:56:20 <kallisti> itidus21: I would say you want a time limit
17:56:21 <kallisti> to a turn
17:56:33 <kallisti> to maintain sanity.
17:56:43 <itidus21> racetrack adopts the idea that no other pieces move during a turn
17:56:58 <kallisti> so it's like...
17:57:01 <kallisti> a non-real-time game?
17:57:06 <itidus21> yeah :)
17:57:22 <itidus21> my goal is turnbased on a continuous board
17:57:38 <kallisti> anyway turnbased asteroids could be interesting if you have precise control over what you can do per turn
17:57:56 <kallisti> like applying this much force in this direction, or aim and fire
17:58:30 <itidus21> i need to study the racetrack rules a bit closer
17:59:38 <Vorpal> kallisti, what about 3D chess?
17:59:40 <kallisti> hmmm one nice thing about Haskell is I'll be able to take advantage of its excellent concurrency support when I actually write the server code that hosts games.
17:59:46 <kallisti> Vorpal: what about it?
17:59:49 <fizzie> Continuous boards sound like a recipe for endless squabbling about how you *would* have won except the unfair floating-point imperfections of your implementation kept favouring the opponent. (Unless of course you're going to analytically solve everything.)
17:59:52 <Vorpal> kallisti, it could be interesting
17:59:53 <kallisti> pretty sure that already is a thing.
18:00:14 <fizzie> Don't they play 3D chess in Star Trek?-)
18:00:29 <fizzie> http://www.chessvariants.com/3d.dir/startrek.html -- apparently.
18:00:48 <Vorpal> kallisti, 4 players, two like usual, the other two on the "ceiling"
18:01:05 <kallisti> ah yes that could be interesting
18:01:14 <Vorpal> kallisti, would require 8x8x8
18:01:14 <kallisti> 3 or more player variants are always interesting
18:02:04 <kallisti> of course if I'm making a whole portal chess server with web-based and desktop clients I'll need a website too
18:02:10 <pikhq> Star Trek 3D chess is more chess on a very strange 2D board.
18:02:12 <kallisti> "Welcome the international hub of portal chess gaming!"
18:02:19 <Vorpal> pikhq, heh
18:02:20 <kallisti> my website will be so good.
18:02:25 <kallisti> missing words everywhere
18:02:34 <fizzie> Well, it's got that movable-level thing going on.
18:03:09 <pikhq> Oh, right, movable levels.
18:03:16 <kallisti> it would be interesting to play a game of chess where you have two boards, with two different starting configurations
18:03:17 <pikhq> Okay, I suppose you could call it 3D barely.
18:03:25 <kallisti> and each piece on one board is connect to a piece on the other board
18:03:35 <Vorpal> what about 4D chess?
18:03:37 <fizzie> pikhq: I think the handwavey justification for those would be that they represent starships.
18:03:41 <kallisti> so that moving one requires you to move the other according to rules (possibly they're the same piece but you could have them do different things)
18:03:55 <pikhq> fizzie: I suppose.
18:04:31 <kallisti> and capturing a piece on one board "frees" the piece on the other board.
18:04:36 <kallisti> creating an interesting strategic element.
18:05:04 <kallisti> where capturing an opponent piece can actually make the pieces on the other board more dangerous.
18:05:24 <kallisti> ....basically I should just make chess variants all day.
18:05:26 <kallisti> and get paid to do it.
18:05:29 <Vorpal> kallisti, I fear it might end up being very annoying to play
18:05:35 <kallisti> Vorpal: perhaps
18:05:38 <kallisti> depends on the specific mechanics.
18:05:42 <Vorpal> indeed
18:05:53 <kallisti> also winning conditions are uncertain
18:06:07 <kallisti> it could be either winning on one board wins the whole game or you have to win both games
18:06:16 <kallisti> with a draw being both players win one game
18:06:38 <kallisti> this is plausible if one player focuses on their success on one board, to the detriment of the other board.
18:06:46 <kallisti> gradually freeing all of their pieces
18:06:54 <kallisti> so that it just becomes two mostly seperate games of chess
18:07:07 <kallisti> or well, whatever this chess variant is called.
18:08:17 * kallisti is more interested in games that have a complex but elegant set of rules, rather than wacky variants.
18:09:18 <itidus21> fizzie: a solution i have is that you can make a continuous move by rolling a [0; a,b,c] continued function on a dice and stop rolling on some number on that dice
18:09:24 <Vorpal> kallisti, I'm quite a fan of RPGs myself. I wonder if you could make some sort of chess-inspired RPG
18:09:33 <Vorpal> chess with sidequests sounds too weird so hm
18:09:43 <kallisti> Vorpal: I do like your suggestion that bidirectional loops change direction once per turn because it's an interesting gameplay element, I'm just not sure that it can be used strategically or if it's mostly an element of luck and circumstance.
18:10:03 <itidus21> so if stop rolling on a "1" then.. dicerolls 2 6 4 6 5 1 results in [0; 2,6,4,6,5]
18:10:05 <Vorpal> kallisti, you would have to time your turn to the loop to take advantage of it
18:10:05 <kallisti> Vorpal: well I have some ideas for a real-time-strategy RPG
18:10:19 <Vorpal> kallisti, not sure how common such loops are anyway
18:10:19 <itidus21> i just learned about continued functions a few hours ago
18:11:49 <kallisti> Vorpal: I feel like it's going to be one of those rules that results in unintended metagameplay, which arose as a natral consequence of other rules.
18:12:02 <Vorpal> kallisti, hm?
18:12:04 <kallisti> and was originally seen as a very specific rare circumstance.
18:12:21 <kallisti> well, because even now I can think of many possible uses.
18:12:29 <kallisti> just not sure how it fits into the game.
18:12:37 <Vorpal> kallisti, Nothing wrong with metagaming, it is kind of common in competitive computer games anyway.
18:13:09 <itidus21> kallisti: a difficult thing is that most games depend on the fact there are no perfect players
18:13:10 <kallisti> I think the game itself will be very glass cannony. like playing out WW3 on a chess board. both players basically have nukes and want to kill each other. now what happens?
18:13:38 <Vorpal> kallisti, lots of explosions yay!
18:13:44 <itidus21> its something i think about a lot
18:14:08 <itidus21> there is no perfect life though, or is there.. i guess one can ask the indians
18:14:15 <Vorpal> itidus21, a lot of computer games depend on timing to ensure that
18:14:45 <Vorpal> you can't time perfectly usually
18:14:50 <itidus21> chess is interesting in that even by cheating you can't be a perfect player
18:15:03 <kallisti> itidus21: American Indians were not a perfect society living idyllic lives. kthx
18:15:06 <Vorpal> itidus21, are you sure there is no perfect play in chess?
18:15:13 <itidus21> no perfect player
18:15:19 <itidus21> not no perfect play
18:15:32 <itidus21> to be a player, one must actually play :D
18:15:44 <Vorpal> itidus21, well computers can easily beat humans
18:15:51 <itidus21> so some hermit in a cave who knows perfect chess but never plays anyone doesn't count
18:15:59 <Vorpal> eh
18:16:04 <kallisti> itidus21: cheating usually isn't regarded in defining a "perfect game" :P
18:16:05 <Vorpal> who said anything about such a guy?
18:16:29 <itidus21> for my definition of player, it is not enough to have the potential to play.. the playing must be actual
18:16:38 <Vorpal> yes and?
18:16:46 <Vorpal> I don't see your point here
18:17:04 <Vorpal> chess probably does have perfect play, just no one figured it out yet
18:17:18 <itidus21> i agree chess has perfect play
18:17:22 <kallisti> Vorpal: anyway I was thinking of a game that is partially inspired by magicka, and also partially inspired by real time strategy, but not really having much in common with them...
18:17:22 <itidus21> but it has no perfect players
18:17:41 <Vorpal> itidus21, as of yet. Computers aren't powerful enough and the chess AIs not got enough. Yet.
18:17:56 <itidus21> even if you are willing to cheat... even if you turn every resource to the task
18:17:58 <kallisti> Vorpal: you would start off as a single adventurer, and gradually gather a party. the interface is RTS style. you click on people and issue orders and use hotkeys to cast abilities.
18:18:08 <itidus21> you cannot play in the capacity of a perfect chess player
18:18:13 <itidus21> at this stage :D
18:18:17 <Vorpal> itidus21, cheating doesn't make sense in chess, what would it be? Moving two pieces in a turn?
18:18:18 <kallisti> Vorpal: also I was considering perhaps having a system of automation, like Dragon Age.
18:18:31 <itidus21> look.. umm..
18:18:35 <Vorpal> kallisti, never played that game
18:18:42 <itidus21> even IF both players talked about what move each player intended to make next
18:18:53 <kallisti> itidus21: cheating defines what the game is. when you permit cheating you're talking about a different game entirely.
18:18:56 <itidus21> uhmm.. no that doesnt make sense
18:18:59 <kallisti> *redefines
18:19:09 <Vorpal> oh then it is easy to solve, if you actually know what a player will do in a given situation
18:19:17 <itidus21> hmm ....
18:19:19 <Vorpal> you can just recursively apply that until you find a good one
18:19:22 <itidus21> it is?
18:19:40 <itidus21> ok i guess it is :D
18:19:43 <Vorpal> if it isn't restricted to next turn but can be applied to hypothetical future turns
18:19:56 <Vorpal> then you basically have a perfect "heuristic"
18:20:12 <itidus21> well.. this is headache material for me..
18:20:16 <Vorpal> and can just search down the tree of moves to figure out a variant where you wins
18:20:22 <kallisti> Vorpal: I don't know I have a feeling that chess has too many divergent possibilities for a set of rules in response to the opponent's moves that results in a guaranteed victory.
18:20:59 <Vorpal> kallisti, hm?
18:21:04 <kallisti> ....nevermind. :P
18:21:23 <itidus21> Vorpal: ok suppose that 1 player would tell his next move.. and the other one would not do so
18:21:36 <itidus21> now he will only tell his next move :D
18:21:42 <Vorpal> kallisti, I wrote a rather good AI for othello once for an university assignment. It easily beat all humans I tried it on
18:21:59 <itidus21> i mean player A will say "if i do this what will you do?" and player B will say, i will do such and such
18:21:59 <Vorpal> kallisti, and that just looked ahead 7 moves in searching for good positions
18:22:11 <itidus21> and then player B does such and such
18:22:12 <Vorpal> kallisti, used alpha-beta pruning
18:22:23 <itidus21> and then it is player A's turn again.. and cycle repeats
18:22:33 <itidus21> can player B beat player A? :D
18:22:44 <itidus21> curious idea, eh
18:23:19 <itidus21> but.......
18:23:24 <Vorpal> itidus21, that is just doing that algorithm to the depth 1. I assumed you mean that once player B replied what he would do then A would ask "and what if I then did this" and B would answer and so on
18:23:26 <itidus21> his "what will you do?" only counts for 1 turn
18:23:30 <Vorpal> with no limit of depth
18:23:40 <Vorpal> then B can't beat A unless B can pull off perfect play
18:23:42 <itidus21> yeah.. i wasnt sure at first...
18:23:56 <Vorpal> (which might be possible)
18:23:58 <itidus21> but i decided the latter question is more interesting
18:24:05 <kallisti> Vorpal: also regarding magic I was going to make effective use of magic much more challenging than in other games.
18:24:10 <kallisti> I think this is where the magicka influence stems from.
18:24:20 <kallisti> but instead of in an action-adventure game it's an RPG-like RTS.
18:24:35 <Vorpal> itidus21, and sure B can beat A. You need a greater depth in searching for solutions. Even human chess players look ahead a few turns
18:24:41 <Vorpal> (well, good ones at least)
18:24:55 <Vorpal> kallisti, omg.... chess with magicka style magic!
18:24:59 <Vorpal> kallisti, epic win
18:25:12 <itidus21> Vorpal: another curious question is.. whether such a system would negatively affect player A's chances of winning
18:25:40 <Vorpal> kallisti, very good when you don't have much time. Someone will die very soon
18:25:45 <itidus21> through the distraction of knowing his moves
18:25:51 <Vorpal> kallisti, I predict game length will be a few minutes at most
18:25:57 -!- iamcal has quit (Remote host closed the connection).
18:26:16 <Vorpal> kallisti, just imagine crossing opposite beams on top of the opposing king.
18:26:19 <Vorpal> :D
18:26:31 <kallisti> most magical abilities would take the form of a) very slow casts with powerful effects and high cost b) very slow casts with moderate effects and moderate costs c) fast weak effects with moderate cost d) fast moderate effects with high cost e) fast powerful effects with incredibly high cost leaving you completely vulnerable
18:26:48 <kallisti> Vorpal: I have no idea how such a game would work
18:27:00 <Vorpal> kallisti, neither do I, but it sounds awesome
18:27:15 <Vorpal> itidus21, doubtful. I'm not really good at psychology.
18:27:19 <Vorpal> so who knows
18:27:34 <itidus21> so, if player A is a grand master, and player A and B are both using the most powerful computing resources available, and reasonably unbounded turn times.. and player B is giving player A his next turn
18:27:46 <itidus21> i would wonder what sort of game would come out of it
18:27:56 <itidus21> maybe both should be grandmasters im not sure :-s
18:28:08 <kallisti> so then the key ideas of effective magic use involve a) picking the best spell for the best situation b) ensuring you have enough time to cast it because taking damage quickly interrupts you c) ensuring you have enough magical resources in the long-term
18:28:25 <kallisti> the powerful, fast, costly spells would be a last-ditch effort when you fuck up.
18:28:35 -!- PiRSquared17 has joined.
18:28:45 <Vorpal> kallisti, heh
18:28:49 <itidus21> i am curious of what length of time would be useful for a computer in chess...
18:29:06 <Vorpal> kallisti, so completely unlike the magic of magicka then
18:29:07 <itidus21> and is there a cutoff period where a computer is no longer able to efficiently use time to play chess
18:29:36 <itidus21> like if you give a computer a year to make a move
18:29:37 <kallisti> Vorpal: I was considering various complex magic models that would be magicka-esque, but yes... not directly like it at all.
18:29:45 <itidus21> will it just sit there twiddling its thumbs
18:30:08 <Vorpal> kallisti, sounds fairly like magic in trading card games from what I seen of them (I watched an LP, never played them myself)
18:30:24 <kallisti> itidus21: well assuming it's using a decision tree it will eventually run out of possibilities or hit its cutoff point.
18:30:24 <Vorpal> well, to some degree
18:30:27 <Vorpal> not so much the cost thing
18:30:32 <Vorpal> that is just adding mana though
18:30:36 <kallisti> Vorpal: I know nothing about that game.
18:30:47 <Vorpal> kallisti, trading card games is a genre
18:30:51 <Vorpal> kallisti, not a specific game
18:30:55 <kallisti> I was considering breaking away from the traditional mana concept and having different kinds of resources
18:30:57 <Vorpal> kallisti, like magic the gathering and such
18:31:12 <kallisti> Vorpal: that's what I assumed you were talking about.
18:31:15 <Vorpal> not a huge fan of them myself
18:31:16 <itidus21> i wonder then, if there is a specific length of time where current chess computing of a move is useless after it
18:31:39 <Vorpal> especially the business model of the companies making them pisses me off
18:31:49 <kallisti> it also resembles magic in WoW based on the abstract concept I provided with cast time vs. power output vs. cost. but I want the decision to be much more important than it is in WoW
18:32:11 <Vorpal> kallisti, iirc WoW copied from some other earlier MMO
18:32:13 <kallisti> good timing should be greatly rewarded, and poor execution should be punished. but you should also have a number of failsafes you can rely on when you fuck up.
18:32:17 <Vorpal> never played WoW myself
18:32:17 <kallisti> Vorpal: everquest
18:32:20 -!- Jafet has quit (Ping timeout: 268 seconds).
18:32:20 <Vorpal> right
18:32:48 <itidus21> in other words, i wonder what is currently the longest useful chess computation
18:33:02 <kallisti> I've always been interested in magic that involves elements in your environment.
18:33:03 <Vorpal> kallisti, I watched some videos of SWTOR, and my god does the combat look horrible. From what I heard the WoW combat works pretty much the same way, but less polished
18:33:04 <itidus21> is it merely a question of searching an existing data set?
18:33:23 <kallisti> Vorpal: I didn't play WoW because it looks good.
18:33:29 <Vorpal> kallisti, hotkey combat just looks so utterly boring. Mindless buttonmashing.
18:33:33 <kallisti> I'm more interested in mechanics. WoW has pretty polished mechanics.
18:34:10 <kallisti> but yes it gets dull.
18:34:13 <Vorpal> kallisti, and from what I heard the SWTOR mechanics are indeed pretty similar. Took some ideas from other MMOs as well
18:34:53 <itidus21> mmo's.. the worst thing to ever happen to the internet :-"
18:34:56 <kallisti> WoW has had a lot of time to take form.
18:35:00 <Vorpal> kallisti, anyway at least SWTOR seems to have a good story, which I heard was pretty bad in WoW
18:35:05 <itidus21> i havent played any i admit
18:35:08 <kallisti> yes there is no story basically.
18:35:10 <kallisti> no one cares about the story.
18:35:19 <Vorpal> itidus21, I think MMOs could be good, just not hotkey ones
18:35:38 <kallisti> Vorpal: planetside had a lot of potential
18:35:40 <itidus21> the last 12 years of gaming is "could be good but isnt"
18:35:41 <kallisti> I think they're making a sequel?
18:36:01 <kallisti> itidus21: dunno I think gaming has developed pretty well in a very short time. Sure it's not perfect.
18:36:10 <Vorpal> kallisti, no idea, I don't really keep track of MMOs.
18:36:20 <kallisti> Vorpal: Planetside is/was an MMO FPS
18:36:33 <Vorpal> itidus21, problem is that there are scalability issues with more interesting form of combats
18:36:37 <itidus21> tidus must remind you that gaming is not a synonym for 3d rendering
18:36:39 <Vorpal> itidus21, like, lag issues
18:36:46 <Vorpal> itidus21, hotkey mmo is a way to work around those
18:36:46 <kallisti> I say "is" because it still exists and I say "was" because its userbase is mostly dead.
18:36:52 <Vorpal> though things are moving away from hotkey
18:36:57 <Vorpal> better connections and so on
18:37:08 <itidus21> what is the main causes of lag?
18:37:17 <Vorpal> itidus21, latency
18:37:25 <Vorpal> there are of course computing issues as well
18:37:32 <Vorpal> but latency is the real problem here
18:37:33 <itidus21> what are the main causes of latency?
18:37:39 <kallisti> Vorpal: but it was basically a neverending game of base-capturing spread out across multiple planets. you could get dropped into warzones pretty quickly and there were a lot of cool multi-person vehicles.
18:37:47 <kallisti> there were 3 factions
18:38:00 <itidus21> i know these questions are getting repetitive from me
18:38:17 <itidus21> leading up to, what can be done by gamers about latency
18:38:19 <Vorpal> itidus21, I'm trying to remember
18:38:22 <Vorpal> I read this at university
18:38:33 <Vorpal> there is of course propagation delay for the signal
18:38:36 <kallisti> there's a few algorithms
18:38:37 <Vorpal> then there is routing time
18:38:41 <Vorpal> and a few more factors
18:38:47 <Vorpal> there was some nifty equation for it
18:38:54 <itidus21> is it due to the dimorphism between download speeds and upload speeds?
18:38:54 <Vorpal> completely forgot it
18:38:57 <kallisti> one algorithm is to basically predict what will happen based on previous input
18:39:00 <Vorpal> itidus21, no
18:39:19 <Vorpal> kallisti, for an MMO the issue is network latency
18:39:22 <kallisti> http://mine-control.com/zack/timesync/timesync.html
18:39:26 <kallisti> Vorpal: yes this is what I'm talking about
18:39:30 <kallisti> combating latency
18:39:45 <Vorpal> kallisti, well you can't. There is always at least the propagation delay
18:39:53 <kallisti> ....yes
18:39:54 <Vorpal> unless you have a wormhole, nothing you can do
18:39:55 -!- Jafet has joined.
18:40:00 <kallisti> I'm not suggesting you can apply an algorithm that eliminates latency
18:40:05 <kallisti> that is obviously ridiculous.
18:40:29 <itidus21> well.. is latency not the same thing as connection speed?
18:40:41 <Vorpal> itidus21, connection speed is ill-defined
18:40:58 <Vorpal> kallisti, anyway if one guy jumps sideways while another guy shoot him, they see different scenarios. Who is correct?
18:41:02 <itidus21> that is to say, people used to play games on 56k modems :P
18:41:04 <kallisti> itidus21: latency is basically the time between send and receive
18:41:11 <Vorpal> kallisti, either way one guy is going to be pissed off
18:41:38 <itidus21> and now even though you can download gigabytes from powerful servers at > 2mb/s
18:41:45 <itidus21> latency is still a problem
18:42:21 <kallisti> Vorpal: dead reckoning combats this slightly by using previous inputs to predict what is about to happen, this causes the discrepancy to be a little less extreme.
18:42:34 <kallisti> if the algorithm is good at prediction that is
18:42:47 <Vorpal> itidus21, there is latency and there is bandwidth. Latency is the time it takes for any data to reach the other end. Bandwidth is how much data you can send. Think about a car fast car and a slow truck. The fast car can't carry as much but will reach the destination quicker
18:43:00 <kallisti> for an FPS this is pretty difficult to accomplish.
18:43:09 <Vorpal> kallisti, problem is that you can't easily predict future inputs of a human
18:43:24 <kallisti> you can't predict when someone is going to shoot. you can however predict that they're going to continue holding down automatic fire if they were already doing so.
18:43:43 <Vorpal> kallisti, not having ranged weapons would help, though not completely.
18:43:48 <itidus21> Vorpal: thats pretty difficult to comprehend that latency is independant of bandwidth
18:43:56 <itidus21> its a royal headfuck
18:44:06 <Vorpal> itidus21, not really
18:44:08 <kallisti> itidus21: bandwidth concerns how much data you can receive at any given point
18:44:15 <kallisti> itidus21: latency is how long it takes for data to get to you.
18:44:18 <kallisti> or to be sent from you
18:44:18 -!- Jafet has quit (Ping timeout: 252 seconds).
18:44:51 <kallisti> itidus21: you could be sending gigabytes of data per second but it still takes 5 seconds to be received.
18:44:51 <Vorpal> itidus21, what about this: fill a truck with harddrives with data. You will have a HUGE latency but the bandwidth will be enormous.
18:44:59 <itidus21> but.. why wouldn't the latency be uniform?
18:45:11 <Vorpal> itidus21, well that is easy, internet is best-effort
18:45:18 <Vorpal> this is why we need tcp
18:45:23 <Vorpal> to resend dropped packets and so on
18:45:26 <itidus21> so bandwidth is easier to achieve than latency?
18:45:34 <kallisti> itidus21: conversely, you could be receiving a single byte per second but it's received a nanosecond later.
18:45:35 <Vorpal> not really that is best-effort too
18:45:50 <itidus21> well.. people care more about latency than bandwidth i assume
18:45:59 <Vorpal> itidus21, gamers usually do yes
18:46:02 <itidus21> .. no they don't ;_; who am i kidding
18:46:11 <olsner> then again, a lot of people care more about bandwidth than latency
18:46:13 <itidus21> and the internet is geared up for pro-bandwidth
18:46:21 <kallisti> itidus21: of course there's a point where the bandwidth becomes so small that the net effect is a perceived latency, as it takes long to receive the entire packet. this is most obviously when your bandwidth completely drops to zero (aka you disconnect)
18:46:40 <Vorpal> itidus21, anyway there are other users on the internet, that causes the available resources to vary. Your packet might end up waiting in the input queue of a router a bit longer one time than for the next packet for example
18:46:52 <Vorpal> that would cause latency
18:47:12 <itidus21> so.. the question here then is... could an internet be designed pro latency?
18:47:16 <itidus21> at the cost of bandwidth?
18:47:28 <Vorpal> not sure that tradeoff exists
18:47:47 <Vorpal> sure there might be minor tweaks you could make, but nothing major I suspect
18:47:55 <kallisti> they're certainly connected to each other but they're not directly or inversely proportional.
18:48:12 <kallisti> bandwidth can be a bottleneck to latency.
18:48:27 <kallisti> and vice versa, I'd imagine.
18:48:53 <Vorpal> itidus21, anyway there are lots of things that need bandwidth: downloading updates for your OS. Doesn't matter if it takes 1 or 2 seconds for the first bit of those to arrive from when you request them
18:49:19 <Vorpal> sending emails isn't very sensitive either way.
18:49:55 <itidus21> i dont understand why sending a large fille is different from sending lots of state updates
18:50:03 <kallisti> itidus21: intuitively you could think of bandwidth as the size of the pipe, and the inverse of latency is how fast the data is being pumping on average.
18:50:14 <itidus21> is it like.. saying.. you can have large updates but you can't have a lot of them?
18:50:20 <Vorpal> kallisti, intertubes :D
18:50:23 <kallisti> yep
18:50:53 <kallisti> itidus21: if you have a very small pipe and you're sending a lot of data, it's going to take longer for that data to arrive.
18:51:01 -!- AnotherTest has joined.
18:51:03 -!- AnotherTest has left.
18:51:07 <Vorpal> itidus21, not at all. The thing with a large file is that there is still latency. It is just that the time it takes to transfer the whole file is much larger than the latency
18:51:26 <Vorpal> so you don't really care
18:51:44 <Vorpal> (well there are some complications here, mostly due to TCP ACKs and so on)
18:52:15 <Vorpal> (lets not dwell on those, I'm just pointing out I know about them if anyone (real elliott) is going to talk about them when log reading)
18:52:19 <kallisti> basically the latency still slows the transfer but it's not very much. it's a product where the latency is a very very small quantity compared to the total file size.
18:52:25 <Vorpal> (read*)
18:52:45 <itidus21> ok well.. what if i pretended to send a file, but i was secretly sending a stream of my actions in an mmo >:-)
18:52:55 <kallisti> then...
18:52:58 <kallisti> ....?
18:52:59 <kallisti> okay.
18:53:02 <Vorpal> kallisti, interestingly ssh file copy has/had problems on high-bw, high-latency links
18:53:12 <Vorpal> kallisti, there was/is even a patch set to fix that
18:53:20 <itidus21> is it that the sending will be broken up sporadically
18:53:40 <kallisti> yes that's the latency
18:53:44 <kallisti> for any transfer of data.
18:53:45 <kallisti> that exists.
18:53:47 <Vorpal> kallisti, basically it sends rather small packets thus the latency ends up being an issue due to the time it takes for TCP ACK
18:53:59 <kallisti> Vorpal: aha
18:54:15 <Vorpal> kallisti, here: http://www.psc.edu/networking/projects/hpn-ssh/
18:54:20 <kallisti> yes the pipe analogy kind of breaks down when you actually start to talk about discrete packets.
18:54:37 <kallisti> rather than a continuous "fluid"
18:54:43 <Vorpal> kallisti, it kind of works for UDP still
18:54:47 <Vorpal> not just for TCP
18:55:03 <Vorpal> kallisti, and I have no clue if it works for SCTP and so on
18:55:13 <Vorpal> my guess would be "sometimes"
18:55:50 <Vorpal> (SCTP is a newer protocol that fixes several shortcommings in TCP and UDP, however it is not widely adopted yet, and might never be. Kind of cool though)
18:56:06 <itidus21> so, if you were to try calculus on a connection speed.. the gamers ideal is that at each sampling of the speed it would be above some minimum threshold
18:56:21 <Vorpal> kallisti, anyway kind of curious it works better for UDP than TCP... since TCP is closer to being a stream actually
18:56:25 <itidus21> but the movie downloader's ideal is that the sum of the samples is the highest
18:56:55 <Vorpal> itidus21, what do you mean with connection speed?
18:57:01 <Vorpal> itidus21, latency or bandwidth
18:57:07 <kallisti> itidus21: well essentially latency becomes more of an issue when you're sending small packets. such as game state commands.
18:57:09 <Vorpal> there is no such thing as speed
18:57:17 <itidus21> well forget the word calculus
18:57:35 <itidus21> suppose i chose some sampling rate of 100 times per second to see how much new data has arrived sinced last sample
18:58:00 <itidus21> maybe 100 times is asking a lot
18:58:04 <itidus21> but for fun
18:58:15 <Vorpal> that measures bandwidth
18:58:19 <Vorpal> I think
18:58:34 <Vorpal> it doesn't make sense on anything else than a download anyway
18:58:42 <kallisti> itidus21: in a game latency is more important because time synchronization is important. it's not a one-way dataflow. the game state of clients is depending on small bits of data that it hasn't received yet.
18:58:43 <Vorpal> (or upload of course)
18:58:55 <kallisti> itidus21: consequently, the player is sending packets in response to an incorrect game state
18:59:03 <kallisti> itidus21: so this fine-grained time synchronization issues become more important
18:59:19 <itidus21> latency would seem to cause samples where no new data has arrived
18:59:41 <Vorpal> eh?
18:59:56 <itidus21> ohhh ... no i think i am getting it slowly
19:00:07 <kallisti> itidus21: also it's not a large amount of data per second. so bandwidth isn't very important beyond a bare minimum.
19:00:46 <itidus21> lets say.. all we want to send is 1 byte every 60th of a second
19:01:01 <itidus21> so bandwidth is not our problem in this scenario
19:01:05 <kallisti> conversely downloading is a one-way stream with large amounts of data. the latency of each packet isn't very relevant or noticeable (unless your latency is extreme), but the bandwidth is, because it creates a cap on how much data you can receive per second.
19:01:25 <itidus21> oops uhh ill extend it
19:01:35 <itidus21> lets say.. all we want to send is 1 byte every 60th of a second, and recieve 1 byte every 60th of a second
19:01:39 <itidus21> i know this is asking a lot
19:01:47 <itidus21> but just for the sake of an example
19:02:10 <Vorpal> itidus21, no what you want to send is 1 byte in response to an event at an unknown time to notify the other end that it happened
19:02:23 <Vorpal> you want that to arrive as fast as possible
19:03:07 <itidus21> i guess what i am wondering here is if there is a hardware issue in latency or just dumb programmers
19:03:31 -!- DCliche has joined.
19:04:00 <Vorpal> itidus21, generally it is out of the hands of the game developer in question. You can do various tricks to try to hide it. Like assume if someone was moving in the last update they will continue moving in the same direction
19:04:02 <itidus21> i always seem to say "our topic was just X, but now i realize i wanted to think about Y"
19:04:07 <itidus21> i do this ad nauseum..
19:04:23 <Vorpal> itidus21, there are some physical limitations, like the speed of light, and there are various issues in the hardware of the internet, routers and so on
19:04:24 <itidus21> because its just how i fucking think .. shameful as it is
19:04:50 <kallisti> Vorpal: I'd like to think more sophisticated predictions are possible if you apply some hueristics on a large input buffer.
19:05:05 <Vorpal> kallisti, certainly, that was just a basic example
19:05:08 <kallisti> but I don't know what those heuristics are.
19:05:17 <Vorpal> kallisti, neither do I.
19:05:35 <Vorpal> kallisti, an obvious one is "if jumping they will fall down rather than continue upwards" :P
19:05:51 <kallisti> fizzie: hi you know things about statistics how can you make predictions about future inputs from previous inputs.
19:06:23 <itidus21> i have heard of that side of things
19:06:23 <Vorpal> kallisti, for the purpose here it is enough to point out various methods exist
19:06:30 <kallisti> Vorpal: ah well the prediction only needs to be on the input stream not on each physics tick.
19:06:32 <Vorpal> itidus21, anyway nothing wrong with going off on tangets
19:06:38 <Vorpal> itidus21, I do it all the time
19:06:41 <itidus21> but i am wondering if there is problems in the actual internet which cause latency
19:06:50 <itidus21> which gamers could pay people to fix
19:07:09 <Vorpal> doubtful. There isn't really a good solution anyway
19:07:09 -!- Klisz has quit (Ping timeout: 260 seconds).
19:07:12 <kallisti> yes the problem is that other people are using it
19:07:20 <kallisti> if they paid a bunch of people to not use the internet for a while
19:07:22 <kallisti> they could fix it.
19:07:46 <itidus21> the internet is effectively being spammed with junk traffic
19:07:56 <itidus21> it is.. lets face it
19:07:57 <kallisti> yes such as this IRC channel.
19:08:19 <kallisti> (ha ha ha)
19:08:32 <Vorpal> the internet was a success because of the design of it. It is packet based rather than connection-oriented. You just send a packet and hope for the best. Then there is TCP on top which will resend packets if it didn't get an acknowledgement (of course acknowledgement might get lost too)
19:09:09 <itidus21> the idea of using screenshot sending to provide games seems to me a vast waste of the internet
19:09:20 <Vorpal> you mean OnLive?
19:09:26 <kallisti> wat?
19:09:27 <itidus21> its very tragic waste of the net
19:09:31 <itidus21> yeah OnLive
19:09:57 <itidus21> but
19:10:10 <itidus21> i guess latency matters less there
19:10:22 <Vorpal> kallisti, the game runs on a server, it sends a compressed stream to the client. An interesting idea. And from what I heard it works surprisingly well. Well enough for games like racing games, not well enough yet for games like high-precision FPS
19:10:35 <Vorpal> itidus21, latency matters a lot there
19:10:51 <kallisti> oh...
19:10:54 <Vorpal> itidus21, more so than usual
19:11:07 <Vorpal> itidus21, when you press a button there is a delay until the server gets it and a delay until you see the result
19:11:09 -!- Jafet has joined.
19:11:14 <Vorpal> itidus21, you definitely want to keep those delays down
19:11:38 <itidus21> Vorpal: well the positive thing is that the renderer doesn't have to make any predictions
19:11:44 <itidus21> since the game state is localized
19:11:58 <kallisti> a drawback is that the service /can't/ make predictions..
19:12:01 <Vorpal> itidus21, OnLive both needs low latency and high bandwidth (though they use some custom compression, so they get away with like 2 Mbps iirc)
19:12:01 <kallisti> on the game state
19:12:12 <Vorpal> (or was it MBps? I don't remember)
19:12:21 <Vorpal> kallisti, indeed
19:12:35 <kallisti> for a racing game this would give vast improvements
19:12:42 <kallisti> a racing game would be pretty easy to apply predictions to
19:12:51 <kallisti> for a few milliseconds at a time.
19:12:56 <Vorpal> maybe
19:12:57 <pikhq> Vorpal: 2 Mbps isn't that unreasonable...
19:13:05 <Vorpal> pikhq, fair enough
19:13:08 <pikhq> You can pull that off with x264 and some tweaking.
19:13:13 <itidus21> kallisti: so the player might feel their controls lag, and their video lags, but at least the screenshots will always reflect the true gamestate :D
19:13:14 <Vorpal> hm okay
19:13:27 <itidus21> even if the gamestate is "late"
19:13:50 <pikhq> You'll want higher than that to get higher resolution, but still, streaming video over the Internet is quite doable.
19:13:57 <Vorpal> kallisti, anyway, latency is usually more than a few ms. More 20 ms to my ISP even
19:14:05 <Vorpal> More like*
19:14:32 <kallisti> Vorpal: that's an acceptable range for a racing game.
19:14:39 <kallisti> I'd say up to.... half a second would be okay in many cases.
19:14:43 <Vorpal> kallisti, that is to my ISP. Not to, say, google
19:15:09 <Vorpal> traceroute is fucking up for me for some reason atm... hm
19:15:17 -!- iamcal has joined.
19:15:18 <pikhq> The issue they'll have, of course, is bufferbloat.
19:15:21 <kallisti> traceroute is very unreliable in my experience.
19:15:36 <Vorpal> kallisti, it gets 5 jumps then "no reply"
19:15:39 <Vorpal> very strange
19:15:47 <Vorpal> it usually works to google
19:15:55 <pikhq> For stupid reasons a lot of hosts like to block ICMP.
19:15:56 <itidus21> anyway, i think OnLive is exploitative use of the internet
19:16:13 <Vorpal> pikhq, yes, lattency jitter is going to be a huge issue for OnLive
19:16:25 <itidus21> the people who made the internet would vomit that it is used this way
19:16:28 <Vorpal> itidus21, not really. It is best effort. It is there for everyone to share.
19:16:45 <pikhq> itidus21: I disagree. However, it suffers from the major implementation flaws in the infrastructure.
19:16:53 <pikhq> Such as "my downlink isn't 6 Gbps"
19:17:21 <pikhq> And "There's seconds of buffering, which breaks TCP flow control and is going to give us congestion collapse one of these days"
19:17:38 <Vorpal> pikhq, that is for the uncompressed case. You are never going to get that. You would need like thousands of TBps at least for the backbone then
19:18:01 <itidus21> i mean, surely all these constant 2mb/s connections onlive demands will overall cause more latency on the internet overall
19:18:12 <Vorpal> pikhq, hm, OnLive breaks TCP flow control?
19:18:17 <itidus21> oops @ repeating overall
19:18:18 <Vorpal> pikhq, I would have assumed they used UDP
19:18:28 <pikhq> Vorpal: No, bufferbloat does.
19:18:38 <pikhq> OnLive merely suffers from it like the rest of us.
19:18:57 <Vorpal> pikhq, bufferbloat where? In the routers?
19:19:07 <pikhq> Vorpal: In basically every device.
19:19:08 <kallisti> itidus21: I'd bet that if you look at total network traffic on the internet that portion would be very small.
19:19:13 <Vorpal> pikhq, hm true
19:19:29 <Vorpal> pikhq, you need some buffers though, or the packet drops would get excessive
19:19:33 <kallisti> itidus21: you're basically hating on an internet service because it's using what the internet is for.
19:19:46 <pikhq> itidus21: If TCP flow control were functioning correctly, a flood of constant 2Mbps connections wouldn't increase latency notably.
19:19:56 <pikhq> Vorpal: You want packet drops.
19:20:10 <Vorpal> pikhq, to some degree yes. But not so much it disconnects
19:20:10 <pikhq> Vorpal: TCP flow control triggers on packet drops.
19:20:15 <Vorpal> and indeed
19:20:21 <itidus21> i hate screen tearing and i hate latency...
19:21:05 <pikhq> Vorpal: But, yes, you want a *small* amount of buffering.
19:21:08 <itidus21> du hast
19:21:13 <kallisti> itidus21: forming negative opinions about things that also requires network resources that aren't the thing you're doing is not the way to go about that hatred.
19:21:16 <Vorpal> pikhq, a few packets per input queue or such yes
19:21:30 <kallisti> itidus21: you must really hate Google.
19:21:38 <Vorpal> not sure how much exactly, would need careful measurement
19:21:44 <pikhq> The appropriate buffer size, IIRC, is a function of the bandwidth-latency product.
19:21:53 <Vorpal> ah yes that sounds familiar
19:22:04 <Vorpal> pikhq, are you saying that they are usually oversized?
19:22:21 <pikhq> Vorpal: They are typically set as a few megabytes anymore.
19:22:36 <Vorpal> pikhq, and what should they be?
19:22:36 <itidus21> i don't like knowing that after overworked teams spend millions of $ to create something, that the audience won't truely be able to enjoy it due to technicalities
19:22:48 <Vorpal> pikhq, that might be reasonable on the backbone for all I know
19:22:51 <pikhq> Vorpal: On common links? ~10 packets.
19:23:00 <Vorpal> pikhq, what about the backbone then?
19:23:09 <Vorpal> or was that what you meant with common links?
19:23:11 <kallisti> itidus21: uh the teams don't spend that money themselves. they /receive/ that money.
19:23:16 <pikhq> Vorpal: I meant end-user links there.
19:23:22 <kallisti> itidus21: part of it
19:23:26 <Vorpal> pikhq, okay so what about the backbone links then?
19:23:28 <pikhq> Vorpal: On a backbone? Eh, maybe 100 packets?
19:23:32 <Vorpal> hm okay
19:23:42 <itidus21> all the work comes second place to lag issues
19:23:55 <kallisti> >_>
19:23:57 <kallisti> okay.
19:24:13 <Vorpal> itidus21, anyway there is always going to be lag you can't avoid due to the speed of light
19:24:18 <itidus21> lag is swept under the carpet
19:24:22 <Vorpal> s/lag/latency/
19:24:28 <pikhq> Vorpal: Anyways. What we get now is when any given link is used to capacity, latency skyrockets up to about the size of the buffer in terms of time.
19:24:41 <Vorpal> pikhq, ouch
19:24:46 <Vorpal> pikhq, so why do people do it wrong?
19:25:03 <pikhq> Because nobody knows better.
19:25:11 <Vorpal> pikhq, also what about UDP?
19:25:15 <kallisti> who are these people? what code is this? where is this implemented?
19:25:47 <itidus21> pikhq seems to have the cynicism set in reality i was looking for
19:25:48 <pikhq> kallisti: Some of the buffering is in networking device firmware, some of it in kernels.
19:26:08 <kallisti> ah
19:26:52 <itidus21> so buffering is the main (avoidable) cause of latency?
19:27:03 <kallisti> eh...
19:27:18 <itidus21> or filled buffers?
19:27:32 <pikhq> itidus21: Basically.
19:27:33 <kallisti> latency is mostly caused by scarcity of resources, I would think.
19:27:56 <Vorpal> pikhq, anyway this wouldn't help at all with UDP
19:27:58 <Vorpal> hm
19:28:07 <itidus21> pikhq: so to try and get an answer to my core enquiry
19:28:10 <pikhq> Vorpal: Most things streamed over UDP have manual flow control.
19:28:30 <itidus21> pikhq: what would a pro-minimal-latency internet do differently to the current internet?
19:28:30 <pikhq> kallisti: Nope. TCP attempts to share bandwidth equally.
19:28:34 <Vorpal> pikhq, which may be anything
19:29:01 <pikhq> kallisti: The only thing scarcity of resources should do to TCP streams is make them have less bandwidth available.
19:29:08 <pikhq> (but at roughly the same latency)
19:29:37 <pikhq> Vorpal: Generally they're designed with the intent of behaving nicely with TCP flow control, though.
19:29:43 <pikhq> (unfortunately, not always)
19:29:50 <Vorpal> heh
19:30:16 <Vorpal> brb
19:30:20 <itidus21> hmm
19:30:37 <pikhq> itidus21: Mostly, just have good buffer sizes in place (either via a nice buffer adjustment algorithm, or just setting them to something small that will be suboptimal in general but a hell of a lot better than what we have now)
19:31:36 <pikhq> itidus21: Beyond that, the Internet is actually fairly reasonable about latency. Something like half lightspeed latency...
19:32:27 <itidus21> so if there was only 2 people using the internet at a time it would be damned fast eh?
19:33:03 <itidus21> humm
19:33:10 <pikhq> Or if there weren't seconds long buffers in between people.
19:34:14 <Vorpal> pikhq, what are the usual buffer sizes in the backbone?
19:34:26 <itidus21> is there any way that programmers can fight these buffers without occupying IETF and Cisco?
19:34:39 <pikhq> Vorpal: I honestly don't know; it's a bit hard to measure without cracking open the devices.
19:34:51 <pikhq> Vorpal: You can generally measure buffersize by congesting a link and measuring latency.
19:35:01 <Vorpal> pikhq, kind of hard to do that with the backbone
19:35:12 <pikhq> itidus21: Start with end-user devices. They congest first, and thus are the first ones to show symptoms.
19:36:05 <Vorpal> pikhq, hm does TCP resend the inidial SYN or is that up to the application?
19:36:19 <Vorpal> initial*
19:36:29 <pikhq> itidus21: Also, IETF and Cisco shouldn't be that hard to get to change; just hand them good AQM and voila.
19:36:39 <Vorpal> pikhq, AQM?
19:36:59 <itidus21> google says active queue management
19:37:07 <Vorpal> ah
19:37:20 <itidus21> In Internet routers, active queue management (AQM) is a technique that consists in dropping or ECN-marking packets before a router's queue is full.
19:37:27 <Vorpal> pikhq, what about ECN?
19:37:30 <Vorpal> indeed
19:37:44 <Vorpal> ECN seems like a workaround for too large buffers to me
19:38:12 <pikhq> ECN is actually *slightly* better than the drop-packet flow control.
19:38:24 <Vorpal> hm okay
19:38:24 <pikhq> It allows you to signal congestion *and* get data through.
19:38:29 <Vorpal> right
19:38:34 <Vorpal> pikhq, so is it used much?
19:38:47 <pikhq> Unfortunately, there's a bunch of intermediate devices that break it.
19:38:53 <Vorpal> oh?
19:39:02 <Vorpal> do those devices clear the bit or something?
19:39:18 <pikhq> Or drop packets with the bit set.
19:39:33 <Vorpal> pikhq, well they need to if their own queue is full
19:39:37 <Vorpal> obviously
19:39:50 <pikhq> Vorpal: Drop packets with the "I can do ECN" bit set.
19:39:58 <Vorpal> pikhq, what? why?
19:40:19 <pikhq> Because some hardware manufacturers have less intelligence than the average monkey.
19:40:28 <Vorpal> it doesn't make any sense
19:41:09 <itidus21> pikhq is basically the truth behind my rant about latency... but i admit i didnt know any of this
19:41:30 <itidus21> but what he is saying is what gamers should rally behind it seems
19:41:45 <pikhq> Anyways: most hosts support ECN but don't have it on by default.
19:41:46 <Vorpal> and others too. Consider VOIP
19:41:55 <Vorpal> you want low latency
19:42:20 <Vorpal> pikhq, really? Is it default to off in windows? Linux?
19:42:33 <itidus21> my priority though, is gaming... i guess not everyone will agree
19:42:39 <pikhq> Vorpal: Default to off in Windows, default to "only if the other end supports it" in Linux.
19:42:44 <Vorpal> pikhq, why
19:42:50 <Vorpal> those are silly defaults
19:42:52 <fizzie> kallisti: Search for "time series prediction", or some-such. There are too many methods. I would say in general mostly they boil down to either: (a) generate a "model" of the "system", learn the "parameters" and "current state" from past history, then run it forward and observe (fsvo of the quoted words); or (b) build a (statistical) model directly on the function "f(some amount of past) = some amount of future", and use (overlapping) pieces of the exis
19:42:53 <fizzie> ting history as (input, output) samples for learning it.
19:42:54 <pikhq> Because of aforementioned broken devices.
19:43:17 <itidus21> just like not everyone hates screen-tearing as much as me
19:43:21 <Vorpal> pikhq, ah
19:43:36 <Vorpal> pikhq, are those backbone devices or end user devices?
19:43:46 <pikhq> Vorpal: Mostly end user devices.
19:43:51 <Vorpal> hm
19:44:12 <pikhq> There's few manufacturers of backbone devices, and they tend to hire more knowledgable people.
19:44:34 <Vorpal> pikhq, so linux only does it if it acts as a server I guess? Or can the server start the enabling of ECN?
19:46:12 <pikhq> Acting as a server, I think.
19:46:17 <Vorpal> hm
19:46:26 <Vorpal> I should enable it and see what happens I guess
19:47:12 <itidus21> now that we all concede there is a solvable problem causing latency, i feel unburdened
19:47:20 <pikhq> The current way of mitigating bufferbloat on end user links is sickening, yet funny.
19:47:21 <Vorpal> ... wow
19:47:28 <Vorpal> pikhq, oh?
19:47:45 <pikhq> What you do is throttle your link to slightly less than max.
19:48:09 <pikhq> Thus ensuring buffers near you can't fill.
19:48:11 <Vorpal> heh
19:48:15 <Vorpal> that is absurd
19:49:12 <pikhq> e.g. if you've got a 4Mbps link, throttle to, oh, 3.8 Mbps.
19:49:41 <itidus21> does throttle here mean transmit data at that rate?
19:49:43 <pikhq> And you will have low latency unless the backbone starts having congestive collapse.
19:49:56 <kallisti> fizzie: that description is so vague that it actually matches what I was thinking would work.
19:50:08 <pikhq> itidus21: Basically.
19:50:12 <itidus21> lol
19:50:32 <itidus21> probably would work in countries with unlimited bandwidth
19:50:41 -!- nooga has quit (Ping timeout: 244 seconds).
19:50:47 <pikhq> itidus21: What you generally do is have your router (preferably one of those open firmwares) drop packets that would shove it above the set bandwidth.
19:51:12 <fizzie> I used to do that "do Linux traffic shaping to slightly less than max bandwidth" thing when I lived in another place, because there all my SSH connections froze completely if I tried to download a file.
19:51:24 <pikhq> This basically prevents you from seeing bufferbloat in your router, your modem, the ISP's modem, or the ISP's router.
19:51:25 <Vorpal> fizzie, heh.
19:51:35 <kallisti> fizzie: basically compile a bunch of frequency information on N past inputs, add weights and postprocessing and filtering as desired, and then go to town on the data.
19:51:53 <pikhq> You'll still see bufferbloat in the ISP's network or the backbone, but this doesn't really happen much.
19:52:02 <pikhq> (end user links fall over *well* before those do)
19:52:08 <kallisti> fizzie: but frequency likely isn't the only interesting "parameter" to look at for this "model" of the "system"
19:52:20 <pikhq> fizzie: Classic bufferbloat.
19:52:30 <itidus21> pikhq: since i didnt understand that, i will aska few questions to clarify
19:53:05 <itidus21> does "pikhq> itidus21: What you generally do is have your router (preferably one of those open firmwares) drop packets that would shove it above the set bandwidth." involve transmitting as much data as possible?
19:53:11 <pikhq> itidus21: No.
19:53:14 <itidus21> hmm
19:53:22 <pikhq> itidus21: It means never going *above* that speed.
19:53:56 <Vorpal> pikhq, why not just use small buffers?
19:54:04 <pikhq> You artifically make that your maximum speed, rather than what your link theoretically could do.
19:54:13 <pikhq> Vorpal: Some of the buffers are out of your control.
19:54:18 <kallisti> fizzie: I'd imagine with a game system it would be reasonable to scale more recent states. this covers the case where, if a player was last seen moving right, he is very likely to continue moving right.
19:54:18 <Vorpal> hm true
19:54:24 <pikhq> Vorpal: You can't realistically change the buffer on your modem.
19:54:38 <Vorpal> pikhq, well my modem is also my router
19:54:44 <pikhq> And you'll need to replace router firmware to change the router buffer.
19:55:34 <kallisti> fizzie: oh hmmm, but if you analyze a large history of past actions, you can possibly predict when they're going to stop spamming the same input, or what they may do next.
19:55:56 <fizzie> kallisti: Well, you know; the (a) method typically tries to have the "model" actually represent the "system" somewhat, like if it has a structure, you'd try to model that; or if it's a physical thing, you'd do some physics; while the (b) method just picks a random "approximate a function based on data" method (say, neural nets, autoregressive models, support vector machines, whatever) and then just apply that to learn f(w_{t-4}, w_{t-3}, w_{t-2}, w_{t-1
19:55:56 <fizzie> }) = w_t, using ((w_1, w_2, w_3, w_4), w_5), (w_2, w_3, w_4, w_5), w_6), ... as the dataset; where w_t is the world at time t.
19:56:11 <pikhq> There's also a decent chance of there being a buffer ISP side.
19:56:27 <kallisti> MARKOV PREDICTION. :P
19:56:33 <kallisti> this is the obvious answer.
19:56:37 <kallisti> markov can be applied to anything.
19:56:54 <fizzie> Well, it *is* a Markov process in that case, since it's a finite amount of history.
19:57:03 <kallisti> excellent.
19:57:13 <Vorpal> Markov is awesome
19:58:02 <kallisti> fizzie: the (a) method sounds more relevant to a game
19:58:12 <kallisti> well hmmm
19:58:13 <kallisti> no
19:58:15 <Vorpal> kallisti, not really
19:58:20 <kallisti> (b) is more relevant to the human inputs
19:58:24 <Vorpal> indeed
19:58:25 <kallisti> (a) is more relevant to the game system.
19:58:27 <itidus21> pikhq: this may sound dumb, but, what is the best way to determine max link speed?
19:59:34 <itidus21> i am considering mentioning this theory to my brother who is always open to ways to improve his gaming
19:59:44 <kallisti> fizzie: I don't even think modeling the game system is a statistical problem... since you know everything about how it works.
19:59:52 <pikhq> itidus21: One of those bandwidth testing sites...
19:59:57 <kallisti> you're mostly concerned with analyzing the human input.
20:00:10 <fizzie> Well, yes. In that case you could try modeling the humans, and then just run the game to see what happens when they do things.
20:00:17 <kallisti> yep
20:00:25 <Vorpal> itidus21, he is not going to be able to do anything about it
20:01:13 <itidus21> pikhq: ah ok.. so what you mean is that there is some fixed limit for a connection, and a connection will try to go faster than it?
20:01:38 <pikhq> itidus21: Yes, because a connection will always try to go faster until packets drop.
20:01:45 <pikhq> And buffers prevent packets from dropping.
20:01:52 <Vorpal> pikhq, and it should (modulo ECN)
20:02:04 <pikhq> Yeah.
20:02:29 <kallisti> fizzie: thanks for the terminology I have so many things to read on Wikipedia now...
20:02:48 <fizzie> In that case it might be slightly difficult to go very deep (a)-style; I mean, I guess you could try to guesstimate some "goals" or something that the humans are doing. But anyway there's of course overlap between (a) and (b); if you use, say, a clustering-related thing to learn the function in (b), it might be that what you're actually doing is learning (a)-meaningful clusters. (Everyone doing clustering is always pretending the clusters they get are s
20:02:48 <fizzie> omehow meaningful.)
20:03:20 <Vorpal> fizzie, they are?
20:03:55 <kallisti> fizzie: uh... modeling human behaviors sounds difficult. :P
20:03:59 <Vorpal> fizzie, I found that it varies a lot
20:04:12 <kallisti> I'd rather just crunch some data and derive conclusions. :P
20:04:14 <fizzie> Vorpal: Well, with sufficient amounts of exaggeration, anyway.
20:04:50 <kallisti> fizzie: but yes analyzing goals is something to keep in mind.
20:04:51 <fizzie> Let's just say that most people would at least like it if their clusters were somehow meaningful.
20:05:02 <fizzie> Anyone doing visualization at least. :p
20:05:12 <kallisti> what do you mean by clusters.
20:05:17 <kallisti> I think I missed something.
20:05:21 <fizzie> Or, okay, anyone doing visualization that's not just doing it for aesthetical reasons.
20:05:29 <Vorpal> fizzie, well yes
20:06:19 <fizzie> kallisti: It was just an example for a statistical model; some of them divide (in a "soft" or "hard" way) all the samples into different clusters, and then use different models (or just sets of parameters) for each individual cluster.
20:07:55 <kallisti> fizzie: I'm not sure if I explained what the purpose is. The idea is to predict what delayed inputs will be to minimize the bad visual feedback of latency.
20:08:11 <fizzie> I'm pretty sure I didn't read that far back, just the single line that was red.
20:10:29 <kallisti> the ideal situation would be that if an input was sent at X time, it could processed as though it occured at X time on the receiving end, meanwhile the game makes predictions of what that input would have been.
20:10:32 <itidus21> pikhq: so is there any common name for this link throttling, router setting which would have it drop packets that would shove it beyond set limit?
20:11:11 <kallisti> I don't think perfect time sync will be easy or necessarily possible, but you can at least reduce the latency interval somewhat and still get reasonable results. Attempt to have perfect time sync would probably result in glitchy visual feedback.
20:11:23 <kallisti> *attempting
20:11:25 <fizzie> My based-on-no-information-at-all guess about most network games (which I've understood do actually do that stuff) is that they use very simple methods for it.
20:11:40 <kallisti> fizzie: yes I've been researching what is commonly used.
20:12:04 <kallisti> fizzie: one approach is called "dead reckoning" but I haven't really found an exact algorithm. it appears to vary widely.
20:12:27 <pikhq> itidus21: Probably something like "traffic shaping".
20:12:32 <itidus21> ahh
20:12:43 <pikhq> itidus21: You'll probably want to do the same with uplink, BTW.
20:13:10 <itidus21> my brother is in charge of all that stuff.. but i think he would be interested to hear this idea
20:13:52 <kallisti> fizzie: I think if you try to do perfect time sync you'll get unpleasant stutters in game continuity, but if you allow some latency you might be able to strike a balance between time synchronization and visual continuity.
20:14:56 <kallisti> (vague statement of what the solution should look like without actually going into any details of how to implement it)
20:15:44 <itidus21> i look forward to telling my brother about this..
20:15:50 <kallisti> ((parenthetical aside noting the purpose of the previous statement))
20:15:57 <itidus21> he would go to any lengths to get better latency
20:16:39 <kallisti> itidus21: what idea? I'm sure someone has attempted some kind of sophisticated time sync algorithm before...
20:16:55 <itidus21> no i mean pikhq's link throttling idea
20:18:09 <kallisti> also you don't "get better latency" you're just making it slightly more fair. so that the time you activated an input actually matters, not when it was received. At the same time you're also trying to maintain visual continuity so that the game is visually consistent.
20:18:13 <kallisti> oh
20:18:15 <kallisti> ....nevermind
20:18:18 <kallisti> :)
20:18:46 <fizzie> I believe this new pipe I have is slightly worse in terms of latency than the old one. It's something like 12-15 ms to Finnish places; the old one used to do sub-10, unless I misremember. (DSL sure is one "delay-full subscriber line", anyway.)
20:19:06 <itidus21> i will go into your topic some time when this hardware one has left my brain
20:20:33 <itidus21> im approaching that morning hours when i should be just waking up
20:21:10 <fizzie> Even the modem statistics say there's a 6+1 (down+up) millisecond inherent delay on that less-than-a-hundred-metres link alone. Phone cabling from (in this case) the 1980s is such a silly way to send bits.
20:21:55 <itidus21> kallisti: you don't understand.. my brother called out the isp technicians like a dozen times to get their help before changing isps.. he lives for fast connections
20:22:08 <itidus21> not like ultra fast
20:22:15 <kallisti> sounds like a...
20:22:16 <fizzie> Does he, by any chance, play any network games?
20:22:17 <kallisti> pointless existence.
20:22:29 <kallisti> I bet he does.
20:22:39 <fizzie> It's just that most "ping hunters" I know are in "the business" mostly for that reason.
20:22:45 <itidus21> WoW, LoL, HL2, SC2, BF2 uhmm
20:22:50 <kallisti> so... yes.
20:22:51 <itidus21> i could go on
20:22:56 <itidus21> =))
20:23:08 <itidus21> oops wait why did i list hl2
20:23:20 <itidus21> i meant LFD2
20:23:32 * kallisti would be interested to see statistics on how closely latency and game success are correlated on various online games.
20:24:08 <kallisti> I bet in Battlefield 3 it would be more noticeable than in, say, SC2.
20:24:13 <itidus21> sc1, quake, quakewars, eve
20:24:24 <fizzie> "An experimental estimation of latency sensitivity in multiplayer Quake 3 -- [PDF] from psu.eduG Armitage - Networks, 2003. ICON2003. The 11th IEEE …, 2003 - ieeexplore.ieee.org"
20:24:37 <kallisti> where latency and fast reflexes are still important but long-term effects of strategy and economy is much more important.
20:24:42 <kallisti> *are
20:26:31 <itidus21> so he is responsible for my connection.. so im happy with it
20:27:38 <fizzie> "How sensitive are online gamers to network quality?", Kuan-Ta Chen, Polly Huang, Chin-Laung Lei, Communications of the ACM, Vol. 49, No. 11, pages 34--38, lists 8 studies that have "sought to evaluate the effect of network quality on online gamers".
20:28:34 <fizzie> Both subjective ("oh god my ping was so high that last game") and objective (how many dudes they killed) measurements, apparently.
20:28:50 <fizzie> Oh, now it's talking about marijuana.
20:28:52 <itidus21> "Vint Cerf recommended that I start immediately blogging about bufferbloat a year or so ago, given the severity of the problem to avoid the usual publication"
20:29:01 <kallisti> fizzie: lol
20:29:12 <kallisti> fizzie: good study.
20:29:30 <fizzie> kallisti: "Psychologically, the pleasing sensation players experience in online games is analogous to being in the flow state after taking a mood-changing substance like marijuana." It's like they've just put this thing in, it's not like it's anyway connected to what's before or after it.
20:30:09 <kallisti> haha
20:30:17 <fizzie> They don't even cite anyone.
20:30:25 <fizzie> Bunch of potheads, is my guess.
20:30:27 <kallisti> yep.
20:30:40 <kallisti> metaphor-making pothead bastards.
20:32:36 <lifthrasiir> http://hg.mearie.org/esotope/esotope/rev/baa33b474417 i've just got it working after 2 1/2 months of hiatus.
20:33:07 <fizzie> Anyhow, they have some statistics about how long people keep playing some mumorpuger I've never heard of ("Shen Zhou Online") depending on network quality; on average sessions last 4 hours when latency is <175 ms, and less than one hour when it's >225 ms. But they don't have any "how well they do" statistics in-between games. I'm sure someone's collected those too, though.
20:34:59 * kallisti would be more interested in data on Starcraft 2 since it's actually played professionally.
20:35:11 <kallisti> presumably at tournaments they have awesome network latency though.
20:35:43 <fizzie> There's separate studies on Quake 3, UT2003, "Madden NFL Football" and "networked racing games", but based on titles I can't guesstimate if any of these cited studies have compared different (genres of) games for latency-sensitivity.
20:36:06 <itidus21> "Many mid-range or high end home routers have traffic shaping features. They may be called traffic shaping, or QOS (Quality of Service). Some routers Ive seen (Ive seen quite a few over the last years) have a single knob to set bandwidth on both directions; they arent particularly useful. You want one which lets you adjust bandwidth in both directions. Ive experimented with several
20:36:06 <itidus21> routers: your mileage will vary. Some commercial routers work really well, some less so. Sometimes these routers are marketed as gamer routers. "
20:39:18 <kallisti> itidus21: the important thing is: can you turn the knobs up to 11?
20:39:36 <itidus21> no, it goes around to 0
20:39:41 <fizzie> There's a QOS feature on this VDSL2 box, but as far as I can tell it's pretty useless. It can be used to set some precedence queues if you wanted to, say, give priority to interactive stuff over bulk downloads, and set the DSCP IP header fields of outgoing stuff, which I'm sure will do absolutely nothing.
20:46:03 -!- Jafet has quit (Read error: Connection reset by peer).
20:49:50 -!- Jafet has joined.
20:51:35 <kallisti> wait a second.
20:51:40 <kallisti> I'm seeing a pattern here.
20:51:50 <kallisti> everytime I ask myself "how would I write X in perl"
20:51:52 <kallisti> I should instead ask
20:52:01 <kallisti> "what CPAN module already does X for me?"
20:52:21 <kallisti> http://search.cpan.org/dist/Text-Levenshtein/Levenshtein.pm
20:52:24 <kallisti> well, that was easy.
20:54:19 <kallisti> print distance("foo","four");
20:54:19 <kallisti> # prints "2"
20:54:19 <kallisti> print fastdistance("foo","four");
20:54:20 <kallisti> # prints "2" faster
20:54:25 <kallisti> ...so what's the catch?
20:55:14 <itidus21> the catch is you would develop dependancy on cpan
20:55:21 <Sgeo> Clearly, older applications relied on the slowness of distance
20:55:28 <itidus21> which would eventually come back to haunt you
20:55:29 <Sgeo> Just like old games that required a turbo button to play
20:55:56 <Sgeo> "Is faster in most cases"
20:56:02 <Sgeo> I wonder what the worst-case stuff is like
20:56:13 <Sgeo> Which may be important when dealing with web-facing applications
20:56:13 <itidus21> the keyword of the problem turns out to be bufferbloat as pikhq said..
20:56:18 <kallisti> I think I actually want WagnerFischer so I can configure weights.
20:56:35 <itidus21> and the problem-mitigation is basically called QoS or traffic shaping
20:57:31 <kallisti> hmmm but Wagner Fischer makes insert/delete equivalent
20:57:37 <kallisti> I want delete to weigh more
20:59:14 <itidus21> is distance the number of steps to get from one string to the other?
20:59:36 <kallisti> yes.
20:59:52 <kallisti> with Wagner Fischer you can weigh different operations
20:59:56 <itidus21> i have been in here too long then
21:01:12 <kallisti> why's that?
21:01:51 <itidus21> MAX [insert D between A and X] [insert D between D and X] [insert O between D and X]
21:03:20 -!- Jafet has quit (Ping timeout: 255 seconds).
21:03:43 <itidus21> MAX [shift A to the left of M] [shift X to the left of A] [insert H to the left of X] [insert E between H and X] [insert H between X and A] :P
21:04:31 <itidus21> i know i am using fairly large operations
21:04:46 <kallisti> .....
21:05:24 -!- Jafet has joined.
21:05:45 <itidus21> and MAX [replace X with T] [insert H after T]
21:06:56 -!- oerjan has joined.
21:09:00 <fizzie> Levenshtein distance is the ur-example they always trot out when explaining the "dynamic programming" thing.
21:09:29 <Sgeo> hmm?
21:09:50 -!- Jafet has quit (Ping timeout: 252 seconds).
21:10:00 <fizzie> You can compute it with a dynamic programming thing; just table the Levenshtein distances between all prefixes.
21:11:30 <itidus21> distance("windows", name); .. not sure about syntax of name.. is a function call that can be used to create a hierarchy
21:12:51 <itidus21> could be a fun gimmicky website... compare the distance between lovers names
21:13:07 -!- elliott has joined.
21:13:48 <fizzie> elliott: So how's your budding relationship with that "lax" person going?
21:14:00 -!- Jafet has joined.
21:14:36 <itidus21> or.. it could be used for baby name generation!
21:14:41 <fizzie> elliott: Compared Levenshtein distances yet?
21:15:27 <itidus21> if you take the mothers name and the fathers name, and find the name closest to the middle operation
21:17:52 <itidus21> see.. im an applications guy
21:17:57 * oerjan hazards a calculation that the distance is 8
21:18:16 <itidus21> i can think up uses for things but not build them
21:18:28 <fizzie> oerjan: Oh no! Or, wait, is that a good score? I don't know at all.
21:19:45 <oerjan> oh hm wait
21:19:48 <fizzie> Also isn't it just 4 deletions and 2 substitutions?
21:19:53 -!- Jafet1 has joined.
21:20:32 <oerjan> i somehow considered only deletions and insertions
21:20:46 <oerjan> a hazardous calculation indeed
21:20:48 <elliott> 16:57:37: <kallisti> elliott: this Vector will, in all likelihood, remain at 0 to 2 elements.
21:20:48 <elliott> 16:57:44: <kallisti> I could just as easily use a linked list.
21:20:48 <elliott> 16:57:58: <kallisti> except that I think I would want random access? not sure.
21:20:52 <elliott> kallisti: n=2, you already have random access.
21:20:57 <elliott> The second element is one pointer dereference slower.
21:21:05 <elliott> fizzie: We're actually married.
21:21:18 -!- Jafet has quit (Ping timeout: 268 seconds).
21:21:28 <kallisti> elliott: true enough.
21:21:33 <kallisti> a linked list would be fine.
21:21:55 <elliott> kallisti: And consing is much faster for a linked list.
21:22:48 <elliott> Eek, who changed github?
21:22:50 <elliott> Was it fizzie?
21:23:13 <kallisti> honestly this is one of those structures where efficiency is absolutely pointless to worry about. so.. default to the one that's more commonly used?
21:23:36 <elliott> kallisti: Like I said, use Vector sparingly.
21:24:38 <fizzie> I did no such thing. *whistles*
21:24:48 <elliott> fizzie: :(
21:24:50 <elliott> fizzie: Put it back!
21:24:52 <Sgeo> What's wrong with Vector?
21:26:20 <fizzie> What's our vector, Victor?
21:26:21 <elliott> Sgeo: Slow updates, no sharing.
21:26:24 -!- Jafet1 has quit (Ping timeout: 240 seconds).
21:26:42 -!- Jafet has joined.
21:28:05 -!- iconmaster has joined.
21:28:22 <fizzie> Their blog isn't saying anything about any changes. It seems to be mostly about drinking.
21:28:57 <elliott> Such is life.
21:31:04 -!- Jafet has quit (Ping timeout: 240 seconds).
21:32:28 -!- Jafet has joined.
21:41:44 -!- Jafet has quit (Ping timeout: 240 seconds).
21:42:27 <oerjan> @msseg
21:42:27 <lambdabot> Not enough privileges
21:42:33 <oerjan> @moseg
21:42:33 <lambdabot> Maybe you meant: more msg
21:42:58 * oerjan wonders what that command kallisti kept correcting to is
21:43:07 <oerjan> @msg
21:43:08 <lambdabot> Not enough privileges
21:43:16 <oerjan> hm i guess that _is_ it
21:43:26 <oerjan> @list msg
21:43:27 <lambdabot> system provides: echo list listchans listmodules listservers uptime
21:43:29 <fizzie> @mossagas
21:43:30 <lambdabot> You don't have any new messages.
21:43:59 <oerjan> @mesag
21:43:59 <lambdabot> Not enough privileges
21:44:18 <oerjan> @messa
21:44:18 <lambdabot> Maybe you meant: messages messages? msg oeis vera
21:45:05 <oerjan> @admin
21:45:05 <lambdabot> Not enough privileges
21:45:09 <oerjan> @list admin
21:45:09 <lambdabot> system provides: echo list listchans listmodules listservers uptime
21:45:49 <oerjan> i wonder if they really are in system, or if it just defaults to that because of the privilege stuff
21:45:57 <PiRSquared17> @messages?
21:45:58 <lambdabot> Sorry, no messages today.
21:46:02 <oerjan> @list wefiubp
21:46:02 <lambdabot> No module "wefiubp" loaded
21:46:05 <PiRSquared17> Aww :(
21:46:17 <PiRSquared17> @message PiRSquared17_ Hello!
21:46:17 <lambdabot> Maybe you meant: messages messages?
21:46:30 <PiRSquared17> @tekk PiRSquared17_ Hello!
21:46:30 <lambdabot> Consider it noted.
21:46:39 -!- Jafet has joined.
21:46:40 <oerjan> PiRSquared17: don't be sad, just sit down and meditate on the mantra "finnmark"
21:46:43 <PiRSquared17_> tekk = mell?
21:46:43 <lambdabot> PiRSquared17_: You have 1 new message. '/msg lambdabot @messages' to read it.
21:46:52 <PiRSquared17_> @messages
21:46:52 <lambdabot> PiRSquared17 said 22s ago: Hello!
21:47:01 <PiRSquared17_> finnmark
21:47:14 <oerjan> PiRSquared17: tekk = tell, autocorrection
21:49:00 <PiRSquared17_> hmm
21:49:14 <PiRSquared17_> @yrkk PiRS|test foo
21:49:14 <lambdabot> Unknown command, try @list
21:49:20 <PiRSquared17_> @trkk PiRS|test foo
21:49:21 <lambdabot> Unknown command, try @list
21:49:25 <PiRSquared17_> @trlk PiRS|test foo
21:49:25 <lambdabot> Maybe you meant: tell url
21:49:42 <PiRSquared17_> How close is close enough?
21:49:45 <oerjan> 2
21:49:51 <fizzie> @frob f :: a -> b
21:49:52 <lambdabot> h . f = f . g
21:49:53 <PiRSquared17> Lev. distance?
21:49:57 <oerjan> but only if unambiguous
21:50:19 <PiRSquared17> ok
21:51:08 <oerjan> @fear f :: a -> a
21:51:08 <lambdabot> Maybe you meant: faq keal learn read
21:51:18 <oerjan> hm...
21:51:36 <oerjan> @fare f :: a -> a
21:51:36 <lambdabot> Maybe you meant: arr fact faq farber free more part yarr
21:51:53 <oerjan> @grue f :: a -> a
21:51:54 <lambdabot> Maybe you meant: free run
21:52:19 <fizzie> @yarr
21:52:20 <lambdabot> Get out o' me way, yeh landlubber
21:52:31 <fizzie> Oh, it's exactly what it sounds like.
21:52:52 <Sgeo> @free coerce :: a -> b
21:52:53 <lambdabot> g . coerce = coerce . f
21:53:52 <Sgeo> @free id
21:53:56 <lambdabot> f . id = id . f
21:54:22 <Sgeo> @free ($) :: (a -> b) -> a -> b
21:54:22 <lambdabot> Pattern match failure in do expression at Plugin/Free/FreeTheorem.hs:54:20-34
21:54:28 <Sgeo> @free apply :: (a -> b) -> a -> b
21:54:28 <lambdabot> g . h = k . f => g . apply h = apply k . f
21:55:59 -!- Jafet has quit (Ping timeout: 252 seconds).
22:00:18 <kallisti> @m
22:00:19 <lambdabot> Maybe you meant: map messages messages? more msg . ? @ v
22:00:30 <kallisti> mess
22:00:32 <kallisti> @mess
22:00:32 <lambdabot> Maybe you meant: messages messages? msg oeis
22:01:07 <PiRSquared17> @oeis 1,3,6,10
22:01:11 <lambdabot> Triangular numbers: a(n) = C(n+1,2) = n(n+1)/2 = 0+1+2+...+n.
22:01:11 <lambdabot> [0,1,3,6,10,15,21,28,36,45,55,66,78,91,105,120,136,153,171,190,210,231,253,2...
22:01:15 <PiRSquared17> yay
22:01:47 <fizzie> @oeis 1,2,3,4,5,6,7,8
22:01:53 <lambdabot> The natural numbers. Also called the whole numbers, the counting numbers or ...
22:01:53 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,...
22:01:58 <PiRSquared17> lol
22:01:58 <fizzie> The interestingest.
22:02:18 <Sgeo> @map
22:02:19 <lambdabot> http://www.haskell.org/hawiki/HaskellUserLocations
22:02:35 <PiRSquared17> The requested URL /hawiki/HaskellUserLocations was not found on this server.
22:02:43 -!- Jafet has joined.
22:03:04 <PiRSquared17> Should be http://www.haskell.org/haskellwiki/HaskellUserLocations ...
22:05:22 <fizzie> @oeis 3 7 4 8 1
22:05:27 <lambdabot> Sprague-Grundy values for Dawson's Chess (octal game .137).
22:05:28 <lambdabot> [0,1,1,2,0,3,1,1,0,3,3,2,2,4,0,5,2,2,3,3,0,1,1,3,0,2,1,1,0,4,5,2,7,4,0,1,1,2...
22:05:37 <fizzie> lambdabot: Actually that was just from /dev/random...
22:08:55 <elliott> PiRSquared17: /hawiki/ is where the old wiki was
22:09:19 <PiRSquared17> @oeis 1 5 5 5 3
22:09:26 -!- Ngevd has joined.
22:09:26 <lambdabot> Decimal expansion of zeta(3) = sum(m>=1, 1/m^3 ).
22:09:26 <lambdabot> [1,2,0,2,0,5,6,9,0,3,1,5,9,5,9,4,2,8,5,3,9,9,7,3,8,1,6,1,5,1,1,4,4,9,9,9,0,7...
22:09:32 <PiRSquared17> XD
22:09:33 <Ngevd> Hello
22:09:36 <PiRSquared17> hi
22:09:43 <Ngevd> I'm not my usual chirpy self today
22:09:48 <Ngevd> For I am a tad annoyed at myself
22:09:56 <Ngevd> At my ceaseless procrastination
22:10:08 <Ngevd> Also, I'm listening to Chopin.
22:11:20 <Ngevd> Chopin makes me sad
22:11:26 <oerjan> Ngevd: just put off the annoyance until later, duh
22:11:40 <Ngevd> I should listen to... probably anything other than Nocturne in E-flat minor
22:12:01 <Ngevd> Nocturne in B major, here I go!
22:12:01 <Ngevd> :)
22:12:06 <oerjan> fizzie: PiRSquared17: oeis doesn't require the numbers to be consecutive in the sequence unless you use commas
22:12:14 <fizzie> oerjan: Ohhhh.
22:12:22 <PiRSquared17> oh
22:12:40 <fizzie> oerjan: But does it require it to be a subsequence at least?
22:13:00 <Ngevd> @oeis 3 1 1
22:13:07 <oerjan> fizzie: i'm not sure, check the website :)
22:13:10 <Sgeo> @oeis 3,7,4,8,1
22:13:13 <lambdabot> Pascal's triangle read by rows: C(n,k) = binomial(n,k) = n!/(k!*(n-k)!), 0<=...
22:13:13 <lambdabot> [1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,1,5,10,10,5,1,1,6,15,20,15,6,1,1,7,21,35,35,2...
22:13:19 <lambdabot> Sprague-Grundy values for Dawson's Chess (octal game .137).
22:13:19 <lambdabot> [0,1,1,2,0,3,1,1,0,3,3,2,2,4,0,5,2,2,3,3,0,1,1,3,0,2,1,1,0,4,5,2,7,4,0,1,1,2...
22:13:29 <oerjan> it probably _prefers_ consecutive hits, though
22:13:40 <Ngevd> :t ord
22:13:41 <lambdabot> Char -> Int
22:13:45 <Ngevd> > map ord "Hexham"
22:13:46 <lambdabot> [72,101,120,104,97,109]
22:13:56 <PiRSquared17> >map chr [72,101,120,104,97,109]
22:14:01 <PiRSquared17> err
22:14:08 <Ngevd> @oeis 72,101,120,104,97,109
22:14:09 <lambdabot> Sequence not found.
22:14:09 <Sgeo> Err, space between > and map
22:14:14 <PiRSquared17> > map chr [72,101,120,104,97,109]
22:14:15 <lambdabot> "Hexham"
22:14:37 <Ngevd> @oeis 72,101,120
22:14:37 <lambdabot> Sequence not found.
22:14:40 <Ngevd> @oeis 72,101
22:14:41 <lambdabot> a(n) = a(n-1) + Sum_{0<k<=n/4} a(n-4k), with a(0)=1.
22:14:41 <lambdabot> [1,1,1,1,2,3,4,5,8,12,17,23,34,50,72,101,146,212,306,436,627,905,1305,1871,2...
22:14:42 <PiRSquared17> > map ord "PiRSq"
22:14:43 <lambdabot> [80,105,82,83,113]
22:14:51 <PiRSquared17> @oeis 80,105,82,83,113
22:14:52 <lambdabot> Sequence not found.
22:14:56 <PiRSquared17> o.O
22:14:56 <Ngevd> > map ord "Taneb!
22:14:57 <lambdabot> <no location info>:
22:14:57 <lambdabot> lexical error in string/character literal at end o...
22:14:58 <Ngevd> > map ord "Taneb"
22:14:59 <lambdabot> [84,97,110,101,98]
22:15:09 <Ngevd> @oeis 84,97,110,101,98
22:15:10 <lambdabot> Sequence not found.
22:15:17 <Ngevd> @oeis 84 97 110 101 98
22:15:18 <lambdabot> Sequence not found.
22:15:22 <Sgeo> @oeis 3,4,6,1,2,6
22:15:28 <lambdabot> Decimal expansion of the absolute value of the abscissa of the local minimum...
22:15:28 <lambdabot> [1,5,7,3,4,9,8,4,7,3,1,6,2,3,9,0,4,5,8,7,7,8,2,8,6,0,4,3,6,9,0,4,3,4,6,1,2,6...
22:15:36 <PiRSquared17> @oeis 56,56,56,56
22:15:37 <lambdabot> Quadruplicated tetrahedral numbers A000292
22:15:37 <lambdabot> [1,1,1,1,4,4,4,4,10,10,10,10,20,20,20,20,35,35,35,35,56,56,56,56,84,84,84,84...
22:15:40 <Ngevd> @oeis 1 2 4 8 16 33
22:15:41 <lambdabot> Generalized Catalan numbers: a(n+1)=a(n)+ Sum a(k)a(n-1-k), k=2..n-1.
22:15:41 <lambdabot> [1,1,1,1,2,4,8,16,33,69,146,312,673,1463,3202,7050,15605,34705,77511,173779,...
22:15:49 <Ngevd> @oeis 1 2 4 8 16 32 65
22:15:49 <PiRSquared17> Quadruplicated tetrahedral numbers XD
22:15:50 <lambdabot> Base 2 digits are, in order, the first n terms of the periodic sequence with...
22:15:50 <lambdabot> [1,2,4,8,16,32,65,130,260,520,1040,2080,4161,8322,16644,33288,66576,133152,2...
22:16:25 <Ngevd> Nocturne in B Major is making me angry
22:16:37 <Ngevd> >:(
22:16:57 <Ngevd> Let's try some Brahms
22:17:21 <Ngevd> Opens quite lugubriouslty
22:17:26 <Ngevd> s/ty/y/
22:17:54 <PiRSquared17> @pl flip (.)
22:17:55 <lambdabot> flip (.)
22:18:00 <PiRSquared17> @unpl flip (.)
22:18:00 <lambdabot> (\ b c f -> c (b f))
22:19:19 -!- Jafet has quit (Ping timeout: 240 seconds).
22:22:08 <Ngevd> Okay, this is making me simultaneously mournful and excited.
22:22:16 <Ngevd> Amazing how music can have such an affect
22:22:21 <Ngevd> Effect.
22:22:25 <Ngevd> One of the two..
22:23:36 <oerjan> possibly both
22:23:46 <PiRSquared17> kekeke
22:23:49 <oerjan> PiRSquared17: >>>
22:23:56 <PiRSquared17> <<<
22:24:04 <oerjan> :t (>>>)
22:24:04 <lambdabot> forall (cat :: * -> * -> *) a b c. (Control.Category.Category cat) => cat a b -> cat b c -> cat a c
22:24:16 <Ngevd> :t flip (.)
22:24:17 <lambdabot> forall a b (f :: * -> *). (Functor f) => f a -> (a -> b) -> f b
22:24:28 <PiRSquared17> :t (>>=)
22:24:29 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m a -> (a -> m b) -> m b
22:24:29 <oerjan> CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALE
22:24:44 <elliott> oerjan: huh?
22:24:45 <Ngevd> Wow
22:24:47 <elliott> that's the real type of (>>>)
22:24:48 <oerjan> :t (>>>) `asTypeOf` flip (.)
22:24:49 <lambdabot> forall a a1 b. (a -> a1) -> (a1 -> b) -> a -> b
22:24:52 <elliott> unless Ngevd means flip (.)
22:24:54 <elliott> er
22:24:56 <elliott> *unless you mean
22:24:59 <elliott> but (>>>) has that type standard
22:25:17 <Ngevd> Now I feel all optimistic, thinking we can arise from the ashes of a broken society to make a new world
22:25:23 <Ngevd> Wow
22:25:30 <elliott> we can't
22:25:32 <elliott> :))))))))
22:25:32 <PiRSquared17> Chopin?
22:25:35 <Ngevd> Brahms now
22:25:37 <elliott> oerjan: btw
22:25:38 <oerjan> elliott: i was merely pointing out that :t completely obscures their types being related
22:25:55 <elliott> challenge 1: write foo :: (Applicative g) => (forall f. (Functor f) => f a -> f b) -> g (a -> b)
22:25:59 <elliott> (this is trivial)
22:26:04 <elliott> challenge 2: write bar :: (Applicative g) => (forall f. (Applicative f) => f a -> f b) -> g (a -> b)
22:26:19 <elliott> laws of foo: foo f = pure g, where f = fmap g (by necessity)
22:26:37 <elliott> laws of bar: bar (fmap f) = pure f; bar (f <*>) = f
22:27:10 <Ngevd> Now for some Beethoven!
22:27:10 <elliott> bar (<*> f) = flip ($) <$> f
22:27:16 <elliott> dunno if there are any other laws, those are the obvious ones
22:27:24 <elliott> erm
22:27:27 <elliott> yeah
22:27:32 <elliott> wait no
22:27:36 <Ngevd> I am of course referring to the films about the dog
22:27:38 <elliott> ok dunno what bar (<*> f) should be
22:27:48 <elliott> but w/e :p
22:28:07 <elliott> oerjan: foo f = pure (runIdentity . f . Identity) is the obvious one
22:28:12 <elliott> bar I don't know how to implement
22:28:41 <PiRSquared17> are unicode characters allowed in the channel?
22:29:05 <elliott> no, banned, totally banned (yes)
22:29:20 <Ngevd> Yes, on the server, on the client, depends on the client
22:29:27 <oerjan> elliott: erm, why won't the same implementation work for bar, Identity is a Monad
22:30:04 <elliott> oerjan: will it follow the laws?
22:30:27 <elliott> brb
22:35:28 <elliott> back
22:36:47 <oerjan> fmap f = (pure f <*>), of course, so those are the same
22:38:45 <oerjan> i have a hunch that any (f <*>) which has the right quantified signature must be of the form (pure g <*>)
22:39:02 <elliott> oerjan: what about \x -> (pure f <*> x) <*>x ?
22:39:06 <elliott> *<*> x?
22:39:14 <oerjan> hm...
22:40:04 <oerjan> elliott: but that's not of the form (f <*>)
22:40:30 <elliott> oerjan: indeed not
22:40:31 <elliott> hmm...
22:40:37 <elliott> :t \x -> f <$> x <*> x
22:40:38 <lambdabot> forall a b (f :: * -> *). (Show a, SimpleReflect.FromExpr b, Applicative f) => f a -> f b
22:40:40 <elliott> >_<
22:40:46 <elliott> :t \x -> (?f) <$> x <*> x
22:40:47 <Ngevd> brb
22:40:47 <lambdabot> forall a b (f :: * -> *). (?f::a -> a -> b, Applicative f) => f a -> f b
22:41:08 <elliott> oerjan: ok well bar (\x -> f <$> x <*> x) should be pure (join f), obviously
22:41:17 <elliott> does that work with the Identity implementation? i guess so...
22:42:16 <oerjan> i think so too
22:44:53 <elliott> oerjan: well that was almost interesting :(
22:45:10 <oerjan> heh
22:46:07 <oerjan> any expression that is to be of all Applicative types must be composed of pure and <*>, i should think
22:46:54 <kallisti> @test
22:46:54 <lambdabot> Maybe you meant: let list tell
22:48:32 <oerjan> <Phantom_Hoover> Except thulium.
22:48:53 <oerjan> "Despite its high price and rarity, thulium is used as the radiation source in portable X-ray devices and in solid-state lasers."
22:49:20 -!- zzo38 has joined.
22:49:40 <Ngevd> Back
22:50:13 <Ngevd> And now Debussy is making me feel alone
22:50:24 <elliott> oerjan: IS NOTHING SACRED
22:51:54 <oerjan> elliott: yes, nothing is very sacred in some indian religions. hth.
22:52:44 <elliott> :(
22:52:51 <elliott> IS ALL THAT GLITTERS NOT GOLD
22:53:12 <elliott> http://esoteric.voxelperfect.net/wiki/Main_Page
22:53:13 <elliott> sigh
22:53:17 <elliott> oerjan: you revert it im too lazy
22:53:42 <elliott> (diff) (hist) . . Language list‎; 11:31 . . (+78) . . 149.255.39.18 (Talk) (Just look at the difference just 20-30 rock solid Tea Party conservatives have made in the House already. They've turned "1/3 of the government" on its head and started a war between the establishment)
22:53:42 <elliott> not this again :(
22:57:16 <kallisti> @test
22:57:16 <lambdabot> Maybe you meant: let list tell
22:58:24 <oerjan> elliott: i can't, this stupid Taneb guy got to it first
22:58:42 <Ngevd> Bloody Taneb
22:58:57 <elliott> fuck taneb, worst person ever
22:59:04 * elliott founds taneb sucks club
22:59:20 <Ngevd> Can I join?
22:59:21 <oerjan> elliott: also, no, gold is a counterexample to that theory.
23:01:05 <Phantom_Hoover> OK I have thought some more about continuous chess and it is the best thing
23:02:46 <Phantom_Hoover> Basically, the board is a continuous square, and each area corresponding to an initial piece is instead full of continuous piece.
23:04:10 <elliott> Phantom_Hoover++
23:04:17 <elliott> How does play work?
23:04:39 <elliott> Unless it involves derivatives or integration, I'm not interested.
23:04:44 <zzo38> I saw some other message somewhere about chess with continuous boards, and I have thought of similar ideas too
23:04:45 <Phantom_Hoover> To perform a move, you take some measurable subset of one batch of piece and move them such that the measure of the piece remains the same (this is inelegant but, I think, necessary) and \int ddp is equal to a valid move vector.
23:05:00 <Phantom_Hoover> elliott, well of course.
23:05:34 <elliott> Phantom_Hoover: How do horsies move.
23:05:37 <Phantom_Hoover> Capture consists of moving some quantity of piece over some of your opponent's piece, which erases the target piece.
23:05:42 <Phantom_Hoover> elliott, same way as everything else.
23:06:00 <Phantom_Hoover> You just need to make the integral equal to a knight's move.
23:06:12 <elliott> Ah.
23:06:32 <elliott> Phantom_Hoover: Not restricted to the naturals, though, right?
23:06:42 <itidus21> i want to take credit here for bringing the terms continuous and chess together today and also to promote phatom hoover's birthday
23:06:47 <itidus21> hehe
23:06:57 <Phantom_Hoover> Well, the move vectors are the standard chess ones.
23:07:02 <itidus21> woo hoo right on.. real brittania
23:07:08 <elliott> Phantom_Hoover: Hmm, right, yeah, didn't think.
23:07:13 -!- monqy has joined.
23:07:17 <Phantom_Hoover> But you can move half a knight two knight's moves, for instance.
23:07:20 <elliott> Phantom_Hoover: OK so let's play a game.
23:07:27 <elliott> Er, probably on a small board, or this is going to be completely confusing.
23:07:36 <elliott> I guess that just equates to "bigger pieces in non-standard configuration".
23:07:57 <Phantom_Hoover> Erm, there'll have to be some restriction placed on valid displacement vectors.
23:08:07 <itidus21> this is a pic i came up with earlier today depicting a continuous chess http://oi44.tinypic.com/2sbtmvb.jpg
23:08:28 <elliott> Phantom_Hoover: Lame???
23:08:32 <Phantom_Hoover> Otherwise you can just hop your queen out basically anywhere.
23:08:33 <monqy> explosion chess
23:08:47 <elliott> Phantom_Hoover: OK what limit.
23:08:49 <Phantom_Hoover> elliott, just that you can't move piece through piece.
23:08:55 <elliott> OK good.
23:09:03 <Ngevd> Except for the knight
23:09:05 <elliott> What discrete board/configuration are we using.
23:09:10 <Ngevd> I presume
23:09:17 <Phantom_Hoover> itidus21, see, graphical display is basically impossible here.
23:09:35 <elliott> You just need a real display.
23:09:37 <zzo38> itidus21: Those kind of idea have been done by a few other people too.
23:09:41 <elliott> BADUM TISHHSHSHSH
23:10:01 <Phantom_Hoover> There's nothing stopping you from mushing pieces out into a fractal, for instance, at least beyond the measurability constraint.
23:10:41 <itidus21> zzo38: well, i started to think about how my own particular idea as contrasted to phantom hoovers take on this term, as resembling the game of racetrack
23:10:47 <elliott> Phantom_Hoover: Can't we just remove the measurability constarint.
23:10:50 <elliott> constraint.
23:11:21 <elliott> Phantom_Hoover: So wait, how do you capture.
23:11:25 <elliott> Oh, you said that.
23:12:01 <elliott> Phantom_Hoover: I think you can make board configurations whose mate-yness is an unsolved problem.
23:12:10 <elliott> Er.
23:12:11 <elliott> Check-yness.
23:12:19 <Phantom_Hoover> Undoubtedly.
23:12:31 <Phantom_Hoover> Simply calculating if a move is legal is nigh impossible.
23:13:22 <itidus21> my idea was that each move should be a straight line which can have gaps in it if necessary
23:13:35 <elliott> Phantom_Hoover: I NOTE YOU STILL HAVE NOT PRESENTED AN INITIAL BOARD
23:13:42 <Phantom_Hoover> elliott, didn't I say?
23:13:57 <elliott> Phantom_Hoover: I mean, a smaller one.
23:14:09 <Phantom_Hoover> 3x3, king at each corner.
23:14:11 <kallisti> hmmm playing around with weights on the Wagner-Fischer algorithm can have unexpected results.
23:14:14 <Phantom_Hoover> im reference
23:14:17 <elliott> Oh. You didn't, no.
23:14:19 <elliott> Phantom_Hoover: OK you go first.
23:14:53 <kallisti> hmmm I don't know, perfect play sounds impossible.
23:15:17 <Ngevd> kallisti, from what I understand there are an infinite number of possible moves
23:15:20 <elliott> Phantom_Hoover: Also, *refrance
23:16:31 <itidus21> video games have the luxury of finite vector representations
23:16:50 <elliott> Phantom_Hoover: GO ON
23:16:53 <itidus21> mostly anyway :-?
23:17:07 <itidus21> but math guys don't
23:17:15 <monqy> poor math guys :(
23:17:25 <Phantom_Hoover> elliott, assuming the playspace is [0,3]^2 and our king is at [0,1]^2 and [2,3]^2 for me and you respectively, I move [0.5,1]×[0,1] to [2.5,3]×[0,1].
23:17:42 <Phantom_Hoover> Proof of legality is left as an exercise to the adjudicator.
23:18:11 <Phantom_Hoover> (I appoint itidus21 as adjudicator because I am a terrible person.)
23:18:14 <itidus21> dear god, what have i done
23:18:20 <elliott> Dear god, what has Phantom_Hoover done.
23:18:24 <monqy> dear god
23:18:28 <elliott> Phantom_Hoover: OK, I will have my move after approx. 3 hours of Wikipedia.
23:18:39 <itidus21> `pastelogs continuous
23:18:43 <Phantom_Hoover> elliott, aww c'mon, at least make a capture.
23:18:51 <Phantom_Hoover> Erm, *make capture
23:18:54 <elliott> Phantom_Hoover: By "one batch of piece", do you just mean a continuous blob of the same piece-type?
23:19:02 <Phantom_Hoover> elliott, same initial piece.
23:19:07 <elliott> Phantom_Hoover: That's really inelegant?
23:19:09 <elliott> Hidden state.
23:19:12 <HackEgo> No output.
23:19:28 <itidus21> `pastelog continuous
23:19:31 <Phantom_Hoover> Not really, you just have pawn1, pawn2, pawn3.... as separate pieces.
23:19:53 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.2287
23:19:55 <Phantom_Hoover> Or you could not have that, it just seemed a bit wrong to me?
23:20:17 <itidus21> humm..
23:20:24 <elliott> Phantom_Hoover: I think you should be able to treat your line of pawns as one big pawn?
23:20:31 <elliott> Phantom_Hoover: Anyway OK um.
23:20:34 <itidus21> i know, i should just look at the logs for today
23:20:35 <Phantom_Hoover> That looks like a plural.
23:20:48 <elliott> Phantom_Hoover: Well, your row of pawn.
23:20:54 <elliott> Phantom_Hoover: OK um...
23:21:01 <Ngevd> God I'm too tired to spell selep
23:21:05 -!- Ngevd has quit (Quit: goodnight).
23:21:29 <Phantom_Hoover> I was about to grumble about vectors but then I realised my definitions work fine with that.
23:21:29 <elliott> Phantom_Hoover: Wait, er, you moved two spaces?
23:21:39 <Phantom_Hoover> elliott, yes, but I only moved half my king.
23:21:49 <elliott> Oh, right.
23:21:57 <elliott> Phantom_Hoover: [2+pi,3-chaitin's omega] to... err...
23:22:18 <elliott> Wait, no.
23:22:22 <elliott> [pi,3-chaitin's omega]
23:22:32 <Phantom_Hoover> pi-1, surely?
23:22:37 <elliott> Er, yes.
23:22:42 <elliott> [pi-1, 3-chaitin's omega] to.........
23:22:47 <Phantom_Hoover> And you need to take its product with something.
23:22:50 <elliott> Oh, right.
23:22:52 <elliott> THIS IS HARD.
23:22:56 <Phantom_Hoover> And *which* Chaitin's omega?
23:23:07 <fizzie> "pi-1", aka the "two-pi".
23:23:18 <elliott> two-pi = tau
23:23:19 <Phantom_Hoover> AKA tau, qed.
23:23:20 <fizzie> (Since it starts with a 2.)
23:23:21 <elliott> yes
23:23:43 <elliott> Phantom_Hoover: Which Chaitin's omega... I really want to say "the Chaitin's omega for the maximally-compressing language'.
23:23:45 <elliott> *".
23:23:50 <elliott> I somewhat doubt that's a thing, though, even theoretically.
23:23:52 <fizzie> I didn't know it had to be a contiguous subset you move, anyway.
23:23:58 <elliott> OK, Chaitin's omega for binary lambda calculus per Tromp.
23:23:58 <Phantom_Hoover> It didn't.
23:24:01 <Phantom_Hoover> Just measurable.
23:24:13 <elliott> [pi-1, 3-chaitin's omega]*[2,3] to [help Phantom_Hoover help
23:24:29 <itidus21> <Phantom_Hoover> * Vorpal imagines chess with HP and headshots. [...] <itidus21> ok, what about chess on a finite euclidean plane <kallisti> itidus21: what are the pieces? points? <kallisti> what are "turns" in a continuous space. <itidus21> the pieces could be circles :D [...]
23:24:29 <fizzie> Also remove the measurability thing, I want to see elliott go all Banach-Tarski on you.
23:24:38 <elliott> fizzie: I was considering suggesting that.
23:24:42 <elliott> But I think it might be "cheating".
23:24:48 <elliott> Also it would take countably infinite moves?
23:24:52 <Phantom_Hoover> fizzie, honestly, I considered that.
23:25:03 <elliott> Maybe that means it's a non-issue.
23:25:04 <Phantom_Hoover> Have fun proving the legality of that.
23:25:20 <Phantom_Hoover> oerjan, oi, are integrals even well-defined under those circumstances?
23:25:33 <elliott> Phantom_Hoover: Can you help me figure out a destination please im bad at arithmetic
23:25:48 <Phantom_Hoover> I'm not a very good Turing oracle.
23:26:10 <elliott> Phantom_Hoover: Er, I don't think you need to be?
23:26:13 <PiRSquared17_> > tau/pi
23:26:14 <lambdabot> Not in scope: `tau'
23:26:21 <elliott> Phantom_Hoover: To help me figure out a simple valid destination.
23:26:23 <PiRSquared17_> @let tau pi
23:26:23 <lambdabot> TemplateHaskell is not enabled
23:26:32 <elliott> Phantom_Hoover: I mean, we know chaitin is 0.0something.
23:26:37 <itidus21> <Phantom_Hoover> "WHITE LAUNCH DETECTED" [...] <Phantom_Hoover> "E5 HIT, 1 DEAD"
23:26:38 <elliott> And there's a 1 fairly early on.
23:26:40 <elliott> In binary.
23:26:46 <fizzie> Though did you need three dimensions for at least the "standard" bit of reassembling a ball into two balls?
23:26:53 <itidus21> "<Phantom_Hoover> Climbing up the ruins of the black queen?"
23:26:54 <elliott> fizzie: I think so.
23:27:05 <Phantom_Hoover> fizzie, yes.
23:27:27 <elliott> fizzie: help me figure out a destination Phantom_Hoover is mean ;_;
23:27:35 <Phantom_Hoover> Ultimately it's because 2D rotation is abelian and 3D isn't.
23:27:47 <fizzie> I don't want to have any part in your "game", sorry.
23:27:56 <itidus21> elliott: someone also had the great idea of using gravity in continuous chess
23:28:14 -!- PiRSquared17 has quit (Quit: Bye! :)).
23:28:14 -!- PiRSquared17_ has quit (Quit: Bye! :)).
23:28:18 <Phantom_Hoover> fizzie, are you talking smack about my game
23:28:26 <elliott> Phantom_Hoover: Come up with a destination for me or I'll join him.
23:28:29 <itidus21> "<Vorpal> itidus21, what about adding gravitation causing bent paths?"
23:28:38 <Phantom_Hoover> ;_;
23:28:42 <fizzie> Anyway, it sounds nontrivial since you need to have the distance match. Well, unless of course you just move the rest of the piece too.
23:29:03 <elliott> But Phantom_Hoover's move was so simple!
23:29:20 <itidus21> hmm
23:29:28 <Phantom_Hoover> Hmm, I think moves need to ultimately consist of contiguous blocks of piece.
23:29:40 <Phantom_Hoover> Because otherwise the movement integral isn't well-defined.
23:29:53 <Phantom_Hoover> I might be more sure if oerjan would wake up, the lazy bastard.
23:30:16 <elliott> Phantom_Hoover: COMEUP WITH A DSETINATION OR IL RIP YOUR SOUL
23:31:25 <elliott> Phantom_Hoover: (Is it actually possible to come up with a destination can't you just apply ARITHMETIC>?0000)
23:31:26 <Phantom_Hoover> Like, move all your pieces into a bar along the centre?
23:31:54 <Phantom_Hoover> s/pieces/piece/
23:32:07 <elliott> Phantom_Hoover: Yes sure.
23:32:22 <elliott> Phantom_Hoover: As long as there's some Chaitin on the board at the end of it.
23:32:23 <Phantom_Hoover> You'll clip my piece at [2.5,3]×[0,1], at least.
23:32:41 <Phantom_Hoover> Jesus christ, working out whether you're in check is nearly impossible.
23:32:50 <elliott> :D
23:33:01 <Phantom_Hoover> Assuming it means your opponent can capture all your piece in one move.
23:33:05 <Phantom_Hoover> s/piece/king/
23:33:12 <elliott> I think you have to existentially quantify over at least the reals.
23:33:40 -!- MDude has quit (Ping timeout: 252 seconds).
23:34:28 <Phantom_Hoover> Well, um, you definitely wouldn't be in check after that move, because I wouldn't be able to capture 1 king with 1-whatever king.
23:35:14 <elliott> Excellent.
23:35:17 <fizzie> Also does this thing work so that you can move the back half of a full pawn backwards and left one unit, and the front half forward three units and one right?
23:35:38 <elliott> Phantom_Hoover: I'm not sure if you've noticed, but this game is impossible to play.
23:35:39 -!- azaq23 has quit (Quit: Leaving.).
23:35:52 <fizzie> Or was it just "move one blob" sort of thing?
23:36:05 <itidus21> continuous tarpit
23:36:07 -!- Klisz has joined.
23:36:14 <kallisti> !perl %x=(1,2); print scalar %x
23:36:16 <EgoBot> 1/8
23:36:16 <Phantom_Hoover> fizzie, yes.
23:36:23 <elliott> Phantom_Hoover: Wait, really?
23:36:24 <kallisti> lolwat
23:36:27 <elliott> That wasn't clear frmo your description.
23:36:48 <kallisti> >_>
23:36:58 <Phantom_Hoover> You can use piece for propulsion.
23:37:03 <elliott> *from
23:37:06 <elliott> Phantom_Hoover: You're just making shit up now.
23:37:06 <kallisti> !perl %x=(1,2); print %x == 2
23:37:07 <EgoBot> No output.
23:37:09 <kallisti> !perl %x=(1,2); print %x == 1
23:37:09 <EgoBot> 1
23:37:27 <zzo38> I also know of some chess variant where the piece on a square can be fractional (including even more than one, or less than one, but not less than zero). Pieces of the same kind and color can be combined and split as fractions; moving fractions uses up that much fraction of a move, and you can capture an opponent's fraction by your piece the same or greater fraction.
23:37:29 <Phantom_Hoover> elliott, no, it's a consequence of the legality integral.
23:37:48 <kallisti> !perl %x=(1,2,3,4); print %x == 2
23:37:48 <EgoBot> 1
23:38:08 <elliott> Phantom_Hoover: Ah.
23:38:29 <elliott> Phantom_Hoover: This must be what the Brockian Ultra-Cricket players have for an intellectual game.
23:38:33 <elliott> (Who were they? Cue fizzie.)
23:38:33 <Phantom_Hoover> If you move 0.5 pawn 1 backwards and 0.5 pawn 2.5 forwards it's still a legal move.
23:39:03 -!- DCliche has quit (Ping timeout: 255 seconds).
23:39:04 <oerjan> <Phantom_Hoover> oerjan, oi, are integrals even well-defined under those circumstances? <-- probably not. although if the board is 2d, banach-tarski doesn't apply; there _is_ a finitely additive measure on all sets invariant under 2d moves.
23:39:07 <elliott> I guess continuous chess Ultra-Cricket is their equivalent of chess boxing.
23:39:37 <Phantom_Hoover> oerjan, you've read the rules, I take it?
23:39:51 <fizzie> Phantom_Hoover: So 0.5*2.5 - 0.5*1 = 1 nowadays?
23:40:00 <elliott> Phantom_Hoover: I like how almost all moves cannot even be named.
23:40:07 <Phantom_Hoover> s/2.5/3/
23:40:18 <elliott> Phantom_Hoover: And therefore an AI that doesn't have to present its move is infinitely advantaged over a human.
23:40:24 <elliott> (Assuming we had real computers.)
23:40:33 <Phantom_Hoover> elliott, I like how I still have no idea what's a move and what isn't.
23:40:48 <elliott> Phantom_Hoover: It gets easier if you drop the measurable criterion?
23:40:55 <Phantom_Hoover> It... does?
23:41:03 <Phantom_Hoover> But how does the integral fit in?
23:41:06 <pikhq> My head hurts now; thanks guys.
23:41:10 <kallisti> !perl print 3 > 1
23:41:10 <EgoBot> 1
23:41:11 <oerjan> <Phantom_Hoover> Ultimately it's because 2D rotation is abelian and 3D isn't. <-- the technical term is "amenable", it applies to all commutative groups but also some non-commutative ones.
23:41:26 <itidus21> hooray for 2 dimensions...
23:41:36 <elliott> Phantom_Hoover: Well, it... gives you one less thing to check.
23:41:44 <Phantom_Hoover> I mean, if it's not defined, nor is any condition I can think of for move legality.
23:41:54 <Phantom_Hoover> oerjan, OK, what are the conditions of being able to do that integral?
23:42:22 <elliott> Phantom_Hoover: I hate to point this out, but you haven't quite made it continuous.
23:42:27 <elliott> Phantom_Hoover: Time is still discrete.
23:42:40 <elliott> <Phantom_Hoover> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
23:42:41 <Phantom_Hoover> Oh, right you are.
23:42:54 <Phantom_Hoover> Um...
23:43:12 <elliott> Phantom_Hoover: (You might have trouble with the concept of "turn".)
23:43:14 <Phantom_Hoover> The legality condition is the only thing that needs changing for continuous time, really.
23:43:14 <itidus21> i had this idea from the racetrack game that only one object should be able to move at a time
23:43:35 <Phantom_Hoover> ...and the semantics of a capture.
23:43:44 <elliott> Phantom_Hoover: I suppose you could just end turns when a move's worth of movement happens, and disallow "non-terminating" moves.
23:44:24 <monqy> what's a movesworth
23:44:39 <elliott> monqy: One vector of movement per the blah blah
23:44:53 <Phantom_Hoover> monqy, i dont know fwargleblagka;gaowirg
23:44:56 <oerjan> <Phantom_Hoover> oerjan, you've read the rules, I take it? <-- i'm not even going to try.
23:45:03 * Phantom_Hoover jumps off a cliff wearing his pants on his head
23:45:47 <fizzie> As I think they say in these situations, "gg".
23:45:58 <fizzie> (It's short for "good game".)
23:46:14 <elliott> oerjan: <Phantom_Hoover> To perform a move, you take some measurable subset of one batch of piece and move them such that the measure of the piece remains the same (this is inelegant but, I think, necessary) and \int ddp is equal to a valid move vector.
23:46:28 <elliott> Oh and
23:46:28 <elliott> <Phantom_Hoover> OK I have thought some more about continuous chess and it is the best thing
23:46:28 <elliott> <Phantom_Hoover> Basically, the board is a continuous square, and each area corresponding to an initial piece is instead full of continuous piece.
23:46:32 <elliott> plus
23:46:32 <elliott> <Phantom_Hoover> Capture consists of moving some quantity of piece over some of your opponent's piece, which erases the target piece.
23:47:00 * Phantom_Hoover moves 0.5 Phantom_Hoover into the Atlantic, and captures fizzie's upper body with 0.5 Phantom_Hoover.
23:47:13 <fizzie> Glurk.
23:47:21 <elliott> `addquote * Phantom_Hoover moves 0.5 Phantom_Hoover into the Atlantic, and captures fizzie's upper body with 0.5 Phantom_Hoover. <fizzie> Glurk.
23:47:25 <HackEgo> 796) * Phantom_Hoover moves 0.5 Phantom_Hoover into the Atlantic, and captures fizzie's upper body with 0.5 Phantom_Hoover. <fizzie> Glurk.
23:47:43 <kallisti> huh, cool I didn't realize you could allocate the space of a hash table
23:47:49 <itidus21> ironically, real chess on a physical board is actually continuous except for the formalities of turns and board squares
23:47:56 <kallisti> keys(%hash) = 1024;
23:48:04 <kallisti> resizes the hash table.
23:48:44 <itidus21> that last rule probably wasn't wise
23:49:04 <itidus21> might be better to capture the whole piece by covering part of the piece
23:49:18 <itidus21> or else you are surely just torturing yourselves
23:49:21 <Phantom_Hoover> itidus21, are you kidding?
23:49:34 <itidus21> i don't know
23:49:36 <kallisti> (no)
23:49:43 <Phantom_Hoover> Capturing is really, really easy that way.
23:49:54 <Phantom_Hoover> Also it violates the spirit of continuous space and piece.
23:50:16 <itidus21> ok ok you're right
23:50:25 <itidus21> i support the rule
23:50:53 <Phantom_Hoover> Indeed, the minute you start the game you are in check.
23:51:10 <itidus21> cell from dragon ball z uses these rules
23:51:37 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
23:51:49 <oerjan> hm i think this integration is essentially about calculating (displacement of center of mass) * measure moved
23:51:50 <itidus21> you destroy all but 1 piece of his body and he can use banarch tarski type means to regrow himself back to full size
23:51:53 <Phantom_Hoover> (Knights are even cooler this way; you can use them as low-powered, tactical snipers.
23:51:59 -!- Patashu has joined.
23:52:12 <Phantom_Hoover> oerjan, oh, that's a lot nicer.
23:52:37 <elliott> UM EXCUSE ME I SAID I WASN'T INTERESTED IF INTEGRALS WEREN'T INVOLVED
23:52:39 <Phantom_Hoover> Hmm, except for the condition about not being able to move piece through other piece, which I added later.
23:52:39 <iconmaster> I have absolutely no idea how this continuous chess thing works but it sounds like the most awesome thing ever.
23:52:40 <oerjan> or wait, is that _divided_ by measure moved
23:52:58 <oerjan> er, no.
23:52:59 <Phantom_Hoover> iconmaster, I have no idea either, and I invented it.
23:53:13 <iconmaster> I mean, a game where a single move takes hours of mathmatical calculation? CLASSIC.
23:53:28 <Phantom_Hoover> oerjan, I think it's just the displacement of the centre of mass, actually.
23:53:45 <kallisti> iconmaster: njot if u ply wif c0mmurrtr
23:53:48 <Phantom_Hoover> Unless there's a counterexample that hasn't occurred to me.
23:54:17 <Phantom_Hoover> elliott, on the plus side, calculating the centre of mass probably needs calculus too!
23:54:23 <elliott> Phantom_Hoover: YAAAAAAAAY
23:54:29 <elliott> Phantom_Hoover: Have you figured out continuous time yet?
23:54:32 <elliott> iconmaster: Hours?
23:54:47 <elliott> iconmaster: Dude, it's easy to create a move whose legality is an unsolved mathematical problem.
23:54:58 <itidus21> wow
23:55:03 <elliott> Heck, you might even be able to make a move whose legality is independent of ZFC.
23:55:21 <iconmaster> I mean, for someone like ME to make a move would take,like, infinity+1 hours.
23:55:29 <elliott> AKA infinity hours.
23:55:33 <iconmaster> yep
23:55:42 -!- NihilistDandy has joined.
23:55:43 <kallisti> elliott: HA HA GET IT?
23:55:44 * Phantom_Hoover moves 0.25 Phantom_Hoover further into the Atlantic, and captures elliott's head with 0.25 Phantom_Hoover.
23:56:06 <Phantom_Hoover> This is the best superpower?
23:56:25 <itidus21> ok i thought up how it can get weirder
23:56:29 <kallisti> challenge: make the cantor set important. go
23:56:38 <oerjan> <Phantom_Hoover> oerjan, I think it's just the displacement of the centre of mass, actually. <-- hm oh right, if consider the _whole_ piece rather than just the part moved
23:56:40 <itidus21> if you extend the gameboard into the physical universe
23:56:59 <elliott> Phantom_Hoover: So, continuous time?
23:57:09 <kallisti> itidus21: so when you die in continuous chess you die in real life?
23:57:20 <elliott> itidus21: Reality doesn't have the necessary resolution for continuous chess.
23:57:30 <itidus21> elliott: ahh i see
23:57:30 <Phantom_Hoover> oerjan, OK, now for non-collision.
23:57:46 <iconmaster> Make the rules change based on the number of continunitous segments in play?
23:58:08 <elliott> iconmaster: NOT MATHEMATICALLY ELEGANT
23:58:10 <kallisti> what constitutes a "move" exactly?
23:58:20 <itidus21> kallisti: lol... hahah
23:58:22 <itidus21> hahahhaha
23:58:27 <Phantom_Hoover> A down-and dirty way would be to define it such that a move is illegal if the convex hull of the final piece contains any other piece.
23:58:38 <iconmaster> ok I have like no handle on what is going on I think I'll shut up
23:58:41 <oerjan> Phantom_Hoover: i guess you need a bijection from starting positions to ending positions, and none of the lines through corresponding pairs must collide with another piece.
23:58:49 <Phantom_Hoover> oerjan, that's better.
23:58:55 <itidus21> can it be proven that a valid move even exists?
23:59:08 <elliott> Phantom_Hoover: But knights?
23:59:10 <oerjan> ideally the bijection should be measure-preserving.
23:59:12 <elliott> itidus21: Yes.
23:59:14 <elliott> Phantom_Hoover made one.
23:59:28 <oerjan> (on subsets)
23:59:34 <elliott> Also, I continue to assert that measurability should not be a condition.
23:59:48 <Phantom_Hoover> Soooo... a move is a measure-preserving bijection which does not violate the intersection rule.
2012-01-07
00:01:41 <elliott> Phantom_Hoover: How many times do I have to point out CONTINUOUS TIME
00:02:04 <Phantom_Hoover> And for which C(f(P)) = C(P) + move.
00:02:08 <oerjan> <Phantom_Hoover> This is the best superpower? <-- uh oh, maybe it's not wise to sum opposing vectors, you could divide the piece in two and move them about as far as you want if things can cancel
00:03:14 <Phantom_Hoover> oerjan, failing to see the problem??
00:04:08 <kallisti> hmmm I think I made a command abbreviation / typo checker that works slightly better than lambdabots.
00:04:19 <elliott> Phantom_Hoover: Well it does mean you can move a bit too quickly...
00:04:24 <oerjan> Phantom_Hoover: like, a pawn on e4 could move half 2 steps backward and half 4 steps forward
00:04:49 <kallisti> it checks for commands that the input command is an abbreviation of, and then if there's only one of those, uses that, otherwise it checks the levenshtein distance and if there's only one below a threshhold of 3 then it uses that
00:04:56 <kallisti> otherwise it lists all of the matches.
00:05:16 <Phantom_Hoover> oerjan, of course; what of it?
00:05:21 <oerjan> Phantom_Hoover: O KAY
00:05:34 <Phantom_Hoover> You can take half a piece that way, sure.
00:05:47 <elliott> Phantom_Hoover: And then another, with one left movement and another acceleration.
00:05:51 <kallisti> this means that you can both abbreviate commands as well as have minor typos corrected for you
00:05:59 <itidus21> what i am hearing here tells me that if one was to develop this game in a serious manner then he could achieve mathematical fame
00:06:25 <itidus21> although there are of course other ways to go about that
00:06:32 <Phantom_Hoover> itidus21, TbH, by now, it's not too hard to understand.
00:06:55 <itidus21> hmm..
00:07:10 <itidus21> i like the dirty version
00:07:26 <itidus21> the impossible to play one
00:08:05 <elliott> It's still impossible to play.
00:08:07 <elliott> Phantom_Hoover: CONTINUOUS TIME
00:08:09 <Phantom_Hoover> That was mainly because I made a hash of the definition.
00:08:19 <kallisti> is there a possible to play version of this game?
00:08:22 <Phantom_Hoover> elliott, it's not elegantly generalisable, I think.
00:08:32 <Phantom_Hoover> kallisti, only one way to find out...
00:09:12 <kallisti> I'll let you use my amazing portal chess server infrastructure to implement your chess game, in a few years when I have the most active portal chess server on the web.
00:09:28 <elliott> Phantom_Hoover: :(
00:09:33 <elliott> kallisti: No.
00:09:44 <elliott> Well, it would be easy if you used the rationals or whatever.
00:09:46 <elliott> But also boring.
00:10:00 <Phantom_Hoover> That post-apocalyptic chess thing is pretty cool now, although it will never see the light of anything interesting.
00:10:29 <Phantom_Hoover> elliott, um, use Coq????
00:10:30 <kallisti> elliott: I think you took me seriously just slightly beyond the reasonable threshold.
00:11:13 <zzo38> I figure the token expansion of what I am doing, it is very much like a comonad except that there is only one type inside, rather than any type. So I made up =>>: and =>=: and <$: which can be used with it
00:11:17 <elliott> Phantom_Hoover: What thing?
00:11:22 <itidus21> it seems to be the type of game which there is no board..
00:11:38 <itidus21> and the board is constructed as necessary to help the player determine the game state
00:11:38 <Phantom_Hoover> http://codu.org/logs/log/_esoteric/2012-01-06#171155PhantomHoover
00:11:41 <Phantom_Hoover> Read on.
00:11:42 <zzo38> And yet before, I did not know any purpose of a comonad in the program. But now I do.
00:11:53 <Phantom_Hoover> Up to Vorpal's SCSI fetish.
00:12:59 <zzo38> (=>>:) :: ProgramState -> (ProgramState -> [Token]) -> ProgramState; (=>=:) :: (ProgramState -> [Token]) -> (ProgramState -> [Token]) -> (ProgramState -> [Token]); (<$:) :: [Token] -> ProgramState -> ProgramState;
00:13:38 <elliott> Phantom_Hoover: Maybe I'll just read the whole log?
00:16:00 <kallisti> @m
00:16:00 <lambdabot> Maybe you meant: map messages messages? more msg . ? @ v
00:16:14 -!- MDude has joined.
00:16:47 <itidus21> the chess topics started going berzerk once vorpal said: "* Vorpal imagines chess with HP and headshots"
00:17:45 <zzo38> There are some chess variants with hit-points, there are some with shooting capture (you stay where you are when capturing a piece), and some with different board geometry, etc
00:18:45 <elliott> 16:41:08: <kallisti> itidus21: I think the patent system exists because inventors feel entitled to the spoils of their inventions and this makes sense from an ethical perspective. Paradoxically, people claim that it encourages competition, despite it doing the exact opposite of that by definition.
00:18:58 <elliott> kallisti: the idea is that it encourages competition by encouraging people to innovate
00:19:03 <elliott> and discouraging copying
00:19:58 <kallisti> sure, but a state of perfect competition exists when you have multiple sellers selling the same thing at the same quality.
00:20:01 <kallisti> patents make this difficult.
00:21:28 <elliott> i nominate Phantom_Hoover to explain the idea of a bigger picture.
00:21:51 <kallisti> nope. you're not allowed to get people to explain your points for you.
00:21:55 <kallisti> unless I get someone too
00:21:58 <elliott> 17:09:02: <Phantom_Hoover> (All the school computers have Halo because.... I don't know.)
00:22:00 <kallisti> we can have a proxy debate
00:22:02 <elliott> Phantom_Hoover: So they can kick people out for it.
00:22:18 <zzo38> I dislike patents. I think is better not patented, and not patented you can still competition, innovation, unrestriction, etc.
00:25:38 <elliott> 17:20:44: <fizzie> Vorpal: Okay, here: http://e621.net/post/show/43346/4-3-blush-darkdoomer-iriver-overstretched-rule_34- -- note, it's a SCSI cable; you can tell from the logo.
00:25:43 <elliott> fizzie: That was impressively quick.
00:25:43 <kallisti> elliott: I suppose if there's always innovation then the patent system does not produce monopolies.
00:26:05 <kallisti> but it does restrict competition / create a barrier of entry
00:26:57 <elliott> 17:28:25: <fizzie> Huh, the 'coretemp' sensor on this Atom box is saying "Core 0: +23.0°C (crit = +90.0°C)" -- that sounds dubiously low, but I guess it's *possible*, since it's an Atom and mostly idle. (The box is making a worrisome noise, might be the PSU fan dying.)
00:26:57 <elliott> 17:28:38: <fizzie> +23 is pretty much room temperature, though.
00:26:57 <elliott> 17:28:40: <Vorpal> fizzie, I had an old sempron that idled at 28 C
00:26:57 <elliott> 17:28:50: <Vorpal> when it was like 17 C inside
00:27:04 <elliott> fizzie: My CPU idles BELOW ROOM TEMPERATURE.
00:27:06 <zzo38> kallisti: Yes I agree it does restrict competition and other thing too
00:27:06 <elliott> With AIR COOLING.
00:29:20 <kallisti> oh I misread lambdabots code. my bot and it do the exact same thing..
00:30:43 <elliott> Good to know yours will suck at typo-corrections then
00:31:06 <kallisti> I tried applying weights but... it's hard to determine how they interact with one another.
00:32:03 <kallisti> elliott: oh also it checks identification on bot admins which makes it immediately better.
00:32:32 <zzo38> f(0,0) = 0; f(x,0) = x^f(x-1,f(x-1,x^x)); f(x,y) = f(x,y-1)^f(x,y-1); Note that f(0,0) = 0 and f(1,0) = 1 and f(2,0) = 2 but f(3,0) is greater than googolplex.
00:34:06 <elliott> 17:32:52: <Vorpal> anyway is there any realtime chess I wonder
00:34:06 <elliott> yes
00:34:14 <elliott> i dont have a link though
00:34:26 <zzo38> Yes there is a lot of chess variants, there is some kind of realtime chess
00:34:35 <elliott> 17:35:15: <kallisti> Vorpal: FRP maintains a sample-independent abstraction that logically resembles continuity.
00:34:42 <elliott> kallisti: that doesn't mean computers are continuous
00:34:49 <kallisti> I would weigh levenshtein distance by distance on a QWERTY keyboard but that makes it non-keyboard-agnostic.
00:34:52 <elliott> frp is carefully restricted to not actually let you do anything non-discrete.
00:34:53 <kallisti> elliott: of course not.
00:35:05 <kallisti> s/would/could/
00:54:41 <oerjan> zzo38: let g(0,x) = x; g(n,x) = g(n-1,x)^g(n-1,x), then g is primitive recursive. And f(x,y) = g(y,f(x,0)); f(x,0) = x^g(g(x^x,f(x-1,0)), f(x-1,0)). so f is also primitive recursive.
00:56:44 <kallisti> hmm how difficult would it be to augment the wagner-fisher algorithm to include character swaps as an operation.
00:57:07 <Vorpal> kallisti, remember dvorak and so on
00:57:16 * oerjan thinks maybe he should have flipped g's arguments
00:57:24 <kallisti> for example: help vs. hlep instead of being 2 substitutions this could be 1 character swap
00:57:28 <kallisti> a very common case in typos
00:58:01 <Vorpal> night
00:58:11 <elliott> kallisti: http://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance
00:59:40 <kallisti> but... but
00:59:42 <kallisti> there's no...
00:59:45 <kallisti> there's no CPAN module
01:00:54 <oerjan> <elliott> kallisti: that doesn't mean computers are continuous <-- did you see mentioned recently that FRP is curry-howard isomorphic to constructive time logic?
01:01:02 <elliott> oerjan: yeah
01:01:09 <elliott> oerjan: linear temporal logic
01:01:11 <elliott> I think you mean
01:01:41 <oerjan> hm i think it was a slightly different mention
01:02:47 -!- Vorpal has quit (Ping timeout: 276 seconds).
01:03:07 <kallisti> http://search.cpan.org/~ugexe/Text-Levenshtein-Damerau-0.02/Levenshtein/Damerau/lib/Text/Levenshtein/Damerau.pm
01:03:10 <kallisti> oh hi
01:03:38 <oerjan> kallisti: is there a rule 34 variant for perl
01:03:51 <oerjan> if it exists, there's a cpan module for it.
01:03:54 <elliott> if there exists, there's a cpan module containing porn of it
01:03:55 <elliott> mine's better
01:04:00 <elliott> including "if there exists"
01:04:14 -!- iconmaster has quit (Quit: iconmaster is gone!).
01:04:17 <oerjan> O KSY
01:04:30 <elliott> o ksy
01:04:41 * oerjan found it iresponsible to correct typos under the circumstances
01:05:21 <elliott> iresponsible
01:05:29 <oerjan> very much so
01:05:51 <kallisti> the current version I'm using employs XS and so is fairly quick, but I suspect it doesn't matter very much.
01:06:02 <elliott> kallisti: It probably does.
01:06:09 <elliott> Edit distance is a huge pain to calculate :p
01:06:17 <elliott> What if someone does @[GIGANTIC COMMAND]?!?!?!
01:06:28 <kallisti> then they're a jerk.
01:06:38 <kallisti> @23jj3o4jioj4o34509i34509832049834oitjkgjohjgoihjrfoijsdvoihweeoihsdvfoijhweroijwroijweoirjweegoijweogijsdoifjaskldnwiurghoiwehfijajsfoiwrg
01:06:39 <lambdabot> Unknown command, try @list
01:09:24 <kallisti> hmmm for some reason it's not installing.
01:09:59 <kallisti> hmmm it has no makefile. perhaps that's the issue.
01:14:49 * kallisti installs manually.
01:17:50 <pikhq> One doesn't really need a makefile, anyways.
01:18:07 <pikhq> Let's say you've got a single-file C program foo.c. make foo
01:18:08 <pikhq> Bam.
01:18:48 <pikhq> (make, the build tool with domain-specific knowledge that somehow lacks important parts of the same!)
01:19:38 <zzo38> When I write a C program they are usually a single file. Often it is CWEB so it has its own preprocessor, but it can make a shell script that does the compile steps. Sometimes it is linked with something else so I put those things in shell script too, such as SDL or Glk or whatever else.
01:28:20 -!- madbright has joined.
01:30:30 -!- elliott has quit (Ping timeout: 252 seconds).
01:31:09 <zzo38> Can digraph categories have any monads or comonads other than identity monads?
01:37:40 * Phantom_Hoover → sleep
01:37:41 -!- Phantom_Hoover has quit (Quit: Leaving).
01:42:36 -!- nooga has joined.
02:06:58 -!- oerjan has quit (Quit: Good night).
02:17:43 -!- Jafet has joined.
02:50:03 -!- MDude has quit (Ping timeout: 252 seconds).
02:51:18 -!- MDude has joined.
02:52:22 <kallisti> > product []
02:52:23 <lambdabot> 1
02:52:39 <kallisti> @src product
02:52:39 <lambdabot> product = foldl (*) 1
03:05:22 <zzo38> Do you know about digraph categories?
03:10:40 <kallisti> nope
03:10:46 -!- nooga has quit (Ping timeout: 260 seconds).
03:11:55 <zzo38> Do you know digraph? It is, you have nodes and then edges connecting them from one to another (normal graph is directionless; digraph has directions). You can make a category of a digraph by the objects being the nodes and the morphisms being the walks between them
03:14:42 <kallisti> oh
03:14:44 <kallisti> directed graph
03:14:52 <zzo38> Yes
03:14:57 <kallisti> yes I know what that is. I wasn't familiar with that term.
03:15:02 <zzo38> It is also called "digraph" for short.
03:21:21 <tswett> Isn't the monad for categories one that's over the category of digraphs?
03:21:37 <tswett> The one thing is the free category generated by the digraph, and, uh...
03:22:04 -!- pikhq has quit (Ping timeout: 240 seconds).
03:22:19 -!- pikhq has joined.
03:22:22 <tswett> And I don't remember how monads work, categorically theoretically; I just remember that Catsters video.
03:26:59 <zzo38> I suppose, if there is one node that all edges go in one direction eventually reaching that node, with only one way, that is a final object, and that would be a monad too I suppose (it is called Proxy in Haskell, in the "tagged" package). Actually maybe I got confused
03:30:13 <zzo38> And it is possible to turn around all the directions in the graph to make the dual category and then it make the comonad
03:32:21 <zzo38> Can you please tell me in case I did it wrong?
04:08:25 <zzo38> <CTCP>
04:08:50 <monqy> <CTCP>HI<CTCP>
04:09:06 <zzo38> <CTCP>Hello!!!<CTCP>
04:09:25 <Sgeo> <CTCP>CTCP<CTCP>
04:09:53 <zzo38> clog and iamcal have error message for unknown command
04:23:03 <coppro> <CTCP>SHUT the fuck up<CTCP>
04:31:35 <zzo38> !!!
04:32:46 -!- elliott_ has joined.
04:32:55 <elliott_> sup
04:33:11 -!- elliott_ has changed nick to Guest96751.
04:33:34 <Guest96751> fuck that shit
04:33:46 <Guest96751> fizzie: hi
04:33:50 <Guest96751> kallisti: hi
04:34:34 <Guest96751> kallisti: hi hi hi
04:34:53 <monqy> Guest96751: hi
04:34:57 <Guest96751> hi
04:40:12 -!- Jafet has quit (Quit: Leaving.).
04:41:40 <Sgeo> If MSPA updates (which is looking more and more unlikely), don't expect me to remember to ping you
04:42:09 <Sgeo> Does glogbot log CTCP/
04:42:16 <Guest96751> I AM SO DISAPPOINTED!!!
04:42:18 <Guest96751> im cry
04:42:19 <Guest96751> betray :(
04:42:33 <Sgeo> Apparently not.
04:42:45 <Sgeo> SECRET UNLOGGED MESSAGES MUAHAHAHAHAHHHHHHHHHHHHHHAAAAAAAAA
04:42:58 <Guest96751> Sgeo: see: raw log
04:43:52 <Sgeo> Ah
04:48:40 <zzo38> Raw log includes everything it receives, except for the secret password
04:49:41 <Guest96751> What secret password
04:49:48 <monqy> its a secret
04:56:09 -!- Guest96751 has changed nick to elliott.
04:56:15 -!- elliott has quit (Changing host).
04:56:15 -!- elliott has joined.
05:12:15 -!- Frooxius has quit (Ping timeout: 248 seconds).
05:40:43 -!- Klisz has joined.
05:43:37 <shachaf> <CTCP>HEY_EVERYONE_AM_I_LATE? <CTCP>
05:51:10 <augur> well
05:51:11 <augur> so
05:51:19 <augur> ive done what i had been curious about doing for years now
05:51:29 <augur> i build a graph reducing evaluator
05:52:49 <elliott> it
05:52:52 <elliott> took you that long
05:52:57 <elliott> or is this something different from a term rewriting language
05:53:10 <zzo38> Do you know if the things I wrote about monad/comonad of digraph category is correct or is wrong or confuse?
05:53:41 <augur> elliott: oh its completely different
05:54:10 <elliott> ok
05:54:33 <augur> this is a little C program that does reduction of terms-as-structs
05:55:33 <augur> its only pure LC but the rewrite rules are pretty simple. it also automatically TCOs because its in place, and it doesnt have an explicit control stack
05:56:06 <elliott> Sounds like term rewriting to me.
05:56:22 <augur> well it is, except theres sharing due to using pointers
05:57:00 <elliott> That doesn't change the semantics of the term-rewriting language. (I doubt any actual implementations of term-rewriting languages don't use sharing.)
05:57:43 <augur> no, it indeed does not
05:58:11 <elliott> SO HA
05:58:15 <augur> but because its got sharing, you get call by need for free
05:58:16 <elliott> But go on.
05:58:54 <augur> but the cool thing is that its simple enough that you could built the controller directly in a chip
05:59:08 <elliott> See: Reduceron.
05:59:13 <augur> no
05:59:16 <elliott> Yes.
05:59:20 <elliott> It's a graph-rewriting machine in hardware.
05:59:29 <augur> yes, it is, but it has some fancy intermediate language for this
05:59:43 <augur> it compiles LC into a specialized language
05:59:50 <elliott> No.
05:59:51 <augur> this uses the LC /as the machine language/
06:00:02 <elliott> It compiles a sugary Haskell-alike into a term-rewriting language.
06:00:10 <elliott> The latter is what the Reduceron deals with.
06:00:26 -!- MDude has changed nick to MSleep.
06:00:30 <augur> "it compiles LC into a specialized language"
06:00:49 <monqy> by lc what do you mean
06:00:53 <augur> ok so its not pure LC its something modified
06:00:59 <augur> same diff
06:01:21 <augur> the point is, the reduceron doesnt use LC as the machine code
06:01:31 <augur> whereas in principle you could do so with this evaluator
06:01:34 <elliott> augur: OK, you're confused. It doesn't do much to pure LC.
06:01:40 <elliott> The point is that it has pattern-matching, data types, conditionals, etc.
06:01:44 <elliott> That turns into _functional_ term rewriting code.
06:01:52 <elliott> You could just as easily write pure LC-style code at the lower layer.
06:01:59 <augur> yeah yeah anyway thats irrelevant to the point
06:02:09 <elliott> The reason to use a compiler is because implementing ADTs at the term-rewriting layer would be stupidly slow at runtime for no gain.
06:02:20 <monqy> ~pure~ lc gives me a bit of spooks
06:02:34 <augur> monqy: you have to get used to church encodings
06:02:47 <monqy> not that sort of spooks
06:02:51 <monqy> alphaconversion sort of spooks
06:02:55 <augur> o
06:02:58 <augur> debruijn!
06:03:04 <monqy> sure
06:03:08 <augur> use your indices!
06:03:10 <monqy> but is it still "pure" then
06:03:10 <elliott> FSVO pure equal to not the original
06:03:52 <elliott> Does anyone know what the Emacs-for-OS X of the season is, I CBA to put any other OS on this right now
06:03:53 -!- Jafet has joined.
06:03:56 <augur> anyway, im going to muck around with an FPGA simulator to see what i can see :)
06:04:04 <elliott> Hmm, http://emacsformacosx.com/ seems reasonable
06:04:07 <augur> elliott: aquamacs
06:04:13 <elliott> augur: No.
06:04:21 <augur> you asked for the one of the season!
06:04:28 <elliott> The good one of the season.
06:04:31 <augur> o
06:06:35 <elliott> augur: Post your C code already.
06:06:51 <augur> oh i didnt realize you cared
06:07:07 <elliott> I... vaguely care?
06:09:01 * elliott wants a statically-typed, non-strict term rewriting language.
06:09:32 * augur wants non-von-neumann architecture
06:09:47 * monqy wants
06:09:50 <elliott> Yeah yeah, so does everybody.
06:09:57 <augur> http://pastebin.com/DPvpgnL8
06:10:16 <augur> elliott: the point tho is that this is simple enough to design a non-von-neumann architecture with :)
06:10:42 <elliott> Lam?
06:10:44 <augur> watch out for memory leaks. its not designed to be memory friendly.
06:10:48 <augur> lambda!
06:10:53 <elliott> So it's actually just LC, not term-rewriting.
06:10:55 <monqy> lamb
06:11:05 <augur> i didnt say anything about term-rewriting, you did
06:11:05 <elliott> Also you haven't heard of switch statements.
06:11:12 <elliott> You said graph-rewriting, same thing.
06:11:23 <augur> i said it was a graph-reducing evaluator
06:11:27 <shachaf> elliott: Wait, you're running Mac OS X these days?
06:11:28 <shachaf> Excellent.
06:11:37 <elliott> shachaf: Why is that excellent?
06:11:43 <elliott> If you need reassurance, I still hate it.
06:11:43 <augur> shachaf: hes been on os x for forever...
06:11:45 <shachaf> You're finally showing your true colours.
06:11:49 <elliott> augur: No I haven't.
06:11:52 <augur> really?
06:12:00 <augur> ever since ive known you, i think
06:12:11 <elliott> I used it for a bit, then I stopped because it sucks.
06:12:12 <shachaf> But you've never known elliott.
06:12:19 <augur> ahh i see
06:12:21 <augur> well
06:12:22 <augur> anyway
06:13:25 <elliott> shachaf: Can you write me a statically-typed, non-strict term rewriting language?
06:13:57 <shachaf> elliott: Sure.
06:14:06 <shachaf> #!/bin/bash
06:14:11 <shachaf> read
06:14:16 <shachaf> echo SYNTAX ERROR >&2
06:14:18 <shachaf> exit 1
06:14:25 <elliott> shachaf: Excellent.
06:14:36 <shachaf> elliott: If you figure out the right syntax, it does just what you want.
06:14:38 <augur> elliott: how old are you now? 17>
06:14:48 <elliott> 26.
06:15:06 <augur> lets see, you were 13 in 2006, so youre 18 now surely
06:15:10 <augur> at least
06:15:22 <elliott> You are really bad at arithmetic and memory.
06:15:33 <augur> uh
06:15:58 <augur> 2011 - 2006 = 5; 13 + 5 = 18
06:16:05 <augur> give or take, depending on when your birthday is
06:16:21 <augur> iinm its something like november 3 or something
06:16:32 <elliott> I...
06:16:34 <augur> (im almost certainly mistaken)
06:16:36 <augur> but!
06:16:44 <augur> youre within a year of 18
06:16:49 <elliott> It's like you're trying to be as mistaken as humanly possible.
06:16:53 <elliott> And succeeding.
06:16:58 <augur> i dont need to try.
06:17:09 <shachaf> elliott: You're -4, aren't you?
06:17:18 <augur> -4 + 2i
06:17:21 <elliott> (a) I wasn't 13 in 2006 (b) I'm not within a year of 18 (c) You didn't even know me in 2006
06:17:24 <elliott> shachaf: -6
06:17:26 <elliott> I had a birthday.
06:17:27 <augur> ehhh..
06:17:33 <augur> maybe 2007 then.
06:17:35 <shachaf> elliott: What date is your birthday?
06:17:48 <shachaf> I remember when you said you had a birthday but I didn't note it down.
06:17:48 <augur> i knew you within a year of getting to stony brook, possibly within the first few months of being there
06:17:48 <elliott> shachaf: November 37th.
06:17:52 <augur> so late 600 early 2007
06:18:03 <elliott> shachaf: Pls abandon piece of paper with elliott notes.
06:18:04 <shachaf> elliott: Did you read _The 35th of May_?
06:18:06 <augur> november 3, november 37, SAME DIFF
06:18:08 <augur> fosh
06:18:10 <augur> gosh even
06:18:18 <elliott> shachaf: No. Should I?
06:18:21 <shachaf> elliott: Which one?
06:18:26 <elliott> All of them.
06:18:26 <shachaf> elliott: Yes, it's a good book.
06:18:50 <shachaf> OK, how about this proposal:
06:18:52 <shachaf> Stop with the ageism.
06:18:57 <augur> hm
06:18:57 <shachaf> This includes discussing ages.
06:19:15 <shachaf> elliott is a dawg so you have to measure his age in dawg years.
06:19:16 <augur> my earliest logs for this channel are may 2008
06:19:19 <augur> i suppose thats plausible
06:19:32 <augur> but that means you're even younger, elliott D:
06:19:35 * elliott thinks letting people know his age was the most annoyance-causing decision he ever made.
06:19:42 * shachaf too
06:19:48 <shachaf> Fortunately I'm old now.
06:19:54 <elliott> Were you ever not old?
06:19:59 <shachaf> Yes.
06:20:15 <augur> elliott: how else am i supposed to figure out what david deutsch looked like as a young man?
06:20:25 <augur> if not by looking at you
06:20:46 * elliott is actually David Deutsch.
06:20:50 <augur> :O
06:21:04 <augur> WORLD RENOWNED PHYSICIST DAVID DEUTSCH IN THIS VERY CHANNEL!
06:22:32 <shachaf> I'm considering going to sleep in evenings instead of mornings.
06:22:34 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
06:42:14 -!- PiRSquaredAway has joined.
06:47:19 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
07:00:18 -!- Jafet has quit (Ping timeout: 252 seconds).
07:13:41 -!- madbright has quit (Quit: Page closed).
07:17:46 -!- elliott has quit (Remote host closed the connection).
07:30:35 -!- elliott_ has joined.
07:31:01 -!- elliott_ has changed nick to Guest55419.
07:39:48 <Guest55419> Oh.
07:39:58 <Guest55419> shachaf: You didn't tell me erus` asked that SO question.
07:40:34 <shachaf> Guest55419: I don't know what that SO question is.
07:40:40 <Guest55419> http://stackoverflow.com/questions/8756456/how-to-test-equality-of-recursive-structures
07:40:42 <shachaf> And I don't know much about erus`.
07:40:56 <Guest55419> 01:32:28 <hpaste> erus` pasted “babbys first type system” at http://hpaste.org/56146
07:40:57 <shachaf> erus` is a much better nick than "Guest55419", though.
07:41:03 <Guest55419> Guest55419 is the best nick.
07:41:09 <Guest55419> It's a commentary on the meaninglessness of identity.
07:41:29 <shachaf> Oh?
07:41:33 -!- Guest554110 has joined.
07:41:35 <Guest554110> TAKE THAT
07:41:47 <Guest55419> By the way, the Applicative operators should be called .$ and *$, I think.
07:42:08 -!- Guest554110 has changed nick to Guest554111.
07:42:22 <shachaf> Guest55419: Are you reading #haskell logs?
07:42:23 <Guest55419> Except that ($) should be called something lighter, and be infixl.
07:42:28 <Guest55419> shachaf: Maybe.
07:42:31 <shachaf> Shame on you.
07:42:39 <shachaf> You'll find the places where I mad.
07:42:56 <shachaf> In another channel I even more mad.
07:43:09 <shachaf> 08:14 < shachaf> Approximately half of #haskell ought to be eliminated.
07:43:14 <shachaf> 08:14 < shachaf> I hate everybody.
07:43:18 <shachaf> 08:14 < shachaf> That probably has to do with how I haven't eaten all day.
07:43:43 <Guest55419> Let's rename ($) to (•), (<$>) to (‹•), and (<*>) to (‹•›).
07:44:27 <shachaf> Let's have infixl $, infixl *, ($) = (*) = id
07:44:33 <Guest55419> join ∘ putStrLn • (+) ‹• readLn ‹•› readLn
07:44:34 <shachaf> That's the logical way to do it.
07:44:44 <Guest55419> Objectively nicer.
07:44:52 <shachaf> By the way, my IRC client is racist. Is that thing after "join " a "::" character?
07:45:02 <Guest55419> No, it's the composition operator.
07:45:11 <Guest55419> http://codu.org/logs/log/_esoteric/2012-01-07#074433Guest55419
07:45:13 <shachaf> Oh.
07:45:22 <Guest55419> Although that renders the guillemet-bullet things uglily thanks to monospacedness.
07:45:25 <shachaf> I DON'T READ LOGS
07:45:42 <shachaf> Guillaume's Face
07:45:46 <Guest55419> shachaf: Also, is #not-haskell actually a thing?
07:46:20 <shachaf> Guest55419: Why don't you join it and see?
07:46:38 <Guest55419> It might be bad! It might, say, have people who name themselves after violating rules.
07:46:45 <Guest55419> Or people who sha the chaf.
07:46:58 <shachaf> Name themselves after violating rules?
07:47:08 <Guest55419> Yes, like some kind of... cheater.
07:47:23 * Guest55419 plays the TITLE OF FILM OCCURS IN DIALOGUE IN FILM ITSELF fanfare.
07:47:49 <shachaf> Guest55419: Ew.
07:47:54 <shachaf> No cheater in there.
07:48:34 <shachaf> Guest55419: cheater got a job or something, by the way, so he's not in #haskell-blah much either these days.
07:48:51 <shachaf> Guest55419: I was typing, not fair!
07:49:03 <Guest55419> shachaf: Oh, I assumed he'd just stopped bothering us in favour of you guys.
07:49:11 <Guest55419> Good to know the tranquil is global.
07:51:39 <Guest55419> shachaf: I agree that #haskell is crappy.
07:58:19 -!- Guest554111 has changed nick to Guest554112.
07:58:31 <Guest55419> Hi.
07:58:34 <shachaf> Guest55419: But imagine that all the nonsense was gone!
07:58:37 <shachaf> Then it would be good.
07:59:05 <shachaf> kmc has pretty much abandoned it, I believe.
07:59:07 <Guest55419> shachaf: Sorry, I go for mediums that don't inevitably break all my verbose questions into 2, 3 or more units of text nowadays :)
07:59:11 <Guest55419> *media
07:59:27 <Guest55419> Although I miss out on all the VALUABLE CHAT.
07:59:31 <Guest55419> Those monad tutorial jokes?
07:59:33 <Guest55419> I see none of 'em.
07:59:41 -!- Guest554112 has changed nick to Guest554113.
08:00:24 <Guest55419> 05:17:16 <hpc> there are functors that don't have 'pure'
08:00:24 <Guest55419> 05:17:16 <rostayob> i meant the opposite
08:00:24 <Guest55419> 05:17:31 <rostayob> yes sorry
08:00:25 <Guest55419> 05:17:32 <teneen> hpc: any concrete example?
08:00:27 <Guest55419> 05:17:36 <hpc> i can't think of any off the top of my head
08:00:31 <Guest55419> Oh come on.
08:00:59 <Guest55419> 05:20:05 <teneen> All examples which I know of functors, can be made Applicative by undefined
08:01:07 <Guest55419> shachaf: DYK you can define anything as undefined in Haskell?
08:01:09 <shachaf> teneen has a point.
08:01:13 <shachaf> GET IT???
08:01:19 <Guest55419> HA HA HA HA HA HA no.
08:01:26 <shachaf> As in pointed functor.
08:01:30 <Guest55419> OH MY GOD STOP TALKING ABOUT SET
08:01:31 <Guest55419> GUYS
08:01:32 <Guest55419> GUYS
08:01:34 <Guest55419> (,)
08:01:36 <Guest55419> IT'S SO TRIVIAL
08:01:36 <monqy> Guest55419
08:01:38 <monqy> (,)
08:01:40 <Guest55419> (,)
08:01:43 <Guest55419> smiley
08:01:43 <Guest55419> (,)
08:01:44 <monqy> (,)
08:01:45 <shachaf> Guest55419: MORE LIKE (x,)!
08:01:47 <Guest55419> it's bird
08:01:48 -!- Guest554113 has changed nick to Guest554114.
08:01:53 <Guest55419> shachaf: NO TUPLE SECTIONS FOR TYPES!!! I THINK
08:01:57 <Guest55419> Guest554114: YOU'LL OVERFLOW THE INT
08:02:23 <Guest55419> 05:21:41 <ski> teneen : using that, i think `CoYoneda IORef' is an example 05:22:08 <teneen> ski: but it can be made an instance of Applicative very easily 05:22:15 <ski> teneen : how ? 05:23:34 <teneen> instance Applicative (CoYenda f) where pure x = undefined; _ <*> _ = undefined
08:02:34 <shachaf> Guest55419: THAT SECTION IS CONCEPTUAL
08:02:37 <Guest55419> shachaf: You said half of #haskell should be eliminated.
08:02:39 <shachaf> Guest55419: LIKE (r ->)
08:02:40 <Guest55419> Try 90%.
08:03:21 -!- Jafet has joined.
08:03:21 <shachaf> Guest55419: You should tell teneen that the definition for <*> is too defined.
08:03:29 <shachaf> It should be (<*>) = undefined
08:03:30 <kmc> shachaf, not given up permanently, just yet
08:03:30 <lambdabot> kmc: You have 2 new messages. '/msg lambdabot @messages' to read them.
08:03:38 <kmc> maybe i should /join #haskell only on tuesdays and alternate fridays
08:04:16 <Guest55419> Tuesdays are the worst. The monad-tutorial-jokes of Sunday have been forgotten and so are new again, and the questionless daze of Monday subsides.
08:04:19 <Guest55419> (NB: Not based on facts.)
08:04:23 <shachaf> There should be a channel where only the cool people from #haskell go.
08:04:23 <kmc> it's more like "it's bad for me to spend 18 hours a day in #haskell"
08:04:24 <shachaf> MAYBE IT EXISTS AND I JUST WASN'T INVITED.
08:04:31 <kmc> maybe it's #esoteric
08:04:33 <Guest55419> shachaf: Maybe it's #esoteric!
08:04:37 <Guest55419> kmc: Thank you.
08:04:38 <zzo38> (,) can make a comonad always, and a monad if the first type is monoid. While (->) make a monad always, and a comonad if the first type is monoid. And then I figured out the indexed ones as well, can be the first type is a category, instead of a monoid.
08:04:42 <shachaf> Well, I wasn't invited to #esoteric.
08:04:45 <kmc> Guest55419, PWN'd
08:04:57 <Guest55419> shachaf: Yes, we were doing so well at the "cool people" thing before you barged in.
08:05:24 <Guest55419> 05:24:41 <rostayob> teneen: but that instance clearly breaks the Applicative laws
08:05:25 <Guest55419> 05:25:44 <teneen> rostayob: which one?
08:05:26 <Guest55419> :D
08:05:40 * Guest55419 is viewing this as an elaborate comedy routine.
08:06:14 <Guest55419> shachaf: Ooh, then we get, on Set having an Ord constraint instead of Eq: <gregATio> haskell is a research language that prides itself on purity, it didnt have a proper way to handle side effects, but refused to compromise like other languages then stm came along, im just saying im suprised to find a compromise thats all
08:06:21 * Guest55419 stops reading this log.
08:06:28 <shachaf> Guest55419: To be fair, most of the monad laws etc. are typically stated "modulo undefined".
08:06:41 <kmc> the thing that's annoying me right now is that nobody has any interest in writing down answers to the common questions
08:06:47 <Guest55419> shachaf: Which gives us horrors like the definition of `evaluate`. :(
08:06:52 <kmc> in anywhere permanent / editable / easily linkable
08:06:52 <shachaf> kmc: Sometimes it's the opposite.
08:06:55 <zzo38> What common questions?
08:06:56 <shachaf> Oh.
08:06:58 <shachaf> Right.
08:07:10 <Guest55419> kmc: A nice thing about SO is that it avoids that problem by definition.
08:07:14 <shachaf> That ehird fellow writes answers on StackOverflow.
08:07:14 <kmc> yes
08:07:23 <Guest55419> shachaf: I hear he's FAMOUS.
08:07:29 <kmc> I think SO is great for common questions, and IRC might be better for deep / open-ended discussion
08:07:37 <Jafet> If you do that well enough, kmc, you end up with ##c++
08:07:47 * Guest55419 thinks SO's strong hostility to discussion is counterproductive.
08:07:49 <kmc> Jafet, but if you don't do it, you end up with #haskell
08:07:55 <Guest55419> But it's understandable, since it'd require about 2x the work to be good at it.
08:08:05 <shachaf> @karma ##c
08:08:06 <lambdabot> ##c has a karma of 2
08:08:26 <Guest55419> kmc: I'm kind of sceptical that IRC is a good medium for deep discussion, though. People usually end up tripping over each others' definitions and revising their viewpoints faster than everyone else can update them.
08:08:37 <kmc> Guest55419, do you think other media avoid that problem?
08:08:39 <Guest55419> It works if everyone has the same clock speed, though.
08:08:42 <kmc> 'cause I've seen it happen IRL ;)
08:08:49 <Guest55419> kmc: No :) But IRC's quick-fire real-time nature exasperates it.
08:09:02 <Guest55419> Slow media like email even it out because you can't go fast.
08:09:08 <Guest55419> Well, you can, but it fills up everybody's inboxes.
08:09:08 <shachaf> kmc: The other problem is that most -- or at least a lot of -- people who write permanenty linkable answers to things have no idea what they're talking about.
08:09:18 <shachaf> Monad tutorials are the obvious examples but it's a lot more common than that.
08:09:27 <Guest55419> shachaf: I've just read the first two chapters of LYAH! Who wants to read my Haskell tutorial?
08:09:34 <Guest55419> Haskell is purely functional, which means that it can't print to the screen.
08:09:39 <kmc> shachaf, yeah. if we encourage people to put things on the wiki, then we can fix them
08:09:44 <Guest55419> Instead we use GHCi to execute our code, which turns into side effects behind the scenes.
08:09:48 <kmc> but in practice many wiki articles are shite too
08:09:51 <Guest55419> GHCi is written in C/C++.
08:10:01 <Jafet> guest should write a tutorial
08:10:03 <shachaf> kmc: That's true, except that wiki articles tend to end up at local optima.
08:10:04 <kmc> Guest55419, I see you've been taking lessons from shachaf on how to troll me
08:10:11 <Guest55419> NOTE: The following recursive fibonacci program is slower than this iterative C version.
08:10:11 <kmc> shachaf, better than local pessima
08:10:24 <Guest55419> This is because we don't have to declare the types in Haskell, as it is an interpreted language, so the interpreter cannot optimis eit.
08:10:30 <shachaf> kmc: Hey, I pretty much stopped doing those things when you asked! Didn't I?
08:10:36 <Guest55419> shachaf: No.
08:10:42 <kmc> data D = D deriving (Eq)
08:10:48 <kmc> instance Num D where { fromIntegral 8 = D }
08:10:53 <kmc> (========) = (==)
08:11:10 <Guest55419> kmc: You're giving a great demonstration of how IRC maintains a high level of discourse.
08:11:33 -!- Guest55419 has changed nick to elliott.
08:11:35 -!- elliott has quit (Changing host).
08:11:35 -!- elliott has joined.
08:12:08 <elliott> The main problem with SO is that people give out upvotes way too easily, and there's a tragedy of the commons for questions with common misconceptions.
08:12:26 <elliott> For instance, I am fairly sure the monads-as-containers explanation would get upvoted pretty heavily.
08:12:36 <shachaf> elliott: That's true of IRC too, pretty much.
08:12:44 <shachaf> Except upvotes = visibility = volume of posts.
08:12:59 <zzo38> But, what monads is, is a kind of mathematical structure supporting certain operations following certain laws.
08:13:12 <elliott> Also there was a question about describing FRP where Conal gave a simple explanation of it and how to come up with it yourself, and there was another answer going "it's about events which cause signals to travel through event handlers in a network" where everyone commented going "Much nicer than the abstract nonsense explanation +1!!!".
08:13:26 <zzo38> Some types that are monads might be containers, but some might have a different purpose
08:13:29 <kmc> elliott, I think "monads as containers" is a decent analogy, if you're upfront about the fact that it *is* an analogy, and not universal
08:13:40 <elliott> But it's mitigated by (a) most questions having a single, obvious answer and (b) the most knowledgable community members being the most active early voters.
08:13:49 <kmc> a lot of monads are nicely described this way, though not all
08:13:50 <zzo38> kmc: I think it only apply to some types. Some monad types can be as containers
08:13:51 <elliott> kmc: Yes, fair enough. I should have typed "space suit" instead or similar.
08:13:52 <shachaf> kmc: I think it's harmful.
08:14:02 <elliott> I agree with shachaf though, I don't condone teaching monads like that.
08:14:06 <kmc> in fact there may be a formal mathematical distinction between the monads nicely described by it and the ones which aren't
08:14:11 <shachaf> At the point that someone wants to "understand monads", at least.
08:14:15 <elliott> It could be useful for developing further intuition about when to apply monads after you know what they are.
08:14:36 <elliott> But starting people off on it just leads to misconceptions where people think (m a) always has to contain an a in there.
08:14:43 <kmc> right
08:15:02 <kmc> if you show them ((->) r) then it's obvious that it needn't *literally* contain an a
08:15:04 <elliott> shachaf: Hey, you want to know the real comedy?
08:15:08 <kmc> while showing how it can *conceptually* contain one
08:15:08 <elliott> We're talking about monad tutorials.
08:15:13 <Jafet> If you pace around the room slowly while chanting with your hands cupped together like this for two weeks, you will understand monads
08:15:38 <kmc> pie jesu domine, dona eis requiem
08:15:43 <shachaf> @google monads are essentially decorators with method chaining
08:15:44 <lambdabot> http://news.ycombinator.com/item?id=439429
08:15:44 <lambdabot> Title: So monads are essentially decorators with method chaining? | Hacker News
08:15:45 <zzo38> I think you should describe monads in terms of join and fmap as well as >>= and even mean it is applicative functor too, and in terms of mathematics. Understand Haskell better by understanding mathematics better and vice versa.
08:15:55 <elliott> shachaf: Um, excuse me, monads are about sequencing.
08:15:55 <shachaf> That's the best explanation of monads.
08:15:55 <kmc> sigh
08:16:03 <shachaf> Oops.
08:16:06 <zzo38> elliott: No only some can be
08:16:10 <elliott> [] is just sequencing a lot of things and the reverse state monad is sequencing things backwards and forwards at the same time!
08:16:14 <elliott> I heard it on reddit.
08:16:15 <shachaf> Let's go back to the pedagogical discussion. That or data D = D.
08:16:21 <elliott> Yes, D = D is better than this.
08:16:24 <elliott> kmc: Expand.
08:16:30 <kmc> i'm glad you understand the brilliance of my type and Num instance
08:16:45 <kmc> oh noes i wrote fromIntegral instead of fromInteger
08:16:47 <monqy> data D where D :: D
08:16:52 * kmc hangs head in shame
08:16:52 <elliott> ::D
08:17:01 <elliott> kmc: Hey, if you want it to be in Num, it is.
08:17:05 <elliott> Nobody knows what's in Num.
08:17:08 <shachaf> You also forgot Eq.
08:17:08 <kmc> so this is basically the cool kids version of #haskell
08:17:14 <elliott> You can remember about 2/3rds of it at the best of times.
08:17:18 <elliott> shachaf: He derived that.
08:17:22 <shachaf> Oh.
08:17:24 <zzo38> kmc: Sometimes.
08:17:28 <shachaf> Show, then.
08:17:32 <kmc> #esoteric : #haskell :: YOSPOS : SH/SC
08:17:47 <elliott> How did Num even get defined?
08:17:55 <elliott> Like, I want to know how they actually decided which arbitrary subset of methods to include.
08:18:22 <zzo38> Do you know what monads and comonads that a digraph category can have?
08:18:35 <zzo38> I tried to explain but am unsure if it is correct
08:18:42 <elliott> Makes two of us.
08:18:50 <itidus21> . o O ( C : Haskell :: Exoteric : Esoteric )
08:18:59 <kmc> Haskell is the ultimate esoteric language
08:19:06 <elliott> See, only in #esoteric is our Haskell talk punctuated with zzo38 and itidus21.
08:19:08 <kmc> that or C++
08:19:24 <elliott> kmc: Not true, people have actually read the Haskell report.
08:19:35 <elliott> There's at least one well-liked esolang that nobody has read the entire spec to.
08:19:43 <elliott> Now *that's* dictionary-definition esoteric.
08:19:58 <elliott> http://esoteric.voxelperfect.net/wiki/Special:Recentchanges I like how we have multiple spambots editing the main page IN SUCCESSION.
08:20:09 <elliott> Editing each other's spam.
08:22:34 <shachaf> I'm contemplating whether to go to Hac Boston.
08:22:45 <kmc> do it
08:22:57 <elliott> This Hac Boston thing has been talked about for like three years and it still hasn't happened.
08:23:01 <elliott> Boston just can't be Hacced.
08:23:09 <shachaf> elliott: It's in two weeks.
08:25:19 <zzo38> Do *you* know monad/comonad that a digraph category can have???
08:26:08 * elliott wants sameIORef :: IORef a -> IORef b -> Maybe (a :=: b) in Data.IORef.
08:26:11 * elliott wonders if he can get it.
08:27:17 <kmc> O_O
08:27:19 <zzo38> I said that a digraph category with a final object has a Proxy monad but I am a bit unsure
08:27:24 <kmc> ...what are you doing that wants that
08:27:41 <kmc> you are a strange person with strange cares
08:27:47 <elliott> kmc: I want an equivalent type in http://hackage.haskell.org/package/vault, since it expresses the core type-system feature vault needs unsafeCoerce to get.
08:27:55 <elliott> But apfelmus wants to keep the API IORef-compatible.
08:28:13 <kmc> "The data structure is analogous to a bank vault, where you can access different bank boxes with different keys"
08:28:15 <elliott> kmc: Basically, it lets you write a heterogeneous map where the type information is stored in the keys.
08:28:15 <kmc> COOL ANALOGY BRO
08:28:19 <elliott> Hey, not my package.
08:28:21 <elliott> http://hackage.haskell.org/packages/archive/vault/0.1.0.0/doc/html/Data-Vault.html
08:28:27 <elliott> That's the easiest way to understand the API.
08:29:07 <kmc> *nod*
08:29:18 <elliott> Anyway, you can implement it all given
08:29:20 <elliott> newKey :: IO (Key a)
08:29:27 <elliott> sameKey :: Key a -> Key b -> Maybe (a :=: b)
08:29:32 <elliott> Literally just that.
08:29:51 <elliott> (It's slow, of course, because you're reduced to using an a-list.)
08:30:21 <shachaf> I like "type Vault = Vault RealWorld"
08:30:40 <elliott> http://hackage.haskell.org/packages/archive/vault/0.1.0.0/doc/html/Data-Vault-ST.html :p
08:31:03 <shachaf> Yes, yes.
08:32:52 <elliott> sameIORef :: IORef a -> IORef b -> Maybe (a :=: b)
08:32:52 <elliott> sameIORef a b
08:32:52 <elliott> | a' == b' = Just (unsafeCoerce refl)
08:32:54 <elliott> | otherwise = Nothing
08:32:56 <elliott> where a', b' :: IORef ()
08:32:58 <elliott> a' = unsafeCoerce a
08:33:00 <elliott> b' = unsafeCoerce b
08:33:02 <elliott> See, it's easy!
08:33:04 <elliott> Even works with the data a :=: b = Equal { subst :: forall p. p a -> p b } definition.
08:34:53 <shachaf> "unsafeCoerce refl" is pretty good.
08:37:52 <shachaf> @brain
08:37:52 <lambdabot> Now, Pinky, if by any chance you are captured during this mission,
08:37:53 <lambdabot> remember you are Gunther Heindriksen from Appenzell. You moved to Grindelwald
08:37:53 <lambdabot> to drive the cog train to Murren. Can you repeat that?
08:39:13 <elliott> Oh, hmm, I'm not sure that definition of (:=:) actually works for this.
08:39:35 <elliott> Oh, yes it does.
08:41:06 <elliott> @hoogle (a -> Maybe b) -> [a] -> Maybe b
08:41:06 <lambdabot> Prelude mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
08:41:06 <lambdabot> Control.Monad mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
08:41:07 <lambdabot> Control.Monad forM_ :: Monad m => [a] -> (a -> m b) -> m ()
08:41:15 <elliott> No, you silly bot!
08:41:24 <elliott> @hoogle [Maybe a] -> Maybe a
08:41:24 <lambdabot> Control.Monad msum :: MonadPlus m => [m a] -> m a
08:41:24 <lambdabot> Data.Generics.Aliases orElse :: Maybe a -> Maybe a -> Maybe a
08:41:24 <lambdabot> Data.Foldable asum :: (Foldable t, Alternative f) => t (f a) -> f a
08:41:34 <elliott> Ah, msum.
08:43:10 <elliott> kmc: shachaf: http://sprunge.us/QMbF
08:44:46 <zzo38> This is the way I used for execution of a token list, is there a better way? execute p @ ProgramState { psTokens = h : t } = let { p' = t <$: p; } in execute . either ($ p') (p' =>>:) $ meaning h p';
08:44:57 <elliott> Actually Unique is better than (IORef ()) there.
08:46:24 <zzo38> Is this similar to the way you would have done, or not?
08:47:48 <elliott> kmc: anyway, it's not *that* a weird thing to want -- it's just a way of being able to reveal the type of an existential, because if two Key/IORef/whatever values are identical, they have to have the same type
08:48:13 <shachaf> You should be allowed to pattern match "lookup k (Vault xs) = ... xs" as "(lookup k . Vault) = ...". IT MAKES PERFECT SENSE
08:48:24 <elliott> shachaf: I just wished for that earlier today. In here.
08:48:42 <shachaf> elliott: Sounds like the reverse state monad's been doing some sequencing!
08:48:48 <elliott> :D
08:49:35 <shachaf> elliott: What's the point of using IORef there?
08:49:40 <shachaf> Oh, you already talked about that.
08:49:42 <zzo38> shachaf: I understand but I think you are wrong because of the way that patterns are working; it cannot possibly work properly using that way so maybe it should be some kind of macro instead; if they had macros then you could make it up in a way that work always
08:49:43 <elliott> 08:44 <elliott> Actually Unique is better than (IORef ()) there.
08:50:13 <shachaf> zzo38: You've crushed my argument completely.
08:50:29 <shachaf> Zanks, zzo38. zzo38.
08:50:51 <elliott> shachaf: Actually, you don't even need RankNTypes: http://sprunge.us/KEhV
08:51:14 <elliott> Although sameKey tells you distinctly less about the types there.
08:51:40 <zzo38> How would you do a token expansion/execution loop in Haskell, anyways? I did it one way but maybe there is better way, I don't know
08:52:40 <elliott> shachaf: Can you write a proper statically-typed lazy term rewriting language for me?
08:52:54 <shachaf> elliott: I already did that earlier today.
08:53:00 <elliott> shachaf: It wasn't proper enough.
08:53:00 <shachaf> @let proper = undefined
08:53:01 <lambdabot> Defined.
08:53:11 <shachaf> elliott: Sure it was. It obeys all the proper laws, see?
08:53:22 <elliott> :(
08:53:31 <zzo38> (The <$: and =>>: are pretending that it is a environment comonad)
08:53:44 <shachaf> Aw, there, there, elliott. Don't be sad. I'll write a statically-typed lazy term rewriting language for you.
08:54:05 <shachaf> elliott: What do you want it for, anyway?
08:54:57 <elliott> Because it'd be neat.
08:55:46 -!- DeStRoYeR87 has joined.
08:56:02 -!- DeStRoYeR87 has quit.
08:56:04 <elliott> rip
08:56:07 <elliott> destroyer
08:56:11 <elliott> we will miss you :'(
08:56:13 <monqy> "destroyed"
08:56:17 <elliott> yes
08:56:29 -!- Ngevd has joined.
08:56:51 <shachaf> Aw, kmc visited #not-haskell and I didn't notice.
08:56:58 <shachaf> He didn't get the special elliott treatment.
08:56:59 <kmc> you're the worst channel founder ever
08:57:04 <Ngevd> Hello
08:57:08 <shachaf> kmc: I was kicking everyone else who came in there!
08:57:40 <shachaf> At least the signal-to-noise ratio -- well, I don't know about the ratio, but there was very little noise.
08:59:35 <elliott> 0:0
09:00:12 <shachaf> INFINITE SIGNAL
09:00:22 <shachaf> > 0/0
09:00:23 <lambdabot> NaN
09:00:28 <shachaf> Naan is delicious. QED
09:02:19 -!- Vorpal has joined.
09:02:44 <elliott> shachaf: You know what would be great? If our compilers automatically rewrote pattern-matching as applications of a fold combinator, and you could extend data-types simply by writing a constructor and adding a clause to the fold combinator.
09:04:03 <monqy> make it hapen
09:04:17 <elliott> monqy: The problem is all those pesky non-structurally-recursive functions. :(
09:04:28 <monqy> who cares about those
09:05:22 <elliott> Me.
09:06:32 -!- zzo38 has quit (Remote host closed the connection).
09:06:35 <augur> elliott: all functions are structurally recursive over some structure or other! :D
09:06:49 <augur> except maybe the anamorphisms
09:07:05 <kmc> Theorem: delicious naan. Proof. eauto. Qed.
09:07:29 <augur> get out of here with your fake coq
09:08:48 -!- Patashu has joined.
09:09:59 <elliott> kmc: You should end all your proofs with "Admitted.".
09:10:03 <elliott> Then you can never go wrong.
09:10:41 <shachaf> I feel left out for not knowing Coq. :-(
09:11:47 <kmc> get out of here with your 8" purple vibrating coq
09:12:03 <elliott> One day someone will talk about Coq and not make a really boring joke.
09:12:16 <kmc> at least i didn't make a santorum joke
09:12:36 <elliott> shachaf: Coq is like Agda, except the messes of Unicode are replaced by messes of half-sentences.
09:12:56 <elliott> eauto. subst in H. split e'. assert (Q : hy_u r42).
09:13:18 <kmc> the best thing is that H, e', etc. have implicit binding occurrences
09:13:33 <kmc> each tactic can introduce hypotheses with auto-generated names
09:13:35 <elliott> yeah i always used to go back and bind everything explicitly at the end
09:13:36 <kmc> and then you can refer to those
09:13:41 <elliott> because
09:13:43 <elliott> i couldn't cope
09:13:47 <kmc> coq bondage
09:14:00 <elliott> I think we should ban kmc.
09:14:13 <kmc> i think you should k-line me
09:14:37 <elliott> Aye.
09:14:45 <shachaf> I vote Naan.
09:14:46 <monqy> bindage and bondage aren't even the same thing
09:15:01 <shachaf> elliott is moving to Boston, by the way, I hear.
09:15:09 <elliott> shachaf: Stop it, you'll enhungrify me and I'll have to move to Boston.
09:15:11 <kmc> let's have a long, pedantic argument about the difference
09:15:23 <elliott> kmc: Bindage tutorial joke!
09:15:37 <kmc> i would read The S&M Guide to Haskell
09:16:09 <elliott> "IMPROVMENTS" IS NOT A GOOD EDIT SUMMARY
09:16:13 <elliott> WHY AM I REVIEWING THIS CRAP
09:16:25 <kmc> "I MAED IT WURSE"
09:16:33 <shachaf> elliott: Just think of the badges!!!
09:16:48 <shachaf> StackOverflow should give badges at randomised intervals rather than at set milestones.
09:16:53 <shachaf> So you never know. You know?
09:16:57 <elliott> I don't give a shit about badges, all I want is for my little ticky counter to go up to at least 20k.
09:17:05 <shachaf> s/badges/points/
09:17:07 <elliott> Badges don't have a cap.
09:17:10 <kmc> we don't need no stinkin' badges
09:17:12 <shachaf> It should be like monster drops.
09:17:29 <shachaf> The people who ask questions are monsters, and you slay them.
09:17:38 <shachaf> Come to think of it, that system might make me feel better about #haskell too.
09:17:39 <kmc> shachaf, you're reusing my reddit metaphor
09:17:43 <elliott> This edit replaces a single occurrence of the word "i" in a question title with "I".
09:17:47 <elliott> Its summary is "Fixed grammar".
09:17:55 <shachaf> kmc: What metaphor is that?
09:17:57 <elliott> The question itself has many more errors, and they're actually grammatical errors.
09:18:17 <kmc> reddit comments are like one of those video games where enemies spawn forever
09:18:20 <kmc> faster and faster
09:18:32 <kmc> you can't win; the only way to win is to quit
09:18:37 <shachaf> elliott: I'LL FIX YOUR GRAMMER
09:18:43 <elliott> "added more tag". Edit adds a signle tag.
09:18:44 <elliott> *single
09:18:47 <elliott> Argh
09:18:48 <elliott> *tags
09:18:50 <elliott> I ruined my entire point :P
09:18:56 <kmc> let's also have a long, pedantic argument about the difference between "grammar" and "syntax"
09:19:12 <elliott> kmc: This is orthography, you illiterate fuck.
09:19:30 <elliott> Or, it might even be typography, I'm not sure.
09:19:46 <shachaf> Man, it's been a long time since I've been involved in a good argument about definitions.
09:19:58 <elliott> shachaf: What IS "is"?
09:20:19 <shachaf> One might ask the same thing about naan.
09:20:26 <shachaf> What ARE breads? We just don't know.
09:20:32 <kmc> naan is pretty easy to make
09:20:38 <kmc> if you have a sourdough culture and a frying pan
09:20:55 <kmc> injera is much harder :/
09:20:59 <elliott> shachaf: I think this Nigel Lambert text-to-speech engine in my head will never go away or stop automatically firing.
09:21:13 <shachaf> kmc: I'm pretty sure sour dough culture is reserved to the east coast.
09:21:25 <kmc> shachaf, San Francisco is world-famous for its sourdough
09:21:27 <shachaf> The culture is very different around here.
09:21:36 <monqy> happy dough culture
09:21:42 <kmc> Lactobacillus sanfranciscensis
09:21:46 <elliott> kmc: Hella dough! Wait, no, that's northerlywards of that isn't it. Fuck you guys.
09:21:48 <elliott> Fuck America.
09:21:51 <elliott> I can't keep up with your bullshit.
09:21:59 <kmc> what
09:22:05 <elliott> You guys move too fast.
09:22:08 <kmc> we all living in america
09:22:21 <monqy> everythings an america
09:22:23 <kmc> america, ist wunderbar
09:22:38 <kmc> sorry that's "amerika"
09:22:46 <elliott> (tm)
09:23:12 <shachaf> I like the city of San Juan...
09:23:26 <elliott> (Pronounced "So What".)
09:24:02 <shachaf> Oh, category theory in #haskell
09:24:12 <monqy> excitement
09:24:13 <elliott> Is that better or worse?
09:24:18 <kmc> widely known for its production of indigo, coffee, sugar, tobacco, and silver
09:24:34 <shachaf> <ddarius> A functor, F, is dense if Lan_F F ~ Id, and Y (the Yoneda embedding) is dense, so Lan_Y Y ~ Id Y /= Id clearly.
09:24:59 <elliott> Exercise: Append "clearly" to every statement.
09:25:13 <kmc> your exercise is trivial
09:25:17 <monqy> clearly
09:25:39 <elliott> kmc: You failed!
09:25:44 <monqy> clearly
09:25:53 <kmc> do i at least win a goat
09:25:58 <elliott> kmc: No, clearly.
09:26:03 <shachaf> kmc would much rather have a goat than a car.
09:26:08 <kmc> it's true
09:26:19 -!- Guest554114 has changed nick to Guest554115.
09:26:22 <elliott> Goat-car.
09:26:23 <kmc> goats are cheaper
09:26:35 <kmc> http://www.goatclassifieds.com/PriceGraph.php
09:26:49 <shachaf> kmc: Don't they emit more CO₂, though?
09:26:55 <kmc> shachaf, per km?
09:26:56 <shachaf> DO YOU HATE THE ENVIRONMENT
09:27:04 <shachaf> Per year.
09:27:45 <shachaf> Also, goat registration looks expensive.
09:27:50 <shachaf> Way more than car registration.
09:27:58 <shachaf> You probably have to pay insurance too.
09:28:00 <kmc> I MUST HAVE RAINBOW PARENTHESES
09:28:27 <pikhq> Hmm. So I get home at 2:30.
09:28:30 <pikhq> Do I want to sleep?
09:28:41 <pikhq> Meh, not really.
09:29:16 <elliott> @time pikhq
09:29:17 <lambdabot> Local time for pikhq is Sat Jan 7 02:29:01 2012
09:29:36 <shachaf> @time
09:29:39 <lambdabot> Local time for shachaf is Sat Jan 7 12:29:20 2012
09:29:42 <shachaf> WRONG
09:29:46 <elliott> @time finland
09:30:53 <kmc> British Double Summertime would be a good name for a band
09:31:09 <elliott> So many band names, so few bands.
09:31:13 <kmc> ==
09:31:25 <kmc> is there a website where i can share my bandnames with prospective band-havers?
09:32:19 <pikhq> @time elliott
09:32:19 <lambdabot> Local time for elliott is 2012-01-07 09:32:03 +0000
09:32:26 <shachaf> kmc: And then pay you royalties?
09:32:28 <elliott> kmc: /dev/null
09:32:28 <pikhq> elliott: I presume you've been up?
09:32:40 <shachaf> Any band that picks a name using such a website isn't a band worth banding.
09:32:40 <elliott> pikhq: I woke up at 2012-01-07 10:00:00.
09:32:58 <kmc> i'm still waiting for a band named BADNESS 10,000
09:32:59 <pikhq> elliott: Impressive, considering that's in the future.
09:33:27 <pikhq> Unless somehow the UK's *not* on GMT right now?
09:33:37 <pikhq> (I thought daylight saving was the summer, so...)
09:33:48 <kmc> pikhq, maybe in the western hemisphere
09:34:31 <shachaf> I like how kmc accuses other people of being trolls.
09:34:36 <kmc> haha
09:34:38 <kmc> do i?
09:35:05 <shachaf> Don't you?
09:35:06 <shachaf> Greenwich Mean Time.
09:35:17 <shachaf> Apparently Greenwich isn't pronounced like Sandwich.
09:35:26 <shachaf> And apparently it's not moldy.
09:35:30 <shachaf> Nor mouldy.
09:35:45 <monqy> is it mouldey
09:35:47 <pikhq> Yeah, I have to work hard to get myself to do it right, but it's something like Gren-ich, IIRC.
09:35:58 <shachaf> pikhq: Are you going to Hac Boston?
09:36:15 <pikhq> shachaf: No, I am a pitifully broke college student and in Colorado.
09:36:31 <shachaf> kmc: You should buy a ticket for pikhq instead of for me.
09:36:40 <kmc> wait, i was going to do one of these things?
09:36:52 <shachaf> You weren't going to buy me a ticket? :-(
09:37:19 * shachaf will have to walk to Boston now.
09:41:06 <pikhq> Quite a walk, I imagine.
09:41:14 <pikhq> (where are you, anyways?)
09:41:18 <elliott> boston
09:41:55 <kmc> you should hitchhike
09:41:59 <pikhq> Oh, so more "hella-long ride on the T"
09:42:17 <shachaf> pikhq: California.
09:42:27 <shachaf> I *should* hitchhike!
09:42:30 <shachaf> That would be exciting.
09:42:34 <kmc> it would take a while
09:42:37 <shachaf> I've never hitchhiked a long distance.
09:42:49 <kmc> you can ask lexande about it
09:42:58 <kmc> he hitchhiked from sf to canada
09:43:02 <kmc> also from cambridge uk to paris
09:43:03 <shachaf> Who's lexande?
09:43:12 <elliott> He hitchhiked over the sea?
09:43:13 <kmc> a friend of mine since longtime
09:43:14 <kmc> he's in #cslounge sometime
09:43:16 <kmc> yes
09:43:18 <shachaf> Ah.
09:43:18 <kmc> yes he did
09:43:27 <elliott> My definition of "hitchhiking" is car-specific.
09:43:35 <elliott> Did he hitchhike in a car which then went on a ferry or something?
09:43:43 <kmc> a car which went on a train which went through a tunnel
09:43:50 <elliott> OK, I'll grant it.
09:43:50 <kmc> but what you said is also an option
09:43:52 <shachaf> I picked up a hitchhiker for a short distance once. My grandfather got very upset when he heard about that and told me that all hitchhikers are murderers.
09:44:07 <shachaf> Especially in the US.
09:44:10 <elliott> shachaf: At least you know how to become a murderer now.
09:44:19 <monqy> an especially murderer
09:44:24 <kmc> well in the US if you don't have your own car then you're pretty much a terrorist
09:44:29 <shachaf> elliott: Without even breaking any laws!
09:45:05 <pikhq> shachaf: I find that pretty amusing, considering we're heading down to 60s levels of violent crime.
09:45:35 <pikhq> And people hitchhiked all the time in the 60s, I'm led to understand.
09:46:05 <kmc> don't mind my attorney, he's just admiring the shape of your skull
09:46:22 <monqy> it is a very nice skull
09:46:41 <pikhq> Would make a very nice glass.
09:47:42 <itidus21> hitchhiking: trading a cheap or free ride and the convenience of a stranger with the risks of being robbed, beaten, raped, kidnapped, brainwashed or murdered
09:48:10 <monqy> stranger convenience
09:48:19 <monqy> it's part of the thrill
09:48:21 <kmc> yeah in the 60's the CIA was going around kidnapping and brainwashing people
09:48:32 <monqy> is hitchhiking addiction a thing
09:49:05 <monqy> kind of like skydiving or drugs but
09:49:09 <monqy> more cars??
09:49:28 <monqy> speaking of, is skydiving addiction a thing
09:49:33 <elliott> is sky a thing
09:50:00 <monqy> kind of like hitchhiking or drugs but
09:50:01 <monqy> more sky
09:50:04 <monqy> and diving??
09:50:05 <elliott> ah
09:50:08 <kmc> it's owned by rupert murdoch
09:50:23 <itidus21> monqy: the trouble is that some would say skydiving lacks any utility.. and they might be right
09:50:35 <monqy> i use skydiving to get to work
09:50:48 <pikhq> itidus21: Fun is a form of utility.
09:51:39 <monqy> i use fun to get to work
09:51:39 <elliott> 1440x900 is so much nicer than 1336x768
09:51:46 <kmc> haha
09:52:02 <elliott> mock me and my tiny screens will you
09:52:18 <kmc> it's just funny because i've been agonizing over that difference
09:52:30 <kmc> and decided it wasn't significant ;P
09:52:35 <elliott> you made the wrong choice
09:52:53 <elliott> like i'm always scrolling around and resizing things and shit on the smaller resolution
09:53:03 <elliott> and 1440x900 is just enough to make that irrelevant
09:53:07 <elliott> the higher dpi is nice too
09:53:13 <kmc> yeah
09:53:25 <shachaf> Why are you people using these tiny resolutions?
09:53:28 <kmc> i have a thinkpad x200s and i decided "upgrading" to the x220 would give me basically a slightly worse machine
09:53:35 <shachaf> 1920x1080 is, like, the bare minimum, man.
09:53:35 <elliott> shachaf: I used to think the same thing!
09:53:36 <kmc> except, i broke the lcd on my x200s :/
09:53:45 <elliott> then I got a computer which I can move about freely and put on my lap and shit without even thinking about it
09:53:54 <shachaf> elliott: I use one of those too.
09:53:55 -!- pikhq_ has joined.
09:53:55 <elliott> it's really liberating for some weird reason
09:54:02 <shachaf> 15.6", 1920x1080
09:54:06 <elliott> shachaf: "Without thinking about it" is a low threshold.
09:54:21 <shachaf> I don't think about it.
09:54:28 <pikhq_> elliott: Have you considered getting a 7 year old monitor? Like, 1920x1200?
09:54:29 <monqy> I have, what, 1680x1050? oops.
09:54:29 <shachaf> Maybe that just means I'm slow-witted.
09:54:40 <pikhq_> ... Says I from a 1440x900 monitor.
09:54:44 <elliott> It takes a lot more to move a 15.6" laptop than a lightweight ~13" laptop, even if you don't consciously think about it.
09:54:52 <kmc> thinking is hard
09:54:52 <elliott> pikhq_: That would be rather heavier than my computer.
09:54:57 <elliott> kmc: Agreed.
09:55:03 <shachaf> elliott: On the other hand this is my only computer.
09:55:09 <pikhq_> Leaving computer is hard
09:55:14 <elliott> shachaf: Me too. Well, no, there's the 1336x768 one.
09:55:23 <itidus21> leaving computers is NP hard
09:55:25 <shachaf> I also don't have an external monitor.
09:55:27 <elliott> pikhq_: Go to bed.
09:55:29 <elliott> shachaf: Me too.
09:55:29 <kmc> i have.. five machines hooked up in my room
09:55:35 <kmc> there are good reasons for each one to exist, i swear!
09:55:36 <elliott> My entire life is on this 13" display.
09:55:43 <pikhq_> elliott: NEIN
09:55:43 <elliott> OK, not entire life.
09:55:46 <elliott> But the parts that matter!!
09:56:01 <shachaf> kmc: Enumerate them.
09:56:09 <kmc> really
09:56:17 <fizzie> "1, 2, 3, 4, 5."
09:56:23 <shachaf> fizzie wins.
09:56:29 <elliott> kmc: Are the ThinkPad X-series machines nice, by the way?
09:56:37 <kmc> elliott, very nice
09:56:43 <elliott> ISTR disliking them for some reason when I looked into them a few years ago.
09:56:47 -!- pikhq has quit (Ping timeout: 260 seconds).
09:57:03 <shachaf> Istr. That's a name, isn't it?
09:57:23 <fizzie> It sounds like an assmbly mnemonic.
09:57:33 <elliott> Assmbly.
09:57:34 <shachaf> I think it's a book of the bible.
09:57:50 <kmc> laptop, wireless bridge, desktop, media server, laser cutter controller
09:58:26 <elliott> http://www.google.co.uk/search?client=safari&rls=en&q=Wireless+bridge&ie=UTF-8&oe=UTF-8&redir_esc=&ei=IBcIT_LAJ4vY8QPAnIyeAQ#client=safari&rls=en&q=Wireless+bridge&oe=UTF-8&redir_esc=&um=1&ie=UTF-8&hl=en&tbo=u&tbm=shop&source=og&sa=N&tab=wf
09:58:37 <elliott> How much crap can Google put in one URL?
09:58:38 <monqy> thanks google
09:58:49 <kmc> what are you getting at sir
09:58:58 <elliott> kmc: You have a computer without a good reason to be a computer.
09:58:59 <elliott> :p
09:59:10 <kmc> elliott, if I owned one of these I would consider it to be a computer
09:59:20 <elliott> kmc: I can disprove that.
09:59:28 <kmc> well, maybe they are dumber than i think
09:59:30 <elliott> There is no possible way one of those causes as much pain and upset as any computer does.
09:59:36 <elliott> Only a computer can do that.
09:59:41 <monqy> wireless bridges are real people so they can't be computers
09:59:45 <kmc> my wireless bridge "computer" provides very little pain and upset
09:59:53 <kmc> it's an old netbook running debian
09:59:59 <elliott> kmc: That just means you're so drowning in computer-related pain and upset you don't even feel it.
10:00:06 <elliott> Try throwing some out of the window.
10:00:11 <kmc> it's required basically zero maintenance since i set it up
10:00:15 <itidus21> from Gk. biblion "paper, scroll," the ordinary word for "book," originally a diminutive of byblos "Egyptian papyrus," possibly so called from Byblos (modern Jebeil, Lebanon), the name of the Phoenician port from which Egyptian papyrus was exported to Greece (cf. parchment). Or the place name might be from the Greek word, which then would be probably of Egyptian origin.
10:00:21 <kmc> yeah, you're right
10:00:29 <itidus21> "<shachaf> I think it's a book of the bible."
10:00:30 <kmc> the only way to be sure i'm free of computer-related pain is to replace it all with macs
10:00:37 <elliott> Heck no.
10:00:42 <elliott> That will approximately quadruple your pain.
10:00:47 <fizzie> elliott: I don't know, after you stick OpenWRT on one and start to break things on it a bit, I'm sure it can generate a respectable amount of pain, if not quite real-computer levels.
10:00:57 <elliott> fizzie: That's turning it into a minicomputer.
10:01:05 <kmc> hehe "minicomputer"
10:01:13 -!- pikhq has joined.
10:01:14 <elliott> You could also rip it apart and shove computer parts into it; that doesn't make the original thing a computer.
10:01:15 <kmc> yeah i'm running a vax emulator on my WRT54G
10:01:20 <elliott> kmc: Who isn't?
10:01:29 <shachaf> itidus21: ?
10:01:39 -!- pikhq_ has quit (Ping timeout: 244 seconds).
10:01:40 <itidus21> etymology of bible
10:01:40 <kmc> > map succ "vms"
10:01:41 <lambdabot> "wnt"
10:01:45 <elliott> Wnt.
10:01:45 <shachaf> Would you prefer "scroll of the bible"?
10:01:53 <kmc> how is bibble formed
10:01:57 <shachaf> kmc: HEY THAT ONE'S MINE
10:02:02 <itidus21> i was thinking "book of the book"
10:02:40 <shachaf> itidus21: In particular, a book of the third of the three books of the bible, which is known as "the writings".
10:02:42 <kmc> elliott, anyway, I already had the netbook, so using it thus cost me $0, whereas the devices you linked cost > $0
10:02:47 <kmc> and as i'm unemployed, my time has rather low value
10:03:09 <elliott> kmc: Ohh, you have an even better solution. Throw away *all* your computers, then you won't need the bridge thingy.
10:03:09 <shachaf> That latter sentence isn't really true.
10:03:15 <kmc> haha
10:04:03 <itidus21> one can always reference a book in the bible codex book
10:04:44 <shachaf> I forgot to mention that it was a scroll.
10:05:12 <kmc> but nobody objected to "laser cutter controller"...
10:05:18 <Vorpal> why would you need a bridge? What are you doing?
10:05:27 <Vorpal> kmc, you control a boat with a laser?
10:05:28 <Vorpal> how?
10:05:30 <kmc> accessing the internet
10:05:42 <elliott> kmc: Well, that sounds like it produces significantly more fun than any pain it could cause.
10:05:43 <Vorpal> kmc, well sure but usually most people don't need bridges to do so
10:05:49 <elliott> kmc: Do you ever just feed it a random bitstring to see what happens?
10:05:53 <kmc> no
10:05:57 <elliott> "Maybe the next thing it cuts... will be ME."
10:06:21 <shachaf> kmc: I hear elliott has a bridge to sell you.
10:06:29 <elliott> It's made out of @.
10:06:31 <kmc> Vorpal, my Internet connection is via roommates' wireless router
10:06:43 <Vorpal> kmc, so just connect by the wlan?
10:06:46 <kmc> several of those machines have no wireless hardware
10:06:52 <shachaf> Does kmc know what @ is?
10:06:58 <kmc> shachaf, some nethack shit
10:06:58 <elliott> Does anyone truly know what @ is?
10:06:59 <Vorpal> <kmc> but nobody objected to "laser cutter controller"... <-- please tell me this refers to the boat type known as cutter :/
10:07:03 <kmc> yes
10:07:05 <kmc> it's a boat
10:07:06 <elliott> Yeah, it's some nethack shit.
10:07:07 <kmc> i'm on a fucking boat
10:07:16 <elliott> kmc drives his boat with his computer on his boat.
10:07:22 <Vorpal> elliott, great!
10:07:30 <kmc> you may be interpreting the word "bridge" in a more precise technical sense than i meant
10:07:53 <shachaf> Transatlantic bridge.
10:07:55 <elliott> shachaf: Can you imagine going through life not knowing what @ is?
10:08:08 <shachaf> elliott: No. I cannot imagine it.
10:08:15 <shachaf> The suffering kmc must be undergoing.
10:08:18 <kmc> it is a Debian GNU/Linux machine with one wireless and one wired Ethernet interface, the former in Managed mode, serving DHCP and DNS on the latter, with NAT routing between the two
10:08:27 <elliott> kmc: One day you will be at peace.
10:08:31 <kmc> haha
10:08:37 <elliott> kmc: Peace of @.
10:08:53 <shachaf> elliott: You should write an @ tutorial.
10:08:56 <shachaf> Full of analogies.
10:09:01 <elliott> @ is like an @.
10:09:08 <elliott> The basic operations on @s are @ and @.
10:09:10 <elliott> @ : @ -> @
10:09:11 <shachaf> elliott: A-ha!
10:09:19 <elliott> @ : @
10:09:19 <shachaf> Now we know that what @ expands to starts with a vowel!
10:09:24 <shachaf> Or at least a glottal stop.
10:09:25 <elliott> shachaf: Um, dude.
10:09:31 <elliott> You don't know that.
10:09:34 <shachaf> "an @"
10:09:35 <elliott> It's meant to be an intentionally-bad tutorial.
10:09:39 <elliott> They're not necessarily well-written.
10:09:42 <elliott> Sheesh.
10:09:45 <shachaf> :-(
10:11:48 <kmc> hilarious
10:12:11 <elliott> kmc: Do you seriously not know what @ is?
10:12:17 <elliott> I understand it's cool to deny The Knowledge.
10:12:20 <kmc> yes
10:12:22 <kmc> srsly
10:12:26 <monqy> h
10:12:27 <monqy> how
10:12:31 <elliott> kmc: Okay. You know how computers suck?
10:12:40 <elliott> @ changes all that; with @, they only mostly suck.
10:12:46 <itidus21> apparently @ is "at"... but that would be presumptuous
10:12:53 <kmc> elliott, go on
10:12:59 <pikhq> kmc: @ is basically the embodiment of elliott's hubris.
10:13:04 <elliott> pikhq: No, that's you.
10:13:08 <pikhq> At least, it would be if it existed.
10:13:10 <monqy> @ is a miracle drug
10:13:14 -!- AnotherTest has joined.
10:13:16 <pikhq> *gasp* I don't exist!
10:13:21 -!- AnotherTest has left.
10:13:21 <pikhq> *disappears*
10:13:23 <elliott> AnotherTest: hi, does chocolate still contain sugar?
10:13:26 <elliott> aw
10:13:32 <elliott> kmc: You know how computers are all imperative and ugly and shit?
10:13:42 <elliott> And, like, buggy, and shit.
10:13:44 <elliott> @ changes all that!
10:13:48 <elliott> They're only mostly buggy.
10:14:00 <kmc> go on
10:14:07 <elliott> What, that not enough for you?
10:14:28 <shachaf> elliott: You're not very good at this.
10:14:41 <elliott> shachaf: I estimate that kmc currently harbours 0 negative thoughts about @.
10:15:46 <elliott> kmc: @ is an environment thingy.
10:15:58 <itidus21> shachaf: elliott was just imitating your use of "an @" i think
10:16:06 <elliott> kmc: Mostly consisting of a runtime system.
10:17:15 <itidus21> `pastelog an @
10:17:24 <itidus21> lol..
10:17:37 <elliott> 01:02:28 <MaskRay> is there any good tutorials/blogs on the Store comonad?
10:17:45 <elliott> shachaf: What is it with people and wanting Store comonad tutorials lately?
10:17:53 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.24714
10:18:07 <itidus21> hmm
10:18:34 <itidus21> can someone fix " `pastelog an @ " for me
10:18:42 <elliott> I have no idea why it doesn't work.
10:18:53 <itidus21> ok
10:19:02 <shachaf> `presentelog
10:19:07 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: presentelog: not found
10:19:16 <itidus21> it's probably not caused by a @
10:19:23 <shachaf> `pastelog deep breath
10:19:36 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22681
10:20:06 <shachaf> `pastelog breath
10:20:14 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19658
10:21:29 <shachaf> How do you just look at the logs?
10:21:38 <elliott> http://codu.org/logs/_esoteric/
10:21:47 <itidus21> lol @ <CakeProphet> how does mouthbreathing make your teeth crowded.
10:21:51 <shachaf> How do you search them online?
10:22:19 <shachaf> `pastelog inhale
10:22:26 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.21914
10:22:27 <itidus21> i think what shachaf means is, how to overcome [too many lines; stopping] ?
10:23:07 <elliott> You can't.
10:23:13 <elliott> It's there to stop a timeout.
10:23:15 <shachaf> itidus21: Well, ideally I don't want my search to be logged publicly.
10:23:19 <elliott> Tough.
10:23:22 <itidus21> ohh
10:23:23 <itidus21> lol
10:23:27 <elliott> Download the logs yourself if you must.
10:23:36 * shachaf looked up: how to search esoteric logs online
10:23:42 <elliott> You can't.
10:23:50 * shachaf looked up: esoteric goats
10:23:55 * elliott goat
10:24:07 <shachaf> Anyway, I think kmc has lost all interest in @.
10:24:15 <shachaf> Just like you, elliott.
10:24:28 <elliott> :(
10:24:32 <itidus21> `pastelog @
10:24:36 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3499
10:24:55 <elliott> 2003-07-25.txt:03:21:16: -!- andreou changed the modes of #esoteric: +b *!*@bespin.org
10:24:55 <elliott> 2003-07-25.txt:03:25:04: -!- andreou changed the modes of #esoteric: +b clog!*@*
10:24:55 <elliott> 2003-07-26.txt:03:28:36: <andreou> HATE HATE SYSAD@$%!$%!#$!@#$@#NO CARRIER
10:24:56 <shachaf> SamB used to be in here?
10:24:57 <elliott> What.
10:25:01 <elliott> shachaf: Yes.
10:25:05 <elliott> Isn't he a #python guy?
10:25:11 <elliott> I think we had a lot of #python guys in the olden day.s
10:25:12 <elliott> days.
10:25:13 <shachaf> He is?
10:25:17 <elliott> Not necessarily.
10:25:20 <elliott> That was just a random guess.
10:25:21 <shachaf> He's certainly a #haskell person.
10:25:24 <shachaf> Or was.
10:25:24 <elliott> Oh.
10:25:25 <shachaf> SamB_XP
10:25:28 <elliott> Probably just that, then.
10:25:35 <elliott> edwardk has been in here a few times too.
10:25:39 <shachaf> And he's British, so you probably know him.
10:25:43 <elliott> Before he MONOPOLISED THE HASKELLOSPHERE.
10:27:23 <itidus21> `pastelog haskell
10:27:27 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.13599
10:27:52 <elliott> 2005-07-26.txt:07:13:31: <int-e> it's written in haskell, I compiled it using ghc, usage is bf2c < brainfuck-source > c-source. no options.
10:27:53 <elliott> Oh!
10:27:57 <elliott> I wonder if _he_ is the author of that compiler.
10:29:20 <elliott> 12:14:24: -!- andreou has joined #esoteric.
10:29:21 <elliott> 12:20:35: <andreou> erm
10:29:21 <elliott> 12:20:43: <andreou> anyone has halflife/counterstrike serial or keygen?
10:29:22 <elliott> 12:20:46: <andreou> pleeeaaazeeee ;p
10:29:24 <elliott> 12:22:13: -!- andreou has quit ().
10:29:26 <elliott> shachaf: Did you know our channel used to be great?
10:29:53 <shachaf> elliott: You think you've got it bad?
10:29:57 <shachaf> Try #nethack
10:30:30 <Vorpal> shachaf, right now or in general?
10:30:36 <elliott> shachaf: To fully appreciate my statement, /cs info #esoteric and examine the "founder" field.
10:30:58 <Vorpal> elliott, wow
10:31:01 <shachaf> 13:30 -!- Irssi: Unknown command: cs
10:31:08 <elliott> /msg chanserv
10:31:11 <shachaf> Yes, yes.
10:31:11 <Vorpal> shachaf, try /msg chanserv
10:31:11 <kmc> womp womp
10:31:18 <kmc> shachaf, are you sick of #haskell too
10:31:36 <shachaf> kmc: Sometimes.
10:31:44 <shachaf> Not enough to leave it, so far.
10:31:54 <kmc> what are your complaints
10:31:56 <monqy> don't do /msg chanserv
10:32:07 <elliott> It's not going to get any better unless moderation steps up.
10:32:08 <monqy> do /^msg chanserv
10:32:15 <olsner> monqy: what's the difference?
10:32:16 <monqy> but really make an alias for it
10:32:27 <monqy> /^msg doesn't open a new window
10:32:45 <shachaf> But what if I want a new window?
10:32:49 <monqy> then you're bad
10:33:05 <shachaf> kmc: It's full of people who don't know what they're talking about talking to other people who don't know what they're talking about.
10:33:07 <itidus21> `pastelog
10:33:11 <kmc> haha
10:33:14 <olsner> monqy: that's in irssi? ^msg is an unknown command according to my client
10:33:17 <shachaf> Spreading general nonsense back and forth with very little signal.
10:33:20 <monqy> olsner: yeah
10:33:22 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19986
10:33:25 <elliott> OMFG THIS GUY KEEPS PROPOSING
10:33:30 <elliott> "READABILITY IMPROVEMENTS"
10:33:31 <olsner> in any case, chanserv didn't respond anyway
10:33:35 <elliott> THAT INEVITABLY MISUSE BULLETED LISTS TERRIBLY
10:33:36 <elliott> LIKE
10:33:43 <shachaf> That's not always the case, but when the channel reaches a critical mass of nonsense it gets pretty annoying.
10:33:44 <itidus21> what the
10:33:56 <kmc> shachaf, it doesn't seem that bad... any question will get about 8 answers, 6 of which are correct / useful
10:34:02 <itidus21> what the fuck does that mean :D
10:34:10 <shachaf> There's also the general IRC thing where people ask the same questions over and over and over again.
10:34:12 <elliott> shachaf: http://ompldr.org/vYzQ2NA
10:34:16 <elliott> Look at this shit!
10:34:23 <elliott> SOMEONE TEACH THIS GUY WHAT BULLETED LISTS ARE FOR
10:34:30 <shachaf> And people who are bad at asking questions are overrepresented in terms of channel volume.
10:34:46 <kmc> shachaf, wouldn't it be great if someone made a wiki page with the frequently-asked questions and standard answers, which can be edited and improved
10:34:51 * kmc not bitter, I swear
10:35:06 <shachaf> kmc: I thoroughly approve of your efforts!
10:35:11 <elliott> kmc: And crowd-sourced it, and gave incentives for doing so.
10:35:11 <kmc> thanks shachaf
10:35:14 <shachaf> I even made some comments once, if I remember correctly.
10:35:22 <elliott> And called it, I dunno, Fencepost Error.
10:35:23 <kmc> elliott, what incentives do you propose
10:35:25 <shachaf> Going so far as to edit it myself is, y'know...
10:35:26 <elliott> Segmentation Fault.
10:35:30 <kmc> lolz i get it
10:35:42 <shachaf> General Protection Fault
10:36:32 <elliott> A nice way to do it might be basically having a big string -> SO answer mapping.
10:36:48 <elliott> The idea being that you cherry-pick well-worded questions and good answers and can just grep it whenever a predictable question comes up.
10:36:50 <kmc> elliott, if I get enough points on Stack Overflow, maybe Joel Spolsky will hire me!!!!!!!!!!!!!!!!
10:36:53 <kmc> !!!!!!!!!!!!!!!!
10:36:58 <kmc> !!!!!!!!!!!!!!!123
10:36:59 <elliott> kmc: Then you'd have to work for Joel Spolsky.
10:37:13 <itidus21> `pastelog <
10:37:16 <kmc> elliott, he understands that I value free soda higher than respect or a paycheck
10:37:17 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20792
10:37:23 <elliott> kmc: Hmm... me too.
10:37:37 <shachaf> elliott: A person in another channel I'm in is StackOverflow user #13
10:37:46 <kmc> shachaf, wow, you're internet famous
10:37:50 <elliott> shachaf: Chris Jester-Young is, like, the worst, man.
10:37:51 <shachaf> kmc: TOTALLY
10:37:58 <shachaf> elliott: Why?
10:38:04 <elliott> shachaf: I dunno, I just keyed in the number.
10:38:09 <shachaf> ...This channel happens to be #stackoverflow.
10:38:10 <olsner> wtf, chanserv's response ended up in the #haskell window
10:38:29 <elliott> olsner: chanserv responses go wherever :P
10:38:33 <elliott> since they're notices
10:38:52 <Vorpal> olsner, in many clients notices ends up in a channel where that person who sent it happens to be
10:38:55 <Vorpal> kind of stupid
10:38:57 <elliott> shachaf: Well *I'm* Stack Overflow user #1097181! Take that!
10:39:04 <Vorpal> IMO they should go into a separate notice tab
10:39:05 <Vorpal> or suc
10:39:07 <Vorpal> such*
10:39:14 <olsner> since I'm not reading anything that happens in #haskell, it was just not very useful for the response to end up there
10:39:25 <Vorpal> I know the issue
10:39:32 <itidus21> 2003-01-19.txt:06:09:05: <lament> yay, nothing at all.
10:39:39 <shachaf> elliott: NOT AS COOL AS STACKOVERFLOW USER "MOMAN"
10:39:41 <olsner> but indeed ChanServ is in #haskell and not in any other freenode channel I'm in
10:40:59 <itidus21> `pastelog http
10:41:03 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.24538
10:42:24 <kmc> shachaf, anyway I think the cluefulness of the average #haskell answer is pretty high
10:42:35 <kmc> the problem is more than everyone has their own pet way of explaining everything
10:42:41 <kmc> and they trip all over each other trying to do it
10:42:48 <itidus21> i am quite good at devising `pastelog queries
10:42:55 <kmc> and then get derailed in endless arguments over terminology and teaching strategy
10:43:00 <itidus21> its on my CV
10:43:00 <kmc> of course this is what i did too
10:43:03 <kmc> but i got sick of it
10:43:37 <shachaf> kmc: That's part of the problem, I agree.
10:43:49 <itidus21> :o
10:44:02 <shachaf> Maybe I just call things that aren't my pet theory "nonsense".
10:44:08 <itidus21> `pastelog changed the topic
10:44:13 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11439
10:44:30 <shachaf> But I don't think it's just that.
10:44:38 <kmc> also the answers are skewed by a heavy dose of politics
10:44:46 <shachaf> Politics?
10:44:56 <kmc> "you don't really want regex / an IDE / a debugger, those things are for Java weenies, that's why we don't have them"
10:45:12 <elliott> I think one problem with #haskell is that there are a lot of well-intentioned good Haskell programmers who aren't any good at explaining things or maybe hold some weird unpopular Haskell-related view (and might not even know it's weird), and if they engage a newbie enough at an early stage they kinda work that worldview into their subsequent questions, and so everyone gets really confused trying to decode their warped newbiespeak.
10:45:12 <kallisti> elliott: hi
10:45:18 <elliott> But I could be imagining that.
10:45:25 <kallisti> elliott: no that's the impression I've gotten.
10:45:30 <kmc> yeah
10:45:49 <kmc> elliott, do you think the monad tutorial analogies are an example of that?
10:45:55 <elliott> kmc: definitely
10:46:34 <elliott> Occasionally someone asks "what are monads?" and people go into the standard "keep reading LYAH" talk but someone says "I wrote a tutorial about monads: <X>" and the newbie goes "oh, thanks, I'll read that!" because it sounds more concrete.
10:46:46 <kmc> right
10:46:47 <elliott> I don't know how you could solve that other than punishing linking monad tutorials, which would probably be unpopular.
10:47:07 <elliott> Basically we need to divide people into questioners and answerers and ban answerers who step out of the party line. :p
10:47:20 <kmc> also there is too much hype about monads, so people want to read A Monad Tutorial rather than just some chapter in the book
10:47:27 <kmc> and they want to read it way too early
10:48:04 <elliott> It'll be really great when we switch to a different primary system for modelling effects and can finally have people not ask about monads any more.
10:48:32 <kmc> i think most of the people who claim to "know Haskell" are very far from being able to write large, practical software in Haskell
10:48:50 <elliott> Anyway, I think #haskell would be basically impossible to police effectively without coming across as fascist, because it's essentially an undistinguished muddle where everyone gets a completely equal voice, and there's a heavy IRC culture of only banning for outright abusive behaviour.
10:48:55 <kmc> and that most of the people who can do the latter don't hang out on IRC
10:49:05 <kmc> that's probably a jerk / elitist thing for me to say, but there you go
10:49:10 <elliott> It's just too large to rely on the fact that most people active are experienced.
10:49:37 <kmc> elliott, so what if you started a new channel, #haskell-fascists, with explicit policies
10:49:39 <elliott> kmc: Hey, my version of that would probably include names. Although that's also the reason I wouldn't say it.
10:50:06 <itidus21> blame allocation is always difficult
10:50:10 <elliott> And yes, a spinoff with more tightly enforced rules would be nice, but (a) nobody will go there, because it's not #haskell; (b) it'd be really hard to gain momentum — "go here and we'll be dicks about your answering!".
10:50:34 <kmc> well the hope is to lure the burnt-out veterans
10:50:40 <kmc> first
10:51:05 * shachaf would join such a channel.
10:51:05 <kmc> but i don't think it would work
10:51:10 <elliott> kmc: Could you stop it devolving into veteran chit-chat before it comes useful? It's one of the cliquiest initial seed groups you could pick, even if it's the best from a long-run POV.
10:51:11 <kallisti> elliott: it may not even be a good idea anyway. I don't think it would be a place with a good channel culture.
10:51:12 <shachaf> Of course, with me, that's not saying much.
10:51:35 <kmc> i think most people just don't care that much, because they have better things to do with their time anyway
10:51:55 <elliott> kallisti: #haskell doesn't really have a culture any more, beyond the constant bouts of regulars joking.
10:51:57 <kmc> i really don't
10:52:03 -!- Phantom_Hoover has joined.
10:52:09 <elliott> When you reach a certain mass you have to be utilitarian about what the channel is trying to achieve, and it's not social.
10:52:15 <itidus21> i think one big problem is the internet
10:52:16 <kmc> if i can keep helping people learn haskell with low commitment and low stress to me
10:52:18 <kmc> then i wanna keep doing that
10:52:25 <itidus21> the internet is surely bad for haskell
10:52:36 <elliott> Surely.
10:52:36 <shachaf> I sometimes wonder what brings some of the people in #haskell to #haskell.
10:52:47 <itidus21> haskell programmers probably are best left to code in relative isolation
10:52:53 <itidus21> or at workplaces
10:53:14 <kmc> itidus21, on the contrary, I think #haskell is essential because they don't fucking write down all the important shit you need to know
10:53:24 <kallisti> elliott: I think transmitting some minor misunderstandings through a question-answer method of learning are to be expected. This isn't a phenomenon unique to Haskell, but it may be more problematic because there's a lot of information to be wrong about.
10:53:47 <shachaf> kmc: Except for over and over and over again in IRC-sized snippets.
10:53:48 <kallisti> elliott: I get plenty of incorrect information from people on #perl
10:53:49 <elliott> kallisti: It's not minor understandings, it's that almost every question turns into a definitions debate.
10:53:58 <kallisti> oh, I see.
10:54:01 <itidus21> kmc: the trouble here is that most people learn regular languages by buying books at a bookstore, bringing it home.. and doing it
10:54:07 <elliott> Which would be OK, if anyone ever conceded, but they don't, because everyone thinks they're #1 enlightened Haskell thinker.
10:54:09 <kallisti> that's happened once with me on #perl as well. it was silly.
10:54:15 <itidus21> or borrowing library books
10:54:19 <kmc> how to write Haskell code: 1) write some code 2) shit don't work 3) lurk #haskell for two years until you see an off-hand description of the thing you are missing
10:54:36 * kallisti is #1 enlightened Haskell thinker.
10:54:38 <itidus21> im sorry to bring this to light..
10:54:42 <elliott> kmc: Anyway, I think the situation is simply that IRC can't support effective support communities beyond a certain size.
10:54:47 <itidus21> but irc is not good for learning something
10:54:54 <kmc> yeah, and LYAH + RWH is still maybe half of what you need to know, imo
10:54:55 <kallisti> it's helpful sometimes.
10:55:06 <elliott> It relies essentially on human intervention to function correctly, but that's impossible beyond a certain volume, and the culture is biased against it.
10:55:06 <Phantom_Hoover> <elliott> When you reach a certain mass you have to be utilitarian about what the channel is trying to achieve, and it's not social.
10:55:10 <Phantom_Hoover> Ooh, metadiscussion.
10:55:14 <elliott> Phantom_Hoover: About #haskell.
10:55:38 <elliott> kmc: A real-time format optimised for discussion/learning would be an interesting thing.
10:55:50 <kmc> yeah
10:56:01 <elliott> I think SO handles the long-form Q&A stuff perfectly, but obviously its "chat" feature is just IRC with editing and Markdown, so that's worthless.
10:56:02 <kallisti> we could call it "IRC but with more bots"
10:56:13 <itidus21> the false association between haskell and the internet
10:56:21 <itidus21> i think this creates a lot of problems
10:56:25 <elliott> kallisti: I think you really need something like separate discussions.
10:56:37 <elliott> A newbie asking a question should have their answer detached from the monad tutorial jokes going on concurrently.
10:56:52 <itidus21> the usual way to learn is to get a poorly written book on a topic.. read it.. go off halfcocked
10:57:12 <itidus21> and then get corrected by people and taught again, more painfullly
10:57:27 -!- Taneb has joined.
10:57:31 * elliott 's usual method of language learning is reading half a tutorial, getting bored, and then returning a year later to find out he can code competently in the language.
10:57:37 <elliott> Then it's the long haul of learning all the APIs.
10:57:43 <kmc> yeah
10:57:48 <itidus21> tutorials are dependant on the internet
10:58:08 <itidus21> maybe the internet is good for learning...... maybe
10:58:09 <elliott> The cycle is a bit longer with Haskell :)
10:58:09 -!- Ngevd has quit (Read error: Connection reset by peer).
10:58:12 <kmc> elliott, that works when the language is just new syntax for another language you already know
10:58:26 <kallisti> elliott: hmmm yes that' a good idea. With a good interface it would be feasible.
10:58:35 <elliott> kmc: Yeah, it's not a general-case thing. But it did get me started with Haskell.
10:59:03 <elliott> I already had knowledge of Scheme and such, so half of YAHT + later half of LYAH were enough to brew into a basic working knowledge.
10:59:27 <elliott> I'm not convinced you can teach Haskell from the bottom-up.
10:59:33 <itidus21> i think the reading a book and doing exercises can teach 80% of something.. and then irc could teach that last 20%
10:59:35 <elliott> Not to someone who already knows a language.
10:59:41 <elliott> The temptation to analogise is just too much.
10:59:47 * kallisti doesn't remember what he read to understand monads.
10:59:53 <kmc> we need some sort of brainwashing drug
11:00:30 <itidus21> elliott: analogizing isn't that damaging..
11:00:39 <Phantom_Hoover> itidus21, it is with Haskell.
11:00:45 <kallisti> ..the Haskell cult is seeking a brainwashing drug to indoctrinate their fanboys. I knew it!
11:00:53 <elliott> To be honest, just banning chat outright would probably make #haskell better than it is, but it'd be stifling.
11:01:03 <kmc> what do you mean by 'chat'
11:01:05 <Phantom_Hoover> You don't know Haskell, so you don't know the nature of the problem.
11:01:39 <elliott> kmc: Up to the op's whim, of course :P But broadly "anything not in the process of furthering an actual question or discussion".
11:01:45 -!- nooga has joined.
11:01:46 <Sgeo> Clearly, itidus21 is a burrito.
11:01:53 <kallisti> itidus21: I think the problem in this case is a lack of easy to find literature that corresponds to exactly what you need to know.'
11:01:56 <kmc> i really like that people in #haskell will talk about the language without having some concrete question at hand
11:02:04 <kmc> interesting stuff comes out of that discussion
11:02:12 <elliott> Yes, that's why I said it'd be stifling.
11:02:26 <kmc> the endless injokes (like the one Sgeo just made) are probably a group-identity thing
11:02:35 <itidus21> i think its well meaning but misguided views about the learning process.. you can't just drop analogies
11:02:39 <kmc> Haskell is the cool kids club in programming, of course
11:02:41 <elliott> I think you could solve a good chunk of the issues #haskell has simply by having a discussion organisation system.
11:02:43 <itidus21> its like trying to drop subvocalization in order to speed read
11:02:47 <kmc> and so we all want to indicate we're in the club
11:03:02 <elliott> The problem of discussions being relevant to each other is less than the problem of all discussions being mushed together into one gigantic stream.
11:03:03 -!- Taneb has quit (Ping timeout: 252 seconds).
11:03:23 <elliott> kmc: I mostly just do it for cheap jokes.
11:03:40 <elliott> I don't really want to be thought of as a Haskell programmer, although that probably doesn't stop anyone.
11:03:48 <kmc> elliott, you're special
11:04:01 <elliott> kmc: You forgot shachaf! He also does it for the cheap jokes.
11:04:10 <kmc> shachaf is also special
11:04:16 <elliott> #haskell-special
11:04:19 <kmc> yes
11:04:23 <kmc> was about to say that
11:04:41 <kallisti> "functor? I 'ardly knew 'er."
11:05:07 * kallisti good joke. original.
11:05:15 <itidus21> i admit that there should be a feeling that they are going down a rabbit hole as a world of counter-intuitive mathematical concepts descends upon them... but even then i think they are guided by analogy
11:05:31 <Sgeo> counter-intuitive?
11:05:36 <kmc> mathematical?
11:05:48 <shachaf> Wait, I'm special?
11:05:50 * shachaf wasn't following.
11:05:52 <elliott> kmc: Now would be a good time to note that itidus21 doesn't know a single lick of Haskell.
11:06:00 <itidus21> farmers usually don't know math
11:06:01 <kmc> i gathered as much
11:06:11 * kallisti esteemed member of joke-clique
11:06:13 <kmc> itidus21 seems a bit like zzo38 to me
11:06:16 <kallisti> joklique
11:06:18 <kmc> from small info
11:06:20 <itidus21> that is because you have to basically sit at a table for years before it can occur to you
11:06:28 <itidus21> it is not intuitive
11:06:32 <elliott> kmc: What, you don't think zzo38 knows a lot?
11:06:42 <kmc> no, he clearly does
11:06:52 <elliott> He certainly does, it's just that he performs a completely different function on that knowledge to everyone else in the universe.
11:07:24 <kmc> zzo38 seems to know Haskell pretty well
11:07:33 <kmc> well enough to identify all the ways it's unlike INFORM 7 or Magic: The Gathering
11:07:47 <elliott> :D
11:08:02 <elliott> Have you read one of his Haskell programs?
11:08:08 <kallisti> zzo38 is my best #esoteric friend.
11:08:11 <elliott> !logs
11:09:45 <itidus21> i don't really know why hilbert cared about halting problem.. i don't know why turing and church cared about decision problem.. i don't know what neumann was after either
11:10:22 * Sgeo blinks
11:10:29 <itidus21> in general, i don't know what the purpose of computation is
11:10:47 <elliott> kmc: See? #esoteric is the bets
11:10:48 <elliott> best.
11:10:49 <kmc> dude, what if we're, like, all a computer, man
11:10:53 <itidus21> and how i could convince a child why it's better than candy
11:11:16 * kallisti opens up emacs. "It's time... to make portal chess happen."
11:11:25 * kallisti is doing it. He's making it happen.
11:11:25 <itidus21> is it all just about making slave machines?
11:11:30 * Sgeo thinks "It's interesting" is a sufficient answer to why someone would be interested in a mathematical subject.
11:11:33 <itidus21> because we're lazy? :D
11:12:00 <elliott> kmc: If this darn log download wasn't going so slowly you'd have a wonderful zzoskell program right now.
11:12:07 <kmc> haha
11:12:31 <Phantom_Hoover> kallisti, do continuous chess and we won't hate you any more.
11:13:03 <kallisti> Phantom_Hoover: Sorry I don't feed off of the esteem given to me by peers. :>
11:13:11 <kallisti> also how would you even do that.
11:13:20 <kallisti> floating point numbers? ha. ha. ha.
11:13:37 <Phantom_Hoover> Coq, like I said.
11:13:39 <kmc> gonna sleep, ttyl
11:13:48 <elliott> kmc: But the log download just finished!
11:13:51 <kallisti> lol
11:14:00 <kallisti> kmc: good night, sir.
11:14:03 <kmc> 'night
11:14:33 <elliott> kmc: http://sprunge.us/bCgV
11:14:34 <kallisti> Phantom_Hoover: anyway, portal chess is a much better game than continuous chess.
11:14:39 <elliott> Note the consistent use of whitespace.
11:15:17 <Phantom_Hoover> I feel a little sick.
11:15:26 <elliott> Phantom_Hoover: It is the Scottish Illness.
11:16:01 <kallisti> Phantom_Hoover: did you ever give continuous chess a consistent, sane set of rules that are easy to play and decidable?
11:16:16 <Phantom_Hoover> FSVO 'easy to play' and 'decidable'.
11:16:16 <elliott> kallisti: Two of those principles go directly against the spirit of continuous chess.
11:16:25 <kallisti> hmmmm. sane , decidable?
11:16:34 <kallisti> rules?
11:16:37 <kallisti> easy?
11:16:40 <kallisti> play?
11:16:48 <Phantom_Hoover> Not decidable, but that's not a problem for Coq.
11:17:01 <Phantom_Hoover> You give it the proof that your move is correct.
11:17:47 <itidus21> if we say that the parts and the composites are both classed as objects, and that we can only perform operations on objects, and that all operations have equal weight, then there is the tradeoff that group operations are faster but clumsier
11:17:51 <itidus21> something like that
11:18:21 <itidus21> i dunno what this means
11:18:25 <kallisti> me neither.
11:18:56 <itidus21> uh.. if the operation on a ball is throwing
11:19:17 <kallisti> elliott: uh this is probably a really dumb question. But how did I get a module structure where there's X and X.Y
11:19:18 <itidus21> compared to uh.. moving each individual molecule of the ball
11:19:24 <kallisti> do I just make X.hs and X/Y.hs ?
11:19:27 <elliott> kallisti: ...yes
11:24:04 <itidus21> `pastelog terminal
11:24:23 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11767
11:24:52 <itidus21> `pastelog itidus21
11:24:59 <olsner> `quote
11:25:11 <HackEgo> 71) <Madelon> I want to read about Paris in the period 1900-1914 <Madelon> not about the sexual preferences of a bunch of writers >.>
11:25:12 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5623
11:25:28 <olsner> `quote
11:25:29 <HackEgo> 680) <yrlnry> I personally use while ("Cogito, ergo sum") { ... } because since that is a priori true, it is true in all possible universes, and therefore ensures maximum portability.
11:25:31 <elliott> `delquote 71
11:25:35 <HackEgo> ​*poof* <Madelon> I want to read about Paris in the period 1900-1914 <Madelon> not about the sexual preferences of a bunch of writers >.>
11:25:39 <olsner> `quote
11:25:39 <olsner> `quote
11:25:40 <olsner> `quote
11:25:46 <HackEgo> 112) <alise> use "grep --crazy"
11:26:44 <HackEgo> 306) <fungot> Phantom_Hoover: mutation is often considerably harder for both humans and compilers can analyze it much more difficult' part that induces bloody vomit... huh....intriguing
11:26:44 <HackEgo> 315) <ais523> elliott: hey, thinking's easier than using the Internet
11:27:53 <olsner> heh, fungot really has the right idea about mutation :)
11:27:53 <fungot> olsner: you really wish your side.
11:29:50 <Sgeo> ...and fungot just reminded me of a terrible book I read when I was young
11:29:50 <fungot> Sgeo: really, it is a free card in your sylladex. she is holding. it appears the red glass. you are starting to get agitated about
11:30:29 -!- elliott has quit (Remote host closed the connection).
11:30:47 <Sgeo> http://www.amazon.com/Wishing-Well-Making-Your-Every/dp/0786884738/ref=sr_1_14?ie=UTF8&qid=1325935808&sr=8-14
11:30:52 <Sgeo> I lapped it up when I was a kid
11:31:09 <Phantom_Hoover> Along with lies from that terrible Ian Stewart.
11:31:46 <itidus21> i was wiki'ing io and found http://en.wikipedia.org/wiki/Io_%28programming_language%29
11:31:56 <itidus21> looks curious
11:33:19 <Sgeo> Phantom_Hoover, am I not allowed to rant about an ending of an authors book without it being perceived as a slight against the author?
11:33:55 <kallisti> hmmm, interestingly I think portal chess pieces keep the same relative ordering of importance as they do in traditional chess
11:34:01 <kallisti> ah, no, the queen is lower than the two rooks
11:34:32 <itidus21> and someone on the discussion page of Io made some other wiki contribution "04:06, 27 May 2005 (diff | hist) Esoteric programming language ‎ (→External links: added link to esolang wiki) "
11:34:41 <itidus21> small world
11:34:59 <kallisti> itidus21: I see you've discovered io
11:35:30 <itidus21> kallisti: yes i explained such quite formally
11:35:51 <itidus21> but i guess what i left out is i was looking for input/output
11:39:25 -!- cheater has joined.
11:40:23 <itidus21> the esolang homepage has been spammed again.. since i dont know how often this happens not sure of the urgency of announcing such
11:41:22 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com).
11:47:24 -!- cheater has quit (Ping timeout: 240 seconds).
11:48:45 -!- cheater has joined.
11:51:01 <kallisti> :t generate
11:51:02 <lambdabot> Not in scope: `generate'
11:51:13 <kallisti> @hoogle generate
11:51:14 <lambdabot> Graphics.Rendering.OpenGL.GL.Hints GenerateMipmap :: HintTarget
11:51:14 <lambdabot> Graphics.Rendering.OpenGL.GL.Texturing.Parameters generateMipmap :: TextureTarget -> StateVar Capability
11:51:14 <lambdabot> Graphics.Rendering.OpenGL.GLU.Quadrics GenerateTextureCoordinates :: QuadricTexture
12:00:00 <kallisti> is there a name for non-pawn chess pieces
12:00:32 <kallisti> oh they're just called "pieces"
12:00:35 <kallisti> and pawns are called pawns.
12:02:21 <fizzie> Down with the arbitrary piece class divisions.
12:02:44 <itidus21> I am not a piece, I am a human being!
12:03:52 <fizzie> Here, have some of PWP's pseudo-philosophy-bullshit on the topic of chess pieces on an unexpanded VIC-20: http://www.youtube.com/watch?v=O19SNCIf1rk -- four kilobytes should be enough for everyone, right?
12:04:29 * kallisti is trying to figure out how to use records in a way that's not ugly
12:04:30 <fizzie> This one sadly I think lacks the "speech synthesizer".
12:05:17 <kallisti> @hoogle (//)
12:05:17 <lambdabot> Data.Array.IArray (//) :: (IArray a e, Ix i) => a i e -> [(i, e)] -> a i e
12:05:17 <lambdabot> Data.Array (//) :: Ix i => Array i e -> [(i, e)] -> Array i e
12:05:56 -!- Taneb has joined.
12:07:05 <itidus21> thats pretty cool
12:07:12 <Taneb> Hello
12:09:51 -!- oklopol has joined.
12:12:39 <itidus21> pawn = ?. board = ?. death = ?. ? = ?.
12:13:04 <Taneb> > '?' == '?'
12:13:05 <lambdabot> True
12:14:19 <itidus21> ? <- board -> ?
12:14:52 <itidus21> board <- board -> board ?
12:15:09 <itidus21> ah screw it
12:15:14 <monqy> board
12:15:40 <itidus21> infinity <- board -> infinity ?
12:15:54 -!- azaq23 has joined.
12:15:55 <fizzie>
12:16:13 <itidus21> the trouble is it goes into 2 dimensions..
12:16:26 <itidus21> infinity <- board -> infinity ? !
12:16:44 <itidus21> infinity <- board -> infinity !
12:17:09 <itidus21> infinity X board X infinity !
12:17:09 <fizzie> The board is just 6x6 in the bubbles. :/
12:18:03 <itidus21> ! ▒ X infinity !
12:19:16 <itidus21> black pawn > white pawn?; knight > pawn?; queen or king(?) > knight?
12:19:31 <itidus21> black pawn = white pawn!; knight = pawn!; queen or king(?) = knight!
12:20:17 -!- Phantom___Hoover has joined.
12:20:57 <Phantom___Hoover> I had some continuous chess thoughts which I have since forgotten
12:21:12 <Patashu> I saw a continuous chess writeup once on chessvariants
12:21:42 <Phantom___Hoover> I saw that; it's a pale shadow of true continuous chess.
12:21:51 <itidus21> lol... pawn + hand hand = pawn with hands
12:21:58 <fizzie> ▒ ⨯ ∞ and ♟♞♝♜♛♚♙♘♗♖♕♔ and so on; Unicode power.
12:22:05 -!- Taneb has quit (Ping timeout: 240 seconds).
12:22:11 <itidus21> pawn with hands > pawn !
12:22:20 <Patashu> wow
12:22:22 <itidus21> pawn with hands > king !!
12:22:24 <Patashu> those all work in my current font!
12:22:33 <Patashu> which is... fixedsys excelsior!
12:23:00 <fizzie> Patashu: The chesspieces are in the old-and-well-established "miscellaneous symbols" block.
12:23:30 <Phantom___Hoover> esoteric
12:23:32 <itidus21> !!! 4 pawns with hands > pyramid eye symbol !!!
12:24:22 <Phantom___Hoover> Anyway, the chessvariants continuous chess is merely space-continuous.
12:25:54 <itidus21> what am i? what is the world? what is death? what is what? ... what is beyond the board? infinity! are black pawns better than white pawns? are knights better than pawns? are kings better than knights?
12:26:15 <fizzie> What have I done.
12:27:07 -!- monqy has quit (Quit: hello).
12:27:49 <itidus21> black pawns are equal to white pawns! knights are equal to pawns! kings are equal to knights! pawns with hands are better than pawns. pawns with hands are better than kings. together, pawns with hands are unsurpassed.
12:28:04 <itidus21> thats my translation
12:30:20 <itidus21> the matrix of chess :P
12:31:43 <itidus21> the fact that i could interpret all that without any text is kind of cool
12:31:50 <itidus21> im impressed
12:33:15 <Phantom_Hoover> Ah, right, the thing I was trying to fix was the interaction between the capture and nonintersection rules.
12:33:45 -!- Phantom___Hoover has quit (Ping timeout: 240 seconds).
12:35:07 -!- Ngevd has joined.
12:35:28 <Phantom_Hoover> If the line between f(p) and p contains piece of the opposite colour, then either f(p) must lie on that piece or some other piece must capture it.
12:35:39 <Ngevd> Hello
12:35:47 <Phantom_Hoover> This makes capture possible, as it happens.
12:36:21 <itidus21> fizzie: i don't understand why philosophy + retro gaming + symbols is so interesting
12:36:45 <itidus21> but it is very cool
12:37:19 <Phantom_Hoover> <fizzie> This one sadly I think lacks the "speech synthesizer".
12:37:32 <Phantom_Hoover> Something something something speech recognition sucks?
12:37:41 <Phantom_Hoover> I think elliott's better at this than me.
12:37:44 <fizzie> Synthesis, not recognition!
12:37:45 <fizzie> And yes.
12:38:47 <Phantom_Hoover> What does PWP stand for?
12:39:15 <fizzie> Uh... "Pers' Wastaiset Produktiot", if I recall correctly.
12:39:58 <itidus21> Finding cool stuff is easy enough. Viewing it is easy enough. Recognizing that it would be therefore a good thing to be involved in is easy enough.
12:40:19 <itidus21> The trouble is this other detail of trying to find a purpose for being involved.
12:40:49 <itidus21> The negative proof that X isn't necessarily the best use of your time.
12:41:00 -!- elliott has joined.
12:41:26 -!- elliott has changed nick to Guest84924.
12:41:43 <Phantom_Hoover> Guest554115, quick, say something nasty about speech recognition.
12:41:56 <itidus21> Sure, you can try to measure it... If I did X would I regret spending my time that way. If I did Y would I regret it?
12:41:58 <fizzie> Phantom_Hoover: It's, like... uh, fi:perse = en:arse; fi:vastainen (adj.) = something like the anti-, in-, un- prefixes in English, and spelling it with 'w' makes it "old-fashiony", like Ye Olde Englishe; and fi:produktiot = en:productions.
12:42:51 <Guest84924> Speech recognition is for Finns.
12:42:55 <itidus21> And you can try to measure and compare the regret of investing time in X compared to the regret of investing time in nothing.
12:42:57 <Guest84924> THE ULTIMATE INSULT.
12:43:04 <fizzie> Phantom_Hoover: See http://pelulamu.net/pwp/ -- or maybe don't.
12:43:15 <Guest84924> Any time he uses technical terms, ask for their meaning. There are many countries, which take part in offshore web site style; the most well known are India, Russia, Ukraine, Romania, Philippines. It's also not a problem - you can make payment by credit card, PayPal, wire transfer, Western Union, etc. This will conserve you cash, time and effort in the long run. Here are some facts and figures from across the U. For the mil
12:43:15 <Guest84924> lions of web surfers out there, your web style is their first impression of your business and your credibility. If you are shopping for web style quotes, don't forget to ask the web style vendor some simple issues: Do you grant client references? Will I be capable to edit my own web pages? Are the web sites you pattern search engine friendly? Is logo style incorporated in the web quote? How many pattern concepts and revisi
12:43:15 <Guest84924> ons will you give? Avoid the Template Trap. The problem with Web templates is that they are closed systems. The big difference between advertising and not trading on the web, and being found or buried on page 15 of the search engine benefits, is know-how in building a search engine friendly site.
12:43:16 <Guest84924> However, it's not a 100% guarantee. There are plenty of web designers offered. Executing your homework and asking the correct requests is significant to decide if they are correct for the job. What does your ongoing web site style say about your business? Does it portray a professional, reliable business? If not here's a few tips for finding and selecting a web designer. NJ Web Designer Other industries, like food processing
12:43:18 <Guest84924> or construction, aren't so strict about academic qualifications, but they do have standards that have to be met - like health and safety or food hygiene standards. If that is the case, do you have the original graphic that can be emailed? It will be crucial to make use of that on your web site. Their promotion can inform you on how well they promote others. The key issue in web pattern is how to add value to the user's experience
12:43:20 <Guest84924> , how to make them feel that they truly got something out of browsing your web site.
12:43:22 <Guest84924> The pages load easily, you thought. The more individuals you have to test your web site, the more thorough your benefits will be. If this is the case it's not a serious problem, although you could ask your web designer to precise them. A few minutes? It's regular if this is a Flash site simply because usually the overall site is loaded at one time, not only the home page; or it's a Flash intro which goes ahead entering the site an
12:43:24 <Guest84924> d also can load longer simply because of movie and sound.
12:43:26 <Guest84924> Web designing as a profession is most benefited by this phenomenon. They read search benefits, news items, how-to articles and forums. You may get to realize some interesting facts. Designing a web site for search engines with clean code that utilizes cascading style sheets is important to getting your content indexed in the leading search engines, such as Google and Bing. NJ Web Design Also, the most eye-catching elements should
12:43:28 <Guest84924> load first. 3) Kind of works Look attentively at each work in the portfolio. Regardless of whether your color theme turns out prosperous depends heavily on the first step Determining the style of your website. These firms are stuck in the past and are not as effectual as they pretend to be.
12:43:30 <Guest84924> This details applies even whenever you are designing a personal website. Where do I start? you say. WebDesigners123 connects the Freelance Web Designer with Webmasters who need their services. I do my very best to discover as much as I can, each and every day.
12:43:35 <Patashu> pastebin motherfucker
12:43:38 <Phantom_Hoover> OH NO ELLIOTT AM BECOME SPAMBOT
12:44:13 <Guest84924> Patashu: spam is sacred
12:44:19 <Guest84924> perhaps even every spam
12:44:55 <Guest84924> 12:03:52: <fizzie> Here, have some of PWP's pseudo-philosophy-bullshit on the topic of chess pieces on an unexpanded VIC-20: http://www.youtube.com/watch?v=O19SNCIf1rk -- four kilobytes should be enough for everyone, right?
12:45:07 <Guest84924> fizzie: Oh, it's that viznut guy. I really like the aesthetic, though.
12:47:12 <Phantom_Hoover> Who's viznut?
12:47:13 -!- Ngevd has quit (Read error: Connection reset by peer).
12:47:28 <Guest84924> Phantom_Hoover: The guy behind that one-line code music thing; or at least the maker of the videos.
12:47:31 <fizzie> Robotic Liberation would've probably been a "better" "introduction", it's just that the chess-piece discussion is what sparked the thing.
12:47:40 <Guest84924> And the author of that one bad demo I laughed at.
12:47:57 <Phantom_Hoover> What was it?
12:47:57 <Guest84924> (Okay, it was probably quite impressive, technologically, for DOS.)
12:49:09 <Guest84924> fizzie: He seems rather obsessed with the premise.
12:49:22 <fizzie> http://en.wikipedia.org/wiki/PWP ooh, it's NOTABLE.
12:49:24 <Guest84924> Nice voice synth thing on a VIC-20 though. :p
12:49:26 <itidus21> i look forward to the day when haskell is turned to such things
12:49:36 <Guest84924> Reebuttic libera shun.
12:49:40 <fizzie> (Or at least nobody has bothered to nominate for deletion.)
12:49:51 <Guest84924> fizzie: http://www.youtube.com/watch?v=2SdGkkp1aq8 is the aforementioned Robotic Liberation one.
12:50:21 <fizzie> I... know?
12:50:25 <Guest84924> Er.
12:50:26 <Guest84924> Phantom_Hoover: ^
12:50:30 <Guest84924> fizzie: You're basically Phantom_Hoover.
12:50:34 <Guest84924> He asked for links, you get them.
12:50:47 <fizzie> Well, my upper half is, if I've understood correctly.
12:51:13 <Phantom_Hoover> Nah, I moved that Phantom_Hoover back into Edinburgh quite some time ago.
12:51:33 <fizzie> Okay, so now I'm just a half the fizzie I used to be.
12:54:43 <kallisti> Guest84924: http://sprunge.us/JSZF hi criticize my Haskell code.
12:54:58 <Guest84924> Why are you deriving Typeable?
12:55:23 <Guest84924> Why are you deriving Ord for Piece? Why aren't you deriving Eq for Board?
12:55:32 <kallisti> I am.
12:55:37 <Guest84924> Why are you using (Vector (Vector a))?
12:55:41 <kallisti> and, -shrug- YOU NEVER KNOW YOU MAY NEED TYPEABLE
12:56:07 <kallisti> Guest84924: because you told me to.
12:56:33 <Guest84924> No.
12:56:57 <Guest84924> You're also using the wrong kind of Vector.
12:57:10 <kallisti> ?
12:58:37 <kallisti> which Vector did you recommend?
12:59:08 <Guest84924> Phantom_Hoover: This is the one I mentioned above disliking: http://www.youtube.com/watch?v=F1537t45xm8
12:59:11 <Guest84924> kallisti: Storable.
12:59:54 <kallisti> I'll remove the Typeable since it's not really needed for anything.
13:00:08 <Guest84924> fizzie: DYK: Scientists are propagandists who want to mechanise you?
13:00:17 <kallisti> I just think "if I needed Typeable for a library type and it wasn't derived, that would be annoying."
13:00:20 <Phantom_Hoover> Man, this is amazingly crap.
13:00:30 <fizzie> "Note if all these routines are used simultaneously the data space might overflow. For serious floating point usage the large model might be needed." SDCC's float support is amusing. (They've also just stolen GCC floatlib's IEEE single-precision C code without optimizing them for their targets.)
13:00:37 <Guest84924> Phantom_Hoover: The one I just linked? It really is.
13:01:38 <Phantom_Hoover> "We will never again let an algorithm make a decision for us!"
13:02:01 <Phantom_Hoover> "How much change do I have?" "WE WILL NEVER LET ALGORITHMS MAKE DECISIONS FOR US"
13:02:06 <Guest84924> Phantom_Hoover: Grep /Let me elaborate the setting/ http://countercomplex.blogspot.com/2011/09/new-propaganda-tool-post-apocalyptic.html if you want more BACKGROUND.
13:02:28 <Guest84924> Phantom_Hoover: Nonono, brains aren't algorithmic, he makes that clear in the uploader comments.
13:02:32 <kallisti> Guest84924: I imported Vector.Storable and got this http://sprunge.us/fYPP
13:02:35 <kallisti> am I missing a deriving somewhere?
13:02:45 <Guest84924> kallisti: You're missing the fact that I told you not to use Vector (Vector a).
13:03:06 <kallisti> ??
13:03:41 <kallisti> are you suggesting I use MVector?
13:03:46 <Guest84924> No.
13:04:06 <Guest84924> *(Vector (Vector a)).
13:04:14 <kallisti> are you going to explain? or should I just guess at what you mean?
13:04:24 <kallisti> because you said to use Storable vectors...
13:04:26 <Phantom_Hoover> kallisti, hey, you removed the knights!
13:04:32 <Guest84924> 12:55 <Guest84924> Why are you using (Vector (Vector a))?
13:04:34 <Guest84924> 12:55 <kallisti> Guest84924: because you told me to.
13:04:36 <Guest84924> 12:56 <Guest84924> No.
13:05:01 <kallisti> Guest84924: I was referring to earlier when I asked what I should use to represent a chess board and you said "oh you probably want Map or Vector"
13:05:08 <Guest84924> fizzie: Hey, what's your opinion on STATE OF THE ART?!?!?! (I am emulate pundit: find topic claimed to be controversial by semi-reliable sources, slam in face of interviewee.)
13:05:20 <Phantom_Hoover> State of the art?
13:05:24 <Guest84924> kallisti: Please attempt the basic literacy required to distinguish (Vector a) and (Vector (Vector a)).
13:05:39 <Guest84924> Phantom_Hoover: http://www.youtube.com/watch?v=aykuVMf4uIQ
13:05:45 <kallisti> Guest84924: okay, but why should I use a 1d vector to represent a 2-dimensional grid?
13:05:56 <Guest84924> kallisti: Because that gives you a contiguous region of memory.
13:06:35 <kallisti> hmmm, okay.
13:06:50 <kallisti> Phantom_Hoover: what knights?
13:06:51 <Guest84924> You have to handle row/column indexing yourself; something like Vector is a more raw interface than C arrays.
13:07:02 <Phantom_Hoover> kallisti, the ones that aren't in portal chess.
13:07:10 <kallisti> lame. those suck.
13:07:15 <kallisti> because they're not in portal chess.
13:07:17 <Guest84924> Your original code used an array of pointers pointing to vectors which have an array of pointers pointing to boxed Maybe values which ...
13:07:23 <kallisti> and they can only hop two squares!
13:07:31 <Guest84924> BTW, wrap (Maybe PIece) so you can write a Storable instance for it.
13:07:31 <kallisti> portals can hop THREE! yeah... stepping up the game.
13:07:45 <kallisti> Guest84924: what do you mean by "wrap"
13:07:59 <kallisti> newtype?
13:08:01 <Guest84924> kallisti: newtype JesusChrist = JesusChrist (Maybe Piece)
13:08:21 <Guest84924> fizzie deftly avoids controversy by not responding.
13:09:16 <kallisti> Guest84924: why do I need a newtype for that?
13:09:28 <Guest84924> "so you can write a Storable instance for it."
13:09:32 <kallisti> right
13:09:33 <kallisti> why
13:09:33 <Guest84924> So you can put it in a storable Vector.
13:09:39 <Guest84924> BTW, you need to import the vector module qualified.
13:09:57 <kallisti> I'm asking: why is it required to have a newtype in order to write an instance of Storable
13:10:17 <Guest84924> Well, you could write the instance directly, but (a) error-prone (b) requires FlexibleInstances (c) could overlap
13:10:24 <kallisti> ah
13:10:38 <Guest84924> (a) in that you could easily mistakenly use the instance elsewhere without intending to.
13:11:20 <kallisti> I'm not really sure about this Storable stuff. It seems to require a lot of low-level information
13:11:49 <kallisti> for what gain? a more efficient 8x8 grid.
13:11:58 -!- oerjan has joined.
13:12:00 <Guest84924> Storable is trivial.
13:12:07 <Guest84924> You just want to define a bijection to Word8.
13:12:25 <Guest84924> poke p Nothing = poke (0 :: Word8); poke p (Just Blah) = poke (1 :: Word8); ...
13:12:28 <Guest84924> In fact
13:12:36 <Guest84924> poke p a = poke (toEnum a :: Word8)
13:12:38 <Guest84924> and the obvious for peek
13:12:45 -!- sebbu has quit (Ping timeout: 240 seconds).
13:13:07 <kallisti> sizeOf = const 1 -- ??
13:13:15 <Guest84924> Yes.
13:13:17 <Guest84924> That's all you need.
13:13:26 <kallisti> ...oh
13:13:47 <kallisti> that's much easier than I thought it was.
13:14:38 <Guest84924> fizzie: Robotic Liberation is now stuck in my head, I'm annoyed. :/
13:14:41 <kallisti> wrapping a Maybe in a newtype seems marginally annoying though..
13:14:47 <fizzie> Guest84924: I don't have much of an opinion; I mean, I recall I thought it looked nice, no matter how video-capturey it was.
13:14:59 <Guest84924> kallisti: You're writing your own indexing functions anyway.
13:15:02 <Guest84924> You can unwrap it at that point.
13:15:17 <Guest84924> fizzie: Neutrality! What a rare thing from a fizzi.
13:15:19 <Guest84924> fizzie.
13:15:43 -!- oerjan has set topic: Official revolting channel of the frequent stupid topic change plurality, the Prequel: The Attack of the Nerds | http://codu.org/logs/_esoteric/.
13:16:26 <fizzie> Maybe if I'd have "been there" I'd have more of an opinion, but I don't think I even knew about any demosceney stuff in 1992, really.
13:16:45 <kallisti> Guest84924: oh hey I've got a great name for my newtype. Cell. WOW
13:16:47 <kallisti> so good.
13:16:49 <kallisti> so. descriptive.
13:16:54 <kallisti> er
13:16:55 <kallisti> Square
13:16:56 <kallisti> maybe
13:16:59 <Guest84924> Cell.
13:16:59 <kallisti> Square is more chess-like
13:17:04 <oerjan> i don't know, sounds a bit imprisoning
13:17:13 <Guest84924> Well, I guess Square is more correct.
13:17:42 <kallisti> I've been having difficulty naming all of these things
13:18:04 <kallisti> because they're very similar. I wasn't sure if I wanted to call Board something like GameState and then s/GridSpace/Board/
13:18:20 <kallisti> but GameState is, bleh.
13:18:22 <fizzie> Sqoor, Buurd.
13:18:48 * kallisti almost named fillColumns philCollins until he realized a) that
13:18:58 <Guest84924> kallisti: Board should definitely just be a board.
13:19:01 -!- sebbu has joined.
13:19:06 <kallisti> 's stupid b) he doesn't need that function
13:19:11 <Guest84924> kallisti: Also, it's rank and file these days, no?
13:19:15 <Guest84924> In modern commentary, the columns (called files) are labeled by the letters a to h from left to right from the white player's point of view, and the rows (called ranks) by the numbers 1 to 8, with 1 being closest to the white player, thus providing a standard notation called algebraic chess notation.
13:19:20 <kallisti> Guest84924: ah, yes.
13:19:46 <kallisti> Guest84924: for someone who's implementing a chess variant, I don't know very much about actual chess.
13:20:01 <Guest84924> Ditto, but I have Wikipedia to help me be a snarky asshole.
13:20:11 <kallisti> Guest84924: anyway it makes sense conceptually that the board also includes these invisible loop sets.
13:20:16 -!- Jafet1 has joined.
13:20:23 <Guest84924> You should remove the hidden state.
13:20:39 <kallisti> the... loop sets?
13:20:50 <kallisti> I need those. :P
13:20:55 <Guest84924> Make them board state!
13:20:58 <Guest84924> Use colours or some shit.
13:21:07 <kallisti> oh you mean visually. yes they'll be displayed.
13:21:11 <kallisti> they're "invisible" in the physical game.
13:21:26 <Guest84924> No, I mean they hsould be part of the piece type.
13:22:01 <kallisti> well, that's a possibility however I think (but I'm not sure) it will be easier to work with them if they're stored as a set
13:22:10 <kallisti> because multiple loop squares are associated with one another.\
13:22:24 -!- Jafet has quit (Ping timeout: 240 seconds).
13:22:32 <kallisti> a move can remove an entire set of loop squares and I don't feel like calculating what those are
13:22:37 <kallisti> easier to just have a set of them that I chop off.
13:23:46 <kallisti> also they have properties as a set that I haven't added yet
13:24:41 <kallisti> such as a direction of clockwise and counterclockwise for the unidirectional loops, and "oscillating" I guess for the bidirectional case (I'll get around to encoding that later once I can see other things implemented)
13:25:37 <kallisti> hmmm, actually
13:25:49 <kallisti> I could have the Loop squares have a direction.
13:26:12 <kallisti> and then to build a collection of related loop squares I just follow the path based on directions.
13:26:22 <kallisti> or something.
13:27:38 <kallisti> Guest84924: oh one problem with your Storable instance is that Pieces are not actually Enums.
13:27:46 <kallisti> or, I can't derive them as such
13:27:50 <kallisti> I'd have to write the instance.
13:27:58 <Guest84924> Just write your own instance, there's like 16 elements.
13:28:20 <itidus21> is a game a language?
13:28:23 <kallisti> any way I can make that not tedious?
13:28:39 <Guest84924> kallisti: If you think this is tedious, wait until you actually write something that isn't a type.
13:29:02 <kallisti> itidus21: a sequence of discrete moves could be viewed as a language, I think.
13:29:17 <kallisti> er
13:29:20 <kallisti> the set of those moves
13:29:27 <itidus21> is a game a set of moves? :D
13:29:29 <kallisti> the program is a specific string of moves
13:29:37 <kallisti> itidus21: no it also has an underlying state.
13:30:00 <itidus21> hummm
13:30:13 <kallisti> Guest84924: but really is there an easier way than "lol pattern matching 16 cases"
13:30:19 <Guest84924> jesus christ
13:30:24 <Guest84924> ok well you can obviously derive enum for piecetype
13:30:33 <Guest84924> i'll let you figure out the basic arithmetic to handle the additional player field
13:30:34 <Guest84924> in piece
13:30:38 <kallisti> noep I tried earlier. but maybe it works suddenly now?
13:31:20 <itidus21> i guess in chess there is the question of whether to represent board state or piece state
13:31:42 <Guest84924> kallisti: piecetype has 7 constructors. coord and enum already are enum
13:31:47 <Guest84924> actually oh
13:31:54 <Guest84924> Portal is the only tricky one
13:31:58 <kallisti> yes
13:32:02 <Guest84924> but it's trivial
13:32:04 <Guest84924> since the range is (8,8)
13:32:06 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:32:07 <Guest84924> so use
13:32:07 <Guest84924> :t index
13:32:08 <lambdabot> forall a. (Ix a) => (a, a) -> a -> Int
13:32:48 <kallisti> Guest84924: also I could do something horrible like data Rank = A | B | C ...
13:32:49 -!- Jafet1 has quit (Quit: Leaving.).
13:33:02 <kallisti> and Data File = One | Two | ... -- bahahahahahah
13:33:07 <Guest84924> yeah, do it
13:33:10 <Guest84924> except F1 | F2 | ...
13:33:14 <kallisti> ah yeah
13:33:16 <kallisti> that's better
13:33:16 <Guest84924> derive Enum, write Ix instance
13:33:19 <kallisti> ....
13:33:24 <Guest84924> better than using Int
13:33:25 <kallisti> no I was just going to use my indexing function
13:33:33 <Guest84924> Ix is useful though because
13:33:34 <Guest84924> :t index
13:33:35 <lambdabot> forall a. (Ix a) => (a, a) -> a -> Int
13:33:35 <kallisti> to abstract that
13:33:36 <Guest84924> :t range
13:33:37 <lambdabot> forall a. (Ix a) => (a, a) -> [a]
13:33:39 <kallisti> ah yes
13:33:40 <Guest84924> etc.
13:33:56 <kallisti> I'm surprised Ix can't be derived from Enum
13:33:59 <itidus21> with board state you could literally have 64 cells with the alphabet {"R", "N", "B", "Q", "K", "P", "r", "n", "b", "q", "k", "p", " "}
13:34:07 <kallisti> itidus21: noep
13:34:11 <Guest84924> kallisti: it's more than Enum
13:34:16 <kallisti> itidus21: PORTAL CHESS IS MORE COMPLICATED THAN THAT
13:34:25 <itidus21> oh well portal chess yeah
13:34:40 <itidus21> but regular chess you could get away with it so long as you allowed for invalid moves to happen
13:35:12 <kallisti> I thought using Rank and File would be ridiculous but it actually kind of works nicely.
13:35:34 <kallisti> except that arithmetic will be weird without a bunch of fromEnum stuff.
13:35:59 <kallisti> oh hmm the Rank is the number the file is the letter.
13:36:13 <itidus21> whats the deal with chess and not killing the king
13:36:17 <itidus21> i mean SERIOUSLY
13:36:27 <itidus21> :))
13:36:36 <kallisti> that will actually be one of the more difficult things to calculate in protal cehess
13:36:39 <itidus21> err capturing
13:36:43 <kallisti> because there are many weird capturing rules
13:37:14 <kallisti> for example, if your two portals are facing each other and within capturing range of one another
13:37:15 <itidus21> nevermind im being very very dumb
13:37:22 <kallisti> the enemy king cannot be adjacent to those portals
13:37:52 <kallisti> because of the explosion rule where portals explode when they try to pass through each other.
13:37:58 <kallisti> :)
13:38:37 <Sgeo> Is there actually a published ruleset for portal chess?
13:38:39 <itidus21> well.. in chess. suppose that you made the rule that you could capture the king..
13:38:41 <kallisti> no.
13:38:41 <Sgeo> Or continuous chess?
13:38:47 <kallisti> no
13:38:51 <Sgeo> Oh, darn
13:38:53 <kallisti> continuous chess happened like... yesterday?
13:38:59 -!- Guest84924 has quit (Remote host closed the connection).
13:39:01 -!- Ngevd has joined.
13:39:05 <kallisti> but I have pretty much a definitive ruleset in my brain at the moment.
13:39:06 <Ngevd> Hello!
13:39:13 <Ngevd> My Latin vocab tester is going well
13:39:16 <kallisti> I'm just... too lazy to write chess rules. that will be very boring. :P
13:39:38 <Phantom_Hoover> Sgeo, the rules of continuous chess aren't terribly complex.
13:40:23 <Phantom_Hoover> Ngevd, your Latin vocab tester?
13:40:31 <kallisti> Guest554115: wait maybe this isn't a good idea.
13:41:07 -!- elliott has joined.
13:41:13 -!- elliott has quit (Changing host).
13:41:13 -!- elliott has joined.
13:41:15 <kallisti> elliott: maybe using a Rank and File type isn't a good idea
13:41:24 <kallisti> also Rank and File are basically the same I could probably just make them one type.
13:41:54 <elliott> Fine, make one type
13:42:01 <Ngevd> Phantom_Hoover, it's more of a flashcards program
13:42:02 <kallisti> eh but that's gross too
13:42:03 <kallisti> DON'T KNOW IF WANT
13:42:09 <elliott> It's not gross.
13:42:11 <kallisti> maybe I just want integers but then I can't derive Enum and I'll have to write that.
13:42:14 <kallisti> NO WAY. TO AVOID. TEDIUM.
13:42:50 <kallisti> hmmm I'll try Rank and File
13:42:54 <kallisti> as seperate types.
13:43:00 <elliott> There is no way this thing will progress to the working stage.
13:43:10 <kallisti> even though they're exactly the same and I'll probably being doing a lot of arithmetic on them as integers.
13:43:10 <Ngevd> Phantom_Hoover, I'm just adding more features now
13:43:35 <kallisti> elliott: it will.
13:43:49 <elliott> It won't.
13:44:08 <Phantom_Hoover> Ngevd, ah, right. Javascript gravity guy was working on a Latin thing too and I was wondering if you were in cahoots, at which point I would break down crying because that's like Hexham levels of crazy.
13:44:23 <Ngevd> Nah, I'm doing it in Haskell
13:44:37 <elliott> Phantom_Hoover: Don't believe him.
13:44:40 <elliott> It's too good to be false.
13:45:04 <oerjan> <itidus21> whats the deal with chess and not killing the king <-- it was probably politically incorrect at one time to kill kings, even in games
13:45:07 -!- olsner has quit (Quit: Leaving).
13:45:25 <Phantom_Hoover> elliott, worse still, he had the opportunity to be one of the interviewers when I went to Cambridge.
13:45:33 <elliott> Phantom_Hoover: omg
13:45:35 <Phantom_Hoover> That would have been upsetting in the extreme.
13:45:41 <elliott> would you have said
13:45:45 <elliott> "JAVASCRIPT GRAVITY GUY!!!"
13:45:53 <elliott> "I SHALL USURP YOUR GAME"
13:45:55 <Phantom_Hoover> I doubt it.
13:46:57 <oerjan> <Ngevd> My Latin vocab tester is going well <-- VERBVM NECESSE EST
13:47:13 <kallisti> elliott: oh oops E is a File and a Direction
13:47:31 <itidus21> the IsInCheck(chessboard) function is diabolical eh
13:47:41 <itidus21> is it the most difficult of all to write?
13:47:51 <kallisti> itidus21: probably not
13:47:56 <kallisti> but it won't be as easy as normal chess.
13:47:57 <oklopol> sounds trivial
13:48:23 <Phantom_Hoover> What does IsInCheck do?
13:48:36 <itidus21> it determines if the king is in check
13:48:38 <Phantom_Hoover> oklopol, did you read about continuous chess (it's the best chess).
13:48:40 <kallisti> determines if a player is in check I'd imagine.
13:48:42 <itidus21> it uses magic to know whose turn it is
13:48:45 <oklopol> nope
13:48:49 <kallisti> by "the king" I imagine he means it returns something like Maybe Player
13:48:57 <itidus21> hmm
13:48:58 <oklopol> what is it
13:49:03 <Phantom_Hoover> Alternately bicontinuous chess because some loser already made his own crappy continuous chess.
13:49:19 <Phantom_Hoover> oklopol, chess, except the board and the pieces are continuous.
13:49:21 <kallisti> real chess??
13:49:28 <elliott> Phantom_Hoover: Excuse me you need to invent tricontinuous so that it's continuous in time too still?
13:49:40 <elliott> oklopol:
13:49:43 <kallisti> data Direction = North | Northeast | East | Southeast | South | Southwest | West | Northwest
13:49:55 <kallisti> I don't know about how I feel about these expand direction names
13:49:56 <itidus21> kallisti: yeah player in check i meant
13:50:03 <itidus21> >_>
13:50:04 <Phantom_Hoover> elliott, don't paste him the original definition; I've altered it significantly.
13:50:08 <elliott> 23:02:46: <Phantom_Hoover> Basically, the board is a continuous square, and each area corresponding to an initial piece is instead full of continuous piece. 23:04:45: <Phantom_Hoover> To perform a move, you take some measurable subset of one batch of piece and move them such that the measure of the piece remains the same (this is inelegant but, I think, necessary) and \int ddp is equal to a valid move vector.
13:50:10 <elliott> 23:05:37: <Phantom_Hoover> Capture consists of moving some quantity of piece over some of your opponent's piece, which erases the target piece.
13:50:15 <oklopol> Phantom_Hoover: i don't know what that means
13:50:15 <elliott> oklopol: ^
13:50:18 <elliott> Oh.
13:50:24 <elliott> Phantom_Hoover: Well, now you get to tell oklopol the diff.
13:50:28 <itidus21> `pastelog continuous time
13:50:45 <oklopol> is a piece an Borel subset of measure 1 where the measure of the board is 64?
13:51:01 <HackEgo> No output.
13:51:12 <oklopol> and is the board [0, 8] times [0, 8]?
13:51:16 <Phantom_Hoover> oklopol, well, um, at the start of the game you have squares of piece (that's like piece but an uncountable noun) occupying the subset of [0,8]^2 corresponding to their initial positions in normal chess.
13:51:24 <itidus21> `pastelog continuous in time
13:51:24 <kallisti> elliott: if I combine Board and GridSpace into one type would you recommend using a newtype to seperate Board from being just another Vector (Maybe Piece)?
13:51:39 <elliott> kallisti: Dunno.
13:51:39 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.31615
13:51:42 <kallisti> I don't see a need particularly.
13:51:48 <oklopol> okay that much i guessed
13:52:28 <Phantom_Hoover> oklopol, a move is a measure-preserving bijection f.
13:52:37 <Phantom_Hoover> A move is valid if:
13:52:38 <kallisti> so, many. types.
13:52:59 <kallisti> Haskell is the language of 22 billion types.
13:53:05 <kallisti> it's the hinduism of languages.
13:53:11 -!- Ngevd has quit (Ping timeout: 252 seconds).
13:53:21 <Phantom_Hoover> - The vector from the centroid of P to the centroid of f(P) corresponds to a legal move in standard chess of that piece.
13:53:22 -!- iconmaster_ has joined.
13:53:27 <oerjan> Phantom_Hoover: i think [0,8)^2 might be more elegant
13:53:41 <oerjan> hm except it's not symmetric
13:53:43 <Phantom_Hoover> - f(P) intersects only piece of the opposite colour, which is then captured.
13:53:50 <oklopol> oerjan: i was assuming it doesn't matter because of measure stuff
13:54:13 <oklopol> centroid in the measure theoretical sense?
13:54:33 <itidus21> why do all the moves take the form of [a,b] x [c,d] ?
13:54:36 <oerjan> oklopol: some people keep insisting this should allow nonmeasurable pieces
13:54:39 <itidus21> how did this happen.. hahaha
13:54:49 <itidus21> is that continued fraction form?
13:54:54 <oklopol> oerjan: some people think they can make this work
13:55:03 <Phantom_Hoover> - if P is not knight, then forall p in P, the line segment between p and f(P) contains no different piece of the same colour, and contains piece of the opposite colour only if it is captured in the same move.
13:55:04 <elliott> It would have worked with the older definition.
13:55:08 <oerjan> oklopol: it's 2d, banach-tarski doesn't apply
13:55:09 <Phantom_Hoover> oklopol, of course.
13:55:12 <elliott> Phantom_Hoover: Special-casing the knight is not cool man.
13:55:22 <Phantom_Hoover> elliott, normal chess does it?
13:55:28 <elliott> FINE
13:55:50 <Phantom_Hoover> oerjan, banach-tarski doesn't apply, but there's no restriction to rigid motions.
13:56:09 <oklopol> the last one prevents playing normal chess with this
13:56:15 <Phantom_Hoover> Yes, it does.
13:56:32 <Phantom_Hoover> Unless you change the initial distribution of piece to allow diagonal moves.
13:56:38 <kallisti> elliott: please tell me that (Enum a) => Maybe a is an Enum.
13:56:51 <elliott> kallisti: If it's not, it takes four lines to implement an instance.
13:56:57 <kallisti> yes.
13:56:58 <oklopol> true
13:57:00 <kallisti> THAT'S NOT THE IMPORTANT PART.
13:57:14 <Phantom_Hoover> But that's kind of messy, and so are most other ways of solving it.
13:57:23 <elliott> Normal chess is inelegant anyway.
13:57:25 <elliott> f.e., it's discrete.
13:57:29 <kallisti> lol
13:57:34 <kallisti> f.e., it doesn't have portals.
13:57:40 <elliott> Iron.
13:57:44 <oklopol> discreteness is bestness.
13:57:59 <elliott> oklopol: Well Phantom_Hoover has yet to make time continuous so continuous chess is still lame.
13:58:02 <elliott> But once he does it'll be perfect.
13:58:28 <Phantom_Hoover> Oh, also: any pawn that comes within 1 unit of the far side of the board becomes queen.
13:59:19 <Phantom_Hoover> The batch from which the pawn came is then effectively treated as two batches of piece, a pawn and a queen batch, and they are both moved simultaneously.
13:59:22 <kallisti> hmmm I think instead of listing my types bottom-to-top I'll go top-to-bottom
13:59:47 <kallisti> meh. too much trouble. this way is fine.
14:00:05 <elliott> Does anyone know a compression algorithm that produces really good results on almost-universally-English plaintext?
14:00:11 <oerjan> Phantom_Hoover: what, not choice of promotion?
14:00:16 <elliott> xz -9 is only doing 303 megs -> 47 megs, which seems like it could be a lot better.
14:00:16 <Phantom_Hoover> oerjan, oh, right, yes.
14:00:33 <Phantom_Hoover> (I had that originally, but I forgot it.)
14:00:38 <Phantom_Hoover> The mechanics are otherwise the same.
14:00:43 <oklopol> are there 8 hues of pawn or can you move all your pawn at once?
14:00:58 <itidus21> elliott: huffman encoding?
14:01:21 <oerjan> elliott: n
14:01:33 <itidus21> . o O (no not that one.. one that a room full of ingenious computer scientists must rack their brains for)
14:01:35 -!- Ngevd has joined.
14:01:42 <elliott> itidus21: Yeah yeah, I'm more interested in an already-written tool than a general technique :P
14:01:44 <oklopol> actually i'm starting to think this thing could work
14:01:45 <elliott> oerjan: thx
14:01:54 <Phantom_Hoover> oklopol, originally, it was all at once, but then the move definition switched from the integral to the centroid (i.e. slightly different integral) definition, which makes treating it all at once screwy.
14:01:56 <oerjan> elliott: np
14:02:23 <Phantom_Hoover> By which I mean even orthogonal movements in normal chess become impossible.
14:02:57 <Ngevd> Hello
14:03:10 <iconmaster_> Hey
14:03:17 <oklopol> now i wonder who wins this game, i can't see a trivial winning strategy
14:03:28 <elliott> oklopol: Do you for Chess?
14:03:34 <Phantom_Hoover> Defining check is especially fun.
14:03:44 <oerjan> elliott: isn't there some compression that allows you to start with a dictionary (essentially prepended)?
14:04:00 <elliott> oerjan: Do you mean... Huffman encoding?
14:04:06 <oerjan> MAYBE
14:04:10 <oklopol> Phantom_Hoover: err, isn't it just that all your king are belong to us?
14:04:15 <itidus21> basically.. the IsPlayerInCheck() function becomes more expensive as the movespace
14:04:17 <oklopol> if allowed a further move
14:04:21 <Phantom_Hoover> Yes.
14:04:26 <itidus21> ^increases
14:04:31 <Ngevd> What do people recommend for Haskell regexes?
14:05:08 <elliott> Deewiant: Ping
14:05:14 <Deewiant> Pong
14:05:15 <elliott> Ngevd: You probably don't want to
14:05:15 <oklopol> i believe if all the king has to be taken at once, then the solution is stalemate
14:05:17 <Phantom_Hoover> But then checkmate is... wait, no, you could hem in all your opponents king with pawn or something, and then use knight to actually threaten it.
14:05:33 <elliott> Deewiant: What's a good compressor for majority-plain-English text that can take advantage of that structure, esp. dictionary
14:05:47 <elliott> Deewiant: xz -9 only does ~300 megs -> ~40 megs and I want better
14:05:53 -!- derdon has joined.
14:06:17 <elliott> Ngevd: But ask Deewiant for the one he uses, ISTR it being good :P
14:06:56 <fizzie> Deewiant: Oh, you might find this (very) mildly amusing; it's from the AI course channel, which is still empty since it hasn't started: http://p.zem.fi/t027
14:07:02 <Phantom_Hoover> I think it's more likely that the brains of all involved will melt, though.
14:07:08 <Deewiant> Ngevd: regex-tdfa
14:07:28 <Deewiant> fizzie: ... okay
14:07:33 <elliott> fizzie: :D
14:07:36 <kallisti> > toEnum False
14:07:36 <lambdabot> Couldn't match expected type `GHC.Types.Int'
14:07:37 <lambdabot> against inferred type ...
14:07:41 <kallisti> > fromEnum False
14:07:41 <lambdabot> 0
14:07:45 <elliott> fizzie: Your humbleness in explaining the lack of AI systems in the channel is amazing.
14:08:11 <Phantom_Hoover> oklopol, I challenge you to a game!
14:08:28 <Phantom_Hoover> I'll be white, you can be black, and we play it on a 3x3 board with king at opposite corners.
14:08:32 <oklopol> not sure i'm interested :D
14:08:35 <kallisti> elliott: Data.Vector.Storable is pretty cool.
14:08:37 <oklopol> sounds hard.
14:08:53 <oklopol> and nothing else?
14:08:59 -!- Taneb has joined.
14:09:12 -!- Ngevd has quit (Ping timeout: 240 seconds).
14:09:17 <Phantom_Hoover> oklopol, no.
14:10:12 <oklopol> k i shall play.
14:11:23 <oklopol> hey so
14:11:28 <kallisti> elliott: er, I'm not really sure how to write peek.
14:11:32 <oklopol> you have an advantage because you made this game
14:11:59 <elliott> kallisti: fmap (fromEnum . fromIntegral :: Word8 -> Foo) . peek
14:12:02 <oklopol> so can i have the small extra rule that i remove the *closure* of whatever i manage to take from ya instead of just the set
14:12:16 <oklopol> i don't think it changes much
14:12:36 <elliott> Phantom_Hoover: DON'T DOOO IIII
14:12:37 <elliott> T\
14:12:39 -!- Ngevd has joined.
14:12:42 <Phantom_Hoover> You're clearly planning something, but it'll be an entertaining something, so fine.
14:12:44 <Phantom_Hoover> Assuming the pieces are at [0,1]^2 and [2,3]^2, I move the king contained in the triangle with corners (0,0), (0,1) and (1,0) to that with corners (2,2), (2,3), (3,2).
14:13:39 -!- olsner has joined.
14:13:43 -!- Taneb has quit (Ping timeout: 252 seconds).
14:14:08 <oklopol> so we note that Q^2 \cap board is a countable dense subset of the board with measure zero
14:14:09 <oklopol> and i win
14:14:18 <oklopol> :'D
14:14:19 <oklopol> but umm
14:14:22 <oklopol> let me see what you wrote
14:14:24 <itidus21> `log [f]inite euclidean
14:14:32 <HackEgo> 2012-01-06.txt:17:17:23: <itidus21> do you know whats dissapointing? having an idea and then googling it.. well time for me to google this finite euclidean plane chess idea of mine
14:14:40 <itidus21> oops wrong 1
14:14:43 <itidus21> `log [f]inite euclidean
14:14:58 <HackEgo> 2012-01-06.txt:17:09:46: <itidus21> ok, what about chess on a finite euclidean plane
14:15:06 <oklopol> i don't see how that's a legal move
14:15:14 <oklopol> yours i mean
14:15:24 <oklopol> oh
14:15:30 <Phantom_Hoover> oklopol, piece can intersect itself during a move.
14:15:35 <Deewiant> elliott: zpaq
14:15:45 <Ngevd> @hoogle (a -> b) -> (a, a) -> (b, b)
14:15:45 <lambdabot> Data.Graph.Inductive.Query.Monad (><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d)
14:15:45 <lambdabot> Data.Graph.Inductive.Query.Monad mapSnd :: (a -> b) -> (c, a) -> (c, b)
14:15:45 <lambdabot> Data.Graph.Inductive.Query.Monad mapFst :: (a -> b) -> (a, c) -> (b, c)
14:15:51 <oklopol> okay so
14:15:54 <itidus21> it is likely that i started this with that innocent comment
14:15:55 <oklopol> that's in check, you can't move there
14:16:01 <elliott> Deewiant: This is going to be one of those state-of-the-art ones that take 3 years to compress isn't t
14:16:02 <elliott> it
14:16:13 <elliott> Ngevd: join (***)
14:16:16 <Phantom_Hoover> oklopol, it can't possibly be in check; you only have 0.5 king and I have 1.
14:16:27 <Ngevd> :t join (***)
14:16:28 <Phantom_Hoover> (Assuming we're leaving out the closure rule, because duh.)
14:16:28 <lambdabot> forall (a :: * -> * -> *) b c. (Arrow a) => a b c -> a (b, b) (c, c)
14:16:37 <Phantom_Hoover> :t join
14:16:38 <lambdabot> forall (m :: * -> *) a. (Monad m) => m (m a) -> m a
14:16:44 <Phantom_Hoover> Oh, duh.
14:16:47 <Ngevd> elliott, what do I need to work this magic?
14:16:54 <elliott> Ngevd: Control.Arrow, Control.Monad
14:16:59 <Ngevd> Thanks
14:17:03 <elliott> Ngevd: I suggest defining
14:17:09 <Deewiant> elliott: It's just the best one I found on AUR
14:17:10 <elliott> both :: (a -> b) -> (a, a) -> (b, b)
14:17:11 <elliott> both = join (***)
14:17:12 <oklopol> no wait i'm confused
14:17:23 <itidus21> elliott: the best compression technique of all is to have the entire contents of the document contained in the decompression software, reproduced upon running the decompressor
14:17:27 <elliott> Deewiant: Funny, it's not in my package manager, so I'll have to compile it myself :P
14:17:32 <oklopol> you seem to have moved 2 in both axes.
14:17:38 <elliott> Ugh, and it's in separate zip(!) files
14:18:29 <Deewiant> elliott: Maybe nanozip is if that one isn't
14:18:33 <Deewiant> Or freearc
14:18:41 <elliott> nope
14:18:52 <itidus21> garden of eden decompression
14:19:03 <oklopol> garden of eden wait what's going on here?
14:19:07 <itidus21> well..
14:19:15 <oklopol> so i assume that has nothing to do with CA
14:19:30 <itidus21> oklopol: when you check the state of the output of the decompressor it just happens to be the correct state
14:19:32 <Phantom_Hoover> oklopol, currently my king consists of two triangles, symmetric about the line joining (0,3) and (3,0) and that joining (0,0) and (3,3); the centroid is thus obviously at (1.5,1.5); the initial centroid was at (0,5,0.5).
14:19:42 <itidus21> i guess the word garden of eden is very not appropriate
14:19:44 <Ngevd> Well, this is going really well
14:19:48 <Ngevd> Thanks elliott!
14:19:52 <kallisti> :t fromEnum
14:19:53 <lambdabot> forall a. (Enum a) => a -> Int
14:19:58 <Ngevd> Thanks also kallisti, but that was earlier!
14:20:01 <elliott> toEnum, w/e.
14:20:06 <kallisti> Ngevd: what did I do?
14:20:06 <Ngevd> Thanks probably other people too!
14:20:08 <oklopol> oh triangles sorry
14:20:11 <itidus21> like uh..
14:20:14 <Ngevd> kallisti, helped me debug the other day
14:20:20 -!- iconmaster_ has quit (Quit: Pardon me, but I have to die in NetHack again.).
14:20:22 <kallisti> :t toEnum
14:20:23 <lambdabot> forall a. (Enum a) => Int -> a
14:20:31 <Deewiant> elliott: And if you want to tune zpaq more, you can try using this config: http://mattmahoney.net/dc/max_enwik9.cfg
14:20:54 <kallisti> @hoogle Int -> Word8
14:20:55 <lambdabot> Data.ByteString index :: ByteString -> Int -> Word8
14:20:55 <lambdabot> Data.ByteString.Unsafe unsafeIndex :: ByteString -> Int -> Word8
14:20:55 <lambdabot> Prelude (!!) :: [a] -> Int -> a
14:21:05 <elliott> Deewiant: I'm not compiling it myself manually :P
14:21:12 <elliott> Especially since it doesn't seem to come with a build system.
14:21:28 <Deewiant> elliott: https://aur.archlinux.org/packages/zp/zpaq/PKGBUILD
14:21:51 <oklopol> Phantom_Hoover: strictly speaking, i guess i have no legal moves from here, since i don't have a legal starting position, can you clarify what a legal move is?
14:21:55 <elliott> No guarantee that'll work on my OS
14:22:02 <elliott> But meh, I might try it sometime
14:22:12 <oklopol> the vector between centroids is one that the piece can move in normal chess?
14:22:14 <Phantom_Hoover> oklopol, one in which the centroid moves by a legal chess move.
14:22:18 <Phantom_Hoover> Yeah.
14:22:20 <oklopol> mm okey
14:22:20 <Deewiant> elliott: Generally "$CXX $CXXFLAGS $LDFLAGS" should work
14:22:23 <kallisti> > fromIntegral (5 :: Int) :: Word8
14:22:24 <lambdabot> 5
14:22:26 <kallisti> ah
14:22:33 <elliott> Deewiant: But might need different cflags for e.g. -D platform stuff.
14:22:55 <Deewiant> It's conceivable, but I doubt it
14:23:21 <itidus21> Suppose that you want to decompress a text document named "accounts4.txt" . and someone just happened to have a copy of that document and named it data.zip .. and created a batch file "unzip" .. and unzip contained "rename data.zip to accounts4.txt"
14:23:26 <kallisti> > fromIntegral (5 :: Word8) :: Int
14:23:27 <lambdabot> 5
14:23:30 <kallisti> good.
14:23:34 <elliott> itidus21: Pls look up Kolgomorov complexity
14:24:17 <oklopol> Phantom_Hoover: can i just say i move my centroid by (-1, -1) and distribute my position evenly enough around the board? i don't really want to come up with a concrete way to do this :D
14:24:35 <oklopol> some portion of your king is taken :o
14:24:38 <oklopol> hmm
14:24:46 <oklopol> i suppose you need to know quite a bit more
14:25:05 <Phantom_Hoover> oklopol, you need to preserve measure and not move through piece that you haven't captured, too.
14:25:06 <Deewiant> elliott: What about good old paq (paq9a), is that available?
14:25:12 <oklopol> i'm not really fluent in functions on reals.
14:25:13 <oklopol> oh right
14:25:21 <elliott> Deewiant: Nope
14:25:24 -!- shachaf has quit (*.net *.split).
14:25:24 -!- jix has quit (*.net *.split).
14:25:25 -!- yiyus has quit (*.net *.split).
14:25:25 -!- SimonRC_ has quit (*.net *.split).
14:25:31 <Deewiant> elliott: Your system sucks
14:25:39 <elliott> Deewiant: Yep
14:25:43 <kallisti> `peek' is not a (visible) method of class `Storable'
14:25:59 <itidus21> i don't understand when everyone did so much research
14:25:59 <oklopol> now this is kind of interesting, perhaps there is a way to take a zero measure set and move it around the other guy's pieces so that none of them can move
14:25:59 -!- shachaf has joined.
14:25:59 -!- jix has joined.
14:25:59 -!- yiyus has joined.
14:25:59 -!- SimonRC_ has joined.
14:26:08 -!- shachaf has quit (Max SendQ exceeded).
14:26:18 <itidus21> while i wasted my life away trying to cope
14:26:18 -!- shachaf has joined.
14:26:27 <kallisti> oh I need Foreign.Storable I think
14:26:38 <Phantom_Hoover> oklopol, it used to be, but then I altered the conditions to let you work around that.
14:27:01 <oklopol> Phantom_Hoover: and what are those conditions?
14:27:18 <Phantom_Hoover> If your opponent tries to corral you by fuzzing a set of zero measure around your piece, you can just take it all in a move with a set of zero measure of your own piece and make your move anyway.
14:27:24 <oklopol> also i proved that you can do that
14:27:38 <oklopol> ah
14:27:39 <Phantom_Hoover> Sets of zero measure are basically irrelevant, I think.
14:27:53 <kallisti> hmmm so now Square is: data Square = Square (Maybe Piece) (Maybe Loop)
14:27:56 <oklopol> right i do recall that small detail now
14:27:59 <kallisti> which is not a derivable Enum.
14:28:21 <Phantom_Hoover> Since they can't make any significant capture, and they can be taken without restriction.
14:29:41 -!- iconmaster_ has joined.
14:29:49 <oklopol> so umm let's see what happens if i just move 1 down
14:30:05 <kallisti> yeah the problem is that Enum can't be derived like that.
14:30:10 <oklopol> oh.
14:30:39 <oklopol> then you win
14:30:41 * kallisti cracks knuckles and gets to instance writing
14:31:22 <oklopol> wait do you...
14:31:23 -!- cheater has quit (Ping timeout: 276 seconds).
14:31:26 <Ngevd> Yay I've actually written a Haskell program that actually does something well!
14:31:35 <oklopol> yes, you do
14:31:40 <kallisti> elliott: help do I write enum instances sanely I'm afraid .
14:31:43 <kallisti> +how
14:31:46 <Ngevd> Now for the tricky part..
14:32:36 <Ngevd> Making it standalone
14:33:03 * kallisti thinks GHC should be able to derive Enum if all of the inner types are Enums...
14:33:14 -!- iconmaster_ has quit (Client Quit).
14:33:52 <oklopol> Phantom_Hoover: well, would you care to make your move?
14:34:07 <Phantom_Hoover> Did you make yours?
14:34:14 <oklopol> yeah one down
14:34:35 <oklopol> well left
14:35:05 <Phantom_Hoover> Yes, I win then, although strictly you're just not allowed to make that move.
14:35:28 <oklopol> true.
14:35:38 <oklopol> but we have just kings to that seems like a silly rule
14:35:52 <kallisti> how would one write instance (Enum a, Enum b) => (a, b)
14:35:56 <kallisti> er
14:35:59 <kallisti> how would one write instance (Enum a, Enum b) => Enum (a, b)
14:36:09 <oklopol> because i'm guessing a perfect game is infinite
14:38:46 <kallisti> elliott: I don't think this is as simple as you're claiming it to be.
14:38:53 <kallisti> or well, it's not now that I've changed the type.
14:39:16 <kallisti> but PieceType could never have Enum derived for it;
14:39:19 <kallisti> and now:
14:39:21 <kallisti> data Square = Square (Maybe Piece) (Maybe Loop)
14:39:28 <elliott> w/e it's seriously not har
14:39:29 <elliott> d
14:39:33 <kallisti> data Loop = Loop Direction LoopKind
14:39:41 <elliott> you're getting hung up on some really trivial functions just because they're instance methods
14:39:54 <kallisti> it has nothing to do with instance methods.
14:41:37 <oerjan> * kallisti thinks GHC should be able to derive Enum if all of the inner types are Enums... <-- doesn't work, consider data Test = I Integer | B Bool -- what is pred (B False) ?
14:42:00 <kallisti> er I mean product types specifically
14:42:37 <Ngevd> What's the deal with multiline strings in Haskell?
14:42:46 <oerjan> ok then, how do do succ (3, True) using _only_ Enum methods
14:42:48 -!- cheater has joined.
14:42:53 <oerjan> *do you do
14:43:00 <kallisti> Maybe Loop has 1 + (8 * 2) enumerations, Maybe Piece has 1 + (2 * (5 + 8 + 8 * (1 + (8 * 8)))) enumerations
14:43:10 <oerjan> Ngevd: they suck, hth
14:43:38 <kallisti> elliott: do you suggest I write these cases out with pattern matching? or is there a convenient bit of math I'm missing.
14:44:11 <kallisti> oerjan: I suppose you would need Bounded also wouldn't you?
14:44:14 <elliott> dude just use fromENums on the fields
14:44:29 <kallisti> followed by.....
14:45:04 <elliott> blargh just pack it however, the whole point is to store everything in [0,256) in the end
14:45:06 <kallisti> I can't add them, or multiply them. what is the maths to take these two numbers and magically enumerate the product type.
14:45:11 <elliott> although hmm
14:45:16 <elliott> wait nm
14:45:33 <oerjan> kallisti: Bounded, Enum, Eq
14:45:38 <kallisti> is it really worth being able to compress a 8x8 grid into 64 bytes?
14:46:20 <elliott> kallisti: If you ever want to write an AI, yes; anyway you're overcomplicating this massively
14:46:30 <kallisti> I'm getting thrown off because you're telling me to do all of these ridiculous things I wouldn't want to do to begin with.
14:46:33 <kallisti> am I?
14:46:39 <elliott> Then why are you asking me for advice
14:47:24 <kallisti> > (1 + (8 * 2)) * (1 + (2 * (5 + 8 + 8 * (1 + (8 * 8)))))
14:47:25 <lambdabot> 18139
14:47:38 <kallisti> > maxBound :: Word16
14:47:39 <lambdabot> 65535
14:47:43 <oerjan> Ngevd: you can do either line continuation with \n\ ... \ or you can use unlines on a list of strings
14:48:09 <kallisti> elliott: ah I see what you mean. How do I take bytes and pack them together?
14:48:19 <Ngevd> Basically, I'm making a standalone version of my latin flash-cards thing, and want the CSV containing the words in the same file
14:48:36 <Ngevd> So I can exploit a loophole in my school's ridiculously tight security
14:48:39 <elliott> kallisti: Bitshifts and .|.?
14:48:43 <Ngevd> IT security
14:48:45 <kallisti> the works.
14:48:47 <kallisti> *that
14:48:53 <oerjan> there's probably something with template haskell
14:48:59 <kallisti> > (1 + (2 * (5 + 8 + 8 * (1 + (8 * 8)))))
14:49:00 <lambdabot> 1067
14:49:18 <kallisti> hmm that's going to require more than a Word8
14:49:19 <elliott> kallisti: Really, I'd just write all the cases out manually at the top level
14:49:23 <kallisti> ...
14:49:28 <elliott> If it's so much bother
14:49:40 -!- cheater has quit (Quit: Ex-Chat).
14:49:41 <kallisti> that's basically the opposite of what I want to do.
14:49:50 <elliott> Have fun
14:50:09 <kallisti> you're making this sound much easier than it actually is.
14:50:42 <elliott> Because I've done similar things before and it was easy
14:50:59 <oklopol> sounds are easy even if you don't make them easy
14:51:04 <oklopol> that's why they are called sounds.
14:51:34 <oerjan> Ngevd: tight security, they don't allow data files?
14:51:45 <elliott> Gregor: Where did the old rezzo agents repo go?
14:51:53 <elliott> The one with my stuff in it :P
14:52:22 <Ngevd> oerjan, they don't allow executable files
14:52:36 <Ngevd> oerjan, except for some bizarre reason in .zip archives
14:52:48 <oerjan> Ngevd: well .zip it then?
14:53:08 <Ngevd> oerjan, can't access files from within a zip
14:53:13 <Ngevd> It's a weird system
14:53:22 <oerjan> ...
14:53:26 <kallisti> .....ugh
14:53:27 * oerjan leaves this to elliott
14:53:29 <kallisti> my brain
14:53:29 <kallisti> hurts.
14:53:43 * elliott leaves this to oerja
14:53:44 <elliott> n
14:53:59 * oerjan infloops
14:54:06 <Ngevd> Just trust me.
14:54:09 <itidus21> flashcards eh
14:54:18 <Ngevd> You don't go to my school, you don't need to know why I need to do this
14:54:24 <itidus21> its probably best to think in terms of association forming time thresholds
14:54:44 <kallisti> so minimally complete definition for Enum is fromEnum toEnum right?
14:55:00 <itidus21> like.. expose self to one stimulus.. then to another
14:56:16 <itidus21> then again.. maybe not
14:56:44 <itidus21> a lot of learning is subtle
14:57:00 <itidus21> meanings of words are necessarily anticipated
14:57:11 <itidus21> you can't force the meanings
14:57:20 <itidus21> you can learn through anticipating the meaning
14:57:55 <itidus21> then.. you use the word.. and get corrected
14:58:08 <itidus21> i dont know
14:59:37 <kallisti> > 1067 - 16
14:59:38 <lambdabot> 1051
14:59:49 <kallisti> instance Enum Loop where fromEnum (Loop d Unidirectional) = fromEnum d fromEnum (Loop d Bidirectional) = 7 + fromEnum d toEnum i = Loop (toEnum (i `mod` 8)) (toEnum ((i+1) / 8))
14:59:53 <kallisti> 16 down, 1051 more to go.
15:00:31 <kallisti> actually I think that should be i not i+1
15:00:42 <kallisti> yes
15:00:53 <kallisti> also `div`
15:01:07 <kallisti> also... divmod
15:01:10 <kallisti> also... quotrem
15:01:51 <Ngevd> Thanks to my crazy fear of linebreaks where I do not think linebreaks should be, I have a line that is 56844 characters long
15:02:01 <kallisti> oh good.
15:02:08 * kallisti is OCD about whitespace layout
15:02:28 <kallisti> and striking a balance between not having way too many lines and not condensing everything into one line
15:02:47 <itidus21> basically, the best way to learn a language is to read it
15:02:51 <itidus21> or speak it
15:03:00 <itidus21> err i mean listen to it
15:03:05 <Ngevd> *54952
15:03:12 <Ngevd> Less impressive, but still a lot
15:03:14 <kallisti> elliott: hi correct my math provide suggestions
15:03:24 <itidus21> reading may not be sufficient
15:03:25 <itidus21> hummmm
15:03:53 <kallisti> oh hmmm I could use Bounded I think.
15:04:13 <kallisti> ah
15:04:17 <kallisti> a formula!
15:05:04 <Ngevd> Actually, do I really need the standalone version?
15:05:59 <kallisti> fromEnum (Loop d t) = fromEnum t * 8 + fromEnum d
15:05:59 <kallisti> toEnum i = Loop (toEnum d) (toEnum m)
15:06:00 <kallisti> where
15:06:00 <kallisti> (d,m) = i `quoteRem` 8
15:06:04 * kallisti suddenly remembers how to do math
15:06:12 <itidus21> so can binary lambda calculus be encoded as unary lambda calculus?
15:06:41 <itidus21> im guessing the only problem is leading zeros
15:06:56 <Ngevd> Yes, but it would be stupid
15:07:11 <kallisti> actually I'm going to use let instead of where
15:07:13 <Ngevd> Nah, just assume whatstisface
15:07:20 <kallisti> because I think let doesn't get as much love as where. :P
15:07:26 <Ngevd> Binominal base 2 or something
15:07:31 <Ngevd> Binary without zeroes
15:07:34 <kallisti> elliott: hi I learned how to do math
15:07:34 <itidus21> it wouldn't be stupid :D
15:08:11 <kallisti> though I'm pretty sure PieceInfo will be a number of special cases
15:08:24 <elliott> kallisti: ok
15:08:39 <elliott> kallisti: really you could autogenerate the enumeration stuff
15:08:45 <kallisti> ..
15:08:49 <elliott> just generate a list of inhabitants with functor
15:08:49 <kallisti> this was kind of like
15:08:52 <kallisti> what I was asking for.
15:08:54 <elliott> and use the indices
15:09:01 <elliott> well you still need to manually write stuff
15:09:02 <elliott> but
15:09:09 <elliott> data T = A S U | B Q
15:09:11 <elliott> you'd do
15:09:16 <oerjan> itidus21: to solve the leading zeros, just add a 1 to the beginning of every string of 0's and 1's
15:09:16 <kallisti> "list of inhabitates with functor" wat
15:09:28 <kallisti> oh you mean do list stuff..
15:09:30 <elliott> instance Elems T where elems = A <$> elems <*> elems <|> B <$> elems
15:09:48 <elliott> then you can trivially define toEnum/fromEnum implemenetations for Elems things
15:10:19 <kallisti> wat
15:10:34 <itidus21> ok so .. if we run with the idea of unary lambda calculus, then programming becomes a matter of bounding defining groups of objects into sets
15:10:37 <kallisti> what does elems return
15:10:46 <itidus21> ^bounding
15:10:54 <elliott> kallisti: [a]
15:11:01 <elliott> class Elems a where elems :: [a]
15:11:04 <kallisti> oh hmmm
15:11:07 <elliott> instance Elems Rank where elems = [R1, R2, ...]
15:11:10 <kallisti> right
15:11:20 <elliott> instance (Elems a) => Elems (Maybe a) where elems = Nothing <|> Just <$> elems
15:11:25 <kallisti> > [1,2,3] <|> [4,5,6]
15:11:25 <lambdabot> [1,2,3,4,5,6]
15:11:48 <itidus21> like for instance... you could hand someone a bucket of marbles and say "here is your program"
15:11:50 <kallisti> ah
15:11:51 <elliott> kallisti: make sure to be careful with the definition of toEnum/fromEnum based on Elems, you want to avoid recomputing indices each time, this is easy if you know how pure memoisation works
15:11:59 <kallisti> I don't
15:12:15 <elliott> well... it's not actually that easy for the toEnum case
15:12:20 <elliott> but anyway
15:12:25 <itidus21> and just by adding or subtracting marbles from a bucket you can code
15:12:29 <elliott> actually i think you can, hmm
15:12:32 <itidus21> i think it is pretty cool
15:12:32 <elliott> gimme a sec, lemme whip something up
15:13:10 * kallisti was bogged down in arithmetic that he forgot he could just use lists or something.
15:13:18 <kallisti> +so much
15:13:19 <kallisti> or something
15:13:23 <kallisti> make that sentence make sense kthx
15:13:27 <elliott> yeah that probably isn't the best idea though because of the traversal overhead each time, however i'm writing something which should avoid that trivially
15:13:32 <elliott> and allow the same simple Elems instances
15:14:04 <kallisti> well you could avoid the traversal overhead by using a different data structure
15:14:07 <kallisti> such as an array
15:14:08 <kallisti> or... vector.
15:14:12 <elliott> better to parameterise on the structure
15:14:14 <elliott> and no, that doesn't work
15:14:24 <elliott> i'll get bored of this and stop implementing it if you keep proposing stupid alternatives :p
15:14:33 <kallisti> OKAY FINE WHATEVER
15:15:00 <itidus21> most results are "If Steve Jobs decides that some unary lambda calculus is the language of choice for the iPhone 4.0, the developer community is going to find away to ..."
15:15:32 <kallisti> elliott: also note that I'm pretty sure Word16 is the word size I'll need for Storable
15:15:35 <kallisti> if that's relevant at all
15:15:40 <kallisti> don't think it is
15:15:51 <elliott> kallisti: i'm pretty sure you could pack it into one byte but okay
15:16:19 <kallisti> sorry multiplication dawg
15:16:32 <itidus21> ahh heres quote "If Steve Jobs decides that some unary lambda calculus is the language of choice for the iPhone 4.0, the developer community is going to find a way to rationalize his selection and talk about how much they love the language."
15:16:45 <kallisti> the main reason I can't do that is because there are 8 * 8 * 8 different kinds of portals.
15:17:46 <kallisti> which I can't avoid unless I remove the coordinate pair from the definition of PieceInfo
15:18:16 <kallisti> which is a possibility I guess, but then I'll have to hunt down the sister portal manually or store their associative seperately, which isn't out of the question.
15:18:44 <elliott> Hunt it down if it's deterministic; you can cache it in a memo table later.
15:19:06 <kallisti> it's just a coordinate to the other portal.
15:19:13 <kallisti> I guess that's deterministic?
15:19:19 <kallisti> I'm not sure what you mean by that.
15:20:00 <kallisti> yeah okay I'll take out the coordinate
15:20:03 <kallisti> the simplifies the storable stuff
15:20:14 <kallisti> *that
15:20:43 <kallisti> I can just store the association seperately. it's literally just a 4-element table.
15:21:24 <kallisti> okay that's much easier I could probably just handwrite this now.
15:21:41 <kallisti> the PieceInfo Enum is much simpler. basically 8 Arrows and 8 Portals and 1 of all the other pieces.
15:22:56 <elliott> @hoogle interleave
15:22:56 <lambdabot> package interleave
15:22:56 <lambdabot> Graphics.Rendering.OpenGL.GL.VertexArrays data InterleavedArrays
15:22:57 <lambdabot> Graphics.Rendering.OpenGL.GL.VertexArrays interleavedArrays :: InterleavedArrays -> Stride -> Ptr a -> IO ()
15:23:05 <elliott> @hoogle [a] -> [a] -> [a]
15:23:05 <lambdabot> Prelude (++) :: [a] -> [a] -> [a]
15:23:05 <lambdabot> Data.List (++) :: [a] -> [a] -> [a]
15:23:06 <lambdabot> Data.List deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
15:23:27 <kallisti> Control.Monad.Logic.Class I believe
15:23:38 <oerjan> :t interleave
15:23:39 <lambdabot> forall (m :: * -> *) a. (MonadLogic m) => m a -> m a -> m a
15:26:15 <elliott> kallisti: Anyway, turns out it's trivial
15:26:21 <elliott> http://sprunge.us/IZVC or something
15:26:42 <elliott> Though I think you can avoid overhead and the Ord constraint there
15:26:45 -!- Ngevd has quit (Ping timeout: 255 seconds).
15:27:19 -!- oerjan has quit (Quit: Later).
15:27:21 <kallisti> elliott: why Map and not array
15:27:48 <elliott> Well, because arrays can;t be indexed by *a*s...
15:27:57 <elliott> It'd work for the fromEnum case, but who cares.
15:28:04 <elliott> Don't use a Vector by default.
15:29:20 <kallisti> elliott: how often does Storable require that conversion to happen.
15:29:42 <elliott> Every single time you take an element out or put one in
15:29:47 <elliott> So, every single operation
15:29:57 <elliott> Unless you want to traverse a >thousand-element list each time?
15:30:15 <elliott> Part 3487234 in the ongoing series "it's your algorithms".
15:31:07 <kallisti> elliott: ..I never suggested traversing a thousand element list each time?
15:31:26 <elliott> Well, I presumed you were implying it was overengineering wrt "how often"
15:31:47 <kallisti> no I'm just wondering if it would be better to use an array in the fromEnum case
15:31:54 <elliott> Oh
15:31:58 <elliott> Probably irrelevant
15:32:08 <elliott> Profile first, etc.
15:32:09 <kallisti> you mentioned it does some kind of memoization? how does that work.
15:32:19 <elliott> It's not really.
15:32:33 <elliott> It's just floating the shared data outside the lambda so that it's shared.
15:32:44 <elliott> It's just related.
15:33:31 <kallisti> under what conditions does that occur.
15:33:37 <elliott> When you do it.
15:33:43 <kallisti> >_>
15:34:11 <elliott> I can't explain to you how to take advantage of sharing in a vacuum detached from the fact that you don't really understand the lazy evaluation model, sorry.
15:34:37 <kallisti> are you sure about that? what do you think I don't understand?
15:34:49 <elliott> I don't know, but you think seq has side-effects
15:34:57 <elliott> So you clearly misunderstand /something/
15:35:17 <Sgeo> Everything is side-effectful at the GHC level. Observing a value mutates memory
15:35:20 <kallisti> I thought we discovered it was because I didn't use the same definition of side-effect
15:35:32 <elliott> You might have discovered that
15:35:46 <elliott> Unfortunately any definition of side-effect like that is contradictory with your observed viewpoints as Sgeo points out
15:37:09 <kallisti> I suppose seq could just be considered a language primitive.
15:37:14 <elliott> Here we go again
15:37:16 -!- Ngevd has joined.
15:38:14 <elliott> It has well-defined denotational semantics, and can be implemented operationally with no trouble at all (evidence: GHC)
15:38:31 <Ngevd> Hello!
15:38:32 <elliott> So it's as "special" as any other Prelude function or whatever
15:38:48 <itidus21> hmmmmmm
15:38:54 <Sgeo> elliott, but can it be implemented without having implemented seq first?
15:39:13 <Sgeo> null can be defined without null, just with pattern matching
15:39:34 <elliott> Sgeo: Good luck trying to define the entirety of Haskell without relying on a few primitives.
15:40:24 <Sgeo> Ints, Chars, (actually not Chars), IO stuff
15:40:29 <Sgeo> Not sure what else needs primitives
15:40:33 <kallisti> seq :: a -> b -> b
15:40:33 -!- iconmaster has joined.
15:40:34 <kallisti> seq = let x = x in x
15:40:37 <kallisti> good prelude function
15:40:41 <elliott> newtype Int = Int Bool Bool Bool ... thirty one Bools
15:40:48 <elliott> kallisti: Oh snap, evidence by GHC implementation!
15:40:52 <elliott> I can prove SO MUCH about Haskell in that way.
15:41:00 <elliott> For instance, the function arrow (->) is impure, as evidenced by the definition of IO.
15:41:01 <kallisti> elliott: is that the actual implmenetation?
15:41:03 <elliott> No.
15:41:08 <elliott> Read the comment at the top.
15:41:34 <kallisti> so then it's not like "any ther Prelude function"
15:41:37 <kallisti> +o
15:41:38 <olsner> newtype Bool = Bool (a -> a -> a)
15:41:40 <elliott> Sgeo: Anyway, things like defining data constructors etc. are primitives; seq just happens to be a value
15:41:56 <elliott> You could also implement seq in terms of some other primitive, say ($!)
15:42:16 <elliott> kallisti: You're quoting GHC source code, your argument has no applicability to Haskell the language whatsoever in the first place.
15:42:25 <kallisti> elliott: what is my argument?
15:42:27 <Ngevd> Isn't ($!) defined in terms of seq?
15:42:37 <elliott> kallisti: I have no idea, it's too stupid to work out.
15:42:48 <itidus21> `log parts and the composites are
15:42:49 <elliott> Ngevd: You could make ($!) the primitive and define seq as (id $!).
15:42:55 <Ngevd> True
15:42:56 <HackEgo> 2012-01-07.txt:11:17:47: <itidus21> if we say that the parts and the composites are both classed as objects, and that we can only perform operations on objects, and that all operations have equal weight, then there is the tradeoff that group operations are faster but clumsier
15:42:56 <kallisti> if you think my arguing is "lol this is why seq has side effects" then you're wrong.
15:43:34 <itidus21> i realized that this is referring to the rules of lambda calculus contrasted with whole lambda calculus programs
15:44:28 <kallisti> elliott: I was simply saying that seq is not like "any other Prelude function" because it has a special implement as a primitive.
15:44:44 <elliott> kallisti: Int (+) is also implemented as a Primitive in GHC.
15:44:47 <kallisti> yes.
15:44:53 <elliott> However you can implement (+) on Ints yourself.
15:45:05 <elliott> So your argument is really fucking stupid, it's "one implementation does it this way so I'm too dumb to imagine any other way".
15:45:05 <kallisti> not as efficiently though, right?
15:45:14 <elliott> Oh! Efficiency! The definition of a language.
15:45:27 <kallisti> elliott: ....I'm not even making an argument about seq being a side-effect, dude.
15:45:35 <elliott> Seriously, the fact that GHC defines <anything> this way does not mean that <this way> is somehow specially related to <anything>.
15:45:43 <elliott> kallisti: You're the only person who's said "side-effect" in like the last 20 messages.
15:46:24 <itidus21> so the question is, how many 1's of unary lambda calculus is required to have a haskell interpreter... ahh.. if only one could know
15:46:24 <kallisti> elliott: seq is a primitive of the language. therefore, it's not a side-effect.
15:46:33 <elliott> God this is really stupid shut up about seq
15:48:03 <itidus21> such a number must exist :D
15:48:55 <Sgeo> elliott, with primitives: data type definitions including data constructors and the full type system, pattern matching, guards, what in the Prelude cannot be defined in terms of those primitives
15:49:10 <kallisti> seq
15:49:19 <elliott> Sgeo: Don't know/care, especially because it's irrelevant
15:49:30 <elliott> Doubly especially because it'll encourage kallist
15:49:31 <elliott> i
15:49:37 <kallisti> encourage me to do... what?
15:49:44 <Sgeo> elliott, actually, I think my question is partially kallisti's point
15:49:44 <kallisti> I am not even arguing anything
15:49:47 <Sgeo> Maybe.
15:50:17 <elliott> kallisti: No, you're doing the thing where you just say stupid things continually and reply to people who try and explain why you're wrong while adamantly insisting you're not actually engaging in any kind of disagreement.
15:50:31 <kallisti> I literally just made a statement about a particular thing you said about seq being like any other Prelude function. other than that I've said "well I guess seq is a language primitive"
15:50:52 <kallisti> therefore I'm wrong.
15:50:54 <kallisti> about everything
15:50:56 <kallisti> or something.
15:51:29 <kallisti> an argument where there was none. fun. I'm going to go do something else.
15:52:06 <elliott> Good god.
15:58:07 <kallisti> !perl `ls 'stuff'`
15:58:10 <EgoBot> ​/bin/ls: cannot access stuff: No such file or directory
15:58:19 <kallisti> `run perl -e '`ls 'stuff'`'
15:58:24 <HackEgo> ls: cannot access stuff: No such file or directory
15:58:25 <kallisti> `run perl -e '`ls q(stuff)`'
15:58:28 <HackEgo> sh: Syntax error: "(" unexpected
15:59:07 <kallisti> `run perl -e '`ls q/stuff/`'
15:59:11 <HackEgo> ls: cannot access q/stuff/: No such file or directory
15:59:27 <kallisti> `run perl -e '`echo 'hi'`'
15:59:31 <HackEgo> No output.
15:59:45 <kallisti> `run perl -e 'qx(echo q(hi))'
15:59:48 <HackEgo> sh: Syntax error: "(" unexpected
15:59:51 <kallisti> ?
16:00:02 <kallisti> `run perl -e 'qx{echo q{hi}}'
16:00:05 <HackEgo> No output.
16:02:48 -!- nooga has quit (Ping timeout: 240 seconds).
16:10:04 -!- elliott has quit (Remote host closed the connection).
16:19:50 <kallisti> so I've come to the conclusion
16:19:55 <kallisti> that I'm completely incapable of copypasting something into emacs.
16:20:36 <kallisti> I thought I knew how but it's not working :P
16:20:44 <kallisti> and... suddenly it works!
16:21:44 <Vorpal> <kallisti> that I'm completely incapable of copypasting something into emacs. <-- middle mouse button?
16:21:51 <Vorpal> if you are in X that is
16:22:20 <Vorpal> I generally don't use the ctrl-v/ctrl-c buffer outside stuff like gimp
16:22:36 <Vorpal> I have no idea how you access that in emacs
16:24:58 <Ngevd> I don't even know how to /type/ in emacs
16:25:40 <Vorpal> Ngevd, uh it is easy just hit the keys on your keyboard
16:26:40 <Vorpal> emacs is a really nice editor. Of course it has some flaws, but I find it generally have less flaws than other editors.
16:27:37 <Vorpal> (of course that depend on what I'm doing, I tend to use other editors for some specific languages, or for some specific tasks)
16:30:25 <itidus21> what are the benefits of levenshtein coding over regular binary coding?
16:31:07 <kallisti> Vorpal: you have to use C-y in emacs
16:31:10 <kallisti> but it wasn't working for some reason..
16:31:14 <Vorpal> kallisti, heh
16:31:43 <itidus21> or....
16:31:46 <kallisti> C-y uses the same buffer as selected text in X
16:32:07 <itidus21> does levenshtein coding mean that in one series of 0s and 1s you can encode multiple integers?
16:32:28 <itidus21> thats amazing
16:42:26 <oklopol> it is?
16:42:59 -!- Ngevd has quit (Read error: Connection reset by peer).
16:45:23 <oklopol> also i don't think it means that
16:45:27 -!- Ngevd has joined.
16:46:17 <kallisti> itidus21: wat
16:46:33 <kallisti> !perl `echo 'hi'`
16:46:34 <EgoBot> No output.
16:46:37 <kallisti> !perl print `echo 'hi'`
16:46:37 <EgoBot> hi
16:47:07 <itidus21> coping from wiki 0101100 = 0 1 2? :D
16:47:19 <itidus21> [0][10][1100] = 0 1 2
16:48:41 <itidus21> 0000 = [0][0][0][0] = 0 0 0 0
16:49:14 <itidus21> [10][10][10][10][0] = 1 1 1 1 0
16:49:14 <kallisti> bash really
16:49:15 <kallisti> really
16:49:20 <kallisti> really needs perl quote-like operators
16:49:24 <itidus21> but... perhaps what i am doing wrong is wording my statement
16:50:19 <oklopol> well herp derp yes, the levenshtein code is a code, so you can stick integers in a sequence and decode uniquely.
16:50:58 <itidus21> sorry about that
16:50:59 <oklopol> but you can also just encode sets of integers in an integer and use a single codeword
16:51:44 <itidus21> :-?
16:51:51 <oklopol> in fact it's even a prefix code, another such code is coding n to 0^n1
16:51:53 <fizzie> Not just any code, a prefix code. (Also why is "prefix code" and "prefix-free code" the same thing nurrrr?)
16:52:23 <itidus21> its weird how all of this is obvious to you guys
16:52:26 <oklopol> fizzie: please don't restate my lines. that doesn't make you sound smart.
16:52:40 <fizzie> You were just TOO FAST for me.
16:53:02 <fizzie> But that's all right, "it's no shame to be fast", like we say here in Finn land.
16:53:05 <itidus21> i mean you must have taken math as a hobby rather than a school thing
16:53:14 <oklopol> itidus21: i've had a lot of this stuff on courses. from the coding perspective and the combinatorics on words perspective.
16:53:24 <oklopol> math is my profession
16:53:39 <oklopol> not sure that's a word though
16:53:42 <fizzie> You could even go as far as to say oklopol eats math for breakfast.
16:53:59 <itidus21> profession is a word
16:54:06 <Ngevd> I eat little hoops of wholegrain, covered in chocolate for breakfast
16:54:15 <oklopol> i'm just wondering if it's as general term for job as i think it is.
16:54:22 <itidus21> combinatorics however is probably not what you intended
16:54:28 <itidus21> but might be a word
16:54:32 <oklopol> no, i meant combinatorics on words
16:54:51 <oklopol> which has almost nothing to do with combinatorics
16:55:27 <fizzie> 2. (5) profession -- (an occupation requiring special education (especially in the liberal arts or sciences))
16:55:37 -!- derdon has quit (Remote host closed the connection).
16:55:42 <oklopol> math doesn't require any sort of education
16:55:52 <fizzie> So it's just your occupation.
16:55:57 <oklopol> jobulation
16:56:13 <fizzie> Tribulation.
16:56:55 <fizzie> OED's definition just says you need to know some stuff, not get an education.
16:56:58 <fizzie> "An occupation in which a professed knowledge of some subject, field, or science is applied; a vocation or career, especially one that involves prolonged training and a formal qualification. Also occas. as mass noun: occupations of this kind."
16:57:19 <fizzie> "More widely: any occupation by which a person regularly earns a living."
16:57:22 <oklopol> well i suppose you need to know some stuff
16:58:00 <oklopol> itidus21: do you have a university degree yet?
16:58:10 <itidus21> no
16:58:25 <oklopol> have you considered getting a university degree0
16:58:27 <oklopol> ?
16:58:51 <itidus21> i am living in a weird kind of dire strait...
16:59:11 <itidus21> the world has defeated me from every angle
16:59:32 <oklopol> well i'm aware of that, i felt the question was orthogonal enough
16:59:57 <itidus21> success is mostly an illusion
16:59:57 <oklopol> fizzie: how many phd's do you have?
17:00:28 <itidus21> more time is spent discussing the rules of chess than playing chess
17:00:39 <itidus21> the actual pieces are like a distant memory
17:01:13 <itidus21> my mom is extraordinarily inefficient at walking up and down the passageway here at 4am
17:01:24 <itidus21> its like she takes the maximum walking path
17:01:54 <oklopol> well that's an np-complete problem so she might be smarter than you think.
17:03:00 <oklopol> well actually certainly not
17:03:28 <oklopol> well depends on what you mean by maximal
17:03:29 <itidus21> uhm.. ok what she does is.. she doesn't queue up tasks at locations.. instead she goes back and forth between locations
17:03:35 <oklopol> but maybe the edge problem is more natural
17:04:10 <itidus21> but the only reason this bothers me, is that my brothers hearing is too good..
17:04:22 <itidus21> and everything makes him angry
17:04:37 <oklopol> i see, i see
17:04:47 <oklopol> i don't have brothers
17:04:48 <itidus21> and part of him blames my mom for all that is wrong in his life which he kind of admits once
17:05:13 <oklopol> has he considered blaming himself?
17:05:33 <itidus21> so.. to me.. its like when my mom makes noise, she is hitting a hornets nest with a stick
17:05:38 <itidus21> although she has the right to
17:05:49 <itidus21> well.. he bought 2 books.. 1 about anger, 1 about shame
17:06:01 <oklopol> shame?
17:06:02 <itidus21> so, he means well on some level
17:06:06 <itidus21> yup
17:06:12 <oklopol> why is he ashamed
17:06:23 <itidus21> i dunno.. and probably dangerous to ask him :D
17:06:37 <oklopol> awesome family you have there
17:06:45 <itidus21> nah its not so bad
17:06:49 <oklopol> if only you were 18 and could move away
17:06:55 <oklopol> okay
17:07:00 <itidus21> a lot of my problems is in me though
17:07:15 <fizzie> I've got a nice round number.
17:07:15 <itidus21> that i am basically the cause of my problems
17:07:32 <itidus21> i have trouble with everyone i meet since i was child
17:07:34 <oklopol> fizzie: which number?
17:07:45 -!- derdon has joined.
17:07:48 <oklopol> itidus21: is it because you keep telling them that you suck and they get tired of it?
17:08:01 <oklopol> have you considered letting them find out on their own?
17:08:17 -!- Ngevd has quit (Quit: Goodbye).
17:08:34 <fizzie> Zero, the roundest number. (Well, I suppose that's a matter of definition.)
17:09:04 <Slereah> It's true
17:09:15 <Slereah> You can't round it down to the nearest 10^n!
17:09:26 <Slereah> It's already all rounded!
17:09:41 <oklopol> and 1 isn't?
17:09:45 <itidus21> oklopol: part of what i have become now involves telling people how i want them to see me.. i can't just stop it
17:10:07 <oklopol> itidus21: you cannot stop it even with new people you meet?
17:10:41 <itidus21> my behaviour is basically uniform
17:10:43 <oklopol> it's certainly understandable not to be able to change your role amongst people you already have a history with, but new people are a chance to modify yourself.
17:11:09 <itidus21> i think i may be cursed
17:11:29 <oklopol> sounds likely.
17:12:17 <itidus21> i have become refuse of society
17:12:22 <oklopol> sometimes my hands start bleeding uncontrollably and i hear a choir of angels that tells me to kill myself and everyone around me.
17:12:33 <oklopol> so i have a hunch i know how you feeel
17:12:34 <oklopol> *feel
17:13:33 <itidus21> the way it works is the weaker someone is, the more severely is the punishment if they stand up for themselves
17:13:40 <oklopol> what does it mean to be refuse of society
17:13:47 <itidus21> since in a very subtle way, it is like a class war
17:14:06 <oklopol> stand up for themselves? i have no idea how that concept applies to modern society.
17:16:21 <kallisti> oklopol: he means he's literally trash from society.
17:16:24 <itidus21> stand up to who? my family? my friends? my coworkers?
17:16:36 <itidus21> this is who i have to stand up to day to day?
17:16:43 <itidus21> how can it work?
17:16:49 <oklopol> yeah and i'm not sure what you mean by that
17:16:58 <itidus21> why should they be the enemy?
17:17:09 <oklopol> are they telling you to do things? will they hurt you if you don't?
17:17:37 <itidus21> how can someone stand up to everyone?
17:17:52 <oklopol> kallisti: like someone's poop that learned to talk? that would be impressive.
17:18:06 <oklopol> itidus21: what is "standing up to someone"?
17:18:33 <oklopol> i never quite understood
17:18:57 <itidus21> thats how society works... the ones in real trouble are the ones where their closest humans have turned against them
17:19:35 <oklopol> err, if someone turns against you, you walk away from them?
17:20:23 <itidus21> surely i can't be the only one
17:20:30 <oklopol> i bet you aren't
17:20:54 <itidus21> an undercurrent becomes established
17:21:14 <itidus21> well at least my dad wasn't abusive alcoholic
17:21:24 <itidus21> so.. i see that on tv shows
17:21:27 <itidus21> it is for some
17:21:48 <itidus21> he was in his own words( :-P ) perfect
17:22:05 <kallisti> :t Map.!
17:22:06 <lambdabot> parse error on input `Map.!'
17:22:18 <kallisti> :t Map.(!)
17:22:19 <lambdabot> Not in scope: data constructor `Map'
17:22:21 <kallisti> :t (Map.!)
17:22:22 <lambdabot> Couldn't find qualified module.
17:23:02 <itidus21> but, when my father died.. i slowly learned the world is a very lonely place
17:23:11 <oklopol> my dad was a bit of an abusive alcoholic. i didn't really mind.
17:23:59 -!- derdon has quit (Remote host closed the connection).
17:27:54 -!- sebbu2 has joined.
17:28:12 <oklopol> if the world feels like a lonely place, your friends probably suck
17:28:36 <kallisti> yep
17:28:58 <itidus21> :-) it wasn't their fault
17:29:03 <oklopol> you should try kallisti for instance, he's a great friend
17:29:05 -!- sebbu has quit (Ping timeout: 244 seconds).
17:29:19 <oklopol> well true, so maybe you can let them live.
17:30:00 <itidus21> the first guy.. his father was some kind of abusive.. his mother divorced.. the older brother, in 2nd grade i was told would steal his mothers rings and make him take the blame for it
17:30:35 <itidus21> i do not know what else happened to him
17:30:51 <oklopol> and that still somehow magically affects his life?
17:31:01 * kallisti is the best friend ever.
17:31:01 <oklopol> i will never understand people
17:31:24 <itidus21> no.. i knew him in 2nd grade :P
17:31:40 <oklopol> oh okay.
17:33:33 <itidus21> another guy, divorced parents again... living with his dad who had a string of failed relationships.. i ended up at the same school as him for people who were having trouble with school for some reason or other
17:33:43 <itidus21> i dunno the full story of him
17:34:26 <itidus21> second guy had .. endless stream of girlfriends.. then finally had a baby.. ended up leaving it apparently
17:34:45 <itidus21> i dunno
17:34:55 <itidus21> i have spent a long time with such weird people
17:35:37 <itidus21> and since i don't argue back, fight back.. eventually things always leads to abuse
17:35:58 <oklopol> physical abuse?
17:36:16 <itidus21> any sort
17:36:19 <Phantom_Hoover> No; "FFS iti would you *please* shut up for once" abuse.
17:36:55 <oklopol> well your life certainly sounds interesting.
17:37:01 <oklopol> but you should really stop bragging about it
17:37:22 <oklopol> how do you expect to keep living our perfect lives after that.
17:37:41 <oklopol> i have to leave and be an asshole somewhere else, see you later :)
17:39:48 <itidus21> since my father died, the motivation to program has started to dwindle.. hard to explain the deep rut.. withholding all my energy..
17:40:00 <kallisti> :t curry
17:40:01 <lambdabot> forall a b c. ((a, b) -> c) -> a -> b -> c
17:40:12 <kallisti> :t uncurry
17:40:13 <lambdabot> forall a b c. (a -> b -> c) -> (a, b) -> c
17:40:16 <oklopol> have you considered math, it's like programming but better
17:40:25 <itidus21> clearly they are the same thing
17:40:38 <itidus21> now.. you run along :D
17:40:41 <oklopol> you'd think
17:40:42 <kallisti> programming is more like a subset of math.
17:40:49 <oklopol> she has to brush her hair or something
17:40:53 <kallisti> the subset that's mostly concerned with computable things.
17:41:02 <oklopol> so i have another 20 min
17:41:08 <itidus21> ahhhh
17:41:10 <itidus21> women
17:42:36 <itidus21> so, theres combinatrics and lambda calculus right?
17:42:45 <itidus21> and they are effectively capable of the same things right?
17:43:00 <kallisti> um
17:43:04 <itidus21> ^combinatorics
17:43:19 <kallisti> combinatorics is like... counting things
17:44:03 <kallisti> I'm sure more interesting stuff happens in advanced combinatorics, but the introduction to combinatorics is always stuff like "how many poker hands are three of a kinds" and that sort of thing.
17:44:12 <Phantom_Hoover> <itidus21> women
17:44:12 <Phantom_Hoover> <itidus21> so, theres combinatrics and lambda calculus right?
17:44:15 <Phantom_Hoover> The Combinatrix.
17:44:21 <itidus21> :o
17:44:24 <kallisti> Phantom_Hoover: ...
17:44:42 <itidus21> thats probably what i was thinking
17:44:43 <Phantom_Hoover> Combinatrix and Lambda Calculus.
17:45:37 <itidus21> "In the theory of computation, a diversity of mathematical models of computers have been developed." hmm..
17:45:43 <oklopol> itidus21: combinatory logic and combinatoric are rather different things
17:45:44 <kallisti> now that I've allowed elliott to pollute my program with typeclass magic I can't make sense of these type errors.
17:46:08 <oklopol> *s
17:47:11 <oklopol> combinatory logic is taking a subset of lc where you can only use some fixed set of functions, which are usually named, say s and k.
17:47:53 <oklopol> combinatorics is where you say a mugglative set is a finite set with additional structure blah and then you ask how many mugglative sets exist
17:48:11 <kallisti> heh mugglative
17:48:16 <kallisti> so many fun words.
17:48:33 <oklopol> unfortunately i don't think that's an actual term in math
17:48:36 <oklopol> and blah isn't either
17:49:04 <olsner> mugglative blah-theory
17:49:10 <oklopol> there is a concept called sex entropy though, have i mentioned
17:50:17 <kallisti> no.
17:50:26 <kallisti> sounds fun.
17:50:35 -!- sebbu2 has changed nick to sebbu.
18:09:16 -!- MSleep has changed nick to MDude.
18:17:22 <kallisti> @hoogle Ptr a -> IO a
18:17:22 <lambdabot> Foreign.Storable peek :: Storable a => Ptr a -> IO a
18:17:22 <lambdabot> Foreign.Marshal.Alloc free :: Ptr a -> IO ()
18:17:22 <lambdabot> Network.Socket.Internal peekSockAddr :: Ptr SockAddr -> IO SockAddr
18:23:45 -!- kallisti_ has joined.
18:25:16 -!- kallisti has quit (Ping timeout: 252 seconds).
18:32:06 <kallisti_> @tell elliott do you think using Ix and switching elemFromEnum to an array implementation would be faster or slower than using Map? or does an Ix instance basically require the same kind of lookup code?
18:32:06 <lambdabot> Consider it noted.
18:33:41 -!- Klisz has joined.
18:43:17 -!- PiRSquaredAway has changed nick to PiRSquared17.
18:43:22 -!- kallisti_ has changed nick to kallisti.
18:47:52 -!- sebbu2 has joined.
18:47:52 -!- sebbu2 has quit (Changing host).
18:47:52 -!- sebbu2 has joined.
18:48:52 -!- sebbu has quit (Ping timeout: 240 seconds).
19:03:17 -!- nooga has joined.
19:14:29 -!- Ngevd has joined.
19:14:41 <Ngevd> I've just had an idea for an esolang!
19:14:59 <Ngevd> A mixture of lambda calculus and the Copenhagen interpretation of quantum mechanics!
19:15:48 <Ngevd> BUT WITHOUT QUANTUM MECHANICS!
19:15:55 <Ngevd> So, lambda calculus
19:16:13 <Ngevd> Hmm...
19:16:20 <Ngevd> It could be a functional extension to ORK...
19:18:12 <Ngevd> There is a magic box called Trevor.
19:19:56 <Ngevd> When the first thing is put into Trevor, Trevor is to turn the first thing into a magic box called Jean such that when the second thing is put into Jean it is turned into the first thing.
19:20:42 <Ngevd> Trevor = const
19:20:44 <Ngevd> :)
19:21:52 <Ngevd> Of course, I know not enough about Ork at all..
19:29:55 -!- yiyus has quit (Ping timeout: 240 seconds).
19:31:03 -!- Ngevd has quit (Ping timeout: 276 seconds).
19:41:23 -!- Ngevd has joined.
19:43:24 -!- yiyus has joined.
19:43:46 <itidus21> so what is a function? i feel like a jackass asking this again
19:43:52 <Ngevd> Hello
19:44:01 <itidus21> is there any deep intuition of what a function is?
19:44:20 <Ngevd> A function is a subroutine that returns a value
19:44:41 <kallisti> lol
19:44:55 <itidus21> hmm
19:45:07 <Ngevd> In some languages, in other languages it is THE DIFFERENCE BETWEEN LIFE AND DEATH
19:45:20 <itidus21> so if you use church numerals to encode back and forth between arabic numerals and church numerals
19:45:44 <Ngevd> Can you reprhase that? I don't quite get what you mean
19:45:48 <itidus21> can you use lambda calculus to write.. say.. ummm
19:45:53 <itidus21> well...
19:46:12 <itidus21> suppose you have some number like 555
19:46:18 <itidus21> and you want to square it
19:46:38 <itidus21> then you could find an encoding of 555 in lambda calculus
19:47:26 <itidus21> which i understand is like succ(succ(succ(zero))) with 555 succ
19:48:05 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
19:48:11 <itidus21> and then.. does there exist a lambda calculus expression for squaring a number.. which you could put next to your 555
19:48:11 <Ngevd> That is the method of creating the Church numeral 555 that is the most simple
19:48:23 <Ngevd> \n f.n (n f)
19:49:03 <Ngevd> > let square = \n f -> n (n f) in square (ap (.) (join (,))) (+1) 0
19:49:03 <lambdabot> Occurs check: cannot construct the infinite type: a = a -> b
19:49:15 <Ngevd> Haskell doesn't like this
19:49:27 <itidus21> and.. then you take that result.. and convert it from a church numeral..
19:49:40 <itidus21> back to arabic numerals
19:50:11 <itidus21> is such a thing possible for any function one might find in a library such as c's math.h?
19:50:44 <Ngevd> With an appropriate representation for, eg, fractions, negative numbers, etc.
19:50:45 <Ngevd> Yes
19:51:06 <Ngevd> Of course, I know nothing about math.h, and very little about C
19:51:11 <itidus21> lol
19:51:16 <itidus21> hummmmm
19:52:44 <Ngevd> Does anyone here play Sopio?
19:53:27 <itidus21> the whole process of course seems kind of longwinded if you consider the shorthand of 555 x 555 = 308025 .. but i figure theres better ways to store a number based on what you said etc
19:55:06 <Ngevd> > ap (.) (join (.)) (+1) 0
19:55:07 <lambdabot> 3
19:55:10 <itidus21> like, at some stage, someone must kind of agree that computation based on strings of binary digits is more efficient than church numerals
19:55:28 <itidus21> but then again.... maybe it will prove to be otherwise
19:55:33 <kallisti> @pl (\x y -> z)
19:55:34 <lambdabot> const (const z)
19:55:35 <Ngevd> Yes, church numerals is unary, not very efficient
19:55:48 <Ngevd> For large numbers
19:56:10 <Ngevd> Hmm...
19:56:30 <Ngevd> Now I'm going to make LC things for church lists of booleans
19:56:44 <itidus21> so, it seems each scheme has a unique strength to it
19:58:13 <itidus21> decimals are easy to compute with by hand
19:58:23 <itidus21> binary is easy to compute with for a computer
19:58:57 <Ngevd> Decimals are only easy to us because we are used to them
19:59:11 <Ngevd> And we can count on our hands
19:59:33 <itidus21> church can be performed by a computer and allows numbers to be used in lambda calculus
20:01:00 <itidus21> what i mean by performed is we are saved the burden by a computer
20:01:42 <itidus21> and i assume that almost always optimized into binary
20:05:14 -!- Phantom_Hoover has joined.
20:05:36 <Vorpal> Ngevd, they do have another advantage over binary too for humans: I'm pretty sure I heard somewhere that we can only keep track of a limited amount of "units" in our short term memory. We can group stuff (like when you read out a telephone number to someone) to reduce several bits of information to one unit. Using binary would probably be less efficient there. I may be wrong about that last thing though.
20:06:07 <Ngevd> You're probably right
20:06:13 <itidus21> well.. its not just vs binary
20:06:22 <Ngevd> Also, I'm going to suck at TF2 now.
20:06:23 <Ngevd> Bye
20:06:27 <Vorpal> Ngevd, I'm pretty sure I wouldn't be able to remember my telephone number in binary :P
20:06:30 <itidus21> so i got to thinking
20:06:50 <itidus21> there could be an operation on a number where you do something to a number and it's reverse
20:06:51 <fizzie> There's not so many good reasons to favour 10 over 16, though.
20:06:52 <Vorpal> itidus21, anyway binary is useful for computers because it keeps the electronics simple.
20:07:06 <Vorpal> fizzie, indeed. I'm not saying decimal is optimal
20:07:14 <Vorpal> just that binary isn't for a human.
20:07:24 <itidus21> Vorpal: plurality of numeral encoding is revolting
20:07:28 <Ngevd> 60 is comparatively common among human civilizations
20:07:29 <Vorpal> itidus21, eh?
20:07:32 <Vorpal> itidus21, what?
20:07:39 <itidus21> Vorpal: plurality of numeral encoding is great
20:07:43 <Vorpal> Ngevd, ah yes, the Babylonians used that, right?
20:07:50 <Ngevd> Vorpal, so I believe
20:07:50 <Vorpal> itidus21, you mean there are many bases?
20:07:54 <Vorpal> itidus21, or what?
20:08:01 <itidus21> more than bases even
20:08:05 <Vorpal> well sure
20:08:11 <Vorpal> there are an infinite number of bases anyway
20:08:24 <Vorpal> so anything else doesn't matter unless it is uncountable
20:08:25 <itidus21> i mean like say.. church numerals, electronic binary numerals, arabic decimal numerals
20:08:39 <Vorpal> itidus21, why did you call it revolting?
20:08:49 <itidus21> because of the topic
20:08:54 <Vorpal> Ngevd, anyway I think we should count using gray code. :D
20:09:20 <itidus21> godel numerals which i wouldnt know
20:09:51 <Vorpal> itidus21, what is the topic then?
20:10:04 <itidus21> Official revolting channel of the frequent stupid topic change plurality, the Prequel: The Attack of the Nerds | http://codu.org/logs/_esoteric/
20:10:09 <Vorpal> ah
20:10:30 -!- ais523 has joined.
20:10:34 <Vorpal> I thought you meant because of the topic of the discssion
20:10:37 <Vorpal> discussion*
20:10:40 <itidus21> but so yeah.. so i was thinking like func(2012) = 2012 + 2102; func(2012) = 2012 x 2102; func(2012) = 2012 - 2102; func(2012) = 2012 / 2102
20:10:41 <Vorpal> rather than because of the channel topic
20:10:43 <Vorpal> ais523, hi
20:10:50 <itidus21> yeah.. it was ambiguous and weird of me
20:11:04 <ais523> hi
20:11:23 <Vorpal> itidus21, also those definitions of func are incompatible with each other
20:11:28 <ais523> I've actually spent most of the time since I was last online asleep
20:11:34 <itidus21> true..
20:11:40 <ais523> for a 24-hour period, I was awake for only about 3 hours or so in the middle
20:11:42 <itidus21> i don't know what to name them
20:11:45 <ais523> and maybe a fewm inutes at each end
20:11:56 <itidus21> i don't know if such an operation is common
20:12:52 <Vorpal> ais523, ouch
20:13:23 <itidus21> like ... func_blah1(12345) = 12345 + 54321; func_blah2(12345) = 12345 * 54321
20:13:32 <Vorpal> ais523, anyway I tried both the java.nio stuff with one thread and java.io with many threads and I have to say I find the async IO a lot more intuitive and easier to deal with.
20:13:43 <Vorpal> ais523, yet it seems people prefer the thread approach? Why?
20:14:01 <ais523> Vorpal: because it means that things that should be independent, actually are
20:14:12 <ais523> or to put it another way, a round-robin scheduler written by hand is not ideal for every application
20:14:43 <itidus21> i was basically wondering if by taking a number and it's reverse as being 2 operands instead of 1, that you could compress the number
20:14:59 <itidus21> with an extra bit of info saying whether to do this operation
20:15:51 <Vorpal> ais523, a) They are not independent connections, they interact, so they aren't independent. b) true, but it isn't like this is computational expensive. I'm not going to gain anything from SMP here. Probably I'll lose quite a bit if the threads end up on different CPUs due to the large amount of working with shared resources, that also need to be syncronized.
20:16:22 <ais523> well, in that case you have an unusual use pattern, and your solution might actually be best
20:17:19 <Vorpal> ais523, indeed, the only independent part is really the packet parsing, and that is quite trivial. Since it is a game server (and a small world) the threads all interact on the same shared state once the parsing is done.
20:17:42 <Vorpal> also turn based
20:18:25 <kallisti> http://sprunge.us/dDgO hi someone complain about this code.
20:18:41 <Vorpal> ais523, btw erlang does have a form of a sync IO, it is kind of unusual though, it is based on message passing
20:18:45 <Vorpal> async*
20:18:46 <itidus21> so like f(int a,bit b) = { if b == 0 return a; else return a * reversed_digits(a); }
20:19:32 -!- Zuu has quit (Ping timeout: 252 seconds).
20:20:20 <kallisti> I'm still not sure if I want to use the (File, Rank) coordinate system.
20:20:29 <Vorpal> ais523, basically you get a message to the process that tells you a socket is ready for IO, then you read like normal. (There is also a form that sends all the data as messages, but that is not recommended unless the rate of packets is rather low)
20:20:53 <ais523> Vorpal: hmm, that exists in Linux too
20:20:59 <ais523> you can request a SIGIO when data's available
20:20:59 <itidus21> better yet func(5.0) = 5.0 x 0.5 = 2.5 ... yeesh this is absurd
20:21:39 -!- Zuu has joined.
20:22:05 <Vorpal> ais523, well, erlang has quite a bit more advanced message passing than plain signals. I believe you actually get the first packet of data (and a flag for if there is any more) when you put it in the trigger-once mode I described.
20:22:40 <itidus21> or func(a^b) = a^b * b^a
20:23:15 <Vorpal> ais523, anyway for linux that sounds rather inefficient. Unless SIGIO has a payload saying which fd it was.
20:24:12 <ais523> Vorpal: yep, it can have a payload
20:24:21 <ais523> although you have to specifically request one, probably for backwards compatibility
20:24:26 <Vorpal> heh
20:25:41 * kallisti wonders if doing map lookups on each access is worth the trouble of having a continguous 64 byte representation of the portal chess game state.
20:25:56 <kallisti> it's certainly memory efficient.
20:26:07 -!- Zuu has quit (Ping timeout: 252 seconds).
20:26:31 <Vorpal> ais523, in general erlang networking is unusual. I don't know any other high level language with built in support for SCTP for example. Or that has it's own DNS resolver that it uses if the OS doesn't provide one.
20:27:11 <Vorpal> (I have no idea what sort of systems the latter was meant for)
20:27:21 <kallisti> microwaves
20:28:52 <kallisti> something that doesn't have an OS.
20:28:58 <Vorpal> hah
20:29:06 <kallisti> Erlang is basically a standalone mini-OS.
20:29:15 <Vorpal> kallisti, might be for some sort of embedded target. Erlang runs on vxworks for example.
20:30:13 <Vorpal> kallisti, also I know other environment that transparently lets you send an open file descriptor to another computer and have it work properly :P
20:31:07 <kallisti> Haskell should get library support for that kind of stuff.
20:31:09 <Vorpal> (might not necessarily be efficient though, but iirc you can tell the VM about nfs mounts and such so it can make use of shared files.
20:31:37 <Vorpal> kallisti, also hot-swapping currently executing code :P That might be more annoying in haskell.
20:32:00 <kallisti> I'm familiar with that one.
20:32:05 <kallisti> it takes a bit of effort to get that working.
20:32:23 <kallisti> their framework thing is kind of weird.
20:32:29 <Vorpal> in erlang or in haskell?
20:32:36 <kallisti> erlang
20:32:41 <Vorpal> you do need to provide code if the state representation changed
20:32:45 <kallisti> yes
20:32:55 <Vorpal> obviously
20:33:13 <kallisti> Haskell solution: write perfect code that never needs to change
20:33:49 <Vorpal> kallisti, but apart from that if you use the built in behaviours (such as gen_server) it is trivial
20:34:13 <Vorpal> kallisti, anyway I wrote my own module doing this once where gen_server, gen_fsm and so on weren't suitable. It was quite easy
20:34:28 <kallisti> I couldn't really make sense of their documentation on those.
20:34:34 <Vorpal> you just use the proc_lib module
20:34:39 <kallisti> I recally being very confused at the time of reading.
20:34:56 <kallisti> also hi everyone: complain about my Haskell
20:34:59 <kallisti> http://sprunge.us/dDgO
20:35:00 <Vorpal> oh and sys I believe
20:35:09 <Vorpal> kallisti, about gen_server?
20:35:10 <kallisti> oklopol: complain
20:35:24 <kallisti> Vorpal: the whole thing. I don't remember the name of it. they gave it some weird name.
20:35:29 <Vorpal> kallisti, eh, basically you implement a callback module and gen_server provides the event loop and such.
20:35:30 <kallisti> their library thing.
20:35:49 <Vorpal> kallisti, err they gave their db library a weird name, is that what you mean?
20:36:05 <kallisti> I think so.
20:36:09 <Vorpal> kallisti, mnesia?
20:36:13 <Sgeo> <kallisti> also hi everyone: complain about my Haskell
20:36:14 <Vorpal> I never used it
20:36:15 <kallisti> but I recall gen_server being part of like some standard erlang pattern that had a weird name
20:36:19 <kallisti> or something.
20:37:04 <kallisti> Sgeo: I can only assume you're writing a huge reply about how terrible my code is.
20:37:07 <kallisti> this is good.
20:37:08 <Vorpal> kallisti, well you generally put your gen_servers in a supervisor tree, to allow error-recovery if a process crashes.
20:37:14 <Sgeo> kallisti, no, I'm not
20:37:15 <Vorpal> but that isn't really weird
20:37:26 <Sgeo> I thought people thought you were asking them to complain about Erlang
20:37:34 <kallisti> wat
20:37:38 <kallisti> how does that even happen
20:37:40 <Vorpal> Sgeo, no?
20:38:30 <kallisti> it's currently the best portal chess implementation in the world. still in the early alpha stages.
20:38:37 <Vorpal> kallisti, anyway erlang is quite nice. Sure there are some issues with it, but nothing major enough to make me dislike it.
20:38:53 -!- Zuu has joined.
20:38:57 <Vorpal> kallisti, it is also the only one :P
20:39:05 <kallisti> Vorpal: I recall the line seperators being annoying, but I'm sure I'd get used to it.
20:39:11 <Vorpal> oh that
20:39:20 <Vorpal> yeah that annoyed me for like the first week or so
20:39:25 <Vorpal> I'm used to it now
20:39:34 <Sgeo> @src lines
20:39:34 <lambdabot> Source not found. And you call yourself a Rocket Scientist!
20:40:11 <kallisti> if I profile later and find that I need some more speed in my indexing function then I might rewrite that general Enum-maker thing that elliott wrote with some hardcoded arithmetic.
20:41:15 -!- DCliche has joined.
20:41:58 <kallisti> honestly it's not much at the moment. Just a definition of the game board, code to set up the board's initial configuration, an indexing function, and a map function.
20:44:51 -!- Klisz has quit (Ping timeout: 268 seconds).
20:46:13 <itidus21> the physical version of the game should use actual mirrors and penlights :P
20:46:31 <kallisti> except that nothing in the game actually corresponds to a mirror
20:46:39 <Ngevd> Hello
20:46:43 <itidus21> oh right.. just portals
20:46:46 <itidus21> cool cool
20:47:07 <itidus21> something or other just disregard my comment
20:47:21 <fizzie> In that case, it should just use actual portals.
20:47:40 <itidus21> incidentally does a pen light create a beam as it bounces off a mirror?
20:48:14 <itidus21> pen laser might be the term
20:48:38 <itidus21> disregard that also.........
20:48:54 <Vorpal> itidus21, I would suggest you do not look at the reflection of a laser.
20:49:45 -!- Guest554115 has changed nick to Guest554116.
20:49:59 <itidus21> would it bounce off neatly like a >| ?
20:50:14 <fizzie> Ooh, I recall the safety instructions on the physics labs. There was a list of the different gruesome ways lasers of different wavelengths mess up your eyes. Like, if it's infrared, the eye-closing reflex won't happen, and it'll boil some stuff, and so on.
20:50:26 <Vorpal> fizzie, heh
20:50:33 <fizzie> I don't recall lasers even being involved in any of the tasks.
20:50:34 <Vorpal> yes like usual in mirrors
20:50:42 <Vorpal> itidus21, ^
20:50:58 <Vorpal> itidus21, so you would get pretty much the same result as looking straight into a laser
20:51:04 <Vorpal> itidus21, which is obviously bad
20:51:20 <itidus21> i meant looking on from the side
20:51:40 <Vorpal> well you wouldn't see any beam anyway unless the air was dusty
20:51:51 <fizzie> Or if it's bright enough.
20:52:09 <fizzie> Well, okay, not if it's really non-dusty and non-humid.
20:52:14 <Vorpal> fizzie, I don't think you can ever see a laser beam passing through a transparent medium?
20:52:15 <itidus21> ok suppose someone has just slammed a bag of flour on the ground yet remembered to keep the mirror clean
20:52:24 <Vorpal> fizzie, maybe if it turns the air to plasma?
20:52:32 -!- oerjan has joined.
20:52:36 <Vorpal> but then you have other problems
20:52:48 <Vorpal> itidus21, eh. No idea
20:52:50 <itidus21> and somehow you bounce a laser off this mirror, through flour
20:52:57 <itidus21> do you think you would get a bounce?
20:52:58 <Vorpal> "good luck"
20:53:00 <fizzie> Vorpal: Well, no, but "air" in most places isn't absolutely free of particles.
20:53:03 <itidus21> ok :D
20:53:27 <Vorpal> fizzie, well yes, but is it usually enough to actually see the laser?
20:53:30 <fizzie> Vorpal: Anyway, it's got molecules in it.
20:53:41 <fizzie> Vorpal: "Higher-power and higher-frequency green or blue lasers may produce a beam visible even in clean air because of Rayleigh scattering from air molecules, especially when viewed in moderately-to-dimly lit conditions."
20:53:44 <oerjan> this evening's morbid discovery: there is apparently a small bird hanging from the neighbor's flag.
20:53:49 <Vorpal> fizzie, ooh, cool
20:53:51 <itidus21> ok i understand the point here.. light is only visible when it is reflected off something
20:54:28 <fizzie> "Such pointers, particularly in the green-light output range, are used as astronomical-object pointers for teaching purposes."
20:54:31 <itidus21> err rather
20:54:34 <Vorpal> itidus21, light not hitting your eye is not visible :P
20:54:49 -!- Ngevd has quit (Read error: Connection reset by peer).
20:55:08 <Vorpal> itidus21, and if a laser pointing away from you isn't reflected off something it isn't going to hit your eye
20:55:32 <oerjan> (sorry, i still don't have a camera.)
20:55:46 <Vorpal> oerjan, what about your cell phone?
20:55:57 <oerjan> neither does that.
20:56:05 <Vorpal> oerjan, also is the bird dead?
20:56:16 <fizzie> Or just "hanging out"?
20:56:30 <oerjan> Vorpal: deep frozen, if i judge by the sound effects of its hitting the flag pole.
20:56:40 <Vorpal> oerjan, how does it stay up?
20:56:50 <Vorpal> oerjan, rather than fall to the ground?
20:57:13 <oerjan> it looked like the end of the flag had twirled around it a bit
20:57:41 <oerjan> i guess its claws got stuck to it
20:57:55 <Vorpal> ah
20:58:04 <Vorpal> oerjan, so not a rope around the neck then?
20:58:25 <oerjan> it was a little hard to see in the dark, but it looked like a birdy shape
20:58:46 <Vorpal> oerjan, I meant a rope around the neck of the bird...
20:58:46 <oerjan> tail and head visible
20:59:12 <Vorpal> (hm hanging wouldn't work on birds, they could just hover to avoid it killing them)
20:59:13 <oerjan> no... i'd guess bumping into the flag pole would tend to do the killing
20:59:32 <oerjan> due to the wind
20:59:39 <Vorpal> oerjan, I'm surprised, birds bumping into windows and such doesn't tend to kill them. Hm.
20:59:57 <Sgeo> It doesn't?
20:59:58 <oerjan> Vorpal: i've definitely seen a bird killed by bumping into a window
21:00:01 <Vorpal> doesn't tend to die*
21:00:07 <fizzie> Sometimes they do die from that.
21:00:25 <oerjan> in fact it was a pretty eerie omen when it happened, just before my mom died
21:00:51 <Vorpal> Sgeo, no? I seen various small birds eating old fermenting fruit lying around, getting drunk, flying into a window, fall down, lie around for a few minutes and then get up
21:00:58 <Vorpal> oerjan, ouch
21:01:47 <Vorpal> what is rönn in English hm
21:01:54 <Vorpal> ah: https://en.wikipedia.org/wiki/Sorbus_aucuparia
21:02:00 <Vorpal> Sgeo, usually those fruits ^
21:02:34 <Vorpal> very sour fruits.
21:02:36 <fizzie> "Window collisions kill as many as 100 million birds every year in the United States, more than every other cause of death (including outdoor cats, cell phone towers, and wind turbines) combined", says a newspaper. (Disclaimer: no idea about reliability.)
21:02:49 <Vorpal> fizzie, hm
21:03:06 <fizzie> Certainly they don't *always* die from it.
21:03:20 <Vorpal> fizzie, never seen a bird die from a window collision, probably does happen though. Maybe the Swedish birds are smarter? ;)
21:04:05 <oerjan> Vorpal: i'd assume it depends on the speed of the bird
21:04:20 <fizzie> So maybe the Swedish birds are just lazier.
21:04:22 <oerjan> if they're drunk, they probably don't do very high speed flying
21:04:40 <ais523> oerjan: sure? drunk drivers often drive faster then non-drunk drivers
21:04:47 <ais523> although sometimes they drive very slowly instead
21:04:59 <oerjan> ais523: yeah but they don't have to use their own muscle power :P
21:05:08 <fizzie> Drunk runners don't run so terribly fast, I don't think.
21:05:13 <fizzie> Or straight.
21:06:10 <Vorpal> oerjan, I never seen a non-drunk bird collide with windows. Might depend on what sort of birds you have in the area. It is mostly various small birds (house sparrow and other birds of that sort of size) and jackdaws around here.
21:06:21 <Vorpal> And iirc jackdaws are rather smart for being birds.
21:07:14 <oerjan> Vorpal: well i didn't _see_ it colliding, i heard a *bang* and found a dead bird afterwards
21:07:59 <Vorpal> oerjan, well I never claimed to count actually seen collisions
21:08:08 <Vorpal> err to only*
21:08:37 <Vorpal> oerjan, I never found any other evidence either for such deadly collisions
21:08:53 <kallisti> has anyone complained about my Haskell yet?
21:08:55 <kallisti> http://sprunge.us/dDgO
21:11:06 <fizzie> Gads, was there a way to stop Google from messing around with outgoing links? The "copy link address" is so useless now.
21:11:39 <Vorpal> fizzie, using a firefox addon for that works
21:11:49 <Vorpal> customizegoogle iirc
21:11:55 <fizzie> "Meh."
21:11:57 <itidus21> does this mean birds would enter houses often if the windows weren't there?
21:12:16 <fizzie> The commonly accepted explanation is that it's the reflection that confuses them.
21:12:21 <fizzie> They think there's empty space ahead.
21:12:24 <kallisti> is this the sound of people complaining about my Haskell?
21:12:28 <Vorpal> fizzie, that doesn't explain water
21:12:31 <kallisti> it seems oddly unlikely that.
21:12:34 <kallisti> -ly
21:12:37 <kallisti> werjiwejrojwetjwoerj owiejr oiwjertoijweoirjwoeitjoiwjeroijwetoijweoirjwoietjiowjer
21:12:46 <Vorpal> kallisti, nobody cares?
21:12:55 <itidus21> Vorpal: maybe they think its water
21:12:57 <oerjan> kallisti: the complaints seem to suffer from an elliott deficiency
21:13:05 <kallisti> alas.
21:13:19 <fizzie> Vorpal: Birds have had a rather longer to come to grips with water than vertical sheets of glass. (Also water surfaces are, I suppose, mostly horizontal.)
21:13:27 <Vorpal> itidus21, usually birds doesn't try to fly straight into water like that though. Not unless they are like seagulls
21:13:37 <fizzie> (And rarely flat.)
21:13:38 <Vorpal> fizzie, true
21:13:55 <Vorpal> fizzie, on a calm day you can find flat ponds and such
21:14:20 <oerjan> when we invent proper force fields we can test how birds react to vertical water.
21:14:21 <fizzie> Well, yes. Still, not flat vertical ponds, for the most of the time.
21:14:27 <Vorpal> indeed
21:14:34 <fizzie> oerjan: In the interests of science.
21:14:44 <itidus21> ok probably not water
21:14:49 <oerjan> fizzie: precisely!
21:15:08 <Vorpal> fizzie, and waterfalls are usually not reflective hm
21:15:53 <itidus21> it is not for us to know
21:16:03 <Vorpal> fizzie, anyway normal glass doesn't really let UV-light through right?
21:16:09 <Vorpal> and iirc birds can see a bit into UV
21:16:20 <fizzie> Anyway, bird-window collisions are a much-studied thing; cf. http://training.fws.gov/EC/Resources/mig_birds/handouts/Window_Collision_Bibliography.pdf
21:16:25 <Vorpal> so I guess it couldn't be that they see through it, but rather it must be the reflection
21:17:00 <Vorpal> fizzie, I wonder if normal glass looks like a mirror in UV
21:17:05 <ais523> Vorpal: it may be different shades of UV that's involved
21:17:06 <itidus21> Vorpal: yeah i have heard of such kind of senses.. specifically in some kind of magic shrimp
21:17:11 <Vorpal> ais523, well yes
21:17:12 <ais523> the ultraviolet range is much larger than the visible range
21:17:20 <Vorpal> hm
21:17:22 <ais523> and I'm moderately sure that at least near UV can get through glass
21:17:43 <Vorpal> I just wonder how much of UV that birds can see
21:18:22 <Vorpal> ais523, and yes I very much doubt that glass exactly matches the visible range of humans
21:19:28 <ais523> Vorpal: among other things, it transmits green better than other colors
21:19:37 <ais523> if you ever look at a sheet of glass edge-on, that will be reasonably obvious
21:19:43 <Vorpal> well yes I know
21:19:45 <oerjan> <Sgeo> elliott, but can it be implemented without having implemented seq first? <-- no, you need to do a type-specific pattern match and for functions even that doesn't work (and seq in fact forces the semantics of functions to change so \x -> undefined x is no longer the same as undefined, i.e. breaking eta equivalence)
21:20:06 <Vorpal> ais523, looks like green with a slight blue tint
21:20:40 <Vorpal> ais523, you can't really notice it unless edge on though. Hm.
21:20:45 -!- Zuu has quit (Ping timeout: 252 seconds).
21:20:52 <Vorpal> or I guess very thick layer of glass
21:21:13 -!- zzo38 has joined.
21:22:50 <fizzie> http://www.tate.org.uk/research/tateresearch/tatepapers/05spring/images/charman_fig2.gif -- 'a' is claimed to be standard window glass.
21:23:09 <Vorpal> fizzie, and b and c?
21:23:38 <kallisti> > fromEnum (Just False)
21:23:39 <lambdabot> No instance for (GHC.Enum.Enum (Data.Maybe.Maybe GHC.Bool.Bool))
21:23:39 <lambdabot> arising...
21:23:58 <fizzie> Vorpal: b is specifically "colourless" and "UV-absorbing" sort of glass; c is some sort of UV-absorbing acrylic.
21:24:14 <Vorpal> and d is some sort of optimal?
21:24:21 <fizzie> And d is some sort of "ideal" UV filter, yes.
21:24:47 <fizzie> It's in context of UV protection for covered paintings.
21:24:53 <Vorpal> ah
21:25:25 <Vorpal> probably b is the best solution unless the colours are such that the cut-off of the acrylic doesn't matter
21:26:02 -!- nooga has quit (Ping timeout: 252 seconds).
21:29:18 <zzo38> Let's stop lying about monads please
21:29:27 <Vorpal> who did that?
21:30:09 -!- oerjan has set topic: Official revolting channel of the frequent stupid topic change plurality, the Prequel: The Revenge of the Monad | http://codu.org/logs/_esoteric/.
21:30:35 <fizzie> Vorpal: Also apparently one species of bird (European starling) has maximum responsivity at 362 nm, and still 40% at 300 nm, for one of its four types of cone cells, in case you were wondering how far into UV they go.
21:30:54 <fizzie> Vorpal: Also their cones seem to be rather more sensibly distributed than human ones: http://www.webexhibits.org/causesofcolor/images/content/Absorption_peaks.jpg
21:31:05 <fizzie> Something to complain if you happen to meet your own designer.
21:31:12 <fizzie> Giving all the good eyes to some stupid birds.
21:32:28 <Vorpal> fizzie, well, I wouldn't want to change atm. It would mess up using monitors so badly.
21:32:32 <fizzie> http://www.webexhibits.org/causesofcolor/images/content/Absorption_peaksZ.jpg -- that's a bit larger.
21:33:02 <oerjan> if we ever meet aliens, they are going to find our color reproduction schemes hilarious
21:33:08 <Vorpal> indeed
21:33:31 <Vorpal> oerjan, and we would probably find the same about them
21:33:32 <fizzie> But with tetrachromatic vision they could sensibly use a 2x2 color filter pattern instead of going all RG/GB or so.
21:33:56 <fizzie> Three primaries is such an awkward number.
21:34:01 <Vorpal> yes
21:34:15 <Vorpal> fizzie, I doubt it is arranged like RGGB in our eyes though
21:34:29 <Vorpal> fizzie, anyway can't you tile a plane with triangles iirc?
21:34:32 <fizzie> Also four components of 8 bits would fit nicely into a 32-bit quantity. (Though then you wouldn't have room for an alpha channel in there.)
21:34:41 <zzo38> Of course it is always made approximate
21:35:19 <fizzie> Sure you can, but grids are much easier.
21:35:21 <zzo38> If you had a computer display that can change its wavelength then you could make better quality colors, probably
21:35:30 <fizzie> Maybe if we'd also go to triangular monitors?
21:35:33 <Phantom_Hoover> <Vorpal> fizzie, anyway can't you tile a plane with triangles iirc?
21:35:33 <Phantom_Hoover> .......
21:36:29 <oerjan> Vorpal: unless the aliens have eyes based on actual spectography
21:36:58 <fizzie> oerjan: Or maybe before we meet them we've just upgraded our eyes too.
21:37:07 <Vorpal> Phantom_Hoover, what?
21:37:21 <Phantom_Hoover> 'iirc'.
21:37:22 <Vorpal> Phantom_Hoover, it is obviously possible if you consider it.
21:37:33 <Phantom_Hoover> This is not something you could trivially state to be correct.
21:38:04 <Vorpal> Phantom_Hoover, I don't see the issue. I don't deal with tiling infinite planes on an every-day basis. *shrug*
21:38:09 <oerjan> Phantom_Hoover: now prove that you can tile the plane with _any_ shape of triangle >:)
21:38:32 <Phantom_Hoover> oerjan, rotate it 180°, fit two sides together.
21:38:33 <Vorpal> oerjan, that is patently obvious. A proof might take a bit of work though
21:38:45 <Phantom_Hoover> Fit the resulting parallelograms into strips.
21:38:50 <Phantom_Hoover> Fit the strips together.
21:38:54 <fizzie> oerjan: Can't you just take the equilateral triangle tiling and transform those triangles?
21:38:59 <Phantom_Hoover> That too.
21:39:43 <zzo38> In Dungeons&Dragons game my characters are the monster character some character might even have different number of eyes and some have dark vision probabily it is simplest to assume for purpose of game rules, you can everyone see colors in same way unless you are color blind. Otherwise you can make even more confusion than spell/etc! And I have already used relativity for resolving spells in D&D game, now this
21:40:02 <fizzie> I seem to recall something about the "physics" of darkvision somewhere.
21:40:12 <kallisti> > logBase 2 64
21:40:12 <lambdabot> 6.0
21:40:22 <Vorpal> zzo38, that got cut off
21:40:24 <oerjan> fizzie: hm it's not entirely obvious that the transform will give triangles and upside down ones the same shape afterward (of course you can probably choose the transform to give what Phantom_Hoover said)
21:41:17 <oerjan> (which afaict is the same as what i was thinking of)
21:41:23 <zzo38> Vorpal: Did it? My last words were ", now this" but I did not put any period at the end or anything like that sorry
21:41:30 <Vorpal> zzo38, ah
21:41:40 -!- Ngevd has joined.
21:42:15 <Ngevd> Hello
21:43:25 <oerjan> Olé
21:47:00 -!- Zuu has joined.
21:52:47 <kallisti> > fromEnum False
21:52:48 <lambdabot> 0
21:53:22 -!- sebbu2 has changed nick to sebbu.
21:57:26 -!- Zuu has quit (Ping timeout: 252 seconds).
21:57:36 <kallisti> test = print (toEnum . fromEnum $ Square (Just (Piece White (Arrow North))) (Just (Loop North Bidirectional)) :: Square)
21:57:37 <fizzie> oerjan: Well, assuming an affine map is enough to turn an equilateral triangle into any sort of triangle, T = [a1 a2 b1; a3 a4 b2; 0 0 1], R = [-1 0 0; 0 -1 0; 0 0 1], RTR = [a1 a2 -b1; a3 a4 -b2; 0 0 1], and that just means if you make the upside-down triangle (Rx), transform it (TRx), and rotate it again (RTRx) it just gets shifted to the opposite direction; that sounds quite obviously congruent with transformed right-side-up triangles (Tx).
21:57:45 <kallisti> *PortalChess> test
21:57:47 <kallisti> Square Nothing Nothing
21:57:50 <kallisti> FFFFFFFFFUUUUUUUUUU
22:02:20 <Vorpal> fizzie, hm I wonder why digital cameras use RGBG and such rather than triangular RGB sensors
22:02:36 <oerjan> fizzie: ok congruent but possibly mirrored
22:02:37 <Ngevd> BECAUSE THEY LOVE GREEN
22:03:01 <oerjan> or wait
22:03:02 <fizzie> Vorpal: Possibly because people want to get rectangular images?
22:03:40 <kallisti> > quotRem 0 8
22:03:40 <lambdabot> (0,0)
22:03:51 <kallisti> > quotRem 8 8
22:03:52 <lambdabot> (1,0)
22:03:54 -!- Zuu has joined.
22:04:04 <Vorpal> fizzie, eh, you don't need to make the whole sensors triangular, just the elements
22:04:09 * oerjan doesn't really grasp homogeneous coordinates used that way
22:04:16 <oerjan> although i assume that's what it is
22:04:18 <Vorpal> you get an uneven edge sure, but I don't see why that is a problem
22:04:52 <Vorpal> oerjan, looks to me like the same way they are used in opengl kind of?
22:04:53 <kallisti> oerjan: could you maybe take a look at the Enum instances in this program and see if you see anything strange? http://sprunge.us/ALeN
22:04:59 <Vorpal> or is that what you don't grasp?
22:05:22 <kallisti> oerjan: I seem to be getting zeros something. Because my test case becomes Square Nothing Nothing
22:06:57 <oerjan> fizzie: i think i have another intuitive argument that affine transformations do what you say, though. (just assume it keeps the triangle base fixed)
22:07:28 <oerjan> Vorpal: i'm just not very used to actually using them
22:07:36 <Vorpal> oerjan, ah
22:08:22 <kallisti> oh I found it
22:08:24 <kallisti> I think
22:08:53 <kallisti> noep
22:09:06 <fizzie> oerjan: Come to think of it, if you nail one point of a triangle to (0,0), isn't a linear map enough to move the other two points anywhere you want, giving you the possibility of getting (right-side-up) triangles of any shape you could want? In that case you wouldn't even need to speak about homogenous coordinates, and RTR = T.
22:09:25 <oerjan> then the midpoint of the base is also fixed, and it's on the line between the remaining vertices of the right-side up and upside down triangles when put on that same base, so those vertices are skewed to each side
22:10:02 <oerjan> fizzie: well yes, linear map = affine map fixing the origin
22:12:25 <fizzie> Vorpal: It might also be easier to manufacture grids. Anyway, they're not all using RGBG; some I think do (or at least it has been suggested) RGBW, where one pixel is transparent and therefore gets all wavelengths, in order to increase the overall light sensitivity of the sensor.
22:12:44 <fizzie> I guess that's a bit analoguous to "three types of cones and then the rods" sort of arrangement.
22:13:13 <fizzie> And there was that one with an "emerald" pixel. :p
22:13:30 <fizzie> (Which I think was named just because it sounds so good in PR literature.)
22:13:39 <Vorpal> fizzie, hm
22:13:58 <Vorpal> fizzie, so you mean some sort of extra colour humans can't see?
22:14:03 <Vorpal> or well, not directly
22:14:12 <kallisti> > quotRem 2 8
22:14:12 <lambdabot> (0,2)
22:14:21 <kallisti> > quotRem 10 8
22:14:21 <lambdabot> (1,2)
22:14:25 <oerjan> kallisti: in your Enum PieceInfo, you have some toEnum x 's that should be toEnum m
22:14:38 <kallisti> oerjan: yes I spotted that, but it didn't fix anything..
22:15:06 <kallisti> same output
22:15:10 <kallisti> so that case never happened
22:15:48 <kallisti> I'm guessing it's some minor mismatch of variables somewhere
22:15:56 <kallisti> but I'm tired and can't spot it. :P
22:16:52 <fizzie> Vorpal: Well, they'd obviously transform those to (sRGB or someRGB) pixels in post-processing; but you already need to do that "demosaicing" thing for RGBG sensors since the R, G and B samples are from different locations, and I guess you might get more accurate reproduction with four types of samples, I don't know?
22:17:55 <fizzie> Incidentally, I've sometimes wondered if any cameras, if you turn a "black-and-white" mode on, produces "double-resolution" images.
22:19:21 <fizzie> I seem to recall that dcraw has a flag for that.
22:19:54 <fizzie> "-d: Show the raw data as a grayscale image with no interpolation. Good for photographing black-and-white documents.
22:19:54 <fizzie> -D: Same as -d, but totally raw (no color scaling)."
22:19:59 <fizzie> Right, that small-d one.
22:21:22 <oerjan> kallisti: Enum Piece has a mismatch between fromEnum and toEnum, i think
22:21:25 <fizzie> I suppose for a colour scene you won't get very good "greyscale" images from the individual filtered pixels.
22:23:12 -!- nooga has joined.
22:24:53 -!- monqy has joined.
22:26:39 <kallisti> fromEnum (Piece p i) = (fromEnum p * 21) + fromEnum i
22:26:39 <kallisti> toEnum i = let (d,m) = i `quotRem` 21
22:26:40 <kallisti> in Piece (toEnum d) (toEnum m)
22:26:44 <fizzie> Incidentally, I suppose camera sensor pixel counts count all "subpixels" separately and then reconstruct an image with an RGB pixel at each spatial location, no matter which color channel was sampled at that point? If so, then it's a bit asymmetric w.r.t. monitors, since nobody there advertises the subpixel counts.
22:26:45 <kallisti> oerjan: is the current definition
22:26:50 <kallisti> I think that one is correct.
22:27:05 <Vorpal> fizzie, hm true
22:27:54 <oerjan> kallisti: yes that's what i thought
22:28:30 <kallisti> ...still broken. :P
22:28:31 <oerjan> i don't see any other Enum errors, although that's a horrible mess of compile time constants
22:28:38 <kallisti> and, indeed.
22:28:51 <kallisti> I could make bounded instances as well.
22:28:53 <Vorpal> :t fromEnum
22:28:54 <lambdabot> forall a. (Enum a) => a -> Int
22:28:57 <Vorpal> hm
22:29:03 <oerjan> kallisti: you fixed that PieceInfo part too?
22:29:08 <Vorpal> :t toEnum
22:29:09 <lambdabot> forall a. (Enum a) => Int -> a
22:29:17 <kallisti> oerjan: yes.
22:30:10 <Vorpal> @hoogle Piece
22:30:10 <lambdabot> package path-pieces
22:30:11 <lambdabot> package TimePiece
22:30:15 <Vorpal> no...
22:30:19 <Vorpal> @src Piece
22:30:19 <lambdabot> Source not found. Sorry.
22:30:22 <Vorpal> oh well
22:30:39 <fizzie> Vorpal: I have heard of cameras that don't do the Bayer filter thing at all, and instead include three separate CCD sensors and some sort of a prism-splitter thing in the middle. (Apparently mostly in professional video recording use.)
22:30:48 <oerjan> Vorpal: sheesh it's from kallisti's program
22:30:52 <Vorpal> oerjan, oh
22:31:01 <Vorpal> oerjan, WHY CAN'T HOOGLE INDEX ALL RELEVANT CODE!
22:31:23 <Vorpal> fizzie, ah yes I heard about those too
22:31:29 <kallisti> oerjan: you can thank elliott for convincing me to take this route (well, he eventually suggested a cleaner way but this one will be more efficient (blah blah blah profile before you optimize stuff etc))
22:31:51 <oerjan> kallisti: have you remembered to reload/recompile? >:)
22:31:59 <kallisti> ....yes
22:32:04 <kallisti> unless :l doesn't recompile
22:32:20 <oerjan> use :r just in case
22:32:41 <kallisti> Square Nothing Nothing
22:32:53 <kallisti> I'll try some different inputs
22:32:57 <kallisti> see if I can get something different.
22:32:58 <oerjan> kallisti: do you have a smaller breaking test case?
22:33:19 <kallisti> I can replace either of the two fields with a Nothing and it will still break like that
22:33:37 <oerjan> what happens if you convert a field by itself?
22:34:38 <oerjan> basically, give me the smallest breaking value whose parts don't break
22:34:45 <kallisti> TO THE SCIENCE LAB
22:34:50 <kallisti> WHERE WE EXPERIMENT IN /COMPUTER SCIENCE/
22:35:20 <Vorpal> kallisti, be careful of any lasers
22:35:31 <kallisti> oerjan: well sheesh now that you're forcing me to do thorough testing I can probably just find it myself.
22:35:49 <oerjan> viaInt x = (toEnum $ fromEnum x) `asTypeOf` x might be useful
22:36:13 <fizzie> Vorpal: Oh, and dpreview mentioned this really fancy "Foveon X3" sensor, which works really magically, by sticking three sensors on top of each other and using the fact that light of different wavelength is absorbed at different depths in silicon: http://en.wikipedia.org/wiki/Foveon_X3_sensor -- that's so clever.
22:36:33 <kallisti> ...oh
22:36:38 <Vorpal> fizzie, nice
22:37:57 <oerjan> kallisti: you realize that would have been easier than trying to mentally check the code in the first place, right?
22:39:03 <kallisti> oerjan: but testing is tedious
22:39:23 * kallisti logic
22:39:53 -!- nooga has quit (Ping timeout: 240 seconds).
22:40:51 <kallisti> oerjan: it would appear that the smallest breaking test case is the one I started with.
22:41:00 <kallisti> the only one that messes up is the Square type
22:41:23 <oerjan> hmph
22:42:07 <oerjan> kallisti: can i get the actual fromEnum value of your test case?
22:42:22 <Vorpal> fizzie, very cool indeed
22:42:36 <Vorpal> fizzie, how are the sensors placed in human eyes?
22:42:51 <kallisti> oerjan: all these good ideas... where do they come from? :P
22:42:51 <Vorpal> and about how many megapixels do human eyes produce?
22:43:10 <fizzie> Vorpal: I've seen some pictures somewhere; "rather messily", and the resolution depends very heavily on the angle.
22:43:17 <Vorpal> hm okay
22:43:22 <fizzie> All in all, it's clear it hasn't been designed by an *engineer*.
22:43:26 <Vorpal> heh
22:43:26 <fizzie> Probably an arts guy.
22:43:29 <Vorpal> :D
22:43:38 <kallisti> oerjan: oh hmmm 434
22:44:00 <oerjan> > 434 `quotRem` 17
22:44:01 <lambdabot> (25,9)
22:44:46 <fizzie> Vorpal: I mean, look at this stuff: http://www.phys.ufl.edu/~avery/course/3400/vision/rod_cone_distribution2.jpg
22:44:58 <Vorpal> fizzie, so what about the average resolution? And what about the resolution near the center?
22:45:47 <Vorpal> fizzie, so uh in dark humans see best towards the sides?
22:46:04 <fizzie> Yes. But note that it's not very much towards the sides.
22:46:08 <fizzie> Ten degrees isn't all that much.
22:46:15 <Vorpal> hm
22:46:17 <Vorpal> true
22:46:25 <fizzie> Also you don't really see any colors except right in the middle.
22:46:47 <Vorpal> fizzie, there seem to be a few cones towards the sides, just very few
22:46:49 <Vorpal> so hm
22:46:52 -!- iconmaster has quit (Read error: Connection reset by peer).
22:47:30 <Vorpal> fizzie, I can kind of see that the floor is greenish in the corner of my eye, not sure how much that is because I know what colour it is or because I can see a bit of it
22:47:31 <fizzie> Apparently there's in total some 120 million rods and 6-7 million cones.
22:47:41 <kallisti> oerjan: I fear I will need more than a Word8 to store board squares. :P
22:48:15 <Vorpal> fizzie, doesn't that work out to 120 MP for the first (if it was evenly distributed and so on?)
22:48:24 <oerjan> kallisti: btw when you said every subpart works correctly, does that include the Maybes?
22:48:40 <kallisti> oh..
22:48:40 <fizzie> Vorpal: Yes, that's how many "pixels" there are.
22:48:43 <kallisti> didn't check those.
22:48:45 <kallisti> actually
22:48:46 <kallisti> forgot
22:48:52 <Vorpal> fizzie, quite a good resolution
22:48:52 <kallisti> I bet they result in Nothings
22:48:57 <kallisti> or something
22:48:59 <kallisti> let's fine out
22:49:21 <Vorpal> kallisti, sounds like a fine idea
22:49:42 <oerjan> kallisti: oh wait, found the bug :D
22:50:13 <oerjan> toEnum for Maybe misses the Just and so recurses down to Nothing
22:50:47 <kallisti> oh...
22:51:10 <kallisti> the joys of overloaded functions.
22:52:41 <kallisti> at least it bothered to terminate by accident
22:53:09 <kallisti> yep seems fine now.
22:53:33 <fizzie> Vorpal: As for the angular resolution at the center, apparently that's somewhere around 0.3 arc-minutes. So you need almost 600 ppi at a distance of 50 cm to get over that.
22:53:46 * oerjan does the victory dance
22:54:03 <Vorpal> fizzie, heh
22:54:05 <fizzie> It's an impressive sensor, sure, but it still feels quite haphazardly designed. I mean, with that blind spot and all.
22:54:17 <Vorpal> fizzie, that would be one amazing monitor
22:54:38 <Vorpal> probably would require a much better GPU if I wanted a reasonably large monitor as well
22:54:42 <fizzie> The blind spot is an especially good example since it's completely unnecessary.
22:55:00 <Vorpal> fizzie, yes the nerves could just go straight back a bit instead first
22:55:05 -!- kallisti_ has joined.
22:55:25 <fizzie> Right, and they do in some species.
22:55:30 <Vorpal> heh
22:56:18 <Vorpal> fizzie, do humans have one nerve per rod/cone or are they combined early on?
22:56:58 -!- augur has quit (Ping timeout: 252 seconds).
22:57:13 -!- kallisti has quit (Ping timeout: 240 seconds).
22:57:18 <fizzie> Vorpal: I think they're summed up; that's part of the angular resolution calculations.
22:57:25 <fizzie> "In the fovea, which has high acuity, these ganglion cells connect to as few as 5 photoreceptor cells; in other areas of retina, they connect to many thousand photoreceptors."
22:57:33 <Vorpal> heh
22:57:52 <fizzie> So at the edges you've got both sparser distribution and less nerves.
22:57:59 <Vorpal> ouch
22:58:15 <Vorpal> fizzie, they managed to keep the noise level down though
22:58:24 <Vorpal> unless my brain is outsmarting me again
22:58:35 <fizzie> Brains are good at lying.
22:58:38 <fizzie> I mean, to themselves too.
22:58:47 <Vorpal> well yes
22:59:11 <Vorpal> fizzie, I wonder how the SNR of the eye compares to the SNR of professional cameras
22:59:46 <Vorpal> fizzie, well mostly in the center. You get some very good averaging when you have a thousand samples
23:00:11 -!- nooga has joined.
23:01:28 <fizzie> Well, it does do averaging over time too.
23:02:06 <kallisti_> > (21 * 2 + 1) * (8 * 2)
23:02:07 <lambdabot> 688
23:02:10 <kallisti_> hm.
23:02:13 -!- augur has joined.
23:02:28 <kallisti_> > (21 * 2 + 1) * (8 * 2 + 1)
23:02:28 <lambdabot> 731
23:02:32 <kallisti_> there we go.
23:03:18 <kallisti_> oerjan: really this is code that GHC could autogenerate for product types where the fields are Bounded and Enum
23:03:47 <kallisti_> I think it would also be possible for sum types too
23:04:21 <oerjan> as long as they're bounded, yes
23:04:23 <kallisti_> PieceInfo is a sum type, for example. it just calculates offsets
23:05:46 <oerjan> kallisti_: you could get autogeneration if you made your product types newtypes over tuples instead >:)
23:06:01 <kallisti_> no thanks
23:06:21 <kallisti_> are you actually suggesting what's considering bad practice in the Haskell community? shame on you.
23:06:27 <kallisti_> *ed
23:07:30 <oerjan> well given that you cannot presently do generalized deriving for something with more than one field...
23:08:05 <kallisti_> Square (Just (Piece (White, Arrow North))) (Just (Loop (Northwest, Unidirectional)))
23:08:09 <kallisti_> looks good
23:08:10 <oerjan> maybe they could make that an extension
23:08:38 <oerjan> data Test ... = Test A B deriving (...) uses (A,B) to derive from
23:09:02 <oerjan> *would use
23:09:32 <kallisti_> ah yes
23:09:43 <kallisti_> that would be good
23:09:49 <kallisti_> isn't there a way to derive typeclasses yourself?
23:09:52 <kallisti_> maybe someone has already done this.
23:10:01 <oerjan> there's some template haskell stuff
23:12:20 <kallisti_> one day I should use that for something.
23:12:24 <oerjan> and something based on autogenerating code, which you have to include in the program if not using template haskell
23:14:49 <kallisti_> derivationParams :: String -> ([Type] -> (String -> Decl) -> FullDataDecl -> Either String [Decl]) -> Derivation
23:14:54 <kallisti_> good type. for a bright future
23:15:12 <kallisti_> also: no documentation
23:16:07 <oerjan> TYPES ARE ALL THE DOCUMENTATIN YOU NEED
23:16:29 * oerjan once again finds typo correction inappropriate
23:16:31 <kallisti_> well the Either is a possible error message.
23:17:46 -!- Madoka-Kaname has quit (Ping timeout: 240 seconds).
23:20:21 <zzo38> How should I make the Synthesizer datatype in my program? Probably it should have multiple constructors and recursive structues; I have one OctetStream constructor but I should need to have more, to do sine wave, additive, subtraction, I don't know what else, or exactly how they would be functioned
23:21:32 <kallisti_> ..what is this for.
23:22:48 <kallisti_> for audio signals: Time -> Int and [(Time, Int)] are good
23:25:14 <zzo38> It is for a program I make, in Haskell, to compile MML to S3M. To load samples, there are two ways, one way is from file, other way is from synthesis.
23:25:37 <zzo38> But I don't know exactly how the mathematical synthesis should be represented in this program
23:26:31 <kallisti_> you can't just use an audio signal?
23:27:00 <kallisti_> in PCM format?
23:27:15 <Vorpal> kallisti_, seems a bit dumb for S3M at least (not sure what MML is)
23:27:41 <Vorpal> kallisti_, from what I remember S3M is a tracker file format. Like .mod or such
23:28:31 <zzo38> Yes I could use audio signal, and can be loaded from a file, but the way I am thinking, the other way is to use internal audio synthesis from mathematical formula but am unsure how to make it read the token to make a waveform synthesis from that.
23:28:56 * kallisti_ doesn't know anything about these file formats.
23:29:25 <zzo38> It is not needed to know about these file formats to answer my question
23:32:45 <Vorpal> zzo38, what is MML though? Another tracker format?
23:32:54 <zzo38> No, MML is music macro language
23:33:01 <Vorpal> never heard of it
23:33:04 <Vorpal> did you invent it?
23:33:08 <zzo38> No
23:33:27 <zzo38> But there are many variants of MML although some features are common in most of them
23:33:28 <kallisti_> it doesn't sound like any actual synthesis is involed. but I don't know what MML does.
23:35:10 <Vorpal> zzo38, MML looks like the thing that you can echo to the PC speaker device on FreeBSD to make it play
23:35:13 <zzo38> MML doesn't itself do any audio synthesis; although one of the features I am adding is to enter the codes for creating the audio waveforms based on sine waves or envelopes or whatever
23:35:13 <Vorpal> I wonder if it is the same
23:35:49 <Vorpal> I ported that code to Linux using the same method as beep to play. Sadly none of of my current computers have a proper PC speaker
23:35:57 <Vorpal> those are getting rarer
23:36:06 <zzo38> Vorpal: I don't know about PC speaker on FreeBSD, but it might be. The PLAY command in QBASIC is a simple kind of MML, so is the PLAY in MegaZeux and the #PLAY in ZZT
23:36:37 <Vorpal> zzo38, looks like pretty much the same as PLAY in QBASIC according to wikipedia, plus some extensions
23:37:00 <zzo38> What extensions?
23:37:11 <Vorpal> zzo38, I don't remember exactly. Check the man page?
23:37:19 <zzo38> I don't have FreeBSD
23:37:27 <Vorpal> they have man pages on their websites
23:37:32 <zzo38> OK
23:37:52 <zzo38> I have written a PlayBP subroutine for use in QBASIC, which works the same as PLAY but using Bohlen-Pierce temperaments
23:38:52 <Vorpal> zzo38, http://www.freebsd.org/cgi/man.cgi?query=spkr&sektion=4&apropos=0&manpath=FreeBSD+8.2-RELEASE
23:39:16 <Vorpal> you can set articulation and such
23:39:37 <Vorpal> amusingly the source for that indicates ESR wrote it.
23:40:20 -!- Madoka-Kaname has joined.
23:40:21 -!- Madoka-Kaname has quit (Changing host).
23:40:21 -!- Madoka-Kaname has joined.
23:41:48 <Phantom_Hoover> http://www.reddit.com/r/math/comments/o6o0o/having_an_existential_math_crisis_help/
23:41:52 <Phantom_Hoover> It's itidus21!
23:47:33 <Vorpal> Phantom_Hoover, heh
23:49:42 <kallisti_> I'm afraid I don't really understand bitcoin
23:49:44 -!- Patashu has joined.
23:52:12 <zzo38> I have modified the MegaZeux code to allow its MML to specify any frequency instead of only the 12-TET notes, by using * and the frequency number to play that one
23:55:33 <Vorpal> night
23:57:19 -!- DCliche has quit (Quit: SLEEP, GLORIOUS SLEEP).
23:58:27 <kallisti_> > 6.5 * 5
23:58:28 <lambdabot> 32.5
23:59:13 <itidus21> ya found me
23:59:32 <itidus21> tidus is trying to nut out the meaning of SK
23:59:46 <itidus21> and he is pretty close
2012-01-08
00:00:36 <oerjan> itidus21: it might be best to understand lambda calculus in general first
00:00:48 -!- Vorpal has quit (Ping timeout: 276 seconds).
00:00:49 <itidus21> not for me
00:00:53 <itidus21> for most people maybe
00:01:22 <itidus21> anyway, i like this presented idea of SK as gardening
00:01:31 <oerjan> then you can see how SK(I) can be used to rewrite any lambda expression without variables
00:01:45 <itidus21> ive decided to pretend I doesn't exist
00:02:04 <itidus21> it complicates things too much
00:02:08 <oerjan> well I = SKK, for example
00:02:30 <itidus21> >:-)
00:02:45 <oerjan> so it's redundant. but it's logically necessary to use some form of it for the rewriting.
00:03:21 <oerjan> to handle \x . x
00:03:21 <itidus21> hmm.. bah.. i don't need lambda calculus
00:04:39 <fizzie> What good has lambda calculus ever done, huh?
00:06:19 <oerjan> a lot, but probably not enough to parody an entire monty python sketch.
00:06:26 <Phantom_Hoover> What's Lambda Calculus ever done for me, eh?
00:06:29 <fizzie> Aw.
00:06:34 <Phantom_Hoover> I'm going back to the warm, waiting arms of the Combinatrix.
00:07:28 <oerjan> yeah do the combinator bird shop sketch instead
00:07:30 <fizzie> oerjan: Are you sure lambda calculus wasn't involved when the aqueduct and sanitation were invented?
00:07:42 <oerjan> fizzie: well not _entirely_ sure
00:07:52 <Phantom_Hoover> oerjan, this mockingbird is mocking me all the time!
00:07:53 -!- zzo38 has quit (Read error: Connection reset by peer).
00:08:24 <oerjan> it's not mocking, it's just diagonalizing
00:08:48 <fizzie> oerjan: Ooh, I just realized you must like the bird shop sketch because it involves fjords.
00:09:01 <Phantom_Hoover> We call them firths here.
00:09:10 <ais523> <Lorne Kates> Makes sense. You want to lazily instantiate your integes. Those things take up a lot of cycles. I think because PHP has to start with a float, then use the cpu fan to mill off the decimal point.
00:09:13 <Phantom_Hoover> As exemplified by the Firth of Forth, the best-named thing ever.
00:09:46 <ais523> Phantom_Hoover: that is a surprisingly good name, indeed
00:09:56 <Phantom_Hoover> oerjan, look, my lad, I know mockery when I hear it and I am being mocked right now.
00:09:59 <oerjan> fizzie: actually i was thinking more of the cheese shop sketch here. do you have any owls?
00:11:18 <Ngevd> Goodnigt
00:11:19 <Ngevd> h
00:11:21 -!- Ngevd has quit (Quit: Goodbye).
00:13:54 * oerjan fjords for the pines
00:17:46 <Phantom_Hoover> Fjording the river.
00:18:03 <itidus21> . o O ( Sadc = ac(dc); Sa(dc) = Sa(dc); Sa(dc)b = ab((dc)b); )
00:18:23 * olsner fnords for the pies
00:18:37 <itidus21> yay i can compute anything O.O
00:19:46 <itidus21> . o O ( Kab = a; K(ab) = K(ab); K(ab)c = (ab); )
00:22:00 <itidus21> but i am pretty dumb so i couldn't do much more than what i just typed at this stage
00:28:45 <itidus21> . o O ( (((Sa)d)c) = ((ac)(dc)); ((aK)(dK))b = ((aK)(dK))b; )
00:30:30 <itidus21> . o O ( ((KK)(dK))b = (Kb); )
00:36:25 -!- azaq23 has quit (Quit: Leaving.).
00:37:13 -!- nooga has quit (Ping timeout: 240 seconds).
01:10:16 -!- Phantom_Hoover has quit (Quit: Leaving).
01:21:59 -!- MDude has quit (Quit: later chat).
01:24:26 -!- oerjan has set topic: Official revolting channel of the inverse femtobarn stupid topic change plurality, the Prequel: The Revenge of the Monad | http://codu.org/logs/_esoteric/.
01:33:21 <kmc> shachaf, if I pick a random day of #haskell logs and search for your name, I can see you dealing with pretty much every kind of annoying question / behavior in that channel
01:33:27 <kmc> it's uncanny
01:33:37 <kmc> either you will burn out soon like me
01:33:43 <kmc> or you are simply stronger
01:34:52 <kmc> also i don't understand how #haskell got so big anyway
01:36:15 <oerjan> argh it's up to 815 people
01:42:43 <pikhq> It seems like, unlike most language channels, #haskell contains a very high proportion of the active Haskell community.
01:43:35 <kmc> how are you defining "Haskell community" in such a way that this isn't definitionally true
01:43:47 <pikhq> Vague handwavey nonsense.
01:44:08 <kmc> i think the people who write core libraries and production software in Haskell are under-represented on IRC
01:44:33 <pikhq> Hmm. Yeah, you don't see a lot of GHC devs in there I don't think...
01:44:56 <pikhq> Or some of the more significant libraries.
01:45:14 <pikhq> And, actually, who in #haskell does notable production software in Haskell? :P
01:45:22 <kmc> it's more fun to learn a little Haskell and talk about it all day
01:46:03 <pikhq> "Programming sucks. Knowledge about programming is awesome." or some such?
01:46:13 <kmc> yeah there's some of that
01:46:40 <kmc> it's worse with Haskell because there is so much to learn before it's actually a better tool for getting shit done
01:47:22 <kmc> most people are stuck at a stage where they only use Haskell on personal projects where "write this in Haskell" is an explicit goal
01:47:35 <oerjan> > iterate(show.length&&&take 1<=<group)"1"
01:47:36 <lambdabot> Couldn't match expected type `(GHC.Base.String, [a])'
01:47:36 <lambdabot> against infer...
01:48:00 <oerjan> > iterate((show.length&&&take 1)<=<group)"1"
01:48:00 <lambdabot> Couldn't match expected type `(GHC.Base.String, [a])'
01:48:01 <lambdabot> against infer...
01:49:15 <kmc> and so the code written by #haskellers is "about Haskell" whereas the code written by #pythonistas is about solving some real problem
01:50:47 <kmc> when you first take LSD, the trip is about the drug
01:51:04 <kmc> it takes experience to understand that it's a tool which changes how your mind works
01:51:11 <kmc> which can be applied to anything you can think about
01:51:49 <oerjan> > iterate((<**>[show.length,take 1]).group)"1"
01:51:50 <lambdabot> Couldn't match expected type `GHC.Types.Char'
01:51:50 <lambdabot> against inferred type...
01:53:11 <oerjan> :t (<**>[show.length,take 1]).group
01:53:11 <lambdabot> [Char] -> [String]
01:54:27 <oerjan> > iterate(sequence[show.length,take 1]<=<group)"1"
01:54:28 <lambdabot> Couldn't match expected type `GHC.Types.Char'
01:54:28 <lambdabot> against inferred type...
01:55:02 <oerjan> :t sequence[show.length,take 1]<=<group
01:55:03 <lambdabot> [Char] -> [String]
01:56:01 -!- Lymee has joined.
01:56:01 -!- Lymee has quit (Changing host).
01:56:01 -!- Lymee has joined.
01:56:08 -!- Madoka-Kaname has quit (Disconnected by services).
01:56:12 -!- Lymee has changed nick to Madoka-Kaname.
01:56:18 <oerjan> :t (<**>[show.length,take 1])
01:56:19 <lambdabot> [[Char]] -> [String]
01:56:50 <oerjan> :t sequence[show.length,take 1]
01:56:51 <lambdabot> [Char] -> [String]
02:00:41 <oerjan> :t flip
02:00:42 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b
02:01:16 <oerjan> :t flip[show.length,take 1]
02:01:17 <lambdabot> [Char] -> [String]
02:01:49 -!- Jafet has joined.
02:01:56 -!- zzo38 has joined.
02:03:04 <oerjan> @hoogle f (a -> f b) -> a -> f b
02:03:05 <lambdabot> Prelude (=<<) :: Monad m => (a -> m b) -> m a -> m b
02:03:05 <lambdabot> Control.Monad (=<<) :: Monad m => (a -> m b) -> m a -> m b
02:03:05 <lambdabot> Prelude (>>=) :: Monad m => m a -> (a -> m b) -> m b
02:05:08 <oerjan> @hoogle f (a -> f b) -> f a -> f b
02:05:08 <lambdabot> Prelude (=<<) :: Monad m => (a -> m b) -> m a -> m b
02:05:08 <lambdabot> Control.Monad (=<<) :: Monad m => (a -> m b) -> m a -> m b
02:05:09 <lambdabot> Prelude (>>=) :: Monad m => m a -> (a -> m b) -> m b
02:08:49 <oerjan> > iterate(join.flip[show.length,take 1]<=<group)"1"
02:08:51 <lambdabot> ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113...
02:09:23 <oerjan> :t join.:flip
02:09:23 <lambdabot> forall (m :: * -> *) a a1. (Monad m, Functor m) => m (a1 -> m a) -> a1 -> m a
02:09:47 <oerjan> heh
02:23:40 -!- Jafet1 has joined.
02:26:09 <shachaf> kmc: Yes, I'm kind of in the process of burning out.
02:26:24 -!- Jafet has quit (Ping timeout: 276 seconds).
02:26:59 <shachaf> I wonder what it would be like if we still had dons's statistics on #haskell.
02:32:34 <shachaf> Maybe life would be good if I did like ddarius and ignored any questions that annoyed me. Even ddarius failed at that today.
02:33:16 <shachaf> What's really amazing is how Cale is still at it. Cale might be the most patient person on IRC.
02:37:46 <shachaf> kmc: So you still take LSD? It's not just a phase?
02:37:55 <shachaf> Or maybe it is a phase, in the ordinary meaning of "phase".
02:40:15 <kmc> shachaf, I haven't tripped in a while, but I'm planning to do so next month
02:40:32 <kmc> i think most people who take psychedelics only do it a few times ever
02:40:44 <kmc> so it's hard to say whether that's a "phase"
02:43:52 <kmc> possibly it's best to take it regularly but infrequently
02:43:57 <kmc> like once a year or once every few years
02:45:48 -!- MDude has joined.
02:47:32 <shachaf> kmc: If I did it, would I be like you? :-)
02:47:42 <kmc> you're already like me
02:47:50 <shachaf> Oh.
02:47:51 <kmc> at least, the things you say in #haskell are eerily like things I would say
02:48:01 <shachaf> Maybe it rubbed off.
02:48:19 <shachaf> The worst thing about IRC is IRC logs.
02:48:24 <shachaf> OK, the second-worst thing.
02:49:23 <kmc> i mean what's "best" depends on what you're trying to get out of it in the first place
02:49:47 <shachaf> The worst thing about IRC is that it's all a complete waste of time.
02:50:05 <kmc> #haskell has not been a waste of time, overall
02:50:13 <shachaf> I think the main reason I use IRC as much as I do is this aversion-to-publishing-things that I've mentioned before.
02:50:18 <kmc> i've learned quite a lot
02:50:24 <kmc> but perhaps it would be a waste of time to continue
02:50:34 <zzo38> No, IRC log is good thng
02:51:50 <shachaf> kmc: By the way, I considered Haskell as a teaching language a while ago when I was considering teaching someone about comput{ers,ing}, and decided against it because it seemed like it would be way more complicated.
02:51:51 <kmc> it may also be that the channel has grown / changed since i started, and so would be a waste to start now
02:52:07 <kmc> yeah
02:52:11 <shachaf> I wondeer whether the same things apply to Scheme or not.
02:52:24 <kmc> which things?
02:52:35 <shachaf> Well, I was trying to figure out which things they were. :-)
02:52:39 <kmc> heh
02:52:42 <kmc> Scheme is far simpler than Haskell
02:52:49 <shachaf> For example, does the type system make Haskell harder or easier to learn?
02:53:04 <shachaf> Reading Haskell code without type signatures is much more difficult in general.
02:53:36 <shachaf> But maybe types have a higher up-front cost which can discourage students.
02:53:41 <kmc> harder, for a total beginner to programming, compared to a hypothetical similar-but-dynamically-typed language
02:53:56 <kmc> one thing to keep in mind is that beginners are writing very small programs with very simple types
02:54:03 <kmc> so they benefit less from static typing
02:54:15 <shachaf> I suppose that's true.
02:54:35 <shachaf> I still have the vague feeling that imperative languages are easier to learn.
02:54:40 <shachaf> Imperative programming, anyway.
02:54:46 <kmc> Scheme is a fine imperative language
02:54:49 <kmc> SICP gets into it pretty quickly
02:54:52 <kmc> IP i mean
02:55:22 <kmc> a language with very simple static types might be good for teaching
02:55:33 <kmc> but haskell's has too many bells and whistles in this area
02:55:54 <shachaf> That's true.
02:55:59 <shachaf> Helium doesn't have type classes, I think.
02:56:00 <kmc> type classes and overloaded literals and monomorphism restriction
02:56:01 <kmc> right
02:56:19 <kmc> a simplified teaching version of Haskell would be great, except that nobody will maintain tool support that's comparable to GHC
02:56:34 <kmc> also GHC is pretty bad at explaining type errors
02:57:03 <kmc> it just tells you the two mismatched types... what you really want is a whole tree of the inferences leading to those types
02:57:10 * shachaf wonders how edwardk's type checker is going.
02:57:45 <kmc> anyway if you want to teach intro programming, teach python or javascript
02:57:56 <kmc> if you want to teach intro CS, use Scheme
02:59:42 <zzo38> To teach about computer, learn a lower level programming language, such as C, or Forth, to learn how the computer is working. Possibly even assembly languages for specific computer you learn such as x86 or NES/Famicom. To learn a program, Haskell is as good as any; but even better to learn mathematical and programming together.
03:00:12 <kmc> if you teach someone C and tell them it's how the computer "really works" then they will probably become an insufferable douchebag
03:00:28 <zzo38> kmc: Yes; that is why you need to learn assembly programming too.
03:00:40 <shachaf> You're best off teaching them physics.
03:00:57 <zzo38> But you can learn in C what correspond for example, the pointer to the address in the computer, pointer address array, and instructions set.
03:01:08 <kmc> zzo38, uh, assembly is not how the machine "really works" either
03:01:10 <zzo38> There is also LLVM which is much better designed than C in my opinion
03:01:20 <kmc> it's another abstraction
03:01:33 <kmc> the implementation of this abstraction is incredibly complex
03:01:42 <kmc> but it's hard to observe or modify unless you work at Intel
03:01:47 <kmc> so people mostly ignore it
03:02:00 <shachaf> Pointers and addresses and memory are also a big abstraction.
03:02:15 <zzo38> Yes everything mostly does.
03:02:43 <kmc> it's funny when people boast about how C is "close to the machine" and then turn out to be ignorant of caching or branch prediction or memory ordering issues or ...
03:02:47 <zzo38> It is why, to design computer that includes the book of full schematic diagrams and program codes printout
03:03:00 <kmc> because C (and assembly) largely hide those things,
03:03:04 <kmc> but then they come back to bite you
03:03:06 <shachaf> C is close to the abstract machine!
03:03:28 <kmc> shachaf, it's not that either
03:03:34 <shachaf> C doesn't really hide caching. Any more than anything above the CPU level does.
03:03:45 <zzo38> kmc: Yes, but the different computer, they might do caching and branch prediction and that stuff differently. You can learn for one individual computer, LLVM has some more control but is still for many computer. Assembly prorgamming and possibly if you have an emulator, can learn thing better
03:04:19 <kmc> shachaf, you saw the Linux bug I was talking about earlier?
03:04:31 <pikhq> kmc: This is because their idea of "machine" is the abstract machine that once upon a time was non-abstract.
03:04:36 <shachaf> Which one? The one with the undefined behavior?
03:04:49 <kmc> yeah
03:05:34 <shachaf> By "abstract machine" I mean the C abstract machine, of course, not x86.
03:05:45 -!- oerjan has quit (Quit: Good night).
03:05:49 <kmc> here's one example http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=3c8a9c63d5fd738c261bd0ceece04d9c8357ca13
03:06:46 <kmc> the bug is that 'tun' can be NULL
03:06:48 <shachaf> kmc: That bug was neat, by the way. You should tell me when you put the slides for your talk up.
03:07:28 <kmc> if a user maps a page at NULL they can control the value the kernel reads
03:07:38 <kmc> it looks like this is not exploitable, because 'sk' is unused before the NULL check
03:07:55 <kmc> but NULL dereference is Undefined Behavior and so the compiler is free to omit that check
03:08:03 <kmc> which gcc did, hence the bug was exploitable for privilege escalation
03:08:27 <kmc> anyway, if your model of C is "close to the machine" then you will make the mistake of thinking this code is safe (though it's still clearly wrong)
03:09:02 <kmc> shachaf, I will!
03:09:19 <pikhq> shachaf: Of course, their intuitions map to pre-ISO C, so the C abstract machine is irrelevant. :P
03:09:33 <pikhq> shachaf: Unfortunately for them, x86 is also an abstract machine.
03:10:04 <shachaf> It's abstract machines all the way down.
03:10:58 <shachaf> kmc: When is the talk?
03:11:11 <shachaf> Oh, Jan 27.
03:13:17 <shachaf> Oh, and Veinor is doing a Haskell class.
03:18:15 <kmc> 'Haskell is the world's most *reasonable* programming language -- a language ideally suited for reasoning about code by machines, by humans, and by machines aiding humans.'
03:18:18 <kmc> that one?
03:19:36 <shachaf> That would seem to be the one.
03:20:00 <kmc> that claim seems kinda completely false
03:20:03 <zzo38> Haskell is best they do programming and mathematical reasoning in dealing with computer program
03:20:24 <zzo38> For other thing, other programming language might be best, it is one reason why, they have many programming languages
03:20:56 <kmc> Haskell is far from the best language if you want to prove things about your programs
03:21:15 <zzo38> kmc: Yes, you are probably correct about that.
03:21:30 <kmc> what examples are there of 'reasoning about code by machines' in Haskell
03:21:45 <shachaf> I imagine that's referring to type checking or something.
03:21:55 <shachaf> Haskell is a very compromisey language if you take e.g. Agda into account.
03:21:55 <kmc> weak
03:22:03 <zzo38> What I mean, for example, the functions can be like a mathematical functions, and typeclass that is supposed to have certain laws, that follow certain kind of mathematical structures, and sometimes a few things can be implied just by the type signatures
03:22:25 <shachaf> kmc: Equational reasoning that the optimizer can do?
03:22:33 <shachaf> I don't know, I didn't write it.
03:22:44 <kmc> it seems like a vastly overblown claim that will leave people disappointed
03:22:52 <kmc> i mean it's an approach i see a lot
03:23:25 <kmc> "Haskell is great, because Curry-Howard! Proving things in the type system. We can prove that, uh, Ints exist, unless they're ⊥."
03:23:48 <shachaf> Is that a _|_ character?
03:23:51 <kmc> yes
03:24:00 <zzo38> Yes, there is Curry-Howard as well, and I have been able to make a typeclass for law of excluded middle, too
03:24:02 -!- atrapado has joined.
03:24:36 <shachaf> A lot of claims about Haskell are overstated.
03:24:37 <kmc> Haskell is great but "wealth of static analysis tools" is not its strong point
03:24:55 <kmc> certain things fit very naturally into the type system
03:25:00 <kmc> but for anything else it's an uphill battle
03:25:07 <shachaf> To be honest, I don't understand why a lot of people like Haskell so much.
03:25:14 <kmc> shachaf, it's better than Java!
03:25:26 <shachaf> You see a fair number of people saying "Haskell is great!" but then they write atrocious code in it that disregards pretty much all its strength.
03:25:28 <kmc> the strongest praise a programming language could get
03:25:38 <zzo38> If you have type for bijective functions then you could even use types as numbers, such as (,) meaning both and and multiplication, Either meaning or and addition, -> meaning implication and exponents, Maybe meaning successors
03:26:09 <kmc> shachaf, well, I think you know why I like Haskell, because I gave a talk about it :)
03:26:13 <kmc> it's a bit different from the party line
03:26:46 <shachaf> kmc: My statement was ambiguous.
03:27:08 <shachaf> "There exists a large set of people such that I don't why any of its members like Haskell so much."
03:27:16 <kmc> right
03:27:37 <shachaf> There similarly exists a large set of people who dislike C++ for completely bogus reasons.
03:27:38 <kmc> which set is that
03:27:41 <kmc> hehe
03:28:03 <shachaf> Although admittedly that one's easier to justify, because "I don't understand it after investing a fair amount of effort" is a valid reason to dislike something.
03:28:18 <kmc> i think Haskell is a pragmatic language with a lot of well-chosen tradeoffs, and a good implementation
03:29:18 <kmc> which is a bit different from "Haskell is best because it enforces total ideological purity"
03:29:22 <kmc> or "Haskell is best because it has the most math"
03:29:51 <kmc> both of which are factually untrue, anyway
03:30:01 <kmc> but they are standard reasons given by beginners
03:31:48 <Jafet1> Most people have misconceptions about most things
03:31:51 -!- Jafet1 has changed nick to Jafet.
03:32:13 * Jafet premature generalization
03:33:35 <atrapado> premature optimization
03:33:51 <kmc> and my opinion that Haskell is "practical" is conditional on the fact that I already know it well
03:34:49 <kmc> i think you could probably get 80% of the benefit in a language that's 20% as hard to learn
03:37:34 <atrapado> misconceptions are more like premature optimizations, rather than premature generalizations
03:37:49 <kmc> maybe that language is OCaml, or F#, or Clojure
03:37:52 <kmc> maybe it doesn't exist yet
03:38:20 -!- iamcal has quit (Remote host closed the connection).
03:42:20 <atrapado> we start with something general and then optimize it
03:43:28 <atrapado> or misoptimize it
03:44:14 <atrapado> .
03:47:08 <shachaf> I need to go to one of NYC/Washington D.C./Los Angeles in the next few months.
03:47:33 <kmc> why?
03:47:41 <shachaf> Finnish passport.
03:47:50 <kmc> cool
03:47:54 <shachaf> It would be best to get it before my birthday in July.
03:47:56 <kmc> well, LA is probably the cheapest for you to get to
03:48:03 <kmc> but NYC and DC are vastly superior cities
03:48:55 -!- pikhq has quit (Read error: Operation timed out).
03:49:03 <shachaf> That's true. But just think of how much cheaper the cost of going to Hac Boston would be if I go to NYC anyway!
03:49:05 -!- pikhq has joined.
03:49:12 <kmc> it's true!
03:49:15 <shachaf> Also I have relatives there.
03:49:22 <shachaf> I guess I have relatives in San Diego too.
03:50:02 <kmc> San Diego is pretty far from LA
03:50:07 <kmc> but you know that
03:50:17 <shachaf> Boston is pretty far from NYC.
03:50:31 <kmc> oh, you have relatives in boston?
03:50:52 <shachaf> Yes. Although I was referring to my relatives in NYC.
03:51:01 <shachaf> But I could visit both!
03:52:29 <shachaf> Anyway, I could drive to Los Angeles.
03:52:35 <shachaf> Do you feel less like me suddenly, kmc?
03:52:40 <kmc> haha
03:56:33 -!- zzo38 has quit (Ping timeout: 252 seconds).
04:20:09 -!- atrapado has quit (Quit: Bye).
04:34:07 -!- zzo38 has joined.
04:35:12 -!- PiRSquared17 has changed nick to PiRSquaredAway.
04:36:31 <zzo38> Can you do so?
04:38:51 -!- PiRSquaredAway has quit (Quit: I found a *real* proof, it's just too long to fit in the quit message).
05:10:12 -!- Jafet1 has joined.
05:12:53 -!- Jafet has quit (Ping timeout: 240 seconds).
05:24:54 -!- elliott has joined.
05:33:21 <elliott> 16:30:25: <itidus21> what are the benefits of levenshtein coding over regular binary coding?
05:33:21 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
05:33:27 <elliott> itidus21: What is "regular binary coding"?
05:33:52 <elliott> <lambdabot> kallisti_ said 11h 1m 21s ago: do you think using Ix and switching elemFromEnum to an array implementation would be faster or slower than using Map? or does an Ix instance basically require the same
05:33:52 <elliott> <lambdabot> kind of lookup code?
05:33:56 <elliott> kallisti_: Ix depends on Enum, you moron.
05:41:24 <elliott> 16:58:00: <oklopol> itidus21: do you have a university degree yet?
05:41:24 <elliott> 16:58:10: <itidus21> no
05:41:24 <elliott> 16:58:25: <oklopol> have you considered getting a university degree0
05:41:24 <elliott> 16:58:27: <oklopol> ?
05:41:24 <elliott> 16:58:51: <itidus21> i am living in a weird kind of dire strait...
05:41:24 <elliott> 16:59:11: <itidus21> the world has defeated me from every angle
05:41:26 <elliott> 16:59:32: <oklopol> well i'm aware of that, i felt the question was orthogonal enough
05:41:28 <elliott> 16:59:57: <itidus21> success is mostly an illusion
05:41:30 <elliott> oklopol: i just want to say you're great
06:01:14 <shachaf> elliott: Do you have a university degree yet?
06:03:31 <elliott> shachaf: Nope.
06:05:41 <shachaf> Have you considered getting a university degree0
06:05:45 <shachaf> ?
06:18:09 <pikhq> :P
06:22:09 <zzo38> Token expansion in TeX is not entirely comonadic because the \csname command has the possibility to modify the table of equivalents during expansion.
06:22:37 <zzo38> So expansion can have side effects, but that is the only one, other than error messages
06:24:33 -!- myndzi has quit (Read error: Connection reset by peer).
06:27:03 <zzo38> Specifically, I mean the coKleisli morphisms for the (,) comonad (a.k.a. the Env comonad).
06:27:30 -!- myndzi has joined.
06:29:06 -!- MDude has changed nick to MSleep.
06:29:08 <zzo38> Have you considered getting a something else other than a university degree?
06:51:56 <elliott> ais523: thanks for deleting that page of spa,
06:52:13 <ais523> I typo when I type "spam" so much
06:52:26 <ais523> I was thinking about automating it, but that'd involve learning GreaseMonkey because Esolang doesn't have working user scripts
06:52:34 <elliott> ais523: can you protect the main page, pls?
06:52:41 <elliott> there was a complaint on the talk page, and it seems a new wave are targetting it specifically
06:52:45 <elliott> *wave of spambots
06:52:47 <ais523> I will if it continues
06:52:58 <elliott> OK, but this is the second or third day
06:53:06 <elliott> wouldn't semi-protection work?
06:53:13 <ais523> one of them hit NetHackWiki's main page a while ago, which is the only spam it's had in ages
06:53:47 <elliott> theory: Timwi is controlling the spambots
06:54:01 <elliott> as revenge
07:00:44 -!- Jafet has joined.
07:01:39 -!- Jafet1 has quit (Ping timeout: 252 seconds).
07:07:14 -!- Jafet has quit (Ping timeout: 252 seconds).
07:18:35 -!- Jafet has joined.
07:21:40 -!- myndzi has quit.
07:21:48 -!- myndzi has joined.
07:23:44 <zzo38> Make the HTTP-PUT-based wiki using HTTP-based authentication mode, could be another way that makes it harder for current spambots to find and there are many other ways too
07:24:33 <elliott> ok done now what
07:24:35 <zzo38> Another possibility, is prevent Google from indexing it.
07:25:22 -!- Jafet1 has joined.
07:26:53 <zzo38> The current wiki are form-based rather than PUT-method-based
07:27:30 -!- Jafet has quit (Ping timeout: 252 seconds).
07:32:45 -!- Jafet1 has quit (Read error: Connection reset by peer).
07:33:06 -!- Jafet has joined.
07:37:53 -!- Jafet has quit (Client Quit).
07:39:14 <shachaf> ais523: Speaking of NetHackWiki, I haven't paid much attention to it or anything, but is the situation with Wikia as bad as it seems?
07:40:08 <shachaf> I.e., #nethack wanted a wiki, made a thing on Wikia, Wikia added advertisements, #nethack decided to move their wiki, Wikia refused to redirect or let them add "this wiki has now moved" markers to pages or remove the advertisements?
07:42:16 <elliott> shachaf: They had a marker up, but I don't think Wikia was happy about it.
07:42:20 <elliott> IIRC it was just on the main page.
07:42:27 <elliott> Wikia said they'd remove it after a while.
07:42:44 <elliott> shachaf: s/added advertisements/progressively redesigned the theme to be more and more terrible while adding more advertisements each time/
07:42:54 <elliott> It's a common experience for Wikia users.
07:43:00 <elliott> The same happened to the most popular WoW wiki, to my understanding.
07:43:18 <shachaf> elliott: Right, I was abbreviating.
07:43:38 <elliott> My favourite thing about Wikia's theme is the part where every external link has an interstitial ad added to it.
07:43:43 <shachaf> And of course the Wikia pages are way higher ins earch results.
07:43:48 <shachaf> elliott: Oh, yes, now I remember.
07:43:52 <shachaf> I'd suppressed it. :-(
07:44:01 <elliott> They should add it to internal links too.
07:44:03 <elliott> MORE PROFIT
07:44:12 <Sgeo> Creatures Wiki still has the sane theme
07:44:50 <Sgeo> Uh
07:45:00 <shachaf> elliott: What if, as part of the procedure for taking you to an interstitial ad, IT TOOK YOU TO ANOTHER INTERSTITIAL AD???
07:45:03 <shachaf> INFINITE PROFIT
07:46:28 <elliott> shachaf: The "Skip this Ad" button should have an interstitial ad.
07:46:35 <shachaf> elliott: GENIUS
07:46:50 <shachaf> I would never be able to sit through the full 30 seconds without clicking that button.
07:46:56 <shachaf> <Sgeo> http://ideone.com/AJZRX is there a way to do this without wrapping in a type?
07:47:04 <elliott> http://images4.wikia.nocookie.net/__spotlights/images/6d7325c4c94e26518f560e075330aab2.jpg Apparently Bation was overlooked?
07:47:06 <elliott> *Bastion
07:47:51 <elliott> Sgeo:
07:48:02 <elliott> http://stackoverflow.com/questions/8739741/higher-ranked-and-impredicative-types
07:48:16 <shachaf> Sgeo: Why do you use that paste site, by the way?
07:48:18 <shachaf> It's horrible
07:48:25 <elliott> Sgeo: Thankfully, you want to do that approximately 1 time in 10000000000000000, and never for Show, so it doesn't matter at all.
07:48:43 <elliott> shachaf: We need mauke's paste-copier bot in here.
07:48:45 <elliott> Maybe I'll write one.
07:48:52 <elliott> Maybe I'll write a bot that just dumps every URL to sprunge.
07:50:11 <shachaf> elliott: So does UHC support inferring existential types?
07:50:19 <shachaf> That would be a great trick.
07:50:23 <shachaf> x = ...
07:50:27 <shachaf> x :: exists a. a
07:50:35 <shachaf> I've written a universal type inferencer!
07:51:05 <Sgeo> What's wrong with IdeOne?
07:51:24 <elliott> shachaf: I somewhat doubt it.
07:51:43 <elliott> Sgeo: For one, it's a pastebin with *ads*.
07:51:56 <elliott> And a Tweet button.
07:52:01 <elliott> And a "Login with Facebook" button.
07:52:17 <pikhq> For two, curl -F 'sprunge=<-' http://sprunge.us
07:52:25 <elliott> Actually I count 8 social networking devices on that page.
07:52:26 <shachaf> And it takes a long time to load.
07:52:32 <shachaf> Did I mention how my Internet connection is very slow?
07:52:41 <elliott> Also
07:52:41 <elliott> language:Haskell (ghc-6.8.2)
07:52:46 <shachaf> Pretty much all web pages on the Internet today load "sequentially" in some weird way.
07:52:50 <elliott> which came out in 2007.
07:53:01 <shachaf> And this weird way causes the content to wait on the ads.
07:53:14 <elliott> Also the syntax highlighting is hideous, especially for strings.
07:53:34 <Sgeo> http://codepad.org/taphdoQk
07:53:37 <Sgeo> Not the most informative
07:53:42 <elliott> Ooh, it gets better.
07:53:43 <elliott> "All Rights Reserved."
07:53:45 <elliott> --footer
07:53:52 <shachaf> ++footer;
07:53:56 <elliott> I guess claim rights to your pastes.
07:54:15 <pikhq> Sgeo: Seriously though, it doesn't get better than sprunge.
07:54:20 <elliott> who we are
07:54:20 <elliott> We are highly qualified academics with Ph.D.
07:54:21 <elliott> We specialize in research and development.
07:54:21 <elliott> We direct your business towards innovation.
07:54:34 <elliott> --http://sphere-research.com/en/ as linked from footer of ideone
07:54:46 <elliott> They have a Ph.D. between them, collectively.
07:54:52 <zzo38> I think sprunge is better, so I wrote a sprunge.cmd file to do that too
07:55:06 <elliott> Wow, they're the people behind that http://www.spoj.pl/ thing.
07:55:12 <pikhq> zzo38: I am incredibly unsurprised you think sprunge is better.
07:55:18 <shachaf> elliott: I think they mean they have an actual Doctor of Philosophy, not a certificate specifying that one of them is one.
07:55:33 <pikhq> It seems very zzo-esque, except it's also very anyone-who-does-command-lines friendly.
07:55:35 <elliott> shachaf: Finally someone to nurse philosophy back to health.
07:55:49 <Sgeo> pikhq, can't run code in sprunge
07:55:51 <elliott> Ph.N.
07:56:10 <elliott> Sgeo: We don't need to see GHC 6.8.2's error message to know why your code doesn't work on GHC 7.0.3.
07:56:13 <shachaf> elliott: Does your Ph.D. institution also give out Ph.N.s?
07:56:15 <elliott> Esp. since it's obvious.
07:56:18 <pikhq> Sgeo: No, but ghci <(curl http://sprunge.us/foo) does that just fine.
07:56:43 <itidus21> i just get that way at odd hours of the night
07:56:46 * Sgeo is sometimes too lazy to make a file on his system and use his ghc
07:57:17 <itidus21> delusions of the night
07:57:23 <elliott> Sgeo: GHC 7.4 has top-level declarations in GHCi.
07:57:52 * Sgeo doesn't have GHC 7.4
07:57:54 <pikhq> Sgeo: Use a better shell.
07:58:06 <elliott> Sgeo: Alternatively, that's why you use Emacs.
07:58:19 <shachaf> MORE LIKE EWWWMACS
07:58:21 <shachaf> GET IT
07:58:26 <zzo38> Can GHCi parse a module declaration?
07:58:26 <Sgeo> I should switch back to Emacs for Haskell stuff
07:58:29 <elliott> C-x C-f foo.hs <RET> data Foo = Foo C-x C-s C-c C-l :t undefined :: Foo
07:58:37 <elliott> Oh, you need C-x C-o before that :t.
07:58:40 <Sgeo> jEdit thinks that ' always means the rest of the token is a string
07:58:51 <elliott> Who the heck uses jEdit?
07:59:14 <shachaf> I think even Slava doesn't use it anymore.
07:59:34 <shachaf> He also doesn't use Factor anymore, I believe.
08:00:17 <elliott> shachaf: Oh, doesn't he?
08:00:23 <elliott> He seemed pretty into it a year or two ago.
08:00:29 <kmc> noobs, i have GHC 7.5
08:00:38 <elliott> http://factor-language.blogspot.com/ has been dead for a while, though.
08:00:43 <shachaf> kmc: I have GHC 7.0. :-(
08:00:47 <kmc> me too
08:00:54 <shachaf> You're 7% more modern than I am.
08:00:58 <elliott> I have 7.0.*3*!
08:01:02 <kmc> wow
08:01:09 <elliott> It's .0.3 better.
08:01:11 <shachaf> I may have been wrong.
08:01:12 <shachaf> The Glorious Glasgow Haskell Compilation System, version 7.0.3
08:01:22 <kmc> elliott, it must be hard to turn the crank on the side
08:01:32 <shachaf> elliott: That's what I heard.
08:01:37 <elliott> I think Arch are waiting for 7.4 to update for, uh, stability.
08:01:45 <kmc> no really, I have a GHC that reports its version as 7.5.blah
08:01:46 <elliott> Arch "/usr/bin/python is python3" Linux.
08:01:58 <kmc> i think it has minimal libraries installed tho
08:02:28 * elliott really wants 7.4 to come out so he can enter a new age of type system horror.
08:02:38 <kmc> build it from git
08:02:40 <kmc> you know you want to
08:02:43 <elliott> That's so much work.
08:02:47 <kmc> not really
08:02:52 <elliott> Well, it takes ages.
08:02:55 <kmc> right
08:02:56 <shachaf> I used to build GHC from darcs.
08:03:01 <shachaf> I had dozens of versions installed.
08:03:02 <kmc> it's a lot of work for your computer; not so much for you
08:03:12 <elliott> GHC needs a build bot.
08:03:14 <shachaf> kmc: Remember the deal with the crank on the side?
08:03:16 <elliott> I want to use GHC nightlies.
08:03:18 <kmc> it's more work for you if you already have a ghc tree and want to update it and expect incremental builds to work
08:03:22 <kmc> cause they won't
08:03:29 <kmc> elliott, GHC has a buildbot, but I don't know if the binaries are posted anywhere
08:03:46 <elliott> kmc: Remember when GHC moved from a hideous Makefile system to a slightly better hideous autotools+Makefile system?
08:03:51 <kmc> no
08:03:56 <elliott> Wait, didn't that happen?
08:04:02 <elliott> I distinctly recall that it not being autotools a year back or so.
08:04:04 <kmc> maybe, but why would I remember it
08:04:08 <shachaf> kmc is amnesiac
08:04:14 <shachaf> elliott is elephantine
08:04:15 <elliott> Because GHC building folklore, man!
08:04:18 <kmc> make may be "hideous" but it supports -j
08:04:36 <elliott> The Makefiles themselves were the hideous part. Although make is too.
08:04:56 <pikhq> -j isn't exactly hard.
08:05:07 <kmc> cabal doesn't have it yet
08:05:47 * elliott has a plan for a cabal wrapper that builds in parallel.
08:05:51 <kmc> it's been done
08:06:06 <kmc> (for building different packages in parallel; not for the modules in a single package)
08:06:08 <elliott> Yeah, but I've never seen one on Hackage, and I don't know anybody who uses one :P
08:06:11 <elliott> kmc: The latter is what I meant.
08:06:14 <kmc> ok
08:06:17 <elliott> The former is an orthogonal issue that I don't care about much.
08:06:24 <pikhq> kmc: Just because cabal sucks doesn't make -j hard. *If* you're doing dependencies in even a vaguely sane way.
08:06:33 <kmc> make -j is theoretically uninteresting, therefore Haskell already supports it
08:06:38 <kmc> and it's your fault for not writing it
08:06:42 * shachaf orthogonizes over the issue.
08:06:47 <elliott> Well GHC is kinda build system antagonistic
08:06:52 <elliott> Multiple output files, no full separate compilation
08:07:18 <pikhq> (I mean, heck, redo does it, and the build logic there is in shell scripts.)
08:07:38 <elliott> Isn't it Python
08:07:45 <kmc> pikhq, I don't understand what point you're trying to make. are you speaking to a developer of a make-replacement, or to a user of a build system, or?
08:07:50 <pikhq> elliott: Yes, but you tell it what to do with shell scripts.
08:07:55 <pikhq> kmc: Developer.
08:08:01 <kmc> ok
08:08:03 <kmc> i don't disagree
08:08:05 <kmc> why did you bring it up?
08:08:24 <pikhq> "make may be 'hideous' but it supports -j"
08:08:34 <kmc> right
08:08:47 <kmc> meaning that GHC doing things differently from other haskell packages has at least one major advantage
08:08:51 <kmc> that's all i meant by it
08:08:54 <pikhq> Okay.
08:09:07 * elliott didn't realise kmc thought I was comparing it to using Cabal.
08:09:16 <kmc> i didn't really
08:09:20 <elliott> I doubt Cabal could even build GHC. Maybe with a massive custom Setup.hs thing.
08:09:54 <kmc> does Cabal have support for Make-based builds?
08:09:58 <pikhq> Ish.
08:10:09 <kmc> http://hackage.haskell.org/packages/archive/Cabal/1.10.2.0/doc/html/Distribution-Make.html
08:10:18 <elliott> That's cheating :P
08:10:20 <kmc> "Perhaps at some point we should stop pretending that it works."
08:10:31 <elliott> Cabal-1.10.2.0: A framework for packaging Haskell software
08:10:37 <elliott> "Cabal isn't a package manager, it's a build system!"
08:10:39 <elliott> "But it's terrible at that too."
08:10:41 <kmc> haha
08:10:44 <elliott> "It's a framework for packaging!"
08:10:57 <kmc> elliott, the Haskell tools are perfect and you're just some kind of idiot Java Monkey if you can't get by with them
08:11:06 <kmc> next you'll be asking for regexes and stack backtraces
08:11:09 <kmc> fucking java monkeys
08:11:12 <pikhq> elliott: Still better than what C's got.
08:11:13 <pikhq> (barely)
08:11:19 <elliott> kmc: Java monkeys like regexps/
08:11:20 <elliott> ?
08:11:47 <pikhq> elliott: Only if you can represent them with an object hierarchy.
08:12:03 * elliott thinks regexps probably *are* moderately worthless in Haskell, since writing little parsers is so easy, but it would be nice to have a more concise syntax for common things.
08:12:12 <elliott> scsh's sexp regexp stuff would be interesting to mimic.
08:12:31 <elliott> A quasiquoter that turns a regexp into a parser would probably be the most useful thing, if TH wasn't terrible.
08:13:00 <kmc> i'd settle for just a regex library with a simple concrete API
08:13:05 <kmc> in fact there are several on hackage
08:13:21 <elliott> The worst thing about the Haskell regexp libs is the hideous typeclass hack most of them are based on.
08:13:25 <kmc> but i can't find them amongst all the other regex-compat-posix-new-lite-pcre
08:13:28 <elliott> It should be illegal.
08:13:38 <kmc> regex-compat-posix-new-lite-pcre-0.1: NO REALLY USE THIS ONE THE OTHERS SUCK
08:13:59 <kmc> if someone uploaded a good regex lib and used that as the cabal synopsis I would hug them
08:15:01 <pikhq> I assign not-elliott to do it.
08:15:25 <kmc> i think translating regexps into first-class parsers is probably bad for performance
08:15:37 <elliott> kmc: Monadic parsers, sure
08:15:48 <elliott> What if you turned regexp syntax into http://hackage.haskell.org/package/regex-applicative parsers?
08:15:48 <kmc> even applicative CFG parsers
08:16:08 <pikhq> elliott, of course, would come back with @ in 100 years.
08:16:33 <kmc> elliott, might be nice
08:16:42 <elliott> kmc: I think the better complaint there is "it's difficult to optimise Haskell EDSLs"
08:16:46 <kmc> it's... yeah
08:16:55 <elliott> which sucks, but is probably inherent
08:17:07 <elliott> arrows seem to have the best opportunities there but you have to use arrows
08:17:16 <kmc> arrows suck because you can't optimize 'arr'
08:17:33 <elliott> that too
08:17:38 <elliott> thus generalised arrows
08:17:45 <elliott> an EVEN LARGER TYPECLASS!
08:17:55 <kmc> i'll be interested to see what iPwn have come up with, if their shit ever sees the light of day
08:18:21 <kmc> "we solved several major open problems in theoretical computer science in order to make an iPhone game where you hit orcs with a sword"
08:18:32 * elliott has great difficulty taking iPwn seriously because of the name.
08:18:50 <elliott> What have they done apart from their own arrow stuff? I heard about that in passing but nothing else. Well, and the GHC port thing I think was them.
08:19:07 <kmc> they're using a custom preprocessor and some bleeding-edge GHC features to do better arrowized FRP
08:19:12 <kmc> i don't know much about it
08:19:37 <pikhq> Waitwaitwait, they're working on FRP so they can do an iPhone game?
08:19:43 <kmc> yes
08:19:52 <elliott> Hasn't game development driven FRP for like half a decade by now?
08:19:54 <shachaf> I heard that they got some sucker to port GHC to Android.
08:19:55 <kmc> research in arrowized FRP with a custom preprocessor
08:19:57 <pikhq> Are they mad or awesome? I dunno.
08:20:03 <kmc> ask Cale about it
08:20:19 <kmc> their game is like 2 years late
08:20:37 <kmc> so i'm gonna go with "not awesome"
08:20:45 <kmc> even if it's great research i can't possibly imagine how it makes business sense
08:20:51 <shachaf> Do people put two years of work into an iPhone game ever?
08:20:54 <elliott> kmc: Business sense? You're talking about Haskellers.
08:21:04 <kmc> elliott, yeah...
08:21:19 <shachaf> elliott: Hey, some Haskellers have business sense! Those are the people who don't use Haskell for their business.
08:21:41 <pikhq> Or presumably the ones using it for finance.
08:22:10 <zzo38> I would prefer the Arrow to be changed to something else such as: class (Category c1, Category c2) => CatFunctor c1 c2 where { funct :: c1 x y -> c2 x y; }; class Category c => CatArrow c (p :: * -> * -> *) where { ... }; It should be able to still represent the ordinary Arrow stuff with this, I think
08:22:15 <pikhq> Certainly when you're working on open problems for the purpose of mundane, mundane programs, you've got no business sense. :)
08:22:25 <kmc> i think using Haskell for an iPhone game is not completely crazy, but they seem to be doing it wrong
08:22:48 <pikhq> kmc: It's the "working on major open problems in theoretical computer science" bit that is completely nuts.
08:22:52 <kmc> right
08:23:00 <shachaf> zzo38: What about Barrier Arrows? You mustn't forget those.
08:23:03 <kmc> of course this distinction will be lost on most
08:23:05 * elliott thinks that working for 2 years on FRP stuff for an iPhone game is cool but would probably work better as a hobby :p
08:23:12 <pikhq> elliott: Yup.
08:23:21 <elliott> pikhq: I don't think FRP is considered a /major/ open problem :P
08:23:25 <itidus21> the developers of the platform games N and N+ are a bit nuts also
08:23:27 <zzo38> shachaf: I don't know what those are
08:23:32 <kmc> elliott, yeah, who knows. it might be one of those startups where it's essentially a hobby, and everyone has a "side job"
08:23:49 * elliott also isn't sure FRP counts as /that/ theoretical, although the linear temporal logic stuff...
08:24:21 <shachaf> Mm, LTL.
08:24:30 <kmc> i have fond memories of LTL and SPIN
08:24:31 <itidus21> hmm
08:24:47 <pikhq> elliott: I'm only quoting kmc on that one.
08:24:47 <shachaf> I went to this one talk about model checking once.
08:24:51 <pikhq> :)
08:24:52 <shachaf> Actually I went to it twice.
08:24:58 <shachaf> Actually I went to it once and it went to me once.
08:25:03 <elliott> kmc: I can't criticise too loudly because I'm on step 2 of the "Hey, I want to make a game with Haskell!" -> "Guess I'd better figure out how to do it with FRP." -> game path.
08:25:12 <kmc> heh
08:25:23 <shachaf> elliott: Does @ have games?
08:25:24 * elliott can't remember what the game was going to be any more.
08:25:27 <kmc> right, some things do not make business sense but are justified by broader concerns
08:25:31 <kmc> like "this is what i want to do"
08:25:32 <elliott> shachaf: Who needs games when @ is as fun as it is?!
08:25:44 <kmc> my impression was that the ipwn guys thought they were making business sense
08:25:55 <itidus21> @ peace and @ war...
08:25:58 <elliott> kmc: It's the Paul Graham stuff, isn't it?
08:26:02 <zzo38> What is FRP?
08:26:12 <kmc> elliott, ?
08:26:15 <elliott> "If you program in my Blub, you'll have such a competitive advantage that you'll be, like, exponentially better than C++ programmers."
08:26:16 <itidus21> functional reactive programming
08:26:29 <pikhq> zzo38: Functional Reactive Programming; an alternate paradigm for IO in a purely-functional-ish language.
08:26:32 <pikhq> (such as Haskell)
08:26:36 <elliott> FRP isn't really about IO.
08:26:52 <kmc> elliott, maybe. PG also says there are nontechnical competitive advantages of using weird languages
08:26:57 <kmc> which I think is a more solid claim
08:27:02 <elliott> kmc: I think that's what I was saying.
08:27:10 <zzo38> Can you show me the mathematical structures for reactives?
08:27:28 <elliott> zzo38: type Behavior a = Time -> a; type Event a = [(Time,a)]
08:27:43 <elliott> zzo38: Those are lies. Now you can start on the open problem of FRP: finding out definitions that aren't lies.
08:27:52 <shachaf> elliott: Step 1: "Behaviour"
08:28:00 <elliott> Correct!
08:28:19 <pikhq> elliott: What I gathered from him was that by using Blub you'll get better programmers, not that you'll turn people into better programmers.
08:28:20 <shachaf> Step 2: "Eveunt"
08:28:33 <pikhq> Which is at least not complete incoherent nonsense. :)
08:28:35 <kmc> you're mixing several PG metaphors
08:28:48 <elliott> kmc: Not true, I didn't mention painting.
08:29:16 <kmc> penalty, disproving a universal statement with an existence proof. five yards.
08:29:20 * elliott doesn't tend to be too careful with PG mockquotes, admittedly, although I do agree that such languages can give competitive advantages.
08:29:48 <elliott> The problem is that most relevant languages that don't have the infrastructure you need because they're still obscure competitive advantages.
08:29:55 <kmc> he thinks Lisp gave ViaWeb a competitive advantage on technical grounds
08:30:09 -!- kmc has left ("Leaving").
08:30:12 -!- kmc has joined.
08:30:20 <elliott> I also don't think that using Haskell for a game is a competitive advantage unless you /do/ go for something like FRP.
08:30:32 <elliott> Because you'll just spend all your time in IO writing callbacks.
08:30:37 <kmc> dunno, Haskell is still a pretty good language
08:30:38 <shachaf> kmc: I wonder why that keeps happening. Do you try to delete a word with ^W?
08:30:45 <kmc> i forgot why
08:30:56 <kmc> and you get a nontechnical advantage from hiring haskellers
08:30:57 <elliott> kmc: It is, but it's not significantly better at imperative programming than most other languages.
08:31:03 <elliott> The lack of pointers is nice, of course.
08:31:17 <elliott> I guess for the iPhone you pretty much have to write games in C++ unless you go for something "weird" like Haskell.
08:31:28 <pikhq> Objective C, not C++.
08:31:29 <kmc> i think it is very common to write rendering in C or C++ and game logic in Lua
08:31:30 <elliott> (I gather people write the games in C++ and glue it with Objective-C++.)
08:31:32 <elliott> pikhq: ^
08:31:35 <elliott> Objective-C is way too slow.
08:31:36 <pikhq> Oh, okay.
08:31:45 <kmc> which is kind of like writing rendering in C and writing game logic in Haskell
08:31:46 <elliott> It's all the safety of C with all the speed of unoptimised Smalltalk.
08:31:52 <kmc> which is what they were doing
08:32:06 <kmc> getting Lua working is a lot less of a pain
08:32:08 <zzo38> Objective-C is a strict superset of C, so you can write a plain C program in Objective-C, too.
08:32:20 <elliott> kmc: Rendering in C seems an odd choice. Isn't the iPhone all shadery these days?
08:32:21 <kmc> hiring Lua programmers is not much of a competitive advantage; it's pretty standard in the game industry
08:32:28 <kmc> i'm sure there were shaders too
08:32:36 <elliott> ISTR that the OpenGL they use doesn't have the fixed-function stuff, so there's not all /that/ much C code you'd end up writing.
08:32:39 <pikhq> zzo38: Yeah, but Objective-C++ is supported trivially on the platform, and industry tends to prefer C++ over C.
08:32:40 <elliott> I guess GLSL counts as C.
08:32:44 <kmc> what i mean is that you make OpenGL calls from a thread which doesn't need garbage collection
08:32:44 <elliott> Sort of.
08:32:46 <kmc> TRIVIAL
08:32:48 <elliott> kmc: right
08:33:02 <elliott> Wasn't GHC getting a parallel collector?
08:33:05 <elliott> Or am I thinking concurrent.
08:33:07 <elliott> Non-pausing.
08:33:11 <kmc> it's in a branch
08:33:11 <zzo38> pikhq: Then you can program plain C++ in Objective-C++ if you want to do so
08:33:47 <kmc> i think PG may be right about Lisp and ViaWeb, but note that there were many fewer options back then
08:34:00 <pikhq> Really, the supported compiler is GCC, so... Yeah. Nice and simple to do any GCC-supported language, maybe modulo a few outright oddballs.
08:34:03 <pikhq> (gcj?)
08:34:04 <kmc> his competitors were writing webapps in C++ or pre-modern Perl
08:34:13 <kmc> nothing resembling a "web framework" would exist for another decade
08:34:15 <elliott> pikhq: Er, isn't the iPhone clang these days?
08:34:25 <pikhq> elliott: Oh, right, so it probably is.
08:34:27 <elliott> I mean, OS X is, so I can't imagine the iPhone isn't too.
08:34:42 <pikhq> Which leaves you with C, Objective-C, C++, Objective-C++.
08:34:43 <kmc> so I'll bet they got a lot of benefit from being able to grow a kind of web framework in Lisp organically
08:34:58 <pikhq> Which is also the set of languages most anyone would actually *give a shit about* in GCC.
08:35:02 <kmc> but also they had good timing and won the lottery etc
08:35:19 <pikhq> (seriously, who uses Fortran? GCJ? D?)
08:35:30 <elliott> kmc: didn't pg say viaweb took off because of their crazy programming interface thing
08:35:34 <kmc> most of the advice PG has about doing a startup is not technical
08:35:39 <kmc> which is probably correct
08:35:44 <kmc> though his advice is biased and self-serving
08:35:53 <elliott> I think PG extrapolates way too much for his sample size.
08:36:07 <pikhq> "You should do startups! Here, we've got a totally awesome service that is the BEST EVER for it!"
08:36:11 <elliott> But yeah, "How to Win the Lottery" wouldn't be a very popular article.
08:36:26 <kmc> today there are many reasonable, popular languages and frameworks for web programming
08:36:43 <kmc> it's harder for me to believe that using Haskell over Rails will be a huge advantage, even if using Lisp over C++ was
08:36:49 <kmc> (in the technical sense)
08:37:20 <elliott> it might be a security advantage though :)
08:37:26 <kmc> sure
08:37:29 <kmc> startups don't care about security
08:37:33 <pikhq> Yeah... Web dev has had at least enough sensibility to stop with C/C++.
08:37:36 <elliott> yep :p
08:37:41 <pikhq> Though they're still on PHP and Ruby. :P
08:37:47 <elliott> pikhq: http://www.webtoolkit.eu/wt
08:38:24 <pikhq> WHY GOD WHY
08:39:10 <kmc> ksplice cared about security because we had the ability to automatically root hundreds of thousands of Linux machines
08:39:19 <kmc> even then, I suspect others in a similar situation would not care
08:39:27 <shachaf> pikhq: To be fair, he wrote "you should do startups" way before he started investing in them.
08:39:45 <kmc> shachaf, you should play the lottery! one time i played the lottery and won the jackpot!
08:40:01 <kmc> there may be some correlation between the people who understand and care about security, and the people who can write something like ksplice
08:40:12 <pikhq> shachaf: True, that's only really a criticism of his *later* stuff. Where he talks a lot about how his startup incubator thing is awesome.
08:40:21 <pikhq> Not where he talks about how startups in general are awesome.
08:40:37 <kmc> it's all self-serving, even when he's not directly talking about YC
08:40:42 <shachaf> kmc: Sure, I was only responding to pikhq's specific statement.
08:40:51 <kmc> he wants to sell you on the idea that you need to do a startup by age 18 or else you are a failure in life
08:41:08 <kmc> that way you'll be willing to give away equity for minimum wage
08:41:25 <kmc> if people graduate college and work a couple jobs before doing a startup, they don't need YC as much
08:41:33 <kmc> they have savings and they have industry connections
08:42:12 <pikhq> And will probably need less of the advice YC could give (they do give advice, right?)
08:42:27 <kmc> yeah
08:42:51 <elliott> advice: make lots of money
08:43:17 <pikhq> Advice: steal from Gates
08:43:31 <kmc> hence disparaging the corporate work environment
08:43:38 <kmc> "I'm not sure why Mr. Graham felt the need to draw this incredibly condescending parallel with company employees and caged animals in the zoo." http://www.codinghorror.com/blog/2008/03/paul-grahams-participatory-narcissism.html
08:43:51 <elliott> Oh man, Jeff Atwood writing about Paul Graham!
08:43:55 <kmc> i know right
08:43:56 <elliott> I can't think of anything more enjoyable.
08:44:26 <kmc> here, Spolsky is PG's partner in crime
08:44:31 <kmc> dunno about Atwood
08:44:39 <elliott> haha, and referencing slamming spolsky in the second paragraph
08:44:50 <kmc> Spolsky wants you to think that every company besides Fog Creek is a soul-sucking cubicle mill
08:44:55 <elliott> I wonder if Spolsky tried to get SO written in that custom language
08:45:00 <kmc> because that's the core of their corporate identity
08:45:34 <kmc> "we're going to make a software company which is unlike 1994 Microsoft"
08:46:03 <elliott> as far as I can tell Fog Creek's main money-making scheme must be getting people to like them, rather than anybody actually using their products
08:46:40 <pikhq> Does Fog Creek make anything?
08:46:58 <ais523> a bug tracker, IIRC
08:47:41 -!- Vorpal has joined.
08:47:48 -!- Vorpal has quit (Changing host).
08:47:48 -!- Vorpal has joined.
08:48:20 <kmc> also https://trello.com/, an organization / collaboration tool
08:48:31 <kmc> and a few other things
08:49:00 <kmc> if you want to spend 80 minutes cringing, watch http://www.projectaardvark.com/movie/
08:49:11 <kmc> which is about some interns developing one of their other products
08:49:45 <elliott> 80 minutes of cringing? I can't think of anything I want more.
08:52:52 <monqy> who thought that would be a good idea
08:53:21 <kallisti_> elliott: have I ever mentioned that you're a jerk?
08:53:49 <monqy> I always figured it went without saying
08:54:18 <elliott> kallisti_: Often
08:58:58 <shachaf> Is the main reason that http://en.wikipedia.org/wiki/File:Rope_example.jpg is rotated to make it seem more impressive?
09:01:16 <itidus21> it is more pleasant on the eyes rotated
09:01:17 <monqy> good graphic
09:01:45 <shachaf> None of the other pictures on that page are rotated.
09:02:06 <elliott> shachaf: I've wondered about that thing too.
09:02:16 <elliott> "The topic of this article may not meet Wikipedia's general notability guideline. Please help to establish notability by adding reliable, secondary sources about the topic. If notability cannot be established, the article is likely to be merged, redirected, or deleted. (September 2011)"
09:02:22 <elliott> Oh yeah, ropes are so non-notable.
09:03:06 <monqy> why is it rotated? why is it jpeg? why what's up with everything being off center and angled wrong?
09:03:14 <monqy> so many questions. the most mysterious image.
09:03:33 <shachaf> I just realised that I'm a JPG snob.
09:03:37 <shachaf> When did that happen?
09:03:39 <itidus21> monqy: ok the investigatin begins
09:04:54 <elliott> shachaf: I don't even like the idea of using JPEGs for photos.
09:05:04 * elliott biggest jpeg snob
09:05:05 <itidus21> Meng Yao introduced the rotated rope on 03:25, 25 April 2011
09:05:31 <itidus21> his edit increased the document from about 3kb to 9kb
09:06:41 <itidus21> his only wiki contribution has been on the rope article and he altered it on wiki for approximately 90 minutes before dissapearing forever
09:06:44 <elliott> Rotated rope. Rope.
09:08:01 <zzo38> class Category c => CatArrow c p where { arr1 :: c x y -> c (p x z) (p y z); arr2 :: c x y -> c (p z x) (p z y); mirror :: c (p x y) (p y x); (*+*) :: c x y -> c x' y' -> c (p x x') (p y y'); (&|&) :: c x y -> c x y' -> c x (p y y'); arr2 f = mirror . arr1 f . mirror; f *+* g = arr1 f >>> arr2 g; }; Is it possible to define mirror in terms of the other class methods?
09:08:12 <zzo38> Should there even be a mirror?
09:09:21 <elliott> shachaf: Take a look at this amazing question: http://stackoverflow.com/questions/8767849/importing-modules-as-a-function-with-string-as-input
09:09:25 <elliott> The edit is the best part.
09:09:29 <itidus21> meng yao included his rope diagram 8 times in his wiki edit :-D
09:09:47 <elliott> itidus21: there are multiple diagrams
09:09:58 -!- Ngevd has joined.
09:10:01 <Ngevd> Hello!
09:10:05 <itidus21> ok ok its not exactly the same
09:10:47 <itidus21> as to why he rotated it... i think that is a real mystery
09:11:22 <monqy> and why it's jpeg and why it's generally wonky
09:11:25 <monqy> many real mysteries
09:11:53 <kallisti_> elliott: lol. one bad idea to another.
09:12:08 <itidus21> perhaps he is boycotting SVG
09:13:39 <shachaf> elliott: So I read every word in that sentence once and didn't manage to piece it together.
09:13:53 <shachaf> elliott: I'm going to treat this as one of those games where you only get one try and then it's instadeath.
09:14:57 <monqy> I read it a few times and still don't get it
09:15:43 <elliott> `shaWhich sentence?
09:15:47 <elliott> shachaf:
09:15:55 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: shaWhich: not found
09:16:04 <elliott> @src foldl
09:16:04 <lambdabot> foldl f z [] = z
09:16:04 <lambdabot> foldl f z (x:xs) = foldl f (f z x) xs
09:16:11 <elliott> Right.
09:16:20 <shachaf> elliott: The edit.
09:16:52 <elliott> shachaf: It's technically multiple sentences. :p
09:18:09 <elliott> shachaf: Am I a bad person if I don't really like RWH?
09:18:15 * elliott feels guilty.
09:18:57 <shachaf> elliott: I haven't read RWH.
09:19:18 * elliott hasn't read all of it.
09:19:35 <shachaf> kmc says that the chapters on FFI and STM are good.
09:19:43 <elliott> But all the code snippets are ugly imperative blobs.
09:19:45 <shachaf> I haven't even read those.
09:19:51 <elliott> Also it's really outdated but I can't really blame them for that.
09:19:54 <shachaf> elliott: That's Real-World for you!
09:20:05 <shachaf> elliott: I'm sure you could find room in your heart to blame them for being outdated.
09:20:20 <elliott> I heard they advocated putting text in ByteStrings, which is unacceptable even if one of the authors later goes on to create a Unicode text type. :p
09:20:28 <elliott> I HEARD THEY'RE COMMIES.
09:21:04 <shachaf> OUR PRECIOUS UNICODE FLUIDS
09:21:20 * elliott would like to see a LYAH2: Electric Boogaloo that picks up where LYAH left off.
09:22:03 <kallisti_> the problem is that it would still have to be written in a quirky style.
09:22:43 <elliott> LYAH isn't really.
09:22:51 <monqy> lyah2: the real world no jokes allowed
09:22:59 <elliott> Although w(p)gtr kind of desensitised me to that sort of stuff permanently.
09:23:09 <kallisti_> "see, monads are just monoids in the category of endofunctors. Pretty simple, huh? <picture of a poorly drawn conch shell>"
09:23:09 <shachaf> elliott: I don't like LYAH much either.
09:23:12 <shachaf> Not that I've read it.
09:23:33 <kallisti_> I like it because
09:23:37 <kallisti_> it's how I learned Haskell.
09:23:40 <kallisti_> initially.
09:23:43 <shachaf> But people occasionally come into #haskell, misled by wrong sentences in it.
09:23:57 <elliott> shachaf: Hmm, like what?
09:24:03 <pikhq> shachaf: It's not bad, it's just very, very simplistic.
09:24:21 <pikhq> It ends with monads.
09:24:25 <elliott> pikhq: *zippers
09:24:30 <pikhq> elliott: Bah
09:24:40 <kallisti_> if only we could teach newbies every excrutiatingly technically correct detail of everything without scaring them away.
09:24:45 <shachaf> elliott: I don't remember.
09:24:46 <shachaf> Monads-as-containers or something.
09:24:54 * elliott would write a Haskell tutorial, but nobody would read it.
09:25:00 <shachaf> I'd read it!
09:25:04 <shachaf> Well.
09:25:10 <shachaf> I'd read it to the same degree I've read LYAH and RWH.
09:25:11 <kallisti_> elliott: you would just spam equations at the reader and be like "okay this makes perfect sense now"
09:25:17 <shachaf> That's a pretty good honour, isn't it?
09:25:32 <elliott> "When we first talked about functors, we saw that they were a useful concept for values that can be mapped over. Then, we took that concept one step further by introducing applicative functors, which allow us to view values of certain data types as values with contexts and use normal functions on those values while preserving the meaning of those contexts.
09:25:33 <elliott> In this chapter, we'll learn about monads, which are just beefed up applicative functors, much like applicative functors are only beefed up functors.
09:25:33 <elliott> [...]
09:25:34 <elliott> Monads are a natural extension of applicative functors and with them we're concerned with this: if you have a value with a context, m a, how do you apply to it a function that takes a normal a and returns a value with a context? That is, how do you apply a function of type a -> m b to a value of type m a? So essentially, we will want this function:
09:25:38 <elliott> (>>=) :: (Monad m) => m a -> (a -> m b) -> m b
09:25:40 <elliott> If we have a fancy value and a function that takes a normal value but returns a fancy value, how do we feed that fancy value into the function? This is the main question that we will concern ourselves when dealing with monads. We write m a instead of f a because the m stands for Monad, but monads are just applicative functors that support >>=. The >>= function is pronounced as bind."
09:25:45 <elliott> shachaf: Looks pretty far away from monads-as-containers to me.
09:25:58 <kallisti_> monads-as-fancy-values
09:26:22 <elliott> shachaf: "Well, there should, but when Haskell was made, it hadn't occured to people that applicative functors are a good fit for Haskell so they weren't in there." This is misleading though, EVERYBODY knows Haskell predates applicative functors.
09:26:24 <elliott> EVERYBODY
09:27:05 <shachaf> elliott: I don't remember.
09:27:17 -!- kallisti_ has changed nick to kallisti.
09:27:24 <shachaf> Haskell is a natural predator of applicative functors.
09:30:59 -!- Taneb has joined.
09:31:06 -!- Ngevd has quit (Read error: Connection reset by peer).
09:36:19 -!- Taneb has quit (Ping timeout: 268 seconds).
09:36:46 <zzo38> THere is also join, and that doesn't mention join
09:37:42 <kallisti> sure it does.
09:37:46 <kallisti> it mentions >>=
09:37:53 <elliott> zzo38: join is not in the Monad typeclass
09:37:56 <kallisti> :>
09:38:03 <kallisti> I'm sure it's mentioned id at some point
09:38:05 <zzo38> elliott: I know it is not in the Monad typeclass but it should be
09:38:12 <shachaf> elliott: If we're arguing *that* way, it didn't mention fail.
09:38:14 <kallisti> ANYONE WITH A BRAIN would know that join is (>>= id) :>
09:38:21 <shachaf> fail is one of the essential nutrients for any Haskell monad.
09:39:26 <elliott> shachaf: It does show fail and implement it in its examples, actually.
09:39:33 <elliott> Though it probably: shouldn't.
09:39:43 <elliott> zzo38: Well, LYAH is a Haskell tutorial, not a Haskell-as-it-should-be tutorial.
09:40:54 <zzo38> But you can't learn monads properly unless you know about fmap and join as well, and their mathematical relation to >>=
09:41:13 <pikhq> zzo38: It does teach functors and applicative functors before monads.
09:41:19 <shachaf> "learn monads" should never be your goal.
09:41:28 <monqy> zzo38: that's what monad tutorials are for
09:41:55 <kmc> (>>=) = (8===D)
09:42:00 <pikhq> shachaf: Not necessarily. What if you're learning category theory? :)
09:42:30 <monqy> _ === _ = (>>=)
09:42:50 <kallisti> monqy: ah yes good old const (const (>>=))
09:43:05 <monqy> my favourite
09:43:05 <kallisti> the best of all functions
09:43:16 <kallisti> no wait, not as good as the totem pole.
09:43:43 <kmc> the best of all functions is the McCarthy 91 function
09:44:11 <elliott> kmc: What about the man or boy not-a-function?
09:44:26 <kmc> @let best n | n > 100 = n-10 | otherwise = best (best (n+11))
09:44:27 <lambdabot> Defined.
09:44:30 <kmc> > best 50
09:44:32 <lambdabot> 91
09:44:38 <elliott> > best 91
09:44:39 <lambdabot> 91
09:44:40 <elliott> > fix best
09:44:43 <lambdabot> mueval-core: Time limit exceeded
09:44:45 <kmc> fail
09:44:48 <kmc> > fail
09:44:49 <lambdabot> Overlapping instances for GHC.Show.Show (GHC.Base.String -> m a)
09:44:50 <lambdabot> arising...
09:44:59 <zzo38> I think monad are generally understand better as a endofunctor having return and join, at least to me it is. But >>= is useful too, and so is <*> and that stuff.
09:45:05 <pikhq> > fix (>>=)
09:45:06 <lambdabot> Occurs check: cannot construct the infinite type:
09:45:06 <lambdabot> m = (->) (a -> m b)
09:45:11 <elliott> > fix bеst
09:45:13 <lambdabot> 91
09:45:16 <kmc> :t fij oin
09:45:16 <elliott> kmc: It was just a bit slow, that's all.
09:45:16 <lambdabot> Not in scope: `fij'
09:45:17 <lambdabot> Not in scope: `oin'
09:45:19 <kmc> :t fix join
09:45:20 <lambdabot> Occurs check: cannot construct the infinite type: a = m a
09:45:20 <lambdabot> Expected type: m (m a)
09:45:20 <lambdabot> Inferred type: m a
09:45:56 <kmc> Check in the appropriate box for boy or girl
09:45:58 <kmc> wondering will it ever stop and who invented this world
09:46:10 <kmc> Hi, welcome to big burger can i take your order?
09:46:25 <elliott> hi
09:46:29 <pikhq> Someone broke kmc!
09:46:40 <elliott> hi
09:46:47 <zzo38> For example, the list monad, join means put all list together, and for IO monad, join means if result if IO is another IO series of actions, then do the resulting one afterward.
09:47:15 <elliott> hi
09:47:16 <monqy> sequencing
09:47:23 <elliott> sequencing
09:52:23 <zzo38> And with (,) monad, join will make the monoid composition
09:59:29 -!- ais523 has quit (Remote host closed the connection).
09:59:33 <shachaf> Speaking of (,)
09:59:40 <shachaf> @let best n = tell [n] >> if (n > 100) then return (n-10) else best (n+11) >>= best
09:59:41 <lambdabot> <local>:13:0:
09:59:41 <lambdabot> Multiple declarations of `L.best'
09:59:41 <lambdabot> Declared at: <loca...
09:59:53 <shachaf> @let bestest n = tell [n] >> if (n > 100) then return (n-10) else bestest (n+11) >>= bestest
09:59:54 <lambdabot> Defined.
09:59:59 <shachaf> > runWriter (bestest 91)
10:00:01 <lambdabot> (91,[91,102,92,103,93,104,94,105,95,106,96,107,97,108,98,109,99,110,100,111...
10:00:11 <shachaf> > runWriter (bestest 89)
10:00:13 <lambdabot> (91,[89,100,111,101,91,102,92,103,93,104,94,105,95,106,96,107,97,108,98,109...
10:00:20 <shachaf> Thanks, lambdabot.
10:02:38 <kmc> Thambdabot.
10:02:41 -!- sebbu2 has joined.
10:02:47 -!- sebbu2 has quit (Changing host).
10:02:47 -!- sebbu2 has joined.
10:02:52 <kmc> Thanks, Hanks. Thanks.
10:03:12 <shachaf> "Here is how John McCarthy may have written this function in Lisp, the language he invented:"
10:03:32 <shachaf> Right, because he'd've written it in Common Lisp.
10:04:21 -!- zzo38 has quit (Remote host closed the connection).
10:04:34 -!- sebbu has quit (Ping timeout: 255 seconds).
10:08:56 -!- Phantom_Hoover has joined.
10:10:51 <elliott> shachaf: There's a reason it's called Common Lisp!
10:10:57 <elliott> I... completely forget why.
10:14:32 <shachaf> elliott: It's derived from "Come On".
10:14:46 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
10:15:02 -!- Phantom_Hoover has joined.
10:18:03 <kmc> shachaf, "Lisp" doesn't mean "Common Lisp"
10:18:16 <kmc> shachaf, it means "whatever vaguely Lisp-like language most supports the point I'm currently trying to make"
10:19:11 <shachaf> kmc: Using "defun" and "t"?
10:19:18 <kmc> for example "Lisp is a statically-typed language with pattern matching"
10:19:53 <shachaf> That sounds like a fun game.
10:20:02 <shachaf> Sadly I must go to sleep.
10:20:09 <kmc> in this case "Lisp" means "Lisp extended with macros for pattern-matching and a static type system, which should be trivial for the most casual observer"
10:20:16 <kmc> sadly but truly
10:20:28 <Phantom_Hoover> Pattern matching?
10:20:29 <shachaf> kmc: Wait, I thought Haskell had a monopoly on that technique?
10:20:29 <Phantom_Hoover> Lisp?
10:21:03 <elliott> Phantom_Hoover: Tons of Lisps have pattern matching.
10:21:06 <elliott> Heck, destructuring-bind is in CL.
10:21:37 <Phantom_Hoover> Huh.
10:21:47 <shachaf> Pattern matching is just a special case of unification, man.
10:22:18 <kmc> "Lisp is a simple, elegant language based on the lambda calculus" => R5RS Scheme with mutation and anything you don't learn in SICP removed
10:22:40 <kmc> "Lisp is a mature language with sophisticated implementations" => Common Lisp
10:22:42 <shachaf> kmc: _The Little Schemer_ is simpler than SICP for this purpose.
10:22:52 <kmc> "Lisp is webscale, in the cloud" => Clojure
10:23:42 * shachaf wonders what kmc will say about Arc
10:24:21 <kmc> mumble mumble hackers and painters
10:25:37 <elliott> Did you know there are people who still care about Arc?
10:25:46 <Phantom_Hoover> Astonishing.
10:25:50 <elliott> kmc: R5RS really shouldn't have mutation, though.
10:25:54 <elliott> At least not set-car!/cdr!.
10:26:00 <elliott> set! I can bear.
10:26:24 <kmc> sigh
10:26:27 <kmc> been fighting with this recently
10:26:34 <kmc> to get some Scheme code to work in Racket
10:26:43 <elliott> kmc: #lang r5rs?
10:26:46 <elliott> Or whatever the syntax is.
10:26:49 <kmc> doesn't do everything I want
10:26:51 <kmc> but, we have it working now
10:27:13 * elliott thinks it was a deliberately breaking change to make Racket more distinct as its own language
10:27:24 <kmc> so, it seems weird to use pairs also as reference cells
10:27:25 <elliott> although it was still PLT Scheme then
10:27:43 <kmc> but there's probably some benefit in having reference cells, distinct from mutable environments
10:27:48 <kmc> but i'll have to think about what that might be
10:27:48 <elliott> yes, true
10:27:59 <elliott> kmc: it's a legacy from lisp implementations of ye olden days, I think
10:28:03 <kmc> sure
10:28:05 <elliott> where even implementation structures were made out of cons cells
10:28:13 <elliott> I know picolisp still does everything like that
10:28:21 <elliott> also I have no actual evidence old implementations were like that
10:28:24 <kmc> "what, you don't do everything inside a metacircular evaluator"
10:28:34 <kmc> "how do you write language extensions?!?"
10:29:19 <shachaf> kmc: Is this for your educational thing?
10:29:35 <kmc> i don't know what you mean
10:29:44 <kmc> Zombie 6.001 is http://web.mit.edu/alexmv/6.S184/
10:29:46 <shachaf> You were talking about something earlier.
10:29:46 <kmc> i'm helping teach it
10:29:50 <shachaf> Ah. Yes, that.
10:30:23 <shachaf> That looks like a fun class thing.
10:30:28 <kmc> yep
10:30:32 <kmc> you should follow along
10:30:50 <shachaf> How does one do that?
10:30:58 <shachaf> Do I have to move to Boston?
10:31:06 * elliott closes some tabs so he can see the favicons again.
10:31:10 <kmc> i expect lecture slides and assignments will be posted
10:32:26 <shachaf> elliott: I'm just at the brink. Interesting tabs are a zero-sum game now.
10:32:42 * kmc thinks project 3 might be kind of a challenge, even as an instructor
10:33:04 <kmc> (but it's not posted yet)
10:33:09 <shachaf> What's project 3?
10:33:23 <kmc> a bunch of extensions to the metacircular evaluator
10:33:27 <kmc> including an interactive debugger
10:33:45 <shachaf> Ah, a debugger.
10:35:08 <shachaf> I haven't actually read SICP. I probably should.
10:35:29 <kmc> i've not read it cover to cover
10:35:36 <kmc> but i think i've read most parts of it at some point or another
10:36:39 <shachaf> OK, you've convinced me. I'll follow along.
10:36:57 <shachaf> You should send me a reminder when it starts, if you remember. :-)
10:37:00 <kmc> sure
10:37:02 <kmc> it starts on Monday
10:37:05 <kmc> er, Tuesday
10:37:12 <elliott> I suddenly realise I've never written a debugger.
10:37:14 * kmc keeps forgetting that Tuesday isn't Monday
10:37:17 <elliott> (Probably because I don't like debuggers.)
10:37:20 <shachaf> Oh.
10:37:36 <shachaf> elliott: Write a C debugger in Haskell for me.
10:37:51 <shachaf> And make it like gdb except satisfying whatever mysterious criteria a debugger must satisfy for me to like it.
10:39:02 <shachaf> Where are the slides etc. going to be posted?
10:39:03 <elliott> shachaf: I don't think it's possible to like anything that exclusively exists to make you focus in depth on the exact control flow of an imperative prorgam.
10:39:14 <elliott> Prorgam!
10:39:18 <kmc> shachaf, for zombie 6.001? at the URL i just linked, I think
10:39:41 * kmc is new to this
10:39:54 <shachaf> OK. I'll keep a tab open.
10:40:09 <kmc> will try to remind you
10:40:16 <shachaf> Hopefully I remember to reload it on Tuesday.
10:40:25 <kmc> first project will be posted Tuesday night
10:40:34 * shachaf cleverly executes a rebalancing algorithm by moving a pair of tabs from one window to another.
10:40:38 <elliott> shachaf: The best way to GC tabs is to turn your computer off every day.
10:40:53 * elliott just holds down the power button so he doesn't get a chance to think about saving them.
10:41:03 <shachaf> elliott: That would be a tragedy.
10:41:09 <kmc> the best way is to run a browser which crashes a lot
10:41:12 <shachaf> This collection of tabs has been building up for about a year.
10:41:17 <shachaf> My browser crashes but recovers.
10:41:27 <elliott> :t fromRational
10:41:28 <lambdabot> forall a. (Fractional a) => Rational -> a
10:41:40 <elliott> @hoogle Floating a => a -> Float
10:41:40 <lambdabot> Prelude acos :: Floating a => a -> a
10:41:41 <lambdabot> Prelude acosh :: Floating a => a -> a
10:41:41 <lambdabot> Prelude asin :: Floating a => a -> a
10:41:43 <elliott> Oh, right.
10:41:47 <elliott> @hoogle Double -> Float
10:41:48 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
10:41:48 <lambdabot> Control.OldException throwDyn :: Typeable exception => exception -> b
10:41:48 <lambdabot> Control.DeepSeq ($!!) :: NFData a => (a -> b) -> a -> b
10:41:51 <elliott> lmao
10:41:59 <kmc> haha
10:42:01 <kmc> what the fuck
10:42:13 <elliott> @hoogle (RealFloat a) => a -> b
10:42:13 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
10:42:13 <lambdabot> Prelude isDenormalized :: RealFloat a => a -> Bool
10:42:13 <lambdabot> Prelude isIEEE :: RealFloat a => a -> Bool
10:42:16 <elliott> I forget if RealFloat is a thing.
10:42:17 <elliott> Yes, it is.
10:42:18 <elliott> @hoogle (RealFloat a) => a -> Float
10:42:18 <lambdabot> Prelude significand :: RealFloat a => a -> a
10:42:19 <lambdabot> Prelude id :: a -> a
10:42:19 <lambdabot> Data.Function id :: a -> a
10:42:22 <elliott> @hoogle (RealFrac a) => a -> Float
10:42:22 <lambdabot> Prelude id :: a -> a
10:42:22 <lambdabot> Data.Function id :: a -> a
10:42:23 <lambdabot> GHC.Exts breakpoint :: a -> a
10:42:26 <elliott> Oh, come on!
10:42:29 <shachaf> @hoogle /msg
10:42:29 <lambdabot> Parse error:
10:42:29 <kmc> :t Control.OldException.throwDyn :: Double -> Float
10:42:30 <lambdabot> /msg
10:42:30 <lambdabot> ^
10:42:30 <lambdabot> Double -> Float
10:42:37 <kmc> > Control.OldException.throwDyn 3.0
10:42:38 <lambdabot> Not in scope: `Control.OldException.throwDyn'
10:43:10 <shachaf> That's a fun type.
10:43:20 <elliott> how do you even do Float -> Double or w/e
10:43:24 * elliott hasn't used floating-point much in Haskell
10:43:30 <kmc> :t realToFrac
10:43:30 <lambdabot> forall a b. (Real a, Fractional b) => a -> b
10:43:32 <elliott> oh right
10:43:34 <kmc> :t realToFrac :: Float -> Double
10:43:35 <lambdabot> Float -> Double
10:43:37 <elliott> I knew that existed, I just forgot its name
10:43:38 <elliott> and type
10:44:22 <shachaf> This is the best typeclass:
10:44:25 <shachaf> @src Real
10:44:25 <lambdabot> class (Num a, Ord a) => Real a where
10:44:25 <lambdabot> toRational :: a -> Rational
10:44:41 <kmc> class F a where { f :: a }
10:45:57 <elliott> kmc: Haskell should get rid of value declarations.
10:45:57 <shachaf> Maybe I should move to Boston for a month.
10:46:05 <elliott> You could just use a newtype record and an instance.
10:46:18 <kmc> mhm
10:46:22 <kmc> shachaf, which month?
10:46:34 -!- Ngevd has joined.
10:46:52 <shachaf> I don't know. I guess the bad months are just around now.
10:51:00 -!- Taneb has joined.
10:51:02 -!- Ngevd has quit (Read error: Connection reset by peer).
10:53:09 <shachaf> Anyway, I was going to sleep.
11:00:07 -!- nooga has joined.
11:00:32 <elliott> shachaf: Hi.
11:00:41 <shachaf> elliott: Thanks.
11:01:53 <elliott> shachaf: Did I wake you up?
11:02:03 <kmc> thelliott
11:02:47 <shachaf> Thanks, kmc.
11:03:38 <shachaf> Stumped you there, didn't I.
11:03:48 <kmc> no
11:04:37 <shachaf> Oh.
11:04:49 <shachaf> Anyway, I'm going to sleep.
11:04:57 <kmc> good night, shachaf
11:05:03 <kmc> gochaf
11:19:56 -!- azaq23 has joined.
11:26:09 <Taneb> Hello
11:39:29 <elliott> class Comonoid a where { ytpme :: a -> (); dneppa :: a -> (a,a) }
11:39:44 <monqy> no....
11:40:03 <monqy> what laws does it follow
11:42:16 <Phantom_Hoover> The inverse of the monoid laws, duh.
11:42:40 <monqy> help
11:43:51 <Phantom_Hoover> Come on, monqy, it's just comonads extended from endofunctors.
11:44:50 <kallisti> !perl use v5.10; say scalar caller; say eval "scalar caller";
11:44:53 <EgoBot> ​\ main
11:45:20 <monqy> hi perl
11:45:22 <Phantom_Hoover> Evil scalar caller.
11:46:10 <kallisti> `run echo 'scalar caller' > blah.pl; perl -e 'print do "blah.pl"'; rm blah.pl
11:46:13 <HackEgo> main
11:46:34 <kallisti> `run echo 'scalar caller' > blah.pl; perl -e 'package Foo; print do "blah.pl"'; rm blah.pl
11:46:38 <HackEgo> Foo
11:47:12 <kallisti> hm
11:48:13 <kallisti> I /think/ I can use this...
11:48:24 <kallisti> to write code that can reload itself.
11:48:51 <kallisti> I can just check caller and if it's the name of the package, run any kind of necessary hot-swap code.
11:53:26 <elliott> <monqy> no....
11:53:27 <elliott> <monqy> what laws does it follow
11:54:07 <elliott> monqy: i er
11:54:18 <elliott> monqy: i don't know
11:54:22 <monqy> :(
11:54:32 <elliott> <Phantom_Hoover> Come on, monqy, it's just comonads extended from endofunctors.
11:54:43 <elliott> Phantom_Hoover: Not really, you'd need a
11:54:56 <elliott> class SortaCategory (~>) one (*)
11:54:58 <elliott> or whatever.
11:55:03 <elliott> *id
11:55:19 <elliott> ytpme :: id ~> one; dneppa :: id ~> id*id
11:55:33 <kallisti> oh hmmmm that won't always work I think....
11:56:07 <kallisti> if I write new code that removes a method, the reload won't hide that method.
11:56:17 <kallisti> but it can redefine and add methods no problem.
11:57:14 <kallisti> `run echo '$x' > blah.pl; perl -e 'local $x = 5; print do "blah.pl"'; rm blah.pl
11:57:17 <HackEgo> 5
11:57:30 <kallisti> `run echo '$x' > blah.pl; perl -e 'my $x = 5; print do "blah.pl"'; rm blah.pl
11:57:33 <HackEgo> No output.
11:57:43 <kallisti> awwww yeah.
11:57:56 <kallisti> I can do so many evil things with that trick.
11:58:00 <elliott> Phantom_Hoover: (What is a comonoid really?)
11:58:08 <elliott> Oh, it's a monoid in the opposite category.
11:58:17 <Phantom_Hoover> Yes.
11:58:21 <elliott> And the opposite category is just flipping all the arrows.
11:58:32 <elliott> So, um... what's the comonoid equivalent of Monoid?
11:59:25 <kallisti> Comonoid.
11:59:28 <kallisti> :)
12:00:33 <Phantom_Hoover> Well, um, if you take the definition with a category with one object A, and take the underlying set to be Hom(A,A) and the multiplication operator to be ., you get...
12:00:39 <Phantom_Hoover> The exact same monoid?
12:01:06 <Phantom_Hoover> Q.E.D.
12:02:52 <kallisti> `run echo 'package X; our $x = 3' > blah.pl; perl -e 'package X; our $x = 2; do "blah.pl"; print $x;' rm blah.pl
12:02:56 <HackEgo> 3
12:03:18 <kallisti> oh that's so good...
12:03:46 <monqy> why kallisti why................
12:03:57 <kallisti> monqy: to have an IRC bot that never needs to be shutdown ever.
12:05:42 <monqy> `cat blah.pl
12:05:45 <HackEgo> package X; our $x = 3
12:05:57 <kallisti> oh
12:06:19 <kallisti> `run rm blah.pl
12:06:22 <HackEgo> No output.
12:06:50 <kallisti> it's not without flaws though. I can't redefine lexical variables at the top-level this way.
12:07:03 <monqy> perhaps that is for the best
12:07:03 <kallisti> because... well, they're lexical.
12:07:43 <kallisti> but most top-level variables are going to be package scope or dynamic scope anyway.
12:08:37 <kallisti> now for something fun...
12:12:04 <kallisti> `run echo 'package X; my $caller = caller; eval "require $caller";' > X.pm; echo 'package Y; if (my $caller = caller) { eval "require $caller" } else { require X }' > Y.pm; perl Y.pm
12:12:08 <HackEgo> No output.
12:12:12 <kallisti> hm
12:12:18 <kallisti> oh right
12:12:28 <kallisti> I can't recursively require things like that.
12:12:41 <kallisti> `run echo 'package X; my $caller = caller; eval "require $caller";' > X.pm; echo 'package Y; if (my $caller = caller) { eval "require $caller" } else { print %INC; require X }' > Y.pm; perl Y.pm
12:12:44 <HackEgo> No output.
12:13:05 <kallisti> `run echo 'package X; print %INC; my $caller = caller; eval "require $caller";' > X.pm; echo 'package Y; if (my $caller = caller) { eval "require $caller" } else { require X }' > Y.pm; perl Y.pm
12:13:09 <HackEgo> X.pmX.pm
12:15:32 <kallisti> `run echo 'package X; do caller.".pm";' > X.pm; echo 'package Y; if (my $caller = caller) { do "$caller.pm" } else { require X }' > Y.pm; perl Y.pm
12:15:35 <HackEgo> Warning: Use of "caller" without parentheses is ambiguous at X.pm line 1. \ Warning: Use of "caller" without parentheses is ambiguous at X.pm line 1. \ Warning: Use of "caller" without parentheses is ambiguous at X.pm line 1. \ Warning: Use of "caller" without parentheses is ambiguous at X.pm line 1. \ Warning: Use of "caller" without parentheses is ambiguous at X.pm line 1. \ Warning: Use of "caller" without parentheses
12:15:44 <kallisti> lol
12:16:10 -!- Zuu has quit (Ping timeout: 252 seconds).
12:16:20 <kallisti> apparently not very ambiguous because it did exactly what I wanted. :P
12:16:51 <Taneb> `run echo "main = print \"test\""
12:16:54 <HackEgo> main = print "test"
12:17:03 <Taneb> Hmm
12:17:10 <Taneb> I can't remember what I was doing with that
12:17:15 <kallisti> me neither.
12:18:05 <Taneb> `run echo "main = print \"test\"" > test.hs; runhaskell test.hs
12:18:13 <HackEgo> ​"test"
12:18:25 <Taneb> `rm test.hs
12:18:29 <HackEgo> No output.
12:19:34 <kallisti> http://search.cpan.org/~sprout/Sub-Delete-1.00002/lib/Sub/Delete.pm
12:19:41 <kallisti> I could maybe use this if I need to delete subs.
12:20:08 <kallisti> undef &sub; works kinda
12:20:39 <kallisti> or, hmmm...
12:20:52 <kallisti> I could completely destroy the symbol table before I reload. lol.
12:22:02 <Vorpal> gah does java not have a built in rounding function that rounds away from zero in case of .5
12:22:37 <kallisti> lolMath.round?
12:22:42 <Vorpal> kallisti, from the docs of Math.round it seems to always round up? So -0.5 would end up as 0?
12:22:44 <kallisti> oops lol virus
12:22:57 <kallisti> oh that's... weird. maybe they're wrong.
12:23:09 <kallisti> maybe they mean "rounds up" in terms of absolute value.
12:23:12 <Vorpal> hm perhaps
12:23:23 <Vorpal> no REPR for java so a bit annoying to test such
12:23:52 <elliott> read eval print read
12:23:57 <elliott> it just exits after the second read
12:24:03 <elliott> useful(tm)
12:25:04 <kallisti> nonsense. it's just as simple as public class Test { public static void main(String[] argv) { ... }
12:25:05 <monqy> at least it pays attention
12:25:19 <monqy> not like those dirty EEPLs
12:25:59 <kallisti> and then System.out.println(Math.round(-0.5)) assuming you imported Math
12:26:04 <kallisti> so. easy.
12:26:20 <Vorpal> elliott, typo :P
12:26:29 <Vorpal> elliott, but I guess I could justify it as read eval print repeat
12:26:35 <Vorpal> or something
12:26:39 <kallisti> wait no deleting the symbol is probably a bad idea oh wait nevermind that's a great idea.
12:28:28 <kallisti> `run echo 'package X; our $x = 3;' > X.pm; perl -e 'package X; our $x = 2; sub test() { print "WOAH" }; undef %X::; do "X.pm"; test';
12:28:31 <HackEgo> WOAH
12:28:39 <kallisti> oh, no.
12:28:41 <kallisti> not a good idea. :P
12:28:53 <kallisti> `run echo 'package X; our $x = 3;' > X.pm; perl -e 'package X; our $x = 2; sub test() { print "WOAH" }; %X:: = (); do "X.pm"; test';
12:28:56 <HackEgo> WOAH
12:29:08 <kallisti> subroutines get some kind of magic namespace
12:29:10 <kallisti> ?????
12:29:14 <kallisti> no.
12:30:03 <kallisti> `run echo 'package X; our $x = 3;' > X.pm; perl -e 'package X; our $y = 2; sub test() { print "WOAH" }; %X:: = (); do "X.pm"; print $x, $y;'
12:30:06 <HackEgo> 2
12:30:17 <kallisti> uh
12:35:16 <kallisti> `run echo 'package X; our $x = 3;' > X.pm; perl -e 'package X; use strict; our $y = 2; sub test() { print "WOAH" }; %X:: = (); do "X.pm"; print $x, $y;'
12:35:19 <HackEgo> Global symbol "$x" requires explicit package name at -e line 1. \ Execution of -e aborted due to compilation errors.
12:35:37 <kallisti> `run echo 'package X; our $x = 3;' > X.pm; perl -e 'package X; use strict; our ($y,$x) = (2,5); sub test() { print "WOAH" }; %X:: = (); do "X.pm"; print $x, $y;'
12:35:40 <HackEgo> 52
12:36:35 <kallisti> hmmm I spoke too soon.
12:37:16 <kallisti> `run echo 'package X; our $x = 3;' > X.pm; perl -e 'package X; use strict; our ($y,$x) = (2,5); sub test() { print "WOAH" }; do "X.pm"; print $x, $y;'
12:37:20 <HackEgo> 32
12:37:33 <kallisti> okay so. for future reference: don't try to delete symbol tables
12:37:38 <kallisti> weird things will happen.
12:40:03 <fizzie> `run echo 'package X; our $x = 3;' > X.pm; perl -e 'package X; use strict; our ($y,$x) = (2,5); sub test() { print "WOAH" }; %X:: = (); do "X.pm"; print "directly, x=$x, y=$y\n"; eval "print \"evally, x=\$x, y=\$y\\n\"";'
12:40:06 <HackEgo> directly, x=5, y=2 \ evally, x=3, y=
12:40:16 <kallisti> fizzie: ah because of compilation
12:41:04 <kallisti> http://stackoverflow.com/questions/4623556/symbol-table-deleting-entries-question
12:41:06 <kallisti> according to this
12:41:51 <fizzie> It's a reasonable theory.
12:42:49 <fizzie> (Though you should of course give equal time to the "intelligent variable" theory, too.)
12:43:02 <kallisti> I haven't studied that one.
12:43:06 <kallisti> are variables sentient in perl?
12:43:15 <fizzie> It's something like that, yes.
12:43:54 <kallisti> so unless all the code I execute afterwards is part of an eval, my symbol table deletions take no effect.
12:45:29 <kallisti> http://cpansearch.perl.org/src/SPROUT/Sub-Delete-1.00002/lib/Sub/Delete.pm
12:45:39 <kallisti> I wonder what that magical looking subroutine at the top does.
12:46:17 <monqy> magic
12:47:35 <kallisti> my $glob = *$globname; # autovivify the glob in case future perl
12:47:39 <kallisti> you never know when future perl might happen.
12:49:02 <kallisti> keys %imported_slots == 1 and exists $imported_slots{SCALAR} and !$imported_slots{SCALAR} and Internals'SvREFCNT $$glob =>== 1 and !defined *$glob{IO} and !defined *$glob{FORMAT} and return; # empty glob
12:49:06 <kallisti> oh god what is this.
12:49:29 <kallisti> =>== 1 ???????
12:49:49 <kallisti> REALLY greater than or equal to.
12:51:59 <fizzie> `run perl -e '1 =>== 2'
12:52:02 <HackEgo> syntax error at -e line 1, near "=>==" \ Execution of -e aborted due to compilation errors.
12:52:09 <fizzie> It must be some kind of real magic.
12:52:19 <kallisti> oh wait...
12:52:22 <kallisti> it could be either...
12:52:24 <kallisti> = >= =
12:52:27 <kallisti> => ==
12:52:29 <kallisti> or ...
12:52:30 <kallisti> what
12:52:35 <kallisti> what does that even mean
12:53:11 <elliott> I like the use of ' there too
12:53:20 <kallisti> !perl my $x = 3; print Intervals'SvREFCNT \$x
12:53:21 <EgoBot> No output.
12:53:36 <kallisti> oh this code doesn't use strict;
12:53:40 <fizzie> Internals, not Intervals.
12:53:47 <kallisti> !perl my $x = 3; print Internals'SvREFCNT \$x
12:53:48 <EgoBot> Type of arg 1 to Internals::SvREFCNT must be one of [$%@] (not single ref constructor) at /tmp/input.7682 line 1, at EOF \ Execution of /tmp/input.7682 aborted due to compilation errors.
12:53:56 <kallisti> !perl my $x = 3; print Internals'SvREFCNT $x
12:53:57 <EgoBot> 1
12:54:06 <kallisti> not very surprising.
12:55:07 <kallisti> !perl my $x = 3; print Internals'SvREFCNT $x =>== 1
12:55:07 <EgoBot> 1
12:55:18 <kallisti> !perl my $x = 3; print Internals'SvREFCNT $x => == 1
12:55:19 <EgoBot> 1
12:55:22 <kallisti> !perl my $x = 3; print Internals'SvREFCNT $x = >== 1
12:55:23 <EgoBot> syntax error at /tmp/input.7967 line 1, near "= >=" \ Execution of /tmp/input.7967 aborted due to compilation errors.
12:55:33 <kallisti> oh hmmm
12:55:37 <kallisti> I wonder what the comma does.
12:55:42 <kallisti> !perl my $x = 3; print Internals'SvREFCNT $x , == 1
12:55:43 <EgoBot> 1
12:56:02 <kallisti> nothing?
12:56:08 <kallisti> maybe it's to disambiguate something?
12:56:21 <fizzie> !perl my $x = 3; print Internals'SvREFCNT $x, 1
12:56:21 <EgoBot> 1Attempt to free unreferenced scalar: SV 0x7f56d20d4a30, Perl interpreter: 0x7f56d20b3010.
12:56:24 <fizzie> The bestest.
12:56:28 <kallisti> !perl my $x = 3; print Internals'SvREFCNT $x == 1
12:56:29 <EgoBot> Type of arg 1 to Internals::SvREFCNT must be one of [$%@] (not numeric eq (==)) at /tmp/input.8217 line 1, at EOF \ Execution of /tmp/input.8217 aborted due to compilation errors.
12:56:32 <kallisti> ah
12:56:48 <kallisti> it's to prevent that
12:57:05 <kallisti> instead of, you know, using parentheses.
12:57:12 <kallisti> =>== lololololol
12:58:46 <kallisti> a regular comma would have been much clearer
12:58:53 <fizzie> !perl print abs -4 =>== 42
12:58:54 <EgoBot> 4
12:59:10 <kallisti> maybe it's some weird idiom I've never seen?
12:59:51 <kallisti> ....wat
12:59:56 <kallisti> oh
12:59:57 <kallisti> yes
13:00:28 <kallisti> =>== is to == as and is to &&
13:01:07 <elliott> :t randoms
13:01:08 <lambdabot> forall g a. (Random a, RandomGen g) => g -> [a]
13:01:22 <kallisti> but yeally I'd use ,== or , == or (most likely) parentheses
13:01:57 <fizzie> The half-orphan comma looks pretty silly too.
13:03:29 * kallisti is tempted to use this module with use strict turned on and see how many warnings/errors he gets.
13:05:04 <kallisti> anyway this will work in many of the cases I'm concerned with, where I have plugins redefining methods. I think..
13:06:16 -!- oerjan has joined.
13:07:39 <kallisti> `run echo 'package X; our $x = 3;' > X.pm; perl -e 'package X; use strict; our ($y,$x) = (2,5); sub test() { print "WOAH" }; %X:: = (); do "X.pm"; X::test'
13:07:43 <HackEgo> WOAH
13:08:08 <kallisti> `run echo 'package X; our $x = 3;' > X.pm; perl -e 'package X; use strict; our ($y,$x) = (2,5); sub test() { print "WOAH" }; %X:: = (); do "X.pm"; package Blah; X::test'
13:08:11 <HackEgo> WOAH
13:08:15 <kallisti> hm, well, nevermind
13:08:23 <kallisti> I'll just... not try to delete symbol tables.
13:09:14 <kallisti> `run echo 'package X; our $x = 3; sub test { print "SHADOOSH" }' > X.pm; perl -e 'package X; use strict; our ($y,$x) = (2,5); sub test() { print "WOAH" }; %X:: = (); do "X.pm"; package Blah; X::test'
13:09:17 <HackEgo> WOAH
13:09:30 <kallisti> `run echo 'package X; our $x = 3; sub test { print "SHADOOSH" }' > X.pm; perl -e 'package X; use strict; our ($y,$x) = (2,5); sub test { print "WOAH" }; %X:: = (); do "X.pm"; package Blah; X::test'
13:09:32 <HackEgo> WOAH
13:09:35 <kallisti> :(
13:10:30 <kallisti> I'm not sure why it suddenly doesn't work because I add that symbol table line
13:10:40 <kallisti> `run echo 'package X; our $x = 3; sub test { print "SHADOOSH" }' > X.pm; perl -e 'package X; use strict; our ($y,$x) = (2,5); sub test { print "WOAH" }; do "X.pm"; package Blah; X::test'
13:10:44 <HackEgo> SHADOOSH
13:11:24 <kallisti> fizzie: just how sentient are variables in Perl exactly.
13:12:19 <kallisti> `run perl -e 'package X; our $x = 3; %X:: = (); our $x = 4; print $x'
13:12:22 <HackEgo> 4
13:13:17 -!- oerjan has set topic: Official revolting channel of the inverse femtobarn stupid topic change plurality, the original Trilogy: A new PHP | http://codu.org/logs/_esoteric/.
13:14:17 <kallisti> `run echo 'package X; %X:: = (); our $x = 3;' > X.pm; perl -e 'package X; use strict; our ($y,$x) = (2,5); sub test() { print "WOAH" }; do "X.pm"; package Blah; X::test'
13:14:20 <HackEgo> WOAH
13:15:02 <oerjan> HackEgo: you sound so impressed
13:15:14 <kallisti> I don't understand at all...
13:16:07 <kallisti> `run echo 'package X; %X:: = (); our $x = 3;' > X.pm; perl -e 'package X; use strict; our ($y,$x) = (2,5); sub test() { print "WOAH" }; do "X.pm"; sub foo { test}; foo '
13:16:11 <HackEgo> WOAH
13:16:25 * Sgeo should write a hello Template Haskell program or something
13:16:35 <kallisti> Hello, Template World!
13:17:00 <Sgeo> Don't like the notion of needing a separate module though
13:17:03 <kallisti> fizzie: can you make sense of this.
13:19:32 <fizzie> I'm not entirely sure I want to.
13:19:53 <oerjan> kallisti: perhaps you should add -w ?
13:19:59 <elliott> Sgeo: I think it complicates type-checking if you don't enforce that.
13:20:08 * oerjan doesn't really know what kallisti is trying
13:20:13 <elliott> TH is a pain because it messes up the compiler control flow.
13:20:19 <elliott> Thus the restrictions.
13:20:43 <fizzie> Anyway, I suspect compilation again. I mean, do "X.pm" equals eval `cat X.pm`, on compilation-time the 'test' in sub foo presumably gets turned into a reference of the sub test.
13:20:43 <kallisti> oerjan: I'm trying to write code that can reload itself.
13:21:16 <kallisti> the reloading part is easy, however... all the old symbols that weren't overwritten get left behind unless you do something to delete them beforehand.
13:21:26 <kallisti> and now I'm encountering weirdness with Perl and its symbol table.
13:21:50 <kallisti> specifically %X:: = (); doesn't appear to do what you would expect.
13:22:10 <fizzie> Then you must simply expect something else.
13:22:17 <fizzie> "The subroutine is completely obliterated from the symbol table (though there may be references to it elsewhere, including in compiled code)", like Sub::Delete says.
13:22:47 -!- Zuu has joined.
13:22:47 -!- Zuu has quit (Changing host).
13:22:47 -!- Zuu has joined.
13:23:00 <kallisti> it would seem if that were the case then completely redefining the symbol table via a do "X.pm" shouldn't do anything to the outer code.
13:23:24 <kallisti> in fact, if I write %X:: = (); before the do, then that's exactly what happens.
13:23:32 <kallisti> but if I remove that line, then the do redefines symbols as expected.
13:24:51 <kallisti> `run echo 'package X; %X:: = (); our $x = 3;' > X.pm; perl -e 'package X; use strict; our ($y,$x) = (2,5); sub test() { print "WOAH" }; local %X:: = (); do "X.pm"; test '
13:24:54 <HackEgo> WOAH
13:26:07 <kallisti> `run echo 'package X; %X:: = (); our $x = 3; sub test { print "hi" }' > X.pm; perl -e 'package X; use strict; our ($y,$x) = (2,5); sub test() { print "WOAH" }; local %X:: = (); do "X.pm"; test '
13:26:10 <HackEgo> WOAH
13:26:26 <kallisti> `run echo 'package X; our $x = 3; sub test { print "hi" }' > X.pm; perl -e 'package X; use strict; our ($y,$x) = (2,5); sub test() { print "WOAH" }; local %X:: = (); do "X.pm"; test '
13:26:29 <HackEgo> WOAH
13:26:33 <kallisti> okay, I give up. :P
13:27:01 <fizzie> You could just forget about the symbol tables and use coderefs you manage manually.
13:28:02 <kallisti> I was thinking that I could probably just manually delete subroutines when I hotswap if leaving them present would break the system.
13:28:57 <kallisti> but that might have the same problem.
13:29:10 * oerjan notes a subtle edit to the intro blurb in today's darths & droids
13:29:30 <oerjan> well, "subtle"
13:30:12 <Sgeo> Whee!
13:30:13 <Sgeo> makeDef text = [d|helloDefinition = $(litE . stringL $ text)|]
13:30:38 * Sgeo thinks it's somewhat confusing as to when something puts stuff in the Q monad and when it doesn't
13:31:02 <monqy> what parts are confusing
13:31:30 <kallisti> `run echo 'package X; our $x = 3; sub test { print "hi" }' > X.pm; perl -e 'package X; use strict; our ($y,$x) = (2,5); sub test() { print "WOAH" }; undef &test; do "X.pm"; test '
13:31:34 <HackEgo> hi
13:31:51 <kallisti> if I undefine subroutines that way it works fine, so... yes that's an option.
13:31:52 <monqy> I forget what does what and what does what except that the constructors don't and the lowercasey functioney things do
13:32:15 <fizzie> `run echo 'package X; sub test { print "new!" }' > X.pm; perl -e 'package X; use strict; sub test { print "old!" }; do "X.pm"; test; package Blah; X::test'
13:32:18 <HackEgo> new!new!
13:32:24 <fizzie> `run echo 'package X; sub test { print "new!" }' > X.pm; perl -e 'package X; use strict; sub test { print "old!" }; %X:: = (); do "X.pm"; test; package Blah; X::test'
13:32:28 <HackEgo> old!old!
13:32:32 <Sgeo> monqy, yeah, I'm starting to think that's the rule of thumb
13:32:33 <fizzie> kallisti: I'm thinking the %X:: = () symbol table deletion there wipes out the symbol table entry, so the "sub test" in X.pm gets bound to a new entry and therefore doesn't get called; while when you don't wipe it out, the "sub test" in X.pm just overwrites the CODE slot of that glob, and therefore does get called.
13:32:49 <Sgeo> Also didn't realize that [d|..] did a list of the things, and not a single one
13:33:00 <Sgeo> I initially tried to sequence the thing
13:33:04 <kallisti> `run echo 'package X; our $x = 3; sub test { print "hi" }' > X.pm; perl -e 'package X; use strict; our ($y,$x) = (2,5); sub test() { print "WOAH" }; undef &test; do "X.pm"; test '
13:33:07 <HackEgo> hi
13:33:09 <elliott> Sgeo: You're always meant to use the functions.
13:33:15 <elliott> As opposed to the constructors directly.
13:33:24 <elliott> TH sucks, by the way.
13:33:26 <Sgeo> Except when pattern matching?
13:33:28 <elliott> No shit.
13:33:31 <kallisti> fizzie: so I could loop through the symbol table and undef all the variables maybe?
13:33:45 <Sgeo> How does TH suck?
13:33:58 <monqy> Sgeo: it will quickly become apparent
13:34:11 <monqy> Sgeo: unless you're really bad at noticing bad things
13:34:13 <Sgeo> I have 3 choices here: Use TH, write a program to output Haskell code, or go insane.
13:34:15 <elliott> monqy: No it won't, he likes Active Worlds.
13:34:24 <monqy> elliott: I was thinking more station v3 but that works too
13:34:28 <elliott> Sgeo: Pick (d) Don't do whatever bad thing you're trying to do.
13:34:39 <kallisti> Sgeo: code generation is cool. write a perl script.
13:34:43 <monqy> there aren't any th alternatives are there :(
13:34:48 <monqy> cpp doesnt count
13:34:51 <kallisti> Sgeo: I write all of my Haskell in perl.
13:34:53 <elliott> Sgeo: Anyway: http://www.reddit.com/r/haskell/comments/nny43/readargs_for_quick_argument_parsing/c3apz9x?context=1
13:35:02 <elliott> Sgeo: Most people avoid TH for basically those reasons./
13:35:04 <elliott> *no /
13:35:18 <elliott> Deriving lenses is the main TH usecase these days :P
13:36:00 <elliott> Sgeo: (The "BTW, I despise anything using TH. Including my own code." quote is from augustss, if Big Names convince you of things.)
13:37:01 <monqy> Sgeo: what bad thing are you trying to do , anyway
13:37:28 <fizzie> kallisti: I don't really know about Perl internals, I don't know what the compilation stores in the code. If it's a typeglob-like reference, I suppose you could just zero the CODE slots of all the entries; that I think should stop old compiled code calling them, if that's what you want. (Well, except if some place actually stored a coderef to the old sub, I'm not sure if that's even possible to break.)
13:37:42 <elliott> monqy: don't don't say that he'll tell us
13:37:49 <Sgeo> monqy, automate the creation of functions and data structures based on specifications that I.. err, specify, largely copy-pasted from the AW wiki
13:37:59 <kallisti> fizzie: no that can't break.
13:39:25 <kallisti> but that's not really an issue
13:39:36 <kallisti> all the old coderefs get redefined anyway.
13:39:38 <monqy> Sgeo: automate?
13:39:53 <Sgeo> monqy, as opposed to writing out countless definitions by hand.
13:39:58 <kallisti> (the coderefs in my program are in the bot command table, which will get redefined during the hotswap)
13:41:37 <kallisti> basically I'll just add a line so that, if the caller is the package itself, it will autorun a special hotswap routine that basically reinitializes everything.
13:49:41 <kallisti> I'll zero basically everything. I don't want old package-scope variables to be visible either.
13:50:20 <Sgeo> Would it be better for me to write a program to write the Haskell code instead?
13:50:35 <kallisti> Sgeo: it would be pretty easy I'd thin. if it's sufficiently boring.
13:51:08 <monqy> why are you doing what you are doing in the way you are doing it
13:51:16 <monqy> and why are you doing what you are doing
13:51:19 <elliott> Sgeo: If you can't avoid whatever you're doing, then yes.
13:51:29 <elliott> Sgeo: If your needs are simple enough, use {-# LANGUAGE CPP #-} instead.
13:52:15 <kallisti> `run perl -e 'package X; our ($x, $y, $z) = 1..3; print %X::'
13:52:18 <HackEgo> y*X::yx*X::xz*X::z
13:54:14 <kallisti> `run perl -e 'package X; our ($x, $y, $z) = 1..3; $X::{x}{SCALAR} = undef; print $x'
13:54:17 <HackEgo> 1
13:54:17 <Vorpal> kallisti, this sounds like an awfully complex way to do hotswapping of code above. And what if the old code is still executing in another thread?
13:54:21 <monqy> it sounds like he's doing some hard core code generation
13:54:38 <kallisti> `run perl -e 'package X; use strict; our ($x, $y, $z) = 1..3; $X::{x}{SCALAR} = undef; print $x'
13:54:42 <HackEgo> 1
13:54:49 <kallisti> Vorpal: can you think of any better alternatives?
13:54:56 <Vorpal> kallisti, using erlang? ;P
13:55:00 <kallisti> nope.
13:55:05 <kallisti> unless you have a good perl-to-erlang translator.
13:55:49 <kallisti> I remember a MUD codebase I used to maintain used... execl? or something?
13:56:15 <kallisti> it somehow magically transferred sockets. I didn't really understand it.
13:56:40 <Vorpal> kallisti, erlang basically does it by allowing you to have multiple versions of a module at the same time in memory and then when you are ready you tell threads to jump over to the new one (how: module:foo refers to the last version, but inside module a plain foo would refer to the current version, so you just call module:foo from inside the module itself if that is where the main loop is)
13:56:53 <Vorpal> (gen_server and such abstracts that away)
13:57:15 <Vorpal> kallisti, eh when you exec existing file descriptors aren't closed.
13:57:35 <Vorpal> unless you specifically set some flag on the fd using fcntl iirc
13:57:52 <Vorpal> kallisti, so that is why they hang around
13:57:54 <kallisti> are sockets... file descriptors?
13:58:04 <Vorpal> kallisti, obviously, what did you think they were?
13:58:18 <kallisti> I'm thinking of bash file descriptors I think. is that the same thing?
13:58:48 <Vorpal> like fds as in open() or such
13:58:56 <Vorpal> not sure what you mean with bash fds
13:59:02 <kallisti> the numbered ones.
13:59:17 <Vorpal> that is what everything uses on *nix?
13:59:23 <Vorpal> so why bash specifically
13:59:24 <kallisti> I see.
13:59:34 <Vorpal> FILE* is just a wrapper around fds
13:59:43 <kallisti> because I don't fully understand file descriptors.
13:59:48 <kallisti> how are the numbers assigned?
13:59:58 <Vorpal> by the programmer or the OS?
14:00:04 <kallisti> right
14:00:06 <kallisti> I meant
14:00:13 <kallisti> what algorithm is followed by the OS.
14:00:14 <kallisti> if any.
14:00:28 <Vorpal> kallisti, probably "next unused" I would guess
14:00:35 <Vorpal> you can of course move a fd and such
14:00:36 <elliott> fds get reused immediately
14:00:39 <Vorpal> did that in cfunge
14:00:49 <elliott> so I guess they use a free-list or w/e
14:00:55 <kallisti> in other words could I do something 3>&1 and have some file in my program assigned to STDOUT?
14:01:01 <Vorpal> elliott, does POSIX say that or is it just how it works on Linux?
14:01:03 <elliott> <Vorpal> unless you specifically set some flag on the fd using fcntl iirc
14:01:08 <elliott> At open() time too; O_CLOEXEC.
14:01:13 <Vorpal> oh right
14:01:14 <elliott> Vorpal: POSIX says nothing about it afaik.
14:01:20 <Vorpal> right
14:02:01 <Vorpal> kallisti, not entirely sure what bash does there in terms of which syscalls
14:02:16 <Vorpal> kallisti, I would guess it calls dup(3)?
14:02:24 <Vorpal> or rather dup2(3)
14:02:26 * kallisti had previously thought it was the case that file descriptor referred to any open files, but I think through some conversation in this channel I was convinced that it was a bash-related concept.
14:03:13 <fizzie> POSIX-2008: dup(3) equivalent to fcntl(fildes, F_DUPFD, 0); fcntl F_DUPFD "Return a new file descriptor which shall be the lowest numbered available (that is, not already open) file descriptor greater than or equal to the third argument, arg, taken as an integer of type int."
14:03:14 <elliott> kallisti: If it was a bash-only concept, I'm not sure what you'd call the return value of open(2).
14:03:16 <Vorpal> kallisti, if you inspect a struct FILE it will, amongst other things, contain a field for the fd
14:03:22 <fizzie> So when dup'ing it's always the "smallest free".
14:03:24 <Vorpal> there will be various flags and buffer things and so on too
14:03:25 <fizzie> At least on POSIX.
14:03:37 <kallisti> elliott: this may come as a shock but I don't know much about syscalls.
14:03:43 <kallisti> or C.
14:03:45 <elliott> Does POSIX actually specify that stdio must be implemented as a wrapper around fd stuff?
14:03:46 <fizzie> "The open() function shall return a file descriptor for the named file that is the lowest file descriptor not currently open for that process."
14:03:48 <Vorpal> fizzie, I used dup2() in cfunge iirc to move some fd about for PERL
14:03:49 <fizzie> Same for 'open'.
14:03:53 <elliott> Obviously a conforming C can implement fopen() without file descriptors.
14:04:04 <Vorpal> s/about/around/
14:04:12 <kallisti> so uh... is 3>&1 a bad idea?
14:04:30 <elliott> kallisti: Not if you want to redirect fd 3 to stdout.
14:04:31 <fizzie> So the "lowest number that's not in use" is in fact in POSIX.
14:04:34 <Vorpal> elliott, indeed
14:04:42 <kallisti> elliott: I'm guessing there's a way to specify that fd 3 is, then.
14:04:42 <Vorpal> elliott, I just meant how it is done on *nix
14:04:52 <kallisti> elliott: otherwise you're at the mercy of the OS.
14:04:54 <elliott> kallisti: What?
14:05:01 <elliott> Is what?
14:05:03 <elliott> Oh.
14:05:04 <fizzie> elliott: POSIX includes fileno(), so there sort-of has to be some correspondence between FILE*s and file descriptors.
14:05:15 <elliott> kallisti: The program can just
14:05:18 <elliott> write(3, ..., ...);
14:05:25 <Vorpal> fizzie, indeed, I assumed he meant for non-*nix
14:05:27 <elliott> kallisti: The shell opens fd 3.
14:05:29 <elliott> *creates
14:05:31 <elliott> By duping 1 onto it.
14:05:55 <fizzie> Vorpal: Yes; this was an answer to the "Does POSIX actually specify that stdio must be implemented as a wrapper around fd stuff" thing, not the "conforming C" thing.
14:05:56 <elliott> fizzie: Yes, but is the fd specified to refer to the same file? :p
14:06:08 <fizzie> "The fileno() function shall return the integer file descriptor associated with the stream pointed to by stream."
14:06:11 <kallisti> elliott: it always does that? or is that a result of the 3>&1 bit?
14:06:20 <elliott> kallisti: That's because you told it you want an fd 3 going somewhere.
14:06:24 <elliott> The standard fds are just 0, 1, 2.
14:06:25 <Vorpal> <kallisti> or C. <-- oh, I assumed you were familiar with C when I tried to describe the concept above.
14:06:31 <elliott> kallisti: You can't allocate fd 3 without pointing it somewhere.
14:06:37 <Vorpal> fizzie, ah
14:06:38 <elliott> i.e. another fd or a file or a socket or whatever.
14:06:53 <kallisti> elliott: so a regular open call can't assign fd 3 to something?
14:07:22 <fizzie> Not if it's already open.
14:07:35 <elliott> kallisti: open(2) chooses which FD to give you.
14:07:46 <elliott> kallisti: If you want it somewhere else, you need to dup2(2) it.
14:07:47 <Vorpal> kallisti, I don't think you can specify which fd you want open to use, but you could open and then move it with dup2 and then close the original one opened
14:07:57 <elliott> *dup2(3), apparently.
14:07:59 <Vorpal> elliott, I believe that is dup2(3)
14:08:01 <Vorpal> snap
14:08:02 <elliott> Wait, no.
14:08:04 <elliott> dup2(2).
14:08:13 <elliott> At least "man 2 dup2" produces my glibc man page.
14:08:19 <Vorpal> elliott, man 3p dup2 too
14:08:20 <elliott> man 3 dup2 produces the POSIX manpage.
14:08:23 <elliott> Right.
14:08:23 <elliott> In 3P.
14:08:44 <Vorpal> elliott, I often wondered what the point of the 2/3 separation was
14:09:11 <kallisti> right I'm asking... if you don't specifically assign 3, and the OS assigned a random file to fd 3, then.... 3>&1 would then do possibly weird unpredictable things, right?
14:09:14 <olsner> 2 is system calls, 3 is libc functions?
14:09:32 <fizzie> kallisti: If you do 3>&1, 3 is open by the time your program starts.
14:09:40 <fizzie> kallisti: Therefore it won't be used by any files you open in the program.
14:09:46 <Vorpal> olsner, yes but there are some system calls that are also specified by either POSIX or C as libc functions. Shouldn't there be a man page in each then
14:09:49 <kallisti> ah right it's dup'd from fd 1
14:09:59 <elliott> olsner: Yes, although the system call man pages come from glibc, and document the glibc wrappers around them too.
14:10:01 <kallisti> or fd 0 possibly?
14:10:09 <Vorpal> elliott, indeed
14:10:23 <elliott> Vorpal: Presumably the point is taht you can look in section 2 to find all the system primitives.
14:10:25 <fizzie> If you say 3>&1, it's fd 1 which it dups into 3. That's what the "&1" part means.
14:10:25 <elliott> *that
14:10:30 <elliott> Back when people actually cared about sections.
14:10:35 <olsner> Vorpal: for dup3 I do have two manpages
14:10:38 <olsner> |dup2
14:10:42 <olsner> *dup2
14:10:44 <kallisti> Vorpal: I know the basics of C programming but that's the extent of it. I'm not too familiar with all the details.
14:10:48 <elliott> Nowadays sections are just to disambiguate program/libc/system-doc. :p
14:10:50 <Vorpal> olsner, well one is the 3p copied-from-POSIX one
14:10:52 <Vorpal> at least for me
14:11:23 <kallisti> fizzie: aaaah I see.
14:11:38 <fizzie> Vorpal: You can "specify" that open(2) uses fd n by doing "close(n); for (i = 0; i < n; i++) dup2(someotherfd, i); open(...);" (assuming here that someotherfd != n, and none of the calls fail).
14:11:56 <Vorpal> elliott, so we could basically drop everything except 1,3,3p,5 and 7?
14:12:00 <kallisti> for some reason I thought things like 2>&1 reassigned fd 1 to 2, not the other way around.
14:12:08 <Vorpal> elliott, it isn't like section 8 for example is very well defined
14:12:33 <Vorpal> hm I guess section 4 is useful too but I can't ever remember using that
14:12:36 <elliott> Vorpal: Were I designing man today, I would drop the numeric sections.
14:12:41 <Vorpal> (I'm looking at man man atm)
14:12:44 <elliott> "man coreutils/ls", "man libc/wtf".
14:12:52 <elliott> "man foo" would just do */foo and prompt if it's ambiguous.
14:12:52 <Vorpal> well yes
14:13:02 * kallisti knows nothing about sections
14:13:04 <Vorpal> that is indeed a lot more sensible
14:13:09 <Vorpal> kallisti, try man man
14:13:10 <kallisti> in fact sections seems like a terrible way to organize namespaces of things.
14:13:15 <elliott> Perl and Tcl documentation coming up when I use man is really annoying, so proper segregation is needed rather than silly numeric sections.
14:13:26 <fizzie> kallisti: Well, it does that if that's the way you want to think of it. I mean, it makes fd 2 point to the same thing fd 1 points to.
14:13:27 <kallisti> Vorpal: I've seen them, but haven't taken the time to commit numbers to sections in memory.
14:13:27 <elliott> kallisti: It originates because man pages were originally a printed manual.
14:13:32 <elliott> Then they invented On-Line help.
14:13:32 <Vorpal> elliott, you can edit /etc/man.conf to set search order
14:13:40 <Vorpal> elliott, or /etc/mandb.conf on some systems
14:13:42 <elliott> Vorpal: It doesn't bother me that much. :p
14:13:53 <Vorpal> or even manpath.config on ubuntu
14:13:53 <elliott> Vorpal: But I'd call 7 "linux".
14:13:57 <elliott> And 2 "syscall".
14:14:09 <elliott> Probably syscall/foo would just symlink to libc/foo.
14:14:13 <Vorpal> elliott, I'd call 2 "glibc-mostly"
14:14:24 <elliott> Are there 2 manpages not from glibc?
14:14:28 <elliott> I think I've seen some bare-bones ones.
14:14:53 <Vorpal> elliott, I seen a few from glibc saying that glibc doesn't provide a wrapper for it
14:15:01 <Vorpal> or maybe not from glibc hm
14:15:10 <fizzie> ioctl_list(2) is probably not from glibc.
14:15:12 <Vorpal> elliott, man futex for example
14:15:46 <Vorpal> btw my manpath.config contains SECTION1 n l 8 3 2 3posix 3pm 3perl 5 4 9 6 7
14:16:02 <Vorpal> I believe I moved some stuff around. Might have been on a different system
14:16:06 <elliott> Vorpal: Well
14:16:08 <elliott> COLOPHON
14:16:08 <elliott> This page is part of release 3.35 of the Linux man-pages project. A
14:16:08 <elliott> description of the project, and information about reporting bugs, can be
14:16:08 <elliott> found at http://man7.org/linux/man-pages/.
14:16:15 <Vorpal> elliott, so not glibc indeed
14:16:22 <elliott> Vorpal: That's the case for all glibc manpages, though.
14:16:30 <elliott> It's just that they describe glibc functions.
14:16:38 <elliott> So they're glibc man pages.
14:16:41 <Vorpal> hm
14:16:50 <Vorpal> indeed
14:16:55 <elliott> Vorpal: The funny thing is that a third party writes the documentation for glibc...
14:16:56 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
14:17:01 <elliott> Must be great fun keeping it in sync.
14:17:06 <Vorpal> heh
14:17:06 <elliott> At least libc's API doesn't change much.
14:17:20 <elliott> The Linux man-pages project
14:17:20 <elliott> The Linux man-pages project documents the Linux kernel and C library interfaces that are employed by user programs. It provides manual pages in the following sections:
14:17:20 <elliott> 2: System calls, documenting the system calls provided by the Linux kernel.
14:17:20 <elliott> 3: Library functions, documenting the functions provided by the standard C library (with particular focus on glibc, the GNU C library).
14:17:20 <elliott> 4: Devices, which documents details of various devices, most of which reside in /dev.
14:17:22 <elliott> 5: Files, which describes various file formats, and includes proc(5), which documents the /proc file system.
14:17:25 <elliott> 7: Overviews, conventions, and miscellaneous.
14:17:27 <elliott> (Note that many of the man pages on a Linux system, especially those in sections other than 2 and 3, come from other packages.)
14:17:43 <Vorpal> hm
14:18:14 <Vorpal> elliott, it must be annoying when a new C or POSIX version is released and gets supported in glibc
14:18:29 <fizzie> Ubuntu has "manpages-dev" which includes sections 2 and 3 from that project, but also "glibc-doc" which installs at least some missing pthreads manpages, presumably generated from some glibc documentation.
14:18:54 <elliott> Vorpal: That's like 3 functions at the rate those two pieces of crap move.
14:18:56 <Vorpal> POSIX is updated more frequently than C too and it is larger.
14:19:01 <elliott> Does glibc even bother to track POSIX these days?
14:19:13 <Vorpal> elliott, or the other way around you mean? ;P
14:19:17 <elliott> What did POSIX 2008 even add, anyway?
14:19:21 <olsner> I think it's unlikely that a new standard gets surprise-dropped and then surprise-implemented in one single chunk by libc
14:19:43 <Vorpal> elliott, mostly stuff from glibc iirc. Some stuff from other libcs too
14:19:46 <elliott> olsner: They should stop publishing drafts and annoucning things and whatnot.
14:19:48 <elliott> Would be much more fun.
14:19:57 <fizzie> "The GNU C library implements all of the functions specified in ISO/IEC 9945-1:1996, the POSIX System Application Program Interface, commonly referred to as POSIX.1." <- current glibc manual.
14:19:58 <Vorpal> elliott, I believe it was like 20-30 new functions though
14:20:02 <elliott> C99 -> twelve years pass -> "Surprise, motherfuckers! Here's C11!"
14:20:10 <Vorpal> :D
14:20:33 <Vorpal> elliott, and MSVC is still on C89
14:20:39 <fizzie> "Also while we were at it, we made a NetHack 4 too."
14:20:41 <elliott> MSVC is also still in C89.
14:20:44 <Vorpal> that is like over 20 years old
14:20:46 <elliott> Er.
14:20:48 <elliott> *89
14:20:52 <elliott> KINDA RUINED MY JOKE THERE, C.
14:21:03 <Vorpal> hah
14:21:07 <elliott> Vorpal: In fact, it's over 22.9 years old.
14:21:11 <olsner> MSVC doesn't do any of the added stuff in C90?
14:21:16 <Vorpal> elliott, right
14:21:20 <elliott> Well, if it was published in January.
14:21:23 <elliott> Which it probably wasn't.
14:21:24 <olsner> iirc, commas at the end of enums was added in C90
14:21:32 <Vorpal> olsner, err maybe
14:21:36 <elliott> olsner: But... but gcc says they're the same!
14:21:44 <elliott> GUYS DO YOU REMEMBER THAT TIME WE FOUND A PRINTED COPY OF C94
14:21:51 <Vorpal> olsner, I'm surprised they differ though
14:21:56 <Vorpal> elliott, we did?
14:22:03 <Vorpal> C94, wth did that contain
14:22:04 <elliott> http://en.wikipedia.org/wiki/C_(programming_language) doesn't even mention C94.
14:22:04 <monqy> C94?
14:22:06 <Vorpal> I know it existed
14:22:12 <Vorpal> but I don't know what was new
14:22:14 <elliott> Vorpal: I think it was never officially standardised, or something?
14:22:22 <Vorpal> ah
14:22:24 <elliott> But it was a printed copy or PDF for like 30 quid.
14:22:29 <Vorpal> heh
14:22:30 <elliott> I totally regret not buying it.
14:22:32 <elliott> Souvenir.
14:22:40 <fizzie> http://clc-wiki.net/wiki/C89 "Purchase Amendment 1 (upgrades the Standard to C94 aka C95) as an ISO publication from SAI Global or --"
14:22:57 <olsner> hmm, so C90 vs C89 has only the changes that ISO did while giving the ANSI standard an ISO number
14:23:09 <elliott> fizzie: I'm disappointed C99 didn't get sometimes referred to as C100.
14:23:33 <monqy> C00 the mysterious
14:23:43 <fizzie> elliott: ANSI could've released a C100 that was essentially ISO C99 except with a different name. For symmetry.
14:23:50 <Vorpal> elliott, if C keeps going they are going to have to time it to unused years in future centuries
14:24:02 <Vorpal> and that only works for 100 versions
14:24:08 <Vorpal> after that they are screwed
14:24:16 <elliott> Vorpal: This is why you use Befunge numbering(tm).
14:24:24 <Vorpal> well yes
14:24:26 <elliott> AKA 19100 numbering.
14:25:00 <monqy> will C have died off by then
14:25:12 <Vorpal> monqy, hopefully yes, probably not
14:25:26 <Vorpal> elliott, I still think that timing releases is a far funnier solution :P
14:25:27 <fizzie> Vorpal: It's already a bit confusing at the point when the chronological order goes C90 C99 C11 C34 C82 C97 C05 C22 C76 after the 2176 version is out.
14:25:47 <Vorpal> fizzie, well yes
14:26:35 <Vorpal> fizzie, I would think there will be a C25 or so rather than C34
14:26:50 <Vorpal> maybe
14:26:52 <olsner> heh, looks like C has/had a limit of 15 nested levels of compound statements
14:27:06 <Vorpal> olsner, heh?
14:27:10 <elliott> olsner: Noooooooooooooooooooooooooooooo
14:27:11 <olsner> probably it's just saying that compiler must support at least 15 levels, but anyway
14:27:24 <fizzie> All of the limits are just "at least this" guarantees.
14:27:25 <monqy> maybe future C will use fruits instead of numbers
14:27:32 <fizzie> Also they've written in a really weird way.
14:27:39 <Vorpal> fizzie, are they?
14:27:44 <olsner> monqy: yes, then you'll need to support at least banana nested levels
14:28:06 <elliott> http://stackoverflow.com/questions/8520673/installing-postgresql-on-qnx-neutrino
14:28:09 <elliott> Best. Question. Ever.
14:28:29 * elliott realises that some people actually use QNX.
14:28:41 * elliott prefers to pretend they're just fucking around.
14:28:41 <fizzie> Vorpal: "The implementation shall be able to translate and execute at least one program that contains at least one instance of every one of the following limits: [list of limits, like 127 nesting levels of blocks, 63 nesting levels of conditional inclusion, and so on]"
14:28:52 <fizzie> I've never quite "gotten" that "at least one program" rule.
14:28:59 <Vorpal> elliott, is it better or worse than people using vxworks?
14:29:14 <Vorpal> fizzie, heh
14:29:45 <Vorpal> fizzie, so that means that in that one program you can possibly only use up to 15 nesting levels in one place in the program?
14:29:47 <Vorpal> or what
14:30:04 -!- Taneb has quit (Quit: Goodbye).
14:30:43 <fizzie> Vorpal: If I read it right, it's enough if the compiler translates, say "int ************a; [instances of all other limits];" but not "int ************b; [instances of all other limits];".
14:30:57 <fizzie> I mean, it did translate at least one program that contained at least one instance of every one of the limits.
14:31:05 <Vorpal> fizzie, well there is that too
14:31:12 <fizzie> (12 pointer declarators is one of the limits.)
14:31:23 <Vorpal> fizzie, but it doesn't even have to support int ************a; int ************b; in the same program
14:31:27 <Vorpal> which is just silly
14:31:31 <elliott> <fizzie> Vorpal: "The implementation shall be able to translate and execute at least one program that contains at least one instance of every one of the following limits: [list of limits, like 127 nesting levels of blocks, 63 nesting levels of conditional inclusion, and so on]"
14:31:37 <elliott> At *least* one?
14:31:46 <elliott> Is there only one such conforming C program?
14:31:48 <fizzie> I don't know if it's any sillier than just not supporting int ************b at all.
14:31:56 <Vorpal> elliott, that is what we are discussing
14:32:05 <Vorpal> fizzie, is that from C99 or C11?
14:32:06 <fizzie> elliott: It's also implementation-dependant which one it is.
14:32:14 <fizzie> Vorpal: C99, but IIRC it's unchanged in C11.
14:32:15 <elliott> It seems like the standard already obligates the implementation to translate all conforming programs.
14:32:23 <elliott> So the limits are arguably null.
14:32:59 <kallisti> what was the thing in perl you can use to run commands with options, but without opening up a whle shell?
14:33:11 <Vorpal> elliott, ah but afaik the definition of a conforming program is one that can be handled by such a conforming implementation
14:33:20 <kallisti> was it the piped open?
14:33:21 <Vorpal> (given the limit description)
14:34:09 <fizzie> kallisti: IIRC, system and the piped open have the same behaviour; if you give them a list, it's executed directly without a shell; if you give them a string with spaces in it, a shell is involved.
14:34:16 <Vorpal> kallisti, is that like pipe(), fork(), dup2() and exec() in C? If so, then yes
14:34:32 <fizzie> (Just that 'system' of course doesn't capture any output, while a pipe-open does.)
14:34:37 <kallisti> fizzie: ah okay good.
14:34:38 <Vorpal> (well execl or whatever)
14:34:39 <elliott> Vorpal: I... somewhat doubt it.
14:34:49 <elliott> That means "conforming implementation" is circular.
14:35:31 <Vorpal> elliott, no I mean that conforming implementation is defined by those limits (and various other things, like the grammar), and a conforming program is simply one that can be run by such an implementation
14:35:32 <fizzie> "If there is only one scalar argument, the argument is checked for shell metacharacters, and if there are any, the entire argument is passed to the system's command shell for parsing (this is "/bin/sh -c" on Unix platforms, but varies on other platforms). If there are no shell metacharacters in the argument, it is split into words and passed directly to "execvp", which is more efficient."
14:35:54 <fizzie> Oh, so it was about metacharacters, not spaces, and it does space-splitting by itself. Well, anyway.
14:36:16 <fizzie> Providing a list will never execute a shell.
14:36:33 <kallisti> so wait the list form can still create a shell?
14:36:41 <fizzie> No.
14:36:43 <fizzie> "If there is more than one argument in LIST, or if LIST is an array with more than one value, starts the program given by the first element of the list with arguments given by the rest of the list."
14:36:44 <elliott> Vorpal: I... don't think that makes much sense.
14:36:44 <Vorpal> <fizzie> Providing a list will never execute a shell.
14:36:44 <Vorpal> <kallisti> so wait the list form can still create a shell?
14:36:45 <Vorpal> lol
14:36:55 <kallisti> oh
14:36:59 <kallisti> :)
14:37:10 <Vorpal> elliott, of course not
14:37:18 <Vorpal> elliott, but then, nor does gets()!
14:37:22 <elliott> Vorpal: That's gone now.
14:37:26 <elliott> They replaced it with a safe version.
14:37:31 <Vorpal> elliott, yes but only in C11
14:37:36 <elliott> I think it's hideously unfair; gets was awesome.
14:37:36 <Vorpal> which is absurdly long
14:37:47 <elliott> I mean, can we have one easy-to-use, ridiculous function in C?
14:37:49 <elliott> Just one?
14:37:56 <elliott> One function to remind you the language you're using is utterly terrible.
14:38:39 <fizzie> "A conforming program is one that is acceptable to a conforming implementation. A conforming -- implementation shall accept any strictly conforming program. A strictly conforming program shall use only those features of the language and library specified in this International Standard -- and shall not exceed any minimum implementation limit."
14:38:51 <kallisti> fizzie: oh but system doesn't give me the stdout
14:39:01 <kallisti> I have to use open for that.
14:39:02 <kallisti> I think.
14:39:28 <Vorpal> fizzie, wow
14:39:35 <fizzie> kallisti: Well, right, but the '|-' and '-|' opens have the same behaviour. If I recall correctly.
14:39:40 <elliott> fizzie: That's amazing.
14:39:47 <elliott> fizzie: What... what does that even end up meaning.
14:40:08 <elliott> fizzie: Hmm.
14:40:15 <elliott> fizzie: That means that you can write a C compiler that accepts any string of bytse.
14:40:16 <elliott> bytes
14:40:23 <Vorpal> elliott, it means it is a C standard
14:40:30 <elliott> fizzie: As long as it correctly compiles every strictly conforming program, every string of bytes becomes a conforming C program.
14:40:39 <elliott> Someone get on that?
14:41:05 <Vorpal> elliott, there is the minimum implementation limit thing too
14:41:22 <Vorpal> elliott, which is defined elsewhere by the spec (the "at least one" bit)
14:41:38 <fizzie> That's just limiting the strictly conforming programs set further.
14:41:44 <elliott> What fizzie said.
14:41:46 <Vorpal> well yes
14:42:02 <elliott> You could troll comp.lang.c with this.
14:42:02 <fizzie> I would think you can, as an extension, accept any string and do whatever you want with the ones that are not strictly conforming.
14:42:10 <Vorpal> elliott, is that still alive?
14:42:10 <elliott> "I have a conforming C program that isn't working: int main(;;)qw;4{};/;{"
14:42:26 <fizzie> Comp.lang.c people quite often remember to put that "strictly" in, from what I've seen.
14:42:32 <elliott> Vorpal: Do Usenet groups ever "die"?
14:43:07 <Vorpal> elliott, well I haven't seen any message on alt.lang.intercal for almost a year by now
14:43:13 <Vorpal> or at least half a year
14:43:20 <elliott> Vorpal: Dude...
14:43:24 <elliott> That's INTERCAL.
14:43:29 <elliott> Oh, I see.
14:43:34 <elliott> Vorpal: alt.lang.intercal always goes that slowly.
14:43:44 <Vorpal> elliott, fair enough
14:43:49 <elliott> Vorpal: It at least gets a post every April.
14:43:51 <monqy> what a sad group
14:43:56 <Vorpal> well okay
14:46:08 <kallisti> fizzie: is there a way to get stderr with the list form of piped open?
14:46:37 <fizzie> kallisti: IPC::Open3 might help.
14:49:20 <Vorpal> fizzie, what if you want to deal with more than 3 fds
14:49:42 <Vorpal> (what if you want to redirect any fd the program opens to go through your own program?)
14:49:45 <itidus21> oh crap, capital c's all over the screen
14:50:00 <fizzie> Vorpal: I think there's a module for more general piping, but most programs don't expect to have more than 0, 1 and 2 open at start.
14:50:11 <fizzie> Vorpal: For "opens during the execution", I don't see how you can redirect those at all.
14:50:28 <Vorpal> fizzie, it is obviously easy to do so. Just use ptrace
14:50:36 <fizzie> Obviously nonportable, too.
14:50:41 <Vorpal> fizzie, or LD_PRELOAD probably
14:50:48 <fizzie> Won't catch syscalls.
14:50:50 <Vorpal> I didn't say portable
14:51:00 <Vorpal> fizzie, well indeed, most programs don't use them directly
14:51:06 <Vorpal> unless they are statically linked
14:51:10 <Vorpal> but ptrace would work
14:51:18 <elliott> itidus21: FSVO all, screen.
14:51:35 <elliott> <Vorpal> fizzie, it is obviously easy to do so. Just use ptrace
14:51:47 <elliott> I don't think that works.
14:51:55 <elliott> You still can't force the program to dup2 without fucking about with its memory.
14:51:58 <itidus21> i get scared when theres a language i could almost get away with coding in being discussed here
14:52:02 <Vorpal> elliott, that is easy as in "conceptually easy" not "easy to implement"
14:52:19 <Vorpal> elliott, anyway gdb manages to insert calls into a process if you write call foo
14:52:22 <elliott> Vorpal: Well, you could also write a kernel module or whatever.
14:52:26 <Vorpal> elliott, indeed
14:52:28 <elliott> Yes, so does weboflies.
14:52:33 <fizzie> Someone on clc has also pointed out, that the particular "one program" containing "at least one instance of every one of" all the limits doesn't need to be "strictly conforming", and can in fact include any kind of syntax or constraint violations that the implementation allows as an extension, which makes the started translation limits slightly meaningless. You could limit block nesting to 1 for all strictly conforming programs, and when someone complai
14:52:33 <fizzie> ned, just be all "well so sad, your program wasn't the one program".
14:52:34 <elliott> Your suggestions are pretty stupid though.
14:52:39 <Vorpal> elliott, indeed
14:52:45 <elliott> fizzie: :D
14:52:57 <elliott> fizzie: Excellent use of bold.
14:53:24 <Vorpal> fizzie, :D
14:54:17 <elliott> fizzie: Actually...
14:54:24 <elliott> fizzie: "A conforming -- implementation shall accept any strictly conforming program. A strictly conforming program shall use only those features of the language and library specified in this International Standard -- and shall not exceed any minimum implementation limit."
14:54:48 <elliott> fizzie: So since implementations are required to accept any strictly conforming program, and a strictly conforming program can go up to the limits...
14:55:22 <fizzie> I suppose it's arguable whether "shall not exceed any minimum implementation limit" means any of the separately stated limits, or whether the "one program" clause is in fact the "limit" that could be exceeded.
14:55:27 <Vorpal> elliott, no it says they shouldn't exceed said limits. It doesn't say they aren't allowed to use less?
14:56:05 <elliott> Vorpal: What?
14:56:13 <Vorpal> oh hm, nvm
14:56:32 <fizzie> The intent is anyhow reasonably clear, I've just wondered more than once about the strange-sounding "at least one program" clause. I'm sure there's some sort of a logic they've had when first drafting it.
14:56:34 <Vorpal> C sure is confusingly worded
14:57:15 <elliott> fizzie: They might have just wanted to avoid a scary universal quantification. :p
14:57:45 -!- oerjan has quit (Quit: Later).
14:57:46 <elliott> fizzie: They might have worded it weirdly to allow the implementation to apply stricter limits to conforming-but-not-strictly programs for whatever reasons?
14:57:48 <elliott> *reason?
14:58:27 <elliott> Who *are* the C committee, anyway? Do they even have any writers of compilers that people actually use on there?
14:58:38 -!- atrapado has joined.
14:58:56 <kallisti> `words --canadian 9001
14:59:04 <kallisti> HackEgo: hi
14:59:06 <HackEgo> moniz ber bhoodcuting ceric ker rhization defore cunactyl cari underfee soutwaisec upgia trentation teneopeir nonper ramosometting comper nailty unblaco hydrati acci searabilic contment pyosing dric boarding lured reade bebloo rechny canic virasephosto subselte phenchar jacque simpresom comently posively noda wan tate cyan trian shagboard friskilli terimescoe posard spaapelblar camsie trallycephoto unfrable ophalpathone
14:59:09 <Vorpal> elliott, this was probably worded like that back in 1989 or so
14:59:34 <Vorpal> elliott, and no one bothered to change it
14:59:51 <Vorpal> so hm probably of compilers used back then?
15:00:26 <elliott> Vorpal: I was asking in general.
15:00:40 <Vorpal> good question
15:02:45 <fizzie> It's the JTC1/SC22/WG14 working group; I'm not sure if their member list is anywhere; the wiki and the "WG internal information" are all password-protected and only for members.
15:02:53 <fizzie> comp.std.c has some overlap, though.
15:03:06 <Vorpal> well that explains a lot
15:03:18 <elliott> fizzie: I don't like the idea of a public international standards committee nobody knows the membership of.
15:03:40 <fizzie> Oh, I'm sure it's somewhere, just can't find it right now.
15:03:45 -!- Zuu has quit (Ping timeout: 252 seconds).
15:04:03 <fizzie> There have been programmers on it at some point, at least.
15:04:05 * elliott has never looked at comp.std.c. Is it like comp.lang.c but /exclusively/ for pedantry?
15:05:04 <fizzie> It's for speaking about the standard itself; "yes, yes, but I think the what the standard should do instead is *this*" sort of comments from comp.lang.c are sometimes referred to there.
15:05:09 <kallisti> !perl $, = ' '; print "hi"; print "hello";
15:05:10 <EgoBot> hihello
15:05:14 <kallisti> !perl $, = ' '; print "hi",; print "hello";
15:05:14 <EgoBot> hihello
15:05:16 <kallisti> L(
15:05:17 <fizzie> I guess theoretically speaking you could speak there if you want to influence the standard.
15:05:26 <fizzie> It probably won't do anything, but that's what it's for.
15:05:46 <elliott> fizzie: http://groups.google.com/group/comp.std.c/browse_thread/thread/d0fd9bfc89647b4a
15:05:53 <elliott> fizzie: Standard lawyers! THESE ARE MY PEOPLE.
15:09:01 <olsner> "It was established in the comp.lang.c discussion (which was too long to reproduce here) that int and long are not the same type."
15:09:10 <kallisti> `fetch http://sprunge.us/SERK
15:09:13 <HackEgo> 2012-01-08 15:09:12 URL:http://sprunge.us/SERK [4539] -> "SERK" [1]
15:09:27 <olsner> reminds me of the ents determining after a few days that the hobbits are probably not orcs
15:09:29 <kallisti> `run mv SERK bin/words.pl; chmod +x bin/words.pl
15:09:32 <HackEgo> No output.
15:09:39 <kallisti> `words --help
15:09:43 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian \ default: --eng-1M \ \ options: \ -h, --help this help text
15:09:50 <kallisti> no bad
15:09:50 <kallisti> `ls
15:09:53 <HackEgo> Mineso \ X.pm \ Y.pm \ bin \ canary \ karma \ lib \ main \ min.sh \ paste \ quotes \ share \ typetest.hs \ wisdom
15:10:04 <kallisti> `run rm X.pm Y.pm
15:10:06 <HackEgo> No output.
15:10:19 <kallisti> oh
15:10:25 <kallisti> `run mv bin/words.pl bin/words
15:10:28 <HackEgo> No output.
15:10:33 <kallisti> `words 50
15:10:36 <HackEgo> Optional module Math::Random::MT::Perl not found. \ can't open Data/Eng1M: No such file or directory at /hackenv/bin/words line 104
15:10:44 <elliott> `run rm Mineso typetest.sh main.sh
15:10:47 <HackEgo> rm: cannot remove `Mineso': Is a directory \ rm: cannot remove `typetest.sh': No such file or directory \ rm: cannot remove `main.sh': No such file or directory
15:11:02 <elliott> `run rm -r Mineso min.sh typetest.sh
15:11:05 <elliott> `run rm -r Mineso min.sh typetest.hs
15:11:05 <HackEgo> rm: cannot remove `typetest.sh': No such file or directory
15:11:06 <elliott> FUCK!!!
15:11:08 <HackEgo> No output.
15:11:12 <elliott> `ls
15:11:16 <HackEgo> bin \ canary \ karma \ lib \ main \ paste \ quotes \ share \ wisdom
15:12:04 <kallisti> `run perl -pi -e 's#Data#share/WordData#' bin/words
15:12:07 <HackEgo> No output.
15:12:10 <kallisti> `words
15:12:14 <HackEgo> Optional module Math::Random::MT::Perl not found. \ can't open share/WordData/Eng1M: No such file or directory at /hackenv/bin/words line 104
15:12:37 <kallisti> `ls share
15:12:40 <HackEgo> WordData \ awesome \ units.dat
15:12:56 <kallisti> `ls share/WordData
15:12:59 <HackEgo> Brazilian \ Bulgarian \ CanadianEnglishInsane \ Catalan \ Eng1M \ EngAll \ EngFiction \ EngGb \ EngUs \ Finnish \ French \ Gaelic \ German \ GermanMedical \ Hebrew \ Irish \ Italian \ Manx \ Norwegian \ Ogerman \ Polish \ Portuguese \ Russian \ Spanish \ Swedish
15:13:05 <kallisti> >_>
15:13:08 <monqy> hackgeo shoiuld totally coloured output
15:13:28 <Phantom_Hoover> yes
15:13:41 <Phantom_Hoover> Is hackgeo Sgeo's cousin?
15:13:43 <Vorpal> `ls --colour=yes
15:13:44 <kallisti> I am great confused
15:13:46 <HackEgo> ls: unrecognized option '--colour=yes' \ Try `ls --help' for more information.
15:13:51 <Vorpal> eh
15:13:57 <kallisti> `words
15:14:00 <HackEgo> Optional module Math::Random::MT::Perl not found. \ can't open share/WordData/Eng1M: No such file or directory at /hackenv/bin/words line 104
15:14:04 <Vorpal> `ls --color=yes
15:14:07 <HackEgo> ​.[0m.[01;34mbin.[0m \ canary \ karma \ .[01;34mlib.[0m \ .[01;32mmain.[0m \ .[01;34mpaste.[0m \ quotes \ .[01;34mshare.[0m \ .[01;34mwisdom.[0m
15:14:09 <Vorpal> aww
15:14:12 <kallisti> Gregor: I'm noticing a distinct lack of Math::Random::MT::Perl
15:14:28 <elliott> Gregor: Don't install it.
15:14:49 <kallisti> oh..
15:15:01 <elliott> <Phantom_Hoover> Is hackgeo Sgeo's cousin?
15:15:01 <elliott> wat
15:15:09 <Phantom_Hoover> <monqy> hackgeo shoiuld totally coloured output
15:15:09 <Sgeo> elliott, typo
15:15:43 <kallisti> `run perl -pi -e 's#^.*chdir.*$##' bin/words
15:15:46 <HackEgo> No output.
15:15:53 <monqy> I whshhould typo more ofrten maybe this will happen agaion
15:16:01 <elliott> [[
15:16:02 <elliott> [...]
15:16:02 <elliott> > As far as I know, variables of type "size_t" are guaranteed to be of
15:16:02 <elliott> > sufficient precision to represent the size of any object.
15:16:02 <elliott> [...]
15:16:02 <elliott> The standard doesn't state that explicitly, and I argue that it
15:16:02 <lambdabot> <no location info>: parse error on input `,'
15:16:03 <lambdabot> can't find file: L.hs
15:16:04 <elliott> doesn't imply it.
15:16:06 <elliott> It says that the sizeof operator yields a result of type size_t.
15:16:08 <elliott> It also says that the "*" operator applied to two operands of type
15:16:10 <elliott> int yields a result of type int; that doesn't imply that the result
15:16:12 <elliott> will always fit in an int. I suggest that the sizeof operator can
15:16:14 <elliott> overflow, and if it does, the behavior is undefined.
15:16:16 <elliott> ]]
15:16:18 <elliott> fizzie: This is beautiful.
15:16:20 <elliott> monqy: hi
15:16:25 <monqy> elliott: hi
15:16:29 <kallisti> `run perl -pi -e 's#^.*\bwarn\b$##' bin/words
15:16:32 <HackEgo> No output.
15:16:33 <kallisti> `words
15:16:37 <HackEgo> Optional module Math::Random::MT::Perl not found. \ wiektripuur
15:16:56 <kallisti> `run perl -pi -e 's#^.*\bwarn\b.*$##' bin/words
15:17:00 <HackEgo> No output.
15:17:01 <kallisti> `words
15:17:06 <HackEgo> sulf
15:17:09 <kallisti> `words --help
15:17:13 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ options: \ -l, --list list valid datasets \ -d, --debug debugging output \ -N, --dont-normalize don't normalize frequencies when combining \ multiple Markov models; this has the effect \ of making larger datasets more influential \ -o, --target-offset change the target length
15:17:33 <kallisti> `words --list
15:17:37 <HackEgo> valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian \ default: --eng-1M
15:18:21 <elliott> `words 900 -o 289347898974892734238947923742389423
15:18:27 <HackEgo> Argument "900 -o 289347898974892734238947923742389423" isn't numeric in int at /hackenv/bin/words line 146. \ cog maki ashed flam deming hun guaj cili ponste alledit shapetick titum adiompl colonia hymanstastre occifield rib kuk ivell cogn wadhyal sine chillul nonidi mplaim
15:18:35 <kallisti> oh I forgot the thing.
15:18:56 <kallisti> ...what was the thing again.
15:19:01 <kallisti> ah yes
15:20:06 <monqy> sizeof overflow sounds
15:20:09 <monqy> beautiefulye
15:21:49 <olsner> elliott: interesting
15:21:52 <elliott> monqy: you're overdoing the typos a little :P
15:22:03 <kallisti> `run perl -pi -e 's#GetOptions#@ARGV = split /\s+/, \$ARGV[0] if \@ARGV == 1;$&#' bin/words
15:22:07 <HackEgo> No output.
15:22:07 <monqy> i have trouble helping it
15:22:10 <elliott> fizzie: Could I convince you to op a single-purpose bot?
15:22:13 <kallisti> `words --eng-all 9001
15:22:17 <HackEgo> syntax error at /hackenv/bin/words line 111, near "=" \ Execution of /hackenv/bin/words aborted due to compilation errors.
15:22:21 <kallisti> uh oh
15:22:35 <kallisti> turns out perl is not a valid substitute for a text editor.
15:23:15 <Vorpal> kallisti, just edit it locally and `fetch a new one?
15:23:33 <kallisti> too easy.
15:24:02 <elliott> kallisti: You're just inferior.
15:24:02 <kallisti> `fetch http://sprunge.us/KHIN
15:24:05 <HackEgo> 2012-01-08 15:24:05 URL:http://sprunge.us/KHIN [4599] -> "KHIN" [1]
15:24:05 <elliott> I fixed scripts with sed all the time.
15:24:30 <kallisti> `run chmod +x KHIN; mv KHIN bin/words
15:24:34 <HackEgo> No output.
15:24:35 <kallisti> `words --eng-all 5000000
15:24:38 <HackEgo> can't open share/WordData/EngAll: No such file or directory at /hackenv/bin/words line 104
15:24:50 <Vorpal> elliott, wow, sizeof overflowing
15:24:57 <Vorpal> elliott, that is so absurd
15:25:02 <kallisti> `fetch http://sprunge.us/VHhP
15:25:04 <HackEgo> 2012-01-08 15:25:03 URL:http://sprunge.us/VHhP [4600] -> "VHhP" [1]
15:25:17 <kallisti> `run chmod +x VHhP; mv VHhP bin/words
15:25:20 <HackEgo> No output.
15:25:22 <kallisti> `words --eng-all 5000000
15:25:26 <olsner> more like they forgot to put in the standard the bit about size_t always being big enough
15:25:29 <HackEgo> cartzwick refd cons quenfeasodcr lighlymb signing prol busina ccote oscoplai phistorialpa hegle out presen golo chowski oand gresset sageopak dpoudle metnbruku remati nei tist shropsych
15:25:37 <elliott> fizzie: HMPH
15:25:44 <olsner> (and/or all objects and types being small enough)
15:26:06 <kallisti> shropsych
15:26:12 <Vorpal> elliott, hm does sizeof overflowing allow infinite memory? And does that make C TC then?
15:26:28 <elliott> Vorpal: I doubt it; \infty doesn't "overflow" to anything.
15:26:47 <atrapado> anyone wants to implement an interpreter for my language?
15:26:55 <monqy> is it a good language
15:26:57 <olsner> hmm, if size_t doesn't have to be unsigned, I think it could be arbitrary-precision
15:27:09 <elliott> atrapado: Wait, aren't you one of those people who were in here years ago?
15:27:16 <Vorpal> elliott, hm true
15:27:18 <olsner> or if sizeof(x) = 1 for all x
15:27:29 <atrapado> yes, i was
15:27:31 <elliott> olsner: no, CHAR_BIT is required of freestanding implementations
15:27:45 <Vorpal> atrapado, which language?
15:27:49 <elliott> atrapado: Naww, `pastelogs says 2007, I meant the REAL old days. But hi :P
15:28:01 * elliott remembers your name for some reason.
15:28:11 <atrapado> i define a minimal turing complete language
15:28:13 <olsner> elliott: hmm, but didn't we conclude that this only affected unsigned types?
15:28:14 <Vorpal> <elliott> atrapado: Naww, `pastelogs says 2007, I meant the REAL old days. But hi :P <-- what? 2005?
15:28:24 <atrapado> i think tc
15:28:28 <elliott> Vorpal: 2002-2004.
15:28:32 <Vorpal> elliott, ah
15:28:32 <monqy> minimal?
15:28:52 <atrapado> only 3 or 4 elements
15:29:02 <elliott> olsner: I don't think so, I think we just didn't realise at the time. unsigned was another thing; sizeof still has to return the size. Although, hmm.
15:29:09 <kallisti> I'm bad at making my programs simultaneously have data files and also being current-directory agnostic.
15:29:15 <elliott> olsner: I think we waxed philosophical about what sizeof's value actually meant.
15:29:25 <elliott> I don't recall.
15:29:37 <Vorpal> kallisti, huh?
15:30:05 <Vorpal> kallisti, if you don't mind portability look at /proc/self/exe
15:30:29 <kallisti> well, in Perl I use $0
15:30:31 <Vorpal> kallisti, if you mind portability I suggest you have a configure script or such that hardcode the target paths into the program
15:30:33 <elliott> Vorpal: Have you heard of argv[0].
15:30:42 <olsner> I think unsigned types need to wrap at 2^n, where n is possible related to sizeof and CHAR_BIT
15:30:43 <Vorpal> elliott, argv[0] has the issue that it might be anything
15:30:47 <Vorpal> elliott, at least in C
15:30:50 <olsner> but that signed types had no lower limit except that the max. *positive* value must be smaller than the max value of the corresponding unsigned type
15:30:51 <Vorpal> elliott, not sure about perl
15:30:58 <elliott> Vorpal: /proc/self/exe will also point to `which perl`, duh.
15:31:02 <Vorpal> elliott, hm true
15:31:13 <olsner> but... negative sizeof, hmm
15:31:22 <elliott> olsner: Right, but by having sizeof return something you're still declaring that it fits into that many chars.
15:31:38 <elliott> olsner: i.e. you can put it in a char array of that size and convert it back.
15:31:55 <elliott> olsner: And by defining CHAR_BIT you're declaring that that many bools can uniquely identify a character.
15:32:05 <elliott> So there's no real way around it, AFAICT.
15:32:35 <elliott> The only argument there is what CHAR_BIT really means, IMO.
15:33:50 <olsner> and sizeof still has a (constant) maximum value, because everything else has, so that's no solution to sizeof overflow anyway
15:34:21 <olsner> is it possible to allow structs and arrays to have sizeof 1?
15:34:46 <elliott> char n[2] can't fit into a char unless char is countably infinite.
15:34:53 <elliott> Which it can't be, as we've established.
15:34:59 <elliott> So, no.
15:35:08 <Vorpal> elliott, I always found it amusing that even though the C standard allows lots of weird deathstation 9000 style systems it doesn't allow a ternary one
15:35:39 -!- sebbu2 has changed nick to sebbu.
15:36:03 <elliott> Vorpal: Well, that's just perverse.
15:36:07 <olsner> elliott: because of CHAR_BIT?
15:36:09 <elliott> Who the hell uses ternary?
15:36:11 <elliott> olsner: Yse.
15:36:12 <elliott> Yes.
15:36:19 <Vorpal> elliott, a few systems have used that
15:36:24 <elliott> fizzie: What's the actual definition of CHAR_BIT?
15:36:25 <elliott> Vorpal: It was a joke.
15:36:30 <Vorpal> elliott, oh
15:37:30 <elliott> Hey, the musl guy is on SO.
15:37:33 <Vorpal> <elliott> fizzie: What's the actual definition of CHAR_BIT? <-- are you using fizzie as a search engine of the C standard?
15:38:22 <elliott> Vorpal: Yes.
15:38:28 <atrapado> well, i will explain the language definion later, well 2 languages really
15:38:57 <Vorpal> elliott, he tends to be very good at such things
15:39:08 <Vorpal> atrapado, is it on the wiki?
15:39:13 <atrapado> no
15:39:19 <Vorpal> why not?
15:39:37 <atrapado> it is very simple
15:39:44 <atrapado> i can explain here
15:40:00 <Vorpal> well that won't be as each to find for people in the future
15:40:03 <elliott> Lots of languages on the wiki are very simple
15:40:11 <atrapado> ok
15:40:32 <atrapado> i will consider the wiki
15:40:44 <Vorpal> atrapado, as long as it isn't yet another bf-clone (or bf-clone with minor variations) you should probably put it on the wiki
15:41:06 <atrapado> no it is not a clone
15:41:34 <Phantom_Hoover> atrapado, did you manage to break SHA256, then?
15:41:41 <atrapado> hehe
15:41:52 <atrapado> not even md5
15:42:00 <atrapado> but i developed a model
15:42:29 <Phantom_Hoover> A model of what?
15:42:42 <elliott> MD5 was broken ages ago.
15:43:11 <atrapado> of md5 or other algorithm with logical and add operarions
15:44:10 <elliott> A 2009 attack by Tao Xie and Dengguo Feng breaks MD5 collision resistance in 220.96 time. This attack runs in a few seconds on a regular computer.[2]
15:44:10 <elliott> yikes, I didn't know it was that bad
15:44:22 -!- atrapado has quit (Read error: Connection reset by peer).
15:46:45 <olsner> Is that 2^20.96 time?
15:47:54 -!- atrapado has joined.
15:48:16 <fizzie> elliott: "number of bits for smallest object that is not a bit-field".
15:48:38 <atrapado> sorry, batery was low
15:50:20 <elliott> fizzie: What does "number of bits" even mean? :/
15:50:21 <elliott> olsner: Yes.
15:52:00 <olsner> if we're lucky, we only need to care about "number of bits" as far as making the unsigned ints looking like n-bit numbers
16:03:43 <fizzie> elliott: All values (discounting bitfields) "consist of n x CHAR_BIT bits, where n is the size of an object of that type, in bytes. The value may be copied into an object of type unsigned char [n]; the resulting set of bytes is called the /object representation/ of the value."
16:05:16 <fizzie> And "objects of type unsigned char shall be represented using a pure binary notation.49) ... 49) A positional representation for integers that uses the binary digits 0 and 1, in which the values represented by successive bits are additive, begin with 1, and are multiplied by successive itnegral powers of 2, except perhaps the bit with the highest position."
16:05:32 <fizzie> (Typos mine.)
16:06:27 <fizzie> The 'n' for unsigned types is not related to sizeof, though, since (non-char) arithmetic types can have padding bits.
16:07:02 <olsner> damn, and objects need to be representable as a series of *unsigned* chars
16:07:23 <fizzie> (Where the "n" was the [0 ... 2^n-1] value range for unsigned types.)
16:09:07 <olsner> hmm, *except perhaps the bit with the highest position.* - so the highest bit is allowed to be anything?
16:09:49 <fizzie> That's just a footnote, and they are non-normative, IIRC.
16:09:58 <fizzie> It's just defining "pure binary" there.
16:10:35 <olsner> pff, "pure binary" could mean anything!
16:10:37 <fizzie> There's another place which explicitly defines what the value bits mean in unsigned integer types.
16:11:21 <fizzie> "If there are N value bits, each bit shall represent a different power of 2 between 1 and 2^(N-1), so that objects of that type shall be capable of representing values from 0 to 2^N - 1 using a pure binary representation."
16:12:37 <kallisti> `which log
16:12:40 <HackEgo> ​/hackenv/bin/log
16:12:41 <fizzie> Signed integers are otherwise identical, except there is (in addition to padding and value bits) a single sign bit, which will either have the value -(2^M), the value -(2^M-1), or the meaning that the corresponding value with sign bit 0 is negated.
16:13:00 <fizzie> (In other words, two's-complement, one's-complement, or sign-magnitude.)
16:13:01 <Vorpal> <olsner> pff, "pure binary" could mean anything! <-- it basically means that on a ternary machine the it could only encode one bit per... um... trit?
16:13:21 <fizzie> "Tit".
16:13:31 <Vorpal> I believe it is actually trit
16:13:45 <fizzie> "Trit" is more common, sure.
16:14:08 <olsner> fizzie: argh, so C mandates binary representations? :(
16:14:34 <olsner> is that new from C99 though? maybe C90 is better
16:14:39 <Vorpal> olsner, I complained about that earlier today
16:14:47 <Vorpal> (the exclusion of ternary)
16:14:55 <fizzie> C90 isn't (IIRC) any better when it comes to unsigned integers.
16:15:02 <fizzie> Signed integers are allowed more latitude.
16:15:30 <Vorpal> fizzie, anyway all modern systems uses two-complement for signed integers afaik
16:17:24 <fizzie> Anyway, it's all under the "as if" rule, so "physically" I'm sure you could run things on a ternary machine with, say, three bits packed into two trits -- or 9-bit quantities into 6-trit ones if that's natural for the machine -- and just make the bitwise operators work right. All objects have to be composed out of unsigned chars, though.
16:17:49 <fizzie> 9 is a perfectly suitable value for CHAR_BIT, after all.
16:18:14 <fizzie> Well, unless you want to be all POSIXy.
16:21:13 <atrapado> check SumaMoito in the wiki for the languages i mentioned
16:21:57 <olsner> fizzie: but it does limit the range of signed integers to some fixed number of bits, which is the boring part
16:21:58 <elliott> <fizzie> The 'n' for unsigned types is not related to sizeof, though, since (non-char) arithmetic types can have padding bits.
16:22:00 <elliott> fizzie: Ah.
16:22:09 <elliott> fizzie: Didn't we conclude that nothing stopped you packing data into those padding bits?
16:22:51 <elliott> fizzie: Incidentally, I had to cite the as-if rule a day or two ago!
16:22:59 <elliott> I didn't realise people ever actually had to do that.
16:23:06 <elliott> I feel like a real standards lawyer.
16:23:18 <fizzie> elliott: I suppose, though the data is not guaranteed to survive through operations, or get copied by assignment, and "bad" padding bit values are allowed to generate trap representations.
16:23:51 <fizzie> (E.g. one of the padding bits can be a hardware-mandated parity bit.)
16:24:25 <elliott> fizzie: Well, we don't care about portability guarantees.
16:24:52 <elliott> fizzie: We just care that it is possible to write a strictly conforming C program that can implement infinite-tape BF on a hypothetical conforming C implementation.
16:26:27 <elliott> "Aside from that, garbage collection is just plain slow. You can find hundreds of academics who like to claim otherwise, but that won't change the reality. The performance issues of GC can be broken down into 3 main categories:
16:26:28 <elliott> Unpredictability
16:26:28 <elliott> Cache pollution
16:26:28 <elliott> Time spent walking all memory"
16:26:32 <elliott> pikhq: I don't like musl any more. :(
16:26:46 <elliott> "Reference counting is clean and elegant" I double don't like it!
16:27:23 <monqy> if only it were @
16:27:26 <itidus21> elliott: well if you just keep calling malloc(n) :D
16:27:41 <elliott> itidus21: No.
16:27:44 <elliott> Pointers have a defined size.
16:27:48 <elliott> That size must be finite.
16:27:54 <itidus21> oh i see
16:29:00 <itidus21> well ain't that a bitch
16:29:33 <elliott> fizzie: So, theoretically you could have an unsigned integer whose value is in the padding bits?
16:29:58 <elliott> Erm, signed.
16:29:59 <elliott> Argh.
16:30:07 <elliott> fizzie: I've lost track of the argument.
16:30:13 <olsner> or in a single arbitrary-precision padding bit
16:31:00 <fizzie> olsner: The padding bits are still bits that show up in the unsigned char[n] object representation.
16:31:26 <fizzie> (What does an "arbitrary-precision bit" even mean?)
16:31:45 <olsner> something that's called a "bit" but has infinite data
16:31:56 <elliott> fizzie: Well, you can be really sure of the precision of your 0s and 1s.
16:31:59 <elliott> They're... crisp.
16:32:01 <elliott> High-fidelity.
16:32:03 <elliott> All thanks to Monster Cable.
16:32:15 <itidus21> lol
16:32:22 <monqy> thanks monster cable
16:33:52 <fizzie> olsner: In any case, no matter whether it's legal for the padding bits to be not quite "bits" (which I doubt), it's still explicit that the value (as seen by arithmetic operations and such, I mean) of the object is strictly defined by the value bits.
16:34:51 <itidus21> the best way to store bits is as pebbles
16:37:01 <atrapado> elliott, take a look at the wiki: SumaMoito
16:37:16 <elliott> "Based on the powerful editing component Scintilla, Notepad++ is written in C++ and uses pure Win32 API and STL which ensures a higher execution speed and smaller program size. By optimizing as many routines as possible without losing user friendliness, Notepad++ is trying to reduce the world carbon dioxide emissions. When using less CPU power, the PC can throttle down and reduce power consumption, resulting in a greener environment."
16:37:20 <elliott> Worst. Marketing. Ever.
16:38:01 <elliott> atrapado: The only difference between Z1 and Z2 is the wraparound value?
16:38:20 <elliott> It just looks like brainfuck with variables instead of a tape and no IO to me. :p
16:38:31 <atrapado> is the value that you get when decrement 0
16:38:32 <elliott> I don't think it's TC.
16:38:57 <elliott> Because you always condition on the same variable in a loop.
16:38:59 <atrapado> i am sure they are tc, mostly
16:39:06 <elliott> Brainfuck with only balanced loops is not TC.
16:39:07 <elliott> So...
16:39:17 <elliott> atrapado: You can be as sure as you like, that doesn't change the theory.
16:39:26 <atrapado> you can have many variables and loops
16:39:48 <atrapado> i saw a proof some day
16:39:51 <elliott> atrapado: You can have many variables and loops in lots of sub-TC languages.
16:39:57 <atrapado> for z2
16:40:13 <elliott> Okay. Show the proof?
16:40:17 <elliott> It might be erroneous, after all...
16:40:24 <itidus21> is the true value of TC that TC means compatible with LC?
16:40:25 <atrapado> in computer science grade
16:40:50 <elliott> atrapado: Err, you aren't the author of these languages?
16:40:56 <atrapado> well show me a computation that can not be done
16:41:04 <itidus21> and that LC means you can derive mathematical proofs by the code
16:41:06 <elliott> atrapado: Burden of proof...
16:41:22 <atrapado> i am the author of 2 of these lsnguages
16:41:41 <elliott> atrapado: Here's a thing that can't be done: a BF->SumaMoito-Z1 compiler.
16:41:56 <elliott> As I said, the loop structure is too weak.
16:42:00 <atrapado> no
16:42:01 <elliott> If you want to show it TC, show the compiler.
16:42:09 <itidus21> and that esoteric programmers primary goal is to make programming useful for mathematical proofs
16:42:34 <elliott> atrapado: No what?
16:42:45 <atrapado> i implemented a compiler for one of these languages
16:42:57 <elliott> A compiler from what to what?
16:42:57 <Phantom_Hoover> atrapado, you invented that crap?
16:43:01 <atrapado> you can add sub div...
16:43:11 <monqy> rude...
16:43:18 <elliott> atrapado: The arithmetic isn't the problem.
16:43:20 <elliott> The control flow is.
16:43:27 <atrapado> compiler from the language to c++
16:43:33 <atrapado> no
16:43:37 <atrapado> nest them
16:43:42 <elliott> Well, that doesn't prove anything; you can compile sub-TC languages to C++.
16:43:47 <elliott> atrapado: OK, let me put it this way.
16:43:51 <atrapado> yes elliott
16:43:57 <elliott> Brainfuck with only balanced loops is *proven* sub-Turing-complete.
16:44:10 <elliott> In brainfuck, you *have* to be able to vary the cell you condition on for it to be TC.
16:44:17 <elliott> Your language is essentially BF with variables instead of cells.
16:44:20 <itidus21> >:-)
16:44:23 <elliott> But your loop structure is over a constant variable.
16:44:29 <elliott> You cannot change what you loop over in the loop itself.
16:44:35 <atrapado> yes
16:44:35 <elliott> Therefore, it is most likely sub-TC.
16:44:46 <atrapado> it is hard but is possible
16:44:46 <elliott> By analogy with the fact that balanced brainfuck is sub-TC.
16:44:47 <Phantom_Hoover> elliott, you can swap two variables, can't you?
16:44:59 <elliott> Phantom_Hoover: Weell...
16:45:00 -!- Ngevd has joined.
16:45:08 <elliott> Phantom_Hoover: I suppose so, with a third variable.
16:45:22 <Ngevd> Hello
16:45:22 <elliott> Phantom_Hoover: But a loop can only swap two fixed variables.
16:45:55 <elliott> atrapado: Oh well, if you're just going to continue asserting it's TC based on no evidence at all in the face of fair sketch arguments it's not, then reasoning with you about it is pointless
16:46:09 <Phantom_Hoover> Hmm, it /seems/ like an MRM would be a worthwhile avenue.
16:46:26 <atrapado> i am not mathematician
16:46:29 <Ngevd> SumaMoito-Z1 and -Z2 are, I think, Turing Complete
16:46:32 <elliott> Phantom_Hoover: MRM?
16:46:38 <elliott> atrapado: Nor am I, what's your point?
16:46:40 <Phantom_Hoover> Minsky register machine?
16:46:41 <Ngevd> Isomorphic to a Minsky Machine
16:46:43 <elliott> Phantom_Hoover: Ah.
16:46:48 <elliott> Ngevd: I don't think so.
16:46:52 <atrapado> to show the proof
16:46:53 <elliott> It's the loop structure still.
16:46:57 <Ngevd> Well, not isomorphic, but
16:47:00 <elliott> atrapado: Proving it TC is trivial; you just have to write a compiler from a TC language to it.
16:47:03 <Phantom_Hoover> I'm not really sure how MRMs work, so I can't say.
16:47:10 <elliott> atrapado: For instance something very simple like boolfuck or as Phantom_Hoover said a Minsky machine.
16:47:58 <Ngevd> I think I could translate any Minsky Machine with n registers to a SumaMoito program with n+1 variables
16:48:09 <atrapado> i did not see a computation that can not be done with the languages
16:48:32 <elliott> atrapado: Proof by lack of imagination is a common but invalid method :)
16:48:41 <atrapado> yes i see
16:49:07 <Ngevd> How are Minsky Machines numerally notated?
16:49:57 <monqy> what happens in z2 if you decrement a zero variable
16:50:08 <elliott> Hmm, OK, Minsky machines might work.
16:50:09 <itidus21> elliott: it is fascinating that something which is sub-TC becomes impossible to implement a compiler for in something which is TC
16:50:14 <atrapado> stays the same
16:50:15 <Ngevd> monqy, it stays 0
16:50:19 <elliott> But I dunno.
16:50:23 <monqy> Ngevd: unimaginitive
16:50:23 <Phantom_Hoover> BCT looks implementable too.
16:50:24 <elliott> You need an "if".
16:50:30 <elliott> I'm not convinced the "while" there can do an "if".
16:50:45 <atrapado> yes it can do
16:50:54 <elliott> atrapado: Not necessarily in the way required.
16:50:56 <monqy> itidus21: what
16:50:59 <Ngevd> elliott, have a 3rd variable stuck at 0?
16:51:12 <itidus21> i mean, is sumamoito not a form of computation? :D
16:51:17 <Ngevd> Wait, hang on
16:51:17 <monqy> what
16:51:19 <elliott> You can do
16:51:20 <elliott> temp = foo
16:51:23 <itidus21> is it not?
16:51:26 <elliott> while (foo) { ...; foo = 0 }
16:51:27 <elliott> foo = temp
16:51:34 <elliott> But that means the whole thing _cannot_ change foo at all in any way
16:51:36 <itidus21> hehehe
16:51:38 <elliott> Hmm
16:51:39 <elliott> temp = foo
16:51:48 <elliott> while (foo) { ...; /* sets add */; foo = 0 }
16:51:48 <elliott> foo = temp
16:51:50 -!- variable has changed nick to consrt.
16:51:51 -!- consrt has changed nick to const.
16:51:59 <elliott> /* foo += add */
16:52:00 <Phantom_Hoover> while (a) { a-; b+; code }; while (b) { code } seems like it'd work as an if-else.
16:52:02 <elliott> That could work if you can do addition.
16:52:07 <itidus21> why can't a TC do sumamoito i wonder.. perhaps due to some limitation of the power of a TC
16:52:10 <atrapado> well strictly speaking there is no =
16:52:16 <Phantom_Hoover> You can even restore a int the else loop.
16:52:17 <monqy> itidus21: what
16:52:18 <elliott> atrapado: It was pseudocode
16:52:21 <atrapado> ok
16:52:35 <itidus21> yeah.. TC is overhyped
16:52:36 <elliott> Phantom_Hoover: Erm, that only works if a is either 0 or 1.
16:52:42 <elliott> Which is not the case with an MRM.
16:52:52 <monqy> itidus21: I think you misinterpreted something
16:52:56 <Phantom_Hoover> elliott, erm, right.
16:53:20 <itidus21> monqy: probably
16:53:23 <itidus21> yeah..
16:53:33 -!- Zuu has joined.
16:53:41 <Phantom_Hoover> If you replace code with while (c) {code; c-} and then put c+ outside the loop?
16:53:52 <Phantom_Hoover> And set c to 1 beforehand.
16:53:54 <monqy> itidus21: it's not that you can't write a SumaMoito compiler in a TC language; it's that you can't compile from a TC language to SumaMoito, or so the claim goes
16:53:58 <monqy> itidus21: if that clears anything up
16:54:07 <itidus21> ohhh
16:54:11 <itidus21> yes that helps
16:54:19 <itidus21> :(
16:54:36 <itidus21> my misinterpretation was more exciting
16:54:49 <elliott> Phantom_Hoover: b+; while (a) { whentrue; while (a) { a- }; b- } while (b) { whenfalse }
16:54:51 <Ngevd> itidus21, you want something like Gravity
16:54:54 <monqy> don't worry there's still plenty of fun stuff you can't do
16:54:56 <elliott> Phantom_Hoover: The problem is that, with an MRM, you have to test whether it's zero /without clobbering it/.
16:55:05 <elliott> Which is impossible, because you only have a while loop on a fixed variable.
16:55:08 <elliott> So you have to copy it elsewhere.
16:55:13 <atrapado> no
16:55:16 <Phantom_Hoover> Yes; where's the problem with that/
16:55:23 <elliott> Phantom_Hoover: Because the operation is to decrement it.
16:55:35 <atrapado> while a a- b+ c+ ???
16:56:01 <atrapado> copy
16:56:06 <itidus21> Ngevd: i do not quite enjoy not being educated in maths... it takes a lot of the fun out of esolangs
16:56:15 <Ngevd> itidus21, :P
16:56:21 <elliott> Phantom_Hoover: Okay, b+; while (a) { dec+; tmp+; while (a) { a- }; b- }; while (tmp) { a+; tmp- }; while (dec) { a-; dec- } while (b) { ... }
16:56:30 <elliott> That's "if a>0, decrement a, else ...".
16:57:07 <itidus21> it also means not very fun to browse wiki pages about math(s)
16:57:27 -!- augur has quit (Ping timeout: 240 seconds).
16:57:30 <itidus21> every time i hit a mathematical notation it is like a toll gate
16:57:39 <Phantom_Hoover> tmp = 0, c=1; while (a) { a-; tmp+; while(c) {code; c-}}; while(c){c-}; c+; while (tmp) {tmp-; a+; while(c){code; c-}}; while(c){c-}; c+?
16:57:40 <elliott> itidus21: Ignorance is bliss, they say.
16:57:44 <elliott> Phantom_Hoover: There's no =.
16:57:52 <itidus21> they do. and in my experience.. it has proven true
16:57:56 <elliott> Anyway, I'm not sure what that is meant to do.
16:57:58 <Phantom_Hoover> elliott, that's shorthand for initialisation, duh.
16:58:04 <elliott> itidus21: It generally rings true for the ignorant, yes.
16:58:11 <atrapado> can be emulated, the =
16:58:12 <elliott> Phantom_Hoover: What's your thing meant to do that mine doesn't?
16:58:19 <Phantom_Hoover> That's meant to be a straight if-then-else.
16:58:23 <elliott> Ah.
16:59:40 <elliott> Phantom_Hoover: isfalse+; while (cond) { istrue+; tmp+; while (cond) { cond- }; isfalse- }; while (tmp) { cond+; tmp- }; while (istrue) { WHENTRUE; istrue- }; while (isfalse) { WHENFALSE; isfalse- }
16:59:44 <elliott> There's my if/then/else.
16:59:59 <elliott> Phantom_Hoover: Now the main problem is: you need a set of declarations for each variable you condition on.
17:00:04 <elliott> But I think it /might/ be enough to do an MRM.
17:00:26 <Phantom_Hoover> elliott, there are no limits for variable declaration though, so that's OK, isn't it?
17:00:36 <elliott> Phantom_Hoover: Well... this thing can't nest.
17:00:39 <atrapado> no limits
17:00:39 <itidus21> if you guys saw my initial budding efforts at language design in the past it might be vomit inducing
17:00:47 <elliott> If you put an if/then/else inside an if/then/else, the outer loop's state gets fucked up.
17:00:51 <itidus21> hehehehe
17:00:58 <elliott> Phantom_Hoover: That's problematic, because there's no other way to do control flow other than nesting in this thing.
17:01:05 <elliott> So you need to find a way to "unroll" everything at the top level.
17:01:10 <elliott> I don't think that's possible.
17:01:23 <atrapado> can nest
17:01:29 <elliott> atrapado: I know they can nest.
17:01:36 <Phantom_Hoover> Can't you just assign a unique set of variables to each if construct?
17:01:39 <elliott> I understand the language.
17:01:45 <atrapado> ok
17:01:46 <elliott> Phantom_Hoover: Well, yes.
17:02:14 <Sgeo> I know how to implement unsafeCoerce# in pure Haskell! let x = x in x
17:02:17 <Sgeo> ^^joke
17:02:20 <elliott> ^^joke
17:02:23 <monqy> aplause
17:02:35 <monqy> cheers echo far and wide
17:02:38 <monqy> for sgeos
17:02:38 <monqy> joke
17:02:42 <elliott> Phantom_Hoover: a++; b++; if (a>0) { a--; } else { ... }; if (b>0) { b--; } else { ... } is a TC MRM, right?
17:02:42 <Sgeo> If I didn't say joke, some of you would think I was being serious
17:02:48 <elliott> Phantom_Hoover: Where ... is part of the instruction.
17:02:50 <elliott> Er, let me rephrase that.
17:02:52 <Ngevd> atrapado, what happens if you do something like "a; a+; a;"?
17:02:56 <elliott> INC_A = a++
17:02:59 <elliott> INC_B = b++
17:03:01 <Phantom_Hoover> elliott, you expect me to know a thing like that??
17:03:07 <elliott> A{...} = if (a>) { a-- } else { ... }
17:03:09 <elliott> argh
17:03:10 <elliott> *>)
17:03:11 <elliott> *>0
17:03:14 <atrapado> well it should not compile, ngevd
17:03:16 <elliott> B{...} = if (b>0) { b-- } else { ... }
17:03:27 <elliott> Phantom_Hoover: Well, just confirm whether my understanding of what http://esoteric.voxelperfect.net/wiki/Minsky_machine says is correct. :p
17:03:28 <Phantom_Hoover> I think we have enough for all the normal arithmetic tools, though, so BCT looks achievable.
17:03:44 <elliott> Phantom_Hoover: I'm just not convinced that a structural nested thing like that is enough to accomplish a "state transition".
17:04:16 <elliott> Phantom_Hoover: Structured programming languages require powerful enough control structures to not be sub-TC, after all.
17:04:22 <elliott> goto is significantly more flexible.
17:04:45 <elliott> I suspect the standard presentation of an MRM program involves labelled statements where the decrement jump location is taken as a goto.
17:04:48 <Phantom_Hoover> elliott, 'state transition' meaning 'switching to a different set of code', essentially?
17:04:56 <elliott> Phantom_Hoover: Wait, obviously what I said wasn't enough.
17:05:00 <elliott> Because there's no looping.
17:05:06 <elliott> So yeah, <elliott> Phantom_Hoover: Okay, b+; while (a) { dec+; tmp+; while (a) { a- }; b- }; while (tmp) { a+; tmp- }; while (dec) { a-; dec- } while (b) { ... }
17:05:13 <elliott> just isn't enough on its own to accomplish the control.
17:05:32 <monqy> is there anything preventing a real easy reduction to balanced-loops bf
17:05:54 -!- augur has joined.
17:06:10 <Ngevd> monqy, balanced loops infinite cell size, no
17:06:17 <Phantom_Hoover> Didn't this whole thing start because balanced-loops is sub-TC?
17:06:28 <monqy> hence the mention
17:06:31 <Ngevd> Only if the cells are finite in size
17:11:15 <atrapado> if (a) {code}; -> while (a) { code; while (a) a-; }
17:11:35 <Phantom_Hoover> We passed that point a long, long time ago.
17:11:50 <atrapado> ok just remembering
17:12:21 <Phantom_Hoover> That's not sufficient in itself, because you can't do an else.
17:12:34 <atrapado> else is if not a
17:13:11 <monqy> but you zeroed a at the end???
17:13:13 <Phantom_Hoover> How do you implement not?
17:13:19 <monqy> that too
17:13:20 <Phantom_Hoover> And what monqy said.
17:13:21 <atrapado> copy it
17:13:36 <elliott> Copy what?
17:13:42 <atrapado> a to b
17:13:42 <elliott> Oh, right.
17:13:52 <Phantom_Hoover> This is kind of moot, because we've demonstrated that if-then-else is possible; see above.
17:14:09 <atrapado> another formulation
17:14:20 <elliott> monqy: I think it's easy, yes, because you always know how far away you are from another variable.
17:14:28 <elliott> But I'm not *quite* sure.
17:14:47 <elliott> I'm erring on the side of the control flow being too weak.
17:16:21 <atrapado> a=1 while (b) { a = 0 ; B- } this is not
17:17:28 <Phantom_Hoover> I'm erring on the side of it being strong enough: you're able to have normal nested while and if statements, AFAICT.
17:18:15 <elliott> Phantom_Hoover: I'm not sure that's enough.
17:18:24 <elliott> Balanced BF has that.
17:18:44 <elliott> I think you need some "dynamicity" in the control flow, like you get with goto, or being able to change the conditioned variable (unbalanced BF).
17:19:46 <Ngevd> You can keep a variable called "check" in the while and just swap the value of check around
17:19:46 <atrapado> you can do logical and of two variables, and other connectives
17:19:49 <Phantom_Hoover> I'm really not sure of that.
17:19:54 <Ngevd> Never mind
17:20:00 <elliott> Phantom_Hoover: Sure of what?
17:20:36 <Phantom_Hoover> OK, so wait, can we assume that it's possible to implement the appropriate arithmetic functions to manipulate (appropriately-framed) bitstreams?
17:22:34 <Phantom_Hoover> So I can write a=take(s) to remove the first bit in a stream and put it in a, and put(b,s) to stick a bit onto the end of a stream without needing to specify the exact implementation of all the relevant arithmetic?
17:23:31 <atrapado> with add sub mult and div and loops maybe?
17:23:56 <Phantom_Hoover> Yes; I'm confident that what we have is enough for those.
17:24:00 <elliott> <Phantom_Hoover> OK, so wait, can we assume that it's possible to implement the appropriate arithmetic functions to manipulate (appropriately-framed) bitstreams?
17:24:03 <elliott> Phantom_Hoover: I'm sceptical.
17:24:21 <elliott> Phantom_Hoover: Well, *2 is easy enough.
17:24:30 <elliott> %2 as well.
17:24:37 <elliott> I guess +1 is too.
17:24:47 <Phantom_Hoover> /2?
17:24:55 <elliott> Well, let's try it?
17:25:03 <elliott> Phantom_Hoover: Can it be put(s,b) btw.
17:25:12 <Phantom_Hoover> Yes, OK.
17:25:31 <elliott> put(s,0) = { s'; while (s) { s'+; s'+; s- }; while (s') { s+; s'- } }
17:25:39 <elliott> put(s,1) = { put(s,0); s+ }
17:25:57 <elliott> Phantom_Hoover: Also take(s,b) to put it in b.
17:26:10 <Phantom_Hoover> OK.
17:26:14 <Phantom_Hoover> http://esolangs.org/wiki/Brainfuck_algorithms#x_.3D_x_.2F_y
17:26:21 <Ngevd> while(b != zero) {b-;} while(a != zero){a-; a-; b+;}
17:26:21 <elliott> Shhh.
17:26:45 <Ngevd> Are we still talking about SumaMoito?
17:26:45 <elliott> Phantom_Hoover: OK, divmod is quite tricky.
17:26:49 <elliott> Ngevd: Yes.
17:26:52 <elliott> -Z1.
17:27:01 <elliott> Phantom_Hoover: It relies on overflow behaviour.
17:27:06 <elliott> Phantom_Hoover: Actually, we could just do div and mod separately.
17:27:20 <elliott> Phantom_Hoover: /2 is tricky.
17:27:27 <elliott> while (s) { s-; s-; d+ } doesn't work.
17:27:33 <elliott> Actually, it works in -Z2.
17:27:43 <elliott> But isn't -Z1 the one we're considering?
17:27:45 <Ngevd> The code I wrote there is the turns b into the ceiling of a/2
17:27:46 <elliott> It's the simplest.
17:27:59 <Ngevd> -Z2
17:28:06 <monqy> -n
17:28:17 <Phantom_Hoover> Proving one of them TC would be good enough for now, surely?
17:28:31 <Ngevd> Could we do %2 in -z1?
17:28:39 <elliott> Phantom_Hoover: Well, OK.
17:28:56 <elliott> while (s) { s-; s-; d+ }
17:28:58 <elliott> That's /2.
17:29:06 <elliott> %2 is harder.
17:29:13 <elliott> Well, we don't need d, actually.
17:29:17 <elliott> while (s) { s-; s- } # obvious
17:29:19 <elliott> Wait.
17:29:23 <elliott> No, we do need d.
17:29:37 <elliott> while (s) { s'+; s-; s- }; while (s') { s+; s'- }
17:29:45 <elliott> The problem now is getting the remainder.
17:29:49 <elliott> Ah, wait!
17:29:58 <Ngevd> while (s) {s -; if(d){d-}{d+}}
17:30:05 <elliott> while (s) { s'+; s-; if (s) { r+ } else { s- } }; while (s') { s+; s'- }
17:30:10 <elliott> Ngevd: Ah, yes.
17:30:19 <elliott> while (s) { s'+; s-; if (s) { s'-; r+ } else { s- } }; while (s') { s+; s'- }
17:30:31 <elliott> Phantom_Hoover: OK, rewrite that with your if-then-else.
17:31:30 <Ngevd> Ngevd, elliott, Phantom_Hoover, the Turing-Completeness people.
17:31:53 <Phantom_Hoover> elliott, do I have to?
17:32:02 <Phantom_Hoover> Can't we just say it's possible and leave it at that?
17:32:07 <elliott> Wait, no, it's...
17:32:17 <elliott> take(s,b) = { while (s) { s'+; s-; if (s) { s'- } else { b+; s- } }; while (s') { s+; s'- } }
17:32:18 <elliott> Right?
17:32:24 <elliott> As in, the remainder is on the other branch.
17:32:58 <elliott> Phantom_Hoover: OK, let's assume it's possible.
17:33:02 <elliott> Continue, sir.
17:35:07 <Ngevd> So, we have +1, *2, /2, %2
17:35:36 <elliott> :t break
17:35:37 <lambdabot> forall a. (a -> Bool) -> [a] -> ([a], [a])
17:35:43 <elliott> > break (== '=') "a=b=c"
17:35:44 <lambdabot> ("a","=b=c")
17:36:13 <atrapado> one difficult but possible thing is abs(A-B) in 3 langs
17:36:33 <elliott> > braek (== '=') "a"
17:36:34 <lambdabot> Not in scope: `braek'
17:36:37 <elliott> > break (== '=') "a"
17:36:38 <lambdabot> ("a","")
17:38:16 <elliott> :t lookup
17:38:17 <lambdabot> forall a b. (Eq a) => a -> [(a, b)] -> Maybe b
17:39:49 <Phantom_Hoover> Right then. p = <some BCT program>; d = <initial data>; while (1) { b; take(p,b); put(p,b); if(b) { take(p,b'); put(p,b'); d' = d; take(d,r); if(r) { put(d,b') } else { d = d' } } else { take(d,b') }
17:42:40 <elliott> Phantom_Hoover: Does that handle the "cyclic" part?
17:43:11 <Phantom_Hoover> You mean the "program string cycles" part?
17:43:20 <Ngevd> He does
17:43:52 <Phantom_Hoover> If so, take(p,b); put(p,b); reappends instructions.
17:44:00 -!- Ngevd has quit (Quit: Goodbye).
17:44:59 <elliott> Right.
17:45:09 <elliott> OK, I guess it's TC then.
17:45:31 <atrapado> :)
17:47:26 <monqy> another language? today is a good day
17:47:34 <elliott> Phantom_Hoover: Better question: What's the minimum number of variables for it to be TC?
17:47:54 <elliott> Phantom_Hoover: I can't tell from yours because you don't define most of your damn variables.
17:48:12 <elliott> "Generic is a WIP language made by Tailcalled in a way that makes many concepts from Category Theory easy to define."
17:48:31 <Phantom_Hoover> 6?
17:48:37 <Phantom_Hoover> Oh dear.
17:49:22 <Phantom_Hoover> Although your algorithms might have some extra implicit ones, and the ifs have their variables.
17:53:05 * Sgeo almost forgot about scanl
17:53:07 <Sgeo> :(
17:53:32 <Phantom_Hoover> Never forget about scanl, it's always waiting to jump on you when you least expect it.
17:53:32 <elliott> Phantom_Hoover: So should I read Mac Lane.
17:53:57 <elliott> :t replicateM
17:53:58 <lambdabot> forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a]
17:54:10 <Sgeo> :t scanl
17:54:11 <lambdabot> forall a b. (a -> b -> a) -> a -> [b] -> [a]
17:54:16 <elliott> > replicateM 3 "abc"
17:54:17 <lambdabot> ["aaa","aab","aac","aba","abb","abc","aca","acb","acc","baa","bab","bac","b...
17:54:46 <Sgeo> > replicateM_ 3 "abc"
17:54:47 <lambdabot> [(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),()...
17:55:00 <elliott> @src replicateM
17:55:00 <lambdabot> replicateM n x = sequence (replicate n x)
17:55:27 <Phantom_Hoover> @replicateM_
17:55:27 <lambdabot> Unknown command, try @list
17:55:34 <Phantom_Hoover> @src replicateM_
17:55:34 <lambdabot> replicateM_ n x = sequence_ (replicate n x)
17:58:34 <elliott> @src sequence
17:58:34 <lambdabot> sequence [] = return []
17:58:35 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
17:58:35 <lambdabot> -- OR: sequence = foldr (liftM2 (:)) (return [])
18:00:54 <Phantom_Hoover> <elliott> Phantom_Hoover: So should I read Mac Lane.
18:01:20 <Phantom_Hoover> Well, if you don't get put off by the examples being pretty obscure.
18:01:25 <elliott> Obscure howso?
18:01:45 <Phantom_Hoover> Maths.
18:02:16 <Phantom_Hoover> They're generally either topological, set-theoretical or group-theoretical.
18:02:29 <elliott> Phantom_Hoover: They should use practical examples instead, like counting change.
18:03:20 <Phantom_Hoover> Well no, it's just that I get annoyed when I have to skip bits because I don't understand the category in question.
18:05:32 * elliott knows ~0 topology and group theory, and very basic set theory, so he's clearly in the target market.
18:05:44 <elliott> Well, OK, more than ~0 group theory.
18:06:21 <Phantom_Hoover> Like, he defines and explains natural transformations in half a page, and then gives examples for the next two.
18:07:17 <elliott> Phantom_Hoover: How far in did you get?
18:07:40 <elliott> We should READ MAC LANE TOGETHER (N.B. this would be the most harrowing experience of your entire life).
18:07:40 <Phantom_Hoover> Right now, '5. Monics, Epis and Zeros'.
18:08:28 <elliott> Phantom_Hoover: Those are monomorphisms and epimorphisms! I know this because Wikipedia says so.
18:08:30 <elliott> *Epics, presumably.
18:08:38 <elliott> What chapter is that in?
18:08:40 <Phantom_Hoover> Nope, it says Epis here.
18:08:45 <elliott> It's not one of the chapters on http://en.wikipedia.org/wiki/Categories_for_the_Working_Mathematician, at least.
18:08:52 <elliott> Phantom_Hoover: Heh, a typo I guess.
18:09:04 <Phantom_Hoover> 1.
18:09:06 -!- Ngevd has joined.
18:09:24 <Phantom_Hoover> ('Mon' is obviously a popular syllable in category theory.)
18:09:36 <elliott> Phantom_Hoover: EXCELLENT THERE IS STILL TIME TO READ MAC LANE TOGETHER (N.B. you would not only lose the will to live but lose everyone else's will to live too somehow.)
18:09:47 <Ngevd> Hello
18:09:58 <Ngevd> Where are we up to?
18:10:10 <elliott> Ngevd: Oh god.
18:10:14 <Phantom_Hoover> Chapter 1, section 5.
18:10:25 <elliott> Phantom_Hoover: *Chapter 0 section 0
18:10:34 <monqy> we can have a mac lane party
18:10:39 <Phantom_Hoover> elliott, you didn't even read the Amazon preview??
18:10:44 <Phantom_Hoover> monqy, friendship mac lane
18:10:49 <elliott> Phantom_Hoover: I read the first few pages? Wait, did you actually BUY it?
18:10:54 <Phantom_Hoover> hahahaha
18:10:54 <Phantom_Hoover> no
18:10:55 <elliott> Oh, pyrated.
18:11:03 <Phantom_Hoover> I resent the implication.
18:11:11 <monqy> im not cool enough for pyracy
18:11:17 <elliott> OK maybe a Mac Lane party wouldn't be such a completely terrible idea?
18:11:19 <Phantom_Hoover> Wait, no, that's a pyrite.
18:11:31 * elliott says this because he has absolutely no chance of getting anything out of it solo. :p
18:11:45 <elliott> BUT only cool people are invited (cool people are Phantom_Hoover and elliott).
18:11:46 <Phantom_Hoover> We can all be objects and when we talk to each other they'll be morphisms
18:11:50 <monqy> i need peer pressure for the mac lanes to sink in
18:11:52 <elliott> (monqy is instead coole)
18:11:58 <Phantom_Hoover> corollary: we're all insane
18:12:15 <Phantom_Hoover> Or Sgeo, I suppose.
18:12:29 <elliott> Sgeo what.
18:12:35 <Ngevd> What is the wolrd coming to?
18:12:39 <monqy> we're all sgeo
18:12:52 <Phantom_Hoover> ALSO: overly fond of Chinese whispers.
18:13:00 <elliott> Phantom_Hoover: I have no idea what you are saying.
18:13:33 <Phantom_Hoover> elliott, obviously we all talk to ourselves, thus we're all really lonely and pathetic, thus Sgeo (sorry Sgeo).
18:13:39 <elliott> Phantom_Hoover: Ah.
18:13:48 <elliott> Where does Chinese whispers come into it.
18:14:12 <Phantom_Hoover> Also, if I talk to you and you talk to monqy, I must talk to monqy, so obviously we talk to each other with Chinese whispers.
18:14:31 <Phantom_Hoover> It doesn't make sense otherwise.
18:16:23 <Ngevd> I still don't know what's going on
18:16:40 <elliott> Ngevd: death.
18:16:55 <Ngevd> Death, the concept, the event, or the personification?
18:17:04 <elliott> Every.
18:17:15 <Phantom_Hoover> Ngevd, death, the category.
18:17:33 <monqy> terribly sorrey but i've lost your will to live
18:17:37 <Phantom_Hoover> (You're an object, if you kill someone it's an arrow.)
18:17:46 <Phantom_Hoover> (Suicide is rife.)
18:17:48 <Ngevd> I'm just going to stare into my working ( :-] ) Haskell program
18:18:06 <monqy> whats a :-]
18:18:12 <Phantom_Hoover> Robot smile.
18:18:20 <monqy> also: stare into??
18:18:24 <Ngevd> Yes
18:18:30 <monqy> does it stare back into you
18:18:33 <Ngevd> No
18:18:38 <Ngevd> I'm not that good a programmer
18:18:58 <monqy> put an eye or two in the comments
18:19:01 <monqy> you can be stare friends
18:19:32 <Ngevd> There's a function called "isElementHaha"
18:20:14 <monqy> put a mouth or two in the comments
18:20:19 <monqy> you can be laugh friends
18:21:13 <Ngevd> Dammit, monqy, now I'm thinking about AI
18:21:17 <Ngevd> Also, dinnertime
18:21:18 <Ngevd> Bye
18:21:19 -!- Ngevd has quit (Quit: Goodbye).
18:32:54 <kallisti> `logs (?:test)
18:32:57 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logs: not found
18:32:58 <kallisti> `log (?:test)
18:33:06 <kallisti> is this PCRE or....?
18:33:20 <HackEgo> 2010-12-13.txt:22:15:12: <impomatic> Anyone fancy thrashing this guy at his own programming contest? http://skybuck.org/BoxifyMe
18:33:39 <kallisti> ah yes
18:37:52 <elliott> no
18:37:54 <elliott> grep -P
18:43:43 <oklopol> weidest smiley ever
18:43:47 -!- Ngevd has joined.
18:43:50 <Ngevd> Hello!
18:43:59 <Ngevd> http://hpaste.org/56263
18:45:03 <Phantom_Hoover> "both :: (a->b) -> (a,a) -> (b,b)
18:45:03 <Phantom_Hoover> "
18:45:19 <elliott> Phantom_Hoover: What of it?
18:45:21 <Phantom_Hoover> Wait, the whitespace there is fine.
18:45:33 <elliott> Well, there should be a space around the (->).
18:45:43 <Phantom_Hoover> I think I have that thing where my sense of scale goes mad
18:45:48 <Ngevd> Compiles fine
18:47:15 <elliott> Phantom_Hoover: wat
18:47:22 <Phantom_Hoover> I'm joking.
18:47:39 <Phantom_Hoover> I thought there were two spaces somewhere.
18:50:06 <Gregor> "kallisti: Sounds RSIish." <-- here is something sitting in my input buffer. I have no idea what it means.
18:51:26 <elliott> Sounds rsish.
18:51:35 <elliott> Gregor: Probably kallisti complaining about his fatigue?
18:51:39 <elliott> Is fatigue the word.
18:52:14 <oklopol> http://skybuck.org/BoxifyMe/ why aren't books written like this
18:53:25 <monqy> good writing
18:53:38 <fizzie> Hey, I recall the BoxifyMe thing from comp.lang.c.
18:54:17 <kallisti> elliott: no complaining about muscle cramps in hands.
18:54:22 <Phantom_Hoover> WebSplat time!
18:54:26 <kallisti> Gregor: you suggested that it may be repetitive strain injury
18:54:33 <Gregor> Oh yeah
18:54:40 <elliott> kallisti: That's what I meant.
18:54:52 <elliott> I already told kallisti it's probably either the beginnings of RSI and carpal tunnel and to consult a doctor :P
18:59:36 <kallisti> elliott: indeed
18:59:45 <kallisti> elliott: what's a good example of a comparison on CReals that doesn't terminate?
19:00:23 <elliott> x == x
19:00:33 <Phantom_Hoover> The loss of Havenworks is one of the great tragedies of our time.
19:00:50 <Phantom_Hoover> What're CReals?
19:00:58 <kallisti> > 2 == 2 :: CReal
19:00:58 <lambdabot> Couldn't match expected type `Data.Number.CReal.CReal'
19:00:59 <lambdabot> against infe...
19:01:03 <kallisti> > 2 == (2 :: CReal)
19:01:03 <lambdabot> True
19:01:05 <elliott> Phantom_Hoover: Computable reals.
19:01:13 <elliott> kallisti: That CReal just compares the first 200 digits or so.
19:01:20 <elliott> It's evil.
19:01:25 <kallisti> gross
19:01:30 <elliott> > pi :: CReal
19:01:31 <lambdabot> 3.1415926535897932384626433832795028841972
19:01:32 <elliott> Same as show.
19:01:48 <elliott> > (pi :: CReal) == (pi :: CReal) + (1/100000000000000)
19:01:49 <lambdabot> False
19:01:52 <elliott> > (pi :: CReal) == (pi :: CReal) + (1/10000000000000000)
19:01:53 <lambdabot> False
19:01:55 <elliott> > (pi :: CReal) == (pi :: CReal) + (1/10000000000000000000000000000000)
19:01:55 <lambdabot> False
19:02:00 <elliott> Okay, maybe it's doing something fancier.
19:02:02 <elliott> But I don't know what.
19:02:07 <Phantom_Hoover> @src pi
19:02:07 <lambdabot> Source not found. Just try something else.
19:02:07 <elliott> Phantom_Hoover: I think someone saved Havenworks.
19:02:19 <elliott> Phantom_Hoover: Class method.
19:02:20 <elliott> @src Floating
19:02:20 <lambdabot> class (Fractional a) => Floating a where
19:02:21 <lambdabot> pi :: a
19:02:21 <lambdabot> exp, log, sqrt, sin, cos, tan :: a -> a
19:02:21 <lambdabot> asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh :: a -> a
19:02:21 <lambdabot> (**), logBase :: a -> a -> a
19:02:26 -!- oklofok has joined.
19:02:34 <Phantom_Hoover> elliott, I know, but I couldn't think of a better place to look.
19:02:56 <elliott> Phantom_Hoover: Ugh; the Wayback Machine won't show Havenworks because the robots.txt request times out.
19:02:56 <fizzie> > (pi :: CReal) == (pi :: CReal) + ((1 :: CReal)/(10**400))
19:02:57 <lambdabot> True
19:03:07 <elliott> ...despite the fact that http://havenworks.com/robots.txt loads...
19:03:30 <elliott> instance Eq CReal where
19:03:30 <elliott> x == y = s' (digitsToBits digits) == 0 where (CR s') = x-y
19:03:41 <elliott> digitsToBits :: Int -> Int
19:03:41 <elliott> digitsToBits d = ceiling (fromIntegral d * (logBase 2.0 10.0 :: Double)) + 4
19:03:54 <elliott> digits :: Int
19:03:54 <elliott> digits = 40
19:03:55 <Sgeo> Havenworks... is that the site with Computer Stupidities?
19:04:08 <Sgeo> No, it's not.
19:04:13 <fizzie> That's Rinkworks.
19:05:02 -!- oklopol has quit (Ping timeout: 255 seconds).
19:05:41 <elliott> Disturbed that fizzie knows this.
19:06:23 <Sgeo> How is that disturbing?
19:06:35 <kallisti> @hoogle var
19:06:35 <lambdabot> Language.Haskell.TH.Syntax VarE :: Name -> Exp
19:06:36 <lambdabot> Language.Haskell.TH VarE :: Name -> Exp
19:06:36 <lambdabot> Language.Haskell.TH.Lib varE :: Name -> ExpQ
19:07:39 <fizzie> It's an old(ish) site, I think.
19:07:50 <fizzie> I've used their Fantasy Name Generator for my Diablo II characters. :p
19:16:35 <kallisti> why does Complex a require a to be a RealFloat in order for it to be considered a Num.
19:16:55 -!- anders has joined.
19:18:54 <elliott> `welcome anders
19:18:59 <HackEgo> anders: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
19:20:29 <kallisti> > sqrt 50
19:20:30 <lambdabot> 7.0710678118654755
19:20:32 <kallisti> ah I see
19:20:36 <kallisti> I forgot num includes abs
19:21:01 <kallisti> which requires sqrt for complex numbers.
19:22:04 <fizzie> > signum (2 :+ 2)
19:22:05 <lambdabot> 0.7071067811865475 :+ 0.7071067811865475
19:22:07 <fizzie> Hokay.
19:22:19 <elliott> fizzie: It's sort of positive!
19:23:12 <fizzie> elliott: It's sqrt(2) positive and sqrt(2) ordered; see, there's the positive/negative line of signitude, and the order/chaos line too.
19:23:38 <kallisti> oh wait everything requires real number stuff
19:24:03 <kallisti> multiplication and division uses cosine.
19:24:15 <kallisti> and sine
19:25:22 <fizzie> Huh? (a+bi)*(c+di) = (ac-bd) + (bc+ad)i.
19:34:21 <oklofok> fizzie: kallisti is a polar bear so obvious he won't use that representation.
19:35:56 -!- Zwaarddijk has changed nick to Systemzwang.
19:36:17 <fizzie> oklofok: While I, being such a square, obvious do.
19:38:26 <oklofok> i guess you could say these are complex issues XDXDXD
19:40:32 <kallisti> fizzie: polar form is just cartesian stuff with more trig.
19:40:36 * kallisti mathematician
19:40:55 <kallisti> it's an abstraction over sine and cosine.
19:40:57 <kallisti> so..
19:41:00 <kallisti> yeah
19:41:17 <oklofok> okay you win
19:41:31 <oklofok> fizzie: are you in turku, wanna have a beer?
19:42:21 <fizzie> I don't beer :( :/ :\ and I don't Turku either. :( :/ :\
19:43:10 <fizzie> The first is a big social problem; we had a "let's have everyone bring here a poster" event the other day, and it was merged with a beer tastery thing.
19:43:17 <Phantom_Hoover> I don't touch that Turku stuff.
19:43:19 <fizzie> Not being in Turku hasn't been a big problem so far.
19:43:37 <kallisti> `fetch http://sprunge.us/iKNC
19:43:40 <HackEgo> 2012-01-08 19:43:40 URL:http://sprunge.us/iKNC [395] -> "iKNC" [1]
19:43:57 <Phantom_Hoover> fizzie, but what about all the friends you could have in Turku?
19:44:01 <kallisti> `run ghc -O2 -o bin/searchlog iKNC
19:44:08 <HackEgo> target `iKNC' is not a module name or a source file
19:44:29 <kallisti> `run mv iKNC searchlog.hs; ghc -O2 -o bin/searchlog searchlog.hs; chmod +x bin/searchlog
19:44:45 <kallisti> >_>
19:44:46 <elliott> kallisti: that thing is useless
19:44:49 <HackEgo> ​[1 of 1] Compiling Main ( searchlog.hs, searchlog.o ) \ Linking bin/searchlog ...
19:44:55 <kallisti> elliott: it is?
19:45:08 <kallisti> well, it could be. I haven't tested it yet.
19:45:21 <elliott> Also, it's broken.
19:45:39 <kallisti> > permutations ["some", "words"]
19:45:43 <lambdabot> [["some","words"],["words","some"]]
19:45:55 <kallisti> elliott: it is?
19:46:00 <elliott> Yes.
19:46:03 <kallisti> oh indeed.
19:46:06 <kallisti> one sec
19:47:51 <kallisti> `fetch http://sprunge.us/REKU
19:47:53 <HackEgo> 2012-01-08 19:47:53 URL:http://sprunge.us/REKU [441] -> "REKU" [1]
19:48:07 <kallisti> `run mv REKU searchlog.hs; ghc -O2 -o bin/searchlog searchlog.hs; chmod +x bin/searchlog
19:48:12 <HackEgo> No output.
19:48:32 <kallisti> `searchlog elliott dicks
19:48:40 <monqy> :0
19:48:53 <kallisti> elliott: how is it broken? I doubt we saw the same brokenness
19:49:05 <HackEgo> No output.
19:49:21 <kallisti> oh I see...
19:49:39 <kallisti> it also doesn't pipe stdout correctly
19:49:43 <monqy> :t join . map words
19:49:43 <lambdabot> [String] -> [String]
19:49:51 <monqy> :t concatMap words
19:49:52 <lambdabot> [String] -> [String]
19:50:07 <Phantom_Hoover> Does looking fondly upon m4 make me a deviant?
19:50:18 <pikhq> Phantom_Hoover: Only slightly.
19:50:18 <elliott> kallisti:
19:50:22 <monqy> I don't know enough about m4 to answer
19:50:22 <elliott> createProcess (proc "/hackenv/bin/log" [r])
19:50:26 <elliott> Phantom_Hoover: I love m4.
19:50:34 <Phantom_Hoover> It's the best!
19:50:40 <kallisti> elliott: yeah this is my first time using System.Process.
19:50:40 <pikhq> monqy: Autotools has M4 as one of the major implementation languages.
19:51:01 <monqy> I now know enough about m4 to answer
19:51:08 <pikhq> :)
19:51:11 <kallisti> ah wait proc uses Inherit
19:51:29 <kallisti> so that should be fine.
19:51:37 <Phantom_Hoover> monqy, listen not to pikhq, he knows not the awesome of m4.
19:51:53 <monqy> I guess I'll
19:51:53 <monqy> learn
19:51:54 <monqy> m4
19:52:07 <monqy> or
19:52:11 <monqy> stare at it a bit and get bored
19:52:16 <kallisti> `which log
19:52:20 <HackEgo> ​/hackenv/bin/log
19:52:46 <kallisti> elliott: I can't spot the wrongness.
19:52:48 <elliott> Phantom_Hoover: The best part about m4 is that it has a command to redefine the core lexical syntax.
19:52:55 <elliott> kallisti: You spawn a process and immediately terminate.
19:53:06 <Phantom_Hoover> I remember a lot of that kind of thing.
19:53:08 <kallisti> ah
19:53:33 <elliott> Phantom_Hoover: http://www.gnu.org/software/m4/manual/m4.html#Changeword
19:53:34 <kallisti> ah wait I should be using... rawSystem I think?
19:53:43 <elliott> kallisti: No.
19:53:45 <elliott> You should be waiting for the process
19:53:55 <kallisti> does rawSystem not do that? I guess not.
19:54:00 <elliott> I think it's deprecated.
19:54:02 <Phantom_Hoover> elliott, sure that's not just a GNU extension?
19:54:17 <elliott> Phantom_Hoover: I think it is, but who cares?
19:54:43 <kallisti> elliott: sorry perl
19:54:54 <Phantom_Hoover> changequote is there by default, I think.
19:55:35 <elliott> kallisti: What?
19:56:17 <monqy> a perl which is sorry
19:56:23 <monqy> a sorry perl
19:56:41 <kallisti> elliott: well I guess perl would do the same thing if I specified that I want a process in the equivalent way...
19:56:51 <kallisti> since they're... equivalent
19:57:17 <kallisti> but that's not really meant. I meat that from programming in perl I expect things I shouldn't when doing things in other languages. basically.
19:57:21 <kallisti> +what I
19:57:28 <elliott> Just think of it like subprocess.
19:57:33 <kallisti> yes
19:57:43 <kallisti> there's no confusion on what it means. now.
19:58:03 <kallisti> monqy will enjoy this:
19:58:07 <kallisti> `fetch http://sprunge.us/WBad
19:58:09 <HackEgo> 2012-01-08 19:58:09 URL:http://sprunge.us/WBad [510] -> "WBad" [1]
19:58:23 <monqy> hi
19:58:26 <monqy> wbad
19:58:32 <kallisti> `run mv WBad searchlog.hs; ghc -O2 -o bin/searchlog searchlog.hs; chmod +x bin/searchlog
19:58:47 <HackEgo> Linking bin/searchlog ...
19:58:48 <monqy> is it an omen
19:58:54 <kallisti> `searchlog elliott penis #hurr hurr
19:59:11 <elliott> `searchlog poop fart
19:59:20 <monqy> `searchlog `searchlog
19:59:22 <kallisti> elliott: but is the regex building logic accurate?
19:59:27 <kallisti> I think it is but I'm not sure.
19:59:27 <HackEgo> No output.
19:59:31 <kallisti> oopse
19:59:37 <elliott> "congrates"
19:59:41 <HackEgo> 2012-01-08.txt:19:59:20: <monqy> `searchlog `searchlog
19:59:41 <HackEgo> 2012-01-08.txt:19:59:11: <elliott> `searchlog poop fart
19:59:42 <monqy> "wbad"
19:59:47 <monqy> oh no,,,
19:59:51 <elliott> kallisti: maybe try not search for comment
19:59:54 <elliott> `searchlog poop fart butt
19:59:55 <kallisti> indeed
20:00:00 <olsner> `searchlog poop
20:00:03 <monqy> it got the order scrombled
20:00:14 <kallisti> anyway you can use (...|...|...) for or, and then spaces provides and
20:00:15 <HackEgo> 2012-01-08.txt:19:59:54: <elliott> `searchlog poop fart butt
20:00:15 <HackEgo> 2011-05-01.txt:20:58:53: <EgoBot> poop CH
20:00:19 <kallisti> assuming it works.
20:00:56 <elliott> `searchlog kallisti moron
20:01:03 <HackEgo> 2011-12-17.txt:01:58:51: <elliott> kallisti: concatMap is recursive, you moron
20:01:16 <kallisti> elliott: see? totally useful.
20:01:22 <elliott> Yes.
20:01:30 <monqy> `searchlog kallisti moron
20:01:37 <HackEgo> 2012-01-08.txt:20:00:56: <elliott> `searchlog kallisti moron
20:01:39 <kallisti> I guess if you want actual spaces you can use \s instead
20:01:39 <monqy> this is exciting
20:01:43 <elliott> `searchlog CakeProphet moron
20:01:50 <HackEgo> 2012-01-08.txt:20:01:43: <elliott> `searchlog CakeProphet moron
20:01:59 <monqy> tool of the year
20:01:59 <kallisti> monqy: yes so exciting
20:02:13 <elliott> `searchlog kallisti nominated tool of the year
20:02:17 <kallisti> but uh, does it actually work correctly?
20:02:21 <kallisti> this is the thing that I want to know.
20:02:43 <kallisti> `searchlog moron kallisti
20:02:46 <HackEgo> No output.
20:02:51 <HackEgo> 2012-01-08.txt:20:00:56: <elliott> `searchlog kallisti moron
20:02:55 <kallisti> appears to.
20:03:58 -!- Ngevd has quit (Ping timeout: 276 seconds).
20:04:08 <fizzie> `searchlog a b c d e f g h i j k l m combinatiorial explosion?
20:04:14 <kallisti> fizzie: nooooooooo
20:04:17 <monqy> `searchlog hi
20:04:34 <kallisti> fizzie: so many permutations...
20:04:45 <HackEgo> No output.
20:04:47 <monqy> `searchlog )
20:04:53 <HackEgo> grep: unmatched parentheses
20:04:54 <HackEgo> No output.
20:04:55 <kallisti> monqy: noooooooo
20:05:07 <kallisti> continue thinking of the terms as regexes.
20:05:13 <monqy> `searchlog (
20:05:14 <kallisti> because they are.
20:05:16 <HackEgo> grep: missing )
20:05:27 <monqy> grep excitement
20:05:33 <fizzie> I gotteded a "killed" when I tried the explosion in private, I was hoping for that now too. :/
20:05:45 <elliott> fizzie: *a b c d e f g h i j k l m n big-O notation
20:06:00 <kallisti> > permutations . words $ "a b c d e f g h i j k l m combinatorial explosion?"
20:06:01 <lambdabot> [["a","b","c","d","e","f","g","h","i","j","k","l","m","combinatorial","expl...
20:06:12 <kallisti> well that part was reasonably fast actually.
20:06:22 <elliott> ...
20:06:26 <elliott> because you only evaluated the first element
20:06:31 <kallisti> oh, yes.
20:06:43 <kallisti> yes, Haskell. right.
20:06:44 <monqy> `searchlog thanks kallisti
20:07:03 <HackEgo> 2011-12-15.txt:18:36:22: <kallisti> thanks to emacs.
20:07:10 <kallisti> elliott: is this another +1 towards "kallisti's bad algorithms"
20:07:13 <monqy> tool of the yesteryear
20:07:36 <monqy> you could write a book
20:07:42 <Phantom_Hoover> `searchlogs thallisti
20:07:46 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: searchlogs: not found
20:08:02 <fizzie> > length . permutations . words $ "a b c d e f g h i j k l m combinatorial explosion?"
20:08:06 <lambdabot> mueval-core: Time limit exceeded
20:08:10 <fizzie> Bah, it's just 1307674368000 permutations.
20:08:19 <fizzie> That's one big quitter-bot.
20:08:37 <monqy> `searchlogs core mueval exceeded limit time
20:08:40 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: searchlogs: not found
20:09:15 <kallisti> hmmm I wonder if it would be faster if I switched out the "|" and ".*"
20:10:08 <monqy> who will write the wrapper over searchlog
20:10:15 <monqy> and what will it do
20:10:19 <monqy> 2012 mysteries
20:10:34 <kallisti> monqy: ...I guess I could just use grep directly...
20:10:54 <kallisti> but why do that?
20:10:56 <monqy> nih grep
20:10:58 <kallisti> when there's already logs
20:12:00 <kallisti> guys I bet this is the same algorithm Google uses.
20:12:26 <kallisti> they should hire me so I can make the big $$$
20:12:39 <kallisti> `fetch http://sprunge.us/EEVG
20:12:39 <fizzie> grep (a.*b.*c)|(a.*c.*b)|(b.*a.*c)|(b.*c.*a)|(c.*a.*b)|(c.*b.*a) \approx grep a | grep b | grep c.
20:12:42 <HackEgo> 2012-01-08 20:12:41 URL:http://sprunge.us/EEVG [510] -> "EEVG" [1]
20:13:19 <kallisti> `run mv EEVG searchlog.hs; ghc -O2 -o bin/searchlog searchlog.hs; chmod +x bin/searchlog
20:13:27 <HackEgo> No output.
20:13:30 <elliott> kallisti: By the way, searchlog always gets exactly one (1) log.
20:13:37 <elliott> Oh, you map words it.
20:13:40 <elliott> Why not concatMap words?
20:13:46 <kallisti> elliott: lazy
20:13:49 <kallisti> I already wrote it
20:13:52 <kallisti> didn't consider using that
20:14:00 <kallisti> now it's SET IN STONE
20:15:05 <kallisti> `searchlog mueval time limit
20:15:18 <HackEgo> 2011-02-03.txt:08:07:29: <lambdabot> mueval-core: Time limit exceeded
20:15:26 <kallisti> elliott: what do you mean.
20:15:50 <elliott> What?
20:15:53 <kallisti> `run paste `which log`
20:15:57 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.2434
20:16:12 <kallisti> elliott: why does it always get exactly one log.
20:16:13 -!- oerjan has joined.
20:16:58 <elliott> `Uh?
20:17:01 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: Uh?: not found
20:17:02 <elliott> Because that's how it works.
20:17:12 <elliott> I don't know what you mean.
20:17:16 <oerjan> `? Uh?
20:17:19 <kallisti> oh, you mean like that. why is that important? that's obvious.
20:17:20 <HackEgo> Uh?? ¯\(°_o)/¯
20:17:55 <elliott> kallisti: I don't understand what you mean.
20:18:15 <kallisti> oh you neverminded that.
20:18:21 <kallisti> I promise I actually read this channel
20:18:28 <kallisti> (with psychic powers)
20:18:34 <kallisti> maybe my psychic is a little rusty.
20:18:45 <fizzie> `? ¯\(o_°)/¯
20:18:48 <HackEgo> ​¯\(o_°)/¯? ¯\(°_o)/¯
20:18:50 <oerjan> psychic grammar is all weird with quantum
20:20:12 <kallisti> elliott: at first I thought you meant what you actually meant. Then I thought you meant the obvious statement that searchlog grabs one log entry, just as log was. Then I read the nevermind and it all made sense.
20:20:25 <oerjan> you cannot observe the subject and object simultaneously
20:20:53 <elliott> Oh.
20:20:55 <elliott> <elliott> kallisti: By the way, searchlog always gets exactly one (1) log.
20:20:57 <elliott> s/log/search term/
20:21:08 <kallisti> ah okay.
20:21:11 <kallisti> yes.
20:21:22 <kallisti> (but no, as past elliott discovers)
20:21:48 <oerjan> `ls bin/searchlog
20:21:52 <HackEgo> bin/searchlog
20:21:58 <monqy> searchlog should parallel for the future.
20:22:01 <oerjan> `cat bin/searchlog
20:22:03 <monqy> also it should make goofy words.
20:22:04 <HackEgo> ​ELF...
20:22:06 <oerjan> eek
20:22:11 <kallisti> monqy: oh, parallel, that's a good idea actually.
20:22:16 <kallisti> I think?
20:22:22 <kallisti> maybe that's slower than doing one traversal?
20:22:22 <elliott> Not at HackEgo speeds.
20:22:29 <elliott> Also, not for IO-bound tasks, duh.
20:22:36 <kallisti> oh, right.
20:22:37 <oerjan> `cat bin/log
20:22:39 <elliott> oerjan: cat searchlog.hs
20:22:40 <HackEgo> ​#!/bin/sh \ cd /var/irclogs/_esoteric \ if [ "$1" ]; then \ grep -P -i -- "$1" ????-??-??.txt | shuf -n 1 \ else \ file=$(shuf -en 1 ????-??-??.txt) \ echo "$file:$(shuf -n 1 $file)" \ fi \
20:22:45 <monqy> parallel io
20:22:49 <oerjan> `cat searchlog.hs
20:22:52 <monqy> "double the fun"
20:22:53 <HackEgo> import System.Environment \ import System.Process \ import System.Exit \ import Control.Monad \ import Control.Applicative \ import Data.List \ \ main = do \ r <- buildRegex . permuteArgs <$> getArgs \ (_, _, _, h) <- createProcess (proc "/hackenv/bin/log" [r]) \ exitWith <$> waitForProcess h \ where \ permuteArgs = permutations . join . map words \ buildRegex = oBrackets . intercalate ".*"
20:24:02 <oerjan> wait searchlog calls log?
20:24:08 <kallisti> yes
20:24:23 <kallisti> it builds a regex from the permutations of the search terms, and then passes that to log because I'm lazy.
20:24:24 <monqy> but who calls searchlog
20:24:28 <elliott> who watches...
20:24:29 <elliott> the searcmen
20:24:32 <elliott> searchmen
20:24:47 <kallisti> elliott: shouldn't that be "who searches the searchmen"?
20:25:36 <monqy> searchlog efficiency of the year
20:25:42 <kallisti> `searchlog (elliott|Gregor) :P
20:25:54 <HackEgo> 2011-08-16.txt:12:52:57: <elliott_> (Though not many. :p)
20:26:05 <elliott> kallisti: dude it's
20:26:05 <elliott> dude
20:26:13 <monqy> if only I had the creativity to think of search terms, then I could do all the searches
20:26:15 <kallisti> yes dude is dude.
20:26:18 <elliott> if you think it should be that then you are totally not getting this whole
20:26:18 <elliott> thing
20:26:29 <kallisti> elliott: woah man. maybe you're right
20:26:32 <kallisti> maybe I don't get the thing.
20:26:33 <kallisti> what is the thing?
20:26:34 <elliott> `searchlog beeswax endomorphism excursion
20:26:44 <HackEgo> 2012-01-08.txt:20:26:34: <elliott> `searchlog beeswax endomorphism excursion
20:26:48 <elliott> `searchlog poop poop poop poop poop poop poop ... poop
20:26:58 <kallisti> monqy: what would be a more efficient way to do that... aside from "manually"
20:27:06 <HackEgo> Killed
20:27:28 <monqy> slaves
20:28:02 <monqy> slaves with grep
20:28:19 <kallisti> I'm pretty swapping the | and .* made it faster but I really have no way to know that without understanding how regex is compiled.
20:28:23 <kallisti> *pretty sure
20:29:03 <kallisti> (a|b|c).*(b|c|a).* ... seems... simpler to execute
20:29:17 <elliott> it would probably be faster if log didn't use -P
20:29:18 <monqy> uuh waht
20:29:37 <kallisti> elliott: but then I wouldn't have perl regex
20:29:40 <kallisti> :(
20:30:50 <monqy> what's the point of building (a|b|c).*(b|c|a).* ...
20:31:27 <kallisti> as opposed to?
20:32:02 <oerjan> that would seem to give also results like a.*a.* ... ?
20:32:18 <monqy> ((a|b|c).*)+, or even better (a|b|c).*, or even better, (a|b|c)
20:32:53 <monqy> maybe I'm not getting the magical perl regex magic
20:32:54 <oerjan> i.e. no guarantee there is any b or c in it...
20:32:59 <monqy> what are those funky things
20:33:17 <monqy> yeah there's no guarantee and all of the permuatations are identical
20:33:19 <kallisti> oerjan: oh right.
20:33:29 <monqy> etc etc
20:34:15 <kallisti> monqy: the purpose is to do an and search instead of or search
20:34:29 <elliott> yes but it doesn't
20:34:32 <monqy> well you did it wrong :(
20:34:33 <monqy> yes
20:34:52 <kallisti> yes with the swapped version
20:34:55 <kallisti> the other one works correctly
20:35:31 <kallisti> `fetch http://sprunge.us/ZLCT
20:35:35 <HackEgo> 2012-01-08 20:35:35 URL:http://sprunge.us/ZLCT [510] -> "ZLCT" [1]
20:35:41 <monqy> not as cool as wbad
20:35:51 <kallisti> `run mv ZLCT searchlog.hs; ghc -O2 -o bin/searchlog searchlog.hs; chmod +x bin/searchlog
20:36:00 <HackEgo> No output.
20:36:12 <kallisti> I forgot the case where it could be a.*a.*a and such
20:37:26 <monqy> `searchlog useful again
20:37:49 <HackEgo> 2008-03-29.txt:20:06:49: <Deewiant> W ('television antenna') pops a vector off the stack, then a value. If the cell at that vector (plus the storage offset) in Funge-Space (a la g) is equal to that value, nothing happens. If the cell in space is less than the value, it pushes the value and the vector (inverted) back onto the stack, and backs up the IP (subtracts the IP's delta from it's position, sort of a 'wait to
20:38:03 <monqy> success
20:38:09 <elliott> does it say
20:38:09 <elliott> useful
20:38:30 <monqy> its a mystery
20:38:57 -!- oerjan has set topic: Official revolting channel of the inverse femtobarn stupid topic change CP violation, the original Trilogy: A new PHP | http://codu.org/logs/_esoteric/.
20:39:17 <kallisti> I don't see a useful
20:39:26 <kallisti> perhaps it gets cut off?
20:39:48 <kallisti> `searchlog mueval limit core
20:40:00 <HackEgo> 2011-08-07.txt:06:40:12: <lambdabot> mueval-core: Time limit exceeded
20:40:02 <monqy> i don't see an again either so i'll look and see what the rest was
20:40:17 <elliott> oerjan: good topic
20:40:34 <monqy> try again' condition, useful mainly in Concurrent Funge.) If the cell in s
20:40:40 <monqy> has both again and useful!!! success!!!
20:40:52 * elliott is currently 192.322581 times better than kallisti.
20:40:58 <oerjan> elliott: thx
20:43:40 <kallisti> elliott: what's the name for that style of C variable naming where you append file names and data structure names to things?
20:44:11 <elliott> what
20:44:20 <kallisti> like....
20:44:27 <kallisti> CPython_PyObject_blah_blah
20:44:40 <kallisti> basically making up for a lack of namespaces by hardcoded them into variable names.
20:45:09 <kallisti> it has a name.
20:45:40 <kallisti> Hungarian notation
20:45:45 <fizzie> That's not it.
20:46:10 <elliott> kallisti: that's not appending.
20:48:31 <fizzie> Hungarian notation is responsible for the hInstance lpClassName dwStyle -like Windows API parameter/structure-member names.
20:49:11 <kallisti> oh
20:49:14 <kallisti> nevermind
20:50:33 <elliott> fizzie: Systems Hungarian, rather. :p
20:50:44 <elliott> Not that Apps is any better.
20:52:34 <shachaf> <Sgeo> Forcing myself to use a fold on a tricky thing makes me understand it better, I think
20:52:37 <shachaf> Sgeo: Have you considered using a fold... ON FOLDS THEMSELVES?
20:53:36 <elliott> shachaf: Can you implement foldr as a foldr???
20:54:01 <elliott> foldr f z = foldr (\a r -> f a (r ())) (\() -> z)
20:54:13 <shachaf> elliott: Whoa, man. That is, like, so meta.
20:54:17 <fizzie> Using a fold ON FOLDS THEMSELVES => http://www.mspaintadventures.com/?s=4&p=000944
20:55:06 <shachaf> fizzie: I don't get it.
20:55:16 <shachaf> Probably because it's that awful comic.
20:55:50 <elliott> It's not that awful comic, actually.
20:55:59 <elliott> It's the other awful comic.
20:56:14 * elliott helpful.
20:56:21 <monqy> the other awful comic that isn't either of those other two awful comics
20:56:22 <shachaf> Oh.
20:56:29 <shachaf> That's that awful comic, then?
20:56:29 <monqy> keep it straight
20:56:44 <elliott> shachaf: No! It's the other awful comic.
20:56:50 <shachaf> monqy: Dude, don't be, like, so intolerant, man.
20:56:54 <shachaf> elliott: s/That's/What's/
20:57:15 <elliott> shachaf: The comic you're thinking of is the one at mspaintadventures.com, but the one fizzie linked is the one at mspaintadventures.com.
20:57:17 <monqy> how can i tolerate awful comics being other awful comics
20:57:22 <monqy> how is that tolerable
20:57:22 <monqy> how
20:57:46 <elliott> monqy: keep it straight
20:57:53 <oerjan> nothing is tolerable, really
20:58:11 <monqy> elliott: did i oops a word
20:58:14 <monqy> :(
20:58:21 <elliott> everyone oopsedes a word
20:58:21 <elliott> sometimes
20:58:29 <monqy> sorry to any awful webcomics i may have offended
20:58:30 <elliott> oerjan: not true i'm sitting right here tolerating
20:58:31 <fizzie> oerjan: 0 is well within the tolerances.
20:58:33 <monqy> its ok
20:58:33 <elliott> monqy: station v3
20:58:38 <elliott> is it really
20:58:38 <elliott> ok
20:58:39 <elliott> for station v3
20:58:42 <elliott> is anything really
20:58:43 <elliott> ok
20:58:44 <elliott> for station v3
20:59:09 <oerjan> elliott: aum
21:00:52 <monqy> a special shame set aside for station v3
21:01:10 <monqy> station v3 shame
21:01:48 <elliott> shame station v3
21:06:43 <oerjan> > fix$('0':).tail.(<**>[id,chr.xor 1.ord])
21:06:45 <lambdabot> "01101001100101101001011001101001100101100110100101101001100101101001011001...
21:08:09 <shachaf> I don't like how you can't tell what the Applicative combinators do from their types.
21:08:43 <shachaf> @ty (<*>)
21:08:44 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f (a -> b) -> f a -> f b
21:08:45 <shachaf> @ty (<**>)
21:08:46 <elliott> "Programmers are limited by the hardware. Computers work by repeating certain steps over and over again. They can only follow certain instructions. With the sheer randomness of crumpled paper, there really is no way to come up with an algorithm that accounts for every crease, nook, and cranny. You could painstakingly program something that would evaluate a single unique piece of paper, but there's no way to make a general method."
21:08:46 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f (a -> b) -> f b
21:08:48 <oerjan> ...most of them do their actions left to right, no?
21:08:56 <shachaf> But is (<**>) = flip (<*>)? No!
21:09:00 <elliott> oerjan: *all
21:09:08 <shachaf> Right, but so what?
21:09:17 <Vorpal> elliott, is this for OCR or something?
21:09:23 <elliott> shachaf: Consistent rule and the rest is left up to types? Gosh, how awful.
21:09:25 <Vorpal> elliott, and it doesn't make any sense
21:09:26 <shachaf> Anyway, left-to-right is racist.
21:09:30 <elliott> Vorpal: no, it's about crumpled paper, and that's why i quoted it
21:09:44 <Vorpal> elliott, what does crumpled paper have to do with computers?
21:10:03 <fizzie> Vorpal: They (computers) can't get over it (crumpled paper).
21:10:12 <fizzie> Vorpal: Or so I read it.
21:10:14 <Vorpal> fizzie, ah okay. Right
21:10:29 <oerjan> shachaf: no, racist is the pun i briefly considered responding to that with
21:10:30 <fizzie> It's just that they can't. Want to break a computer? Crumpled paper.
21:11:08 <oerjan> also, is there a shorter way to write chr.xor 1.ord
21:11:20 <elliott> erm...
21:11:23 <shachaf> instance Num Char
21:11:23 <elliott> what are you doing :P
21:11:25 <shachaf> xor 1
21:11:28 <shachaf> @ty xor
21:11:29 <lambdabot> forall a. (Bits a) => a -> a -> a
21:11:30 <monqy> I made a list (good = unsafeCoerce good : good) then regretted it
21:11:33 <shachaf> s/Num/Bits/
21:11:38 <elliott> monqy: that's
21:11:40 <elliott> what is that
21:11:44 <monqy> good
21:11:48 <oerjan> :t xor.chr
21:11:49 <lambdabot> No instance for (Bits Char)
21:11:49 <lambdabot> arising from a use of `xor' at <interactive>:1:0-2
21:11:49 <lambdabot> Possible fix: add an instance declaration for (Bits Char)
21:12:06 <elliott> Prelude Unsafe.Coerce> let good = unsafeCoerce good : good :: [[[[()]]]]
21:12:06 <elliott> Prelude Unsafe.Coerce> take 10 good
21:12:06 <elliott> [[[[(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),()
21:12:06 <elliott> ,(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),()
21:12:10 <elliott> ,(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),()
21:12:11 <shachaf> No, there's no such instance.
21:12:15 <elliott> ,(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),()
21:12:20 <elliott> ,(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),
21:12:23 <elliott> monqy: good
21:12:25 <elliott> oerjan: are you playing anagolf :P
21:12:26 <shachaf> elliott: Maybe in another couple of lines we'll understand.
21:12:31 <shachaf> Why did you stop pasting?!
21:12:38 <elliott> shachaf: Because I don't want you to understand.
21:13:10 <shachaf> :-(
21:13:25 <oerjan> elliott: just golfing some frequent one-liners a bit differently
21:13:41 <elliott> shachaf: I wrote over 10 paragraphs about monads without a single analogy!
21:13:44 <elliott> Do I get a medal?
21:14:27 <shachaf> elliott: I think you get kicked out of #haskell for life.
21:14:42 <shachaf> Which is even better than a medal, as far as quality-of-life goes.
21:14:53 <shachaf> What were you writing about monads?
21:15:23 <oerjan> > show<=<fix$(0:).tail.(<**>[id,(1-)])
21:15:25 <lambdabot> "01101001100101101001011001101001100101100110100101101001100101101001011001...
21:15:27 <elliott> shachaf: http://stackoverflow.com/questions/8777216/how-do-you-identify-monadic-design-patterns
21:15:34 <elliott> shachaf: The worst-titled question ever.
21:15:38 <fizzie> oerjan: (range ((minBound :: Char),(maxBound :: Char)) !!) . xor 1 . index ((minBound :: Char),(maxBound :: Char)) OH WAIT you said *shorter*.
21:15:58 <elliott> You don't need those ::Chars.
21:16:02 * oerjan swats fizzie -----###
21:16:04 <shachaf> elliott: That URL doesn't make me want to click on it.
21:16:07 <elliott> @src Ix
21:16:08 <lambdabot> class (Ord a) => Ix a where
21:16:08 <lambdabot> range :: (a,a) -> [a]
21:16:08 <lambdabot> index :: (a,a) -> a -> Int
21:16:08 <lambdabot> inRange :: (a,a) -> a -> Bool
21:16:08 <lambdabot> rangeSize :: (a,a) -> Int
21:16:19 <elliott> fizzie: How does (range x !!) differ from index x.
21:16:24 <elliott> shachaf: It's not that bad.
21:16:41 <oerjan> it got shorter by using integers and show<=<, anyhow
21:16:58 <elliott> oerjan: pretty
21:17:06 <elliott> > show<=<fix$(0:).(<**>[id,(1-)])
21:17:08 <lambdabot> "00101100110100101101001100101100110100110010110100101100110100101101001100...
21:17:16 <elliott> hmph
21:17:22 <shachaf> What's this supposed to be?
21:17:24 <elliott> there must be some way to eliminate that...
21:17:39 <shachaf> I would read the source that generates it but I don't feel like it.
21:17:46 <shachaf> Too long.
21:17:53 <oerjan> shachaf: thue-morse sequence
21:18:05 <elliott> oerjan: How about look-and-say?
21:18:27 <fizzie> elliott: Isn't it the other way around? I mean,
21:18:28 <fizzie> @ty ((range ('a','b') !!), index ('a','b'))
21:18:29 <lambdabot> (Int -> Char, Char -> Int)
21:18:34 <shachaf> Oh, that.
21:18:57 <elliott> fizzie: Oh, yes.
21:19:31 <elliott> > group "112333"
21:19:32 <lambdabot> ["11","2","333"]
21:19:35 <oerjan> elliott: i dabbled with that yesterday and didn't get satisfied
21:19:47 <elliott> @hoogle (a -> b) -> a -> (a,b)
21:19:48 <lambdabot> Control.Monad.Writer.Class listens :: MonadWriter w m => (w -> b) -> m a -> m (a, b)
21:19:48 <lambdabot> Control.Monad.Writer.Lazy listens :: MonadWriter w m => (w -> b) -> m a -> m (a, b)
21:19:48 <lambdabot> Control.Monad.Writer.Strict listens :: MonadWriter w m => (w -> b) -> m a -> m (a, b)
21:19:53 <elliott> :t groupBy
21:19:54 <lambdabot> forall a. (a -> a -> Bool) -> [a] -> [[a]]
21:19:58 <elliott> > group "112333"
21:19:59 <lambdabot> ["11","2","333"]
21:20:06 <elliott> > (length &&& head) group "112333"
21:20:07 <lambdabot> Couldn't match expected type `t1 -> t'
21:20:07 <lambdabot> against inferred type `(GHC....
21:20:08 <elliott> > (length &&& head) $ group "112333"
21:20:08 <lambdabot> (3,"11")
21:20:13 <elliott> wtf
21:20:13 <elliott> oh
21:20:17 <elliott> > (length &&& head) <$> group "112333"
21:20:18 <lambdabot> [(2,'1'),(1,'2'),(3,'3')]
21:20:38 <elliott> > (\xs -> show (length x) ++ head x) <$> group "112333"
21:20:39 <lambdabot> Couldn't match expected type `[a]'
21:20:39 <lambdabot> against inferred type `SimpleRef...
21:20:44 <elliott> > (\xs -> show (length x) ++ [head x]) <$> group "112333"
21:20:44 <lambdabot> Couldn't match expected type `[a]'
21:20:45 <lambdabot> against inferred type `SimpleRef...
21:20:46 <elliott> wtf
21:20:47 <elliott> oh
21:20:50 <elliott> > (\x -> show (length x) ++ [head x]) <$> group "112333"
21:20:51 <lambdabot> ["21","12","33"]
21:21:10 <elliott> > liftA2 (++) (show . length) head <$> group "112333"
21:21:11 <lambdabot> Couldn't match expected type `[GHC.Types.Char]'
21:21:11 <lambdabot> against inferred ty...
21:21:21 <elliott> > liftA2 (++) (show . length) (take 1) <$> group "112333"
21:21:22 <lambdabot> ["21","12","33"]
21:21:46 <elliott> > concatMap((++)<$>show.length<*>take 1).group$"112333"
21:21:48 <lambdabot> "211233"
21:21:50 <elliott> > join.map((++)<$>show.length<*>take 1).group$"112333"
21:21:52 <lambdabot> "211233"
21:22:04 <elliott> > iterate$join.map((++)<$>show.length<*>take 1).group
21:22:05 <lambdabot> Overlapping instances for GHC.Show.Show
21:22:05 <lambdabot> ([GHC....
21:22:06 <elliott> :t iterate$join.map((++)<$>show.length<*>take 1).group
21:22:07 <lambdabot> [Char] -> [[Char]]
21:22:17 <elliott> > (iterate$join.map((++)<$>show.length<*>take 1).group)"1"
21:22:19 <lambdabot> ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113...
21:22:27 <elliott> > (join.iterate$join.map((++)<$>show.length<*>take 1).group)"1"
21:22:28 <lambdabot> Couldn't match expected type `a -> a' against inferred type `[a]'
21:22:36 <elliott> > join.(iterate$join.map((++)<$>show.length<*>take 1).group)"1"
21:22:37 <lambdabot> Couldn't match expected type `[a]'
21:22:37 <lambdabot> against inferred type `GHC.Types...
21:22:38 <elliott> > join.(iterate$join.map((++)<$>show.length<*>take 1).group)$"1"
21:22:41 <lambdabot> "11121121111122131221113112221111321321131131211131221132113111231131122111...
21:22:44 <elliott> > join$(iterate$join.map((++)<$>show.length<*>take 1).group)"1"
21:22:46 <lambdabot> "11121121111122131221113112221111321321131131211131221132113111231131122111...
21:22:49 <shachaf> > (>>=liftA2(++)(show.length)(take 1)).group$"112333"
21:22:50 <elliott> oerjan: that's not bad imo
21:22:51 <lambdabot> "211233"
21:22:57 <elliott> shachaf: oh, very good
21:23:02 <oerjan> elliott: look-and-say isn't usually joined together like that
21:23:07 <elliott> oerjan: well ok
21:23:19 <elliott> > iterate(>>=((++)<$>show.length<*>take 1).group))"1"
21:23:20 <lambdabot> <no location info>: parse error on input `)'
21:23:22 <elliott> > iterate(>>=((++)<$>show.length<*>take 1).group)"1"
21:23:23 <lambdabot> Couldn't match expected type `GHC.Types.Char'
21:23:23 <lambdabot> against inferred type...
21:23:29 <elliott> shachaf: i think liftA2 is longer
21:23:41 <shachaf> Probably.
21:23:53 <elliott> > iterate((>>=(++)<$>show.length<*>take 1).group)"1"
21:23:54 <lambdabot> ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113...
21:24:11 <elliott> > iterate((>>=(show.length)++(take 1)).group)"1"
21:24:12 <lambdabot> ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113...
21:24:13 <oerjan> > iterate(join.:lift[show.length,take 1]<=<group)"1"
21:24:14 <lambdabot> Couldn't match kind `(* -> *) -> * -> *' against `?? -> ? -> *'
21:24:19 <oerjan> oops
21:24:25 <oerjan> what was it i did yesterday
21:24:29 <elliott> > iterate((>>=show.length++take 1).group)"1"
21:24:30 <lambdabot> ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113...
21:24:33 <elliott> awesome
21:24:55 <oerjan> duh caleskell ++
21:25:03 <elliott> right
21:25:16 <shachaf> oerjan: I THINK YOU MEAN caleskell++
21:25:21 <shachaf> @karma+ caleskell
21:25:21 <lambdabot> caleskell's karma raised to 2.
21:25:31 <elliott> > iterate(group>=>show.length++take 1)"1"
21:25:32 <lambdabot> ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113...
21:25:37 <elliott> i think i win
21:25:48 <oerjan> darn i was going to do that :P
21:26:19 <elliott> shachaf: we found another use of (>=>)
21:26:37 <elliott> oerjan: the nice part is that it's still easy to understand
21:26:47 <elliott> in fact it's even in the right order for reading naturally and all that
21:27:04 <shachaf> elliott: More like a reason (>=>) shouldn't be in the stdlib.
21:27:20 <shachaf> And by stdlib I mean stdlib.h.
21:27:57 <Vorpal> :t (>=>)
21:27:58 <lambdabot> forall a (m :: * -> *) b c. (Monad m) => (a -> m b) -> (b -> m c) -> a -> m c
21:28:04 <Vorpal> hm
21:28:34 <elliott> kleisli composition
21:29:36 <Vorpal> elliott, ah
21:30:17 <elliott> That helped?
21:30:35 <elliott> oerjan: i conjecture that iterate(group>=>show.length++take 1)"1" is the shortest caleskell look and say prorgam :P
21:30:38 <elliott> prorgam
21:30:42 <Vorpal> elliott, somewhat, I have read about that before at some point. I did have to look up on wikipedia to refresh the details though
21:31:01 <elliott> "SumaMoito-Z2 has been proven Turing complete by simulation of Bitwise Cyclic Tag. The details required to construct the interpreter can be found in the log of #esoteric for 8 January, 2012."
21:31:02 <elliott> llo
21:31:03 <Vorpal> night →
21:31:03 <elliott> lol
21:31:10 <elliott> Vorpal: it's just
21:31:15 <elliott> (f >=> g) x = f x >>= g
21:32:02 -!- zzo38 has joined.
21:32:38 <Vorpal> elliott, not sure why they would add a special name for that. It doesn't really save that much typing
21:32:59 <elliott> Vorpal: it has nice theoretical properties
21:33:05 <elliott> e.g. the monad laws are just
21:33:06 <shachaf> And it makes the monad laws so much nicer.
21:33:09 <elliott> "return is identity for kleisli composition"
21:33:10 <elliott> and
21:33:14 <shachaf> elliott: CURSES
21:33:14 <elliott> "kleisli composition is associative"
21:33:21 <Vorpal> elliott, ah
21:33:42 <monqy> and also it saves so much typing???
21:33:47 <elliott> <elliott> > iterate(group>=>show.length++take 1)"1"
21:33:48 <elliott> so much
21:34:01 <elliott> oerjan: what other nice sequences are there...
21:34:18 <Vorpal> elliott, damn those mathematicians. We shouldn't let them design computer languages. They make crazy things like haskell. Leave it to engineers instead, then you get sensible things like VHDL, ADA and C
21:34:40 <shachaf> @quote kmc mathematicians
21:34:40 <lambdabot> kmc says: Haskell isn't really designed by mathematicians. it's designed by people who programmers would consider to be mathematicians and mathematicians would consider to be programmers
21:34:51 <Vorpal> heh
21:35:17 <shachaf> 1echo a
21:35:18 <shachaf> `echo a
21:35:23 <HackEgo> a
21:35:30 <shachaf> @remember `echo blah blah blah
21:35:30 <lambdabot> Good to know.
21:35:33 <shachaf> @quote `echo
21:35:34 <lambdabot> `echo says: blah blah blah
21:35:37 <HackEgo> says: blah blah blah
21:35:37 <itidus21> as a pascal,basic,c,asm bred coder(not saying i know any of them well or that i can use them properly), i am highly interested in what i can learn from the mathematical programmers
21:35:47 <shachaf> @forget `echo blah blah blah
21:35:47 <lambdabot> Done.
21:35:55 <itidus21> hence why i keep ramming against the berlin wall of programming
21:36:14 <itidus21> i shouldn't beg for quotation in that way
21:37:01 -!- Klisz has joined.
21:39:49 * elliott decides to encourage non-begging behaviour by doing nothing.
21:40:17 <zzo38> O, so the people who designed Haskell are almost programmers and almost mathematicians.
21:40:22 <itidus21> ive been analyzing myself a bit
21:40:27 <oerjan> @hoogle (a -> a) -> a -> [a]
21:40:28 <lambdabot> Prelude iterate :: (a -> a) -> a -> [a]
21:40:28 <lambdabot> Data.List iterate :: (a -> a) -> a -> [a]
21:40:28 <lambdabot> Data.Generics.Schemes everywhere :: (forall a. Data a => a -> a) -> (forall a. Data a => a -> a)
21:40:51 <elliott> oerjan: did you really need to hoogle that
21:40:57 <oerjan> no.
21:41:04 <itidus21> its a bit like bush writing a heartfelt essay on why he was president for so many terms
21:41:06 <shachaf> elliott: You should be in #haskell.
21:41:09 <oerjan> i was hoping for some almost-hits
21:41:09 <shachaf> It makes one happier.
21:41:16 <shachaf> @hoogle+
21:41:16 <lambdabot> Data.Generics.Schemes everywhere' :: (forall a. Data a => a -> a) -> (forall a. Data a => a -> a)
21:41:16 <lambdabot> Prelude until :: (a -> Bool) -> (a -> a) -> a -> a
21:41:17 <lambdabot> Prelude map :: (a -> b) -> [a] -> [b]
21:41:31 <oerjan> i was thinking of until
21:41:40 <elliott> oerjan: I was going to remind you of until.
21:41:41 <oerjan> but i doubt that helps
21:41:47 * elliott would have made 600 SO rep today if not for that pesky rep cap.
21:41:52 <elliott> shachaf: FSVO happier?
21:41:58 <elliott> itidus21: 2 is so many now? :P
21:42:09 <itidus21> it is
21:42:20 <shachaf> elliott: Just imagine talking to people who "just want to convert an Integer to a ByteString"!
21:42:25 <oerjan> @hoogle+
21:42:25 <lambdabot> Data.List map :: (a -> b) -> [a] -> [b]
21:42:25 <lambdabot> Control.OldException mapException :: (Exception -> Exception) -> a -> a
21:42:26 <lambdabot> Prelude ($) :: (a -> b) -> a -> b
21:42:27 <elliott> shachaf: unsafeCoerce
21:42:39 <shachaf> Funny, that's the first answer that was given.
21:42:52 <shachaf> Followed by pack . return . fromInteger.
21:42:53 <Vorpal> elliott, why are SO rep useful?
21:42:55 <itidus21> elliott: in this i am reminded of an einstein quote about having hand on a hot stove versus sitting next to a pretty girl
21:43:08 <shachaf> Vorpal: They aren't useful. However, they are SO useful.
21:43:11 <elliott> Vorpal: Why is life useful?
21:43:18 <elliott> Why is humanity useful?
21:43:19 <Vorpal> elliott, it isn't
21:43:23 <elliott> Why is chocolate useful?
21:43:31 <Vorpal> not at all, we just pollute and such
21:43:34 <elliott> So to answer your question, SO rep is useful because it's delicious and made of cocoa beans.
21:43:41 <elliott> FSVO "just".
21:43:42 <zzo38> You have to answer all these questions with other questions: useful in what way?
21:43:54 <Vorpal> elliott, also chocolate isn't useful either
21:44:00 <monqy> so rep is useful because it pollutes and such
21:44:02 <elliott> itidus21: Yeah, girls just can't compare to the magic of a stove.
21:44:04 <oerjan> > fix.("1":).map$group>=>show.length++take 1 --just a bit too long
21:44:05 <lambdabot> Couldn't match expected type `a -> a'
21:44:05 <lambdabot> against inferred type `[[GHC....
21:44:11 <oerjan> and wrong besides :P
21:44:27 <oerjan> :t fix.("1":).map
21:44:28 <lambdabot> Couldn't match expected type `a -> a'
21:44:28 <lambdabot> against inferred type `[[Char]]'
21:44:28 <lambdabot> In the first argument of `(.)', namely `("1" :)'
21:44:28 <itidus21> "who's been a naughty stove?"
21:44:40 <elliott> oerjan: ooh what about my favourite sequence
21:44:42 <monqy> can stoves be naughty
21:44:48 <oerjan> :t fix.("1":).:map
21:44:49 <elliott> oerjan: the self-avoidant sequence
21:44:49 <lambdabot> ([Char] -> [Char]) -> [[Char]]
21:44:52 <elliott> *avoiding i think
21:44:54 <shachaf> elliott: By the way, is it bad that my reaction to a lot of questions in #haskell is "step 1: Learn how to, you know, think"?
21:44:56 <oerjan> > fix.("1":).:map$group>=>show.length++take 1 --just a bit too long
21:44:58 <lambdabot> ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113...
21:45:01 <itidus21> monqy: during certain erotic fantasy
21:45:03 <shachaf> I think that would solve so many problems.
21:45:25 <elliott> oerjan: where you build a markov model of increasing order of your own output so far
21:45:33 <elliott> and output the least likely next bit
21:45:39 <oerjan> elliott: okay
21:45:40 <Vorpal> elliott, what the self-avoidant sequence?
21:45:43 <elliott> Vorpal: ^
21:45:46 <Vorpal> ah
21:45:56 <elliott> oerjan: it /sounds/ like it should have a conceptually simple definition, but the one I implemented just did the obvious (reconstruct a markov model each step)...
21:45:57 <Vorpal> elliott, that sounds interesting
21:46:09 <elliott> Vorpal: it basically produces random-looking output
21:46:15 <elliott> i don't know if it's "really" (pseudo)random
21:46:17 <zzo38> I figured out the Proxy monad first in the digraph category not in Haskell, but look in the document for Proxy type and found they defined the monad there too. But then, there can be Coproxy comonad, data Coproxy x; and everything has to be made undefined but that is OK since there will be no input value so there can be no output value either (it should be an empty case block, but Haskell doesn't support that!)
21:46:23 <itidus21> in the process i thought up a game based on hoarding.
21:46:28 <Vorpal> elliott, probably isn't.
21:46:47 <elliott> Vorpal: well you can consider it a reasonable mathematical /definition/ of a random sequence
21:46:48 <Vorpal> elliott, anyway wouldn't it end up cycling a lot?
21:47:00 <itidus21> you walk around a single screen maze collecting randomly timed icons which unlock new randomly generated maze levels which can be played by a menu...
21:47:00 <elliott> at least, it's a definition of a sequence that you can't predict locally
21:47:03 -!- atrapado has changed nick to atrapad.
21:47:06 <elliott> well, you can predict it
21:47:09 <elliott> but not with a markov model :)
21:47:11 <elliott> Vorpal: nope
21:47:17 <elliott> that's why you increase the order each step
21:47:18 <itidus21> the idea is that you have more fun collecting the levels than actually playing them
21:47:20 -!- atrapado has joined.
21:47:23 <Vorpal> elliott, ah
21:47:32 <elliott> itidus21: :D
21:47:36 -!- atrapad has quit (Quit: Bye).
21:47:45 * elliott just assumes oerjan is working on that sequence.
21:47:51 <elliott> argumentum ad naivety
21:48:06 <itidus21> 5 minutes in the player says to himself, dear god what am i doing?
21:48:07 <oerjan> elliott: NOPE
21:48:15 <elliott> oerjan: :(
21:48:30 <elliott> zzo38: agda supports empty pattern-matching :)
21:48:41 <elliott> oerjan: what about the paper-folding sequence
21:48:52 <Vorpal> elliott, which one is that?
21:49:30 <elliott> 00:28:30 <monad> In the book "Real World Haskell", I found the the following declaration: instance NFData BS.ByteString where rnf _ = () ! In my opinion, rnf does nothing! I don't understand how the argument of rnf will be reduced to "normal form". Any idea?
21:49:36 <elliott> shachaf: Hey, a reason to dislike RWH more!
21:49:43 <elliott> Vorpal: http://en.wikipedia.org/wiki/Regular_paperfolding_sequence
21:49:55 <zzo38> elliott: Well, I am glad they fixed that! But still, they should also fix GHC to support empty case blocks
21:49:56 <atrapado> please can someone review my proof of that SumaMoito-N is Turing-complete? http://esolangs.org/wiki/SumaMoito#Computational_class
21:50:22 <shachaf> elliott: Obviously that excalamation mark is just moved over by 7 characters.
21:50:26 <shachaf> EXCALAMATION!
21:50:45 <Vorpal> elliott, nice
21:50:46 <shachaf> Anyway, if it was 7 characters to the left it would make sense.
21:51:10 <Vorpal> elliott, I wonder if there is an irregular paperfolding sequence
21:51:42 <elliott> atrapado: It's correct, yes.
21:51:47 <atrapado> oh, good
21:51:52 <elliott> N is a pretty trivial extension of Z2.
21:52:15 <elliott> Are you sure the decrements are the same though?
21:52:21 <elliott> I thought N made the value the same when underflowing.
21:52:25 <elliott> Oh, Z2 does to.
21:52:26 <elliott> too.
21:52:39 <elliott> Oh, it doesn't have decrement.
21:52:41 <elliott> I didn't notice that :)
21:53:02 <elliott> Yes, assuming the decrement function is right, it's correct. I think you can make it simpler though.
21:53:03 <atrapado> i am not ocmpletely sure that it is correct, elliott
21:53:05 <Vorpal> atrapado, what about Z1?
21:53:12 <atrapado> Z1...
21:53:16 <atrapado> more complicated
21:53:19 <atrapado> negative values
21:53:21 <Vorpal> I see
21:53:47 <Vorpal> atrapado, also that mapping from Z2 to N seems trivial
21:53:48 <elliott> atrapado: tmp1; out; tmp1+; while (tmp1 != in) { out+; tmp1+ }
21:53:54 <elliott> That decrements out into in.
21:53:55 <Vorpal> why are there even two languages?
21:53:56 <elliott> Er.
21:53:58 <elliott> In into out.
21:54:00 <elliott> out = in - 1
21:54:09 <atrapado> and if it is 0 ?
21:54:24 <elliott> atrapado: Oh, it doesn't halt. But that's easy...
21:54:42 <elliott> atrapado: tmp1; out; tmp1+; while (in != out) { while (tmp1 != in) { out+; tmp1+ } }
21:54:57 <oerjan> :t zap
21:54:58 <lambdabot> Not in scope: `zap'
21:55:00 <oerjan> :t zapp
21:55:01 <lambdabot> Not in scope: `zapp'
21:55:06 <elliott> wat
21:55:25 <Vorpal> zap?
21:55:37 <oerjan> just zipWith id
21:55:52 <atrapado> i do not understand fully your algorithm, elliott , but do not doubt of its correcness....
21:56:01 <Vorpal> oerjan, why would you call that zap?
21:56:04 <elliott> atrapado: Well, it's basically
21:56:08 <Vorpal> :t zipWith id
21:56:09 <lambdabot> forall b c. [b -> c] -> [b] -> [c]
21:56:11 <elliott> atrapado: for (int i = 1; i < in; i++) out++
21:56:20 -!- yiyus has quit (Ping timeout: 248 seconds).
21:56:24 <elliott> atrapado: Since i starts at 1, the loop executes (in-1) times, rather than in as it would if it started at 0.
21:56:26 <oerjan> Vorpal: because it's <*> for ZipList
21:56:40 <Vorpal> oerjan, I see. Not sure why it would be called zap still
21:56:42 <atrapado> ok
21:56:46 <elliott> atrapado: The while (in != out) thing is just a trick: out starts as 0, so if in == 0, then the whole thing is skipped. If it's not, then we know that at the end of the inner loop, out = in - 1.
21:56:47 <elliott> So out != in.
21:56:57 <elliott> So it's equivalent to if (in != 0).
21:57:02 <atrapado> ah
21:57:07 <atrapado> more clear to me
21:57:16 <atrapado> good
21:57:50 <elliott> (Disclaimer: Writing code like this is bad for your health.)
21:58:04 <oerjan> Vorpal: because (<*>) = ap
21:58:09 <atrapado> yes, it is itself obfuscated
21:58:14 <Vorpal> oerjan, oh, right
21:58:31 <elliott> Vorpal: APply
21:58:58 <elliott> :t app
21:58:59 <lambdabot> forall (a :: * -> * -> *) b c. (ArrowApply a) => a (a b c, b) c
21:59:43 <elliott> :t app loop
21:59:44 <lambdabot> Couldn't match expected type `a (b, d) (c, d) -> a b c'
21:59:44 <lambdabot> against inferred type `(b1 -> c1, b1)'
21:59:45 <lambdabot> Expected type: (a (b, d) (c, d) -> a b c) -> t
21:59:47 <elliott> :t loop app
21:59:48 <lambdabot> forall (a :: * -> * -> *) d c. (ArrowApply a, ArrowLoop a) => a (a d (c, d)) c
21:59:56 <elliott> oerjan: :D
22:00:08 <elliott> > loop app (\x -> (42, x))
22:00:09 <lambdabot> 42
22:00:12 <elliott> > loop app (\x -> (42, 1+x))
22:00:13 <lambdabot> 42
22:00:18 <elliott> > loop app (\x -> (x, 1:x))
22:00:19 <lambdabot> [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,...
22:00:23 <elliott> > loop app (\x -> (2:x, 1:x))
22:00:23 <lambdabot> [2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,...
22:00:26 <elliott> that's awesome
22:00:33 <elliott> you get control over the final value, sort of
22:00:49 <oerjan> > fix.interleave$cycle[1,0]
22:00:51 <lambdabot> [1,1,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,1,1,0,0,0,1,1,0,0,1,0,0,1,1,1,0,1,1,...
22:00:52 <Vorpal> :t loop
22:00:53 <lambdabot> forall (a :: * -> * -> *) b d c. (ArrowLoop a) => a (b, d) (c, d) -> a b c
22:00:56 <Vorpal> oh
22:00:57 <Vorpal> :t app
22:00:58 <lambdabot> forall (a :: * -> * -> *) b c. (ArrowApply a) => a (a b c, b) c
22:00:58 <elliott> oerjan: well that was easy :P
22:01:01 <elliott> oerjan: and elegant
22:01:07 <Vorpal> (haven't really used arrows)
22:01:23 <elliott> :t loop arr
22:01:24 <lambdabot> Couldn't match expected type `(b, d)'
22:01:24 <lambdabot> against inferred type `b1 -> c'
22:01:24 <lambdabot> Expected type: (b, d) -> (c1, d)
22:01:26 <elliott> aww
22:01:29 <elliott> :t arr loop
22:01:30 <lambdabot> forall (a :: * -> * -> *) b d c (a1 :: * -> * -> *). (ArrowLoop a, Arrow a1) => a1 (a (b, d) (c, d)) (a b c)
22:01:42 <elliott> :t arr app
22:01:43 <lambdabot> forall b c (a :: * -> * -> *). (Arrow a) => a (b -> c, b) c
22:01:47 <elliott> heh
22:01:48 <elliott> :t app
22:01:49 <lambdabot> forall (a :: * -> * -> *) b c. (ArrowApply a) => a (a b c, b) c
22:01:52 <elliott> right
22:02:01 <oerjan> elliott: once i remembered interleave, yeah
22:02:22 <Vorpal> :t arr
22:02:23 <lambdabot> forall b c (a :: * -> * -> *). (Arrow a) => (b -> c) -> a b c
22:02:33 <Vorpal> elliott, what are arrows for?
22:02:45 <Phantom_Hoover> :t loop
22:02:46 <lambdabot> forall (a :: * -> * -> *) b d c. (ArrowLoop a) => a (b, d) (c, d) -> a b c
22:02:50 <Vorpal> (apart from pointing people and shooting them)
22:03:27 <elliott> Vorpal: arrows
22:03:34 <elliott> they're like monads, except not, and more static
22:03:35 <Vorpal> elliott, yes, what are they used for
22:03:39 <Vorpal> ah
22:03:40 <elliott> things
22:03:43 <elliott> they're not very nice
22:03:55 <elliott> oerjan: do i have to build the self-avoiding sequence :(
22:03:56 <Vorpal> elliott, so why does haskell have them?
22:04:00 <Vorpal> if they are not very nice
22:04:44 <Phantom_Hoover> <elliott> they're like monads, except not, and more static
22:04:52 <Phantom_Hoover> I never did get arrows.
22:05:34 <zzo38> I don't like much the Arrow class in Haskell so I made up my own class; there is two classes, one is the functor from one category to another, the other one is the other four things in the Arrow class.
22:06:11 <elliott> Vorpal: Well, they're not *all* that unnice.
22:06:11 <zzo38> And you can also change to use a different type other than (,) type. Which makes ArrowChoice not needed since instead, it is the arrow for the dual category.
22:06:24 <Vorpal> elliott, right. So why should someone use them?
22:06:46 <elliott> If they want to. Or if someone else already did and they have to live with it.
22:07:05 <Vorpal> elliott, so there is really nothing they are better at than, for example, monads?
22:07:31 <zzo38> They are different things!
22:07:39 <elliott> Vorpal: There are arrows that are not (or should not be) monads.
22:07:44 <Vorpal> ah okay
22:08:02 <Vorpal> so that is the "except not" bit then
22:08:18 <oerjan> :t loop
22:08:19 <lambdabot> forall (a :: * -> * -> *) b d c. (ArrowLoop a) => a (b, d) (c, d) -> a b c
22:09:14 <elliott> oerjan: I TAKE IT THAT'S A YES
22:09:16 <Vorpal> well, night →
22:09:16 <zzo38> But, if the category is the Kleisli category of some monad of (->) then it should make the monad. And, also coKleisli categories to make comonad
22:09:41 <elliott> > (init &&& last) . take 2 [False,False,True,True]
22:09:42 <lambdabot> Couldn't match expected type `[a]'
22:09:42 <lambdabot> against inferred type `GHC.Bool....
22:09:45 <elliott> > (init &&& last) . take 3 $ [False,False,True,True]
22:09:47 <lambdabot> ([False,False],True)
22:10:58 <elliott> > map ((init &&& last) . take 3) . inits $ [False,False,True,True]
22:10:59 <lambdabot> [(*Exception: Prelude.init: empty list
22:11:02 <elliott> o_O
22:11:02 <elliott> oh
22:11:11 <elliott> > map ((init &&& last) . take 3) . tails $ [False,False,True,True]
22:11:12 <lambdabot> [([False,False],True),([False,True],True),([True],True),([],True),(*Excepti...
22:11:39 <elliott> > map (init &&& last) . takeWhile ((==3).length) . map (take 3) . tails $ [False,False,True,True]
22:11:40 <lambdabot> [([False,False],True),([False,True],True)]
22:11:50 <elliott> oerjan: SEE I'VE LIKE HALF WRITTEN IT FOR YOU ALREADY
22:11:58 <oerjan> elliott: i just cannot find much elegance in repeatedly building markov models.
22:12:12 <elliott> oerjan: the idea was to come up with a more elegant expression of it than that :P
22:12:16 <elliott> :t M.takeListWith
22:12:17 <lambdabot> Couldn't find qualified module.
22:12:21 <elliott> :t M.fromListWith
22:12:22 <lambdabot> forall a k. (Ord k) => (a -> a -> a) -> [(k, a)] -> M.Map k a
22:12:54 -!- yiyus has joined.
22:13:38 <elliott> oerjan: ok how about chaitin's omega :P
22:13:43 -!- MSleep has changed nick to MDude.
22:13:45 -!- Vorpal has quit (Ping timeout: 244 seconds).
22:13:53 <oerjan> should be a breeze
22:14:48 <elliott> > iterate (id++map not . reverse) [False]
22:14:50 <lambdabot> [[False],[False,True],[False,True,False,True],[False,True,False,True,False,...
22:14:56 <elliott> WELL THAT'S NOT ANY FUN
22:15:09 <elliott> > iterate (\xs -> interleave xs (map not (reverse xs))) [False]
22:15:10 <lambdabot> [[False],[False,True],[False,False,True,True],[False,False,False,False,True...
22:15:14 <elliott> sheesh
22:15:17 <elliott> > iterate (\xs -> interleave xs (map not xs)) [False]
22:15:18 <lambdabot> [[False],[False,True],[False,True,True,False],[False,True,True,False,True,F...
22:15:22 <elliott> I GIVE UP
22:16:09 <oerjan> > show<=<fix$(0:).tail.(>>=(!!)[[1],[0,1]])
22:16:12 <lambdabot> mueval-core: Time limit exceeded
22:16:16 <oerjan> argh
22:16:18 <oerjan> oh
22:16:31 <oerjan> > fix$(0:).tail.(>>=(!!)[[1],[0,1]])
22:16:34 <lambdabot> mueval-core: Time limit exceeded
22:16:41 <oerjan> hm something is wrong
22:16:50 <elliott> the tail consumes too much?
22:16:57 <oerjan> oh hm
22:16:58 <elliott> for production
22:17:00 <elliott> maybe
22:17:05 <elliott> you might need more starter elements
22:17:05 <oerjan> > fix$(0:).(>>=(!!)[[1],[0,1]])
22:17:07 <lambdabot> [0,1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,...
22:17:22 <oerjan> > show<=<fix$(0:).(>>=(!!)[[1],[0,1]])
22:17:24 <lambdabot> "01011010110110101101011011010110110101101011011010110101101101011011010110...
22:17:52 <oerjan> that's a fairly general substitution sequence
22:17:55 <elliott> which one is that?
22:18:21 <oerjan> fibonacci, unless i swapped the order
22:19:18 <elliott> ah
22:19:55 <elliott> 04:50:34 <Sgeo> makeDef text = [d|helloDefinition = $(litE . stringL $ text)|]
22:19:59 <elliott> Sgeo: = $text i think
22:20:18 <elliott> 05:10:44 * Sgeo has no idea if GHC is smart enough
22:20:19 <elliott> GHC is not allowed to turn a non-terminating program into a terminating one without printing <<loop>>.
22:20:40 <oerjan> > show<=<fix$(0:).(>>=(!!)[[0,1],[0]]) --seems this is canonical according to http://en.wikipedia.org/wiki/Fibonacci_word
22:20:41 <lambdabot> "00101001001010010100100101001001010010100100101001010010010100100101001010...
22:20:56 <oerjan> oh wait hm
22:21:02 <Sgeo> elliott, uh, what was the context of the smart enough comment?
22:21:05 <itidus21> so i just had this cool idea.. using mouse scrollwheel+some button to change window focus
22:21:08 <elliott> Sgeo: length xs< x
22:21:09 <oerjan> > show<=<fix$(0:).tail.(>>=(!!)[[0,1],[0]]) --seems this is canonical according to http://en.wikipedia.org/wiki/Fibonacci_word
22:21:11 <lambdabot> "01001010010010100101001001010010010100101001001010010100100101001001010010...
22:21:17 <oerjan> that form needs tail
22:21:21 <elliott> itidus21: you can scroll on the taskbar in gnome 2 at least
22:21:23 <elliott> i used to do that a lot
22:21:25 <elliott> to switch windows
22:21:30 <Sgeo> Because the context that I'm thinking of is just an optimization, not ... oh, you only saw part of the context
22:21:36 <elliott> Sgeo: i saw all context
22:21:41 <elliott> i think
22:22:22 <itidus21> elliott: it occured to me on having 2 horizontally overlapping windows that the minimum distance to swap focus between them is the distance of the overlap
22:22:34 <itidus21> if you use clicking on it to change focus
22:22:36 <Sgeo> Even the bit where I'm making my own Num that will let me write my own length that length xs < x terminates even for infinite xs?
22:23:37 <elliott> Sgeo: "my own Num"
22:23:38 <elliott> aka
22:23:41 <elliott> the lazy peano numbers
22:23:43 <elliott> the oldest thing ever
22:24:07 <Sgeo> This is a bit more general than that, although I don't see any use cases that this covers that lazy peanos don't.
22:24:12 <itidus21> also, that if there is one window hidden behind another window then the minimum distance to change focus by clicking is moving to the minimize button, and then moving to the hidden window
22:24:37 <itidus21> clearly noone measures these vectors
22:24:57 <itidus21> at least not on windows :P
22:25:10 <elliott> itidus21: fitts' law may interest you
22:25:19 <elliott> Sgeo: how's it more general
22:26:10 -!- atrapado has quit (Quit: FIN).
22:26:11 <oerjan> > show<=<fix$(0:).(>>=(!!)[[1,0],[0]])
22:26:12 <lambdabot> "01001010010010100101001001010010010100101001001010010100100101001001010010...
22:26:15 -!- Patashu has joined.
22:26:26 <Sgeo> Um, not sure how to describe it, but it's an infinite list of maybe upper and lower bounds
22:27:03 <Sgeo> So I can represent a number that I know is "less than x" and then that x keeps decreasing as I calculate
22:27:07 <Sgeo> Erm
22:27:29 <oerjan> ah it seems my first try is called the rabbit sequence
22:28:48 <elliott> Sgeo: i'd like to see the code
22:29:05 <Sgeo> Num instance is still being worked on
22:29:18 <itidus21> yup someone told me about it once.. i forget exactly what it is
22:29:26 <Sgeo> http://hpaste.org/56271
22:29:33 <itidus21> but i do remember that the edge of the screen is more comfortable to scroll against
22:29:50 <itidus21> something to do with the size of the mouse target
22:29:53 <kallisti> `logsearch function array indexing
22:29:56 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logsearch: not found
22:30:04 <kallisti> `searchlog function array indexing
22:30:06 <itidus21> and the edge of the screen is effectively an infinitely deep target
22:30:08 <elliott> itidus21: yep
22:30:37 <HackEgo> No output.
22:30:49 <kallisti> `searchlog php index
22:31:03 <HackEgo> 2006-08-24.txt:22:24:26: <GregorR-W> http://www.codu.org/plof/index.php?title=LongWords
22:31:09 <monqy> poor searchlog is ahead of its time
22:31:21 <monqy> or whatever the term is
22:31:24 <Sgeo> I do plan on factoring out the hard to read stuff in the Num instance
22:32:24 <elliott> Sgeo: You could probably simplify it by realising that those Maybes are basically encoding a + -inf and a + inf.
22:32:30 <elliott> Write appropriate instances, etc.
22:33:55 <Sgeo> I'm pretty sure Num, Ord does not have -inf or +inf. I mean, RealFloat or Floating or something probably does, but I don't
22:34:04 <elliott> What the fuck are you talking about?
22:34:04 <Sgeo> erm, want to restrict myself like that
22:34:25 <elliott> data WithNegInf a = NegInf | NotNegInf a deriving (Eq)
22:34:32 <elliott> instance (Num a) => Num (WithNegInf a)
22:34:41 <elliott> Similarly for NegInf; write appropriate Ord instances.
22:34:55 <elliott> Change the thing to [(WithNegInf a, WithPosInf a)]
22:36:15 <oerjan> <elliott> Brainfuck with only balanced loops is *proven* sub-Turing-complete. <-- not with unbounded cells
22:36:37 <elliott> oerjan: Hmm, really?
22:36:46 <elliott> Oh, of course.
22:36:51 <elliott> oerjan: Don't worry, we later prove it TC.
22:37:01 <elliott> With BCT.
22:37:18 <oerjan> heh
22:38:59 <oerjan> my 3-cell construction has balanced loops, of course (i couldn't _find_ any way to usefully use non-balanced ones)
22:40:32 <elliott> oerjan: you might notice something interesting about http://esoteric.voxelperfect.net/wiki/Special:Recentchanges today
22:40:50 * oerjan makes a guess before visiting
22:41:47 <oerjan> alas, no, there's still a little spam
22:42:32 <itidus21> are my eyes malfunctioning? i dont see dozens of spam entries
22:42:50 <elliott> oerjan: still a _little_
22:42:52 <elliott> but vastly decreased
22:43:01 <itidus21> no itidus21, your eyes are fully operational.
22:48:40 <kallisti> rawSetCaption :: Maybe String -> Maybe String -> IO ()
22:48:47 <kallisti> Sets the window title and icon name. Use Nothing to unset.
22:48:52 <kallisti> I don't really understand the purpose of this
22:48:58 <kallisti> what is different about "" and Nothing here?
22:50:00 <elliott> presumably the system can distinguish them
22:50:01 <oerjan> elliott: i don't see a proof for SumaMoito-Z1, but it seems obviously capable of handling my 3-cell balanced loops
22:50:11 <elliott> a window with no title is not a window with an empty title
22:50:25 <kallisti> perhaps
22:50:32 <elliott> oerjan: well it's easy to translate -z2 to -z1
22:50:38 <elliott> oerjan: just replace a- with
22:50:39 <kallisti> it also has:
22:50:46 <kallisti> setCaption :: String -> String -> IO ()
22:50:53 <kallisti> Sets the window title and icon name.
22:50:53 <elliott> er hm
22:50:56 <elliott> no it's not quite easy
22:50:58 <elliott> but all you need is a copy
22:51:05 <elliott> kallisti: for simplicity, presumably
22:51:06 <fizzie> The same difference with "" and NULL for SDL_WM_SetCaption is my guess. :p
22:51:13 <kallisti> elliott: yes that's what I would think.
22:51:27 <Phantom_Hoover> OMG Darths & Droids is onto A New Hope.
22:52:42 <kallisti> fizzie: but wouldn't setting the caption to an empty string have the same basic effect as unsetting it?
22:52:47 <kallisti> or is there a minute difference?
22:52:57 <zzo38> I think, it should be designed (although I don't know how it actually works), "" for SDL set caption should make the caption blank and NULL to make it show the filename
22:53:16 <kallisti> oh I see
22:53:21 <kallisti> NULL could use some kind of default or something.
22:53:24 <elliott> kallisti: you're confusing visual display for semantics
22:53:36 <elliott> window with no title rendered same way as window with empty title =/= same thing
22:53:37 <elliott> consider
22:53:40 <elliott> $ list-windows
22:53:44 <elliott> 495345: (no caption)
22:53:46 <elliott> 495345: caption: ""
22:53:51 <kallisti> elliott: yes I'm asking what those semantics are... indirectly
22:53:54 <kallisti> I do that a lot.
22:53:56 <elliott> depends on the system
22:54:03 <elliott> but there's one example
22:54:12 <zzo38> OK, it could do that but there is different system such as Windows, UNIX, and Macintosh.
22:58:31 <elliott> 05:24:44 <Sgeo> when . not ?
22:58:32 <elliott> Sgeo: unless
22:58:56 <elliott> 05:31:17 <dmwit> erus`: There's an instance Error e => Monad (Either e)
22:58:56 <elliott> WROOONG! You're not in here so I can't yell at you but WROOOONG!!!!
23:00:50 <elliott> 06:03:00 <erus`> > let f a = const in f 1 2
23:00:51 <elliott> 06:03:00 <lambdabot> Overlapping instances for GHC.Show.Show (b -> t)
23:00:51 <elliott> 06:03:01 <lambdabot> arising from a use of `...
23:00:51 <elliott> 06:03:59 <Sgeo> Which is a function, which doesn't have a Show instance
23:00:55 <elliott> Sgeo: Yes it does. In fact, it has too many.
23:01:40 <zzo38> They need to implement instance disambiguation!!
23:02:26 <elliott> 08:00:04 <Sgeo> Hmm
23:02:26 <elliott> 08:00:08 <Sgeo> What is State# ?
23:02:28 <elliott> Sgeo: Nothing.
23:02:37 <elliott> Sgeo: State# s is 0 bits big.
23:02:39 <elliott> It does not exist.
23:03:11 <elliott> Sgeo: The reason IO uses it is so that GHC can't reorder IO expressions.
23:03:18 <elliott> The (->) being used is the impure function arrow.
23:03:27 <elliott> The State# is just used to introduce a fake evaluation dependency between computations.
23:03:57 <elliott> 08:11:40 <Sgeo> What would happen if I did try to do something like weird a = IO \s -> (s, a)
23:04:00 <elliott> Sgeo: With (##), that's return.
23:04:53 <kmc> wait, so now we're shouting at #haskell from afar?
23:05:55 <elliott> kmc: Yes!
23:06:01 <elliott> kmc: You can't get banned that way.
23:06:07 <elliott> Also, you don't even have to *be* in #haskell.
23:06:07 <monqy> watching sgeo doing something stupid over there and shouting in his ear which is conveniently right here
23:06:21 <elliott> monqy: Better: He did it in THE PAST!
23:11:30 <elliott> 10:00:17 <inteq> i would like to plunge into haskell. i come from a c++/c/python background. can anyone suggest a strong text or set of lectures online that will give me a good foundation?
23:11:31 <elliott> 10:00:24 <koeien> @where lyah
23:11:31 <elliott> 10:00:24 <lambdabot> http://www.learnyouahaskell.com/
23:11:31 <elliott> 10:01:13 <inteq> koeien:thanks! if i keep at this, would i be able to gain employment where haskell is used?
23:11:31 <elliott> 10:01:22 <inteq> at that site, i meant
23:11:33 <elliott> 10:01:27 <inteq> sorry for being ambiguois
23:11:36 <elliott> I... I don't understand...
23:11:50 <elliott> Oh, I misread.
23:13:11 <monqy> good channel
23:14:08 <itidus21> inteq is fighting an uphill battle
23:14:28 <itidus21> i don't envy him
23:19:26 -!- nooga has quit (Ping timeout: 252 seconds).
23:19:37 <elliott> 10:45:04 <ski> Sgeo : i think this is an interesting idea -- i saw some hand-written notes somewhere on the web about making such a lazy improving intervals type
23:19:41 <elliott> Sgeo: likely referring to http://conal.net/blog/posts/exact-numeric-integration
23:19:54 <elliott> Sgeo: which happens to do basically exactly what i proposed :)
23:20:04 <elliott> sort of
23:20:22 <elliott> see also http://www.reddit.com/r/haskell/comments/ajbso/conal_elliott_exact_numeric_integration/c0i391y
23:20:44 <oerjan> itidus21: ah but the view on the top is glorious
23:23:04 <oerjan> > [0..]>>- \_->cycle[1,0]
23:23:06 <lambdabot> [1,1,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,1,1,0,0,0,1,1,0,0,1,0,0,1,1,1,0,1,1,...
23:23:56 * oerjan cackles evilly
23:24:08 <quintopia> oerjan: what is a good concise definition of "problem" in the computational sense
23:24:29 <elliott> oerjan: lovely
23:24:40 <elliott> > [0..]>>-cycle[1,0]
23:24:41 <lambdabot> Couldn't match expected type `t -> [b]'
23:24:42 <lambdabot> against inferred type `[t1]'
23:24:47 * elliott was hoping for function Num instance
23:25:03 <elliott> > iterate(group>=>show.length++take 1)"1"
23:25:07 <lambdabot> mueval-core: Time limit exceeded
23:25:11 <elliott> > iterate(group>=>show.length++take 1)"1"
23:25:12 <lambdabot> can't find file: L.hs
23:25:14 <elliott> ...
23:25:15 <elliott> ...
23:25:16 <elliott> > iterate(group>=>show.length++take 1)"1"
23:25:19 <lambdabot> ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113...
23:25:21 * elliott has now committed that to memory
23:26:05 <Madoka-Kaname> > iterate(group>=>show.length++take 1)"a"
23:26:07 <lambdabot> ["a","1a","111a","311a","13211a","111312211a","31131122211a","1321132132211...
23:26:10 <oerjan> quintopia: a decision problem is simply the same thing as a language, mathematically
23:26:10 * Madoka-Kaname hides
23:26:14 -!- Jafet has joined.
23:26:19 <Madoka-Kaname> > iterate(group>=>show.length++take 1)"0"
23:26:21 <lambdabot> ["0","10","1110","3110","132110","1113122110","311311222110","1321132132211...
23:26:48 <oerjan> more general types of problems need their own definitions.
23:27:01 <Madoka-Kaname> > head $ drop 300 $ iterate(group>=>show.length++take 1)"1"
23:27:02 <lambdabot> "13211321322113311213212312311211131122211213211331121321123123211231131122...
23:27:25 <Madoka-Kaname> Somehow that doesn't seem right
23:27:44 <oerjan> Madoka-Kaname: why not?
23:27:53 <Madoka-Kaname> Eh.
23:27:54 <Madoka-Kaname> Never mind
23:28:29 <elliott> > iterate(group>=>show.length++take 1)""
23:28:30 <lambdabot> ["","","","","","","","","","","","","","","","","","","","","","","","",""...
23:28:34 <elliott> > iterate(group>=>show.length++take 1)"hi"
23:28:36 <lambdabot> ["hi","1h1i","111h111i","311h311i","13211h13211i","111312211h111312211i","3...
23:28:46 <elliott> > iterate(group>=>show.length++take 1)$repeat 1
23:28:47 <lambdabot> No instance for (GHC.Num.Num GHC.Types.Char)
23:28:47 <lambdabot> arising from the literal `1...
23:28:53 <elliott> > iterate(group>=>show.length++take 1)$repeat '1'
23:28:55 <lambdabot> ["1111111111111111111111111111111111111111111111111111111111111111111111111...
23:28:58 <elliott> > tail.iterate(group>=>show.length++take 1)$repeat '1'
23:29:00 <lambdabot> Terminated
23:29:02 <elliott> aww
23:29:39 <elliott> > tail.iterate(group>=>show.length++take 1).concatMap show$[1..]
23:29:41 <lambdabot> ["1112131415161718191110311211131114111511161117111811191210121132131214121...
23:29:45 <elliott> > tail.tail.iterate(group>=>show.length++take 1).concatMap show$[1..]
23:29:46 <lambdabot> ["3112111311141115111611171118111931101321123113311431153116311731183119111...
23:29:48 <elliott> > tail.tail.tail.iterate(group>=>show.length++take 1).concatMap show$[1..]
23:29:50 <lambdabot> ["1321123113311431153116311731183119132110111312211213212321141321151321161...
23:29:55 <elliott> oerjan: pls explain patterns kthx
23:30:19 <itidus21> its simple really
23:30:40 <quintopia> oerjan: a language over the set of all possible mathematical symbols?
23:30:40 <itidus21> 1,111,311,13211,111312211
23:31:02 <itidus21> i mean like, duh
23:31:13 <monqy> am I a possible mathematical symbol
23:31:14 <monqy> are you
23:31:33 <Madoka-Kaname> > head $ drop 300 $ iterate(group>=>show.length++take 1)"22"
23:31:35 <lambdabot> "22"
23:31:46 <elliott> oh well the first step is just interleaving 1 everywhere
23:31:53 <elliott> except, no
23:31:56 <elliott> since digits can repeat there
23:31:57 <elliott> interesting
23:31:59 <Madoka-Kaname> > iterate(group>=>show.length++take 1)"4444"
23:32:00 <lambdabot> ["4444","44","24","1214","11121114","31123114","132112132114","111312211211...
23:32:11 <Madoka-Kaname> > iterate(group>=>show.length++take 1)"2222222222"
23:32:12 <itidus21> monqy: i'm gonna go with no not really
23:32:13 <lambdabot> ["2222222222","102","111012","31101112","1321103112","1113122110132112","31...
23:32:23 <Madoka-Kaname> > iterate(group>=>show.length++take 1)"222222222"
23:32:24 <quintopia> monqy: i think its okay to define a symbol as a specific string of other symbols. so, yes, if you can produce an axiomatic description of us
23:32:25 <lambdabot> ["222222222","92","1912","11191112","31193112","132119132112","111312211911...
23:33:09 <oerjan> quintopia: a language over some arbitrary (finite) alphabet
23:33:13 <itidus21> `log information is
23:33:21 <HackEgo> 2009-08-01.txt:15:08:18: <mycroftiv> because only that information is of the form to transmit itself into the future
23:34:46 <oerjan> elliott: all digits > 3 eventually become isolated from each other. then it devolves into conway's atoms, which behave as a substitution rule.
23:34:55 <quintopia> oerjan: but to mathematicians, the alphabet is not arbitrary, is it? there is a conventional set of symbols?
23:35:15 <elliott> oerjan: yeah, i was just hoping somehow infinitely extending it would make it interesting :P
23:35:21 <elliott> it was a wild delusion!
23:35:52 <itidus21> `log [i]nformation is
23:35:57 <Jafet> Breaking news, look'n'say isn't turing complete
23:35:59 <HackEgo> 2010-01-10.txt:13:49:25: <AnMaster> does anyone know if information is transferred faster by reading or by listening. Assume a skilled reader and native speaker.
23:36:45 <monqy> `searchlog itidus philisoph
23:36:53 <HackEgo> 2012-01-08.txt:23:36:45: <monqy> `searchlog itidus philisoph
23:36:58 <monqy> oop
23:37:03 <monqy> `searchlog itidus philosoph
23:37:12 <HackEgo> 2011-08-14.txt:07:15:58: <itidus20> i don't have philosophical dilemmas about whether the opcodes of a rom are being emulated in a uniform way
23:37:20 <itidus21> wow
23:37:24 <Phantom_Hoover> Wow indeed.
23:37:43 <itidus21> i cant even remember what that is supposed to mean
23:38:15 <Phantom_Hoover> Fun fact: the person who invented coffee chocolates should be shot.
23:38:16 <monqy> `searchlog itidus philosoph
23:38:17 <itidus21> probably referring to NES emulation
23:38:23 <HackEgo> 2012-01-07.txt:12:36:21: <itidus21> fizzie: i don't understand why philosophy + retro gaming + symbols is so interesting
23:38:33 <oerjan> quintopia: this is for theoretical purposes, so you only _need_ two symbols, such as 0 or 1. otherwise, mathematicians will use whatever they fancy.
23:39:49 <oerjan> probably digits or letters from latin or greek alphabet, unless there's some reason to use something else (such as the problem coming from another part of math which uses specific symbols)
23:40:35 <itidus21> that was in reference to the vic20 chess video
23:41:58 <oerjan> also, that ever-popular "letter with number subscript"
23:42:41 <oerjan> when you don't really _care_ what the actual letters are, so you just make them indexed variables.
23:42:55 <oerjan> and the number may itself be a variable.
23:42:58 <itidus21> `searchlog itidus21 information
23:43:06 <HackEgo> 2012-01-06.txt:15:43:38: <itidus21> but.. in any normal human's life, the history of video games is useless information :D
23:43:13 <monqy> `searchlog itidus philosoph
23:43:23 <HackEgo> 2011-11-26.txt:05:10:20: <itidus21> i love nothing more than to philosophize about these things
23:43:51 <itidus21> i was once compared to a markov
23:44:42 <monqy> did it trigger an existential crisis
23:45:29 <itidus21> `searchlog itidus existential
23:45:38 <HackEgo> 2011-09-17.txt:08:13:16: <itidus21> all im saying is when i stagger into my brothers room laying down having a whiskey from him while my body is shaking.. which all seems caused by existential pondering
23:46:10 <Phantom_Hoover> OMFG
23:46:11 <Phantom_Hoover> OK
23:46:12 <Phantom_Hoover> stop
23:46:14 <Phantom_Hoover> everything
23:46:16 <Phantom_Hoover> i have worked
23:46:17 <Phantom_Hoover> out
23:46:23 <elliott>
23:46:24 <elliott>
23:46:24 <Phantom_Hoover> how to drag
23:46:27 <Phantom_Hoover> on my touchpad
23:46:34 <elliott> im stopinge
23:46:41 <elliott> Phantom_Hoover: how does it, work
23:46:41 <monqy> stop stop
23:46:41 <Phantom_Hoover> this
23:46:43 <Phantom_Hoover> omg
23:46:49 <elliott> does it work by
23:46:50 <elliott> buying a mouse
23:46:53 <Phantom_Hoover> no
23:46:56 <Phantom_Hoover> it works
23:47:00 <monqy> does it work by drageing
23:47:14 <Phantom_Hoover> by double clicking and then not taking your finger up on the second click
23:47:24 <Phantom_Hoover> there
23:47:28 <Phantom_Hoover> there is no limit
23:47:36 <Phantom_Hoover> for so long i have asked myself
23:47:43 <Phantom_Hoover> how do i drag without using the mouse buttons
23:47:48 <Phantom_Hoover> now i know
23:47:50 <elliott> dude
23:47:52 <elliott> how did you not like
23:47:53 <elliott> realise that earlier
23:48:20 <Phantom_Hoover> Because who clicks and then immediately drags??
23:49:12 <shachaf> Phantom_Hoover: It doesn't actually send a click.
23:49:31 <Phantom_Hoover> Yes, that also.
23:49:41 <elliott> What doesn't?
23:50:36 <itidus21> monqy: i know how to resolve this.. i will upload a random .txt file of mine and you will need a lot of help
23:50:44 <elliott> 13:59:00 <dmwit> roconnor: There's a Control.Monad.Error which provides a Monad instance for some Either's; and a fixed Monad class with a proper Either instance in the split of category-extras.
23:50:46 <elliott> NO STOP YOU'RE SO WRONG!
23:50:56 <elliott> shachaf: WHY DOES NOBODY REALISE THAT EITHER'S FAIL IS ERROR THESE DAYS
23:51:00 <oerjan> <elliott> Phantom_Hoover: OK, divmod is quite tricky. <-- oh dear, this is pikhq's bfm/pebbles all over again :P
23:51:07 <elliott> oerjan: heh howso
23:51:14 <shachaf> elliott: Hey, I was only half-paying attention in that conversation.
23:51:16 <elliott> i guess it's similar-looking
23:51:22 <elliott> shachaf: DMWIT HAS SAID IT _TWICE_ IN THIS LOG, TWICE!!!
23:51:25 * elliott cries.
23:51:27 <elliott> Wait.
23:51:28 <shachaf> I didn't even realise they were talking about MonadError until a long time later.
23:51:28 <elliott> Wait no.
23:51:32 <elliott> I want him to be ignorant.
23:51:36 <elliott> It means more SO questions for me to answer.
23:51:42 <elliott> "How come Either's fail isn't working?"
23:51:44 <shachaf> SO many more questions.
23:51:50 <elliott> Yes.
23:51:55 <shachaf> Delicious karma.
23:52:10 <shachaf> You should take Joel Spolsky hostage and demand a billion karma points.
23:52:22 <elliott> 14:02:51 <koeien> > let { x :: Integer; x = fromIntegral (maxBound :: Int) } in x * x -- values of type Integer can be arbitrarily large.
23:52:22 <elliott> 14:02:52 <lambdabot> 85070591730234615847396907784232501249
23:52:27 <elliott> Everyone knows 85070591730234615847396907784232501249 is the biggest number.
23:52:34 <Phantom_Hoover> WHY DOES NOBODY REALISE THIS CHANGES EVERYTHING
23:52:41 <oerjan> elliott: because pikhq basically implemented all of that stuff by compiling into balanced brainfuck.
23:52:45 <elliott> Phantom_Hoover: It only changes you being dumb to being slightly less dumb.
23:52:47 <shachaf> Phantom_Hoover: Just wait until you hear what happens when you TRIPLE-CLICK.
23:52:48 <elliott> oerjan: heh
23:53:02 <itidus21> a few pieces of this are cut and pasted. most sadly.. is my original work. http://hpaste.org/56275 .. this is like concentrated essence of `searchlog itidus philosoph
23:53:34 <elliott> 14:06:37 <roconnor> dmwit: anyhow It seems I shoudn't rely on fail to return Left
23:53:35 <elliott> 14:06:47 <roconnor> dmwit: so I should probably use ErrorT rather than Either?
23:53:35 <elliott> 14:07:27 <dmwit> roconnor: I doubt that behavior will change any time soon. It's relied on by many pieces of code other than yours. =P
23:53:42 <elliott> shachaf: I think he's going for irony.
23:54:31 <shachaf> Why am I consuming 85% dark chocolate?
23:54:35 <shachaf> I don't like dark chocolate.
23:54:42 <zzo38> Then don't.
23:54:57 <shachaf> Whoa.
23:55:00 <shachaf> You can do that?
23:55:21 <elliott> No.
23:55:22 <elliott> Continue.
23:55:23 <quintopia> oerjan: diophantine equations are not decidable over N. therefore, such problems are not in PSPACE. therefore, they cannot be written in such a way that the tarski-kuratowski algorithm can be used on them. anything wrong with this logic?
23:55:41 <elliott> 14:21:43 <shachaf> Making fail part of MonadZero rather than Monad seems more reasonable than the current situation.
23:55:52 * shachaf prepares for rebuke.
23:55:58 <elliott> shachaf: You should really have proposed the mzero :: (forall a. a) -> m a solution.
23:56:04 <oerjan> quintopia: probably not, but i lost you at tarski-kuratowski.
23:56:08 <shachaf> elliott: Ew.
23:56:15 <elliott> Actually, "mzero :: a -> m b" would work per parametricity, I think.
23:56:22 <elliott> shachaf: Come on, it's so brilliant.
23:56:24 <shachaf> That solution is a horrible joke.
23:56:38 <elliott> shachaf: Well... yes, but is it really worse than taking a String which /changes based on column number/?
23:56:51 <quintopia> oerjan: its the one that places problems on the arithmetic hierarchy
23:57:01 <elliott> shachaf: I mean, at least the idea of stuffing meaningful information into _|_ and extracting it in a safe place is well-covered.
23:57:45 <shachaf> Hmm. I guess that's a point.
23:58:11 <shachaf> The <- pattern-match failure thing is actually observable in the program, isn't it.
23:58:14 <shachaf> That's kind of horrible.
23:58:15 <kallisti> http://wiki.rpg.net/index.php/Worst_RPGs_ever
23:58:15 <elliott> Yep.
23:58:23 <shachaf> Actually shouldn't it be exists a. a or something?
23:58:31 <elliott> shachaf: AKA a.
23:58:35 <shachaf> Right.
23:58:36 <elliott> shachaf: The problem is that you always want it to be _|_.
23:58:41 <elliott> (forall a. a) forces that.
23:58:51 <shachaf> Yes, but who cares if it's not?
23:58:56 <kallisti> Racial Holy War (RaHoWa)
23:58:57 <elliott> Well, true.
23:58:57 <kallisti> The PCs play “White Warriors”, fighting against the classic 'enemies' of racist groups: blacks, Jews, latrinos (the game uses that term), and basically everyone outside of the “Aryan ideal”
23:58:58 <elliott> shachaf: Anyway, I mean, the _|_ message is obseravble in the program too, but only in the sin-bin.
23:59:08 <shachaf> elliott: I don't want my program to *depend* on _|_ existing.
23:59:16 <shachaf> elliott: Right, but that's different.
23:59:19 <elliott> And that seems reasonable, since you can layer on error handling with it.
23:59:23 <elliott> Right.
23:59:38 <shachaf> Also, either you typed very quickly or you're making use of the copy-paste-bin.
23:59:50 <elliott> I cache lines with ctrl-x sometimes.
23:59:53 <elliott> But I type very quickly too.
2012-01-09
00:00:03 <zzo38> I don't really like the way that pattern match failure can be caught in IO in Haskell. It should be a macro that changes a function to one resulting in IO and raising the proper exceptions for that, it makes more sense mathematically, this way, to me, at least
00:00:04 <oerjan> quintopia: oh hm reading the wp page, i doubt that.
00:00:27 * elliott would be happy with `class MonadZero m { where mzero :: m a; mzero = mfail (error "mzero"); mfail :: a -> m b; mfail _ = mzero }`.
00:00:41 <elliott> shachaf: I don't want to give the same treatment to Nothing, though.
00:00:42 <elliott> That's just wrong.
00:01:00 <shachaf> To Nothing?
00:01:19 <shachaf> You mean Maybe a = Nothing (exists b. b) | Just a?
00:01:21 <elliott> Right.
00:01:29 <elliott> That's how you told me about it.
00:01:31 <shachaf> How can it be wrong when it feels so right?
00:01:34 <shachaf> Right.
00:01:35 <Phantom_Hoover> <shachaf> You mean Maybe a = Nothing (exists b. b) | Just a?
00:01:39 <Phantom_Hoover> Maybe nothing exists?
00:01:49 <Phantom_Hoover> Maybe nothing exists, just a.
00:01:51 <shachaf> Phantom_Hoover: FAR OUT, DUDE
00:01:58 <shachaf> What if, like, NOTHING EXISTED
00:02:02 <Phantom_Hoover> Thus objectivism.
00:02:13 <elliott> a=a
00:02:14 <elliott> a=_|_
00:02:19 <elliott> Everything is bottom.
00:02:40 <shachaf> elliott: The real solution is to have GHC give that treatment to everything.
00:02:49 <shachaf> So any constructor has a hidden field for storing an optional _|_.
00:03:04 <elliott> shachaf: You know, I might not object to
00:03:10 <elliott> hide :: String -> a -> a
00:03:14 <elliott> seek :: a -> IO (Maybe String)
00:03:23 <shachaf> :-(
00:03:26 <elliott> I mean... it would work.
00:03:30 <shachaf> :-(
00:03:34 <elliott> (It wouldn't.)
00:03:42 <elliott> (Because it's not preserved under <any function>.)
00:04:00 <elliott> (The trick for mfail works specifically because you have to pack it manually in your type.)
00:04:03 <elliott> (So your (>>=) handles it.)
00:04:09 <shachaf> Right.
00:04:19 <elliott> I... kind of support this solution now.
00:04:23 <elliott> I wasn't expecting that to happen.
00:04:33 <shachaf> elliott: No you don't.
00:04:45 <shachaf> I mean, you like to think you do. But if you thought about it some more I'm sure you wouldn't.
00:04:45 <elliott> But I kind of do?
00:05:00 <elliott> Well, can *you* come up with a decent argument against it?
00:05:27 <shachaf> Other than "it's evil"?
00:05:40 <elliott> shachaf: It's as evil as error and asynchronous exceptions.
00:05:54 <elliott> That's a pretty low level of evil for Haskell.
00:06:14 <shachaf> Hmph.
00:06:32 <shachaf> Well, it has a certain charm to i.
00:06:44 <elliott> That charm is imaginary.
00:06:45 <shachaf> Why don't you go propose it in #haskell?
00:06:55 <elliott> ...Maybe later.
00:07:15 <shachaf> Why don't you write a proposal on SO?
00:07:17 <elliott> I mean, I might think it's a good idea, but I'm also sane enough to know everyone will think I'm crazy.
00:07:18 <shachaf> Oh, wait.
00:07:34 <elliott> shachaf: No discussion allowed, dude! You have to phrase it as "Would this be a good idea?".
00:07:38 <elliott> And hope it's not closed for being non-constructive.
00:08:21 <shachaf> elliott: THOSE INTUITIONIST FASCISTS.
00:08:50 <shachaf> Huh, Google has one result for "intuitionist fascist".
00:08:57 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
00:09:19 <monqy> is it a band name
00:09:30 <elliott> http://www.jstor.org/pss/1953935
00:09:31 <elliott> riveting
00:09:57 <shachaf> elliott: It's just too abstract for you.
00:10:00 <shachaf> You can't handle it.
00:12:18 * Phantom_Hoover → sleep
00:12:19 -!- Phantom_Hoover has quit (Quit: Leaving).
00:12:37 <elliott> shachaf: Did you actually sleep?
00:12:44 <elliott> You said you were going to and then reappeared.
00:13:00 <shachaf> I did sleep!
00:13:31 <elliott> Oh.
00:13:39 -!- zzo38 has quit (Remote host closed the connection).
00:15:48 <oerjan> quintopia: oh i have a hunch what your problem is. you may be confusing the polynomial and the arithmetic hierarchy.
00:16:21 <oerjan> being inside PSPACE applies to the former, being undecidable and stuff applies to the latter.
00:16:30 <kallisti> oh my god Acme::Comment
00:16:34 <kallisti> has so many comment styles...
00:16:34 <elliott> shachaf: Can you make Stack Overflow's rankings update quicker?
00:16:37 <kallisti> that you can use.
00:16:43 <kallisti> it has unlambda comments
00:17:20 <shachaf> elliott: Well, I have insider information on what the rankings will be like on the next update.
00:17:26 <shachaf> RANKINGS:
00:17:29 <shachaf> #1 ehird
00:17:43 <shachaf> It stops there.
00:17:44 <elliott> shachaf: Already is on at least one ranking: http://stackoverflow.com/tags/haskell/topusers
00:18:10 <oerjan> and while both can be thought of as alternating quantifiers, and so may have an algorithm such as tarski-kuratowski applies to them, they do it in a different way. iirc, in the polynomial hierarchy you want all the variables to be polynomially _bounded_, while in the arithmetic hierarchy bounded quantification is ignored.
00:18:10 <shachaf> http://stackoverflow.com/tags/monads/topusers
00:18:29 <monqy> congratulations
00:18:45 * elliott is nomadic.
00:19:29 <shachaf> http://stackoverflow.com/tags/higher-rank-types/topusers
00:19:38 <shachaf> elliott: Man, you're just winning that popularity contest.
00:20:10 <elliott> shachaf: Yessss
00:20:21 <oerjan> *applied
00:20:44 <shachaf> elliott: World Expert in Higher Rank Types in the last 30 days.
00:20:47 <shachaf> s/:/,/
00:21:29 <shachaf> elliott: That ehird fellow on SO is really polite and well-spoken and what not.
00:21:37 <shachaf> You should try to be more like him/her.
00:22:02 <elliott> shachaf: He's actually Don Stewart claiming the identity of another to deflect backlash against his aggressive Haskell evangelism.
00:22:03 <elliott> :tinfoil:
00:22:22 <elliott> shachaf: Anyway, the thing is that I'm polite in exchange for meaningless internet points.
00:22:27 <elliott> People don't give me the right kind of meaningless internet points here.
00:22:34 <shachaf> My attempt to be gender-neutral there only sort of worked.
00:22:40 <shachaf> @google "gender-neutral there only sort of worked"
00:22:42 <lambdabot> http://qdb.rawrnix.com/?top
00:22:42 <lambdabot> Title: Top Quotes
00:23:14 * oerjan gives elliott a swat point -----###
00:23:41 <elliott> oerjan: See, that's the wrong kind.
00:23:53 <oerjan> IMPOSSIBLE
00:23:53 <shachaf> elliott: Not so meaningless now, are they?
00:24:47 <kallisti> elliott: what if you could trade SO rep for bitcoins?
00:25:01 <elliott> kallisti: Then I'd have *two* kinds of meaningless internet point.
00:25:19 <kallisti> well, as far as I know bitcoin translates to real money I think...
00:25:36 <shachaf> BITCOIN BITCOIN BITCOIN.
00:25:44 <elliott> I'm sure I can buy drugs with SO rep too.
00:26:08 <kallisti> probably not.
00:26:32 <shachaf> I would sell elliott drugs for SO rep.
00:26:32 <kallisti> unless some drug user is looking to get some made SO rep.
00:26:35 <kallisti> s/made/mad/
00:26:45 <shachaf> kallisti: s/user/dealer/
00:27:05 <kallisti> it's not very difficult for a user to become a dealer in this situation.
00:27:27 <elliott> shachaf: How much?!?!?!?!?!
00:27:30 <kallisti> how to become a drug dealer at least temporarily: 1) have drugs 2) want to sell drugs 3) someone wants to buy your drugs
00:27:43 <oerjan> <elliott> OK maybe a Mac Lane party wouldn't be such a completely terrible idea? <-- it's a bit of a close call.
00:27:55 <elliott> oerjan: OK where's the pun.
00:27:56 <oerjan> to Mac LAN party, that is.
00:28:00 <shachaf> elliott: Can you ever transfer SO karma?
00:28:02 <elliott> I hate you.
00:28:04 <elliott> shachaf: Bounties.
00:28:10 <elliott> But abuse would get cracked down on pretty quickly.
00:28:22 <kallisti> especially abuse related to drug trafficking
00:28:26 <kallisti> (not really)
00:28:29 <shachaf> You don't want to mess with that Spolsky fellow.
00:28:32 <oerjan> elliott: yw
00:28:40 <elliott> oerjan: I still don't get it.
00:28:51 <shachaf> MacLane party?!
00:28:53 <kallisti> I'm surprised Acme::Comment doesn't have brainfuck-style comments.
00:28:54 <oerjan> elliott: a LAN party, with Macs.
00:28:59 <kallisti> I should submit a patch
00:29:01 <elliott> How is that a close call.
00:29:08 <elliott> shachaf: Sorry, only me and PH are invited.
00:29:14 <elliott> This is because neither of us know category theory.
00:29:19 <shachaf> :-(
00:29:22 <elliott> Also, we're not working mathematicians.
00:29:27 <shachaf> You gotta do category theory at a MacLane party.
00:29:28 <oerjan> elliott: just one letter away, duh
00:29:31 <kallisti> elliott: Mac Lane -> Mac LAN ha ha ha ha ha ha ha ha ha ha ha ha ha
00:29:44 <elliott> oerjan: I GET THAT PART
00:29:46 <elliott> whats the close clal part
00:29:47 <shachaf> kallisti: Hey, that mockery should be directed at me.
00:29:57 <kallisti> shachaf: ha ha ha ha ha ha ha ha ha ha ha haha
00:30:01 <shachaf> Oh, wait.
00:30:05 <shachaf> I thought I made an original pun.
00:30:15 <shachaf> But I was making a pun on Mac LAN which was making a pun on Mac Lane.
00:30:19 <kallisti> but no really I'm going to see if I can patch brainfuck comments into Acme::Comment
00:30:22 <kallisti> it would be so good.
00:30:23 * shachaf is completely oblivious.
00:30:46 <kallisti> imagine brainfuck comments in perl source... yesssssss
00:30:52 <elliott> "brainfuck comments"
00:31:00 <kallisti> yes
00:31:02 <kallisti> brainfuck comments
00:31:10 <kallisti> defined as anything that is not a valid brainfuck instruction
00:32:04 <oerjan> kallisti: i sense a bit of a problem there
00:32:09 <kallisti> oerjan: hmm
00:32:11 <kallisti> problem?
00:32:13 <kallisti> what do you mean?
00:32:44 <oerjan> kallisti: i don't think you can do much perl programming using only brainfuck instruction letters.
00:32:52 <kallisti> hmmm
00:32:55 <kallisti> I fail to see the importance
00:33:00 <kallisti> the import thing is comment syntax
00:33:00 <oerjan> O KAY
00:33:04 <kallisti> perl needs all the comments
00:33:22 <oerjan> i guess it _would_ improve readability a lot.
00:33:28 <kallisti> Acme::Comment even supports perl comments
00:33:36 <kallisti> use Acme::Comment type => 'Perl';
00:33:51 <kallisti> not to be confused with Python and AWK comments
00:33:58 <kallisti> which are also supported
00:34:57 <kallisti> also: Haskell comments
00:35:19 <kallisti> though it doesn't document that it supports the {- -} form
00:35:23 <kallisti> it just mentions the -- form
00:38:10 <kallisti> awesome intercal comments
00:39:04 <kallisti> (100) DO NOTE THAT the following perl code uses intercal comments
00:40:16 <kallisti> it doesn't mention anything require just the right amount of PLEASE
00:40:19 <kallisti> +about
00:40:24 <kallisti> *requiring
00:45:49 <oerjan> hm is INTERCAL case sensitive
00:46:37 <kallisti> I usually see intercal commands written in uppercase form but I don't really know.
00:47:13 -!- elliott has quit (Ping timeout: 252 seconds).
00:48:12 <kallisti> !perl my %x = (1, 2, 3, $x{1}); print %x
00:48:15 <EgoBot> 123
00:48:24 <kallisti> heh. it would be cool if you could actually do that.
01:03:05 -!- Klisz has joined.
01:25:42 <oerjan> > [0..]>>-liftM2(,)"ab"
01:25:43 <lambdabot> No instances for (GHC.Num.Num [a2], GHC.Enum.Enum [a2])
01:25:43 <lambdabot> arising from a u...
01:26:02 <oerjan> > [0..]>>-liftM(,)"ab"
01:26:03 <lambdabot> Couldn't match expected type `[b]'
01:26:03 <lambdabot> against inferred type `b1 -> (a1...
01:27:34 <oerjan> > [0..]>>-mapM(,)"ab"
01:27:35 <lambdabot> [('a',0),('a',1),('b',0),('a',2),('b',1),('a',3),('b',2),('a',4),('b',3),('...
01:31:20 <kallisti> oerjan: congrats
01:31:40 <oerjan> what?
01:32:15 -!- Tinman-811 has joined.
01:33:12 -!- Tinman-811 has left.
01:33:15 * oerjan wonders what that was about
01:33:22 <kallisti> oerjan: it's a fancy zipWith
01:33:50 <oerjan> it's not zipWith
01:34:41 <kallisti> how so?
01:34:47 <kallisti> I mean other than cycle being applied to "ab"
01:36:01 <oerjan> no. it's closer to liftM2(,) but it's not that either, if you look carefully.
01:36:14 <kallisti> oh yes
01:36:45 <kallisti> isn't it like zipWith but slightly out of order?
01:37:14 <oerjan> not particularly.
01:40:40 <kallisti> variable `elem` [constant1, constant2]
01:40:53 <kallisti> I wonder if GHC unrolls this expression during compilation.
01:41:13 <kallisti> I guess it would be difficult to do generally but I feel that it's possible.
01:41:39 <kallisti> but you have to know that elem terminates.
01:45:44 <kallisti> perhaps if you had a special type of rule pragma, programmers could apply transformations at compile-time under the condition that an argument is a constant.
01:47:10 <kallisti> but... really for lists that could be handled automatically. If it's determined that a function has a terminating condition and is applied on a constant list
01:50:33 -!- testbot2 has joined.
01:50:33 -!- testbot2 has quit (Excess Flood).
01:53:24 -!- shi7brix has joined.
01:53:30 -!- testbot2 has joined.
01:53:30 -!- testbot2 has quit (Excess Flood).
01:53:47 -!- augur_ has joined.
01:54:32 -!- shi7brix has left.
01:55:06 -!- augur has quit (Read error: Connection reset by peer).
01:55:30 <oerjan> i sense that the test might not be entirely successful.
01:55:32 -!- testbot2 has joined.
01:55:32 -!- testbot2 has quit (Excess Flood).
02:01:00 -!- testbot2 has joined.
02:01:00 -!- testbot2 has quit (Excess Flood).
02:01:45 -!- augur_ has changed nick to augur.
02:08:46 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
02:10:48 -!- testbot2 has joined.
02:12:28 -!- testbot2 has quit (Client Quit).
03:02:30 -!- yiyus has quit (Read error: Connection timed out).
03:16:23 -!- Frooxius has joined.
03:16:33 -!- yiyus has joined.
03:28:12 -!- azaq23 has quit (Quit: Leaving.).
03:35:46 -!- Klisz has joined.
03:36:32 <kallisti> `words --italian --eng-all 25
03:36:44 <HackEgo> luciamoraca denun incrivald pungerait reto delanoscoute fiempt acorito buti adthroehoull pati syj nurerà sbile esis p6rime sobron coull's dillework instricaven prek ressimo getaskau schiger invivam
03:37:51 <kallisti> p6rime..
04:00:18 -!- monqy has quit (Quit: hello).
04:03:47 -!- lambdabot has quit (Ping timeout: 240 seconds).
04:07:44 -!- lambdabot has joined.
04:47:06 -!- MDude has changed nick to MSleep.
04:48:21 -!- zzo38 has joined.
04:51:36 -!- oerjan has quit (Quit: Good night).
04:52:27 <zzo38> I added one idea to esolang list of ideas
04:59:02 <zzo38> I wrote this idea: If you use a variable where a specific type is expected, it is an implicit cast and it changes the actual value of the variable to that casted value too, rather than only reading it, and there isn't much other way to affect values of variables.
05:01:58 -!- qubital has joined.
05:04:07 -!- qubital has left.
05:12:35 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
05:21:07 <zzo38> http://esolangs.org/wiki/List_of_ideas Now I moved some of the sections, and now I added one more thing which mentions the [[User:Zzo38/Astro-Q]] article so it is no longer completely irrelevant
05:23:55 <zzo38> Now there is one section for music, one section for mathematics, one section for physics, one section for implementation, etc
05:32:35 <quintopia> hmm
05:32:59 <zzo38> I now added a "Game" section too.
05:33:27 <quintopia> i like the reorganization
05:34:56 <zzo38> Good.
05:36:11 <zzo38> I have added two additiona entries to the page:
05:36:16 <zzo38> * Programming language using TeX DVI output as the program code.
05:36:26 <zzo38> * Physics of planets/astronomy tells the program what to do (possibly by using astrological signs or aspects or whatever). Possibly make such an esolang feature usable with User:Zzo38/Astro-Q
05:45:23 <zzo38> OK, now I have even done more reorganization to the list of ideas
05:48:11 <zzo38> Is it better now?
06:00:00 <quintopia> it looks the same as the last i looked
06:00:13 * quintopia too lazy to check history
06:00:50 -!- Guest554116 has quit (Quit: !).
06:41:51 -!- itidus20 has joined.
06:43:27 -!- sebbu2 has joined.
06:43:27 -!- sebbu2 has quit (Changing host).
06:43:27 -!- sebbu2 has joined.
06:46:36 -!- sebbu has quit (*.net *.split).
06:46:36 -!- MSleep has quit (*.net *.split).
06:46:36 -!- Madoka-Kaname has quit (*.net *.split).
06:46:36 -!- Sgeo has quit (*.net *.split).
06:46:36 -!- kmc has quit (*.net *.split).
06:46:36 -!- itidus21 has quit (*.net *.split).
06:46:36 -!- Deewiant has quit (*.net *.split).
06:46:36 -!- rodgort has quit (*.net *.split).
06:46:36 -!- Nisstyre has quit (*.net *.split).
06:46:36 -!- atehwa has quit (*.net *.split).
06:50:00 -!- kmc has joined.
06:50:00 -!- MSleep has joined.
06:50:00 -!- Madoka-Kaname has joined.
06:50:00 -!- Sgeo has joined.
06:50:00 -!- Deewiant has joined.
06:50:00 -!- rodgort has joined.
06:50:00 -!- Nisstyre has joined.
06:50:00 -!- atehwa has joined.
06:50:35 -!- Nisstyre has quit (Max SendQ exceeded).
06:52:22 -!- Nisstyre has joined.
07:05:06 -!- itidus20 has quit (Read error: Connection timed out).
07:06:15 -!- itidus20 has joined.
07:12:06 <zzo38> So,,, does it understand,,, now???
07:30:17 -!- zzo38 has quit (Remote host closed the connection).
07:37:35 -!- pikhq_ has joined.
07:39:41 -!- pikhq has quit (Ping timeout: 240 seconds).
07:55:35 -!- Phantom_Hoover has joined.
07:57:08 <kmc> http://docs.python.org/library/cookie.html#Cookie.SerialCookie it's great that the standard library has such a convenient function which is so incredibly dangerous
07:57:24 <kmc> "Stores any Python value in a cookie! This will cut your balls off, 100% guaranteed."
08:03:42 <shachaf> Well, at least it's deprecated.
08:06:14 <fizzie> And gone in 3.x.
08:16:00 <Jafet> "pickle strings can be crafted to cause arbitrary code to execute on your server"
08:16:07 <Jafet> They make it sound difficult
08:17:34 <fizzie> Only the utmost expert criminals can craft such strings, and it takes months of meticulous work.
08:17:55 <shachaf> fizzie: I usually just buy a pre-crafted string on the black market.
08:18:05 <shachaf> Of course, once you use it, it can never be used again.
08:31:32 <kmc> hand-crafted by loving artisans according to the traditional ways of a bygone era
08:35:23 <kmc> shachaf, deprecating it is just a hilariously inappropriate response
08:35:51 <kmc> it's good if upgrading Python breaks code using this function
08:36:13 <kmc> because that code is almost certainly exploitable
08:36:46 <pikhq_> We live in a world that deprecated gets, instead of redefining it to have semantics of "#error YOU ARE A MORON"
08:37:19 -!- nooga has joined.
08:37:20 <kmc> i think that's not so bad
08:37:23 <kmc> not as bad
08:37:41 <pikhq_> Though I suppose it's *theoretically* possible to use gets securely...
08:37:45 <kmc> there is a lot of C code which is never going to be run setuid or as a remotely accessible service
08:38:04 <pikhq_> If you've redefined stdin to be a pipe, and your process is on the other end.
08:38:51 <kmc> whereas most web services try to enforce some separation between "users who can submit unauthenticated HTTP requests" and "users who can execute arbitrary code as the server"
08:38:54 <pikhq_> kmc: Or run by a end user?
08:39:06 <kmc> pikhq_, ?
08:39:11 <pikhq_> I don't want input to a program deleting ~
08:39:21 <kmc> yeah
08:39:28 <kmc> running such a program on untrusted input would also be bad
08:40:25 <kmc> also C has a standard saying you need to provide gets()
08:40:43 <kmc> Python does whatever the fuck they want
08:41:02 <kmc> anyway in both cases i'd support hiding it behind some flag that requires positive action to be enabled
08:41:24 <shachaf> C11 removed gets(), it seems.
08:41:27 <pikhq_> Yup.
08:41:32 <kmc> i hate the attitude that a vulnerability isn't a vulnerability if it's documented in some document nobody reads
08:41:53 <pikhq_> Though POSIX still mandates it.
08:42:26 <kmc> by the way in my Python 2.7.2+, SerialCookie does not raise a DeprecationWarning, and help(Cookie.SerialCookie) gives no warning about security
08:42:47 <pikhq_> Though a strictly conforming POSIX app SHALL NOT use it.
08:43:03 <kmc> but it does say "IF AN INCOMING VALUE IS NOT IN A VALID PICKLE, FORMAT, THEN AN EXCEPTION WILL BE RAISED. Note: Large cookie values add overhead because they must be retransmitted on every HTTP transaction. Note: HTTP has a 2k limit on the size of a cookie. This class does not check for this limit, so be careful!!!"
08:43:13 <kmc> that's what's really important
08:43:19 <shachaf> OK, that's kind of ridiculous.
08:43:31 <shachaf> At least it ends in "be careful!!!".
08:43:35 <kmc> be careful!!! of gasoline fumes (while you're taking a chainsaw to the groin)
08:43:36 <shachaf> So you know to be careful.
08:43:39 <kmc> right
08:44:08 <kmc> my software is 100% secure
08:44:15 <kmc> because the documentation says "this program may have bugs, don't trigger them"
08:44:18 <shachaf> Once the user has been told that they should be careful, it's no longer the library author's fault if something bad happens.
08:44:28 <kmc> if you have a security bug, then you have violated the software contract
08:45:26 <pikhq_> Not to mention the law of least surprise.
08:46:18 <kmc> i can't be held responsible for what happens if people use the software out of spec
08:46:36 <pikhq_> I can't be held responsible for my actions against people who write unreasonable specs.
08:46:39 <pikhq_> :)
08:47:07 <kmc> it's a lot like secure programming in C
08:47:13 <kmc> there's only one simple rule
08:47:19 <kmc> don't make any mistake, ever.
08:47:22 <shachaf> kmc: Where would Ksplice be if people didn't write bugs?
08:47:41 <kmc> shachaf, feature upgrades!
08:48:17 <kmc> every day you could download new microoptimizations
08:48:38 <kmc> (except that ksplice'd functions are slightly slower to call, but oh well)
08:49:00 <shachaf> Because of an added jump?
08:49:05 <kmc> yeah
08:49:12 <kmc> the beginning of the old function is overwritten with a jump to the new
08:49:16 <pikhq_> shachaf: Broken window fallacy? :)
08:49:41 <pikhq_> kmc: Clever solution.
08:49:50 <shachaf> kmc: Presumably if you patch a function multiple times, it will only ever get one extra jump, though, right?
08:49:52 <kmc> (also other entry points to the old function, if there are any)
08:50:01 <pikhq_> Probably also the only way of doing any hot-patching of a binary.
08:50:16 <kmc> pikhq_, it's not that clever, it's probably the least interesting thing about how ksplice works
08:50:22 <kmc> shachaf, I don't recall
08:51:19 <shachaf> What are the more interesting parts of Ksplice?
08:51:23 <shachaf> I should probably just read the paper.
08:51:41 <kmc> more interesting is the fact that ksplice can patch a static function, or can patch in new code which calls a static function
08:51:46 <kmc> so it's not relying on the exported symbols list
08:52:07 <pikhq_> Oh, right, ksplice works automatically from basically whatever happens to be the running kernel.
08:52:19 <kmc> not really
08:52:26 <pikhq_> Which gives you a lot of work to do before you even have a hope of hot-patching...
08:52:40 <kmc> you need a source tree for the kernel you're currently running
08:53:28 -!- xandy has left ("Leaving").
08:53:29 <kmc> when preparing a patch, you build the old and new code with gcc -ffunction-sections
08:53:31 -!- Jafet has quit (Quit: Leaving.).
08:54:03 <kmc> the ksplice tools do a content-aware diff on the resulting object files
08:54:58 <kmc> using -ffunction-sections means that you have a relocation for every call
08:56:42 <kmc> for a given call instruction in the binary, you know by name which function is being called, even if it's non-exported
08:57:04 <kmc> at runtime, you compare the pre-patched code you built with the actual running kernel, instruction by instruction
08:57:49 <kmc> this is for safety but it also allows you to find the load addresses of those non-exported functions
08:59:22 <kmc> because you see that same call instruction again, and decode its target
09:00:31 <shachaf> With inline functions I suppose you just patch the function calling it?
09:00:40 <kmc> right
09:00:57 <kmc> the tools work at the binary level, and so are mostly oblivious to inline functions etc.
09:01:16 <kmc> if you change a function which is inlined to 20 callers, it looks like you changed those 20 functions
09:01:30 <kmc> (which is awkward because patching more code => bad, but there's really no way around it)
09:02:15 <kmc> also sometimes a change in the code for one function will cause gcc to change its mind about register allocation in an unrelated function
09:02:20 <kmc> go figure
09:02:29 <kmc> then you end up patching both
09:02:53 <kmc> (though they were working on solutions to that problem, but I probably should not talk about them)
09:07:25 <kmc> pikhq_, so yeah, it only works from whatever happens to be the running kernel, if you can replicate a build environment for that kernel
09:07:36 <kmc> that's part of the value the commercial service added, versus the open-source tools
09:08:35 <kmc> the admins at Billy Bob's Discount VPS and Fried Chicken probably don't have the time or skills to make a bug-compatible copy of the CentOS 5 kernel build environment
09:09:04 <kmc> but it's true that it works on kernels which were built with no knowledge of ksplice
09:09:29 <kmc> and we were proud of hot-patching machines which were last booted before the company or product existed
09:10:07 <kmc> the other interesting thing about ksplice is the way it ensures that you're not splicing a function that's currently in use
09:10:22 <kmc> which is basically, it scans every kernel stack
09:10:28 <kmc> but there's a bunch of subtlety and trickiness to that
09:11:23 <kmc> linux has this great feature called stop_machine which... does what it says on the tin
09:12:09 <kmc> it gives your code complete control of the (OS-visible behavior of) processors
09:12:34 <kmc> but of course it's tricky and buggy and double so if you're talking about supporting RHEL4 which means 2.6.9
09:14:00 <shachaf> How long did Ksplice make a machine unresponsive, in bad cases?
09:14:02 <shachaf> (Assuming it did.)
09:14:39 <kmc> Virtuozzo 4 has a bug which makes stop_machine very slow
09:14:57 <kmc> other than that, it's probably a few ms at worst
09:15:10 <kmc> a lot of the prep work is done outside stop_machine
09:15:47 <kmc> loading the update (which is itself a kernel module) and matching the code
09:16:44 <kmc> if the stack check inside stop_machine fails, then it gives up the CPU before trying again
09:16:53 <kmc> (obviously, because nothing's going to change if it doesn't)
09:23:54 -!- Deewiant has quit (Ping timeout: 240 seconds).
09:26:21 <pikhq_> ... RHEL 4 is still supported oh my god why
09:30:33 -!- Deewiant has joined.
09:34:49 -!- Sgeo has quit (Read error: Connection reset by peer).
09:39:01 -!- Sgeo has joined.
09:42:23 -!- ais523 has joined.
09:43:57 <shachaf> What a smug yuppie kmc is.
09:44:24 <kmc> haha
09:44:33 <kmc> some people are wrong about trains on the internet
09:50:59 <Phantom_Hoover> How did I not know about Hampture until now.
09:52:05 -!- itidus20 has quit (Quit: Leaving).
09:53:04 -!- itidus21 has joined.
09:54:48 <kmc> pikhq_, why? because people would pay for it :D
09:59:53 -!- monqy has joined.
10:07:28 -!- atrapado has joined.
10:07:57 -!- myndzi has quit (Read error: Connection reset by peer).
10:11:02 -!- myndzi has joined.
10:15:24 <atrapado> do you prefer python style nesting or c style nesting: tabs or {} ?
10:17:10 <shachaf> Python doesn't use tabs, it uses indentation.
10:17:47 <atrapado> well, you can use tabs
10:18:24 -!- nooga has quit (Ping timeout: 252 seconds).
10:19:52 <atrapado> any preference?
10:21:18 <atrapado> i see that brackets are better for pasting code here
10:22:17 <kallisti> 05:16 < shachaf> Python doesn't use tabs, it uses indentation.
10:22:30 <kallisti> shachaf wins the Pedantic Point of Year award. congratulations!
10:22:38 <kallisti> *the Year
10:22:48 <shachaf> I assumed you were just Russian.
10:23:10 <monqy> kallisti wins generosity 2012
10:23:53 <kallisti> no doubt because of my revolutionary searchlog tool of the year.
10:31:34 -!- ais523 has quit (Ping timeout: 244 seconds).
10:38:03 -!- myndzi has quit (Read error: Connection reset by peer).
10:41:59 -!- myndzi has joined.
10:44:22 -!- ais523 has joined.
10:44:57 <ais523> hmm… the department has been trying to persuade people (including me) to add "follow us on twitter: https://twitter.com/uobcompsci" to their signatures
10:45:12 <ais523> so, umm, I'm going to discharge my CIVIC DUTY by mentioning it once in #esoteric
10:45:35 <shachaf> What's a UOB?
10:46:05 <shachaf> "Choosing to Study MSc Computer Science at Birmingham was a life transforming decision for me."
10:46:27 <shachaf> 10 PRINT Tweets from the School of Computer Science at the University of Birmingham; 20 GOTO 10
10:47:01 <ais523> I haven't actually read it; should I?
10:47:14 <shachaf> Not much point.
10:47:49 -!- Vorpal has joined.
10:48:01 <ais523> I'm not actually entirely sure who runs that account
10:48:11 <ais523> I /hope/ it's a consortium of staff, of which some are trolling the others
10:48:34 <shachaf> They followers/followees ratio isn't as good as mine.
10:48:38 <Phantom_Hoover> ais523, I assume that you detest Twitter and all who use it because of some technical faux pas or other they've made?
10:48:39 <fizzie> It seems a reasonably active account, though.
10:48:52 <ais523> Phantom_Hoover: I don't actually detest Twitter at all
10:49:00 <ais523> although I'm annoyed at the way it uses JavaScript, that's about it
10:49:02 <fizzie> Latest own twat seems to be: "And so begins the countdown to the first personal hygiene related mail of the year."
10:49:11 <Vorpal> this looks interesting *loads log*
10:49:28 <fizzie> Oh, it's a recently started thing, too.
10:49:33 <shachaf> Load slog.
10:49:53 <Vorpal> shachaf, that too
10:50:12 <fizzie> They could retweet a couple of fungot tweets, that's always the sure road to success.
10:50:12 <fungot> fizzie: like a very clear mirror to break, luckwise. it is a good idea. i will go and make a tent down a gas tank
10:50:53 <fizzie> fungot: You've got like 19 followers. (Most of them seem to want to sell something.)
10:50:53 <fungot> fizzie: you try again. you feel stupid and hate yourself a very official? you'll be up to your first time either.
10:50:55 <ais523> fizzie: it wouldn't even be entirely offtopic
10:50:57 <ais523> only /mostly/ offtopic
10:51:36 <ais523> Vorpal: context is that the university I work for are trying to persuade its employees to put a link to their twitter account in their signatures
10:51:55 <fizzie> Vorpal: Heh, fungot tweeted "cfunge may already work that way" 12 hours ago.
10:51:56 <fungot> fizzie: to the left is that house shape you've seen everything! i just can't get a clear shot and killed some powerful monsters with his new hammer
10:52:07 <Phantom_Hoover> OMG fungot has twitteR??
10:52:07 <fungot> Phantom_Hoover: a little later... a few minutes. wow he is so cool. two more large gizmos. it was once the island
10:52:10 <Phantom_Hoover> *twitter
10:52:56 <fizzie> Phantom_Hoover: E's even customized eir page background to have the source code in it.
10:53:11 <fizzie> fungot: Aren't you just the cleverest bot. *pat*
10:53:11 <fungot> fizzie: his birthday is in a few minutes. wow he is so cool. two more large gizmos. it was once the island, but honestly i've only read a few books on it.
10:53:17 <Phantom_Hoover> There is no sense in which this is not the best.
10:53:55 <ais523> ^style
10:53:55 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck* ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
10:54:01 <fizzie> Some day I should stick in more styles in the twitter-poster, it's only got four at the moment.
10:55:44 <Phantom_Hoover> Use all the styles!
10:57:12 <Vorpal> <ais523> Vorpal: context is that the university I work for are trying to persuade its employees to put a link to their twitter account in their signatures <-- I saw that in the log
10:57:34 <Vorpal> <fizzie> Vorpal: Heh, fungot tweeted "cfunge may already work that way" 12 hours ago. <-- hm, did it specify what way?
10:57:34 <fungot> Vorpal: as a veteran of the game in the first place, so he can just button it
10:57:48 <Vorpal> okay that made perfect sense.
10:57:56 <Vorpal> fizzie, also got a link to the twitter page?
10:58:21 <fizzie> Vorpal: https://twitter.com/fungot -- and not really, though the previous "About IRC" tweet was: ":) i'll have none of that is not discrete. the server is in delphi right now"
10:58:21 <fungot> fizzie: it is a hate so pure and... pumpkin seeds?
10:58:28 <Vorpal> <Phantom_Hoover> OMG fungot has twitteR?? <-- yes, I had forgot about it though. Was ages ago it was last mentioned
10:58:28 <fungot> Vorpal: an old colonel lost, but a new brother gained. together they will ascend, each time you must be adventurin'.
10:58:46 <Vorpal> fizzie, well, definitely not about cfunge then
10:58:46 <fizzie> So I guess it could be that cfunge is discrete? Or in Delphi?
10:59:10 <Vorpal> fizzie, not the latter last I checked
10:59:17 <fizzie> The immediate preceding tweet was "About Chrono Trigger: him. and only the hero can wield your sword with you until then. would you mind if i walked around with you for a..."
10:59:18 -!- rupsbant has joined.
10:59:25 <fizzie> I'm not sure how that would be related to cfunge.
10:59:28 <Vorpal> fizzie, and since it runs on a computer it is probably discrete yes
10:59:32 <fizzie> Do you wield swords in it often?
10:59:46 <Vorpal> fizzie, in real life or in RPGs?
11:00:01 <fizzie> In cfunge. With cfunge. I don't know, somehow related to cfunge.
11:00:04 <Vorpal> in real life I don't think I ever wielded a sword
11:00:06 <Vorpal> nor in cfunge
11:00:19 <fizzie> It could be a metaphorical sword, I guess.
11:00:24 <Vorpal> cfunge doesn't even implement SWORD (it could in 64-bit mode maybe?)
11:00:25 <fizzie> The sword of optimization, or something.
11:01:11 <Vorpal> fizzie, that is probably one of those dual-edged things
11:05:41 <fizzie> Premature sword is bad. Sometimes it's best leave the sword to the compiler. It's often profitable to sword your algorithms instead of swording the implementation. A profile-guided sword can be more effective. Hmm.
11:07:30 <Vorpal> quite
11:09:43 <fizzie> Ooh, from #nethack, an object lesson of "be careful what you wish for":
11:09:43 <fizzie> <Rodney> dingo (Tou Hum Fem Neu) wished for "blessed fireproof +2 Staff of Aesculapius", on turn 992
11:09:43 <fizzie> <Rodney> dingo (Tou Hum Fem Neu), 204 points, killed by touching The Staff of Aesculapius
11:10:00 * Vorpal tries to understand the point of these java API docs: "This protected field is implementation specific." Why even document that it exists if you can't use it in a sane way?
11:10:39 <Vorpal> so I assume it says that protected field must exist just that you can't use it portably?
11:11:18 <Vorpal> fizzie, hah
11:11:48 <Vorpal> fizzie, gah I haven't played nethack for over a year, which class is that staff for? Was it priest?
11:12:09 <fizzie> Healer.
11:12:11 <Vorpal> ah
11:12:52 <fizzie> "Asclepius (play /æsˈkliːpiəs/; Greek: Ἀσκληπιός Asklēpiós [asklɛːpiós]; Latin Aesculapius) is the God of Medicine and Healing in ancient Greek religion. -- The rod of Asclepius, a snake-entwined staff, remains a symbol of medicine today, --"
11:13:11 <fizzie> It's the snake-on-a-stick thing.
11:13:27 <Phantom_Hoover> *One* of the snake-on-a-stick things.
11:13:47 <fizzie> Well, yes; but isn't the other one the snakes-on-a-stick?
11:13:55 <Vorpal> fizzie, when I was small I used to think it was somehow related to doctors curing you from poisonous snake bites
11:14:06 <Vorpal> (I wasn't very clear on the details of it)
11:14:29 -!- Jafet has joined.
11:14:38 <Vorpal> fizzie, also that needs to be a movie
11:23:40 <Phantom_Hoover> http://www.plasticbrickautomaton.com/?id=87
11:24:00 <Phantom_Hoover> I have seen this comic before, a long time ago, but it is now 10,000 times better.
11:24:02 <Vorpal> ais523, there still?
11:24:07 <ais523> yes
11:24:42 <Vorpal> ais523, I'm trying to make sense of java generics. If you have say Foo<T> how do you say that T must be a class that implements interface Bar?
11:24:57 <ais523> Foo<? extends Bar>
11:25:01 <Vorpal> ah
11:25:13 <Vorpal> ais523, there is no way to specify more than one interface there?
11:25:22 <ais523> Foo<? extends Bar, Baz>
11:25:35 <Vorpal> ah
11:27:56 <Vorpal> ais523, also while java does seem to have enum a lot of stuff seems to use plain integer constants instead, were enums added recently or something?
11:28:08 <ais523> Java's one of the few languages that actually has proper notation for covariance and contravariance in templates
11:28:20 <ais523> the problems are a) nobody uses it, and b) the semantics are wrong
11:28:25 <fizzie> Vorpal: In 1.5 (5.0), so that's reasonably recently.
11:28:27 <Vorpal> ah
11:28:39 <Vorpal> that explains why stuff like BorderLayout doesn't use it
11:31:19 -!- kallisti has quit (Changing host).
11:31:19 -!- kallisti has joined.
11:31:58 <Vorpal> hm are the docs just incomplete or can't you specify the value if a enum constant? Like you can in C.
11:32:34 <Vorpal> fizzie, ^
11:32:46 <fizzie> You're free to add a field for any custom manually specified data.
11:32:53 <fizzie> And then specify those in the constructors.
11:33:00 <Vorpal> ouch
11:33:09 <fizzie> As for the "raw" integer values, I think those are always consecutive from 0..N.
11:33:29 <Vorpal> fizzie, well I need to match external values here, and they happen to be sparse so. Meh.
11:33:43 <fizzie> Well, add a field for it, then.
11:34:29 <Vorpal> for all: 0 is not a valid value for example. So either I would need a dummy value or just do it without enum
11:34:39 <Vorpal> (or adding a field for every one)
11:34:46 <fizzie> No, I mean.
11:35:35 <fizzie> public enum Meh { ZONK(1), FLONK(42), BONK(1000); public final int zlorbvalue; Meh(int zlorb) { zlorbvalue = zlorb; } } .... Meh k = ZONK; ... dothezlorb(k.zlorbvalue); ...
11:35:37 <fizzie> That sort of thing.
11:35:45 <Vorpal> oh you write it like that. Okay.
11:36:27 <fizzie> You can make the constructor populate a static Map<Integer,Meh> if you want to have a static method so you can have Meh.fromZlork(42) == Meh.FLONK.
11:37:01 <fizzie> Uh, zlorb == zlork here.
11:37:08 <Vorpal> hm
11:37:24 <Vorpal> seems like a rather hackish solution to handle this.
11:40:27 <fizzie> The only built-in thing is the Meh.values() which returns a Meh[] where the indices correspond to the "ordinals" (i.e. the Meh.ZONK.ordinal() value); you can't really have a sparse set there.
11:40:37 <fizzie> Unless you put some dummies in.
11:41:01 <fizzie> I think it's slightly discouraged to care about the actual numeric values of the ordinals, anyway.
11:41:15 <fizzie> If you want something meaningful, you can put the meaningfulness in explicitly.
11:41:38 <Vorpal> also an issue I have with swing is figuring out what exactly an event listener triggers on. For some it is obvious, like mouseClicked, but what does an actionPerformed do on a JButton?
11:41:58 <Vorpal> I would assume it is when the button is activated either through the keyboard or the mouse?
11:45:31 <fizzie> When it gets twoggled, yes; I'm sure they've documented that stuff somewhere.
11:46:19 <fizzie> "An action event occurs, whenever an action is performed by the user. Examples: When the user clicks a button, chooses a menu item, presses Enter in a text field. The result is that an actionPerformed message is sent to all action listeners that are registered on the relevant component."
11:46:33 <fizzie> (Swing tutorial trail; I have no idea where it is in the reference docs.)
11:47:04 -!- myndzi has quit (Read error: Connection reset by peer).
11:48:25 -!- nooga has joined.
11:50:12 -!- atrapado has quit (Read error: Connection reset by peer).
11:51:08 -!- myndzi has joined.
11:54:36 -!- myndzi has quit (Read error: Connection reset by peer).
11:59:21 -!- myndzi has joined.
12:00:38 -!- rupsbant has quit (Remote host closed the connection).
12:07:39 -!- nooga has quit (Quit: Lost terminal).
12:10:59 <Vorpal> fizzie, right, I was mainly searching the reference docs for JButton and the ActionListener
12:11:05 <Vorpal> it would make sense if either of those had it
12:11:19 <Vorpal> (I also did look at super classes, AbstractButton or whatever it was)
12:12:54 <fizzie> Well, JButton's main documentation does link to the whole 'Action' thing (where you can bind a single action into multiple controls, to have menu items and buttons that do the same thing and all get "configured" from one source); as well as the "How to Use Buttons" tutorial snippets.
12:13:04 <fizzie> So it's "incorporated by reference", like the lawyers say.
12:13:20 <Vorpal> hm okay
12:14:29 <Vorpal> fizzie, btw I realised that using enum is less convenient for another reason: I would end up casting to byte a lot then.
12:14:52 <Vorpal> (unless you can set the backing type somehow)
12:15:33 <fizzie> Not the ordinal, but of course the "zlorbvalue" can be a byte easily, if you want to have manually set values.
12:16:08 <Vorpal> right
12:18:36 <fizzie> Incidentally, if you want to follow the conventions, in my example above you should have a private field + public getter method instead.
12:19:32 <Vorpal> fizzie, also "turn" is a somewhat confusing name in a turn based game where the players alternate making moves. You can either think of it as the period of one player making their move ("your turn" popping up on screen for that player) or as the period until the cycle between the player starts over
12:19:43 <Vorpal> any good idea how to not confuse those two sense in naming
12:19:48 <Vorpal> (of variables and so on)
12:20:38 <fizzie> Not really the best person to ask, given how I well and truly I confused those in the AI course framework. :p
12:20:49 <Vorpal> heh
12:20:57 <fizzie> I mean, you *could* use the technical term "ply", but that's also liable to confuse some.
12:21:10 <Vorpal> fizzie, also makes no sense in the case of tank wars
12:21:11 <Vorpal> :P
12:21:15 <Vorpal> brb food is ready
12:22:13 <fizzie> "ply: In two-player sequential games, a "half-turn", or one move made by one of the players." (Wiktionary.)
12:22:28 <ais523> Vorpal: enums can have properties in Java
12:22:42 <ais523> and even methods
12:22:49 <fizzie> ais523: As seen in my enum Meh example, perhaps?
12:22:50 <ais523> so you could add your own getAsByte method on your enum
12:23:00 <ais523> perhaps
12:23:05 <ais523> it's quite a way back in scrollback, so I missed it
12:23:17 <fizzie> Oh, right; well, yes, you could return the ordinal as a byte, too.
12:23:19 <ais523> I haven't been following the conversation, and was trying to weigh in from a screenful of scrollback
12:23:41 <fizzie> The example was about having a sparse set of externally-meaningful numbers associated with each enum constant.
12:24:17 <fizzie> Vorpal: Of course if you still use "turn" for the "whole thing", it's still sort-of confusing, and I'm not sure if there's a ply-like specifically specific word for that.
12:29:00 <Vorpal> <fizzie> "ply: In two-player sequential games, a "half-turn", or one move made by one of the players." (Wiktionary.) <-- it is an n-player game though (for n up to suitable values on the current map, no restriction implemented in the server yet)
12:29:49 <Vorpal> <ais523> I haven't been following the conversation, and was trying to weigh in from a screenful of scrollback <-- don't. elliott is going to complain a lot if you do that. He certainly does when I try to.
12:30:59 <fizzie> Completely unrelated: they've installed a new coffee machine in our "new" (fsvo) coffee room, and it's... certainly... a thing... http://www.comparestoreprices.co.uk/images/ju/jura-impressa-z5-coffee-machine.jpg
12:31:40 <fizzie> I have a slight suspicion that they've been bribed by the chemistry department to run some experiments, or something. There's no way a coffee machine needs that much machine.
12:31:56 <fizzie> (Also it's not even network-connected.)
12:32:00 <Vorpal> fizzie, for some values of coffee room?
12:32:15 -!- ais523 has quit (Ping timeout: 255 seconds).
12:32:34 <Vorpal> fizzie, was the old one network connected?
12:32:43 <fizzie> For some values of "new".
12:33:06 <fizzie> And no, but it was just your regular water-heater/plate/pot thing.
12:33:41 <Vorpal> ah
12:33:45 <fizzie> "Grinding selection wheel (9) is also below the bean container cover. Instructions for adjusting the fineness of the grind are inside the container cover."
12:34:09 <fizzie> There's also a PDF guide attached.
12:34:12 <Vorpal> so it grinds the coffee bean on the fly? Impressive
12:34:25 <fizzie> Suddenly I'm delighted I don't drink coffee; now I don't need to learn this thing.
12:34:34 <Vorpal> heh
12:34:57 <fizzie> You can get "ristretto" out of it. (Apparently it's like espresso, except more.)
12:36:07 <Vorpal> I don't drink coffee either. I'm not terribly clear on what you would get if you increased the espresso-ness of espresso.
12:36:26 <fizzie> "The resultant shot could be described as bolder, fuller, with more body and less bitterness. All of these flavors are usually attributed to espresso in general, but are more pronounced in ristretto."
12:36:32 <fizzie> You get more "body" in it.
12:36:39 <Vorpal> I see.
12:36:41 <fizzie> I suppose it's for mass-murderers instead of casual murderers?
12:36:46 <Vorpal> possibly
12:37:58 <Vorpal> I'm suspicious of fluids where people use anything more complicated than, say, "sweet" or "salty" or "like <other drink> but sourer" or such to describe them.
12:38:24 <Vorpal> Wines are probably the worst example of that phenomenon.
12:42:53 <fizzie> "This wine is among the less corpulent examples in the lineup. Citrusy, with a very distinct, snappy mineral character, it is round with good, well proprtioned acidity."
13:11:15 <kallisti> how do I do guards without indentation?
13:11:37 <monqy> hint don't indent
13:11:42 <kallisti> ?
13:11:44 <kallisti> I mean
13:11:46 <kallisti> with { and }
13:14:32 <Vorpal> fizzie, yeah that sort of stuff
13:15:15 <Vorpal> fizzie, I question if whoever said that ever tried to eat a representative set of minerals for example.
13:15:49 <Vorpal> fizzie, I'm okay with "Citrusy" though.
13:16:14 <Vorpal> kallisti, why don't you want to indent?
13:16:19 <kallisti> IRC
13:16:30 <Vorpal> hm no idea how you do that
13:16:52 <kallisti> I tried let f n { | blah = blah; | blah = blah }
13:16:55 <kallisti> but that didn't work
13:16:59 <monqy> remove the {;}
13:16:59 <kallisti> I tried let f n { | blah = blah | blah = blah }
13:17:01 <kallisti> doesn't work either
13:17:13 <Vorpal> shouldn't the {} be for the code after rather than for the guards there?
13:17:16 <monqy> let f n | blah = blah | blah = blah
13:17:18 <Vorpal> I would assume so at least
13:17:39 <kallisti> > let f n | n == True = 1 | n == False = 2 in f True
13:17:40 <Vorpal> :t (=)
13:17:40 <Deewiant> > let f n | n == 0 = 1 | n == 2 = 3; g = f in g 2
13:17:40 <lambdabot> 1
13:17:40 <lambdabot> parse error on input `='
13:17:41 <lambdabot> 3
13:17:44 <kallisti> oh... okay.
13:17:45 <Vorpal> hm that saddens me
13:17:56 <Vorpal> (makes sense of course)
13:33:46 <kallisti> > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rwhnf) (take n fibs) in parfib 10000
13:33:47 <lambdabot> 207936082371334980721126489886428368250870360940159031196829458665285014234...
13:34:09 <kallisti> > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rpar) (take n fibs) in parfib 10000
13:34:10 <lambdabot> 207936082371334980721126489886428368250870360940159031196829458665285014234...
13:34:18 <kallisti> I wonder if that actually does anything.
13:35:06 <kallisti> > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rpar) (take n fibs) in parfib 100000000000000
13:35:07 <lambdabot> *Exception: stack overflow
13:35:19 <kallisti> > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rpar) (take n rwhnf) in parfib 100000000000000
13:35:20 <lambdabot> Couldn't match expected type `[a]'
13:35:20 <lambdabot> against inferred type `Control.P...
13:35:50 <kallisti> > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rwhnf) (take n fibs) in parfib 100000000000000
13:35:52 <lambdabot> *Exception: stack overflow
13:35:53 <kallisti> > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rwhnf) (take n fibs) in parfib 1000000000000
13:35:55 <lambdabot> *Exception: stack overflow
13:35:56 <kallisti> > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rwhnf) (take n fibs) in parfib 10000000000
13:35:58 <lambdabot> *Exception: stack overflow
13:36:00 <kallisti> > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rwhnf) (take n fibs) in parfib 1000000
13:36:02 <lambdabot> *Exception: stack overflow
13:36:03 <kallisti> lol
13:36:05 * kallisti is done.
13:37:49 <shachaf> I don't think that'd have worked anyway.
13:40:45 <kallisti> well it works on the smaller inputs. but maybe that's not what you mean?
13:40:50 * kallisti has never used parallell strategies before.
13:41:18 <Slereah> ARE YOU FIBBING BOY?
13:41:28 <kallisti> no
13:41:41 <shachaf> kallisti: I don't know that it's making any difference.
13:41:48 <shachaf> Anyway, I don't know.
13:42:28 <kallisti> I doubt it is.
13:44:40 <oklofok> what's the term for when you put "use caution but not too much;" or something in the beginning of all your code snippets even though you don't know what it means just because you've always done it and you don't want to break anything?
13:44:59 <oklofok> fizzie once told me a term for it i think
13:45:52 <kallisti> I doubt any actual parallelism is going on. the individual elements are evaluated too quickly.
13:46:41 <kallisti> if say, calculating the nth fibonacci element requires non-constant amount of work and also depending on the value of N-1 and N-2, then you could take advantage of parallism. but it's just.. addition.
13:47:40 <oklofok> fizzie: this is so very important
13:48:53 -!- ais523 has joined.
13:49:15 <ais523> is this a good place to ask for help with homework questions?
13:49:19 <oklofok> yes
13:49:26 <oklofok> if they have to do with symbolic dynamics
13:49:31 <ais523> hmm
13:49:40 <ais523> what if they have to do with basic functional programming?
13:49:45 <oklofok> oh
13:49:51 <oklofok> that's trickier.
13:50:09 <Vorpal> ais523, why would you need help on that? Or is it for dealing with marking such homework questions?
13:50:16 <ais523> Vorpal: I can't solve one of them
13:50:21 <ais523> which is tricky, given that I'm meant to mark it
13:50:24 <Vorpal> ah
13:50:38 <ais523> it's https://sites.google.com/site/focs1112/programming-assignments week 11 question 2
13:50:46 <Vorpal> ais523, I'm quite interested to hear what it is then. And how students are expected to understand it
13:50:47 <ais523> I'm not necessarily looking for the solution, just some pointers
13:50:51 <ais523> (I /suspect/ the question is impossible)
13:51:05 <fizzie> oklofok: I don't know which term I might have told you. Unless you mean cargo cult programming.
13:51:17 <oklofok> ais523: that's very easy
13:51:25 <oklofok> amortized is the key term
13:51:26 <ais523> oklofok: double-ended? that's what's stumping me
13:51:33 <ais523> the problem is that it has to be based on an interaction net queue
13:51:40 <Vorpal> hm
13:51:44 <ais523> if you're allowed to do it in amortized constant time using any method you like, it's easy
13:52:00 <ais523> I can do question 1, which asks for the same operations using a different underlying data structure
13:52:08 <oklofok> hmm
13:52:20 <Vorpal> I'm not familiar with the term "interaction net queue". What is that?
13:52:23 <oklofok> what's an interaction net queue+
13:52:25 <oklofok> right
13:52:27 <ais523> Vorpal: do you know about difference lists in Prolog?
13:52:28 <oklofok> ?
13:52:32 <Vorpal> ais523, nope
13:52:41 <Vorpal> ais523, I don't really know any prolog
13:52:56 <Vorpal> apart from a few basics things about the syntax
13:53:00 <oklofok> isn't the point of a difference lists exactly that you can make a queue with it?
13:53:00 <ais523> well, let's see, the concept is that you represent a queue (front)1,2,3,4(back) as lambda x. cons(1, cons(2, cons(3, cons(4, x))))
13:53:03 <quintopia> i once coded in prolog
13:53:05 <ais523> oklofok: indeed
13:53:19 <ais523> that's called an interaction net queue in the lists, for reasons I don't really understand
13:53:24 <Vorpal> ais523, hm. That is just a linked list
13:53:39 <Vorpal> well circular one
13:53:41 <ais523> (also, it's not constant time or even amortized constant time in a language with OCaml's execution order, which is a more minor flaw in the question)
13:53:41 <Vorpal> no?
13:53:46 <ais523> Vorpal: err, no?
13:53:59 <ais523> I don't see how you'd consider lambda x. cons(1, cons(2, cons(3, cons(4, x)))) to be a circular linked list at all
13:54:11 <Vorpal> ais523, what does the last x mean then?
13:54:23 <ais523> Vorpal: it's connected to the lambda x at the start
13:54:25 <Vorpal> (this isn't scheme syntax, which language is it?
13:54:26 <Vorpal> )
13:54:29 <Phantom_Hoover> Vorpal, a circular linked list would be Y (cons 1 . cons 2 . cons 3 . cons 4).
13:54:48 <Phantom_Hoover> Vorpal, this is mind-bogglingly dense, even by your standards.
13:54:50 <Vorpal> Phantom_Hoover, hm. Okay right, I see that
13:54:56 <Vorpal> (the former not the latter)
13:55:25 <ais523> so the usual way to write push-at-tail of x onto q would be lambda x'. q(cons(x, x')
13:55:32 <ais523> s/$/)/
13:55:36 <Vorpal> ah okay, now it makes sense
13:55:46 <ais523> push-at-tail is easy; push-at-head is easy; pop-from-head is easy
13:55:53 <ais523> but pop-from-tail, I don't see how to get via that mechanism at all
13:56:15 <ais523> other than popping the entire queue into a temporary data structure, which is of course not constant time even in a superstrict language
13:56:27 <Vorpal> ais523, the naive solution is simple enough, and you just said it as I was writing it out...
13:56:42 <ais523> yes, but the question specifically disallows that
13:57:54 <ais523> hmm, I guess there's programmers here who would find week 11 question 3 easier than week 11 question 1
13:58:11 <Vorpal> ais523, I assume you aren't allowed to use debugging modules or such to mutate the linked list?
13:58:14 <ais523> it basically comes down to "implement an imperative doubly-linked list", which is something people here have done a lot
13:58:24 <ais523> Vorpal: it's not really a linked list
13:58:29 <Vorpal> well okay
13:58:31 <ais523> as in, it /is/, but of lambda bodies
13:58:44 <ais523> so it's not mathematically a linked list, even though it's going to be represented like that by an OCaml interp
13:59:03 <Vorpal> ais523, which would be the relevant part for the debugging modules anyway
13:59:41 <ais523> well, OCaml does allow mutation; that's what question 3's about
13:59:49 <ais523> just that's not the underlying impl you're meant to use in question 2
13:59:56 <Vorpal> hm
14:00:06 <Vorpal> it is trivial to do this with mutation indeed.
14:00:28 <ais523> trivial but ugly, IMO
14:00:34 <Vorpal> well yes
14:00:43 <ais523> I won't post my solution to that (and nor should you) in case some student of mine happens across it
14:01:00 <Vorpal> ais523, I couldn't do it in ocaml, don't really know that language
14:01:05 <Vorpal> I could do it in scheme though
14:01:08 <oklofok> but if you have stacks, it seems very easy to do this, just keep the list in two stacks, one for the left half, one for the right, and balance when necessary
14:01:28 <ais523> oklofok: that's the answer to question 1
14:01:33 <ais523> which asks you to do it like that
14:01:47 <oklofok> oh okay
14:02:14 <Vorpal> hm. You could implement it with a balanced binary tree too.
14:02:41 <Vorpal> well not exactly binary tree, it wouldn't be sorted as such based on keys
14:02:46 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
14:02:56 <ais523> Vorpal: there's nothing inherently sorted about a binary tree
14:03:07 <ais523> although using them to maintain lists in sorted order is one of their main applications
14:03:28 <Vorpal> indeed, I'm used to thinking about a key in a binary tree, this one wouldn't have one
14:03:33 <Vorpal> but that is binary search tree
14:03:37 <Vorpal> which is indeed different
14:03:56 <Vorpal> btw trees are awesome
14:04:20 <fizzie> ais523: But if you *can* do a deque in amortized constant time with two stacks, *and* you can do a stack with constant-time push and pop with your "interaction net queue", why wouldn't a deque implemented with two "interaction-net-queue stacks" suffice for the question?
14:04:20 <oklofok> this one time i made a red-black tree visualization where the nodes would move to their new places by applying force in that direction
14:04:27 <oklofok> balancing looked awesome
14:04:32 <Vorpal> oklofok, nice
14:04:54 <oklofok> i also made a binary heap, merge was like the best thing ever :D
14:04:58 <ais523> fizzie: because you can make a queue from two stacks, but you can't make a stack from two queues
14:05:10 <Vorpal> oklofok, you should try that on other tree variants to see which one looks coolest and then in the future decide which variant to use based on how it looks
14:05:16 <Vorpal> oklofok, so AVL, AA and so on
14:05:24 <oklofok> (you had two windows for building heaps and you could then merge them)
14:05:37 <ais523> oklofok: did the red-black tree visualisation actually use red and black?
14:05:44 <oklofok> ais523: yes
14:05:52 <ais523> hmm, I should learn what a red-black tree is someday
14:05:55 <oklofok> i don't know what AA is
14:05:56 <fizzie> ais523: Yes, but you just said push-at-head and pop-from-head are both "easy".
14:05:58 <ais523> I wonder if I know the concept already but not the name
14:06:00 <oklofok> ais523: learn 2,3 trees instead
14:06:04 <oklofok> unless you already do
14:06:17 <oklofok> do learn them, that is. whatever that means.
14:06:22 <ais523> fizzie: right, but then you're not using the interactionnetiness at all
14:06:27 <Vorpal> oklofok, what are 2,3-trees now again=
14:06:30 <ais523> which probably doesn't count as a solution to the question
14:06:31 <Vorpal> s/=/?/
14:06:38 <oklofok> erm
14:06:51 <oklofok> when i said 2,3 trees i suppose i meant avl trees. let's see what's what...
14:07:11 <fizzie> ais523: I suppose, if you're debating intention; though literally speaking it just says "starting from the implementation", nothing else. Though wouldn't it be easier to just ask whoever made the question?
14:07:21 <oklofok> yeah i meant avl tree
14:07:32 <oklofok> avl trees are a sensible version of red-black trees
14:07:34 <ais523> fizzie: I did ask, but I didn't get a useful answer
14:07:37 <Vorpal> ais523, do you often see unusual and clever solutions to the questions that you didn't expect btw?
14:07:49 <ais523> Vorpal: often, no
14:07:51 <ais523> but I do occasionally
14:08:08 <oklofok> Vorpal: apparently 2,3 trees are essentially the same as aa trees.
14:08:13 <Vorpal> ais523, when I got bored in basic programming courses I spent some time thinking up non-obvious and superior solutions to the expected ones.
14:08:21 <Vorpal> oklofok, ah okay. How do they differ then?
14:08:29 <ais523> Vorpal: you get bonus marks for shorter or faster solutions than the other students on this course
14:08:49 <ais523> shorter in terms of token count, where whitespace and comments don't count as tokens
14:08:49 <quintopia> i have implemented pretty much every kind of balanced binary tree. i decided avl was the ost sensible (though splay trees are a cool idea nonetheless)
14:08:55 <oklofok> Vorpal: i don't know how they differ because i didn't quite check what they are.
14:09:02 <Vorpal> ais523, that is strange. In Sweden at least I'm pretty sure the laws say that grading should not be competitive.
14:09:07 <oklofok> just that they aren't avl trees.
14:09:08 <Vorpal> not so in UK I guess?
14:09:20 <ais523> Vorpal: oh, the way it's done here is that the marks aren't binding
14:09:24 <ais523> they're really points, rather than marks
14:09:28 <Vorpal> I see
14:09:30 <oklofok> grading should totally be competitive
14:09:37 <ais523> and they are competitive, but don't have any direct input into the final grade on the course
14:09:59 <Vorpal> ais523, then what is the point? Making sure everyone passes a minimum level?
14:10:10 <Vorpal> ais523, and doesn't this mean you encourages golfing btw? :D
14:10:12 <ais523> trying to encourage people to get better at the course
14:10:14 <ais523> and sure, I noticed that
14:10:23 <ais523> and didn't at all try to discourage the people in charge of the course from doing it
14:10:38 -!- kallisti has quit (Ping timeout: 244 seconds).
14:10:53 <ais523> someone sniped a bunch of marks early by using "float" rather than "float_of_int"; it's the same number of tokens, but the first executes marginally faster
14:10:53 <Vorpal> oklofok, hm
14:10:54 <fizzie> Vorpal: Our AI course competition results have no bearing for grading either, but it doesn't stop it from being quite a fundamental motivational thing.
14:10:59 <oklofok> i think ais' exact words on the subject were "MWAHAHAHA"
14:11:18 <Vorpal> ais523, what on earth is float_of_int?
14:11:26 <ais523> Vorpal: a conversion routine
14:11:29 <Vorpal> ah
14:11:31 <ais523> takes an int as an argument, returns a float with the same value
14:11:40 <Vorpal> fizzie, true
14:11:48 <ais523> all OCaml's conversion routines are named like that, except for the ones that aren't (which may be an empty set, I can no longer remember)
14:12:05 <shachaf> float_of_float
14:12:31 <fizzie> ais523: Possibly you might encourage people even more if you called them "achievements". That seems to work in getting people to do completely pointless tasks.
14:12:43 <ais523> fizzie: right, but achievements tend to be booleans
14:13:02 <oklofok> but you can have a hundred of them
14:13:19 <Vorpal> ais523, and just using float does what?
14:13:35 <fizzie> Sometimes there's sort-of a grade. One achievement of "did X in one minute", one for "did X in 30 seconds", one for "did X in 15 seconds", and so on.
14:13:49 <ais523> Vorpal: exactly the same thing
14:14:08 <ais523> I think it's some older primitive, and I suspect float_of_int's implemented in terms of it
14:14:13 <Vorpal> ah
14:14:13 <oklofok> i wish the people who make these horrible mmorpgs did something useful with their lives and made achievement unlocked 4
14:14:31 <fizzie> Did they make a 3? I must've missed that.
14:14:35 <Vorpal> is there a third one?
14:15:01 <oklofok> google returned stuff for 3 so :D
14:16:34 <oklofok> fizzie: oh and yes, that's the term i meant.
14:17:09 <Vorpal> can't get the third one to run. Weird.
14:17:36 <oklofok> try the next link
14:17:40 <fizzie> The first hit (at muchgames.com) seems to be just #2 titled as #3.
14:17:53 <fizzie> While the achievementunlocked3.com didn't work for me either.
14:18:02 <Vorpal> indeed that was the one I looked at
14:18:03 <oklofok> i haven't played 2 so okay
14:19:37 <ais523> hmm, And Yet It Moves, along with its achievement called Gregor, also has an achievement called Random
14:19:42 <ais523> which I think just you get randomly
14:20:39 <Vorpal> ais523, wait HashMap<int, Foo> gives a syntax error on int?
14:20:41 <Vorpal> wtf
14:20:44 <Vorpal> it works with Integer
14:20:53 <fizzie> Yes, because Integer extends Object.
14:20:55 <Vorpal> does it required a boxed type?
14:20:55 <fizzie> 'int' doesn't.
14:20:57 <Vorpal> I guess so
14:21:04 <ais523> Vorpal: doesn't work with primitives
14:21:06 <Vorpal> strange it is a /syntax/ error though
14:21:09 <fizzie> All generics need "real" objects.
14:21:15 <ais523> Vorpal: int is a keyword
14:21:19 <Vorpal> oh right, I forgot generics were just a compiler thing
14:21:24 <ais523> and you generally can't use keywords in arbitrary contexts
14:21:28 <Vorpal> as opposed to actually existing in the byte code.
14:21:32 <Phantom_Hoover> @tell elliott Oh, damn, the Raspberry Pi has a minimum order quantity of one unit. I GUESS WE ALL HAVE TO GET ONE NOW.
14:21:33 <lambdabot> Consider it noted.
14:21:37 <Phantom_Hoover> THAT GOES FOR THE REST OF YOU
14:23:30 <fizzie> Vorpal: You can't put an "int" into an old-style non-generic ArrayList either. Primitives are very special.
14:24:56 <fizzie> It does do that autoboxing, though, so you can use an HashMap<Integer, Foo> pretty much like you'd use a hypothetical HashMap<int, Foo>, at least as long as you don't care about efficiency.
14:27:02 <fizzie> (Speaking of which: given enum Moo, then an EnumMap<Moo, Bar> is likely to be fasterer than a HashMap<Moo, Bar>, if you need to map that way.)
14:28:40 <Vorpal> fizzie, I didn't need that here. I was mapping player ids to player objects
14:29:20 <Vorpal> (this set might be sparse if a client disconnects btw)
14:33:14 <ais523> hmm, it seems that there's a sort of self-balancing tree called a scapegoat tree
14:33:38 <ais523> now I'm wondering if it'd be useful for the VCS, just due to the naming coincidence
14:33:54 <ais523> (the problem is that self-balancing trees are one of those things that aren't obviously useless in any complex program)
14:34:32 -!- Frooxius has quit (Ping timeout: 252 seconds).
14:36:16 <Vorpal> ais523, maybe if memory efficiency is important and you have a lot of very nodes with very small keys and data?
14:36:25 <Phantom_Hoover> ais523, I remember looking that up and getting really confused when Scapegoat first turned up.
14:36:45 <ais523> heh
14:36:58 <Vorpal> s/very//
14:37:01 <ais523> Vorpal: the main thing that self-balancing trees have to compete with is hash tables
14:37:25 <Vorpal> ais523, the problem with hash tables is the worst case complexity is not very good
14:37:59 <ais523> right, but the worst case also doesn't happen in practice, barring malicious input
14:38:02 <ais523> sometimes even including malicious input
14:38:32 <Vorpal> ais523, hm I guess a hash table with an self balanced tree per bucket might be a good compromise?
14:38:35 <fizzie> ais523: Perhaps you can invent some bogus reason why you need to iterate your map in sorted order too, and justify trees with that.
14:38:43 <Vorpal> ais523, rather than the usual linked list per bucket
14:39:02 <ais523> Vorpal: that's generally inferior to just rebuilding the hash table to have more buckets
14:39:24 <fizzie> "But what if the user wants to list all (anythings) in SHA-X order? It's important we have an efficient way to do that."
14:39:26 <ais523> if you're ever getting a nontrivial number of keys in the same bucket, then either you've hit a pathological worst case or your hash table is more small
14:39:30 <ais523> and in practice, usually the latter
14:39:35 <Vorpal> ais523, well yes, but you have to be able to handle the case where both items hash to the exact same hash
14:39:57 <ais523> Vorpal: right
14:40:08 <ais523> IMO hashes should be infinitely long to allow for that issue
14:40:14 <ais523> and truncated for use in hash tables
14:40:20 <Vorpal> heh
14:41:22 <Vorpal> (anyway this won't be an issue with, say, sha256, but that is kind of slow so depending on what you are using the hash table for a faster hash might be better)
14:42:18 <ais523> I don't think hash tables normally use cryptohash
14:42:38 <Vorpal> indeed
14:42:54 <Vorpal> for that very reason too
14:43:08 <ais523> I think Perl uses a fast hash operation with random parameters, so that collisions are hard to find due to not knowing precisely which hash function is being used
14:43:29 <fizzie> If you have objects for which you need to keep around SHA-256 hashes for other reasons, it's reasonably natural to use those as hash table keys too.
14:43:29 <ais523> (and I assume, or at least hope, that there's no reasonable way to find a hash collision that works for all the possible hash functions)
14:43:56 <Vorpal> ais523, selected per session or what?
14:44:12 <ais523> per invocation of the perl(1) interpreter
14:44:25 <Vorpal> right, that is what I meant
14:44:39 <ais523> you can set the seed via env var if you need repeatability
14:44:50 <ais523> (for, e.g., order of iteration over keys)
14:44:55 <Vorpal> or just use wol
14:45:13 <ais523> "just"
14:45:39 <Vorpal> well okay
14:46:04 <ais523> setting an env var seems easier than using a program nobody but me dares run
14:46:18 <fizzie> I keep expanding that to wake-on-lan.
14:46:22 <Vorpal> true
14:46:38 <Vorpal> fizzie, hah, yes
14:52:31 <fizzie> Heh, there's a WoWLAN; a wake-on-wireless-LAN thing. (Nobody does it.)
14:53:04 <Vorpal> fizzie, nobody supports it hm. Well not strange
14:53:26 <Vorpal> fizzie, actually I seem to remember seeing that as a BIOS option on some system at some point.
14:53:29 <fizzie> Some Intel chips can do it.
14:53:30 <Vorpal> hm can't remember which one
14:53:36 <Vorpal> my laptop? My dad's laptop?
14:53:37 <Vorpal> hm
14:53:45 <Vorpal> fizzie, I have intel wireless so...
14:56:41 <Sgeo> How. Does. XKCDBucket. Know. About. Agora.
14:56:57 <Sgeo> Also. Why. Am. I. Being. Overdramatic. About. This.
14:57:08 <monqy> hi
15:03:23 <Sgeo> I may require sleep
15:04:10 <fizzie> "IN NO IST LAT WHEY CRATICT FROURE BIRS GROCID PONDENOME OF DEMONSTURES OF THE REPTAGIN IS REGOACTIONA OF CRE." Claude E. Shannon, 1948.
15:05:38 <fizzie> `run words 15 # close kinship here
15:05:44 <HackEgo> hun rungummimne exsto akesta lita dccclxivt erlayali thema brism gewa unspoii putobolle llle roninglobu idnen
15:06:21 <ais523> *heuristic
15:07:39 <fizzie> "THE HEAD AND IN FRONTAL ATTACK ON AN ENGLISH WRITER THAT THE CHARACTER OF THIS POINT IS THEREFORE ANOTHER METHOD FOR THE LETTERS THAT THE TIME OF WHO EVER TOLD THE PROBLEM FOR AN UNEXPECTED." Shannon again, in the same paper.
15:07:47 <fizzie> fungot: Did you by any chance know this guy?
15:07:47 <fungot> fizzie: a well mannered query to ask what your names are. probably as a special boon for being so great.
15:08:35 -!- sebbu has joined.
15:08:35 -!- sebbu has quit (Changing host).
15:08:35 -!- sebbu has joined.
15:08:51 -!- sebbu2 has quit (Ping timeout: 255 seconds).
15:14:54 <Vorpal> ais523, In java: why is there both Color.BLACK and Color.black and which one is preferred? Neither is marked deprecated in the reference docs.
15:15:03 <Vorpal> (same goes for the other predefined colours)
15:15:04 <ais523> Vorpal: I don't know
15:15:08 <Vorpal> hm okay
15:16:41 <fizzie> Vorpal: Color.BLACK: Since: 1.4. So that's why.
15:16:51 <fizzie> Okay, that's a reasonably poor "why", but anyway.
15:17:21 <fizzie> If they'd deprecate one, they'd probably deprecate the does-not-follow-the-conventions lowercase one.
15:21:20 <Vorpal> ah
15:29:16 -!- ais523_ has joined.
15:29:22 -!- ais523 has quit (Disconnected by services).
15:29:23 -!- ais523_ has changed nick to ais523.
15:39:18 -!- ais523 has quit (Read error: Operation timed out).
15:40:06 -!- ais523 has joined.
16:13:57 -!- KingOfKarlsruhe has joined.
16:14:37 -!- kallisti has joined.
16:14:38 -!- kallisti has quit (Changing host).
16:14:38 -!- kallisti has joined.
16:18:05 <kallisti> so I've got about 2 hours between classes to do homework or study in the library.
16:18:21 <kallisti> I decided every day I'm going to come in here and, if I'm not too busy, pick up something and read it.
16:18:40 * kallisti currently has the Computer Music Journal.
16:42:06 -!- ais523_ has joined.
16:42:10 -!- ais523 has quit (Disconnected by services).
16:42:11 -!- ais523_ has changed nick to ais523.
16:43:09 <fizzie> This "predict words from initial prefixes" text input keeps trying to say "cocks" whenever I start something with "co".
16:44:57 <fizzie> "ct" it predicts as "cthulhu". I think it has some sort of a learning system.
16:45:25 <ais523> well, how many words start with ct?
16:46:31 <fizzie> 13 nouns, according to WordNet.
16:46:47 <fizzie> And one adjective.
16:47:00 <Gregor> All /proper/ nouns? And/or cocks?
16:47:04 <fizzie> But it's very generous with the definition of "word".
16:48:05 <Phantom_Hoover> ais523, ctenophore.
16:48:35 -!- Gregor has set topic: Official revolting channel of the inverse femtobarn stupid topic change CP violation, the original Trilogy: A new PHP (now with cocksthulu) | http://codu.org/logs/_esoteric/.
16:48:37 <fizzie> http://sprunge.us/fgjP
16:49:41 <Vorpal> fizzie, where is that predictive input btw?
16:49:52 <fizzie> It suggests "cc65" for plain "c", so I'm thinking I'm still justified in believing it learns.
16:50:10 <fizzie> Vorpal: N900. As far as they go, it's not the most impressive one.
16:50:23 <Vorpal> fizzie, you write "cocks" a lot? And cc65?
16:50:59 <fizzie> I'm not sure I'd say "a lot", but I've no clue how it picks candidates.
16:51:16 <Vorpal> what would cc65 even be?
16:51:16 <fizzie> I'm likely to have written both words at least once.
16:51:36 <fizzie> It's a silly C compiler for 6502 and others.
16:51:40 <Vorpal> ah
16:52:02 <fizzie> I've used it's assembler as a standalone thing, there's not too much wrong with it.
16:52:27 <fizzie> The compiler itself, as far as I've understood, is not terribly impressive.
16:52:50 <Vorpal> heh
16:53:03 <Vorpal> fizzie, trying to think of things using 6502 atm...
16:53:11 <fizzie> C64. NES.
16:53:20 <fizzie> Well, NES is a close relative.
16:53:20 <Vorpal> I meant modernish things
16:53:24 <fizzie> Ohhhh.
16:53:42 <Vorpal> fizzie, I was going like "is it used in embedded things?"
16:53:47 <Vorpal> and so on
16:54:08 -!- ais523_ has joined.
16:54:14 <fizzie> I think they make some related microcontrollers still. But those applications don't tend to advertise the CPU so much.
16:54:21 -!- ais523 has quit (Ping timeout: 252 seconds).
16:54:22 <Vorpal> true
16:55:40 -!- ais523_ has changed nick to ais523.
16:55:46 <fizzie> I think some modernish thing used the 65C816, a 16-bit derivative.
16:56:07 <fizzie> Oh, and the Terminator (from the movie of same name) runs on a 6502. :p
16:56:08 <Vorpal> heh
16:56:23 <Vorpal> fizzie, what, do they say that in the movie?
16:56:29 <Vorpal> if so that is just silly
16:56:39 <fizzie> You can see 6502 assembly scrolling down when they show its eye-cam thing.
16:56:45 <Vorpal> hah
16:56:51 <Vorpal> fizzie, what does the program in question do?
16:56:52 <ais523> that doesn't mean it runs on a 6502
16:56:54 <fizzie> They probably just wanted something techy-looking.
16:56:57 <ais523> just that it thinks in 6502 asm
16:57:31 <fizzie> Vorpal: Apparently it's an Apple DOS 3.3 disassembly.
16:57:58 <fizzie> "Also shown is the output from a run of an Apple checksum program called KEY PERFECT 4.0, published in Nibble magazine."
16:58:08 <Vorpal> ais523, no it doesn't mean that at all. It might just as well mean that 6502 asm display is part of the output from the visual circuits.
16:58:25 <fizzie> Futurama's Bender is explicitly stated to have a 6502 for a brain.
16:58:30 <Vorpal> ais523, not that it /thinks/ in that
16:59:12 -!- anders has left.
17:06:08 -!- sebbu2 has joined.
17:07:34 -!- sebbu has quit (Ping timeout: 240 seconds).
17:19:34 -!- anders has joined.
17:32:41 -!- sebbu2 has changed nick to sebbu.
17:47:00 <Phantom_Hoover> fizzie, so the alcohol is actually for coolant?
17:47:26 <Phantom_Hoover> And Bender is basically Project E.U.N.U.C.H. advanced 1000 years?
18:03:12 -!- pikhq has joined.
18:03:21 -!- pikhq_ has quit (Ping timeout: 248 seconds).
18:11:15 -!- ais523 has quit (Ping timeout: 240 seconds).
18:19:02 -!- ais523_ has joined.
18:28:11 -!- ais523_ has quit (Ping timeout: 258 seconds).
18:33:00 -!- pikhq_ has joined.
18:33:13 -!- pikhq has quit (Ping timeout: 248 seconds).
18:33:52 -!- ais523 has joined.
18:37:37 -!- Ngevd has joined.
18:37:54 <Ngevd> Hello!
18:38:18 -!- MSleep has changed nick to MDude.
18:38:53 -!- elliott has joined.
18:39:43 <Gregor> Spam spam.
18:40:04 <Ngevd> Evening, elliott
18:40:09 <elliott> @JFritsch: No PRNG consults an external source for each number; you just get the seed from there. You can create values of type StdGen (an instance of RandomGen) from a seed, and there's a global generator in IO presumably seeded from an external source. – ehird yesterday
18:40:09 <elliott>
18:40:09 <elliott>
18:40:09 <elliott> @ehird for P RNGs you are certainly right. Otherwise "no" is a bit strong :D sqrtech.com. Good randomness is an issue in a web2.0 world and IO plays a heavy role in it. – J Fritsch 10 hours ago
18:40:09 <lambdabot> Unknown command, try @list
18:40:09 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
18:40:09 <lambdabot> Unknown command, try @list
18:40:55 <shachaf> elliott: Did you see how I summoned conal?
18:41:02 <shachaf> 21:37 < shachaf> rwbarton: Back in my day, reading a file *denoted* something!
18:41:02 <shachaf> 21:38 < conal> shachaf: :)
18:41:07 <elliott> shachaf: :D
18:41:19 <elliott> I wonder if conal has "denote" on ping.
18:41:24 <shachaf> I asked him.
18:41:26 <shachaf> He claims not.
18:41:47 <Gregor> But he does have "*denote" on ping.
18:41:56 <Gregor> Whoops, I was only going to say "spam" today.
18:41:59 <shachaf> Maybe he always has #haskell open on one monitor, but the words don't mean anything most of the time.
18:42:00 <Gregor> Broke that rule pretty fast X_X
18:42:16 <shachaf> elliott: Remember how you asked me about 20 hours ago if I slept?
18:42:46 <elliott> Yes.
18:43:00 <shachaf> Well, I'm sure you can guess what I haven't done since then.
18:43:09 <elliott> Talked?
18:43:22 <elliott> http://esoteric.voxelperfect.net/wiki/Special:Recentchanges holy CRAP, somebody teach atrapado about preview
18:46:38 <Gregor> elliott: Good lawd
18:46:41 <Gregor> Why
18:46:46 <Gregor> Why would you do that
18:46:58 <ais523> hmm, can I add quotes from other channels?
18:47:18 <Gregor> `quote 1
18:47:21 <HackEgo> 1) <Aftran> I used computational linguistics to kill her.
18:47:35 <Ngevd> ais523, I'm quoted from the MC server
18:47:40 <ais523> hmm
18:47:43 <ais523> I may as well not, anyway
18:47:44 <elliott> "Functors are not very interesting by themselves"
18:47:44 <Ngevd> `quote communism
18:47:48 <HackEgo> 487) <Taneb> This staircase is very good for correcting people's opininons about communism
18:47:52 <elliott> ais523: what quote?
18:48:13 <elliott> But yeah, as Gregor is implying, a bunch of old quotes are from elsewhere
18:48:41 <Gregor> Quote 1 turned out to be a bad example since that's exactly the kind of thing people would say in #esoteric ...
18:48:45 <ais523> <southpointingchariot> welcome to the internet <southpointingchariot> its this this that the depatment of defense.... <southpointingchariot> well, we'll skip that <southpointingchariot> people look at kittens sometimes
18:49:00 <fizzie> Vorpal: "As of 2011, the W65C816S [that 16-bit 65(C)02 derivative] is available from WDC in a 40 pin PDIP or PLCC44 package, as well as a core for ASIC integration (for example Winbond's W55V9x series of TV Edutainment ICs)." So at least those they still make. Not sure if anyone's still using the 65C02 cores, maybe.
18:49:02 <ais523> probably not good enough quality to add
18:49:12 <ais523> but it's still surprisingly insightful
18:49:25 <Gregor> The quotes aren't supposed to be insightful.
18:49:28 <Gregor> Ex:
18:49:28 <Gregor> `quote
18:49:32 <HackEgo> 209) <Gregor> "* There is no scientifically-justifiable reason to exclude pornography, which is a vital part of the web ecosystem. However, bear in mind that we're tracing JavaScript, not MPEG and JPEG decoding." <Gregor> ^^^ This bullet-point is my crowning achievement as as a scientist.
18:49:41 <ais523> how is that not insightful?
18:50:06 <ais523> also, shouldn't it be <<< not ^^^ when the quote's collapsed into a single line like that?
18:50:14 <elliott> ais523: "its this this that the depatment of defense...." what
18:50:27 <ais523> elliott: an attempt to explain the Internet, before getting bored and summarising
18:50:35 <Gregor> X_X
18:50:38 <ais523> implication's that it's starting with the history
18:50:40 <Ngevd> elliott, put some commas in randomly
18:50:41 <ais523> like summaries often do
18:50:42 <Gregor> You're on different wavelengths here.
18:50:50 <elliott> hi Gregor
18:51:07 <Gregor> HELLIOTT
18:51:28 <elliott> shachaf: My monad spiel is now my top SO answer.
18:51:44 <elliott> I will have to kill the guy who asked it if he doesn't accept it, as currently it is my only top answer with a white background.
18:51:46 <Ngevd> `quote
18:51:47 <Ngevd> `quote
18:51:47 <Ngevd> `quote
18:51:47 <Ngevd> `quote
18:51:48 <Ngevd> `quote
18:51:50 <Gregor> >_<
18:52:02 <HackEgo> 262) <oerjan> (the former is a very deep theorem, i'd have had to read the whole book to understand it, so i didn't.)
18:52:09 <shachaf> elliott: Does "white background" mean "not accepted"?
18:52:36 -!- cheater_ has joined.
18:53:39 <elliott> shachaf: Yes.
18:53:51 <HackEgo> 168) <cpressey> < ais523> then running repeatedly until you get the right sequence of random numbers < ais523> and just completely ignoring the input <-- some people live their entire lives this way, i reckon
18:53:52 <HackEgo> 289) <oklopol> zzo38: you missed the point. the point was way stupider than that.
18:53:54 <HackEgo> 52) <apollo> Maternal instincts? <apollo> Don't you just leave the thing in a box until it starts crying, and then shake it until it stops?
18:53:54 <HackEgo> 641) <fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord jesus christ into your life.
18:54:09 <shachaf> kmc: In a discussion about GCing lazy I/O handles so that readFile doesn't fail when you have too many open files:
18:54:11 -!- Vorpal has quit (Ping timeout: 276 seconds).
18:54:20 <shachaf> 21:49 < shachaf> You could fork when you're about to have too many FDs open. :-)
18:54:23 <shachaf> 21:49 < rwbarton> yes! let's spawn a new process and hand it file descriptors over unix sockets! :D
18:54:26 <shachaf> 21:49 < rwbarton> Too bad kmc isn't here, he'd love this.
18:55:11 <Gregor> Ow.
18:55:12 <Gregor> My brain.
18:55:20 <ais523> `pastlog running repeatedly until you get the right sequence of random numbers
18:55:24 <olsner> oh, is kmc also in #esoteric nowadays?
18:55:27 <ais523> hmm, I want to know context for that
18:55:57 <elliott> olsner: No, you're imagining things.
18:55:58 <HackEgo> 2010-09-17.txt:20:33:11: <HackEgo> 220|<cpressey> < ais523> then running repeatedly until you get the right sequence of random numbers < ais523> and just completely ignoring the input <-- some people live their entire lives this way, i reckon
18:56:04 <olsner> elliott: I see
18:56:09 <Ngevd> fungot
18:56:09 <fungot> Ngevd: his birthday is in a few minutes. wow he is so cool. two more large gizmos. it was once the island for the first time in i don't have a very exciting 24 hours or so. it'll just take a few tools out behind the woodshed and give it what the tablet asks, while the more recessive find less representation in the brood. especially strong matesprit? hahahaha!
18:56:15 <Ngevd> Homestuck?
18:56:17 <Ngevd> ^style
18:56:17 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck* ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
18:56:20 <Ngevd> Knew it
18:56:29 <Ngevd> It was "birthday" that clued me in
18:56:30 <coppro> ^style europarl
18:56:31 <fungot> Selected style: europarl (European Parliament speeches during approx. 1996-2006)
18:56:33 <ais523> `pastlog <ais523> then running repeatedly until you get the right sequence of random numbers
18:56:35 <ais523> coppro: I like that style
18:56:36 <fizzie> It's been homestuck on that style for so long.
18:56:40 <HackEgo> 2010-09-11.txt:17:34:14: <ais523> then running repeatedly until you get the right sequence of random numbers
18:56:41 <ais523> fungot: tell me more
18:56:42 <elliott> fizzie: HO HO HO HO HO HO HO HO
18:56:44 <Gregor> FireFly: HA
18:56:45 <fungot> ais523: obviously, the name given to the contact and support network, one of the sectors which interest you. you do not need any new officials to do that successfully, our interests are better protected than the potential average national rates if they had their own pensions. since 1 july last year, but equally unable to prove it is not possible to get this far. i agree with this if the regions, of course, everything that conce
18:56:50 <Gregor> FireFly: I mistabbed you!
18:56:55 <Gregor> fizzie: HA.
18:56:57 <shachaf> Patter nmatches are the best kind of nmatches.
18:56:57 <Gregor> fizzie: HA HA HA
18:57:03 <fizzie> Ah ha.
18:57:08 <FireFly> Gregor, it happens.
18:57:27 <Ngevd> elliott, I like your writing style, please write tutorials about everything you know
18:57:29 <Gregor> FireFly: I don't get mi-stabbed very often, in spite of "Gr" being a common-enough prefix.
18:57:56 <elliott> Ngevd: No
18:58:00 <Ngevd> :(
18:58:06 <elliott> Hey shachaf, should I write a Haskell book?
18:58:24 <shachaf> elliott: Yes!
18:58:34 <fizzie> On this channel, only "co", "fi", "la" are suspectible to two-letter-mistabbings at the moment.
18:58:36 <Gregor> I should!
18:58:41 <Gregor> "Haskell: The C Perspective"
18:58:43 <shachaf> elliott: I'll give you magic meaningless Internet points for it.
18:58:49 <elliott> Gregor: That already exists.
18:58:52 <Gregor> :(
18:58:52 <elliott> "Haskell for C Programmers".
18:58:53 <ais523> elliott: you should write a monad tutorial
18:58:54 <elliott> It's super bad.
18:58:58 <elliott> ais523: Fuck you!!!
18:58:58 -!- Gregor has changed nick to cofila.
18:59:01 <Ngevd> Very very few people can even pronounce words starting with Ng
18:59:05 <ais523> or, I know, "Haskell for Prolog programmers"
18:59:15 * elliott begins to worry that http://stackoverflow.com/questions/8777216/how-do-you-identify-monadic-design-patterns/8777358#8777358 counts as a monad tutorial.
18:59:16 <ais523> Ngevd: well, it's a perfectly reasonable consonant for ending words on
18:59:19 <ais523> so why not for starting words on?
18:59:23 <shachaf> elliott: You should write "Haskell for Haskell programmers"
18:59:26 <shachaf> And it should be empty.
18:59:31 <olsner> Ngevd: ng is the most underused initial consonant in all languages I know
18:59:44 <Ngevd> "Haskell for esoteric programmers"
18:59:45 <olsner> but it's perfectly pronouncible
18:59:47 <cofila> And olsner knows at LEAST twenty languages.
18:59:50 <shachaf> elliott: THAT'S TOTALLY A MONAD TUTORIAL
18:59:54 <shachaf> SCUM OF THE EARTH
19:00:02 <ais523> olsner: hmm, I pronounce it by treating the n as a semivowel
19:00:05 <shachaf> I THOUGHT I COULD TRUST YOU
19:00:07 <ais523> (which is totally a real category of letters)
19:00:18 <ais523> but then, that's how I pronounce it at the end of a word too
19:00:41 <olsner> I think ng is really a semivowel too
19:00:45 <shachaf> elliott: Did you know chat.stackoverflow.com has a Haskell channel?
19:01:06 <elliott> shachaf: Yes. I looked at the logs ("transcripts") and it's filled with that J Fritsch guy being terrible at Haskell.
19:01:11 <olsner> you can make the nnnnnnnnng (ngngngngng?) as long as you like
19:01:55 <shachaf> elliott: Anyway, if you wrote a Haskell book, I would read it and possibly provide classical criticism.
19:01:59 <Ngevd> olsner, I just start humming
19:02:01 <shachaf> That is to say, non-constructive.
19:02:13 <olsner> Ngevd: yeah, you can do that too
19:02:20 <fizzie> ŋŋŋŋŋŋŋ.
19:02:23 <shachaf> And maybe even the other kind!
19:02:27 <fizzie> ŋevd.
19:02:32 <elliott> `addquote <shachaf> elliott: Anyway, if you wrote a Haskell book, I would read it and possibly provide classical criticism. <shachaf> That is to say, non-constructive.
19:02:33 <shachaf> УНИЦОДЕ?
19:02:34 <olsner> fizzie: yes!
19:02:35 <HackEgo> 796) <shachaf> elliott: Anyway, if you wrote a Haskell book, I would read it and possibly provide classical criticism. <shachaf> That is to say, non-constructive.
19:02:57 <elliott> shachaf: I'd have to spend a bunch of time explaining Haskell's flaws :-(
19:03:19 <shachaf> elliott: No need! Just ignore them!
19:03:23 <shachaf> Haskell is perfect, remember?
19:03:28 <shachaf> If a thing is a flaw, that means it's not Haskell.
19:03:49 -!- Ngevd has changed nick to one_minute_pleas.
19:03:54 <shachaf> Anyway, there is room in the world for a good free Haskell book.
19:04:05 <shachaf> The market demands it.
19:04:13 <shachaf> You'd make millions*!
19:04:13 -!- one_minute_pleas has changed nick to Ngevd.
19:04:31 <shachaf> *short scale millions
19:04:42 <shachaf> Which is to say, thousands.
19:04:52 <fizzie> Of pennies.
19:04:53 <shachaf> Of meaningless Internet points.
19:04:54 <elliott> shachaf: Well, the first thing to do is to figure out what animal O'Reilly will use for it.
19:05:08 <shachaf> elliott: Are sloths taken?
19:05:19 <elliott> I... doubt it.
19:05:28 <shachaf> Well then.
19:05:30 <Ngevd> The Black Cat of Tynedale
19:05:30 <shachaf> That's done.
19:05:39 <shachaf> http://oreilly.com/animals.html
19:05:47 <Ngevd> ^^^ actual cryptid
19:05:48 <Ngevd> brb
19:05:57 <cheater_> the neanderthal.
19:06:17 <Phantom_Hoover> cheater_, fuck off.
19:06:18 <fizzie> Weird that sloths aren't, they're such mainstream animals.
19:06:20 <shachaf> "MCSE in a Nutshell: The Windows 2000 Exams" -- Grand elephant
19:06:24 <shachaf> Seriously.
19:06:28 <cheater_> Phantom_Hoover: fuck on.
19:06:28 <shachaf> The *elephant*?
19:06:34 <elliott> shachaf: X-D
19:06:46 <shachaf> Whoever chooses animals for O'Reilly books ought to be dot dot dot
19:06:49 <fizzie> The grandest elephant.
19:07:10 <elliott> "ACCORDING to legend, the Black Cat of Tynedale lurks deep in the darkest woods of Northumberland."
19:07:15 <elliott> Ngevd: How is this real.
19:07:22 <elliott> "But when the Chronicle went to hunt the folklore creature, we discovered there might be truth to the sightings after all. During an early morning scour of the Tynedale countryside we found wildlife which, from a distance, could be mistaken as a big cat."
19:07:46 <shachaf> @where elliott
19:07:47 <lambdabot> elliott is tumbling around Northumberland
19:07:58 <shachaf> COïNCIDENCE?
19:08:02 <elliott> @where+ elliott elliott is thumbing around Northumberland
19:08:02 <lambdabot> It is stored.
19:08:18 <fizzie> Hexhampture.
19:08:34 <ais523> surely, from a sufficiently large distance, you can mistake anything for anything?
19:09:14 <fizzie> Also scotspeople, what's up with this http://en.wikipedia.org/wiki/Falkirk_Wheel thing, doesn't it look kinda awesome-silly?
19:09:14 <Phantom_Hoover> ais523, consider an infinitely large, light-emitting piece of yellow card.
19:09:25 <Phantom_Hoover> fizzie, I have been on that, it is the best thing ever.
19:09:28 <Phantom_Hoover> (After Hampture.)
19:09:45 <ais523> fizzie: the Falkirk Wheel is awesome
19:09:51 <ais523> which totally makes up for it looking silly
19:11:11 <ais523> oh, the Millenium Commision are responsible? that probably explains the awesomeness
19:11:15 <ais523> *Commission
19:11:48 <ais523> *Millennium
19:11:54 <ais523> as far as I can tell, they used up all their mistakes on the Dome
19:11:54 <kallisti> is there a function in Haskell for doing an in-order traversal of a Data.Tree.Tree
19:12:03 <ais523> and just filled the rest of their work with awesome
19:12:07 <kallisti> all the Foldable stuff is prefix order it would seem
19:13:00 <Ngevd> Back
19:13:35 <kallisti> > [1,2,3] <*> [4,5,6]
19:13:35 <lambdabot> [1,1,1,2,2,2,3,3,3]
19:13:49 <kallisti> > [1,2,3] *> [4,5,6]
19:13:50 <lambdabot> [4,5,6,4,5,6,4,5,6]
19:13:56 <kallisti> > [1,2,3] <* [4,5,6]
19:13:57 <lambdabot> [1,1,1,2,2,2,3,3,3]
19:14:03 <Ngevd> @ping
19:14:04 <lambdabot> pong
19:14:36 -!- saberman_ has joined.
19:14:38 <Ngevd> I think the internet is dying
19:15:12 <Phantom_Hoover> Oh no
19:15:13 <ais523> that's a bold statement to make
19:15:17 <elliott> rip
19:15:25 <Phantom_Hoover> Who gets the inheritance?
19:15:35 <Ngevd> Phantom_Hoover, ARPAnet
19:15:37 <elliott> al gore
19:16:11 -!- saberman_ has quit (Remote host closed the connection).
19:16:55 <Phantom_Hoover> Wow, Dynamic Earth is a Millennium Commission thing?
19:17:01 <kallisti> elliott: hi in-order traversal of DAta.Tree hlep
19:17:02 <kallisti> hpel
19:17:14 <kallisti> using liberries
19:17:21 <shachaf> kallisti: What?
19:17:24 -!- asiekierka has joined.
19:17:25 <kallisti> libraries
19:17:26 <asiekierka> hey
19:17:28 <kallisti> using the funktions
19:17:36 <asiekierka> i haven't been to this place for a long time, wow
19:17:39 <fizzie> There's this ex-professor at our university who was Finland-famous (that's like the real thing except in Finland) for his in-the-major-newspaper comments on how the Internet is going to collapse real soon. I think last estimate was that it'll happen in 2006.
19:17:44 <elliott> You were here like two months ago.
19:17:54 <elliott> kallisti: Dude, it's just
19:17:56 <elliott> :t Node
19:17:57 <lambdabot> forall a. a -> Forest a -> Tree a
19:18:01 <elliott> :i Forest
19:18:04 <elliott> @src Forest
19:18:04 <lambdabot> Source not found.
19:18:06 <elliott> Oh come on.
19:18:10 <elliott> Forest a = [Tree a].
19:18:10 <shachaf> @src Tree
19:18:11 <lambdabot> Source not found. stty: unknown mode: doofus
19:18:13 <kallisti> elliott: that is not an in-order traversal of a tree using the given library functions.
19:18:20 <kallisti> elliott: yes I know how to write an in-order traversal recursively
19:18:22 <asiekierka> elliott in internet time that's a long time
19:18:31 <kallisti> elliott: you must submit to my constraint system.
19:18:41 <Ngevd> When was cpressey last here?
19:18:48 <elliott> Ngevd: Many months.
19:18:50 <shachaf> preflex: xseen cpressey
19:18:52 <elliott> PyCon, I think.
19:18:54 <shachaf> Wait.
19:18:59 <fizzie> "Many moons" is I think what you say?
19:19:00 <shachaf> Useless channel.
19:19:29 <elliott> 2011-05.
19:19:30 <elliott> Is the answer.
19:19:42 <Ngevd> Before my time...
19:19:50 <Ngevd> I came here 2011-08?
19:20:10 * shachaf has never been here.
19:21:32 <kallisti> elliott: I take it you've given up as there's no easy solution
19:22:07 <ais523> at least elliott hasn't had to write an interaction net deque
19:26:31 <elliott> kallisti: I gave up because I'm not here to write your code for you
19:26:35 <elliott> However
19:26:38 <elliott> > Node 42 []
19:26:39 <lambdabot> Node {rootLabel = 42, subForest = []}
19:26:43 <elliott> kallisti: Use the library functions rootLabel and subForest.
19:27:27 <Phantom_Hoover> Simon Jenkins has a knighthood??
19:27:30 <kallisti> ha ha ha ha ha
19:27:42 <Phantom_Hoover> For what, services to shooting his mouth off?
19:27:49 <olsner> who's that?
19:28:01 <kallisti> @hoogle [a] -> Maybe a
19:28:02 <lambdabot> Data.Maybe listToMaybe :: [a] -> Maybe a
19:28:02 <lambdabot> Data.List find :: (a -> Bool) -> [a] -> Maybe a
19:28:02 <lambdabot> Prelude head :: [a] -> a
19:28:17 <kallisti> ah
19:28:24 <kallisti> > find (const True) [1,2,3,4]
19:28:25 <lambdabot> Just 1
19:29:43 <kallisti> 2010's Computer Music Journal is lame
19:29:46 <Phantom_Hoover> olsner, one of the Guardian's main columnists, notable among other things for being stupidly anti-science.
19:29:54 <kallisti> most of it is just people coming up with timbre-spaces
19:30:39 <kallisti> there's only one publication about actual audio synthesis.
19:30:49 <Phantom_Hoover> cf. http://www.guardian.co.uk/commentisfree/2008/jun/06/maths.alevels
19:31:03 <fizzie> It's a very wide-topic journal.
19:31:53 <kallisti> I don't find timbre-spaces very interesting.
19:32:26 <Phantom_Hoover> Additionally, http://www.guardian.co.uk/commentisfree/2010/jun/24/rees-makes-religion-out-of-science
19:33:02 <Phantom_Hoover> "too bad if science wrecked the case for nuclear power by its hypersafe radiation limits, or failed properly to defend GM foods."
19:33:27 <Phantom_Hoover> "GOD why can't you people effortlessly dispel people's irrationality?"
19:35:42 <kallisti> fizzie: what's a good year to read? there's a lot of them to search through. :P
19:38:29 <fizzie> kallisti: I have zero clue. There's a lot of interesting stuff also in the IEEE journals that have "audio" in the name, but those are even worse if you have a single topic in mind. Browsing them non-physically may be best for efficiency.
19:38:58 <kallisti> bbl
19:40:11 <fizzie> (Also some that have "audio" in the name also have "speech" in there, and just physically picking an issue up subjects you to elliott's industrial-strength scorn ray.)
19:43:12 -!- kallisti has quit (Ping timeout: 252 seconds).
19:43:36 <elliott> fizzie: SCOOOOOOOOOOOOOOOOOOOOOOOOOOOOORN
19:43:44 <elliott> It's voice-activated.
19:44:09 <fizzie> Does it use SPEECH RECOGNITION to pick up the activation commands?
19:44:31 <elliott> Precisely! That's why this is the first time it's activated.
19:44:42 <elliott> You hit the incredibly unrealistic and precise conditions required for speech recognition to be feasible.
19:46:03 <fizzie> Well scorned.
19:46:37 <elliott> It is probably a subconscious adjustment you have made to your manner of speech in an attempt to convince yourself that speech recognition is good.
19:46:48 -!- Klisz has joined.
19:46:56 <ais523> elliott: we really need more powerful, and more open to the masses, brainwave readers
19:47:01 <ais523> technology is getting there, luckily
19:47:12 <elliott> ais523: Yes. Then fizzie will be even more obsolete.
19:48:02 <ais523> elliott: incidentally, you have a huge Haskell bias in your SO answers
19:48:12 <elliott> ais523: That's because I only look at the haskell tag.
19:48:22 <elliott> I answered one (1) non-Haskell question, though.
19:48:26 <ais523> heh
19:48:27 <elliott> And that purity one wasn't really Haskell-related.
19:48:36 <ais523> I was wondering if you were just looking for haskell tags
19:48:48 <ais523> hmm, someone should ask INTERCAL questions on there
19:48:54 <elliott> ais523: Well, I would look at other tags, but the popular ones are terrible: http://stackoverflow.com/questions/tagged/c
19:48:55 <ais523> then point me to them so I can answer them
19:49:17 <elliott> ais523: I would ask one, but I think that would be rep laundering.
19:49:23 <ais523> ah, I see
19:49:33 <elliott> (That was a joke.)
19:49:40 <ais523> hmm, it looks just like comp.lang.c would look if the regulars didn't try so hard to scare people away
19:49:42 <elliott> (The real reason is I have no INTERCAL questions to ask.)
19:49:49 <ais523> when they asked that sort of question
19:51:49 <ais523> elliott: wow, those C questions are bad
19:51:54 <elliott> they really are
19:52:10 <ais523> I'm amused at the person who was worried that unsigned integers would overflow into the next bit of memory when they overflowed
19:52:15 <elliott> ais523: http://stackoverflow.com/questions/tagged/c%23 is possibly worse
19:52:19 <elliott> as the most popular tag on the site
19:52:21 <ais523> and was asking for reassurance, but fearing the worse
19:52:25 <ais523> elliott: c#, I take it?
19:52:31 <elliott> yep
19:53:17 <ais523> <nekcihc> I've been searching for a Linux version of the Conio Header file, but haven't found any... I'm using gcc and the Text-Editor "Geany" to compile my C-Code.
19:53:28 <ais523> I'd have forgiven em if e didn't mention the editor he was using
19:53:48 <elliott> hmm... that's the only thing he quoted
19:53:52 <elliott> clearly, he's using the editor '"Geany"'
19:53:57 <elliott> rather than the editor 'Geany'
19:54:10 <elliott> *e, w/e
19:54:11 <ais523> and the answers are actually useful, mostly referencing Linux reimpls of the library functions prototyped in conio.h
19:54:19 <fizzie> The freenode ##c is quite bad at times.
19:54:23 <elliott> fizzie: At times?
19:54:36 <fizzie> Sometimes it's just quiet.
19:54:47 <elliott> Sometimes PoppaVic isn't there, I guess.
19:55:02 <fizzie> Well, that is very rare.
19:55:17 <ais523> hmm, top INTERCAL result: http://stackoverflow.com/questions/2862785/is-there-an-intercal-mode-for-gnu-emacs
19:55:28 <ais523> I love the people answering "no" without checking
19:55:43 <elliott> people, plural?
19:56:00 <elliott> the other intercal results seem to be people mentioning it in passing
19:56:01 <ais523> well, one and a half
19:56:49 <fizzie> Recently I accidentally "emacs blah.pdf"d instead of "evince blah.pdf"ing, and it took me at least ten seconds to notice, since Emacs went and rendered that PDF.
19:56:58 <elliott> :D
19:57:12 <elliott> fizzie: that would be even better if you used emacs in a terminal
19:57:21 <ais523> terminal emacs doesn't render PDFs, though
19:57:24 <itidus21> "<ais523> I'm amused at the person who was worried that unsigned integers would overflow into the next bit of memory when they overflowed" if you think about numbers in text format like "1234" = 4 chars long, and, on this basis you suppose a max unsigned int "4294967296" is 10 chars long.. then it would be possible to concieve it
19:57:44 <ais523> itidus21: nah, they just thought that C would ignore types when incrementing numbers
19:58:04 <ais523> they were worried that integer overflow worked like every other type of overflow, just going into the next bit of memory
19:58:07 <ais523> which is a plausible misconception
19:58:26 -!- zzo38 has joined.
19:58:57 <elliott> it should work like that :)
19:59:17 <fizzie> ais523: But it's useful when you have an all-ones bitmap, want to clear it with a simple operation, and have some writable memory after. Just "++" it and the carry will keep going.
19:59:23 <ais523> *NULL -= 1; /* now my memory is full of ones rather than zeroes */
19:59:37 <fizzie> That, too.
19:59:49 <elliott> That's useful.
19:59:56 <ais523> (anyone who points out that NULL is not necessarily 0 is missing the point)
20:00:04 <elliott> fizzie: It'll even run in one cycle.
20:00:19 <elliott> Possibly one very long cycle.
20:00:21 <fizzie> Sure, it's just an increment.
20:00:59 <elliott> [[
20:01:03 <elliott> ]] never mind
20:01:08 <ais523> I think it's possible to make a memory that can manage arbitrary length increment in O(log n) time, O(n log n) silicon, where n is the number of bits in memory
20:02:00 <itidus21> i think of overflow in a literal sense of like icecube trays being filled with water
20:02:45 <itidus21> each icecube cell's volume of water being a byte of some kind
20:02:51 <elliott> ais523: did you know: dwarffortress is in Arch Linux's repositories?
20:02:53 <elliott> take that, Debian!
20:02:57 <ais523> elliott: I didn't
20:03:11 <ais523> it strikes me as the sort of thing that Debian wouldn't want in their main repos, though
20:03:15 <itidus21> so.. the increment operator on an icecube tray would be a drop of water
20:03:34 <itidus21> increment too many times and the water leaks into neighbouring cells
20:03:42 <elliott> ais523: it even installs a menu entry
20:04:11 <ais523> elliott: but that's easy
20:04:16 <ais523> my Jettyplay package installs a menu entry
20:04:33 <elliott> ais523: well, DF doesn't come with a menu entry file
20:04:43 <zzo38> Do you like new way of arranging esolang list of ideas?
20:04:54 <elliott> hmm, isn't this the second kernel update in two days
20:04:58 <zzo38> I even added three new entries as well, as making new sections
20:05:05 <ais523> elliott: nor does jettyplay, I wrote one for the package
20:05:26 <ais523> zzo38: I didn't see it because of all the spam
20:06:00 <elliott> ais523: atrapado spam, you mean?
20:06:01 <elliott> I think I'll yell at em on eir talk page
20:06:18 <ais523> zzo38: I think it's an improvement
20:06:34 <ais523> elliott: actually, regular spambot spam
20:06:42 <ais523> while I'm clearing it, I don't open other pages to avoid deleting them by mistake
20:07:38 <elliott> heh
20:07:55 <ais523> (I've got pretty close to that beforen ow)
20:08:00 <ais523> *
20:11:52 -!- asiekierka has quit (Remote host closed the connection).
20:12:23 <zzo38> Are you going to try to implement or write additional comment/question about any of these esolang ideas?
20:14:38 <elliott> ais523: the year categories look nicer now
20:14:48 <elliott> (yearcat2 was getting excessively wide)
20:15:24 <elliott> http://esoteric.voxelperfect.net/wiki/Category:Before_1993 hmm... Forth shouldn't be in this category
20:15:24 <ais523> zzo38: probably not in the near future, at least
20:15:43 <ais523> elliott: because it's more recent than or equally recent as 1993, or because it isn't an esolang?
20:15:43 <elliott> nor should PROLAN/M, arguably
20:15:47 <elliott> ais523: latter
20:15:55 <elliott> Forth dates back to the 70s
20:16:10 <ais523> there's not an esolang with the same name, right? always worth checking that
20:16:17 <elliott> well, the article doesn't describe one
20:16:19 <ais523> feel free to decategorise nonesolangs from esolang categories, anyway
20:16:55 <elliott> I did that for one of them, then got bored :)
20:18:37 <fizzie> Oh, here's a story of competence. The ISP installing the VDSL2 link was supposed to terminate the old ADSL contract (with another ISP); we faxed them a permission paper for that.
20:18:41 <fizzie> They told me explicitly the VDSL2 order would not proceed until they had gotten that paper; also in the paper I told them the installation date. Well, they went ahead and installed it on the requested day and everything seemed to be fine.
20:18:45 <fizzie> Then a bit over week ago I got a bill for January from the old ISP. So I sent the new one a question, something like "is this just because the old contract had a grace period for termination, or did something go wrong?"
20:18:50 <fizzie> And their answer was that "we never got the permission form from you and therefore didn't terminate the old contract". But apparently didn't think of telling me about it.
20:18:53 <fizzie> So I called the old ISP and asked; they said their records show the termination notice from the new ISP, and the permission form that they "never got" was attached; and that the January bill was due to one-month termination grace period thing.
20:18:57 <fizzie> I suppose the take-home message from all this is: never trust the words of my current ISP.
20:19:45 <elliott> :D
20:20:18 <ais523> why would the new ISP lie about that, anyway?
20:20:27 <ais523> it seems a thing counterproductive to lie about
20:20:30 <ais523> umm, *
20:20:31 <fizzie> ais523: Incompetence, I suppose.
20:21:07 <fizzie> Malice, probably not, since it doesn't really benefit them.
20:21:15 <elliott> ais523: where does that umm go?
20:21:28 <fizzie> I suppose it could be just nastiness for its own sake, though.
20:21:35 <ais523> elliott: it doesn't
20:21:41 <ais523> the * by itself is the correction
20:21:44 <elliott> ais523: oh
20:21:47 <elliott> what is it correcting?
20:21:56 <ais523> I've decided that as it's typically obvious enough what the correction is, there's no need to put it after the *
20:21:59 <ais523> and word order
20:22:05 <elliott> ah
20:22:07 <elliott> well, it failed utterly
20:22:11 <elliott> since I didn't notice the original mistake
20:22:40 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.88 [Firefox 9.0.1/20111220165912]).
20:24:29 <elliott> Sound devices available:
20:24:29 <elliott> No Output
20:24:29 <elliott> Picking No Output. If your desired device was missing, make sure you have the appropriate 32-bit libraries installed. If you wanted a different device, configure ~/.openalrc appropriately.
20:24:29 <elliott> Hmph
20:24:38 <fizzie> I'm guesstimating their overworked customer service drone just went "oh, uh, I don't know whether we sent the termination notice, can't be arsed to check, I'd probably have to call other people and whatever, I'll just blame the customer for not delivering the necessary forms and ask him to take care of it, that's easier".
20:25:53 <ais523> so why did you change ISP?
20:26:23 <fizzie> They are, after all, the same customer service people who said it's impossible to change the realname field of my Unix account from "null Kallasjoki", and that I should just live with it since it's not externally visible.
20:26:32 <elliott> :D
20:26:36 <elliott> I'd be proud to be null Kallasjoki.
20:26:40 <fizzie> (My first name is not "null", in case anyone was wondering.)
20:26:49 <elliott> Indeed, it's fizzie.
20:27:24 <ais523> fizzie: is Kallasjoki your name either?
20:27:29 <fizzie> ais523: The new one is faster and significantly cheaper, since they went and dug some fibre to the basement of this building.
20:27:36 <fizzie> The surname is correct.
20:28:48 <fizzie> It's hard to put a monetary price on the frustration; but on the other hand they seem to be a good supply for IRC anecdotes.
20:29:04 <fizzie> Let's hope they keep screwing up. (Or maybe not.)
20:29:22 <olsner> as long as they screw up in harmless ways, it's just fun
20:30:09 <fizzie> They have a web forum for users. Some of the stories are... colorful. (In Finnish only, sadly.)
20:34:09 <ais523> semantics of Finnish depend on color?
20:35:08 -!- zzo38 has quit (Remote host closed the connection).
20:35:18 <fizzie> 2. (3) colorful, colourful -- (striking in variety and interest; "a colorful period of history"; "a colorful character"; "colorful language")
20:36:10 <Ngevd> Oh god, I'm now talking on ##latin
20:36:31 <elliott> Ngevd: Excuse me you cannot avoid my questions.
20:43:34 -!- kallisti has joined.
20:43:35 -!- kallisti has quit (Changing host).
20:43:35 -!- kallisti has joined.
20:45:59 -!- cofila has changed nick to Gregor.
20:46:35 <kallisti> fizzie: I'm looking for statistical analysis of music/audio, and combinatorial logic for musical arrangement. so any topics related to that.
20:47:56 -!- oerjan has joined.
20:49:02 -!- GreaseMonkey has joined.
20:49:02 -!- GreaseMonkey has quit (Changing host).
20:49:02 -!- GreaseMonkey has joined.
20:50:37 <Gregor> "music/audio"
20:50:38 <Gregor> lol
20:51:00 <Gregor> Since we don't currently have anywhere near the technology to take audio and extract the music, those are wholly different questions.
20:51:25 <oerjan> music is all in your head, man
20:52:39 <GreaseMonkey> i thought you were saying that was a MIME type
20:52:42 <Gregor> oerjan: Need more 'a's, maaaaaaaaaan.
20:52:50 <fizzie> Gregor: Just because we can't do it doesn't mean there are not articles about it.
20:52:56 <oerjan> Gregor: aaaaaaaaaaaaaaaaaaaaaaah
20:52:56 <GreaseMonkey> "oh yeah what format is it in" "music/audio" "ok what plays that" "music and audio players"
20:54:29 <fizzie> And anyway, there are sort-of working things for subproblems, like extracting tempo curves automagically from audio.
20:55:49 <kallisti> Gregor: the division was intentional
20:55:55 <kallisti> Gregor: I'm looking for information on either.
20:55:58 <fizzie> Or separating polyphonic music to instruments up to some degree, or whatever.
20:56:17 <elliott> fizzie: Also getting near to the technology to do such a thing requires writing papers about it. :p
20:56:35 <elliott> SCIENCE AS SHE IS PLAYED
20:56:36 <kallisti> using statistics to figure out parameters of the "music" is something we can kind of do to an extent.
20:56:46 <kallisti> I just don't know how. :P
20:58:10 <kallisti> I think we should start simple. you can't go analyzing the most complex works ever written.
20:58:18 <kallisti> start with something like... Justin Bieber. or Rebecca Black.
20:58:20 <Gregor> I few terms ago a student here implemented beat detection for waveform audio.
20:58:34 <Gregor> We concluded that it works for music terrible enough that beat detection would work.
20:58:44 <itidus21> we don't have the tech to extract music from audio? thats amazing :o
20:59:06 <kallisti> itidus21: we had to pipe it to our hears in order to extract it.
20:59:08 <kallisti> *have
20:59:19 <Gregor> itidus21: Given a waveform sample of any real instrument, no matter how perfectly recorded, we can barely tell you what note it is.
20:59:20 <Gregor> kallisti: *ears
20:59:22 <itidus21> subvocalization is fun anyway
20:59:33 <kallisti> Gregor: inverse pun?
20:59:36 <itidus21> i am currently subvocalizing foo fighters
20:59:45 <kallisti> inverted typo pun.
21:00:11 <kallisti> I bet you can apply beat detection to most foo fighters songs.
21:00:25 <kallisti> (wicked burn)
21:00:28 -!- DCliche has joined.
21:00:30 <itidus21> yeah let it go to waste. i love it but i hate the taste
21:00:45 <kallisti> no. quoting foo fighters lyrics is banned.
21:01:08 <kallisti> http://www.facebook.com/ go here instead
21:01:23 <itidus21> good news is i have never sampled a justin bieber song with my ears
21:01:29 <itidus21> so i can't subvocalize it
21:01:35 <oerjan> i feel this slight urge to ban quintopia for privmsg'ing me and then immediately going away. but it may just be the hunger... ->
21:02:13 <fizzie> From what I've understood, "it" in general works not really that badly, but that's just a vague impression.
21:02:15 <kallisti> fizzie: so really just any kind of book on statistics would be good too I guess. but I'm mostly concerned with audio (oh and the anti-latency time sync prediction stuff I mentioned previously)
21:02:30 <itidus21> Gregor: thats a good sign for instruments
21:02:55 <kallisti> Gregor: real musicians don't play notes.
21:02:58 <kallisti> notes are just symbols, man.
21:03:03 <Gregor> Whoaaaaaaaaaaaaaaaaaah
21:03:04 <Gregor> Like
21:03:05 <Gregor> Whoaaaaaaaaaaaaaaaaaah
21:03:22 <kallisti> especially in electronic music...
21:03:29 <kallisti> it actually does become somewhat irrelevant.
21:03:55 <kallisti> unless you want to sound tonal. you know, if that's your thing.
21:03:58 -!- Klisz has quit (Ping timeout: 252 seconds).
21:04:42 <fizzie> kallisti: Anyhoo, sometimes a good way to find stuff is to go to Google Scholar and add "review" to your search terms, and hope you find something new enough. Like for tempo tracking, "A review of automatic rhythm description systems", F. Gouyon, Computer Music Journal, 2005, sounds relevant. (Not going to dig deeper with this phone.)
21:05:00 <elliott> review review
21:05:23 <kallisti> so today in intro to advanced math we learned about: BASIC SET THEORY
21:05:41 <Ngevd> Hurrah
21:05:51 <Ngevd> Today we learnt about me not handing in homework...
21:05:52 <Ngevd> :/
21:05:54 <kallisti> and he kind of hinted at how natural numbers can be constructed with the null set and powerset operator but he didn't really explain it he just used the example as a way to teach what powerset and subset means.
21:06:07 <kallisti> by hinted I mean he didn't say anything about it, but that's what he was doing.
21:06:44 <fizzie> kallisti: Also Bishop's "Machine Learning and Pattern Recognition" is a nice textbook about things in general (IIRC); it probably won't mention audio signals or music many times, if at all, though.
21:06:53 <kallisti> fizzie: that's fine
21:06:59 <kallisti> general knowlege will be helpful, of course.
21:07:29 <fizzie> We use it as a coursebook on some courses. Of course there are many similar books.
21:07:51 <kallisti> I need to find some more synthesis books. "Computer Music: Synthesis, Composition, and Performance" was a good intro but it doesn't go into more advanced topics.
21:09:20 <oerjan> @tell quintopia i am going to ignore you for pretending you were about to start an interesting conversation and then immediately going away.
21:09:21 <lambdabot> Consider it noted.
21:10:03 <kallisti> I'm going to be going to library so often it's going to be awesome.
21:10:08 <elliott> oerjan: sometimes i can't tell whether your @tells are serious or not
21:10:10 <kallisti> +the
21:10:17 <kallisti> elliott: that was not serious
21:10:19 <kallisti> hope that helps.
21:11:13 <oerjan> ...it was.
21:11:34 <oerjan> but don't worry, even i can't tell sometimes.
21:12:06 <kallisti> you know what kind of blows my mind.
21:12:29 <kallisti> Diet Mountain Dew (sry mtn dew) has concentrated orange juice as the second ingredient listed
21:12:34 <kallisti> but apparently has no Vitamin C
21:13:25 <kallisti> "brominated vegetable oil" lol wuht
21:13:46 <kallisti> You, sir, are about to enter the BROminator. :)
21:14:26 -!- saberman_800 has joined.
21:14:43 <ais523> kallisti: it's like hydrogenated vegetable oil, but with bromine instead
21:14:47 -!- Ngevd has quit (Quit: Goodbye).
21:14:56 <ais523> of hydrogen
21:15:29 <kallisti> ais523: I figured, but I'm still startled that it's in this drink, even if in very small quantities (less of it than the actual caffeine)
21:15:57 <ais523> kallisti: halogen atoms bound to hydrocarbons tend to be incredibly safe for humans
21:16:08 <ais523> CFCs are not poisonous in any way, that's why they became so popular
21:16:13 <ais523> rather worse for the environment, though
21:16:31 <kallisti> I see.
21:16:44 <kallisti> I was mainly just not expecting the "vegetable oil" part and was less focused on the "bromine" part.
21:17:38 <kallisti> does anyone have a list of every pharmecutial brand name ever invented?
21:17:41 <kallisti> I'd like to add that to word.
21:17:48 <kallisti> I bet Wikipedia does.
21:17:56 <ais523> kallisti: the US Trademark Office probably does, more seriously
21:18:04 <ais523> well, US Patents & Trademarks Office
21:18:39 <kallisti> ah oaky. I'll just shoot them an email.
21:18:54 -!- saberman_800 has quit (Remote host closed the connection).
21:19:32 <elliott> <kallisti> elliott: that was not serious
21:19:32 <elliott> <kallisti> hope that helps.
21:19:32 <elliott> <oerjan> ...it was.
21:19:35 <elliott> kallisti: see what i mean
21:20:11 <kallisti> elliott: no
21:20:19 <kallisti> that was also not serious.
21:20:45 <monqy> big help
21:20:51 <kallisti> hmmm their trademark search doesn't appear to have a category search
21:21:00 <monqy> most helpful 2012
21:21:05 <monqy> "a real winner"
21:21:08 <elliott> oerjan: ps don't ignore quintopia for having things to do other than irc
21:21:08 <kallisti> best monqy 2012
21:21:10 <elliott> unless you want to i guess
21:21:31 -!- saberman_1000 has joined.
21:21:38 -!- saberman_1000 has quit (Remote host closed the connection).
21:21:39 <kallisti> `searchlog helpful most 2012
21:21:54 <HackEgo> 2012-01-09.txt:21:21:39: <kallisti> `searchlog helpful most 2012
21:21:59 <kallisti> uh oh
21:21:59 <monqy> true searchlog quality
21:22:05 <monqy> now you'll be even less likely to find it
21:22:16 <ais523> what's the difference between log and searchlog?
21:22:27 <kallisti> searchlog is the best.
21:22:33 <kallisti> `ls
21:22:37 <HackEgo> bin \ canary \ karma \ lib \ main \ paste \ quotes \ searchlog.hi \ searchlog.hs \ searchlog.o \ share \ wisdom
21:22:45 <kallisti> `paste searchlog.hs
21:22:48 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.14186
21:23:11 <kallisti> oh wait it's still the bad one.
21:23:21 <monqy> is it?
21:23:24 <kallisti> somehow
21:23:25 <monqy> ah yes
21:23:30 <ais523> wait, why do we have an implementation of grep in Haskell?
21:23:30 <monqy> bad bad
21:23:38 <elliott> ais523: i
21:23:43 <monqy> we don't?
21:23:43 <kallisti> lol
21:23:45 -!- saberman_300 has joined.
21:23:51 <kmc> any software is better if it's written in haskell
21:24:02 <kmc> the highest goal of humanity is to rewrite all existing software in haskell
21:24:12 <monqy> implemenation of grep in haskell: call out to another grep wrapper
21:24:15 <monqy> "real good"
21:24:45 <kmc> shachaf, it's true, I do love handing file descriptors through UNIX sockets
21:24:56 <pikhq_> Every now and then I feel like working on package management again. It really doesn't take long before I stop feeling like that.
21:24:56 <kallisti> I don't actually think the ^.*....*$ is needed
21:24:59 <kallisti> I just put it there to be safe.
21:25:08 <pikhq_> I don't *wanna* do topological sort!
21:25:13 <elliott> c<kmc> any software is better if it's written in haskell
21:25:14 <elliott> <kmc> the highest goal of humanity is to rewrite all existing software in haskell
21:25:18 <elliott> You misspelled "@"!!!!
21:25:23 <pikhq_> Or constraint solving!
21:25:24 <ais523> pikhq_: meh, tsort's a really important algo
21:25:37 <kallisti> pikhq_: have you read about how Oz does constraint solving.
21:25:39 <pikhq_> ais523: Doesn't make me want to do it any more. :P
21:25:50 <ais523> it's come up naturally at least twice, which beats any other not-known-everywhere situation but priority queues
21:25:57 <ais523> (in the biased ais523 way of looking at things)
21:26:02 <ais523> oh, and parsers, but that doesn't count
21:26:11 <monqy> I'm from the future and "@" and "haskell" look exactly the same it's very confusing
21:26:14 <pikhq_> kallisti: No.
21:26:38 <itidus21> because with haskell you're one step closer to incorporating the software into mathematical proofs :D
21:26:45 -!- saberman_300 has quit (Remote host closed the connection).
21:26:49 <monqy> what
21:26:50 <elliott> no
21:26:51 <elliott> you're not
21:26:57 <kallisti> pikhq_: if that's a thing you want to do you might want to look at it. I don't know if it's "state-of-the-art" or whatever but it's a constraint programming language so I assume it's pretty good.
21:27:01 <itidus21> oh damn
21:27:15 <pikhq_> itidus21: Haskell is very informal.
21:27:24 <itidus21> not even 1 step closer?
21:27:31 <kallisti> depends on what you're writing I guess.
21:27:33 <monqy> a step sideways at least
21:27:41 <itidus21> hehe
21:27:42 <itidus21> ok
21:27:49 <elliott> well coq can extract to haskell
21:27:52 <elliott> :p
21:28:01 <kmc> that's kind of the opposite ;P
21:28:06 <kallisti> your web server written in Haskell is not going to be more mathematically sound than Apache.
21:28:08 <itidus21> the next genius will incorporate I/O into mathematics directly
21:28:14 <monqy> you're one step backwards from incorporating mathematical proofs into software
21:28:18 <monqy> true geniouse
21:28:28 <kmc> kallisti, it depends what you mean by "mathematically sound"
21:28:28 <pikhq_> Haskell is about as formally specified as C. Fairly well for a programming language, but not very in an absolute sense.
21:28:56 <kallisti> kmc: a constructive proof about web servers or something.
21:29:03 <kallisti> I don't really know.
21:29:12 <oerjan> elliott: it was also partially that he had obviously not read my answer to him yesterday.
21:29:12 <elliott> http://stackoverflow.com/questions/8648354/do-monads-do-anything-other-than-increase-readability-and-productivity
21:29:20 <kmc> ugh
21:29:22 <kmc> i'm not gonna click that
21:29:25 <elliott> kmc: :)
21:29:27 * kallisti clicks it.
21:29:33 <monqy> web servers theory "theory of the future"
21:29:34 <kmc> monads are useless because C is turing-complete
21:29:40 <elliott> kmc: no it's not
21:29:48 <kallisti> the answer is not that great either.
21:29:49 <kmc> if evolution is true then why are there still monkeys, HMMMMM?!?!?!?
21:29:50 <oerjan> elliott: mostly it was low blood sugar, though.
21:30:23 <elliott> oerjan: blood sugar is the best kind of sugar
21:30:27 * oerjan may return to near human behavior in a minute or so
21:30:27 <kallisti> `fetch http://sprunge.us/Ceae
21:30:32 <HackEgo> 2012-01-09 21:30:31 URL:http://sprunge.us/Ceae [510] -> "Ceae" [1]
21:30:41 <elliott> kmc: qed
21:31:17 <itidus21> C is good if you want to do imperative programming
21:31:34 <kallisti> `run mv Ceae searchlog.hs; ghc -O2 --fllvm -o bin/searchlog searchlog.hs; chmod +x bin/searchlog
21:31:38 <elliott> *low-level imperative programming
21:31:43 <HackEgo> ghc: unrecognised flags: --fllvm \ Usage: For basic information, try the `--help' option.
21:31:53 <kallisti> oh
21:31:57 <itidus21> hmm
21:32:03 <kallisti> `run mv Ceae searchlog.hs; ghc -O2 -fllvm -o bin/searchlog searchlog.hs; chmod +x bin/searchlog #real programmers use LLVM
21:32:20 <HackEgo> mv: cannot stat `Ceae': No such file or directory \ Linking bin/searchlog ...
21:32:37 <kallisti> ?
21:32:41 <monqy> you already moved it
21:32:43 <monqy> in the past
21:32:45 <kallisti> oh right
21:32:48 <kallisti> yes paste me.
21:33:10 <kallisti> I sometimes forget that I exist in a mutable world.
21:33:19 <itidus21> i think C is the best imperative language which doesn't rely on an interpreter
21:33:21 <monqy> mutation is hard times
21:33:30 <monqy> itidus21: what does best mean
21:33:42 <kallisti> itidus21: what does "doesn't rely on an interpreter" mean.
21:33:45 <elliott> itidus21: no language relies on an interpreter
21:33:45 <monqy> and what does "rely on an interpreter" mean
21:33:49 <monqy> yes that
21:33:49 <itidus21> it means, in practice, c# and java don't get implemented without interpreters
21:33:56 <monqy> what
21:33:58 <elliott> C, C#, Java: the only imperative languages
21:34:06 <itidus21> nearly :D
21:34:07 <elliott> also, C# and Java are OOP
21:34:10 <elliott> which isn't the same thing as imperative
21:34:33 <kallisti> also they're not "interpreted" in the sense that "interpreted" usually means.
21:34:36 <monqy> also they're compiled to bytecode and run on virtual machines "totally rely on interpreters"
21:34:39 <kallisti> at least
21:34:41 <elliott> monqy: JITs, even
21:34:45 <kallisti> their common implementations aren't
21:34:45 <monqy> oh yes that too
21:35:16 * kallisti imagines what java would be like if interpreted
21:35:19 <itidus21> C brought you linux
21:35:21 <kallisti> so. bad.
21:35:24 <monqy> so bad
21:35:39 <monqy> itidus21: ok
21:35:49 <monqy> itidus21: is that supposed to make it the best
21:35:53 <itidus21> yup
21:35:59 <monqy> :o
21:36:04 <kallisti> itidus21: yes, it's true. as soon as the first implementation of C was created, it sprang linux into existence.
21:36:13 <monqy> and then it was the best
21:36:16 <itidus21> C brought you unix
21:36:20 * kallisti imagines what perl would be like if just in time compiled.
21:36:21 <kallisti> so. good.
21:36:38 <itidus21> sadly C also brought me windows
21:37:29 <kallisti> itidus21: but yes C# and Java are not really interpreted. did you know that?
21:37:42 <elliott> itidus21: windows is mostly C++
21:38:06 <itidus21> i see the mistake i made
21:38:16 <monqy> C brought you C++
21:38:20 <monqy> that means it's the worst
21:38:37 <itidus21> i was probably trolling
21:38:45 <monqy> oh
21:38:45 <monqy> ok
21:38:59 <kmc> itidus21, C is good if you want to do imperative programming with buffer overflows
21:39:07 <oerjan> @tell quintopia my insanity appears to be diminishing; also blue cheese is good
21:39:07 <lambdabot> Consider it noted.
21:39:21 <oerjan> oh hm
21:39:35 <kallisti> Isn't this true of almost all language constructs? You can write every program using the four simple instructions of a Universal Register Machine, but you wouldn't want to. – arx
21:39:40 <kallisti> subleq would have been a way better example.
21:39:49 <itidus21> i lack the education to make serious mistakes in statements about languages
21:39:57 <kmc> i sure would love to program in this "Haskell" language with the proofs and the automatic memoization and parallelization
21:39:57 <lambdabot> kmc: You have 1 new message. '/msg lambdabot @messages' to read it.
21:40:00 <kmc> too bad it doesn't exist
21:40:12 <itidus21> i can only make trivial mistakes
21:40:13 <cheater_> you might be thinking of: Hacksell
21:40:20 <kmc> maybe if reddit believes in something long enough, then it comes true
21:40:22 <kmc> like christmas
21:40:45 <cheater_> kmc: what's up in curmudgeon land
21:40:59 <kmc> Haskell is great because it lets me prove that Integers exist, in an inconsistent logic
21:41:00 <elliott> @remember kmc i sure would love to program in this "Haskell" language with the proofs and the automatic memoization and parallelization
21:41:00 <lambdabot> Done.
21:41:03 <kallisti> kmc: is the automatic memoization thing at least partially true?
21:41:08 <elliott> kallisti: no
21:41:20 <kmc> i mean, laziness is *kind* of like memoization
21:41:22 <kmc> but only barely
21:41:23 <kallisti> right
21:41:28 <kmc> it's not memoization of function (argument, result) pairs
21:41:42 <elliott> sharing is kind of like memoisation, rather
21:41:43 <kmc> it just means if you write «let x = big_complicated in (x + x)», it doesn't compute big_complicated twice
21:41:58 <kmc> and technically / pedantically, that's not part of Haskell, it's an implementation detail shared by pretty much any Haskell implementation
21:42:01 <elliott> i mean they're related more than "kind of" with all the memocombinators stuff and everything
21:42:07 <kallisti> elliott: I was under the impression that lazy evaluation = non-strict evaluation + sharing
21:42:07 <elliott> but that's not automatic :P
21:42:18 <elliott> kallisti: lazy evaluation has both of those properties
21:42:22 <kmc> but the spec does not mandate lazy evaluation or sharing
21:42:34 <kallisti> elliott: so I guess you were just being more specific then...
21:42:43 <kmc> but it's an interesting bit of trivia that memoization is easier in a lazy pure language than a strict pure language
21:42:55 -!- oerjan has set topic: Official revolting channel of the inverse femtobarn stupid topic change CP violation, the original Trilogy: The Eodermdrome Strikes Back | http://codu.org/logs/_esoteric/.
21:43:11 <kmc> memoizing a function requires mutating a cache data structure
21:43:17 <kmc> laziness gives you implicit mutation of just the sort you need
21:43:30 <elliott> you'll start kallisti again
21:43:43 <kallisti> elliott: no, only you have the power to make arguments out of nothing.
21:44:15 -!- atrapado has joined.
21:45:01 <kallisti> at first I used where exclusively
21:45:05 <kmc> yesterday i tried to figure out why BART is broad-gauge
21:45:08 <kmc> i think nobody knows
21:45:11 <kallisti> but as I write more Haskell I find myself liking let in more situations.
21:45:17 <kmc> i think they were drunk when they designed it
21:45:20 <kmc> kallisti, me too
21:45:29 * elliott doesn't.
21:45:32 <kallisti> where is good too though. they're both good.
21:45:35 <itidus21> one mistake i made is confusing the terms language and implementation..
21:45:54 <kmc> i like things to flow logically from top to bottom (even if that's not the true order of evaluation)
21:46:04 <kmc> so "let" with the "top-level" expression at the end, is more natural than "where"
21:46:05 <kallisti> kmc: this is also why I think I actually prefer >>> to .
21:46:07 <itidus21> and another mistake i made is only considering PC computers
21:46:20 <kmc> kallisti, yeah, unfortuantely (>>>) is less common and uglier
21:46:33 <kallisti> eh it's not uglier
21:46:36 <kallisti> it even shows you the direction
21:46:39 <kallisti> it's just more typing
21:46:40 <kmc> sometimes "where" is good because the "top-level" expression can be understood by itself, and the helpers are self-contained details
21:46:51 <kallisti> right
21:46:51 * elliott doesn't think "flow logically" is meaningful like that.
21:47:00 <elliott> If not the order of evaluation, what /do/ you go by?
21:47:08 <cheater_> kmc: federal law influenced by earthquakes down south?
21:47:08 <kallisti> I prefer using "let" when I just need to extract some values within a particular case or something.
21:47:12 <kallisti> that doens't need to go in where.
21:47:15 <cheater_> or even regulation
21:47:26 <kmc> cheater_, interesting
21:47:33 <kmc> btw the transbay tube is not earthquake-safe
21:47:57 <cheater_> kmc: another possibility: attempt to disable use of existing trains. someone got smeared by a train factory.
21:48:00 <Phantom_Hoover> oerjan, oi, can you get anything interesting from regarding lines between points in R^n as morphisms in a category, or is this not something you'd know in any case?
21:48:11 <kmc> cheater_, yeah, it's great for vendor lock-in for sure
21:48:21 <kmc> they can't buy trains from the same suppliers as the other subways in the country
21:48:21 <kallisti> okay so... sharing is literally just a mechanism of let binding (and equivalent sugars)
21:48:23 <cheater_> not really, you can always change a vendor
21:48:26 <kmc> but they can buy trains from india, lol
21:48:26 <kallisti> ?
21:48:30 <kmc> (except not, because BUY AMERICAN!!!)
21:48:33 <kallisti> (that was a question. oops)
21:48:59 <cheater_> kmc: i think it's probably that there was a fleet of trains already, but the people building the bart wanted to earn extra, so they made sure the trains had to be new too.
21:49:05 <cheater_> *probable
21:49:10 <kmc> yeah
21:49:12 <kallisti> er, let me clarify. I know what the concept of sharing is, but I'm asking specifically where it occurs in Haskell.
21:49:12 <kmc> that's a good theory
21:49:24 <kmc> kallisti, let bindings, where bindings, module top-level bindings
21:49:34 <kallisti> ..."variables"> :P
21:49:36 <kallisti> *?
21:49:38 <itidus21> profit is a reliable motive
21:49:43 <cheater_> kmc: sharing is caring
21:49:44 <kallisti> not counting function arguments I guess.
21:49:49 <kmc> yeah
21:49:55 <kmc> or case-bound variables
21:50:09 <kmc> those are more passing through existing sharing
21:50:18 <kmc> to really answer your question I think you need a very detailed operational semantics
21:50:27 <kallisti> yes this is would be a good thing to know about.
21:50:27 <kmc> and then you ask, where does thunk allocation occur, and where does forcing occur
21:50:37 -!- centrinia has joined.
21:50:40 <kmc> have you read "Implementing lazy languages on stock hardware: the spineless tagless G-machine"?
21:50:41 <elliott> `welcome centrinia
21:50:45 <HackEgo> centrinia: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
21:50:48 <kallisti> kmc: noep
21:50:57 <centrinia> elliott: Did you automate that?
21:51:12 <kallisti> I understand that Haskell doesn't maintain a single call stack, but instead has a stack for each level of pattern matching? or something to that extent.
21:51:15 <kmc> kallisti, well, they have a very simple desugared Haskell-like language where these questions are relatively clear
21:51:23 <kmc> kallisti, do you mean GHC?
21:51:28 <kallisti> er, yes.
21:51:33 <kmc> i don't think it's a true statement about GHC, but I don't think it's a sensical statement about Haskell
21:51:41 <kmc> GHC has a stack *of* pattern-matchings
21:51:50 <kmc> the elements of the stack are "case continuations"
21:51:57 <kallisti> oh so just one. but it's not really a "call stack" either.
21:52:09 <kmc> they look like "case (hole) of Foo x -> ...; Bar y -> ..."
21:52:17 <cheater_> kmc: any idea how much those techno goggles would cost to make? i was thinking of making a pair here
21:52:27 <kmc> meaning "once you've finished evaluating whatever you're currently evaluating, branch on these cases
21:52:36 <kmc> except some of the elements are "update frames"
21:52:49 <kmc> which mean like "before you continue, plz overwrite this thunk with the answer you just computed"
21:52:54 -!- ais523 has quit (Remote host closed the connection).
21:53:31 <elliott> centrinia: No.
21:53:50 <kallisti> kmc: your definition of case continuations seems backwards from what I was envisioning.
21:54:11 <kmc> how so?
21:54:34 <kallisti> kmc: it seems that each continuation is moving further down a data structure? I was thinking it was a way to "go back up".... if that makes sense.
21:54:34 <kmc> the expression currently being evaluated is implicit in the program counter
21:54:46 <cheater_> kmc: do you have a BOM for those?
21:54:46 <kmc> the thing you need to remember is, what do you do after evaluation completes
21:54:49 <kmc> cheater_, no
21:54:56 <elliott> 03:00:12: <kmc> if you teach someone C and tell them it's how the computer "really works" then they will probably become an insufferable douchebag
21:54:56 <elliott> Doesn't that apply to every language?
21:54:59 <cheater_> kmc: do you know nothing about how much they could cost?
21:55:01 <oerjan> Phantom_Hoover: well it wouldn't contain more information than the pair of points itself, since two points always have exactly one line between them.
21:55:08 <kmc> elliott, yes, but people usually don't tell that lie about other languages
21:55:12 <kmc> cheater_, ballpark of $30
21:55:14 <kallisti> elliott: what about assembly?
21:55:19 <kmc> it depends what parts you have, and what you're making exactly
21:55:21 <cheater_> i've just spent more on pizza
21:55:23 <elliott> kallisti: Indeed.
21:55:27 <cheater_> that's fine then
21:55:34 <elliott> kallisti: As in,
21:55:37 <elliott> kallisti: Indeed the same applies to that.
21:55:53 <kmc> cheater_, browse these and maybe comment or contact the guy http://wealoneonearth.blogspot.com/search/label/goggles
21:56:05 <kmc> he has some detailed build instructions
21:56:13 <kallisti> kmc: oh right lazy evaluation kind of happens in reverse when compared to strict evaluation.
21:56:16 <kallisti> I think?
21:56:16 <Phantom_Hoover> oerjan, yeah, but that doesn't preclude something interesting coming from it.
21:56:20 <cheater_> kmc: thx4u
21:56:35 <kmc> kallisti, maybe?
21:57:01 <kallisti> well, no.
21:57:09 <kallisti> I think I understand the case continuation bit though.
21:58:38 <kmc> (by the way "evaluate" means "evaluate to whnf")
21:58:44 <kallisti> right.
21:59:01 <kmc> if you have a deep pattern in Haskell, it will translate to many nested 'case's in STG-language
21:59:04 <kallisti> also another question: isn't beta-reduction and inlining the same thing in Haskell?
21:59:05 <kmc> each once forces to whnf
21:59:11 <kmc> kallisti, is it?
21:59:28 <kmc> you're saying that inlining is a special case of compile-time partial evaluation?
21:59:35 <kallisti> it seems like when you inline a function you would also be beta-reducing it.
21:59:58 <kallisti> beta-reducing its application
21:59:58 <kallisti> rather
21:59:59 <kmc> i think it's best to treat those as separate
22:00:01 <kmc> but i don't really know
22:00:28 <kmc> you could say that «(\x -> x + 2) 2» is already "inline" but you might want an optimization which reduces it to 4
22:00:28 -!- Jafet has quit (Quit: Leaving.).
22:00:28 <kallisti> I ask because Wikipedia's article on GHC mentions that it does inlining, and then also mentions that it performs beta-reduction.
22:00:32 <kallisti> maybe it's referring to different intermediate representations.
22:00:38 <kmc> you could read "secrets of the GHC inliner"
22:01:22 <kmc> 193 amazing sex tips to satisfy your GHC inliner
22:02:04 <kallisti> btw spineless tagless G-machine is the best name for a thing ever.
22:02:39 <elliott> I don't think people would consider something inlining if it skipped the beta-reduction.
22:02:40 <oerjan> Phantom_Hoover: well it means it's isomorphic to the obvious category of pairs of points. which i think is sort of a trivial partial preorder category.
22:02:50 <elliott> It would just increase the size of code and not save the cost of a call.
22:02:58 <elliott> Although I guess the jump could be smaller?
22:03:16 <oerjan> or equivalently, every object is a zero object.
22:03:27 <kallisti> elliott: well you would still get the benefits of some rewrite rules if you inlined without beta-reduction
22:04:17 <kallisti> but... you would get more if you beta-reduced
22:04:43 <elliott> oerjan: I'M GOING TO UNDERSTAND ALL THIS WHEN I READ C4TWM I'M SURE
22:04:51 * elliott convincing.
22:05:14 <kallisti> > iterate (filterM (const [True, False])) []
22:05:15 <lambdabot> Occurs check: cannot construct the infinite type: a = [a]
22:05:24 <kallisti> NOOOOOOO
22:05:24 <elliott> cabinets for ten wacky monkeys
22:05:36 * shachaf shachaf shachaf *
22:05:45 <elliott> shachaf: hi
22:05:45 <oerjan> elliott: you _do_ know what a category is, don't you. this is a rather trivial example.
22:05:52 <kallisti> :t filterM
22:05:53 <lambdabot> forall a (m :: * -> *). (Monad m) => (a -> m Bool) -> [a] -> m [a]
22:05:54 <elliott> oerjan: well on a good day, yes.
22:06:04 <shachaf> It's been almost thirty minutes away from IRC. I was starting to sweat.
22:06:24 <elliott> > iterate(group>=>show.length++tail)"1"
22:06:26 <lambdabot> ["1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1...
22:06:31 <elliott> wtf
22:06:31 <elliott> oh
22:06:54 <elliott> > iterate(group>=>(:)<$>length<*>take 1)"1"
22:06:55 <lambdabot> Couldn't match expected type `GHC.Types.Int'
22:06:56 <lambdabot> against inferred type ...
22:07:01 <elliott> > iterate(group>=>(:)<$>length<*>take 1)[1]
22:07:02 <lambdabot> [[1],[1,1],[2,1],[1,2,1,1],[1,1,1,2,2,1],[3,1,2,2,1,1],[1,3,1,1,2,2,2,1],[1...
22:07:13 <kallisti> that's one way to look at it.
22:08:07 <kallisti> > iterate (toDyn . filterM (const [True, False])) []
22:08:08 <lambdabot> Couldn't match expected type `Data.Dynamic.Dynamic'
22:08:09 <lambdabot> against inferre...
22:08:12 <kallisti> noooooooooo
22:08:13 <oerjan> > iterate(group>=>show.length++take 1)[1]
22:08:14 <lambdabot> No instance for (GHC.Num.Num GHC.Types.Char)
22:08:15 <lambdabot> arising from the literal `1...
22:08:19 <kallisti> :t fromDyn
22:08:21 <lambdabot> forall a. (Typeable a) => Dynamic -> a -> a
22:08:34 <oerjan> oh duh
22:08:38 <oerjan> > iterate(group>=>length++take 1)[1]
22:08:38 <kallisti> :t fromDynamic
22:08:39 <lambdabot> Couldn't match expected type `GHC.Types.Int'
22:08:40 <lambdabot> against inferred type ...
22:08:40 <lambdabot> forall a. (Typeable a) => Dynamic -> Maybe a
22:08:56 <oerjan> i guess you really needed that.
22:09:09 <kallisti> > fromDyn (toDyn 2) undefined -- ????????
22:09:10 <lambdabot> *Exception: Prelude.undefined
22:09:15 -!- Jafet has joined.
22:09:16 <oerjan> > iterate(group>=>return.length++take 1)[1]
22:09:18 <lambdabot> [[1],[1,1],[2,1],[1,2,1,1],[1,1,1,2,2,1],[3,1,2,2,1,1],[1,3,1,1,2,2,2,1],[1...
22:09:19 <elliott> kallisti: defaulting
22:09:26 <elliott> oerjan: (:[]). is shorter
22:09:39 <oerjan> > iterate(group>=>(:[]).length++take 1)[1]
22:09:39 * elliott is just trying to get it even shorter somehow
22:09:40 <lambdabot> [[1],[1,1],[2,1],[1,2,1,1],[1,1,1,2,2,1],[3,1,2,2,1,1],[1,3,1,1,2,2,2,1],[1...
22:09:56 <elliott> > iterate(group>=>flip[length,take 1])[1]
22:09:56 <lambdabot> Couldn't match expected type `GHC.Types.Int'
22:09:57 <lambdabot> against inferred type ...
22:10:08 <kallisti> > iterate (toDyn . filterM (const [True, False]) . (`fromDyn` [])) []
22:10:09 <lambdabot> Couldn't match expected type `Data.Dynamic.Dynamic'
22:10:09 <lambdabot> against inferre...
22:10:10 <elliott> > iterate(group>=>flip[(length++),take 1])[1]
22:10:11 <lambdabot> Couldn't match expected type `[a]'
22:10:11 <lambdabot> against inferred type `[a1] -> G...
22:10:25 <kallisti> I have a feeling Dynamic is not the way to go about this :P
22:10:36 -!- saberman_101 has joined.
22:10:40 <elliott> saberman_101: hi
22:10:45 <elliott> :t count
22:10:46 <lambdabot> Not in scope: `count'
22:10:49 <elliott> :/
22:10:53 <elliott> @hoogle (a -> Bool) -> [a] -> Int
22:10:54 <lambdabot> Data.List findIndex :: (a -> Bool) -> [a] -> Maybe Int
22:10:54 <lambdabot> Data.List findIndices :: (a -> Bool) -> [a] -> [Int]
22:10:54 <lambdabot> Data.List find :: (a -> Bool) -> [a] -> Maybe a
22:10:57 <elliott> @hoogle a -> [a] -> Int
22:10:57 <kallisti> > iterate (toDyn . filterM (const [True, False]) . (`fromDyn` [])) (toDyn [])
22:10:57 <lambdabot> Data.List elemIndex :: Eq a => a -> [a] -> Maybe Int
22:10:57 <lambdabot> Data.List elemIndices :: Eq a => a -> [a] -> [Int]
22:10:58 <lambdabot> Network.BufferType buf_concat :: BufferOp a -> [a] -> a
22:10:58 <oerjan> > iterate(group>=>flip[length,head])[1]
22:10:58 <lambdabot> Ambiguous type variable `a' in the constraint:
22:11:00 <lambdabot> `Data.Typeable.Typeable a...
22:11:02 <lambdabot> [[1],[1,1],[2,1],[1,2,1,1],[1,1,1,2,2,1],[3,1,2,2,1,1],[1,3,1,1,2,2,2,1],[1...
22:11:07 <oerjan> elliott: ^
22:11:14 <elliott> oerjan: huh
22:11:16 <elliott> is that shorter?
22:11:43 <elliott> > iterate (\xs -> if length (filter id xs) > length (filter not xs) then xs++[False] else xs++[True]) []
22:11:45 <lambdabot> [[],[True],[True,False],[True,False,True],[True,False,True,False],[True,Fal...
22:11:46 <oerjan> 1 char shorter i think
22:11:52 <shachaf> Hey, all y'all should golf a Pascal's triangle generator.
22:11:54 <elliott> oh, predictable
22:12:09 <shachaf> That was brought up on a mailing list I'm on.
22:12:11 <oerjan> :t flip[?x]
22:12:12 <lambdabot> forall a b. (?x::a -> b) => a -> [b]
22:12:25 <shachaf> > iterate(\f->zipWith(+)f(0:f)++[1])[1]
22:12:26 <lambdabot> [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1],[1,5,10,10,5,1],[1,6,15,20,15,6,1]...
22:13:04 -!- saberman_101 has quit (Remote host closed the connection).
22:13:26 <elliott> > iterate ((++[1]).(\f -> zipWith (+) f (0:f))) [1]
22:13:27 <lambdabot> [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1],[1,5,10,10,5,1],[1,6,15,20,15,6,1]...
22:13:38 <shachaf> Yay, that's much shorter.
22:13:40 <elliott> > iterate ((++[1]).(zipWith (+) <*> (0:))) [1]
22:13:41 <lambdabot> [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1],[1,5,10,10,5,1],[1,6,15,20,15,6,1]...
22:13:47 <kallisti> is there a way to get a structure like that? arbitrarily deep nestings of empty elements or whatever.
22:13:48 <elliott> > iterate ((++[1]).zipWith (+) <*> (0:)) [1]
22:13:48 <lambdabot> Couldn't match expected type `a1 -> a' against inferred type `[t]'
22:13:56 <shachaf> > iterate(foldr(\v(p:q)->v:(p+v):q)[0])[1]
22:13:57 <lambdabot> [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1],[1,5,10,10,5,1],[1,6,15,20,15,6,1]...
22:14:00 <kallisti> I think zzo made something like that.
22:14:07 <kallisti> the "ordered multiset" :P
22:14:13 -!- centrinia has quit (Read error: Connection reset by peer).
22:14:26 -!- centrinia has joined.
22:14:27 <elliott> > iterate((++[1]).ap(zipWith(+))(0:))[1]
22:14:29 <lambdabot> [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1],[1,5,10,10,5,1],[1,6,15,20,15,6,1]...
22:14:48 -!- centrinia has quit (Client Quit).
22:14:58 -!- saberman_1 has joined.
22:15:03 <kallisti> newtype T = T [T]
22:15:14 <elliott> kallisti: Mu []
22:15:20 <kallisti> wassat
22:15:26 <elliott> newtype Mu f = Mu (f (Mu f))
22:15:37 <kallisti> oh good
22:15:45 <Jafet> Moo.
22:15:47 <kallisti> :t Mu
22:15:48 <lambdabot> Not in scope: data constructor `Mu'
22:15:51 <kallisti> NOOOOOOOOOOOOOOOOOOOOOOOOOOO
22:15:54 <shachaf> @ty In
22:15:55 <lambdabot> forall (f :: * -> *). f (Mu f) -> Mu f
22:16:01 <elliott> @ty fold
22:16:02 <lambdabot> Not in scope: `fold'
22:16:02 <shachaf> @src Mu
22:16:03 <lambdabot> newtype Mu f = In { out :: f (Mu f) }
22:16:03 <elliott> @ty mu
22:16:04 <lambdabot> Not in scope: `mu'
22:16:06 <shachaf> @ty cata
22:16:07 <lambdabot> forall (f :: * -> *) a. (Functor f) => (f a -> a) -> Mu f -> a
22:16:11 <shachaf> @src cata
22:16:11 <lambdabot> Source not found. This mission is too important for me to allow you to jeopardize it.
22:16:19 <elliott> :t cata out
22:16:20 <lambdabot> Couldn't match kind `(* -> *) -> *' against `* -> *'
22:16:20 <shachaf> @google type level fix and generic folds
22:16:21 <lambdabot> When matching the kinds of `Mu :: (* -> *) -> *' and `f :: * -> *'
22:16:21 <lambdabot> Expected type: f a
22:16:21 <lambdabot> http://mainisusuallyafunction.blogspot.com/2010/12/type-level-fix-and-generic-folds.html
22:16:23 <kallisti> "cata" is WoW slang for Cataclysm
22:16:38 -!- saberman_1 has quit (Remote host closed the connection).
22:16:38 <shachaf> "WoW" is NetHack slang for Wand of Wishing.
22:16:53 <elliott> "NetHack" is internet slang for hacking.
22:17:06 <shachaf> "internet" is internet slang for internet.
22:17:12 <elliott> *internetworking
22:17:47 <elliott> I sure hope 3 people upvote me in the next date
22:17:48 <elliott> ...
22:17:55 <elliott> I sure hope 3 people upvote me in the next 2 hours.
22:18:06 * elliott is good at switching windows.
22:18:26 <Jafet> Is that how dating sites work these days?
22:18:49 <elliott> Totally.
22:18:50 <fizzie> Jafet: Dating is all about SO reputation these days.
22:19:43 <Jafet> SO is all about whores
22:20:13 <fizzie> elliott is all "have you seen how large my SO reputation is", and all the ladi^Wpersons-of-interest are all "ooh!"
22:21:01 <Jafet> He can even give to them out of his large... reputation
22:21:11 <shachaf> elliott's reputation overflows the stack.
22:21:59 <elliott> fizzie: It's true! That's how I met lax.
22:22:12 <fizzie> elliott: We tried to find your SO reputation number the other day by searching for "elliott", and then was all "hey the search found a Haskell question, this must be the right thing" and then it was just that that Conal dude was mentioned in the text. (But don't worry, we did think of searching for "ehird" too when that didn't pan out.)
22:22:25 <oerjan> > iterate(filterM(const[True,False]).In)[]
22:22:26 <lambdabot> Couldn't match expected type `[a]' against inferred type `L.Mu []'
22:22:30 <elliott> fizzie: You tried to find my SO reputation as a group activity?
22:22:41 <fizzie> elliott: Well, you see, my wife was interested in your reputation.
22:22:50 * elliott is famous.
22:22:55 <shachaf> elliott's reputation precedes him.
22:23:04 <elliott> You know you've made it when fizzie's wife knows about your reputation.
22:23:11 <shachaf> fizzie is married?!
22:23:15 <shachaf> Way to crush my dreams.
22:23:23 <fizzie> Your reputation had just passed five thousand at that point; I see it's over six thousand already now.
22:23:30 <oerjan> > iterate(In . filterM(const[True,False]))[]
22:23:31 <lambdabot> Couldn't match expected type `L.Mu []' against inferred type `[a]'
22:23:38 <oerjan> :t In
22:23:39 <lambdabot> forall (f :: * -> *). f (Mu f) -> Mu f
22:23:50 <shachaf> @ty InR
22:23:51 <lambdabot> forall a. (Rec a -> a) -> Rec a
22:24:05 <Jafet> > iterate(In . filterM(const[True,False])) (In [])
22:24:06 <lambdabot> Couldn't match expected type `L.Mu []' against inferred type `[a]'
22:24:23 <oerjan> @src Rec
22:24:24 <lambdabot> newtype Rec a = InR { outR :: Rec a -> a }
22:24:24 -!- saberman_1 has joined.
22:24:27 <elliott> fizzie: Conal also has a Stack Overflow account! He has less reputation than me.
22:24:35 <elliott> Soon everybody will forget about THAT Elliott.
22:24:52 -!- saberman_1 has quit (Remote host closed the connection).
22:24:57 <Phantom_Hoover> fizzie, why on earth did your wife care about elliott's SO rep.
22:25:06 <Jafet> > iterate(In . filterM(const[True,False]) . \(In xs) -> xs) (In [])
22:25:07 <lambdabot> Couldn't match expected type `L.Mu []' against inferred type `[a]'
22:25:22 <fizzie> Phantom_Hoover: Who wouldn't?
22:25:23 <elliott> shachaf: Why isn't Rec defined as type Rec = Mu :. Flip (->)
22:25:26 <elliott> UNFORGIVABLE
22:25:41 <Phantom_Hoover> fizzie, HELP AM I THE ONLY ONE WHO WISHES HE WOULD STOP
22:26:10 <shachaf> elliott: WHY AREN'T *YOU* DEFINED AS type You = Mu :. Flip (->)???
22:26:11 <fizzie> Phantom_Hoover: Anyway, she often asks of #esoteric happenings, and it has been a PROMINENT TOPIC lately, has it not? We've certainly had some SO weather, eh?
22:26:16 <elliott> shachaf: I AM
22:26:31 <oerjan> > iterate(filterM(const[True,False]).map out)[]
22:26:32 <lambdabot> Couldn't match expected type `[t (L.Mu t)]'
22:26:32 <lambdabot> against inferred type `...
22:26:34 <elliott> fizzie: What is it with everybody talking about #esoteric IRL?
22:26:39 <oerjan> hmph
22:26:41 <oerjan> @src Mu
22:26:41 <lambdabot> newtype Mu f = In { out :: f (Mu f) }
22:26:45 <elliott> WHAT HAPPENS IN #ESOTERIC STAYS IN #ESOTERIC.
22:26:59 <fizzie> Except for the bits that leak out into the logs.
22:27:05 <elliott> Well, we redact most of those.
22:27:44 <oerjan> > iterate(map In . filterM(const[True,False]))[]
22:27:46 <lambdabot> [[],[In []],[In [In []],In []],[In [In [In []],In []],In [In [In []]],In [I...
22:27:54 * oerjan does a victory dance
22:27:57 -!- saberman_1 has joined.
22:28:01 <shachaf> @ is the ASCII CHARACTER THAT COMES AFTER ?
22:28:05 <elliott> fizzie: Searching "elliott" also finds a Haskell question where Trevor Elliott is mentioned. :/
22:28:10 <elliott> I need to assassinate the other Elliotts.
22:28:39 <shachaf> "assassinate" is like "murder" except the target is important, right?
22:28:44 <elliott> oerjan: Now rewrite everything with Mu [] and you'll be an Ursula user.
22:28:51 <elliott> shachaf: Yes.
22:29:01 -!- saberman_1 has quit (Remote host closed the connection).
22:29:38 <elliott> It is probably not worth noting that "splat" and "big money" are the official pronunciations specified for the * and $ operators in the original INTERCAL Reference Manual, which is most certainly an authoritative source if I've never heard of one. – C. A. McCann Apr 29 '11 at 20:23
22:29:47 <elliott> SO Haskellers know what's *really* important.
22:30:32 -!- saberman_1 has joined.
22:30:39 <elliott> :t ana
22:30:40 <lambdabot> Not in scope: `ana'
22:30:43 -!- cheater_ has quit (Quit: leaving).
22:30:45 <elliott> Lame.
22:30:53 <shachaf> I'll tell cheater_ you want him back.
22:31:11 <elliott> How kind.
22:31:31 <elliott> @let ana f = fix (\g -> In . fmap g . f)
22:31:32 <lambdabot> Defined.
22:31:35 <elliott> :t ana
22:31:35 -!- saberman_1 has quit (Remote host closed the connection).
22:31:36 <lambdabot> forall a (f :: * -> *). (Functor f) => (a -> f a) -> a -> Mu f
22:31:50 <elliott> > ana (:[]) 42
22:31:51 <lambdabot> In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In ...
22:33:05 <oerjan> > fix(out<$>) `asTypeOf` Nothing
22:33:06 <lambdabot> Couldn't match kind `* -> *' against `(* -> *) -> *'
22:33:13 <oerjan> @src Mu
22:33:14 <lambdabot> newtype Mu f = In { out :: f (Mu f) }
22:34:10 <oerjan> > fix(In . pure) `asTypeOf` Nothing
22:34:11 <lambdabot> Couldn't match expected type `L.Mu f'
22:34:11 <lambdabot> against inferred type `Data.M...
22:34:17 <oerjan> wat
22:34:22 <oerjan> oh hm
22:34:31 <oerjan> > fix(pure.In) `asTypeOf` Nothing
22:34:32 <lambdabot> Just (In (Just (In (Just (In (Just (In (Just (In (Just (In (Just (In (Just ...
22:34:38 <oerjan> this just in
22:34:42 <oerjan> > fix(pure.In) `asTypeOf` []
22:34:43 <lambdabot> [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In...
22:34:54 <oerjan> > fix(pure.In) `asTypeOf` (Left "")
22:34:56 <lambdabot> Right (In (Right (In (Right (In (Right (In (Right (In (Right (In (Right (In...
22:36:29 <oerjan> :t showList
22:36:30 <lambdabot> forall a. (Show a) => [a] -> String -> String
22:37:16 -!- saberman_1 has joined.
22:37:21 <elliott> :t \f -> fix (In . f)
22:37:22 <lambdabot> forall (f :: * -> *). (Mu f -> f (Mu f)) -> Mu f
22:37:27 -!- saberman_1 has quit (Remote host closed the connection).
22:37:38 <elliott> :t \f -> In (fix (f . In))
22:37:38 <lambdabot> forall (f :: * -> *). (Mu f -> f (Mu f)) -> Mu f
22:37:47 <elliott> ...duh :P
22:37:57 <elliott> oerjan: oh it's the asTypeOf that broke yours
22:38:04 <elliott> > fix (In . Just)
22:38:06 <lambdabot> In (Just (In (Just (In (Just (In (Just (In (Just (In (Just (In (Just (In (J...
22:38:24 <oerjan> yeah
22:38:50 <kallisti> !perl "sup" =~ //
22:38:53 <EgoBot> No output.
22:39:10 <kallisti> !perl "sup" =~ m//
22:39:11 <EgoBot> No output.
22:39:22 <oerjan> > iterate(map var.filterM(const[True,False]))[]
22:39:23 <lambdabot> Couldn't match expected type `Data.Number.Symbolic.Sym a'
22:39:23 <lambdabot> against i...
22:39:48 <shachaf> I wish I had GHC 7.4.
22:40:42 <elliott> shachaf: What system are you on?
22:40:53 <oerjan> :t \f -> (map f .)
22:40:54 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f [a] -> f [b]
22:41:03 <oerjan> :t \f -> (map f Prelude..)
22:41:04 <lambdabot> forall a b a1. (a -> b) -> (a1 -> [a]) -> a1 -> [b]
22:41:19 <elliott> shachaf: Wait, you realise there are GHC 7.4 binaries, right?
22:41:26 <shachaf> elliott: Yes, but I'm too lazy to install them.
22:41:32 <shachaf> And also, they're release candidates.
22:41:38 <oerjan> @hoogle (a -> b) -> (a1 -> f a) -> a1 -> f b
22:41:38 <lambdabot> Control.Parallel.Strategies ($|) :: (a -> b) -> Strategy a -> a -> b
22:41:39 <lambdabot> Control.Parallel.Strategies ($||) :: (a -> b) -> Strategy a -> a -> b
22:41:39 <lambdabot> Control.Parallel.Strategies (.|) :: (b -> c) -> Strategy b -> (a -> b) -> (a -> c)
22:41:39 <shachaf> I'm waiting until one of them gets voted in.
22:41:50 <shachaf> Democracy, you know.
22:42:09 <elliott> shachaf: wget http://www.haskell.org/ghc/dist/7.4.1-rc1/ghc-7.4.0.20111219-x86_64-unknown-linux.tar.bz2 && tar xf ghc* && cd ghc* && ./configure --prefix=~/ghc-7.4 && make install
22:42:14 <oerjan> @hoogle (a -> b) -> (a1 -> [a]) -> a1 -> [b]
22:42:15 <lambdabot> No results found
22:42:28 <elliott> "I believe the Show superclass constraint has been removed from Num." PRAISE THE LORD
22:43:45 <shachaf> ALL PRAISE LORD ØRJÄÑ
22:43:56 <oerjan> > iterate(map(var.show).showfilterM(const[True,False]))[]
22:43:56 <lambdabot> Not in scope: `showfilterM'
22:44:01 <oerjan> > iterate(map(var.show).filterM(const[True,False]))[]
22:44:02 <lambdabot> [[],[[]],[[[]],[]],[[[[]],[]],[[[]]],[[]],[]],[[[[[]],[]],[[[]]],[[]],[]],[...
22:46:08 <oerjan> judging by my programming, if i become lord i will solve all your problems, although not without accidentally obliterating a few countries in the process.
22:46:56 <oerjan> all the problems that don't require real work, that is.
22:47:40 <kallisti> `perl @a = (undef); print @a // 1
22:47:43 <HackEgo> Can't open perl script "@a = (undef); print @a // 1 ": No such file or directory
22:47:44 <kallisti> !perl @a = (undef); print @a // 1
22:47:45 <EgoBot> 1
22:47:56 <kallisti> !perl @a = (undef); print $a[0]
22:47:57 <EgoBot> No output.
22:48:07 <kallisti> !perl @a = (undef); print scalar @a
22:48:08 <EgoBot> 1
22:48:51 <kallisti> !perl @a = (1,2,3); print @a // 3
22:48:52 <EgoBot> 3
22:48:54 <kallisti> :(
22:49:27 <kallisti> so // is not entirely equivalent to a ?: as the docs suggest.
22:50:08 <elliott> <oerjan> @hoogle (a -> b) -> (a1 -> [a]) -> a1 -> [b]
22:50:14 <elliott> oh, wait, you already wrote that
22:50:35 <shachaf> @hoogle a -> b -> a -> b -> a -> b -> a
22:50:36 <lambdabot> Data.List zipWith6 :: (a -> b -> c -> d -> e -> f -> g) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g]
22:50:37 <lambdabot> Data.List zipWith7 :: (a -> b -> c -> d -> e -> f -> g -> h) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [h]
22:50:40 <elliott> oerjan: it's fmap . fmap
22:55:12 <oerjan> elliott: i was hoping for an operator so i could just write var.show ... filterM(const[True,False])
22:55:59 <oerjan> oh hm
22:56:00 <oerjan> :t (.:)
22:56:00 <lambdabot> forall a b (f :: * -> *) (g :: * -> *). (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b)
22:56:29 <oerjan> :t (.:) `asTypeOf` fmap fmap fmap
22:56:30 <lambdabot> forall (f :: * -> *) a b (f1 :: * -> *). (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b)
22:56:36 <oerjan> yay
22:56:50 <oerjan> > iterate(var.show.:filterM(const[True,False]))[]
22:56:51 <lambdabot> Couldn't match expected type `GHC.Types.Char'
22:56:51 <lambdabot> against inferred type...
22:56:57 <shachaf> I pretty much have one response to questions in #haskell these days.
22:56:58 <oerjan> now what :(
22:57:06 <shachaf> "You should understand why blah blah blah."
22:57:10 <shachaf> I could make a shachafbot.
22:57:13 <kallisti> oerjan: Sym has a type parameter
22:57:51 <oerjan> kallisti: that didn't matter with map(var.show).
22:58:11 <kallisti> also can you powerset a Sym [a] ?
22:58:16 <kallisti> er
22:58:23 <oerjan> > iterate((var.show).:filterM(const[True,False]))[]
22:58:25 <lambdabot> [[],[[]],[[[]],[]],[[[[]],[]],[[[]]],[[]],[]],[[[[[]],[]],[[[]]],[[]],[]],[...
22:58:32 <kallisti> oh
22:58:34 <kallisti> ..okay
22:58:37 <oerjan> ah the problem was precedence
22:58:47 <oerjan> or associativity, rather
22:58:55 <kallisti> I'm kind of confused as to how [] types as Sym [a]
22:59:04 <oerjan> it doesn't
22:59:13 <oerjan> it types as [Sym [a]]
22:59:29 <kallisti> :t vat
22:59:30 <lambdabot> Not in scope: `vat'
22:59:32 <kallisti> :t var
22:59:33 <lambdabot> forall a. String -> Sym a
22:59:41 <kallisti> okay then var is not that
23:00:44 <shachaf> @let varr :: Arrow a => String -> Sym (a b c); varr = var
23:00:44 <lambdabot> Defined.
23:00:49 <oerjan> var.show is just a trick to get something of a fixed type that shows the same as whatever
23:02:09 <kallisti> wat
23:02:13 <kallisti> :t iterate
23:02:14 <lambdabot> forall a. (a -> a) -> a -> [a]
23:02:19 <kallisti> :t var
23:02:20 <lambdabot> forall a. String -> Sym a
23:02:44 <elliott> :t mapAccum
23:02:45 <lambdabot> Not in scope: `mapAccum'
23:02:47 <kallisti> [Sym [a]] /= Sym a
23:02:48 <elliott> @hoogle mapAccum
23:02:49 <lambdabot> Data.List mapAccumL :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])
23:02:49 <lambdabot> Data.Traversable mapAccumL :: Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)
23:02:49 <lambdabot> Data.List mapAccumR :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])
23:02:59 <elliott> Hmm.
23:03:01 <elliott> What's the difference?
23:03:14 <shachaf> Between mapAccumL and mapAccumR?
23:03:19 <shachaf> Similar to foldl/foldr.
23:03:20 <oerjan> kallisti: so? that's why it's .: not .
23:03:32 <shachaf> mapAccumL is often the one you want, I think.
23:03:51 <kallisti> oerjan: oh, er... I don't know what's that doing here then
23:04:28 <kallisti> as elliott would say, I don't understand function composition
23:04:57 <oerjan> kallisti: (var.show).: converts a list's elements to Sym a without changing what their printed as
23:05:04 <shachaf> kallisti: So, like, you know functions? Imagine that you had, like, a function, and, like, another function.
23:05:12 <shachaf> And then you had a value.
23:05:14 <kallisti> shachaf: not what I meant. :P
23:05:32 <shachaf> And so you applied one function to the value, and then applie the other function to the result of that.
23:05:33 <shachaf> So far so good?
23:05:33 <kallisti> shachaf: also poor explanation
23:05:38 <oerjan> oh right, it's a function on the right producing a list, too
23:05:49 <shachaf> Function composition is the same thing, but WITHOUT THE VALUE.
23:06:11 <kallisti> so it's....
23:06:33 <kallisti> var( show ( (filterM (const [True, False])) x)
23:06:35 <kallisti> )
23:06:44 <kallisti> -)
23:06:53 <kallisti> )
23:06:54 <kallisti> :)
23:06:55 <elliott> > mapAccumL f a [x,y,z]
23:06:56 <lambdabot> No instance for (SimpleReflect.FromExpr (SimpleReflect.Expr, y))
23:06:57 <lambdabot> arising...
23:07:04 <elliott> shachaf: Lame?
23:07:17 <oerjan> kallisti: no, it's fmap (var . show) ((filterM (const [True, False])) x)
23:07:30 <shachaf> elliott: Expect f to return a tuple and expecting SimpleReflect to Do The Right Thing with it is going a bit far.
23:07:43 <shachaf> I mean, there's nothing reasonable you could even do there by hand.
23:07:49 <shachaf> There Is No Right Thing.
23:07:55 <kallisti> oerjan: oh caleskell okay
23:08:15 <elliott> shachaf: Well, SimpleReflect isn't The Right Thing. :p
23:08:16 <oerjan> .: is caleskell
23:08:16 <shachaf> > mapAccumL (\a b -> (a ++ show b, b+1)) "init" [5,6,7,8,9]
23:08:18 <lambdabot> ("init56789",[6,7,8,9,10])
23:08:24 <shachaf> > mapAccumR (\a b -> (a ++ show b, b+1)) "init" [5,6,7,8,9]
23:08:25 <lambdabot> ("init98765",[6,7,8,9,10])
23:08:27 <shachaf> elliott: There you go.
23:08:29 <shachaf> Work it out.
23:08:31 <kallisti> oerjan: I'm aware of .: but I forget that it's a functor thing and not a function thing.
23:08:37 <shachaf> Actually the example I gave there is kind of terrible.
23:08:45 <elliott> shachaf: accumE' x (Cons fs fss) = Cons xs $ accumE' x fss
23:08:45 <elliott> where (x', xs) = instant x fs
23:08:47 <shachaf> > mapAccumL (\a b -> (a ++ show b, b+length a)) "init" [5,6,7,8,9]
23:08:49 <lambdabot> ("init56789",[9,11,13,15,17])
23:08:50 <elliott> I'm trying to figure out which one I want to port to Stream. :p
23:08:52 <shachaf> > mapAccumR (\a b -> (a ++ show b, b+length a)) "init" [5,6,7,8,9]
23:08:54 <lambdabot> ("init98765",[13,13,13,13,13])
23:09:00 <elliott> I suspect it's L.
23:09:03 <shachaf> elliott: You probably want to port mapAccumL to stream.
23:09:34 <shachaf> mapAccumL is, if I'm understanding correctly, the reasonably-lazy one for lists.
23:10:56 <kallisti> shachaf: yo, you've got this shit right? and you've got some shit you wanna do followed by some other shit, right? but maybe you wanna do the two shits to more than one shit, you know? well you can just put a . between the two shits you wanna do and it becomes this new shit you can do where one shit that gets done becomes the shit that gets done by the other shit
23:11:33 <shachaf> That's not how function composition works, kallisti. That's how laxatives work.
23:12:11 <elliott> shachaf: Right.
23:12:24 <elliott> `addquote <kallisti> shachaf: yo, you've got this shit right? and you've got some shit you wanna do followed by some other shit, right? but maybe you wanna do the two shits to more than one shit, you know? well you can just put a . between the two shits you wanna do and it becomes this new shit you can do where one shit that gets done becomes the shit that gets done by the other shit <shachaf> That's not how function composition works, kallisti.
23:12:24 <elliott> That's how laxatives work.
23:12:25 <elliott> Aw.
23:12:27 <HackEgo> 797) <kallisti> shachaf: yo, you've got this shit right? and you've got some shit you wanna do followed by some other shit, right? but maybe you wanna do the two shits to more than one shit, you know? well you can just put a . between the two shits you wanna do and it becomes this new shit you can do where one shit that gets done becomes the shit that gets done by the other shit <shachaf> That's not how function composition works, kallisti.
23:12:29 <elliott> `delquote 797
23:12:34 <HackEgo> ​*poof* <kallisti> shachaf: yo, you've got this shit right? and you've got some shit you wanna do followed by some other shit, right? but maybe you wanna do the two shits to more than one shit, you know? well you can just put a . between the two shits you wanna do and it becomes this new shit you can do where one shit that gets done becomes the shit that gets done by the other shit <shachaf> That's not how function composition works, kallisti.
23:12:37 <oerjan> > mapAccumR (\acc x -> (x:acc, x)) [] [1..]
23:12:37 <shachaf> HAH.
23:12:37 <lambdabot> ([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,2...
23:12:42 <shachaf> Too long for your quote database.
23:12:45 <oerjan> > mapAccumL (\acc x -> (x:acc, x)) [] [1..]
23:12:51 <lambdabot> mueval-core: Time limit exceeded
23:12:51 <lambdabot> mueval: ExitFailure 1
23:12:52 <elliott> shachaf: Well, no, I could hack it in, but HackEgo would chop it off on reproduction.
23:13:03 <elliott> oerjan: shachaf is lies. :(
23:13:08 <shachaf> Right. Which is good enough for me.
23:13:12 <kallisti> I like when stalker mode gets messages before irssi gets messages
23:13:25 <elliott> *Main> takeStream 10 $ simulate (\e -> accumE 0 ((+1) <$ e)) (pure (Just ()))
23:13:25 <elliott> [Just 1,Just 1,Just 1,Just 1,Just 1,Just 1,Just 1,Just 1,Just 1,Just 1]
23:13:27 <elliott> :(
23:13:44 * shachaf has never used stalker mode.
23:13:53 <kallisti> I use it to verify that my line did not get cut off
23:14:08 <kallisti> I'm sure there's a better way I could be handling that.
23:14:14 <shachaf> Wow, this is just like reading IRC.
23:14:44 <oerjan> > snd $ mapAccumR (\acc x -> (x:acc, x)) [] [1..]
23:14:48 <elliott> irssi handles line-wrapping, doofus.
23:14:49 <lambdabot> mueval-core: Time limit exceeded
23:14:52 <oerjan> > snd $ mapAccumL (\acc x -> (x:acc, x)) [] [1..]
23:14:56 <lambdabot> mueval-core: Time limit exceeded
23:14:58 <kallisti> shachaf: yep except no one knows you're there
23:14:58 <shachaf> If only I had a way of reading IRC...
23:15:18 <kallisti> perfect for humorous ragequits that you want to read the reaction to
23:15:24 <shachaf> kalliti: Unlike the normal situation, where no one cares you're there?
23:15:29 <kallisti> yes.
23:15:36 <kallisti> but maybe you're banned and you want to ruminate?
23:15:40 <kallisti> stalker mode has lots of possibilities.
23:16:21 <oerjan> i have a hunch one of mapAccumL and mapAccumR _ought_ to take the function flipped.
23:16:49 <kallisti> also you can pretend to be really angry and quit IRC and then when someone keeps talking you log in to reply and then leave again
23:16:49 <shachaf> oerjan: NO THAT'S RIDICULOUS
23:16:53 <kallisti> I think elliott has done this.
23:17:06 <kallisti> with numerous join/parts
23:17:22 <oerjan> by foldl / foldr analogy
23:18:00 <elliott> @hoogle traverse
23:18:00 <lambdabot> Data.Traversable traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
23:18:01 <lambdabot> Data.Foldable traverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f ()
23:18:01 <lambdabot> Control.Parallel.Strategies parTraverse :: Traversable t => Strategy a -> Strategy (t a)
23:18:13 -!- Patashu has joined.
23:18:14 <kallisti> elliott: hi have you ever used Control.Parallel.Strategies?
23:18:18 <shachaf> oerjan: Well, foldl/foldr are wrong.
23:18:24 <shachaf> And so are mapAccumLmapAccumR.
23:18:27 <shachaf> Everybody is wrong.
23:18:34 <shachaf> I'm wrong.
23:18:37 <shachaf> You're wrong.
23:18:49 <shachaf> elliott is wrong.
23:18:56 <shachaf> But if elliott is wrong, I don't want to be right, man.
23:19:06 <elliott> kallisti: Yes.
23:31:09 <kmc> <elliott> "I believe the Show superclass constraint has been removed from Num." PRAISE THE LORD
23:31:16 <kmc> yeah, fuck standards compliance!
23:31:21 <kmc> fuck software which does what it's specified to do!
23:31:37 <kmc> we'll bow to the whims of the pitchfork mob any day
23:33:29 <kmc> unless GHC removes monomorphism restriction I will capsize five tankers in the ellingson fleet
23:34:37 <shachaf> GHC progresses way too slowly.
23:34:39 <shachaf> The Grassgrow Haskell Compiler.
23:34:57 <kmc> the Glorious Glasgow Haskell-except-Num-has-no-superclasses Compiler
23:35:09 <kmc> itym "Haskerr"
23:35:21 <shachaf> ?
23:35:25 <kmc> nm
23:35:40 <kmc> see, I'd be fine with a solution where -XHaskell98 and -XHaskell2010 do what they're supposed to
23:35:56 <shachaf> They don't?
23:36:00 <kmc> nope
23:36:12 <kmc> even with -XHaskell98, Show and Eq are not superclasses of Num
23:36:18 <kmc> which breaks existing Haskell code
23:36:19 <shachaf> What about the fancy new superclass default constraint kind variable polymorphism inference thing?
23:36:21 <kmc> some in standard libraries even
23:36:40 <kmc> you'll need generalized abstract superclass default constraint kind variable polymorphism inference synonym families to do that
23:36:46 <shachaf> I thought that had something to do with them being able to removing superclasses without breaking compatibility.
23:36:52 <kmc> but only a Java Monkey would fail to understand those
23:37:13 <kmc> shachaf, there was discussion of ways to do that, but I don't think it's in GHC HEAD yet
23:37:14 * Phantom_Hoover → sleep
23:37:15 -!- Phantom_Hoover has quit (Quit: Leaving).
23:38:48 <shachaf> kmc: Oh.
23:38:52 <shachaf> So why did they remove that?
23:38:56 <kmc> remove what
23:39:01 <shachaf> The superclass constraint.
23:39:13 <shachaf> I mean, I'm all for fixing the Num hierarchy, but removing a single constraint seems like the worst of all worlds.
23:39:13 <kmc> i dunno man
23:39:26 <kmc> it's dumb because it breaks existing code
23:39:28 <shachaf> Someone ought to do something!
23:39:33 <kmc> like, it can turn a module which typechecks into one which doesn't
23:39:39 * shachaf goes to upvote a Reddit post.
23:39:49 <kmc> if you have «f :: (Num a) => ...», and you use Eq or Show constraints within f
23:40:20 <shachaf> Right.
23:50:36 <elliott> <kmc> yeah, fuck standards compliance!
23:50:37 <elliott> <kmc> fuck software which does what it's specified to do!
23:50:37 <elliott> <kmc> we'll bow to the whims of the pitchfork mob any day
23:50:50 <elliott> Right, GHC would be so much better if it just implemented Haskell 2010 and didn't deviate or extend upon it in any way.
23:51:06 <shachaf> elliott: That sounds like a strawman.
23:51:09 <elliott> BTW, I think Eq is still a superclass, or pattern-matching would break.
23:51:11 <kmc> elliott, I'm fine with extensions that need to be enabled, or at least can be disabled
23:51:15 <elliott> shachaf: It is, but so is kmc's.
23:51:31 <shachaf> elliott: I think it adds Eq when you pattern-match.
23:51:39 <shachaf> elliott: Just like for OverloadedStrings.
23:51:41 <kmc> in this case, i don't think there's any way to change the non-compliant behavior
23:51:46 <shachaf> Since Eq is certainly not a superclass of IsString.
23:51:59 <kmc> and it's not an "extension", it's breakage which already broke standard library code
23:52:00 <shachaf> Unless it is.
23:52:01 <shachaf> @src IsString
23:52:02 <lambdabot> Source not found. Maybe you made a typo?
23:52:23 <elliott> kmc: The option to be standards-compliant is nice until you realise that you don't really have that option because all the libraries that everybody uses depend on tons of extensions.
23:52:40 <elliott> So it's kind of a non-option anyway.
23:52:47 <shachaf> elliott: That doesn't mean you have to break packages that only depend on the standard.
23:53:29 <kmc> elliott, those libraries document the extensions they use
23:53:34 <elliott> shachaf: No, but how many of those really exist?
23:54:02 <kmc> part of my objection is that the Haskell 2010 language is better specified and better documented than the "what GHC accepts this week" language
23:54:15 <shachaf> elliott: Enough for actual breakage to happen.
23:54:20 <kmc> but even when you deviate from Haskell 2010, you note those deviations with explicit LANGUAGE flags
23:54:22 <elliott> kmc: My point is that the vast majority of code out there doesn't work in a strict Haskell 2010 compiler because of dependencies; indeed, it perhaps cannot because of interfaces that are only implementable with such extensions.
23:54:31 <elliott> I'm not saying standards aren't nice things.
23:54:33 <kmc> i think your point is irrelevant to my point
23:54:41 <elliott> I'm just saying that the Haskell report is already kind of irrelevant.
23:54:44 <kmc> no
23:54:53 <kmc> this is a common fallacy in #haskell
23:55:02 <kmc> that, since people only use GHC, we shouldn't care about the spec
23:55:06 <kmc> there are many reasons to still care about the spec
23:55:09 <elliott> I care about the spec.
23:55:18 <kmc> one is that it specifies what your programs mean
23:55:24 <kmc> at a level of detail which the GHC manual does not
23:55:28 <elliott> I'm not talking about what the ideal situation is, just what the actual situation is in my opinion.
23:55:37 <elliott> As I said, I totally agree that specifications are good things.
23:55:47 <kmc> for most extensions, the GHC manual has a couple of informal paragraphs and a link to a paper about a vaguely related research project
23:57:14 <elliott> I'm just saying that while the situation is like it is, the vast, vast majority of code can't work with just Haskell 2010 anyway, so breaking Haskell 2010 compatibility isn't itself a reason not to do something.
23:57:23 <elliott> "Breaking a lot of code" might be, though, and this change might.
23:57:57 <shachaf> I have the feeling that the two of you aren't going to come to an agreement.
23:58:05 * elliott also.
23:58:16 -!- Jafet1 has joined.
23:58:36 <kmc> i just think it's really bad that this change can't be controlled with a -X flag
23:58:42 <kmc> not only because you can't opt out
23:58:50 <kmc> but because code which relies on this new behavior will not document itself
23:58:58 <shachaf> GHC has had a number of changes that couldn't be controlled with a -X flag.
23:58:59 <kmc> you can't even test whether you're relying on it
23:59:07 <shachaf> Most of these were considered bugs, though, and fixed eventually.
23:59:13 <kmc> shachaf, notable examples?
23:59:14 <shachaf> E.g. PostfixOperators.
23:59:22 -!- Jafet has quit (Disconnected by services).
23:59:24 -!- Jafet1 has changed nick to Jafet.
23:59:30 <shachaf> There were some others in that vein.
23:59:36 <kallisti> perl doesn't have a standard and it works just fine. :>
23:59:37 <kmc> yeah, it's also not in the class of "GHC accepts some programs which technically should be rejected"
23:59:39 <elliott> kmc: Well, if it makes you happier, the next standard is practically guaranteed to include this change now GHC's done it, making it standard once more. :p
23:59:44 <kmc> elliott, oh?
23:59:54 <kmc> i'm not convinced
23:59:58 <kmc> kallisti, ;P
2012-01-10
00:00:09 <shachaf> kmc: Right, it's an actual change.
00:00:13 <elliott> kmc: Well, it's a relatively trivial change, requires no changes to the language itself, and GHC does it...
00:00:15 * shachaf has yet to figure out how to read that smiley.
00:00:17 <kmc> this is "GHC rejects some programs which should be accepted"
00:00:18 <kallisti> what's the name of this new extension we're discussing?
00:00:25 <kmc> kallisti, it doesn't have a name, that's the problem
00:00:27 <elliott> kallisti: -X
00:00:36 <shachaf> Defeated Monster X!
00:00:38 <elliott> (That's -X followed by a segmentation fault.)
00:00:39 <kallisti> ...wat
00:00:48 <kmc> the "extension" is that GHC removed the Eq and Show superclasses on Num
00:00:53 <kmc> regardless of whatever -X flags you specify
00:01:09 <kmc> so it's *not* standards-compliant and code written for Haskell 98 or Haskell 2010 will break
00:01:14 <kmc> and this has already been observed in standard libraries
00:01:33 <kmc> now, I think it might be technically difficult to make this controllable by an -X fla
00:01:35 <kallisti> but it's way better
00:01:36 <kallisti> so cool
00:01:41 <kallisti> good job GHC
00:02:08 <kmc> cause it's bad if some code writes an instance for base:Prelude.Num and other code needs an instance for haskell2010:Prelude.Num
00:02:34 <kmc> but I think this suggests we should live with the problem
00:02:41 <kmc> which after all people have been working around for years
00:02:44 <kmc> it's not hard to work around it
00:03:08 <kmc> kallisti, I'm worried that in a few years, GHC will have fifteen divergences from standard Haskell which can't be disabled
00:03:18 <elliott> kmc: What's the practical difference between GHC springing a breaking change on everybody all in one go, and Haskell 201X doing so?
00:03:26 <kmc> and are undocumented, or mentioned in passing in obscure paragraphs all over the manual
00:03:36 <kmc> elliott, ^^
00:03:55 <kallisti> I don't think it's typically a good idea to perpetuate an existing flaw, building an ever-increasing base of code that will break if any changes occur, all for the sake of "not breaking code"
00:03:57 <elliott> kmc: Well, I think that's a bit of a slippery slope argument.
00:04:07 <kmc> elliott, some slopes are slippery, though
00:04:08 <kmc> shrug
00:04:12 <kmc> i think i've made my case
00:04:15 <elliott> kmc: Are you sure it isn't already in the docs?
00:04:15 <kmc> i don't need to say it over and over
00:04:21 <kmc> elliott, I didn't say it isn't
00:04:31 <elliott> Okay.
00:04:48 <kmc> it might be "nobody's problem" since it's technically in a library, not GHC itself
00:04:53 <kmc> and i mean how many people read the haddocks for Prelude.Num
00:05:14 <kallisti> actually what code would that break.
00:05:15 <kmc> you should not have to read the library documentation for the entire standard library to know the ways it differs from the published spec
00:05:24 <kallisti> removing the superclass constraint on Num
00:05:25 <kmc> kallisti, if you have «f :: (Num a) => ...», and you use Eq or Show constraints within f
00:05:34 <kallisti> ah
00:05:38 <kmc> and it's not "would", this has already been observed in standard libraries, which need patching to compile under GHC HEAD
00:05:47 <kallisti> the solution of course is to never use type signatures in your code. :>
00:05:51 <kallisti> this ensures future compatability.
00:05:55 <kmc> hehe
00:05:56 <kmc> yes
00:06:06 <elliott> I think I would care a lot more about GHC being standards compliant if the Haskell standards process actually moved at a reasonable pace and added in widely-used extensions.
00:06:18 <kallisti> there should be something like a type signature that's ignore. oh wait that's just a comment.
00:06:24 <elliott> Right now, I don't think it's practical to try and get a breaking change in through the standard at all.
00:06:25 <kallisti> from now on I'm going to comment out all of my unecessary type signatures
00:06:36 <kallisti> to prevent my code from breaking due to an explicit type signature that later needs to be changed.
00:06:41 <kmc> elliott, if GHC produced a Haskell Report-quality specification of the language they implement, I think it would remove most of my objections
00:06:46 <kmc> but they don't
00:06:55 <kmc> not that the Haskell Report is super high quality either
00:07:19 <elliott> I think the Report just needs to be less conservative, and come out a lot more often (I think they're already trying to do the latter).
00:07:35 <kmc> but it's much closer to a language description than Section 7 of the GHC Manual
00:08:33 <kmc> i just wanna know what language i'm using
00:08:39 <kallisti> I think that change is simple enough that you could literally just write a script that fixes all the broken code.
00:08:40 <kmc> even if it's specified unilaterally by some compiler writers
00:08:45 <kmc> kallisti, do it
00:10:19 -!- Jafet has quit (Ping timeout: 252 seconds).
00:10:59 <oerjan> <kallisti> to prevent my code from breaking due to an explicit type signature that later needs to be changed. <-- ah but there have _already_ been ghc changes that required you to put signatures where you didn't before (local monomorphism when type families are used)
00:11:17 <oerjan> *didn't need them
00:11:21 <kallisti> oerjan: I believee I said unnecessary type signatures
00:11:27 <kallisti> as in the ones that aren't needed
00:11:29 <kallisti> for anything
00:11:35 <oerjan> kallisti: they _weren't_ necessary before that change
00:11:51 <kallisti> okay.
00:11:55 <kallisti> that's not what I'm saying though
00:12:15 <kmc> at least those changes only apply if you're already using an extension
00:12:27 <kallisti> kmc: there's the Easy but maybe Bad way and then the Technically Correct in EVery Circumstance But Complicated Way
00:13:06 <kallisti> kmc: the easy way would be to substitute every type signature that contains a Num instance with the output from GHC's type inference command
00:14:29 <kallisti> but that's not always the correct thing to do.
00:15:37 <kmc> i didn't ask how to do it
00:15:38 <kmc> i said you should do it
00:16:03 <kmc> i would think the easy way is to translate the context (Num a, ...) to (Num a, Eq a, Show a, ...) everywhere
00:16:34 <kallisti> no.
00:16:36 <kallisti> well
00:16:40 <kallisti> if it's all old code
00:16:41 <kallisti> then yes.
00:16:48 <kmc> yeah, that was my assumption
00:16:58 <kmc> in #haskell it's often declared that X isn't a problem because you could just write library/tool Y
00:17:04 <kmc> but most of those libraries/tools never get written
00:17:36 <kallisti> I thought that was what they say in #perl
00:17:39 <kmc> because most of the effort is all the "trivial engineering" of actually writing the damn code, debugging it, writing a test suite, documenting, packaging, publishing, etc
00:17:47 <kallisti> oh wait
00:17:51 <kallisti> no in #perl it's s/write/use/
00:18:31 <kallisti> kmc: so "trivial"
00:18:36 * oerjan swats kallisti for dangerous play with fire -----###
00:18:58 <kallisti> anyway if I ever have a programming language that people use
00:19:02 <kallisti> the way I'll prevent breaking code
00:19:11 <kallisti> is to just make sure every change has an associated script that fixes all the old code.
00:19:20 <kmc> so hard
00:19:44 <kallisti> either that
00:20:33 <kallisti> or I'll have some insane system whereby you can specify versions of the language and allows a module to be executed as though it were in the past PERFECTLY WITH NO DIFFERENCES AT ALL.
00:20:37 <kallisti> should be trivial to implement
00:20:54 <kmc> haha
00:21:06 <kallisti> well, it would be reasonable with like... "normal" code
00:21:11 <kmc> yes "trivial"
00:21:20 <kmc> "trivial" is just a douchebag way to say "easy"
00:21:28 <kallisti> low-level code would of course be pretty much impossible to accomodate in such a way
00:21:33 <kmc> except the things declared to be "trivial" aren't even easy, they're just theoretically uninteresting
00:21:48 <kmc> a problem is "trivial" if it would take 20 people 2 years to solve that problem, but they won't get a paper out of it
00:22:05 <kallisti> Perl JIT? trivial
00:22:09 <kallisti> (this is my life goal)
00:22:11 -!- rdrp has joined.
00:22:11 <kmc> right exactly
00:22:31 <kallisti> hello #esoteric would you like to be my 20 people and help me develop a perl 5 JIT?
00:22:45 <kallisti> it would basically be the best thing ever.
00:23:05 <kallisti> it would be "okay perl is efficient now I can stop programming in everything else"
00:23:17 <kallisti> (not really but it would be nice)
00:24:22 <kallisti> I wonder what makes LuaJIT so fast.
00:24:24 <kmc> Python is much closer to having a usable JIT
00:24:32 <kallisti> which is that?
00:24:33 <kmc> kallisti, I saw a detailed writeup of that once... but I can't find it anymore :/
00:24:37 <kmc> kallisti, PyPy
00:24:40 <rdrp> anyone wants to build an interpreter or a virtual machine for SumaMoito (see esolangs wiki)
00:24:42 <kallisti> oh right that thing.
00:24:50 <elliott> a perl 5 JIT would be theoretically interesting because it's probably almost impossible
00:24:55 <elliott> rdrp: do you?
00:25:01 <kmc> i doubt it's impossible
00:25:12 <kmc> i mean, why would it be
00:25:15 <kallisti> elliott: well you would need a normal interpreter as well as a JIT compiler.
00:25:19 <elliott> kmc: well, perl 5 is pretty strange :)
00:25:22 <kmc> i know
00:25:25 <rdrp> yes, but i am not an expert
00:25:32 <rdrp> in that codes
00:25:39 <elliott> rdrp: sounds like a learning opportunity :)
00:25:47 <elliott> i think atrapado mentioned having an implementation
00:25:53 <rdrp> yes
00:25:59 <rdrp> i am atrapado
00:26:35 <elliott> oh :)
00:26:42 <rdrp> i left the laptop in the other room
00:26:57 <elliott> atrapado, meet rdrp. rdrp, atrapado
00:27:02 <kallisti> elliott: I think you would have to basically interpret stuff like source filters and BEGIN blocks because they're necessary at compile-time
00:27:11 <rdrp> :)
00:28:53 <kallisti> I'm pretty sure this is what the perl interpreter does. before compile-time finishes (or even begins, in the case of BEGIN blocks) it has to execute Perl code.
00:29:08 <rdrp> well maybe i build something if i have time and motivation
00:31:33 <rdrp> hope it collapses
00:31:57 <kallisti> elliott: maybe one day Perl 6 will have a JIT. after they finish defining the language's syntax almost entirely in Perl 6.
00:32:36 <rdrp> i expect partial optimizations, even optimizations
00:32:41 <elliott> kallisti: WTF do you think Parrot is?
00:33:06 <kallisti> elliott: an interpreted bytecode language?
00:33:37 <monqy> http://esolangs.org/wiki/Parrot of course
00:35:01 <kallisti> the example resembles Python way more than it resembles Perl.
00:35:31 <monqy> but it uses <> and $_ !!!!
00:36:22 <kallisti> ah good they renamed "Parrot magic cookie" to something less stupid sounding.
00:36:33 <kallisti> now it's "polymorphic container"
00:39:15 <monqy> but parrot magic cookie is a good name
00:40:26 <kallisti> is parrot actually good?
00:40:31 <kallisti> I don't know its isntructions
00:41:13 <oerjan> kallisti: polly morphic cracker
00:42:02 <kallisti> they should suddenly switch from Parrot to LLVM
00:42:05 <kallisti> it would be such a good idea
00:42:09 <kallisti> trivial to implement too
00:44:15 <kallisti> elliott: so you have your very own reduceron yet?
00:45:41 <kallisti> I'm guessing it's the target platform for @
00:50:08 <oerjan> no @ uses a nanobot network http://xkcd.com/865/
00:50:50 <kmc> trivial
00:50:59 <kmc> just like google's failed llvm jit for python was trivial
00:52:15 -!- Nisstyre has quit (Ping timeout: 240 seconds).
00:57:31 <elliott> kmc: Trivial trivial trivial.
00:57:41 <elliott> <kallisti> elliott: an interpreted bytecode language?
00:57:52 <elliott> kallisti: Ah, it's one of those things where you're wrong.
00:57:59 <kmc> lols
00:57:59 <kallisti> ???
00:58:38 * elliott wants a tool that's like LMGTFY, but also automatically clicks on an article linked to in the results and highlights a certain phrase.
00:58:45 <elliott> In this case it would be Parrot's Wikipedia article.
01:00:04 <itidus21> so what is hoogle?
01:00:11 <kmc> let me hoogle that for you
01:00:16 <itidus21> i can tell it means haskell google.. but that doesn't quite
01:00:20 <oerjan> @hoogle hoogle
01:00:21 <lambdabot> Can't think of anything more interesting to search for?
01:00:21 <lambdabot> package hoogle
01:00:36 <itidus21> does it search haskell libraries?
01:00:54 <elliott> http://www.haskell.org/hoogle/?hoogle=%28a+-%3E+b%29+-%3E+%5Ba%5D+-%3E+%5Bb%5D
01:00:54 <itidus21> anyway.. it gives me an idea
01:01:10 <kmc> itidus21, http://lmgtfy.com/?q=hoogle
01:01:54 <itidus21> the idea it gives me is
01:02:00 <elliott> kmc: You can't assume if you learn.
01:02:11 <itidus21> a source code search in google and bing
01:02:21 <kmc> google had one; they shut it down
01:02:31 <elliott> Not yet: http://www.google.com/codesearch
01:02:31 <itidus21> oh
01:02:35 <kmc> derp
01:02:40 <elliott> It's up for a few more days.
01:02:46 <kmc> heh
01:02:48 <itidus21> wow
01:03:21 <itidus21> god damn it are there no concepts in the world that have yet to be implemented
01:03:21 <oerjan> does this mean that itidus21 getting ideas actually ends up wiping them out from reality?
01:04:00 <oerjan> itidus21: space elevator
01:04:00 <elliott> itidus21: There are, you just haven't thought of any.
01:04:29 <itidus21> brainfuck on that codesearch would be nice
01:05:27 <kmc> itidus21, well you'd have a better chance coming up with new ideas if you learned more of the existing ones
01:05:35 <kmc> like i think everything i've seen you say about haskell is wrong
01:05:55 <itidus21> http://www.google.com/codesearch#search/&q=%22,[.,]%22&type=cs
01:05:59 <kmc> also you were unwilling to even use google to find out what hoogle is
01:06:13 <kmc> that's a bad sign for the kind of intellectual curiosity needed to come up with new concepts
01:06:45 -!- Nisstyre has joined.
01:06:57 <elliott> kmc: Before Haskell, it was the lambda calculus. Unfortunately, we taught him too much lambda calculus for him to use it as a symbol of whatever he needs a symbol of.
01:07:26 <kmc> haha
01:07:31 <kmc> luckily haskell is a much larger language
01:07:44 <kmc> it's possible to go on not-learning Haskell indefinitely
01:07:58 <Gregor> Argh. "oocalc" (and "socalc") were relatively unambiguous, you could get to them with the characters then [tab], but "localc" is /maximally/ ambiguous, you have to type the whole thing >_<
01:08:03 -!- rdrp has quit (Ping timeout: 268 seconds).
01:08:05 <elliott> local c
01:08:12 <Gregor> INDEED
01:08:13 <kmc> lol cock?
01:08:22 <elliott> dude
01:08:27 <elliott> cock isn't spelled calc
01:08:28 <elliott> and
01:08:30 <elliott> lol has an l on the end
01:08:35 * Gregor nods sagely.
01:08:44 <kmc> there's no i in threesome
01:09:20 <itidus21> i found the most compact language to be unary lambda calculus 11111111111. next in line is binary lambda calculus 0010101010. and next is SK combinatory logic (SK(SKSKSK(S((SS(SSS or something.
01:09:31 <kmc> what about gzipped perl
01:09:42 <pikhq_> kmc: I'm not sure gzip will help.
01:09:46 <itidus21> next i guess is P"
01:09:52 <kmc> i bet i can write a web server in gzipped perl which is shorter than one in unary lambda calculus
01:09:54 <pikhq_> Perl's already pretty high in entropy.
01:10:06 <kmc> pikhq_, bah, it's all ASCII
01:10:21 <kmc> that's a 12.5% waste right there
01:10:22 <monqy> gzipped unary lambda calculus
01:10:23 <pikhq_> Ah, right, so there's some room for Huffman to help.
01:11:16 <kmc> haskell fanboys who don't know the language are probably less annoying than haskell bashers who don't know the language
01:11:22 <kmc> don't know which one is more common
01:11:35 <kallisti> latter I think
01:11:55 <kmc> yeah i think so too
01:12:02 <kmc> but it depends how you define "know the language"
01:12:10 <elliott> <itidus21> i found the most compact language to be unary lambda calculus 11111111111. next in line is binary lambda calculus 0010101010. and next is SK combinatory logic (SK(SKSKSK(S((SS(SSS or something.
01:12:14 <kallisti> unfortunately I'm not knowlegeable enough to discredit them. :P
01:12:15 <elliott> binary lambda calculus is obviously more compact than unary
01:12:26 <kmc> realistically very few programmers will ever see a payoff from learning haskell well enough to write practical production software in it
01:12:35 <itidus21> oh.. i see where i went wrong
01:12:40 <itidus21> i was measuring compact in alphabet size
01:12:50 <kmc> unary gzipped perl
01:13:35 <itidus21> and the SK( one doesn't count since it has a variable length alphabet
01:14:15 <kallisti> base256 flogscript
01:14:22 <oerjan> itidus21: erm there are just 4 letters, S, K, (, )
01:14:29 <itidus21> sure you can choose to exclude variables from your alphabets
01:14:40 <kallisti> http://answers.yahoo.com/question/index?qid=20090312200046AAJkBeI
01:14:41 <itidus21> but deep down you know you need them
01:14:44 <elliott> itidus21: the alphabet is SK()
01:14:58 <elliott> your mistake is thinking that variables like "x" and "y" are part of the SK calculus
01:14:59 <kallisti> I don't think I can imagine what base 256 would even look like. For the 36 years I have been in the computer business, I have seen base 16 (hexadecimal) representation used and on older machines octal (base 8). Base 256 would mean that you would have to come up with 256 unique single characters for each digit of the number.
01:15:03 <elliott> they're not, they're used in reasoning about it
01:15:10 <kallisti> ^, this guy doesn't have much to show for his 36 years.
01:15:11 <elliott> actual SK calculus expressions contain only S, K, and balanced parentheses
01:15:29 <kmc> codepage 437 is printable at almost every codepoint
01:15:40 <itidus21> hmm
01:15:51 <kmc> i think the only confusion is 0 vs 32 vs 255
01:15:54 <monqy> who needs parentheses when you have trees
01:15:54 <itidus21> thats bizzare
01:16:07 <kmc> and it's the default on DOS / PC BIOS stuff
01:16:13 <kmc> which is great
01:16:20 <kmc> because you can just print raw datastructures for debugging
01:16:24 <itidus21> ^bizarre
01:16:28 <elliott> kmc: As long as you're superhuman :P
01:16:29 <kallisti> monqy: who needs trees when you have parentheses
01:16:33 <monqy> :0
01:16:36 <kmc> elliott, hardly
01:16:40 <kallisti> :1
01:16:53 <kmc> in a lot of cases it'll be pretty obvious
01:17:11 <monqy> can parentheses make pears i don't think so
01:17:18 <kallisti> ya
01:17:20 <kmc> pearentheses?
01:17:33 <itidus21> elliott: ahh thats the plunge where it loses the ability to make analogies about it.. when you get rid of variables.. i hate that plunge
01:17:35 <kallisti> ((2)(3)) pears
01:17:48 <elliott> itidus21: It's called learning.
01:17:52 <elliott> You seem to have an aversion to it.
01:19:07 <itidus21> hmm
01:19:30 <kallisti> itidus21: imagine you've got these symbols. now imagine you've got these rules that transform groups of symbols into other symbols.
01:21:43 <kallisti> now repeat those rules over and over a bunch until you can't do them anymore.
01:21:56 * kallisti good at explain
01:22:27 <itidus21> i can imagine that the best reference for lambda calculus is the writings of alonzo church.
01:22:42 <itidus21> but that kind of reference is not usually practical
01:23:01 <itidus21> since its not broken into lessons and exercizes
01:23:16 <itidus21> when will people learn to write white papers as lessons and exercizes :P
01:23:41 <elliott> i don't think your problem is the references
01:24:36 <itidus21> my problem is big. experience in trying to learn things tells me that on some level i'm refusing to work for the understanding
01:25:08 <monqy> maybe you should do some reduction practice to get used to ski; have you tried that?
01:25:20 <monqy> I recommend (S I I (S I I))
01:25:27 <kallisti> IIIIIIIIIIIIIII is good
01:25:32 <itidus21> so really it is more important for me to learn to learn than it is for me to learn lamdba calculus
01:26:14 <kallisti> you can either learn by osmosis (this is what I try to do most of the time), or learn by doing, or learn by people beating you over the head.
01:26:29 <itidus21> it starts with the very small details... like my reluctance to do the dishes
01:27:20 <itidus21> i wont give everyone the run around again on this. :D
01:27:55 -!- pikhq_ has quit (Ping timeout: 240 seconds).
01:28:04 -!- pikhq has joined.
01:28:28 <kallisti> itidus21: I think if you focused as much effort on the actual problem at hand rather explaining to yourself why you can't do something because of X which is like Y ...
01:28:45 <oerjan> itidus21: i have this hunch that on some level there's a part of you that is blocking any action that might improve your self-confidence.
01:29:02 <oerjan> (i think i may have a similar part.)
01:29:04 <elliott> <kallisti> you can either learn by osmosis (this is what I try to do most of the time), or learn by doing, or learn by people beating you over the head.
01:29:10 <elliott> your parenthical ended up in the wrong place
01:29:19 <itidus21> also i think that it is often forgotten how rare knowledge of lambda calculus in the world truely is :D
01:29:25 <kallisti> elliott: the third one is just the one that happens the most often. on this channel.
01:29:46 <monqy> are you sure you don't try it
01:29:48 <elliott> and in #perl, or so i hear
01:30:04 <itidus21> i doubt anyone i have met in my life knows it
01:30:08 <kallisti> no they tried to beat me over the head but I won't let them.
01:30:09 <itidus21> except at school
01:30:33 <kallisti> it's not learning by beating-over-the-head if you're not learning anything.
01:30:59 <kallisti> #perl is just really really really eager to solve my XY problem.
01:32:12 <itidus21> learning, when it comes down to it, requires work and effort. if there is no work and effort there will be no learning
01:32:18 <kallisti> elliott: do I have some kind of reputation now? :P
01:32:48 <elliott> kallisti: Yes; it's 31, which is much lower than mine.
01:32:56 <kallisti> itidus21: I can learn the basics of some things with very little effort. mastery takes much more time.
01:33:09 <elliott> kallisti: You do have a really big X-Y problem, though.
01:33:18 <kallisti> you mean like... in general?
01:33:26 <kallisti> or are you referring to a specific XY problem.
01:33:34 * oerjan wonders if he has a big X-Y problem
01:34:23 <itidus21> i am biding my time until i can incorporate computation into my world view
01:34:45 * kallisti computes his matrix of solidity on a daily basis.
01:34:59 <oerjan> itidus21: are you familiar with the 10000 hour rule
01:35:33 <kallisti> elliott: I don't think it generally makes sense for someone to have a chronic XY problem. it really depends on what they're doing...
01:35:39 <itidus21> according to a wiki page, Platonic abstractions are not spatial, temporal, or mental they are not compatible with the later Idealism's emphasis on mental existence. Plato's Forms include numbers and geometrical figures, making them a theory of mathematical realism; they also include the Form of the Good, making them in addition a theory of ethical realism.
01:35:47 <kmc> people can be chronically bad at identifying root causes
01:36:30 <elliott> oerjan: i don't think you need to spend 10000 hours to learn the lambda calculus.
01:37:01 <oerjan> elliott: well it's mainly that you have to actually use those 10000 hours on _something_
01:37:13 <itidus21> mathematical notations are an application of symbols
01:37:17 <kallisti> kmc: this is not true for all questions I've asked on IRC, but there are many times when people try to solve an XY problem when there is none to solve.
01:37:24 <elliott> oerjan: IRC!
01:37:27 <kallisti> I really just want them to answer my actual question, and leave me alone. :P
01:37:42 <elliott> kallisti: well everything you have said about your irc bot thing's design so far
01:37:44 <elliott> has been terrible
01:37:45 <oerjan> elliott: ooh
01:37:48 <kallisti> elliott: go on
01:37:51 <itidus21> symbols can be percieved through any of the senses
01:38:00 <elliott> so I'm inclined to think that yes, you really do have a problem.
01:38:17 <kallisti> elliott: plugins are bad?
01:38:19 <kmc> this is a weird channel
01:38:25 <itidus21> but symbols are not the world
01:38:40 <kallisti> kmc: what did you expect? :P
01:38:47 <kmc> kallisti, right, it's bad if channels see XY problems where there are none; that was my experience in #python
01:38:58 <kmc> they get a lot of clueless noobs with terrible ideas
01:39:11 <kmc> and so if you ask how to do something weird, they assume you are a clueless noob with a terrible idea
01:39:15 <kallisti> I think some people actually just look for an XY problem to solve because they assume that's the case 99% of the time.
01:39:35 <kmc> in my case i had fairly good reasons for doing the weird thing, which took a while to explain
01:39:45 -!- pikhq_ has joined.
01:39:49 <kmc> (i was asking which Python text-templating library would be best for generating C++ code)
01:39:53 <monqy> itidus21: smell symbols? taste symbols?
01:39:58 <itidus21> monqy: yup
01:40:12 <kallisti> actually many questions I've asked on #perl were asked while in the process of figuring out /what/ I want to do. so I go in, ask some insane question, and they respond with disdain and THEN ask what I'm trying to do.
01:40:16 <kallisti> it should be the other way around.
01:40:26 <kmc> (which is a pretty WTF question, but I had a good reason
01:40:50 <itidus21> as for taste, the army developed a device which can touch the tongue and feed data into the brain from a camera which can be percieved as a black and white image in the visual field
01:40:52 <itidus21> something like that
01:41:08 <kallisti> elliott: so far the only bad idea I've had is attempting to hotswap my code sanely.
01:41:16 <kallisti> er rather
01:41:31 <kallisti> bad idea I've had and mentioned extensively on this channel, about my IRC bot. /anti-lawyering
01:42:07 <elliott> kallisti: also the thing where you used hideous eval tricks to do plugins
01:42:13 <elliott> also the "let's run plugins in their own directory" thing
01:42:22 <kallisti> "hideous eval tricks" = perl's internal import mechanism
01:42:23 <itidus21> monqy: about smell.. if you can discriminate smells then when exposed to a series of different smells you could detect patterns
01:42:24 <kmc> speaking about #haskell because i have experience there, some specific questions are almost always XY problems
01:42:29 <elliott> also the "oh i don't like perl 5's oo system... so instead of like using one of the alternate ones I'll just do more insane metaprogramming" thing
01:42:30 <kmc> like "how do I convert IO Int to Int"
01:42:32 <elliott> also... everything
01:42:39 <kmc> or "how do I do <insane thing> with type classes"
01:42:48 <elliott> s/<insane thing>/<almost anything>/
01:42:52 <itidus21> this i can understand.. but LC is not so easy
01:43:00 <kallisti> elliott: insane metaprogramming is basically what I do with a slightly complicated project in a dynamically typed language.
01:43:03 <kallisti> it's great.
01:43:04 <elliott> "How do I define a typeclass?" "Don't. Whatever you're doing stop."
01:43:09 <kmc> pretty much
01:43:11 <elliott> kallisti: Right. So you have an X-Y problem, and it's yourself.
01:43:12 -!- pikhq has quit (Ping timeout: 268 seconds).
01:43:16 <kallisti> elliott: noep
01:43:46 <kallisti> I am not writing an IRC bot to distribute to people. I am writing an IRC bot to play around with and have fun.
01:44:07 <kallisti> I'm free to do terrible things at my leisure. I might discover something good.
01:44:26 <itidus21> it is quite surprising to me that computation is really just a branch of mathematics..
01:44:45 <itidus21> that is a big mental shift
01:45:05 <elliott> kallisti: that's utterly irrelevant to the question of whether or not you're doing things that you really shouldn't and should instead do <other thing>
01:45:17 <elliott> which is what the X-Y problem is all about; it's not "just for you" if you're asking other people to help with your problems.
01:45:19 <itidus21> something which can be drawn from this is the idea that brains are not necessarily computers
01:45:41 <kmc> itidus21, that's not a justified inference
01:45:41 <kallisti> elliott: sure it is. because what should I do? what is right in a programming situation? in this case something is an XY problem if the thing I'm asking about is actually /incapable/ of solving the problem at hand.
01:46:11 <kallisti> elliott: if it works but disgusts people. I... don't really care.
01:46:17 <itidus21> brains discovered more mathematics than what can be computed
01:46:18 <kallisti> sorry.
01:46:31 <elliott> kallisti: god this is stupid
01:46:34 <itidus21> it suggests to me that minds/brains are beyond computers
01:46:40 <elliott> "I don't have an X-Y problem because I don't care"
01:46:47 <elliott> so nihilist and edgy, man!
01:46:52 <kmc> <itidus21> brains discovered more mathematics than what can be computed <---- false
01:46:53 <kallisti> elliott: no. I also explained why it's not an XY problem.
01:47:03 <elliott> if you say so
01:47:10 <kallisti> because what is the correct thing to do depends on why you are programming something.
01:47:14 <kallisti> there is why as well as a how and a what.
01:47:26 <itidus21> >:-)
01:48:11 <elliott> kmc: who the fuck uses - dashes in an ascii arrow?
01:48:13 <elliott> you're sick
01:48:16 <kmc> haha
01:48:28 <elliott> er
01:48:29 <elliott> *4 dashes
01:48:35 <kallisti> elliott: also I do use OO just not fully. my plugin code is not "eval tricks". and I'm still not really sure why changing the CWD is a bad idea.
01:49:13 <elliott> kallisti: i forget which stage comes after denial but i look forward to it
01:49:26 <kmc> elliott++
01:49:39 <kallisti> ?
01:49:45 <kallisti> anger.
01:49:48 <kallisti> elliott: fuck you
01:50:10 <kallisti> I can't believe you exposed my terrible XY problem.
01:50:12 <elliott> great; i can deal with anger
01:50:51 <kallisti> all these eval tricks and changing of current directory so that plugins can easily refer to state within their directory
01:51:02 <kallisti> all not what I wanted
01:52:19 <kallisti> (next stage is bargaining)
01:52:41 <kallisti> elliott: how about you explain to me what the problem is with changing the CWD and I'll fix it so that it adhers to The Standards of What Is Good.
01:52:41 <elliott> i'll stop bugging you if you give me lots of money
01:52:47 <elliott> no that isn't bargaining
01:52:49 <elliott> i get literally nothing out of that
01:52:58 <kallisti> you get to sleep easy.
01:53:00 -!- itidus20 has joined.
01:53:18 <itidus20> net disconnected
01:54:18 <kallisti> elliott: oh btw the Storable interface is not actually automatically persistent and stuff.
01:54:35 <kallisti> nor is it tie-able or anything like that.
01:54:40 <elliott> I didn't propose Storable, I proposed a tie thing.
01:54:49 -!- itidus21 has quit (Ping timeout: 248 seconds).
01:55:04 <kallisti> yes the last thing you proposed was Storable. I was simply informing you that it doesn't do that.
01:55:12 <kallisti> there are obviously other ways to do it.
01:55:13 <itidus20> ok my view of computers is that they are basically representations of humans by humans for humans
01:56:09 <itidus20> i am curious whether they will ever achieve sentience but i feel it is unlikely
01:57:07 <kmc> why
01:57:20 <kmc> can't you simulate a brain with a computer
01:57:34 <shachaf> Causal powers, man.
01:57:38 <itidus20> like.. if you hollowed out a dead man's brain and replaced it with an electronic device.. theoretically you could have that device send signals to the body to move, just as an action figure moves
01:57:43 <kallisti> depends on if the universe is in general computable, I think.
01:58:00 <kmc> kallisti, even if it's not, why would we assume brains use the magical non-computable parts
01:58:10 <kallisti> yes there's that as well.
01:58:13 <itidus20> but that is still a dead body
01:58:15 <kmc> you can simulate a brain with a computer, unless magic is real and brains are magic
01:58:24 <kmc> itidus20, you are free to define "dead" that way, yes
01:58:28 <shachaf> itidus20: The body-moving isn't really the interesting part of a brain.
01:58:30 <kallisti> presumably you could simulate brain physics.
01:58:34 <elliott> kmc: For bad values of magic
01:58:44 <itidus20> hmm
01:58:50 <elliott> itidus20: You could wire a computer-simulated brain up to a robot.
01:58:51 <kallisti> but then you also have to consider that the brain exists in a biological system. it has to grow and develop from an embryo.
01:58:51 <shachaf> elliott: I think that's as good a value of magic as you're ever going to get.
01:58:55 <kmc> natural processes are predictable and therefore simulatable
01:58:59 <elliott> That's just an engineering problem.
01:59:02 <kmc> therefore anything which cannot be simulated is supernatural
01:59:17 <kmc> now some natural processes can only be simulated stochastically / statistically
01:59:29 <shachaf> Anyway I've already created a conscious entity.
01:59:32 <shachaf> And it's very happy.
01:59:35 <shachaf> elliott knows.
01:59:37 <kmc> which leads to the common "quantum consciousness" loophole argument
01:59:42 <kmc> which i think is bunk for a couple of reasons
01:59:43 <kallisti> elliott: a lot of the state in my bot is things I'd like to be human-editable.
01:59:53 <kallisti> elliott: still, I could write my own tie for it.
02:00:00 <kmc> first of all, why would a stochastically predictable system with randomness be any more "conscious" than a deterministic system
02:00:17 <kmc> second, what exactly physical structure in the brain exhibits unusual / quantum-coherent behavior
02:00:19 <kallisti> oh ho a question for #perl
02:00:33 <kmc> it seems really unlikely that meat at above room temperature would have sophisticated quantum mechanical properties
02:00:48 <itidus20> the main prerequisite of life appears to be the capacity to die forever
02:00:52 <kallisti> is there a library that implements persistent hash tables that serialize to a human-editable file format?
02:01:08 <kmc> itidus20, you sound kinda stoned
02:01:21 <itidus20> i mean once a body truely dies.. its dead
02:01:27 <itidus20> theres no undying
02:01:30 <kmc> itidus20, you have defined the words such that this is true
02:01:34 <itidus20> even if its only a bacteria
02:01:35 <kallisti> itidus20: the main prerequisite to being able to die appears to be being able to be alive.
02:01:38 <kallisti> circular logic is circular.
02:01:41 <elliott> itidus20: Why do you care about bodies?
02:01:53 <itidus20> all life seems to have a body :P
02:01:57 <kmc> itidus20, basically, if I show you a technology that revives a dead bacterium, you will retroactively claim that it was "not really dead"
02:02:12 <elliott> kmc: Well, that _is_ practically the definition of information theoretic death...
02:02:38 <itidus20> kmc: hmmm... i will say that such technology suggests people could be brought back to life :D
02:02:46 <itidus20> if developed enough
02:02:48 <kmc> itidus20, i think they could, with sufficient technology
02:02:53 <Sgeo> itidus20, are the Hela cells alive?
02:02:53 <kmc> wrt our existing definition of "dead"
02:03:14 <itidus20> i dont know what a hela cell is
02:03:18 <elliott> hella cells
02:03:32 <elliott> itidus20: http://en.wikipedia.org/wiki/HeLa
02:03:42 <kmc> itidus20, we should build some kind of global hypertext information network, which could be used to answer questions like "what's a hela cell"
02:04:20 <elliott> kmc: Anyway, I think it's reasonable to claim that anything you can revive isn't dead.
02:04:31 <kmc> elliott, that's not a claim, it is a definition of the word "dead"
02:04:35 <kmc> but it is a reasonable definition
02:04:43 <kmc> i think that's exactly itidus20's problem
02:04:46 <elliott> Right.
02:05:07 <shachaf> LET'S ARGUE ABOUT DEFINITIONS, EVERYBODY!
02:05:08 <kmc> itidus20, you're making statements about your own definitions of words, but phrasing them as if they were empirically testable facts about the universe
02:05:18 <kmc> the laws of physics don't give a shit whether you are "dead" or not
02:05:21 <itidus20> its a good way to start a religion :P
02:05:33 <kmc> it's an arbitrary term humans have invented in order to efficiently categorize different arrangements of matter
02:05:40 <elliott> kmc: You seem to really enjoy beating your head against a brick wall. You must love #haskell.
02:05:45 <kmc> to predict them more efficiently without knowing microscopic details
02:05:53 <kmc> elliott, itidus20 is the brick wall?
02:06:00 <elliott> kmc: I can't possibly comment.
02:06:21 <itidus20> `searchlog itidus troll
02:06:28 <elliott> kmc: So, yes.
02:06:38 <kmc> so how come y'all hang out in a channel full of crackpots and trolls
02:06:51 <HackEgo> 2011-07-31.txt:10:31:31: <itidus20> partially because you get the sense of control over music... unlike neighbors noise which cannot be controlled
02:06:56 <elliott> kmc: "Full of"?
02:06:58 <itidus20> weird
02:07:05 <shachaf> Who're the crackpots?
02:07:06 <kmc> fsvo
02:07:14 <elliott> kmc: I count one.
02:07:31 <kmc> there are like five people here i've personally seen an accusation of trolling against
02:07:37 <kmc> and i've only been active a few days ;P
02:07:46 <elliott> People who aren't trolls can troll.
02:07:49 <itidus20> i accuse myself of trolling occasionally
02:07:51 <shachaf> I wonder how you make a trollproof IRC channel.
02:07:56 <elliott> For instance, shachaf.
02:07:58 <itidus20> however
02:08:00 <kmc> haha
02:08:12 <shachaf> elliott: Do I troll?
02:08:14 <elliott> Yes.
02:08:36 <shachaf> Hmm. This seems like it could get into another argument about definitions.
02:08:40 <itidus20> even though my methods of arguing use fallacies, and even though i like to argue for arguments sake, i stand by my things
02:08:57 <itidus20> things is a nice vague word
02:08:57 <elliott> The definition of "troll" has been progressively diluted.
02:08:57 <kmc> Is "is" as "is" is? Discuss.
02:09:11 <elliott> But you do deliberately mislead people on #haskell for humorous purposes a lot.
02:09:23 <shachaf> kmc, while elliott had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had itidus20's approval.
02:10:25 <itidus20> given that lambda calculus is a model of computation, and that i refuse to comprehend LC properly, i love the question of whether the mind/brain/nervous system/etc is beyond a computer
02:10:37 <shachaf> This seems pointless.
02:10:58 <itidus20> i know that you are all being your own universes anyway
02:11:00 <kmc> the question of whether the brain is beyond a computer is beyond your brain
02:11:13 <itidus20> it will be a long time before anyone can prove any of these things
02:11:26 <elliott> itidus20: tip: whenever you say "anyone", say "I"
02:11:36 <elliott> and question whether you can really predict everyone else's abilities
02:11:47 * shachaf takes a completely extensional and reductionist view of consciousness. Hence pet.txt.
02:11:52 <shachaf> And elliott being a murderer.
02:11:55 <itidus20> its called prediction :D
02:12:05 <kallisti> elliott: so your basic complaint with my use of CWD was that it would be more sensible for the core code to hand out persistent hash tables and maintain them so that the plugin code doesn't have to worry about it, right?
02:12:05 <kmc> ttants: extensional, existential
02:13:04 <elliott> kallisti: The main reason is that it's really stupid, and there's no reason the current working directory should be privileged over the other trillion pieces of global state a Unix process running Perl has; furthermore that the way to make certain things local to a piece of code is not to rely on mutating a system global all the time to provide the illusion of a scope.
02:13:16 <elliott> What to do instead is another matter.
02:13:27 <itidus20> it also concerns me that computation leads to cubicles instead of frolicing in nature
02:13:36 <itidus20> something is not quite right with that picture
02:13:57 <itidus20> like something is missing
02:14:06 <itidus20> if computers are necessary
02:14:59 <itidus20> ok no that was trolling
02:15:20 <itidus20> KALLISTI KEEP GOING
02:16:04 <elliott> kmc: Does your computer frolick in nature?
02:16:04 <oerjan> well it's too damn cold to frolic in the nature around here, anyway
02:16:11 <elliott> *frolic
02:16:13 <oerjan> despite what those ski freaks say
02:16:14 <elliott> Magicke.
02:16:47 <itidus20> the computers give nothing back
02:17:11 <elliott> itidus20: You anthropomorphise approximately 100% more often than you should.
02:17:22 <kallisti> elliott: it's privleged because it makes it less of a pain to refer to datafiles related to the program. And yes, I want them to be in one directory because I want them to be self-contained modules. the plugin directory can possibly contain anything (you dump in an entire subprogram and then hook it up to the bot with a simple glue script)
02:17:32 <kallisti> elliott: also, the "illusion" is scope is actually not difficult to maintain at all.
02:17:36 <kallisti> *of scope
02:17:50 <kallisti> elliott: what other bits of unix state should I be concerned with?
02:18:00 <oerjan> elliott: don't you mean that he should anthropomorphise 100% _less_?
02:18:18 <kallisti> isn't that... equivalent?
02:18:21 <elliott> oerjan: He anthropomises 100% more than he should.
02:18:42 * oerjan swats kallisti for failing at percentages -----###
02:18:46 <elliott> kallisti: Is there a polite way of telling you that your response indicates to me that I won't be able to convince you you're wrong, and so I really don't think it's worth either of our time for me to bother trying?
02:19:27 <kallisti> elliott: sure. you can do it indirectly as you just did. To me, your lack of a convincing explanation is simply evidence that you don't actually have a good reason to convince me with.
02:20:09 <elliott> kallisti: To quote the Austrian philosopher kallisti, "I... don't really care".
02:20:22 <elliott> s/the //
02:20:46 <elliott> oerjan: I don't really see how what I said was incorrect.
02:21:03 <oerjan> elliott: i was just suggesting an improvement.
02:21:22 <elliott> oerjan: Well, okay.
02:24:53 <kallisti> elliott: so you don't really have a reason other than "it's gross" and "it's stupid". okay cool.
02:25:36 <shachaf> Puzzle: I didn't sleep last night. When is the optimal time to go to sleep so that I wake up at ~08:00 tomorrow?
02:25:58 <kallisti> how often do you normally sleep?
02:26:00 <elliott> kallisti: What response are you exactly trying to solicit in response to that? It's basically just a smarmy "ha ha, you can't convince me, COOL!" so you're not going to get more than a "fuck you"...
02:26:07 <kallisti> and, how often do you stay up late?
02:26:12 <elliott> shachaf: How long do you usually sleep?
02:26:18 <elliott> And what time is it now?
02:26:19 <shachaf> elliott: I don't know.
02:26:23 <elliott> And when did you wake up last?
02:26:23 <shachaf> It's 18:25 now.
02:26:28 <shachaf> I don't remember.
02:26:34 <shachaf> It sometimes takes me a few hours to wake up.
02:26:43 <elliott> OK, when did you get up, roughly.
02:26:45 <elliott> In like a 3 hour window.
02:26:50 <elliott> I'M AN EXPERT DAMMIT.
02:26:57 <shachaf> 11-13?
02:26:58 <shachaf> Maybe.
02:27:02 <kallisti> elliott: I was hoping for perhaps an explanation of a flaw with the current system? an example, for example.
02:27:09 <shachaf> ...I may have stayed in bed a long time after "waking up".
02:27:43 <kallisti> elliott: I don't just prod you because I like to make you suffer. I'm actually looking for improvements but I'm currently unconvinced that this is something that needs changing.
02:27:49 -!- pikhq_ has quit (Ping timeout: 252 seconds).
02:27:52 -!- pikhq has joined.
02:28:07 <kallisti> elliott: if you have like... actual evidence of a flaw then I would be grateful to hear about it.
02:28:32 <elliott> shachaf: 20:00 to 23:00; probably ideally before 22:00. I disclaim this advice even more than any other advice I give because of lack of decent information.
02:29:00 <shachaf> kmc: Did you hear elliott's exciting proposal for MonadZero yesterday?
02:29:02 <elliott> If you don't care about waking up early I'd just go to bed whenever.
02:29:06 <shachaf> You'd like* it.
02:29:16 <elliott> shachaf: HE'LL JUDGE ME.
02:29:20 <shachaf> elliott: I have an appointment at 09:30.
02:29:38 <elliott> shachaf: Yes, so you probably don't care much about waking up early, but don't want to wake up late.
02:29:44 <shachaf> elliott: I just mentioned it in #haskell and now people are asking.
02:29:48 <shachaf> Go join #haskel and tell them.
02:29:53 <elliott> So, 19:00 to 22:00 or something.
02:29:55 <shachaf> #haskell
02:30:38 -!- Jafet has joined.
02:31:00 <shachaf> elliott: They weren't doing that much lambdabot nonsense a few minutes ago!
02:31:21 <elliott> shachaf: I might be able to avoid explaining it!
02:31:29 <shachaf> Nope.
02:31:40 <shachaf> cmccann is there; it's the perfect opportunity.
02:32:24 <elliott> shachaf: Not until somebody who isn't you asks!!!
02:32:34 <shachaf> elliott: Peaker asked right before you joined.
02:32:39 <shachaf> 05:29 < Peaker> shachaf: nope, what was it?
02:32:42 <elliott> Yes, but I didn't hear it.
02:32:43 <shachaf> 05:29 < Peaker> shachaf: where was it?
02:32:47 <shachaf> Now you heard it.
02:32:53 <elliott> No.
02:32:56 <elliott> I am deaf to quotes.
02:33:49 <shachaf> elliott: You gotta do what you gotta do.
02:35:15 <shachaf> elliott: I see. I was just baiting the wrong person.
02:37:02 <kmc> did not hear
02:41:15 <kallisti> dynamic scoping actually works really well with global variables.
02:41:27 <kallisti> it kind of eliminates some of the criticisms of global variables.
02:41:42 <elliott> kmc: Hear what?
02:43:31 <shachaf> I like how quick dolio was to blame me.
02:43:44 <kallisti> for example Data::Dumper has both package configuration variable and instance members that you can set to override the global behavior.
02:43:48 <elliott> shachaf: Well, you *are* awful.
02:44:00 <kallisti> oftentimes it's a huge pain to use the OO interface and set all of the members every time you want to dump something.
02:44:11 <kallisti> so instead you can locally redefine the global variables for your program.
02:44:22 <elliott> shachaf: Did you know that erus` hasn't accepted my answer on SO yet?
02:44:26 <elliott> Truly a scoundrel
02:44:29 <elliott> *.
02:45:00 <shachaf> elliott: Oh. Surely erus` has accepted your answer in erus`'s heart.
02:45:36 <kallisti> also perl has fun features such as "delete local"
02:45:58 <elliott> shachaf: This awkward silence in #haskell is palpable.
02:46:13 <kallisti> !perl $x = 2; local $x = 3; delete local $x; print $x
02:46:15 <EgoBot> delete argument is not a HASH or ARRAY element or slice at /tmp/input.981 line 1.
02:46:19 <kallisti> :o
02:47:56 <kallisti> !perl use v5.10; %x = (1,2); {delete local $x{1}; say $x{1} || "nothing"} say $x{1}
02:47:57 <EgoBot> nothing \
02:48:05 <elliott> 01:27:39 <shachaf> quicksilver: Yep. There should be a foldl' genericLength.
02:48:07 <elliott> shachaf: I think there is.
02:48:12 <shachaf> Oh?
02:48:17 <shachaf> What is it called?
02:48:21 <elliott> Oh, there isn't.
02:48:26 <elliott> But there's specialisations for Int and Integer.
02:48:32 <elliott> {-# RULES
02:48:32 <elliott> "genericLengthInt" genericLength = (strictGenericLength :: [a] -> Int);
02:48:32 <elliott> "genericLengthInteger" genericLength = (strictGenericLength :: [a] -> Integer);
02:48:32 <elliott> #-}
02:48:32 <elliott> strictGenericLength :: (Num i) => [b] -> i
02:48:33 <elliott> strictGenericLength l = gl l 0
02:48:35 <elliott> where
02:48:37 <elliott> gl [] a = a
02:48:39 <elliott> gl (_:xs) a = let a' = a + 1 in a' `seq` gl xs a'
02:48:41 <elliott> strictGenericLength should probably be exported.
02:48:43 <elliott> And be called genericLength' instead.
02:48:52 <shachaf> Or maybe it should be called genericLength.
02:49:02 <shachaf> And genericLength should be called academicGenericLength
02:49:04 <elliott> shachaf: But I want length x < (4::Nat) to work. :(
02:49:28 <shachaf> elliott: Paul Graham says you should just write a function called "length<".
02:49:50 <elliott> shachaf: Gross.
02:50:44 <elliott> shachaf: Can you make grep -i less slow?
02:50:48 <shachaf> elliott: In Common Lisp.
02:50:52 <shachaf> elliott: Yes.
02:50:58 <shachaf> But I want you to suffer.
02:51:11 <shachaf> That's the only reason I disabled the "speed" option in the default Arch distribution of grep.
02:51:16 <shachaf> Are you logrepping?
02:51:40 <kallisti> `searchlog year of tool
02:51:58 <HackEgo> 2012-01-09.txt:10:23:53: <kallisti> no doubt because of my revolutionary searchlog tool of the year.
02:52:04 <kallisti> :)
02:52:13 <shachaf> `searchlog year of the tool
02:52:38 <Sgeo> elliott, kallisti update
02:52:46 <HackEgo> No output.
02:53:01 * Sgeo is not lying.
02:53:08 <elliott> shachaf: I was.
02:53:11 <kallisti> `cat `which log`
02:53:14 <HackEgo> cat: `which log`: No such file or directory
02:53:17 <kallisti> `run cat `which log`
02:53:21 <HackEgo> ​#!/bin/sh \ cd /var/irclogs/_esoteric \ if [ "$1" ]; then \ grep -P -i -- "$1" ????-??-??.txt | shuf -n 1 \ else \ file=$(shuf -en 1 ????-??-??.txt) \ echo "$file:$(shuf -n 1 $file)" \ fi \
02:53:25 <monqy> kallisti really got update guys honest
02:53:28 <shachaf> `run cat run
02:53:32 <HackEgo> cat: run: No such file or directory
02:53:36 <shachaf> `bin/run cat bin/run
02:53:40 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/run: No such file or directory \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/run: cannot execute: No such file or directory
02:54:11 <shachaf> elliott: If I go to sleep too early, will I wake up in the middle of the night feeling depressed?
02:54:33 <shachaf> I pretty much am unable to think right now due to sleep deprivation.
02:55:28 <elliott> shachaf: Do you have melatonin?
02:55:32 <kallisti> how do I pop off the first word of a string in bash?
02:55:38 <shachaf> elliott: As a matter of fact, I do!
02:55:40 * elliott just takes melatonin if he wakes up in the night post-sleep-deprivation.
02:55:49 <elliott> That means you might oversleep though.
02:55:57 <elliott> Sucks to be you! Invest in an alarm or something.
02:56:02 <shachaf> elliott: Wait, that's not how you're supposed to use it, is it?
02:56:09 <elliott> shachaf: Probably not, but it works.
02:56:12 <shachaf> I thought it was for taking right before your "regular sleeping hour".
02:56:21 <elliott> I don't like to be dependent on it because it makes me groggy, so I only take it when I really need to get to sleep and can't.
02:56:31 <elliott> shachaf: Anyway, "middle of the night" is relative.
02:56:49 <elliott> If you wake up at 4 am, that's *four whole more hours* before you have to be up!
02:56:57 <elliott> That's like winning the free time lottery.
02:57:10 <shachaf> elliott: I thought it was supposed to be very different from, you know, a sleeping pill.
02:57:29 <elliott> Well, it makes you tired. That's sort of what your body uses melatonin for?
02:57:39 <elliott> I mean, if you're trying to establish a decent sleep pattern, yes, you should take it regularly.
02:58:02 <elliott> But it's not like it can do anything worse than mess up your sleep a bit.
02:59:20 <kmc> elliott, <shachaf> kmc: Did you hear elliott's exciting proposal for MonadZero yesterday?
02:59:41 <shachaf> kmc: It was decided in #haskell that it's not actually exciting.
02:59:50 <shachaf> elliott feels dejected now, I think.
03:00:02 <elliott> I'm quitting the Haskell community FOREVER.
03:00:09 <shachaf> The proposal is: class MonadZero m where { mzero :: m a; mfail :: b -> m a; mfail _ = mzero; mzero = mfail (error "mzero") }
03:00:54 -!- lambdabot has quit (Remote host closed the connection).
03:01:26 <shachaf> This lets you have informative pattern-match failure error strings without leaking source-code position information into non-IO code.
03:02:15 <elliott> @tell oerjan <Cale> Fixed @check
03:02:55 <elliott> shachaf: Come to think of it, mfail should probably be called mpatternfail or something, in that it's not useful for actually reporting errors in general.
03:04:28 <shachaf> @tell elliott <elliott> @tell oerjan <Cale> Fixed @check
03:05:01 -!- lambdabot has joined.
03:05:03 <elliott> @tell oerjan <Cale> Fixed @check
03:05:09 <lambdabot> Consider it noted.
03:05:17 <shachaf> elliott: What if I just go to sleep now?
03:05:27 <elliott> shachaf: What time is it?
03:05:29 * shachaf is seriously a zombie.
03:05:31 <shachaf> 19:05
03:05:54 <shachaf> If I sleep for 10 hours I'll wake up at 05:00.
03:05:55 <kallisti> !perl my $x = "hello"; length $x = 4; print $x
03:05:56 <EgoBot> Can't modify length in scalar assignment at /tmp/input.3107 line 1, near "4;" \ Execution of /tmp/input.3107 aborted due to compilation errors.
03:06:01 <elliott> shachaf: You'll wake up between 3 and 9 or so.
03:06:10 <shachaf> Knowing me, I'll probably wake up around 23:00 and not be able to get to sleep again.
03:06:16 <elliott> If you sleep as long as I do after sleep deprivation 11:00.
03:06:20 <elliott> But that's not likely.
03:06:42 <elliott> shachaf: I somewhat doubt you'll wake up at 23:00 if you've been awake that long.
03:06:50 <shachaf> elliott: You'd be surprised.
03:06:58 <elliott> But there's no real point staying up for the sake of a few hours.
03:07:10 * shachaf walked to Menlo Park today. It was crazy, man.
03:07:31 <shachaf> The thing is that as soon as I close the computer, I won't be able to fall asleep.
03:07:32 <oerjan> @check True
03:07:33 <lambdabot> "OK, passed 500 tests."
03:07:34 <elliott> I read that as "walked into".
03:07:39 <elliott> And I was, thinking, like, "accidentally?"
03:07:49 <shachaf> I was planning to do laundry today.
03:07:51 <shachaf> Not much chance.
03:08:03 <oerjan> @messages
03:08:04 <lambdabot> elliott said 2m 59s ago: <Cale> Fixed @check
03:09:10 <oerjan> `log zjoin.*diag
03:09:22 <HackEgo> 2011-12-31.txt:18:54:46: <oerjan> > let zjoin = diag . scanl1 (zipWith (flip const)) where { diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []}; x = [[[1,2],[3,4]],[undefined]] in (zjoin $ zjoin x, zjoin $ map zjoin x)
03:09:40 <oerjan> @let zjoin = diag . scanl1 (zipWith (flip const)) where { diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []}; x = [[[1,2],[3,4]],[undefined]]
03:09:41 <lambdabot> Defined.
03:10:01 <elliott> shachaf: Watch as oerjan attempts proof by QuickCheck.
03:10:21 <shachaf> oerjan: QuickCheck still doesn't support @let.
03:10:22 <oerjan> @check \ll -> zjoin (zjoin (ll :: [[Int]])) == zjoin (map zjoin ll)
03:10:23 <lambdabot> Couldn't match expected type `[a]'
03:10:28 <shachaf> Or does it?
03:10:31 <shachaf> s/QuickC/@c/
03:10:34 <oerjan> oops
03:10:38 <elliott> shachaf: Well, Cale just fixed it.
03:10:41 <elliott> So maybe he reworked it.
03:10:47 <shachaf> You can never know with Cale.
03:10:53 <oerjan> :t zjoin
03:10:54 <lambdabot> forall a. [[a]] -> [a]
03:11:09 <oerjan> oh duh
03:11:11 <shachaf> > zjoin ["oerjan", "elliott"]
03:11:15 <lambdabot> mueval-core: Time limit exceeded
03:11:17 <oerjan> @check \ll -> zjoin (zjoin (ll :: [[[Int]]])) == zjoin (map zjoin ll)
03:11:20 <lambdabot> "Falsifiable, after 12 tests:\n[[[-7,-4,-5,-8,0,5,6,-7],[-4]],[[7,-7,-1,-3,...
03:11:26 <oerjan> AAAAAAAAAAAAAAA
03:11:30 <monqy> did you get the wrong zjoin
03:11:34 <elliott> i like how it doesn't tell you what went wrong.
03:11:37 <elliott> *I
03:12:03 <shachaf> elliott: What happened to all those times when you didn't capitalise your 'i's?
03:12:07 <shachaf> Are you Bourbaki?
03:12:19 <kallisti> what's the character limit on IRC again?
03:12:26 <kallisti> 300?
03:12:39 <elliott> shachaf: Yes.
03:12:39 <oerjan> > let ll = [[[-1,-2],[-2],[2,-4],[2,-4,-4]],[[],[1,3]]] in (zjoin (zjoin ll), zjoin (map zjoin ll))
03:12:40 <monqy> a billion / have fun
03:12:41 <lambdabot> ([-1,3],[-1])
03:12:47 <Jafet> kallisti: you can raise it by getting a short hostname
03:12:48 <elliott> kallisti: 512, including prefix
03:12:59 <Jafet> And connecting to a server with a short hostname
03:13:00 <elliott> > let ll = [[[-1,-2],[-2],[2,-4],[2,-4,-4]],[[],[1,3]]] in (zjoin (zjoin ll), map zjoin ll)
03:13:02 <lambdabot> ([-1,3],[[-1],[]])
03:13:11 <elliott> Jafet: where is server hostname in the message?
03:13:14 <elliott> oh, server-to-server messages?
03:13:16 <elliott> *Where
03:13:24 <Jafet> I think they are
03:13:29 <elliott> Huh?
03:13:42 <Jafet> When servers send your message to other servers
03:13:58 * shachaf will try out the sleep thing.
03:14:35 <elliott> Right.
03:14:37 <elliott> shachaf: Enjoy!
03:15:30 <oerjan> > let ll = [[[-1,-2],[-2],[2,-4],[2,-4,-4]],[[],[1,3]]] in (zjoin ll)
03:15:31 <lambdabot> [[-1,-2],[1,3]]
03:16:57 <oerjan> R.I.P. monad
03:17:03 <monqy> :(
03:18:06 <elliott> oerjan: don't give up hope!!!
03:18:11 <elliott> maybe you can rectify the shape
03:18:52 <oerjan> nah it's pretty obvious what happened when you see it
03:19:58 -!- elliott has set topic: Breaking news: ZipList still not a monad! | http://codu.org/logs/_esoteric/.
03:21:14 <oerjan> basically, zjoin ll has no chance of preserving the information of the shape of the elements pruned away
03:21:39 <kallisti> > [1..]
03:21:41 <lambdabot> Could not find module `Control.Monad.Writer':
03:21:41 <lambdabot> It is a member of the hidd...
03:21:52 <kallisti> > 2
03:21:53 * oerjan blinks
03:21:53 <lambdabot> Could not find module `Control.Monad.Writer':
03:21:53 <lambdabot> It is a member of the hidd...
03:21:55 <kallisti> @undefine
03:22:01 <oerjan> whew
03:22:03 <kallisti> > 2
03:22:04 <lambdabot> Could not find module `Control.Monad.Writer':
03:22:04 <lambdabot> It is a member of the hidd...
03:22:07 <kallisti> >_>
03:22:11 <kallisti> oerjan: no, proceed to panic
03:22:19 <kallisti> @unerd
03:22:20 <lambdabot> Unknown command, try @list
03:22:20 <oerjan> @undefine
03:22:22 <oerjan> > 2
03:22:23 <lambdabot> Could not find module `Control.Monad.Writer':
03:22:23 <lambdabot> It is a member of the hidd...
03:22:24 <kallisti> @undefloon
03:22:25 <lambdabot> Unknown command, try @list
03:22:47 <oerjan> > let ll = [[[-1,-2],[-2],[2,-4],[2,-4,-4]],[[],[1,3]]] in (zjoin ll)
03:22:47 <kallisti> @und
03:22:48 <lambdabot> Could not find module `Control.Monad.Writer':
03:22:48 <lambdabot> It is a member of the hidd...
03:22:48 <lambdabot> Maybe you meant: undefine undo
03:23:00 -!- elliott has quit (Quit: Leaving).
03:23:01 <oerjan> that's weird, it must have happened seconds ago
03:23:43 <oerjan> @undefine
03:23:53 <Sgeo> How is "ZipList not a monad" breaking news? I remember someone attempted to make it a monad, I guess that failed?
03:23:58 <monqy> > help
03:23:59 <lambdabot> Not in scope: `help'
03:24:05 * oerjan swats Sgeo -----###
03:24:07 <oerjan> YES I DID
03:24:23 <kallisti> oerjan: oh it's actually not a monad?
03:24:29 -!- elliott has joined.
03:24:39 <elliott> XChat forgot my settings again.
03:24:47 <oerjan> kallisti: not with the definition i made, and i don't see how to repair it.
03:24:55 <elliott> oerjan: Anyway, couldn't you, instead of pruning, "rearrange" the shape?
03:25:23 <elliott> Pad things out by repeating shapes in places that won't affect the joined shape, and use the padded spaces to put the awkward pieces of the other argument.
03:25:26 <oerjan> elliott: for rectangular lists the outcome is fixed
03:25:31 <elliott> Erm, there's no other argument.
03:25:34 <elliott> But you sort of know what I mean.
03:25:42 <elliott> oerjan: Yes, but you could behave specially for non-rectangular lists.
03:25:55 <oerjan> ok so lessee
03:26:03 <oerjan> > 2
03:26:04 <lambdabot> 2
03:26:11 <elliott> shocking
03:26:15 <kallisti> !perl substr("", 0,undef,"...")
03:26:16 <EgoBot> Modification of a read-only value attempted at /tmp/input.5704 line 1.
03:27:14 <oerjan> @let zjoin = diag . scanl1 (zipWith (flip const)) where { diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []}
03:27:15 <lambdabot> Defined.
03:28:31 <kmc> Sgeo, it's breaking news where?
03:28:32 <elliott> kmc: Hey, do you still have that horrible value-mutating code?
03:28:40 <kmc> not handy
03:28:53 <Sgeo> kmc, topic
03:29:03 <kmc> elliott, http://hpaste.org/52266
03:29:31 <oerjan> @check \ll -> (not . null . drop 1 . group $ map length ll) || zjoin (zjoin (ll :: [[[Int]]])) == zjoin (map zjoin ll)
03:29:33 <lambdabot> "OK, passed 500 tests."
03:29:46 <elliott> kmc: cool, thanks
03:29:49 <oerjan> huh
03:29:51 <oerjan> @check \ll -> (not . null . drop 1 . group $ map length ll) || zjoin (zjoin (ll :: [[[Int]]])) == zjoin (map zjoin ll)
03:29:53 <lambdabot> "Falsifiable, after 393 tests:\n[[[-2,-1,8],[-1,3,-8,5,-8],[3,-6],[3,2,0,4]...
03:29:54 <kmc> elliott, .... why?
03:29:56 <oerjan> darn
03:30:08 <elliott> kmc: wouldn't you be happier not knowing?
03:30:35 <kmc> Sgeo, seems sarcastic... I'm guessing someone somewhere made a big deal of this and was mocked for it
03:30:48 <kmc> "ZipList is not a monad" is probably one of those things which seems obvious if you live in #haskell
03:30:53 <oerjan> wtf this rarely fails
03:30:55 <kmc> but isn't actually written down somewhere you'd find it
03:31:09 <elliott> kmc: oerjan had a definition of join he thought would work but didn't
03:31:13 <elliott> and is apparently trying to repair it now
03:31:18 <oerjan> kmc: i haven't been mocked much yet
03:31:25 <oerjan> elliott: not really much hope
03:31:29 <kmc> heh
03:31:36 * elliott is interesting in seeing a proof it's not a monad, though, since I've just seen people assert it isn't based on vague arguments
03:31:40 <elliott> *interested
03:31:59 <kmc> i think the amount of "oral tradition" in Haskell is bad
03:32:20 * elliott hasn't seen that much oral tradition.
03:33:05 <kmc> there are a lot of things #haskell can explain but can't provide a link to
03:33:34 <kmc> if you've read LYAH and RWH and wonder what's next
03:33:39 <kmc> it's hard to even discover what you should read
03:34:04 <kmc> the only way i know is to hang around #haskell and try to understand anything anyone says
03:34:11 <kmc> and read articles / papers that way
03:34:46 <kmc> but if you just go looking for "haskell articles" you'll find a) gibberish monad tutorials, and b) research papers which are irrelevant to 99% of real haskell code people write
03:35:02 <oerjan> > let ll = [[[1,2],[6],[2,4,-4,1,-5,3],[-2,4],[5,4,6,3],[-2,-6,4]],[[-2,3],[4,-5,2],[-5,4,-1,4,-6,-1],[-2,0,3],[1,-6,-4,1,4,-5],[-1,1]]] in (zjoin ll, map zjoin ll)
03:35:03 <lambdabot> ([[1,2],[4,-5,2]],[[1],[-2,-5]])
03:35:48 <kmc> similarly how do you discover which of the 3,700 packages on Hackage are worth a damn
03:36:41 <oerjan> > let ll = [[[1,2],[6],[2,4,-4,1,-5,3],[-2,4]],[[-2,3],[4,-5,2],[-5,4,-1,4,-6,-1],[-2,0,3]] in (zjoin ll, map zjoin ll)
03:36:42 <lambdabot> <no location info>: parse error on input `in'
03:36:54 <oerjan> > let ll = [[[1,2],[6],[2,4,-4,1,-5,3],[-2,4]],[[-2,3],[4,-5,2],[-5,4,-1,4,-6,-1],[-2,0,3]]] in (zjoin ll, map zjoin ll)
03:36:56 <lambdabot> ([[1,2],[4,-5,2]],[[1],[-2,-5]])
03:38:46 -!- pikhq has quit (Quit: Reconnecting).
03:38:47 <oerjan> > let ll = [[[1,2],[]],[[-2,3],[4,-5]]] in (zjoin ll, map zjoin ll)
03:38:49 <lambdabot> ([[1,2],[4,-5]],[[1],[-2,-5]])
03:39:02 -!- pikhq has joined.
03:39:51 <oerjan> i think that's close to minimal
03:40:53 <elliott> kmc: You sure do like talking about how bad the Haskell community is at teaching people :P
03:42:27 <kmc> i still think it's pretty good
03:42:58 <kmc> but there are some flaws, and I don't see many other people talking about them
03:43:00 <elliott> See, I should write a Haskell book that covers every topic ever.
03:43:08 <elliott> Then there'd be no problems, because everybody could just point people there.
03:43:24 <elliott> People who point out situations not covered by the book would be summarily executed for heresy.
03:44:07 <kmc> mostly #haskell talks about how #haskell is the #1 best most friendly channel on freenode
03:44:13 <kmc> which might even be true
03:46:19 <elliott> I've never actually seen that past like 2008.
03:46:36 * elliott wonders what #haskell was like in the Old Days.
03:47:29 <oerjan> the only part of that example which isn't fixed is zjoin [[1,2],[]] = [1]. if it could be [1,something] instead that would fix that counterexample.
03:47:56 <elliott> oerjan: I can help: it's either [1,1] or [1,2].
03:48:05 <elliott> oerjan: That's sort of what I meant by "stuffing the gaps".
03:48:12 <oerjan> oh wait, join [[1],[-2,-5]] == [1,-5] would also work
03:48:19 <elliott> Where you'd shrink, instead throw in a value you have lying around.
03:48:25 <elliott> > zjoin [[1],[-2,-5]]
03:48:27 <lambdabot> [1]
03:48:32 <elliott> Right, same kind of thing.
03:49:22 <oerjan> well i'm starting to think there is probably a proof that this cannot work - if only someone had written it down somewhere we could find it.
03:49:42 <elliott> But but but but don't give up HOPE!
03:49:47 <oerjan> oh hm
03:50:05 <oerjan> if we reinsert the 6
03:50:15 <oerjan> > let ll = [[[1,2],[6]],[[-2,3],[4,-5]]] in (zjoin ll, map zjoin ll)
03:50:16 <lambdabot> ([[1,2],[4,-5]],[[1],[-2,-5]])
03:50:38 <oerjan> it becomes more symmetrical
03:52:15 * oerjan should eat before he reaches *HULK SMASH* level again ->
04:02:32 -!- Lymee has joined.
04:02:32 -!- Lymee has quit (Changing host).
04:02:32 -!- Lymee has joined.
04:02:55 -!- Madoka-Kaname has quit (Ping timeout: 240 seconds).
04:03:02 -!- Lymee has changed nick to Lymia.
04:11:12 <kallisti> uh... I forgot how date math works..
04:11:29 <kallisti> if I take the absolute difference between minute, hour, day, month, year, etc
04:11:38 <kallisti> that should work right?
04:11:41 <kallisti> yes I think it should.
04:14:19 <elliott> huh?
04:14:52 <kallisti> I'm just going to use a datetime thing..
04:14:54 <oerjan> kallisti: your description is sufficiently ambiguous that i'm not sure if you're terribly wrong or not.
04:15:00 <kallisti> because I'm pretty sure I'm wrong.
04:15:55 <elliott> What does "work" even mean
04:15:58 <elliott> What are you trying to do
04:16:02 <oerjan> i mean i _can_ interpret it in such a way that it gives a meaningful answer. barely.
04:16:35 <kallisti> elliott: take the difference between two dates?
04:16:55 <elliott> kallisti: "Difference"?
04:16:58 <kallisti> yes
04:17:08 <elliott> "It was sunny today, and rainy this other day, so... 70%."
04:17:22 <kallisti> ?????
04:17:26 <kallisti> that's weather
04:17:27 <kallisti> not dates.
04:17:37 * elliott facepalm
04:17:59 <oerjan> oh wait no. it is definitely terribly wrong, because even my charitable interpretation breaks down for leap years.
04:18:13 <elliott> Date libraries exist for a reason.
04:18:15 <elliott> Time is hard.
04:18:35 <kallisti> I was going to avoid a CPAN dependency but then I remembered that dates are annoying to work with.
04:18:50 -!- Darth_Cliche has joined.
04:19:09 <oerjan> kallisti: you are being horribly vague in such a matter that it _looks_ like you're making a horrible train wreck but it's impossible to be sure.
04:19:15 <oerjan> *such a way
04:19:24 -!- Darth_Cliche has changed nick to Klisz.
04:19:47 <kallisti> !perl use DateTime
04:19:48 <EgoBot> Can't locate DateTime.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /tmp/input.11100 line 1. \ BEGIN failed--compilation aborted at /tmp/input.11100 line 1.
04:19:49 <elliott> oerjan: XY problem!! XY problem!! kallisti is never doing the wrong thing.
04:20:04 <kallisti> you guys must have missed the part where I decided to use a date library from CPAN
04:20:15 <oerjan> elliott: actually the problem is he hasn't told us _either_ X or Y properly :D
04:20:22 <elliott> kallisti: No, I just continued mocking you after that too! :D
04:20:27 <elliott> <penelope> Cody__: what's the type signature you should expect for findMin?
04:20:27 <elliott> <Cody__> Hold on
04:20:27 <elliott> * nexion has quit (Quit: Leaving)
04:20:27 <elliott> * LeNsTR|off is now known as LeNsTR
04:20:28 <elliott> <Cody__> findMin :: [Ixs] -> [x]. Not very good with typeclasses.
04:20:30 <elliott> <Cody__> findMin :: [x] -> [x].
04:20:33 <elliott> I honestly think people believe #haskell is a Haskell tutorial.
04:20:36 <kallisti> elliott: it's okay to be wrong when finding the correct solution.
04:21:10 <kallisti> or rather, when in the process of doing so.
04:21:47 -!- DCliche has quit (Ping timeout: 260 seconds).
04:22:40 <oerjan> <elliott> I honestly think people believe #haskell is a Haskell tutorial. <-- i'm sure some of it's popularity is because it de facto works as one.
04:22:49 <oerjan> *its
04:22:55 <elliott> oerjan: Yes, unfortunately.
04:25:37 <kallisti> Another problem introduced by Daylight Saving Time is that certain local times just do not exist. For example, in the US in 2003, the transition from standard to saving time occurred on April 6, at the change to 2:00:00 local time. The local clock changes from 01:59:59 (standard time) to 03:00:00 (saving time). This means that there is no 02:00:00 through 02:59:59 on April 6!
04:25:42 <kallisti> loooool
04:26:20 <kallisti> Attempting to create an invalid time currently causes a fatal error. This may change in future version of this module.
04:26:48 <kallisti> this is actually one of the better datetime packages I've seen.
04:27:32 <kallisti> http://search.cpan.org/~drolsky/DateTime-0.72/lib/DateTime/Infinite.pm
04:27:33 <kallisti> .....
04:32:11 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
05:05:16 <pikhq> elliott: BTW, DC updated (on time!)
05:06:06 <elliott> Thanks District of Columbia!
05:17:33 -!- oerjan has quit (Quit: Good night).
05:33:29 <kallisti> hmmm type families would be good for defining chess variants, I think.
05:33:49 <kallisti> well an associated type family
05:33:54 <kallisti> to define the pieces
05:39:13 <kmc> also there's at least one haskell tutorial which actually embeds a chat window for #haskell
05:39:15 <kmc> (tryhaskell.org)
05:39:28 <kmc> i remember when that hit the Reddit front page
05:39:37 <kmc> the channel was full of people who were like
05:39:38 <kmc> WTF IS THIS
05:39:40 <kmc> FAGZ
05:39:42 <kmc> /part
05:41:15 <elliott> hi
05:41:31 <elliott> tryhaskell has an irc client?
05:41:34 <elliott> i guess i never got that far
05:41:42 <kmc> yeah
05:41:48 <kmc> it embeds the freenode webchat thingy
05:41:54 <elliott> aw, boring
05:41:55 <kmc> which i guess is javascript / ajax these days
05:42:00 <kmc> yeah
05:42:04 <elliott> it should have a haskell irc client
05:42:07 <kmc> it would be cooler if it made you write some part of an IRC client in haskell
05:42:10 <elliott> yes
05:42:10 <kmc> yeah
05:42:12 <elliott> say irc "hi!!"
05:42:19 <kmc> too bad it's not actually running haskell in the browser
05:42:22 <elliott> maybeGetNextLine irc
05:42:26 <kmc> unlike http://try.ocamlpro.com/
05:42:52 <elliott> http://www.haskell.org/haskellwiki/Why_Haskell_just_works
05:42:59 <elliott> best article title
05:43:09 <elliott> http://www.haskell.org/haskellwiki/Why_Haskell_is_the_most_amazingly_awesome_thing_ever
05:43:49 <kmc> impress your friends and intimidate your enemies with haskell
05:45:07 <qfr> I gave up on Haskell a long time ago
05:45:27 <qfr> I returned to Ruby/C++/C# :S
05:46:00 <elliott> qfr: my condolences
05:47:16 <kmc> R/Ruby/Racket/REBOL
05:47:24 <kmc> C/C++/COBOL/CommonLisp
05:47:33 <kmc> FORTRAN/Factor/Forth
05:48:21 <elliott> J/Java
05:48:38 -!- Vorpal has joined.
05:49:07 <monqy> Joy?
05:50:36 <elliott> yes
05:52:37 -!- atrapado has quit (Ping timeout: 252 seconds).
06:09:13 -!- Klisz has joined.
06:12:08 <shachaf> elliott: ...I told you.
06:12:14 <shachaf> 22:11.
06:12:20 * shachaf is going to suffer now.
06:12:39 <elliott> shachaf: Seriously?
06:12:40 <elliott> Go back to sleep.
06:13:10 <shachaf> I doubt it'll work.
06:13:20 <shachaf> This one person who's awake is just outside the door, loudly.
06:13:44 * elliott just outsides the door loudly sometimes too.
06:13:50 <elliott> Oh well, I did disclaim my advice.
06:14:27 * shachaf will see what he can do.
06:14:28 <pikhq> @time elliott
06:14:29 <lambdabot> Local time for elliott is Tue Jan 10 06:14:14
06:15:29 <elliott> pikhq: Shhh.
06:57:29 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
08:40:55 <elliott> @hoogle (a -> f b) -> [a] -> f [b]
08:40:56 <lambdabot> Prelude mapM :: Monad m => (a -> m b) -> [a] -> m [b]
08:40:57 <lambdabot> Control.Monad mapM :: Monad m => (a -> m b) -> [a] -> m [b]
08:40:57 <lambdabot> Control.Monad forM :: Monad m => [a] -> (a -> m b) -> m [b]
08:40:57 <elliott> (I know.)
08:42:01 <Vorpal> elliott, I found an impressive ravine system in mc. About 10 intersecting ravines. One of them breaching the surface
08:42:13 <Vorpal> the result was that there was naturally sunlit redstone ore
08:44:22 <qfr> Vorpal you Haskell people are crazy
08:44:29 <Vorpal> qfr, that was minecraft stuff?
08:44:32 <Vorpal> not haskell
08:44:43 <qfr> Oh.
08:45:02 <Vorpal> qfr, how would that even make sense as haskell!?
08:45:10 <qfr> It was a joke :\
08:45:14 <Vorpal> oh
08:45:37 <qfr> "But did you find any co-ravines?" etc
08:45:50 <pikhq> Vorpal: Clearly Ravine is an instance of Monad and Num.
08:45:56 <Vorpal> pikhq, :D
08:46:20 <Vorpal> also two mineshaft systems intersecting this
08:46:31 <qfr> Om nom nom shafts
08:46:50 <Vorpal> also thanks to the technic pack there are TONS of ore here
08:48:32 <Vorpal> err I just dug away a bit of ore and found yet another ravine just behind it
08:51:48 -!- cswords_ has quit (Read error: Connection reset by peer).
09:01:30 -!- Frooxius has joined.
09:02:52 -!- _Slereah has joined.
09:03:55 -!- Slereah has quit (Ping timeout: 248 seconds).
09:05:21 -!- monqy has quit (Quit: hello).
09:11:27 <elliott> Vorpal: You know, there's a channel for that.
09:23:28 <Vorpal> elliott, oh right
09:23:33 <Vorpal> elliott, anyway it is kind of cool
09:40:05 <fizzie> Raving ravines.
10:10:01 -!- myndzi\ has joined.
10:13:12 -!- myndzi has quit (Ping timeout: 268 seconds).
10:37:51 -!- Jafet has quit (Quit: Leaving.).
10:50:03 <elliott> fizzie: You're a really calm dude, right? Give me the secrets of the calm, I need them.
10:52:49 <fizzie> Well, you know, basically they're just your regular mollusks, except they have this hinged shell thing going on. Normally they just kind of sit there and... wait, calm, not clam. Never mind.
10:53:27 <elliott> fizzie: Also your funnies, tell me the secrets of funnise.
10:53:29 <elliott> funnies.
10:54:00 <fizzie> Deliberate misunderstandings are one class of funnies.
10:54:20 <elliott> Ah.
10:54:23 <fizzie> Also nondeliberate since you can always just say "I meant to do that".
10:57:40 <itidus20> the soviet-russia-transformation of noun-subject present-tense-transitive-verb noun-object into noun-object present-tense-transitive-verb noun-subject
11:00:35 -!- ais523 has joined.
11:02:10 <itidus20> Every time you <action>, god kills another <small animal>.
11:05:13 -!- GreaseMonkey has quit (Quit: The Other Game).
11:07:57 <elliott> <NapHtaKeRoSene> hi
11:07:57 <elliott> <NapHtaKeRoSene> anybody know how to call a pointer to function in linux C ?
11:08:00 <elliott> --#haskell
11:09:19 <elliott> ais523: how do you call a pointer to function in linux C? you've taught C, you're the expert
11:09:55 <ais523> well, you can't call a pointer; if you want to call the function it points to, p(args) or (*p)(args)
11:10:00 <ais523> the first is more common, second is clearer
11:10:17 <ais523> and it doesn't matter whether it's Linux C or any other sort of C, not counting some embedded C-likes that don't have function pointers
11:10:40 <elliott> ais523: thanks!
11:11:00 <ais523> elliott: now I'm trying to work out if you're being sarcastic or not
11:11:05 <elliott> (they apparently couldn't ask in ##c because their nick isn't registered, which is an interesting reason to ask a C question in #haskell...)
11:11:13 <elliott> ais523: well, it was certainly a very good explanation.
11:12:15 <elliott> <NapHtaKeRoSene> blog it in my pm if you don't want it here ;; this is definitely some new sense of the word "blog" of which I was not previously aware
11:12:15 <fizzie> It's not as good as a "you can call a pointer anything you want, it's not sentient".
11:12:47 <ais523> elliott: heh, indeed
11:18:27 <elliott> ais523: wiki spam
11:18:41 <elliott> Take me for example. I could support Bachman, Cain, Palin, or Santorum. in no particular order. Others would choose fewer plus Paul., http://brendasongbikinivo.freeforums.org brenda song bikini, >:[[
11:30:02 <Patashu> elliot is a palin supporter???
11:30:18 <ais523> Patashu: elliott's quoting spam, I think
11:30:22 <ais523> just without quote marks or an attribution
11:30:27 <ais523> I generally do a <spambot> when I quote spam
11:30:30 <Patashu> that sounds like plagarism
11:31:04 <itidus20> imagines super mario kart on a mobius strup with rectangular sections of track which can pivot. i assure you it's boring, but noteable
11:34:32 <elliott> Patashu: yes i'm a die hard "true"publican
11:34:40 <elliott> like most brits.
11:36:00 <elliott> > return True >>= `when` Just ()
11:36:01 <lambdabot> <no location info>: parse error on input ``'
11:36:05 <elliott> > (return True >>=) `when` Just ()
11:36:06 <lambdabot> Couldn't match expected type `GHC.Bool.Bool'
11:36:06 <lambdabot> against inferred type ...
11:36:08 <elliott> > (return True >>=) $ `when` Just ()
11:36:09 <lambdabot> <no location info>: parse error on input ``'
11:36:19 <elliott> hmm... yeah, that won't work
12:09:18 <elliott> ais523: hey, do you know an easy way to make C-j indent to the previous line, rather than using the mode's autoindentation?
12:17:48 -!- ais523 has quit (Ping timeout: 252 seconds).
12:23:04 <elliott> :t scanl tail [1,2,3,4]
12:23:05 <lambdabot> Couldn't match expected type `b -> [a]' against inferred type `[a]'
12:23:05 <lambdabot> In the first argument of `scanl', namely `tail'
12:23:05 <lambdabot> In the expression: scanl tail [1, 2, 3, 4]
12:23:17 <elliott> :t scanl
12:23:18 <lambdabot> forall a b. (a -> b -> a) -> a -> [b] -> [a]
12:23:22 <elliott> > scanl f z [a,b,c,d]
12:23:23 <lambdabot> [z,f z a,f (f z a) b,f (f (f z a) b) c,f (f (f (f z a) b) c) d]
12:23:25 <elliott> right
12:33:20 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:43:14 <elliott> @src scanl
12:43:14 <lambdabot> scanl f q ls = q : case ls of
12:43:14 <lambdabot> [] -> []
12:43:14 <lambdabot> x:xs -> scanl f (f q x) xs
12:46:21 * Sgeo keeps forgetting that scanl makes the first item be the 0 thing
12:47:27 <Sgeo> :t scanr
12:47:28 <lambdabot> forall a b. (a -> b -> b) -> b -> [a] -> [b]
12:47:41 <Sgeo> > scanr f z [a,b,c,d]
12:47:42 <lambdabot> [f a (f b (f c (f d z))),f b (f c (f d z)),f c (f d z),f d z,z]
12:49:54 -!- Phantom_Hoover has joined.
12:50:26 <Phantom_Hoover> hello
12:50:27 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
13:16:42 -!- ais523 has joined.
13:17:14 <ais523> elliott: the /correct/ way is to write a minor mode that rebinds the key, but I'm not sure if it qualifies as "easy"
13:18:10 <elliott> ais523: I don't care about the correct way :P
13:18:36 <ais523> elliott: well, it's probably easier than the alternatives
13:18:58 <ais523> and once you've done it once, it'll work from then onwards (you'd be adding a command that'd be M-x control-j-line-up-mode or whatever)
13:19:33 <ais523> what are you trying to do, anyway? doing it with different commands altogether might be the really lazy easy solution
13:20:27 <elliott> ais523: make C-j indent to the previous line, rather than using the mode's autoindentation
13:20:35 <ais523> elliott: no, I mean in more detail
13:20:37 <elliott> I don't see why a minor mode matters when I can just rebind the key directly
13:20:38 <ais523> as in, why do you want to do that?
13:20:44 <elliott> ais523: that /is/ what I want to do
13:20:47 <elliott> it's an editor, that's my end goal
13:20:57 <elliott> I'm trying to change what it means for me to push ctrl and then j
13:20:57 <ais523> elliott: oh, you mean as a permanent editor setting?
13:21:08 <elliott> well, only in haskell-mode, but I believe there's a rebind-in-map thing
13:21:14 <elliott> at least I remember using one once
13:21:33 <ais523> I thought you meant you were trying to edit a file where you wanted to change the meaning of C-j for a while as you were doing something unusual indentation-wise
13:21:41 <ais523> hmm, let me check, I think I've written similar code for intercal-mode
13:27:39 <ais523> elliott: untested: (defun newline-and-indent-relative-maybe () "Insert a newline, then indent like the previous line." (interactive) (newline) (indent-relative-maybe)) (define-key haskell-mode-map "\C-J" 'newline-and-indent-relative-maybe)
13:27:43 <ais523> for your .emacs file
13:29:03 <ais523> seems to require that the haskell code's loaded first, though
13:29:42 <ais523> and I forget the syntax to do that
13:30:01 <ais523> or, hmm, I bet you'd put it in the hook for haskell-mode loading
13:30:59 <ais523> elliott?
13:31:10 <fizzie> Your elips, it was too much for him.
13:31:16 <fizzie> s/ps/sp/
13:31:22 <fizzie> He's lost within Emacs now.
13:40:34 <ais523> oh well
13:40:40 <ais523> he'll probably escape eventually, it isn't TV Tropes
13:41:48 <fizzie> No, we'll just get a final mysterious "it's full of parentheses" transmission.
13:46:44 <elliott> back, sorry
13:46:55 <elliott> ais523: thanks!
13:47:48 <ais523> indent-relative-maybe seems to be what you were asking for for lining up, and the newline's there because you wanted a newline first
13:48:30 <elliott> Yes, I did understand it :P
13:49:59 * elliott wonders what the emacs function that makes the current line empty if it's just whitespace is
13:50:08 <elliott> most C-j functions seem to call it, and that override seems to disable that feature
13:57:01 -!- _Slereah has changed nick to Slereah.
14:31:25 * elliott reads the C committee and Austin Group yell at each other point-by-point
14:31:30 <elliott> However, I don't think [this TR] would be especially useful, and I
14:31:30 <elliott> don't envision it gaining wide acceptance due to the following:
14:31:30 <elliott> awkward names with _s suffix
14:31:30 <elliott> Committee Response:
14:31:30 <elliott> It is less awkward than the posix_ prefix :-)
14:31:45 <elliott> ais523: Can you imagine the C commitee using a /smiley face/?
14:32:03 <ais523> yes
14:32:16 * elliott can't.
14:32:49 <elliott> [[
14:32:49 <elliott> people that want to manipulate strings are probably better off using
14:32:49 <elliott> C++ unless they're concerned with speed in time-critical loops in
14:32:50 <elliott> which they don't want to be doing superfluous checks anyway.
14:32:50 <elliott> Committee Response:
14:32:50 <elliott> We believe this TR is of interest to those that have a large C Legacy code, and do not have the option or want to change to C++.
14:32:53 <elliott> ]]
14:33:02 * elliott can't tell whether the commitee are just being accommodating, or really do see C as a legacy language.
14:33:22 <ais523> elliott: they mean that quite a lot of people have existing C code
14:33:28 <ais523> so it's legacy in that sense
14:34:05 <elliott> ais523: well, yes, but that's the only objection they offer to "just use C++"
14:34:16 <ais523> they only need one objection :)
14:34:24 <elliott> fair enough :P
14:34:42 <elliott> [[ edited out suggestion for additional robustness checking functions,
14:34:42 <elliott> available on request ]]
14:34:42 <elliott> Committee Response:
14:34:42 <elliott> If the author wants to generate a proposal and submit this proposal to WG14, it will be considered.
14:34:45 <elliott> ICE BURN
14:35:14 <elliott> (I wonder where this "generate"-as-author(v.) jargon comes from; the committee are using it a lot here.)
14:35:27 <ais523> the "available on request" implies to me that the suggestion was probably pure trolling
14:35:31 <coppro> that reminds me, I need to write that paper for WG14
14:36:05 <elliott> Dear WG14,
14:36:06 <fizzie> elliott: Perhaps even an ICE BURN
14:36:12 <elliott> Please die.
14:36:16 <elliott> Love,
14:36:20 <elliott> Elliott
14:36:28 <elliott> fizzie: YOU BROKE MY FORMATTING KICK YOUSRELF.
14:36:44 -!- ChanServ has set channel mode: +o fizzie.
14:36:46 -!- fizzie has kicked fizzie fizzie.
14:36:46 -!- fizzie has joined.
14:36:49 <elliott> Thanks.
14:36:55 <elliott> You forgot to -o yourself.
14:37:02 <elliott> Even if you're kicked, it's the spirit of the thing.
14:37:07 <elliott> ais523: I think that it was edited out by the Austin group.
14:37:07 -!- sebbu has quit (Read error: Connection reset by peer).
14:37:12 <elliott> The committee's remarks are in a different font.
14:37:16 <ais523> ah, perhaps
14:37:25 <elliott> (the Austin Group text is monospaced and indented)
14:37:52 -!- sebbu has joined.
14:37:53 -!- sebbu has quit (Changing host).
14:37:53 -!- sebbu has joined.
14:38:47 <elliott> ais523: hmm, ah, it seems like they view the /functions in question/ as primarily useful for legacy code
14:38:52 <elliott> (it's the _s stuff)
14:39:02 <elliott> presumably, they hope newly-written code doesn't need safeguards like that to ensure safety
14:39:03 <ais523> right, the _s stuff
14:39:10 <ais523> Microsoft have been trying to get them to add that for years
14:39:14 <ais523> probably decades now, actually
14:39:26 <elliott> haha, literally everyone is complaining about the "secure" name for them
14:39:40 <elliott> and the committee keep saying "see previous answer", where they went "you're wrong, but we've changed it anyway to shut you up"
14:40:20 <elliott> ais523: I guess they succeeded, since gets was replaced by gets_s
14:40:26 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
14:40:26 -!- kmc has quit (Ping timeout: 240 seconds).
14:40:26 -!- Nisstyre has quit (Ping timeout: 240 seconds).
14:40:27 <elliott> presumably there are others in the same vein
14:40:35 <ais523> elliott: well, removing gets was definitely a good idea
14:40:36 -!- Frooxius has quit (Ping timeout: 240 seconds).
14:40:36 -!- Sgeo has quit (Ping timeout: 240 seconds).
14:40:49 -!- kmc has joined.
14:40:57 <ais523> the "secure" thing was Microsoft propaganda
14:41:09 <ais523> to try to persuade people to write their code in a way incompatible with other compilers
14:41:23 -!- Phantom_Hoover has joined.
14:41:32 -!- Frooxius has joined.
14:42:03 <elliott> I'm scared of this "diagnosed undefined behaviour" concept the thing apparently referred to
14:42:14 <fizzie> Wasn't it just _s for 'safe'?
14:42:19 -!- Sgeo has joined.
14:42:23 <elliott> fizzie: the title was blah blah secure blah
14:42:36 <elliott> I also don't want to know what fopen_s does; adds a "don't read past this many bytes of the filename argument" param?
14:42:44 <ais523> elliott: almost certainly
14:42:48 <ais523> and knowing Microsoft, the mode argument too
14:43:03 <elliott> haha
14:43:22 <elliott> ais523: oh, that was funnier when I thought fopen used a numeric mode like open(2)
14:43:24 -!- Nisstyre has joined.
14:43:32 <fizzie> elliott: It's errno_t fopen_s(FILE** pFile, const char *filename, const char *mode) in Microsoft libs.
14:43:45 <elliott> ais523: if, e.g. you think you might have only two bytes of the mode safe for reading, but it's an int argument
14:43:56 <ais523> fizzie: oh right, the Microsoft versions return errno
14:44:07 <elliott> I doubt the committee versions do
14:44:11 <ais523> I hope they don't
14:44:23 <fizzie> ais523: And it just validates the pointers in case of NULLs, it doesn't have a filename length field.
14:44:29 <ais523> although, if they have incompatible functions to Microsoft's with the same names, Microsoft will probably get annoyed
14:44:51 <ais523> (whereas if that happened with glibc, they'd just add another layer of feature test macros and another few tests in autoconf)
14:45:34 <elliott> .cs is the file extension for C# source code, right?
14:45:41 <ais523> fizzie: well, it's easy enough to make fopen validate nulls
14:45:46 <ais523> elliott: yes
14:46:01 <fizzie> ais523: N1570: "errno_t fopen_s(FILE * restrict * restrict streamptr, const char * restrict filename, const char * restrict mode);" -- it's very similar.
14:46:12 <ais523> ouch
14:47:26 <elliott> ais523: thanks
14:47:36 <elliott> fizzie: haha, it introduces an errno_t?
14:47:39 <ais523> well, in theory you could use anything, but .cs seems most common
14:47:46 <ais523> elliott: errno_t already existed, I think
14:47:49 <ais523> although maybe only in POSIX
14:48:09 <Deewiant> It's not in C99
14:48:39 <fizzie> It's not in C99; it's explicitly defined to be equivalent to "int" in C11.
14:49:09 <elliott> How useful.
14:49:44 <elliott> [[
14:49:52 <elliott> -----------------------------------------------
14:49:53 <elliott> >From Ulrich Drepper
14:49:53 <elliott> The proposed safe(r) ISO C library fails to address to issue completely.
14:49:53 <elliott> The problem with the existing interfaces is that the programmer has to
14:49:53 <elliott> put in a lot of additional effort to make sure the program behaves
14:49:53 <elliott> correctly. In many situations a much simpler code, with all kinds of
14:49:55 <elliott> error checking removed, works equally well and therefore is left out.
14:49:57 <elliott> This is the core of the problem. Code is rather written like
14:49:59 <elliott> [...]
14:50:01 <elliott> Proposing to make the life of a programmer even harder is not going to
14:50:03 <elliott> help. But this is exactly what is proposed. [...]
14:50:04 <fizzie> The rationale in somewhere is that it makes it "semantically" clear that what is returned is an error code.
14:50:05 <elliott> Committee Response:
14:50:07 <elliott> This committee is not addressing lazy programmers.
14:50:09 <elliott> ]]
14:51:41 <ais523> elliott: somehow I think that point might have been made better if it wasn't Drepper trying to make it
14:52:00 <elliott> ais523: it was fairly well-made, I just snipped out all the irrelevant parts
14:52:08 <ais523> ah, I see
14:52:13 <elliott> the actual committee response is
14:52:17 <elliott> [[
14:52:18 <elliott> This committee is not addressing lazy programmers. The committee felt the examples given were a little misleading, and believe that
14:52:18 <elliott> char *p = malloc (3 * NAME_LEN);
14:52:18 <elliott> strcpy_s (p, 3 * NAMELEN, name1); // there will be a constraint violation if malloc failed
14:52:18 <elliott> strcat_s (p, 3 * NAMELEN, name2);
14:52:19 <elliott> strcat_s (p, 3 * NAMELEN, name3);
14:52:21 <elliott> will generate a much safer outcome.
14:52:23 <elliott> In the first example given, if the malloc failed, there would have been
14:52:25 <elliott> undefined behavior, as there would have been if
14:52:27 <elliott> strlen(name1)+strlen(name2)+strlen(name3) > 3*NAMELEN.
14:52:29 <elliott> However,
14:52:31 <elliott> with this simple substitution for the safer functions,
14:52:33 <elliott> there is no undefined behavior. If malloc failed, at the end of this code
14:52:35 <elliott> fragment, p would be NULL, and no undefined actions would have occurred
14:52:37 <elliott> (though the implementation defined constraint violation handler would have
14:52:39 <elliott> been executed three times). If the overall length was too long, then p would
14:52:41 <elliott> point to memory that had the first byte set to 0. This memory could be
14:52:43 <elliott> successfully freed later.
14:52:45 <elliott> ]]
14:52:47 <elliott> which is (a) much more reasonable, (b) much less funny
14:52:51 <elliott> cf. ais523 v. Installing Gentoo with 3 commands
14:53:12 <ais523> oh, I prefer reasonable to funny
14:53:54 <ais523> hmm, I was writing some Neverwinter Nights scripting code recently
14:54:05 <ais523> and the main unusual feature of that language is error values propagating
14:54:28 <ais523> as in, you can pass arbitrary arguments to any of the API functions, and get a return value meaning that something went wrong
14:54:44 <ais523> it makes sense for a game; if someone's missing, then it just ends up skipping the bits of the script that apply to them
14:54:50 <ais523> although I feel a bit weird when I deliberately use that fact
14:55:03 <fizzie> There was a big fight in comp.lang.c on the "library functions should, in addition to testing for NULL, also use some sort of platform-specific functions to check that the pointers point to readable/writable memory" topic.
14:55:33 <fizzie> (The IsBadReadPtr and IsBadWritePtr things mentioned in there.)
14:55:40 <elliott> ais523: as in, f(nil) -> nil?
14:55:44 <ais523> elliott: yep
14:55:46 <elliott> Objective-C has [nil anything] -> nil
14:55:48 <elliott> which is comparable
14:56:07 <ais523> elliott: although instead of nil, it uses 0, "", and OBJECT_INVALID
14:56:10 <elliott> ais523: I think Icon has similar
14:56:15 <ais523> which is a bit uglier
14:56:25 <ais523> OBJECT_INVALID is fine, but 0 and "" aren't because they're sometimes reasonable return values in their own right
14:56:49 <elliott> I love Icon because it's one of the only languages where "x < (y | z)" DTRT
14:57:04 <ais523> elliott: do you love Perl 6 for the same reason?
14:57:24 <elliott> hmm, how is it phrased there?
14:57:59 <ais523> I think it's actually exactly the same
14:58:01 <ais523> not sure, though
14:58:33 * ais523 updates Rakudo
15:01:17 * ais523 fails to update Rakudo
15:01:37 <elliott> ais523: don't worry, you suceed a few minutes ago
15:01:44 <elliott> just wait for Feather
15:01:55 <elliott> *succeed
15:02:20 <ais523> I'm going to retry from scratch
15:08:21 <elliott> ais523: as long as you go back afterwards
15:08:41 <ais523> now I'm thinking about the irony of Rakudo's configure script being written in Perl 5
15:08:49 <ais523> it's perfectly natural, just seems a little out of place
15:09:20 -!- Jafet has joined.
15:18:54 -!- anders has left.
15:19:04 -!- ais523 has quit (Ping timeout: 268 seconds).
15:19:08 -!- ais523_ has joined.
15:22:50 -!- Klisz has joined.
15:25:42 -!- myndzi\ has quit (Read error: Connection reset by peer).
15:26:48 -!- ais523_ has changed nick to ais523.
15:31:31 -!- myndzi has joined.
15:48:31 <kallisti> so what does knowing the partial order of a data type do for me?
15:50:29 <elliott> gives you a partial order
15:51:12 <ais523> <spambot> You must be desperate to know what a father of the groom speech is if you are reading this now.
15:51:44 <elliott> :D
15:51:47 <elliott> i am!
15:51:59 <elliott> "Has he joined Obama in Wonderland where up is down and left is right? What's "fiscally conservative" about voting for every spending measure in sight?"
15:52:00 <ais523> it's simultaneously right on one level and wrong on a different one
15:52:04 <elliott> ais523: Our spambots are quite Republican lately.
15:52:08 <ais523> which is much more interesting than being right on multiple levels
15:52:56 * elliott wonders where all those quotes are coming from; they seem verbatim, but googling them just turns up more spam.
15:55:53 <ais523> probably the spam's out-SEOed the original quote
16:01:00 <coppro> up is down black is white and short is long
16:02:12 <kallisti> @pl (x y z -> z ++ "|" ++ y ++ "|" ++ z)
16:02:13 <lambdabot> (line 1, column 8):
16:02:13 <lambdabot> unexpected ">"
16:02:13 <lambdabot> expecting variable, "(", operator or ")"
16:02:16 <kallisti> @pl (\x y z -> z ++ "|" ++ y ++ "|" ++ z)
16:02:17 <lambdabot> const (ap (++) . (('|' :) .) . (. ('|' :)) . (++))
16:03:48 -!- Ngevd has joined.
16:04:05 <Ngevd> Hello!
16:04:56 <Ngevd> I managed to mention esoteric programming languages in my General Studies exam
16:05:19 <ais523> Ngevd: that's cheating, you can mention /anything/ in a General Studies exam and not lose a significantly significant number of marks
16:05:37 <Ngevd> It's my first A-level exam
16:05:44 <ais523> well, not /really/
16:05:54 <Ngevd> Got Maths exam on Friday, should I continue the pattern?
16:05:56 <ais523> General Studies doesn't count, apart from being embarrassing if you fail it
16:06:06 <ais523> Ngevd: if you reasonably can, I guess
16:06:17 <ais523> it should be harder to slip into Maths than General Studies without looking out of place, though
16:06:21 <kallisti> elliott: right so
16:06:22 <coppro> I wrote my high school English diploma examination on Order of the Stick
16:06:27 <kallisti> what does having a partial order do for you?
16:06:28 <ais523> hmm, is Maths still Module-based?
16:06:33 <Ngevd> One of my friends managed to mention Star Wars in every single GCSE exam
16:06:35 <Ngevd> ais523, yes
16:06:38 <kallisti> aside from giving you a nice Ord instance. :P
16:06:57 <Ngevd> coppro, he, nice
16:08:08 <kallisti> mmmm lentils
16:08:18 <coppro> it as kind of a lame essay though
16:08:21 <coppro> because I didn't have focus
16:08:29 <coppro> oh well, my essay-writing days are mostly over
16:08:47 <coppro> (and I can still write pages about rules ;) )
16:23:41 <Phantom_Hoover> <Ngevd> One of my friends managed to mention Star Wars in every single GCSE exam
16:23:57 <Phantom_Hoover> Wow, he must have a lot of time on his hands.
16:23:57 <Ngevd> That he sat, of course
16:24:09 <Ngevd> He didn't mention it in the ones he didn't sit
16:24:52 <Phantom_Hoover> Also, one of my folio pieces for Higher English was "Comic Sans: a Sad Indictment of Our Times".
16:26:48 <shachaf> elliott: Success(-ish)!
16:28:29 * Phantom_Hoover → goddamn STEP preparation.
16:37:10 <elliott> shachaf: Ish! The best kind.
16:48:16 <shachaf> elliott: I think I'll just let you take over.
16:48:54 <elliott> shachaf: I apologise for bringing up Char8 :(
16:49:22 <shachaf> elliott: You can make up for it by accusing nexion of being racist, like a certain member of #haskell would.
16:50:06 <Sgeo> ...what?
16:50:36 <elliott> Sgeo: People who say they "don't need Unicode" are usually under the influence of some rather heavy cultural bias.
16:50:45 <elliott> shachaf: You'd think Haskell users would appreciate the value of using types that say what you mean.
16:51:38 <Sgeo> Almost every programming language which has keywords has those keywords in English
16:51:39 <Sgeo> :/
16:51:44 <Sgeo> Standard library names, etc.
16:52:00 <elliott> Sgeo: Maybe you shouldn't try and comment on discussions you only see the behind-the-back commentary on?
16:52:02 <shachaf> elliott: You'd be surprised!
16:52:13 <elliott> God dammit mm_freak!
16:52:34 <elliott> shachaf: Hey, if this was SO, I would be getting rep for my pain.
16:52:41 * elliott isn't getting rep for his pain.
16:52:53 <Sgeo> elliott, I am present in #haskell , my comment was somewhat tangential, I guess.
16:53:11 <elliott> Sgeo: I'm just plain not sure what the relevance is, then.
16:54:12 <Sgeo> That there does seem to be heavy cultural bias in ... programming. Although not in such a way that it affects end-users the way a failure to do text right does.
16:54:38 <shachaf> elliott: Sure you are, elliott++
16:55:00 <elliott> Yessss
16:55:29 <elliott> Oh, wait, why am I arguing with mauke, I distinctly remember him being an ASCII-pushing traditionalist.
16:55:36 * elliott has little encyclopedia entries for everybody in his head.
16:55:36 <shachaf> 19:54 < nexion> Sgeo, yeah, I use that for the Unicode sections of the stream
16:55:47 <elliott> All negative, who needs to remember good things about people.
16:55:59 <shachaf> It's good to hear that the stream has "Unicode sections".
16:56:22 <shachaf> But of course the rest of it is ASCII.
16:56:26 <Sgeo> Presumably, the word POST or GET or whatever never contains non-ASCII characters, is his point?
16:56:27 <elliott> shachaf: They only need ASCII!
16:57:02 <shachaf> elliott: "heavily optimised"
16:57:11 <elliott> shachaf: I saw a blog post with #s in it once.
16:57:17 <elliott> That's heavily optimised enough for me, tyvm.
16:57:22 <shachaf> I wrote a program wih #s in it once.
16:57:28 <shachaf> > ord '#'
16:57:29 <lambdabot> 35
16:57:39 <elliott> shachaf: (Is Text not actually fast?)
16:57:43 <elliott> I mean, the structure sucks, but.
16:57:58 <shachaf> Not nearly as fast as ByteString when you're processing ASCII in certain cases.
16:58:06 <shachaf> At least, when I last tried it.
16:58:19 <elliott> shachaf: Well, who gives a shit; ideological purity trumps all.
16:58:27 <shachaf> Sure.
16:58:36 <shachaf> ...In some cases.
16:58:52 <shachaf> Like "why can't I pattern-match ByteStrings?".
16:59:05 <shachaf> It's 08:58, by the way.
16:59:18 <elliott> <mauke> I don't care how "heavily optimised" Text is; it's got stupidity built in
16:59:21 <Deewiant> Use view patterns and uncons
16:59:22 <elliott> I wonder if the "stupidity" is Unicode.
16:59:25 -!- Ngevd has quit (Read error: Connection reset by peer).
16:59:47 -!- Ngevd has joined.
16:59:55 <Vorpal> wow I'm somehow still connected
16:59:58 <Vorpal> which is strange
17:00:07 <Vorpal> since the computer suspended to disk
17:00:33 <shachaf> elliott: Not when it's O(n/k)!
17:00:54 <Vorpal> (I didn't notice the power cable had been disconnected and I wasn't using the laptop at the time, I only noticed when I heard the "burp" from the dvd drive that it makes while suspending to disk)
17:00:59 <elliott> shachaf: What's multiplication, man.
17:01:29 <fizzie> "View patterns an unicorns" sounded exciting.
17:01:32 <fizzie> Then it was just uncons.
17:01:43 <shachaf> elliott: Hey, I want a type to represent a vector of length 7.
17:01:49 <Deewiant> #define unicorns uncons
17:01:50 <Deewiant> Go wild
17:01:52 <Sgeo> :t uncons
17:01:53 <lambdabot> Not in scope: `uncons'
17:01:53 <shachaf> But access to it has to be O(1), not O(7).
17:01:55 <shachaf> What do I do?
17:01:59 <Deewiant> ?hoogle uncons
17:02:00 <lambdabot> Data.ByteString.Char8 uncons :: ByteString -> Maybe (Char, ByteString)
17:02:00 <lambdabot> Data.ByteString.Lazy.Char8 uncons :: ByteString -> Maybe (Char, ByteString)
17:02:00 <lambdabot> Data.ByteString uncons :: ByteString -> Maybe (Word8, ByteString)
17:02:10 <ais523> shachaf: just divide O by 7
17:02:16 <fizzie> ?hoogle snoc
17:02:16 <elliott> shachaf: newtype Vec a = Vec (a,a,a,a,a,a,a)
17:02:16 <lambdabot> Data.ByteString.Char8 snoc :: ByteString -> Char -> ByteString
17:02:17 <lambdabot> Data.ByteString.Lazy.Char8 snoc :: ByteString -> Char -> ByteString
17:02:17 <lambdabot> Data.ByteString snoc :: ByteString -> Word8 -> ByteString
17:02:22 <elliott> shachaf: There's only one field, so it must be O(1).
17:02:38 <Vorpal> O(7) lol
17:02:39 <shachaf> Also I want this to work for any value of 7.
17:02:52 <Deewiant> elliott: But if he wants O(1) access to all the elements, he needs 7 fields, so it's O(7) for the whole thing again.
17:03:00 <elliott> Deewiant: Trade-offs.
17:03:04 <shachaf> Deewiant has a point.
17:03:13 <Sgeo> Can view-patterns be used to hide an equality check?
17:03:22 <Sgeo> As a pattern match
17:03:24 <elliott> shachaf: I was going to say something.
17:03:42 <shachaf> Sgeo: The point is that writing the ByteString that represents the ASCII "POST" is awkward.
17:03:57 <Vorpal> <Deewiant> elliott: But if he wants O(1) access to all the elements, he needs 7 fields, so it's O(7) for the whole thing again. <-- couldn't you work with several at once?
17:03:58 <Sgeo> f ((==blah) -> True) = whatever
17:04:11 <elliott> shachaf: To make up for my long spiel about monads, I wrote a long spiel about applicatives.
17:04:12 <shachaf> Sgeo: f blah | isAscii "POST" blah = ...
17:04:22 <elliott> Vorpal: Most people don't have 7-core processors
17:04:39 <Vorpal> elliott, indeed, I have 8 core (including the hyper threading)
17:04:43 <Sgeo> shachaf, I'm not going for decency here
17:04:47 <shachaf> elliott: Why don't you write a long spiel about jQuery?
17:04:49 <Sgeo> I'm going for abuse of view patterns
17:04:51 <elliott> Vorpal: You're bourgeois.
17:04:56 <Vorpal> elliott, heh
17:05:06 <fizzie> Vorpal: A 7-core processor is just an 8-core prosessor with one snuffed core.
17:05:19 <elliott> shachaf: What is there to say? It is art; it is perfection. It's the alpha and the qoppa.
17:05:20 <Vorpal> elliott, anyway, what about stuffing multiple values into a single SSE or AVX register
17:05:22 <Sgeo> Would my pattern work?
17:05:24 <elliott> jQuery is.
17:05:27 <Vorpal> or even into a normal machine word
17:05:39 <elliott> Vorpal: You have to stuff all 7 of them
17:05:39 <shachaf> elliott: I thought it was a monad.
17:05:41 <elliott> So O(7) again.
17:05:49 <elliott> shachaf: It's an ArrowApply.
17:05:56 <Vorpal> elliott, how large is each? And once you stuffed them like that you could keep them like that surely
17:06:11 <Vorpal> and you can load an entire SSE register with one instruction anyway
17:06:15 <Vorpal> (same for writing it out)
17:06:38 <fizzie> Isn't AMD Phenom X3 just those samples of Phenom X4 where one of the cores failed the tests?
17:06:44 <Vorpal> I believe so
17:06:44 <shachaf> elliott: I enjoy how this web page has a commutative diagram on it: http://www.windley.com/archives/2009/01/jquery_monads_and_functional_programming.shtml
17:07:23 <elliott> shachaf: The T^2 represents elements on the page.
17:07:29 <elliott> shachaf: The \mu is jQuery.
17:07:33 <Vorpal> fizzie, I have like the best i7 you can get without intel calling it extreme or whatever they do to those supposed to be more stable for overclocking.
17:07:33 <shachaf> elliott: Ooh, more! Of a slightly different variety: http://weblogs.asp.net/bleroy/archive/2010/06/29/how-i-understood-monads-part-2-2-have-we-met-before.aspx
17:07:38 <elliott> shachaf: T_\eta is the CSS selector you're using.
17:08:03 <elliott> "Oh yeah, C#4’s dynamic is a monad
17:08:03 <elliott> Thanks to the new dynamic keyword in C#4, it is now possible to ask the C# compiler to relax compile-time type checking and instead resolve the members of some objects at runtime.
17:08:03 <elliott> Here’s a somewhat trivial example:
17:08:03 <elliott> dynamic foo = new {
17:08:03 <elliott> bar = "baz"
17:08:05 <elliott> };
17:08:07 <elliott> Console.WriteLine(foo.bar);"
17:08:09 <elliott> Very monadic!
17:08:22 <elliott> The wrapping is magic and the binding is baked into the semantics of the language.
17:08:31 <Vorpal> fizzie, if they still do that, I don't remember
17:08:36 <Vorpal> fizzie, (it is a sandy bridge)
17:08:36 <elliott> shachaf: Also, I see no diagrams on that second one.
17:08:44 <shachaf> elliott: It's true. I meant "more suffering".
17:08:57 <fizzie> Vorpal: IIRC the "Extreme Edition" chips do also have some bumped-up specs in addition to overclockability.
17:09:05 <Vorpal> possibly
17:09:17 <elliott> shachaf: I'm glad that guy acknowledges Microsoft are evil.
17:09:19 <Vorpal> fizzie, mine is a normal edition sandy bridge i7 at 3.4 GHz
17:09:25 <elliott> In his blog title.
17:09:29 <Vorpal> fizzie, which is pretty extreme anyway
17:09:33 <elliott> Along with an evil-looking pumpkin.
17:09:36 <elliott> I think he has Microsoft issues.
17:09:49 <fizzie> Vorpal: I think for Sandy Bridge they just went with a "K" or "X" suffix in the model number for the "extreme" ones.
17:09:58 <Vorpal> fizzie, ah possibly
17:10:15 <elliott> shachaf: Heyy, cheater isn't here, I can complain about him wasting space in #haskell with impunity! Well, relative impunity.
17:10:42 <shachaf> Just wait until #-blah hears that quote!
17:10:55 <Vorpal> fizzie, I believe one of the labs at university have those.
17:10:55 <elliott> shachaf: Don't.
17:11:08 <shachaf> elliott: Don't worry, I'm leaving anyway.
17:11:08 <Vorpal> fizzie, it also have pretty old nvidia quadro cards for some reasons.
17:11:11 <Vorpal> reason*
17:11:20 <elliott> shachaf: Do you remember when cheater tried to get me banned from #haskell because I pointed him to LYAH?
17:11:26 <shachaf> No.
17:11:28 <elliott> That was fun.
17:11:51 <elliott> <ben_m> cheater, he took an arrow in the knee
17:11:51 <elliott> <cheater> heh.
17:11:58 <elliott> Phantom_Hoover: Is there a cure for crying.
17:12:15 <fizzie> Vorpal: Apparently the i7-2600K in fact only differs from the i7-2600 in that it has some unlocked overclocking settings; plus it *doesn't* do some things. (TXT, the trusted execution thing; VT-d, the IO virtualization thing; and vPro, the remote management thing.)
17:12:24 <shachaf> elliott: Yes: Conveniently, the cure is crying.
17:12:29 <Phantom_Hoover> elliott, anti-onion.
17:12:41 <elliott> Phantom_Hoover: Sounds explosive.
17:12:56 <fizzie> Vorpal: Anyway, they seem to have gotten a Core i7-3930K/-3960X six-physical-cores models out now, too.
17:12:57 <Phantom_Hoover> Yes, with tears.
17:12:59 <Vorpal> the only good arrow to the knee joke I seen so far was from a LP of skyrim where some NPC placement bugged out and, as the player said: "took a stair to the knee"
17:13:09 <shachaf> The Anti-onion Router, also known as "tar".
17:13:17 <Vorpal> fizzie, heh
17:13:20 <shachaf> Did you know /bin/tar sends everything you do to the NSA immediately?
17:13:26 <elliott> Only GNU tar.
17:13:29 <Vorpal> fizzie, I'm pretty sure those weren't around when I bought mine
17:13:57 <Vorpal> fizzie, why not VT-d?
17:14:01 <Vorpal> fizzie, that makes no sense
17:14:02 <Vorpal> hm
17:14:26 <Vorpal> fizzie, I believe the one I have does VT-d but my mobo doesn't or something like that
17:18:27 <fizzie> Vorpal: Probably they've figured out there's not much overlap between overclockers and people who need "enterprise" features. Though I've never quite figured out the "let's disable features" decisions.
17:19:48 <elliott> It's like the Pokemon versions.
17:19:53 <elliott> Gotta buy them both to have all the feechurez.
17:20:03 <ais523> heh
17:22:21 <Vorpal> elliott, I wonder if there are extreme edition xenons?
17:22:27 <Vorpal> probably not
17:22:38 <Vorpal> anyway I would quite like to use VT-d
17:23:21 <Vorpal> possibly
17:23:26 <Vorpal> not sure what the point would be
17:23:52 <Vorpal> would be nice if you could use this for the GPU or such to do fast 3D in qemu
17:24:11 <Vorpal> sounds unlikely to work though
17:24:24 <Vorpal> and would not work at all with windowed mode
17:26:41 <Phantom_Hoover> Hmm, what do IBM actually /do/ these days?
17:26:55 <Phantom_Hoover> I can't actually think of anything I associate with them.
17:26:56 <Ngevd> Chips
17:27:09 <Phantom_Hoover> Not any chips I've heard of, at least.
17:27:44 <Ngevd> They do the CPU for Wii's
17:28:20 <Ngevd> And XBox 360's
17:28:39 <Vorpal> and main frames
17:28:45 <Phantom_Hoover> Main frames.
17:28:48 <Vorpal> yes
17:28:59 <Ngevd> They co-designed the PS3 CPU
17:29:33 <Phantom_Hoover> Vorpal, main frames.
17:29:50 <Vorpal> Phantom_Hoover, yes. They are still made
17:30:21 <Phantom_Hoover> Main... frames.
17:30:33 <Vorpal> Phantom_Hoover, as opposed to minicomputers
17:30:56 <elliott> Phantom_Hoover: Mainframes, CPUs.
17:31:05 <elliott> Supercomputers.
17:31:10 <Vorpal> oh yes, that too
17:31:10 <elliott> Bad software.
17:31:20 <elliott> Research.
17:31:45 <Ngevd> AIs on quiz shows
17:31:50 <Phantom_Hoover> IBM, a bad software company.
17:31:53 <Vorpal> Ngevd, snap you just beat me to that
17:32:05 <Phantom_Hoover> Makers of the finest bad software.
17:32:33 <Vorpal> "Virtually all console gaming systems of the latest generation use microprocessors developed by IBM. The Xbox 360 contains a PowerPC tri-core processor, which was designed and produced by IBM in less than 24 months.[56] Sony's PlayStation 3 features the Cell BE microprocessor designed jointly by IBM, Toshiba, and Sony."
17:32:35 <Vorpal> eh
17:32:38 <Vorpal> virtually all?
17:32:41 <Vorpal> 2 out of 3?
17:32:52 <Phantom_Hoover> The Wii uses an IBM chip too.
17:33:02 <Vorpal> oh right, says so much further down
17:33:07 <Vorpal> so all then
17:33:12 <Vorpal> not just virtually all
17:33:58 <Vorpal> "Broadway is the codename of the 32-bit Central Processing Unit (CPU) used in Nintendo's Wii video game console. It was designed by IBM, and is currently being produced using a 90 nm SOI process." <-- 90 nm. Wow that is quite a way behind PC CPUs
17:34:52 <Phantom_Hoover> You'd almost think the technology was six years old or something.
17:35:11 <Vorpal> Phantom_Hoover, hm weren't Intel at like 60 nm around then?
17:35:16 <elliott> s/PC CPUs/x86/
17:35:19 <Vorpal> elliott, well yes
17:35:25 <elliott> Intel and AMD x86, even.
17:35:30 <Vorpal> indeed
17:35:31 <elliott> "The 90 nm process refers to the level of CMOS process technology that was reached in the 2002–2003 timeframe, by most leading semiconductor companies, like Intel, AMD, Infineon, Texas Instruments, IBM, and TSMC."
17:35:35 <Ngevd> Game Cube used IBM chips
17:35:45 <elliott> 65 nm — 2006
17:35:49 <Vorpal> elliott, Intel and AMD stands for virtually all consumer x86 CPUs used in desktops and laptops though
17:35:53 <elliott> 2011-6 = 2005.
17:35:55 <elliott> So not really.
17:36:05 <Ngevd> elliott, what year is it?
17:36:09 <Vorpal> elliott, hm okay
17:36:22 <Ngevd> Nevermind
17:36:30 <Vorpal> Ngevd, 2012?
17:36:37 <Ngevd> My god.
17:36:40 <Vorpal> bbl
17:37:11 <elliott> Jan 2012.
17:37:24 <elliott> It's not not-2011 for a while now.
17:37:26 <Phantom_Hoover> The Wii was released in late 2006, but since they obviously couldn't use state-of-the art chips at the time of release, I think it's fair to say the underlying technology is all early- to mid-2006 at the latest.
17:37:59 <elliott> Nintendo are really impressively durable with their platforms.
17:38:12 <elliott> At least compared to today's cycles.
17:38:38 <Vorpal> elliott, come on, how old is the PS3? And the xbox 360?
17:38:56 <Phantom_Hoover> Do you know the first thing about either?
17:39:04 <Vorpal> Phantom_Hoover, that they are better than wii?
17:39:10 <elliott> lol
17:39:24 <elliott> Vorpal: because they have a better CPU, right?
17:39:25 <Phantom_Hoover> There are about ten different models of each, which subdivide into about three or four generations of hardware.
17:39:43 <Vorpal> elliott, better hardware at least, not sure if it is the CPU or the GPU (if they even have separate GPUs?)
17:39:59 <Vorpal> Phantom_Hoover, hm. Right.
17:40:15 <elliott> Phantom_Hoover: And Sony aren't exactly announcing the next generation of the PlayStation to be PS3+0.5, like Nintendo have with the Wii U.
17:40:44 <Ngevd> Ah yes, that reminds me.
17:41:00 <Ngevd> I need to correct the genetive of "nemo" from "nullius" to "neminis"
17:41:18 <elliott> Vorpal: I have no comment.
17:42:05 <Vorpal> I believe the PS4 and whatever the next xbox will be called are supposed to be showed at some expo later this year. Not sure if that is confirmed or just rumors.
17:42:09 <Phantom_Hoover> Vorpal, surely even /you/ understand budgeting.
17:42:10 <Vorpal> rumours*
17:42:24 <Vorpal> Phantom_Hoover, yes? What about it?
17:42:39 <Vorpal> Phantom_Hoover, you mean the separate GPU thingy?
17:43:43 <Ngevd> Bye
17:43:47 -!- Ngevd has quit (Quit: Goodbye).
17:43:53 <Vorpal> well, I need to leave as well. Cya.
17:44:05 * Phantom_Hoover notes that according to WP a low-end XBox is actually cheaper than a Wii at launch price.
17:44:53 <elliott> Phantom_Hoover: Those were introduced later, though.
17:45:05 <elliott> Presumably due to market pressures the Wii placed upon consoles.
17:45:34 <Phantom_Hoover> And indeed a Wii is cheaper at current prices.
17:46:12 <elliott> Phantom_Hoover: That's not surprising; at the end of its cycle Nintendo hardware can be bought for about 3 pennies and a piece of fluff.
17:46:39 <Phantom_Hoover> I presume you have done this regularly.
17:46:47 <elliott> Phantom_Hoover: You know not the true face of England.
17:47:07 <Phantom_Hoover> Which makes it all the more amazing that you haven't played any SSB games despite them being the best.
17:50:05 <elliott> Phantom_Hoover: Also the true face of England.
17:50:14 * elliott doesn't even own a Wii.
17:50:27 <Phantom_Hoover> Tut tut tut?
17:50:30 <Phantom_Hoover> Pirate one.
17:50:47 <elliott> Yes.
17:51:19 <elliott> Phantom_Hoover: The solution is clear: a Hexham-Helsinki SSB battle???? For friendship diplomacy. I will supply the friendship,
17:51:42 <Phantom_Hoover> OK.
17:51:45 <Phantom_Hoover> Which SSB.
17:52:25 <elliott> Phantom_Hoover: All... of them... simultaneously?
17:52:31 <elliott> Controlled by the same controller.
17:52:40 <elliott> Polyglot gaming.
17:52:51 <Phantom_Hoover> I don't think you can use an N64 controller with a Wii but wait
17:53:03 <elliott> Phantom_Hoover: There's a "classic" controller for the Wii
17:53:06 <elliott> It's just a matter of software.
17:53:16 <Phantom_Hoover> I know this.
17:53:23 <elliott> EXCUSE ME IM WII EXPERT
17:53:31 <elliott> Phantom_Hoover: Oh my god polyglot gaming of two unrelated games would be the most amazing thing ever.
17:53:33 <elliott> I have a new life goal.
17:55:09 <Deewiant> Hmm, unrelated games hasn't been done as far as I'm aware
17:55:32 <elliott> Deewiant: What has been done by implication?
17:55:37 <Deewiant> Some set of Mega Mans, Mega Man Xs, Final Fantasies, and Marios has been done, at least
17:55:43 <elliott> Neat
17:55:44 <Deewiant> (Those are the ones I recall having seen)
17:55:57 <Deewiant> And this is TAS, not sure if that counts
17:56:04 <elliott> In realtime?
17:56:05 <elliott> Right.
17:56:09 <elliott> Well, that makes it "easier". :p
17:56:47 <Deewiant> Evidently TASVideos has a category for it: http://tasvideos.org/Movies-C2020Y.html
17:56:54 <Deewiant> And there's no others than the ones I remembered
18:00:11 <fizzie> I remembered the Mega Man and the Mario ones, but not that Final Fantasy set.
18:01:09 <fizzie> Didn't some dude play Mega Man X and X2 in realtime?
18:01:29 <fizzie> Or maybe I'm just recalling that TAS thing.
18:01:43 <Deewiant> I don't recall any non-TAS.
18:02:26 <fizzie> Can't find one, so maybe it was just the TAS.
18:02:38 <fizzie> Anyway, there was that "Mario 64 with feet", you never know what people do.
18:03:36 <ais523> fizzie: that TAS has been improved since
18:03:42 <ais523> X1, X2, X3 300%
18:03:55 <ais523> there have been other multigame runs; most are worse than the original, that one's better though
18:04:20 <fizzie> Yes, I can see that. I probably just saw the X1/X2 one.
18:04:27 <fizzie> Also "300%" sounds silly.
18:04:35 <ais523> well, 100% * 3
18:05:52 <elliott> fizzie: you must hate cpu metres
18:06:02 <elliott> ~GOODE NIGHTE FRENS~
18:07:04 <Deewiant> Not all CPU metres use 100% = one CPU
18:07:39 <Deewiant> Or whatever the unit should be called, 100% = one relatively traditional single-threaded core
18:10:18 -!- elliott has quit (Ping timeout: 248 seconds).
18:41:41 <fizzie> Aw, "List of lists" just goes to Portal:Contents/Lists. I was hoping it would be called that.
18:42:06 <fizzie> At least there's the "List of lists of lists".
18:52:10 -!- ais523 has quit (Remote host closed the connection).
18:59:41 -!- azaq23 has joined.
18:59:52 -!- azaq23 has quit (Max SendQ exceeded).
19:00:50 -!- azaq23 has joined.
19:01:21 <Vorpal> <Phantom_Hoover> I don't think you can use an N64 controller with a Wii but wait <-- you could rig up some levers or such to control several physical controllers at once?
19:01:26 <Vorpal> or one in each hand?
19:04:40 <Phantom_Hoover> No, I was wondering if Nintendo offered the original Super Smash Bros. on their internet service.
19:05:11 <Phantom_Hoover> Aha, it is.
19:05:38 <Phantom_Hoover> So you could play all three SSB games at once on a Wii, at least.
19:06:13 <Phantom_Hoover> And yes, indeed, you can use a GameCube controller for all three.
19:06:59 <Vorpal> Phantom_Hoover, I was suggested an alternative solution
19:07:20 <Phantom_Hoover> It is an inferior solution.
19:07:28 <Vorpal> Phantom_Hoover, well yes
19:07:56 -!- monqy has joined.
19:12:35 <itidus20> you can emulate it of course
19:16:25 -!- Ngevd has joined.
19:20:41 -!- Patashu has joined.
19:21:05 <Ngevd> Hello
19:23:41 -!- oerjan has joined.
19:24:29 -!- oerjan has set topic: The Return of the JIT | http://codu.org/logs/_esoteric/.
19:35:25 -!- Gregor has set topic: The Return of the JITchards | http://codu.org/logs/_esoteric/.
19:35:52 <oerjan> what's a JITchard
19:36:12 <oerjan> is it a richard with a speech impediment
19:36:39 <Gregor> JITchards
19:36:49 <Gregor> It's the JIT I wrote for IOCCC
19:36:53 <oerjan> aha
19:37:37 <Ngevd> How did that go?
19:38:06 <oerjan> JITchards, by Jegoj
19:40:03 <oerjan> :t op
19:40:04 <lambdabot> forall o n. (Newtype n o) => (o -> n) -> n -> o
19:40:21 <oerjan> :t rop
19:40:22 <lambdabot> Not in scope: `rop'
19:40:24 <oerjan> :t opr
19:40:25 <lambdabot> Not in scope: `opr'
19:40:46 <Sgeo> op?
19:41:04 <Sgeo> @hoogle op
19:41:04 <lambdabot> System.IO openBinaryFile :: FilePath -> IOMode -> IO Handle
19:41:04 <lambdabot> GHC.IO.Handle.FD openBinaryFile :: FilePath -> IOMode -> IO Handle
19:41:04 <lambdabot> System.IO openBinaryTempFile :: FilePath -> String -> IO (FilePath, Handle)
19:41:34 <oerjan> something like that from simplereflect
19:41:50 <oerjan> which hoogle doesn't cover afaik
19:44:51 <oerjan> it's op, apparently
19:47:50 <oerjan> :t Debug.SimpleReflect.op
19:47:51 <lambdabot> Couldn't find qualified module.
19:47:57 <oerjan> :t fun
19:47:58 <lambdabot> forall a. (SimpleReflect.FromExpr a) => String -> a
19:48:02 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
19:48:06 <oerjan> :t SimpleReflect.op
19:48:07 <lambdabot> Not in scope: `SimpleReflect.op'
19:48:34 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds).
19:49:13 <oerjan> one of lambdabot's great mysteries: how to qualify a given module identifier, if it's even possible.
19:49:17 <oerjan> :t expr
19:49:18 <lambdabot> Expr -> Expr
19:49:38 <oerjan> :t f
19:49:39 <lambdabot> forall a. (SimpleReflect.FromExpr a) => a
19:50:16 <oerjan> :k (SimpleReflect.FromExpr a) => a
19:50:17 <lambdabot> Not in scope: type constructor or class `SimpleReflect.FromExpr'
19:50:24 <oerjan> :k (FromExpr a) => a
19:50:25 <lambdabot> Not in scope: type constructor or class `FromExpr'
19:51:04 <oerjan> :t f == "a"
19:51:05 <lambdabot> No instance for (SimpleReflect.FromExpr [Char])
19:51:05 <lambdabot> arising from a use of `f' at <interactive>:1:0
19:51:05 <lambdabot> Possible fix:
19:53:00 <oerjan> ah it's lambdabot's show package, not all simplereflect.
20:04:24 -!- Taneb has joined.
20:05:28 -!- Ngevd has quit (Ping timeout: 276 seconds).
20:05:36 -!- Phantom_Hoover has joined.
20:08:29 -!- Taneb has quit (Ping timeout: 240 seconds).
20:14:42 -!- pikhq has quit (Ping timeout: 240 seconds).
20:14:45 -!- pikhq_ has joined.
20:23:42 -!- Vorpal has quit (Ping timeout: 240 seconds).
20:25:27 <kallisti> oh my god why are ice cream waffles so good.
20:25:58 <shachaf> It's not that ice cream waffles are so good, it's that everything else is so bad.
20:26:20 <shachaf> Ice cream waffles are the clue left to us by God, indicating that things are so much worse than they could be.
20:26:55 <kallisti> wat
20:27:03 <kallisti> no I'm pretty sure ice cream waffles are just really good.
20:27:10 <kallisti> like... it's like having a waffle cone
20:27:19 <kallisti> but warm and more like an actual waffle
20:27:21 <kallisti> because it is
20:27:23 <oerjan> <kallisti> aside from giving you a nice Ord instance. :P <-- Ord instances are supposed to be _total_ orders (ignoring bottom/nontermination)
20:27:30 <kallisti> oerjan: ah okay.
20:27:44 <monqy> who makes a bottom/nontermination Ord instance
20:28:03 * oerjan swats monqy -----###
20:28:09 <monqy> lists?
20:28:17 <oerjan> well of course.
20:28:18 <shachaf> kallisti: I wouldn't know. I've nevre had an ice cream waffle.
20:28:32 <oerjan> [1..] <= [1..] has no chance of terminating.
20:28:38 <kallisti> monqy: if you instead elect to use _|_ to mean false
20:28:40 <monqy> :'(
20:28:41 <kallisti> and True to mean True
20:29:00 <kallisti> then you can define _|_ to not equal anything.
20:29:02 <kallisti> :>
20:29:10 <monqy> :'( :'( :'(
20:32:19 <Gregor> Dafuq is an ice cream waffle?
20:32:43 <Gregor> Unless you're just talking about waffles with ice cream.
20:34:04 <kallisti> I am
20:34:05 <kallisti> like
20:34:08 <kallisti> waffles
20:34:09 <kallisti> then
20:34:11 <kallisti> put ice cream on them.
20:34:14 <kallisti> ice cream waffle
20:34:22 <Sgeo> oerjan, can't a partial order be said to be a total order ignoring bottom?
20:34:28 <Sgeo> Oh, I guess circular stuff
20:35:06 <Gregor> Logically an ice cream waffle should be a waffle made of ice cream
20:35:07 <oerjan> Sgeo: no, you can have x <= y and y <= x both being False
20:35:09 <Gregor> Except that that is nonsense.
20:35:12 <oerjan> no bottom involved
20:36:08 <oerjan> partial orders have no circularity, they still have transitivity.
20:41:13 -!- GreaseMonkey has joined.
20:44:29 -!- pikhq_ has quit (Ping timeout: 240 seconds).
20:44:32 -!- pikhq has joined.
20:49:55 -!- pikhq_ has joined.
20:50:02 -!- pikhq has quit (Ping timeout: 252 seconds).
21:14:46 -!- Klisz has joined.
21:15:36 <Phantom_Hoover> How have I not watched all the French and Saunders clips on YouTube by now.
21:20:43 -!- pikhq has joined.
21:21:31 -!- pikhq_ has quit (Ping timeout: 276 seconds).
21:32:53 -!- Patashu has quit (Ping timeout: 252 seconds).
21:48:24 <itidus20> "<oerjan> Sgeo: no, you can have x <= y and y <= x both being False" this is weird.
21:49:13 <monqy> never heard of a partial order?
21:49:47 <itidus20> not before today
21:50:02 <itidus20> im on the wiki page now
21:50:09 -!- Ngevd has joined.
21:50:24 <shachaf> Partial ordering is the best kinds of ordering.
21:50:33 <shachaf> Other than well-ordering.
21:50:37 <shachaf> And a semilattice.
21:50:52 <Ngevd> Hello
21:51:33 <monqy> i'm rather partial to it myself
21:53:03 <oerjan> itidus20: a good example is set inclusion. neither of {1,2} and {1,3} is contained in the other.
21:53:18 <Phantom_Hoover> shachaf, what about pizza ordering?
21:53:33 <shachaf> Phantom_Hoover: That's just lazy.
21:53:52 <shachaf> Go to the pizzeria yourself if you want pizza so much.
21:53:58 <itidus20> cowabunga
21:54:51 <itidus20> american adaptions of italian food described by anthropomorphic turtles using surfer terminology
21:55:00 -!- Zuu has quit (Ping timeout: 252 seconds).
21:55:28 <itidus20> in a japanese animated adaption of an american comic
21:56:02 <monqy> the world truly is beautiful
21:56:48 <shachaf> @google is the world beautiful
21:56:49 <lambdabot> http://www.theworldisbeautiful.com/
21:56:49 <lambdabot> Title: the world is beautiful
21:57:00 <shachaf> Hotels and restaurants that match your preferences:Luxurious and Relaxing Hotels in Buenos Aires
21:57:12 <shachaf> Truly.
21:58:13 <Ngevd> Goodnight
21:58:15 -!- Ngevd has quit (Quit: Goodbye).
22:03:24 <itidus20> i have pondered about the mysteries of order before
22:03:50 <monqy> mysteries?
22:03:53 <itidus20> but without breaking any ground
22:04:12 <itidus20> uh.. now i suppose i have to try to remember
22:07:02 <Sgeo> When I was a kid, I used to ponder stuff about infinities and alternate number lines and numbers defined such that its absolute value < 0
22:08:53 -!- Patashu has joined.
22:09:55 -!- itidus20 has quit (Ping timeout: 252 seconds).
22:12:50 -!- Zuu has joined.
22:12:50 -!- Zuu has quit (Changing host).
22:12:51 -!- Zuu has joined.
22:17:06 * Phantom_Hoover → sleep
22:17:07 -!- Phantom_Hoover has quit (Quit: Leaving).
22:38:00 -!- itidus21 has joined.
22:38:52 <itidus21> `searchlog itidus list
22:39:34 <HackEgo> No output.
22:40:18 -!- pikhq_ has joined.
22:40:24 -!- pikhq has quit (Ping timeout: 248 seconds).
22:46:50 <itidus21> about order, i recall once not so long ago trying to figure out something wrong with my conception of lists.. but i cant remember exactly what my thought was
22:47:31 <itidus21> something about the [first] [??] [??] [last]
22:49:59 <oerjan> well that doesn't look obviously wrong so far :P
22:51:40 <kallisti> @src first
22:51:41 <lambdabot> Source not found. Sorry about this, I know it's a bit silly.
22:51:48 <oerjan> kallisti: Arrow method
22:51:51 <oerjan> @src Arrow
22:51:52 <lambdabot> class Arrow a where
22:51:52 <lambdabot> arr, pure :: (b -> c) -> a b c
22:51:52 <lambdabot> (>>>) :: a b c -> a c d -> a b d
22:51:52 <lambdabot> first :: a b c -> a (b,d) (c,d)
22:51:52 <lambdabot> second :: a b c -> a (d,b) (d,c)
22:51:53 <lambdabot> (***) :: a b c -> a b' c' -> a (b,b') (c,c')
22:51:56 <lambdabot> (&&&) :: a b c -> a b c' -> a b (c,c')
22:52:08 <oerjan> @src first (->)
22:52:09 <lambdabot> Source not found. BOB says: You seem to have forgotten your passwd, enter another!
22:52:15 <oerjan> @src (->) first
22:52:15 <lambdabot> first f = f *** id
22:52:21 <kallisti> is it not defined in terms of -- ah yes
22:52:23 <oerjan> @src (->) (***)
22:52:23 <lambdabot> (f *** g) ~(x,y) = (f x, g y)
22:52:51 <kallisti> yes
22:53:16 <kallisti> *** is like two processes in parallel.
22:54:09 <kallisti> basically it produces a function on the product of the two argument types of its operand functions.
22:54:13 <oerjan> well parallel dataflow. i'm sure the Kleiski instance does one of them first.
22:54:16 <kallisti> yes.
22:54:24 <oerjan> @src Kleiski (***)
22:54:24 <lambdabot> Source not found. Just try something else.
22:54:29 <kallisti> I didn't mean "process" in any kind of concurrent sense.
22:54:42 <oerjan> um
22:54:45 <oerjan> @src Kleisli (***)
22:54:46 <lambdabot> Source not found. And you call yourself a Rocket Scientist!
22:54:53 <oerjan> :t Kleisli
22:54:54 <lambdabot> forall a (m :: * -> *) b. (a -> m b) -> Kleisli m a b
22:55:07 <kallisti> @src (,) (&&&)
22:55:07 <lambdabot> Source not found.
22:55:15 <kallisti> halp
22:55:25 <oerjan> i don't know that (,) is an Arrow
22:55:35 <kallisti> @src (->) (&&&)
22:55:35 <lambdabot> Source not found. I've seen penguins that can type better than that.
22:55:36 <oerjan> the first argument has the wrong variance
22:55:39 -!- itidus21 has quit (Ping timeout: 248 seconds).
22:55:55 <oerjan> @src (&&&)
22:55:55 <lambdabot> f &&& g = arr (\b -> (b,b)) >>> f *** g
22:56:09 <kallisti> ah
22:56:17 <kallisti> it takes a single flow of data and splits it in two.
22:56:24 <kallisti> :t arr
22:56:26 <lambdabot> forall b c (a :: * -> * -> *). (Arrow a) => (b -> c) -> a b c
22:56:37 <oerjan> > (f &&& g) x :: Expr
22:56:38 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
22:56:38 <lambdabot> against inferred ...
22:56:42 <oerjan> oops
22:56:52 <oerjan> > (f &&& g) x :: (Expr, Expr)
22:56:53 <lambdabot> (f x,g x)
22:56:58 <kallisti> yes
22:57:19 <oerjan> > (f *** g) (x,y) :: (Expr, Expr)
22:57:20 <lambdabot> (f x,g y)
22:57:37 <kallisti> yes
22:57:42 <kallisti> not sure I get what arr is doing though
22:57:58 <kallisti> er well I know what it's doing in that case
22:57:59 <kallisti> just not in general
22:58:19 <oerjan> turns a function into an arrow
22:58:23 <kallisti> is it like... ah okay
22:58:40 <kallisti> yes I see that based on the type.
22:59:14 <kallisti> arr (join (,)) >>> f *** g
23:00:36 <oerjan> some have complained that arr is used too much in the Arrow definitions
23:00:54 <oerjan> makes it hard to generalize to arrow-like things that _don't_ embed all functions.
23:01:39 <oerjan> or arrow-like things where you want to be able to analyze the flow at runtime without running into opaque functions all the time
23:03:31 <oerjan> like, you could imagine using arrow notation to build a circuit of logical gates
23:31:23 -!- cheater has joined.
23:34:09 -!- Frooxius has quit (Quit: ChatZilla 0.9.88-rdmsoft [XULRunner 1.9.0.17/2009122204]).
2012-01-11
00:05:52 -!- TeruFSX_ has quit (Read error: Connection reset by peer).
00:59:52 * kallisti considers taking a break from this channel
01:00:17 <shachaf> Sounds like a good idea.
01:00:21 <shachaf> I should do that.
01:07:37 <oerjan> the rumors of the great spam reduction seem a little premature
01:30:25 -!- pikhq has joined.
01:30:30 -!- pikhq_ has quit (Ping timeout: 240 seconds).
01:30:49 -!- cswords has joined.
01:43:53 -!- azaq23 has quit (Quit: Leaving.).
02:03:34 <kallisti> http://en.wikipedia.org/wiki/Markov_random_field
02:03:42 <kallisti> I wonder how good this would be for anti-latency prediction stuff.
02:29:56 -!- monqy has quit (Ping timeout: 240 seconds).
03:24:45 -!- monqy has joined.
03:30:30 -!- pikhq has quit (Ping timeout: 240 seconds).
03:30:38 -!- pikhq has joined.
03:50:15 -!- pikhq_ has joined.
03:50:37 -!- pikhq has quit (Ping timeout: 260 seconds).
04:06:14 -!- oerjan has quit (Quit: leaving).
04:26:09 -!- pikhq has joined.
04:26:14 -!- pikhq_ has quit (Ping timeout: 252 seconds).
04:49:23 <kmc> zombie 6.001 started today: http://web.mit.edu/alexmv/6.S184/
04:55:42 -!- pikhq has quit (Ping timeout: 240 seconds).
04:55:56 -!- pikhq has joined.
05:04:57 <augur> whats the most exotic machine architecture people know about?
05:05:03 <augur> exotic but not absurd
05:05:33 <pikhq> The Z3, by Konrad Zuse?
05:05:58 <augur> ill check it out :p
05:06:02 <augur> whats so exotic about it?
05:06:40 <kmc> old
05:06:53 <kmc> augur, there are some architectures where the only instruction is "mov"
05:06:53 <pikhq> Basically the first modern computer. Also, TC without a conditional branch operator.
05:07:02 <kmc> everything, even arithmetic, is memory-mapped
05:07:15 <kmc> to add numbers, you mov them to the ALU and then mov out of the "addition result" address
05:07:28 <shachaf> That seems like it's essentially just a different way to encode instructions.
05:07:30 <augur> kmc: thats kind of nice when you think about it
05:07:37 <pikhq> Also, 22 bit words.
05:07:50 <shachaf> Possibly interesting when you can remap memory yourself, I suppose.
05:08:00 <kmc> shachaf, or move directly between any two functional units
05:08:19 <shachaf> Ah, that's true.
05:09:41 <kmc> i don't know much about this
05:21:37 <Jafet> The ruskies built base-3 computers
05:21:50 <Jafet> Probably balanced ternary
05:41:16 <coppro> xkcd is funny today
05:51:10 -!- pikhq_ has joined.
05:51:40 -!- pikhq has quit (Ping timeout: 268 seconds).
06:24:12 -!- Slereah has quit (Ping timeout: 255 seconds).
06:25:31 -!- _Slereah has joined.
06:25:58 <kmc> not really
06:41:17 -!- pikhq has joined.
06:41:18 -!- pikhq_ has quit (Ping timeout: 255 seconds).
06:51:29 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
07:04:56 -!- cswords has quit (Ping timeout: 240 seconds).
07:14:52 -!- cswords has joined.
07:19:25 -!- elliott has joined.
07:20:05 <elliott> What are you talking about? Haskell predates Lisp, and Lisp predates APL. In fact, Haskell was made just two years after assemblers were invented. – trinithis 9 hours ago
07:20:13 <elliott> I can't tell whether they're joking or not...
07:20:35 -!- Vorpal has joined.
07:26:46 -!- monqy has quit (Quit: hello).
07:27:00 <elliott> 22:55:25: <oerjan> i don't know that (,) is an Arrow
07:27:05 <elliott> arr :: (a -> b) -> (a,b)
07:27:53 <elliott> (diff) (hist) . . Language list‎; 19:43 . . (+125) . . 149.255.39.18 (Talk) (Is there a way use some sort of third party forum moderation to cut through this problem? Then you could go on in whatever way you are comfortable, your forums could coninue to buzz and anyone that's)
07:28:01 <elliott> http://esoteric.voxelperfect.net/wiki/She_Gives_Me_Money_When_Im_In_Need_Lyrics
07:28:14 <elliott> Contents [hide]
07:28:14 <elliott> 1 She Gives Me Money When Im In Need Lyrics
07:28:14 <elliott> 1.1 She Gives Me Money When Im In Need Lyrics
07:28:14 <elliott> 1.1.1 it u take my money when I am in need of Yes, her friend 'knows triflin' Oh really, a digger of gold 'way over time to dig me [Chorus:] (Give me the money.) Lil Wayne, Lil Wayne discography.
07:28:20 <elliott> 1.1.1.1 External links
07:28:40 <elliott> 00:59:52: * kallisti considers taking a break from this channel
07:28:45 <elliott> kallisti: sorry i'll tone down my cool
07:29:19 <fizzie> fungot: Why don't you ever give me money when I'm in need?
07:29:19 <fungot> fizzie: mr president, when the commission adds up the income side of agenda 2000.
07:29:36 <fizzie> fungot: Yeah, yeah, it's always one excuse or another.
07:29:36 <fungot> fizzie: mr president, commissioner, i believe that this is just a quote from a turkish newspaper, not a single phrase in the regulation.
07:30:55 -!- itidus21 has joined.
07:31:47 <elliott> fizzie: fungot's way over time to dig you.
07:31:49 <fungot> elliott: first of all, ladies and gentlemen, the european council has since taken place. furthermore, structural and cohesion policies? we take it for granted that there would be no problem in accepting it. even fnord in montenegro does not put them at a disadvantage because many european union states. i met with professionals from the maritime situation of the southeast of the country of origin' principle, this is only a singl
07:35:28 -!- roper has joined.
07:36:15 <kmc> elliott, you're now compelled to invent an esolang named She Gives Me Money When Im In Need Lyrics
07:36:43 <elliott> kmc: I haven't even made My Name Is Johny, What The F**K? yet :(
08:08:24 <shachaf> elliott: <Cody_> Why are there so many typeclasses, wouldn't it make sense to have "one universal" type class?
08:08:49 <shachaf> I thought you would appreciate the suggestion in your design of @.
08:09:05 <elliott> shachaf: Oleg did that, didn't he?
08:09:11 <elliott> It was one single MPTC with a single member or something.
08:09:18 <elliott> That you could implement any typeclass with.
08:09:26 <shachaf> I don't imagine that Cody_ and Oleg were thinking of the same thing.
08:09:37 <shachaf> But I vaguely remember something along those lines, I think.
08:10:20 <elliott> shachaf: Cody_ is the name Oleg uses on IRC.
08:11:38 <shachaf> <Cody_> Is there a website that displays the type classes? Such as Eq, Num, Ord.
08:12:37 -!- MDude has changed nick to MSleep.
08:12:40 <elliott> learnyouatypeclass.com
08:13:14 <shachaf> Even ddarius snapped at him a few days ago.
08:13:21 <shachaf> <ddarius> Cody_: I expect a five year old who's had access to a computer to be able to answer these questions.
08:13:54 <shachaf> Remember the "friendlist channel on Freenode" award that members of #haskell like to award #haskell?
08:14:49 <elliott> shachaf: Has Cody_ read a Haskell tutorial?
08:15:06 <kmc> learn you a google for great good
08:15:06 <shachaf> I assume so.
08:15:18 <elliott> shachaf: Really? All the way through?
08:15:31 <shachaf> Oh, oh.
08:15:33 <shachaf> I don't know.
08:15:42 <elliott> shachaf: You should ask them!
08:15:52 <shachaf> Maybe I shouldn't!
08:16:04 <shachaf> We had a discussion in /msg about how to ask questions.
08:16:27 <elliott> shachaf: I hear esr wrote an essay on that!
08:17:02 <Deewiant> When given an answer to that "why are there so many typeclasses": (Cody_) Axman6: I thought typeclasses were extra fluff.
08:17:18 <elliott> He has a point.
08:17:24 <elliott> class Fluff a where fluff :: a
08:17:53 <shachaf> class Fluff f => ExtraFluff f where extraFluff :: a
08:17:56 <Deewiant> * Cody_ understands why we need typeclasses
08:17:58 <Deewiant> Enlightenment.
08:18:13 <elliott> :D
08:18:24 <kmc> i would be ranting so hard right now
08:18:32 <elliott> shachaf: 20:45:24 <new2hs> so GHCI is mainly a compiler and runtime environment, the prompt is intended for controlling those processes and isn't an interpreter, or at least not an interpreter than can handle all of Haskell
08:18:42 <elliott> shachaf: This guy understands why you can't say "a = b" in GHCi.
08:19:57 <fizzie> Misread as "<kmc> i would be ranting if i weren't so hard right now". Don't know how that happened.
08:20:09 <shachaf> Speaking of asking questions, I've been finding myself typing out answers to questions in #haskell and realising "I'm putting N times as much effort into answering this question as you put into asking it. If you'd put M times as much effort into clarifying what you actually mean, I wouldn't have to do this. N > M. Why am I doing this?"
08:20:21 <shachaf> Never mind that multiplication doesn't quite work that way.
08:21:11 <kmc> fizzie, X_X
08:22:39 * elliott awards the friendliest channel on freenode award to #esoteric.
08:22:46 <elliott> We couldn't have done it without fizzie's help.
08:22:54 * shachaf awards the friendliest person on Freenode award to shachaf.
08:23:08 <elliott> It's "freenode".
08:23:39 <kmc> i'll second shachaf's nomination
08:23:49 <kmc> shachaf is friendlier than me because he hasn't quit #haskell yet
08:24:18 <elliott> kmc: Surely if that's the metric, Cale has to win it a few billion times over.
08:24:22 <shachaf> elliott: The first result on http://www.google.com/search?sourceid=NORWAYNORWAYNORWAY&q=freenode seems to disagree.
08:24:37 <elliott> sourceid=NORWAYNORWAYNORWAY
08:24:38 <shachaf> Yes, I think I'll step down in favour of Cale.
08:24:40 <elliott> It's spelled wrong in Norway.
08:24:53 <elliott> shachaf: Anyway, "Freenode" isn't the title of that webpage.
08:24:57 <shachaf> http://www.google.com/search?targetid=NORWAYNORWAYNORWAY&q=freenode
08:24:58 <elliott> It's what Google thinks the site is called.
08:25:01 <shachaf> elliott: I know.
08:25:05 <elliott> <title>
08:25:05 <elliott> About the Network
08:25:05 <elliott> </title>
08:25:05 <shachaf> Are you calling Google wrong?
08:25:24 <elliott> title="freenode, a service of Peer-Directed Projects Center"
08:25:24 <elliott> You've reached freenode, a service of Peer-Directed Projects Center (PDPC). freenode provides discussion facilities for the Free and Open Source Software communities, for not-for-profit organizations and for related communities and organizations.What is fST or freenode Standard Time? It's our official time zone. Well, sort of. We're not entirely serious. :) freenode Standard Time is UTC.
08:25:32 * elliott can't find a single official reference with the capital F.
08:25:38 <fizzie> elliott: No; it's "You've reached freenode, ..."
08:25:38 <shachaf> elliott: Wow, the people who run Freenode can't spell.
08:25:42 <elliott> XChat calls it "FreeNode", which is just awful.
08:25:42 <fizzie> You need to bold it everywhere.
08:25:49 <elliott> fizzie: It's also greyish blue.
08:25:53 <fizzie> That, too.
08:25:57 <elliott> fizzie: And serif.
08:26:25 <kmc> i spent my winter on the edge of a nervous breakdown while living in norway
08:26:28 <elliott> <shachaf> Speaking of asking questions, I've been finding myself typing out answers to questions in #haskell and realising "I'm putting N times as much effort into answering this question as you put into asking it. If you'd put M times as much effort into clarifying what you actually mean, I wouldn't have to do this. N > M. Why am I doing this?"
08:26:39 <shachaf> http://nhandler.wordpress.com/2010/02/24/it-is-freenode/
08:26:45 <kmc> shachaf, asking for clarification just isn't the #haskell way
08:26:51 <elliott> shachaf: This is why you need rep to motivate you!
08:26:53 <kmc> you should make a wild guess about the intent of the question asker
08:27:00 <kmc> and then write a treatise on that subject
08:27:17 <elliott> howd o i make web with haskell in osx/linux/wine
08:27:21 <elliott> help
08:27:25 <elliott> how do web?????
08:27:30 <kmc> how do i shot web
08:27:31 <elliott> i;m vc
08:27:34 <elliott> big startup moneys
08:27:36 <elliott> web in haskel
08:27:42 <shachaf> kmc: Make sure to leave your treatise in IRC logs rather than writing it up on the wiki or something, though, right?
08:28:21 <kmc> yeah
08:28:37 <elliott> Hey guys! I don't like #haskell! Let's talk about that!
08:28:41 <shachaf> What's a polite way of saying "we don't like your kind here"?
08:28:57 <elliott> shachaf: "Your support contract has expired."
08:28:59 <shachaf> Where "your kind" is often a euphemism for "you". And "we" is a euphemism for "I".
08:29:06 <kmc> don't euphemize
08:29:12 <kmc> use "you" and "I", seriously
08:29:14 <elliott> "Please sign up for a paid support plan if you wish to continue your support contract."
08:29:20 <kmc> elliott, I'm working on a blog post about what annoys me about #haskell
08:29:34 <elliott> kmc: That sounds really productive.
08:29:35 <kmc> I do actually like a lot of things about #haskell and wish I could be less annoyed so I could continue participating
08:29:57 <kmc> probably the way for me to be less annoyed is mostly me changing not #haskell changing
08:30:07 <kmc> elliott, sarcasm?
08:30:17 <elliott> kmc: Maybe!
08:30:24 <kmc> it's more productive than bitching here where ~nobody will see
08:30:36 * elliott doesn't think writing blog posts about #haskell will change #haskell, but who knows.
08:31:09 <kmc> i'd like at least one cite-able data point against "#haskell is wonderful and friendly and perfect"
08:31:19 <kmc> i don't really expect it to change
08:31:27 <kmc> but what else should i do
08:31:41 <kmc> it's as much a reminder to me about the behaviors i should avoid
08:31:49 <kmc> as an attempt to change others
08:32:01 <kmc> if i complain about something publicly then i'm less likely to do it, for fear of being called a hypocrite
08:32:20 <elliott> kmc: I really, honestly, truly haven't seen anyone praise #haskell like that in years beyond saying "you should come to #haskell, we're really friendly!" on other media as an invitation.
08:32:42 <shachaf> I have.
08:32:45 <kmc> ok
08:32:48 <kmc> maybe i'm just out of date
08:33:10 * elliott might just block it out.
08:33:23 <elliott> I mean, I've avoided #haskell for a while now.
08:33:29 <kmc> why do you avoid?
08:34:09 <elliott> Because it sucks?
08:34:21 <elliott> Also, nobody ever answers my questions :P
08:34:24 <kmc> can u be more specific
08:34:37 <kmc> seriously, I'd like to understand the problem
08:34:42 <shachaf> elliott: That's because you never ask "how do i typeclass".
08:34:55 <kmc> so i can write about it, and so i can do better personally if/when I return
08:36:35 <elliott> kmc: Well, pretty much everything said in here: the amount of noise from trivial questions and the rubbish they spawn is immense, the channel in general is just way too high-volume a lot of the time, and people only answer low-hanging fruit, so problems that actually require decent knowledge of the APIs/thinking are ignored (double especially if they're related to code design)... so it just holds very little interest for me, as there's nothing in
08:36:35 <elliott> teresting to answer, nothing interesting to talk about, and no way to get decent help for non-trivial problems.
08:37:09 <kmc> "the rubbish" being conflicting explanations, arguing about how to explain things, etc?
08:37:17 <Deewiant> #haskell-in-depth?
08:37:23 <kmc> nobody ever talks there ever
08:37:39 <elliott> What kmc said :P
08:37:44 <kmc> i'm still in that channel and I'd be glad if it got some good traffic
08:37:49 <elliott> I'm not sure a single question was ever asked in #haskell-in-depth.
08:38:04 <elliott> kmc: Yes; also the jokes that inevitably follow e.g. anyone asking about monads are getting very old.
08:38:22 <kmc> basically i'd be happy if it was 20% the size of #haskell instead of 5%
08:38:40 <elliott> There also seems to be a pattern of a single newbie repeatedly asking trivial questions and coming to dominate the channel for a period of time.
08:38:56 <elliott> Usually in an attempt to get <trivial program that is still way above their 3 pages of LYAH experience> working by trial-and-error.
08:39:01 <elliott> That just falls under "noise", though.
08:39:07 <kmc> yeah, the Standard Monad Joke Templates are definitely something I did for a while and then one day was like "this is fucking stupid"
08:39:24 <shachaf> kmc helped me see the light on that.
08:39:44 <shachaf> In fact after some of kmc's rants I just started disliking inside jokes a lot more.
08:39:46 <kmc> the problem is that dealing with the monopolizers entails being un-"friendly"
08:39:53 <shachaf> On a theoretical level if nothing else.
08:39:59 <kmc> shachaf, when I start a cult you can be my lieutenant
08:40:03 <elliott> I still make them when they come up because, like, maybe #haskell will implode if it reaches critical mass of terrible.
08:40:29 <kmc> haha
08:40:29 <kmc> elliott you're like all those neocons who were secret trotskyites
08:40:29 <elliott> Yes!
08:40:29 <kmc> trying to ruin the USA so the workers would revolt against the capitalist system
08:40:30 <Deewiant> Inside jokes are fine if a) everybody present understands them and b) they're funny.
08:40:31 <shachaf> kmc: Yes, yes, I get the point.
08:40:42 <shachaf> Deewiant: Not if they're only funny by virtue of being inside.
08:40:47 <Deewiant> Unfortunately usually both a) and b) are violated.
08:40:59 <kmc> the inside jokes in #haskell are a way of establishing that you're In The Know about monads
08:41:02 <Deewiant> shachaf: That probably means they're not funny.
08:41:07 <kmc> it's kinda like all the inside jokes stoners make about pot
08:41:18 * kmc has done a lot of that, too
08:41:37 * shachaf hasn't done a lot of that.
08:42:03 <elliott> The two things #haskell could use to be much better would be (a) pointing newbies at a tutorial once they ask a few really basic/misguided questions rather than encouraging them further, (b) cutting down on the incessant injoking like that, and (c) what kmc said about having links to decent explanations of things on hand rather than impromptu IRC lectures.
08:42:48 <kmc> thanks for elaborating
08:42:50 <elliott> I don't think writing a bunch of wiki pages is the most practical solution to (c) because nobody will do it; keeping links to high-quality existing material like blog posts and SO answers seems more practical.
08:42:54 <elliott> *three things
08:42:56 <elliott> 2=3 and all that.
08:43:07 <kmc> i think we're broadly in agreement
08:43:17 <kmc> i have a couple of other gripes too
08:43:22 <elliott> <kmc> it's kinda like all the inside jokes stoners make about pot
08:43:22 <kmc> i don't know if they're real or just something i'm imagining
08:43:24 <elliott> MONADS ARE LIKE POT
08:43:31 <shachaf> "blog posts and my SO answers"
08:43:34 * elliott has done it, he's the worst person, everybody go home.
08:43:36 <kmc> monads are like pot, once you get in you can't get out
08:43:37 <kmc> right
08:43:39 <elliott> shachaf: EXACTLY.
08:43:42 <kmc> that's a totally accurate statement about both right
08:43:43 <Deewiant> Isn't the Haskell wikibook decent?
08:44:00 <elliott> Deewiant: It's just another tutorial for the most part, I think. Its explanation of zippers is excellent, though.
08:44:08 <shachaf> Deewiant: When I tried to read it it was pretty horrible.
08:44:09 <elliott> Deewiant: Also I think it has one of the famously bad monad analogies.
08:44:18 <shachaf> That was back in the "monads as spacesuits" era, though.
08:44:29 <shachaf> No, "monads as nuclear waste containers" was its phrasing.
08:44:54 <elliott> Ah, Apfelmus wrote most of the Haskell wikibook zipper stuff.
08:45:51 <kmc> my other complaints include a) the attitude that an idea is as good as working, tested code; b) the attitude that any feature Haskell lacks isn't important
08:45:54 <elliott> kmc: Something that would be useful is using lambdabot's @where to answer people more, I think; it would be fairly easily to populate it with stock answers+links to common basic questions.
08:46:04 <kmc> yeah
08:46:10 <kmc> i'm a little disappointed that my haskellwiki FAQ hasn't caught on
08:46:16 <kmc> i mean, it's not that great
08:46:18 <elliott> Is that the one on the page [[FAQ]]?
08:46:24 <kmc> but people (besides shachaf) have no interest in linking it or improving it
08:46:26 <kmc> yeah
08:46:28 <elliott> I've linked people to it.
08:46:33 <kmc> ok, cool
08:46:38 <kmc> http://www.haskell.org/haskellwiki/FAQ
08:46:40 <elliott> I think I've seen other non-shachaf people link to it for the existential antipattern stuff.
08:46:44 <kmc> cool
08:46:48 <elliott> kmc: I think those two complaints are more broad than IRC, anyway.
08:46:52 <shachaf> "non-shachaf people"
08:46:53 <kmc> i did a quick logsearch recently to see if my claims were holding
08:47:17 <kmc> and i don't want to be all petulant about "you're not using my wonderful wiki page"
08:47:22 <elliott> kmc: I don't think anyone would actually agree with (a) if you stated it in that way, so I'm inclined to say it's an issue of communication. (b) is... eh, maybe there is some of it, but #haskell doesn't have to respond to people attacking the language.
08:47:25 <kmc> i mean if people extensively rewrote all the answers and linked to them, that would be cool too
08:47:37 <kmc> elliott, it's not about attacking the language
08:47:40 <elliott> The Haskell community in general is way too quick to engage people who clearly don't give a shit about Haskell and are just trolling.
08:47:42 <elliott> kmc: Oh, I know.
08:47:56 <elliott> kmc: I'm just saying that it's easy to mistake legitimate complaints from just another troll attack on the language.
08:48:00 <kmc> right
08:48:14 <kmc> but if you ask about regexes or Java interop, you'll get a bunch of noise about how only losers would want those things
08:48:17 <elliott> I tend to just ignore people criticising Haskell because it's almost always the latter.
08:48:38 <kmc> haskell experts criticize haskell too, and they should not be ignored
08:48:45 <elliott> I agree.
08:48:53 <kmc> there's less of that though
08:49:34 * elliott tries something.
08:51:25 <kmc> ?
08:51:37 <elliott> Shh. I'm doing science.
08:51:48 <pikhq> Haskellers criticising Haskell also tend to give meaningful criticism, not "it's not boring!"
08:52:45 * elliott wonders if this science is immoral.
08:52:55 <kmc> are you doing human experimentation on #haskell
08:53:19 <elliott> How...dare you! The very idea! Yes.
08:53:37 <shachaf> elliott: You can't fool me with your lower-case pronouns!
08:58:24 <elliott> kmc: Well, parser combinators were recommended at first, I got pointed at a (not all that useful for a beginner) wiki page with a comparison of Haskell regex libraries with a specific mild recommendation of regex-pcre, and only one person outright said I don't want to use regexps.
08:58:33 <elliott> It could be better, but it could be worse.
08:58:43 <elliott> Java interop I would be less optimistic about getting good answers to.
08:58:51 <elliott> Of course, it's very dependent on who is active at any given time...
09:00:17 <elliott> RIP dajfsa 2012-2012
09:00:21 <kmc> haha
09:00:25 <kmc> u devious elliott
09:00:26 <elliott> "We exploited you"
09:01:16 <shachaf> 12:00 < qqMuppetpp> dajfsa: if you're just doing it for learning purposes, go with Parsec
09:01:33 <shachaf> 12:01 < quicksilver> parser combinators are better than regexps for just about everything except, of course, for the factor of programmer knowledge
09:01:52 <shachaf> 12:01 < quicksilver> if you're doing something by a real world deadline then it may make sense to use the tool you're more familiar with even if it's the worse tool.
09:02:00 <kmc> "the haskell way is always the better way"
09:02:16 <kmc> the problem is, the haskell way really is often the better way
09:02:21 <kmc> people generalize from that
09:02:54 <elliott> I think parser combinators _are_ usually better than regexps, or at least something like them is.
09:03:06 <kmc> maybe
09:03:26 <elliott> It's tricky because forcing everyone to adopt the Haskell Way wholesale all in one go doesn't work very well, but nobody wants to make a polished, robust library for doing something they don't think is the best way to accomplish things.
09:03:32 <kmc> yeah
09:04:02 <kmc> it seems like often the Right Way to do something was just discovered in a paper published this year
09:04:16 <kmc> and only works with GHC HEAD and is not compatible with other libraries
09:04:19 * elliott doesn't think that a language community is obligated to make things easy for newbies, so he tends to prefer a larger learning curve if it makes the long-term experience better.
09:05:00 <fizzie> elliott: The Committee is not addressing lazy programmers.
09:05:02 <elliott> But the regexp libraries seem OK, so dissuading people too heavily off them is silly.
09:05:06 <elliott> fizzie: Yes.
09:05:16 <kmc> the regexp libraries that use the awful typeclass interface are not OK
09:05:51 <elliott> kmc: Right, the Right Way to dor egexps was just discovered in a library published this year, it only works with base 4.4, and it's not compatible with other regexp libraries...
09:05:54 <elliott> *do regexps
09:06:12 <kmc> "<quicksilver> anecdotally I would say I've seen more people bitten by the greedy nature of regexp when they didn't want it, than people specifically needing the greedy behaviour"
09:06:14 <elliott> The typeclass thing is horrible, but lots of things are horrible and they still work.
09:06:19 <kmc> these are the kind of anecdotes i really distrust
09:06:31 <kmc> confirmation bias
09:07:03 <elliott> kmc: Note how the regexp chat has extended about 5 minutes after the problem was solved and the person with it left...
09:07:08 <kmc> yeah
09:07:21 <Deewiant> Is that a bad thing?
09:07:22 <kmc> well it's right and proper for it to be a contentious issue
09:07:25 <kmc> because the status quo sucks
09:07:46 <elliott> Deewiant: In the context of #haskell, yes, because it's obvious that nobody is going to change their opinions on regexp
09:07:51 <kmc> i don't know
09:07:58 <elliott> And there doesn't actually seem to be any substantial concrete disagreement at all
09:07:59 <kmc> i think i've changed various opinions based on things i've heard in #haskell
09:08:09 <kmc> apparently i've changed shachaf's opinion about some things
09:08:30 <kmc> i think we need more consensus about the solutions to various common problems
09:08:35 <kmc> and discussion is important for that
09:08:47 <kmc> but there's a line somewhere between that and endless bickering where nobody is willing to change
09:08:49 <elliott> (=~) :: (RegexMaker Regex CompOption ExecOption source, RegexContext Regex source1 target) => source1 -> source -> target
09:08:51 <elliott> What a good type.
09:08:54 <kmc> yep
09:09:20 <elliott> Wouldn't
09:09:23 <kmc> class FunctionLike argument result where f :: argument -> result
09:09:24 <elliott> class Match a where (=~) :: a
09:09:25 <elliott> be simpler?
09:09:30 <kmc> :D
09:09:34 <elliott> I'm not even kidding.
09:09:44 <elliott> instance (MatchResult r) => Match (String -> r) where ...
09:12:08 <elliott> kmc: Did you know unsafePerformIO isn't actually in Haskell 2010?
09:12:10 <elliott> I was shocked.
09:12:11 <kmc> yeah
09:12:16 <kmc> it's unsafeLocalState or whatever
09:12:31 <kmc> discussion in GHC mailing lists of implementing that with unsafeDupablePerformIO
09:12:34 <elliott> 00:27:12 <Phlogistique> is there any combinator library more similar to regexes in the range of semantics expressed? are PEG the way to go for this?
09:12:34 <elliott> 00:27:57 <Phlogistique> (by "similar" I meant "provides an usable superset")
09:12:40 <elliott> shachaf: Mention regex-applicative already!
09:12:42 <elliott> I can't take it any more!
09:13:13 <elliott> kmc: The nice thing is that it's deprecated by design.
09:13:24 <elliott> There's a note saying "Expect this to go away in the future!!!".
09:13:38 <kmc> which?
09:13:42 <elliott> unsafeLocalState.
09:13:46 <kmc> lulz
09:13:54 <shachaf> What's unsafeLocalState?
09:13:58 <kmc> it will go away once functional programming dominates the world
09:14:03 <kmc> and we no longer need to interface to C libraries
09:14:06 <elliott> shachaf: unsafePerformIOButYou'reNotAllowedToUseMoreThanAFewFunctionsInIt
09:14:13 <elliott> kmc: Well, I think it means "replaced with something less ridiculous".
09:14:48 <shachaf> I don't see it in the Report.
09:14:56 <elliott> shachaf: Look harder.
09:15:00 <kmc> in Foreign
09:15:01 <elliott> It's in Foreign.
09:15:04 <elliott> Somewhere.
09:15:16 <elliott> shachaf: MENTION REGEX-APPLICATIVE!!!!!!!
09:15:32 * elliott wonders how much longer MUFFIN_'s continued presence in #haskell will last.
09:15:39 <shachaf> Oh, the Report goes past section 12.
09:15:57 <kmc> what's a MUFFIN_
09:16:33 <elliott> kmc: A troll.
09:17:03 <kmc> i don't see anything in the past few days
09:17:26 <elliott> http://tunes.org/~nef/logs/haskell/12.01.11. I'm logstalking!
09:17:35 <elliott> Which is how I know shachaf STILL HASN'T MENTIONED REGEX-APPLICATIVE.
09:17:41 * elliott cries.
09:18:09 <kmc> haha
09:18:56 <elliott> kmc: You mock my pain.
09:19:10 <shachaf> Hey, you can implement unsafePerformIO with the FFI.
09:19:13 <shachaf> foreign export ccall foo :: Int -> IO Double
09:19:13 <shachaf> foreign import ccall "foo" bar :: Int -> Double
09:19:38 <elliott> :D
09:19:46 <elliott> Is that legal?
09:19:49 <shachaf> Works in my GHC.
09:19:55 <shachaf> I don't know what that means.
09:20:01 <kmc> haskell is the same as ghc
09:20:02 <shachaf> But, I mean, presumably it's exporting a symbol.
09:20:03 <kmc> so you're fine
09:20:16 <kmc> only smug beardos care about the spec
09:20:33 <elliott> #haskell jokes are rapidly becoming monad tutorial jokes.
09:20:33 <shachaf> Is a beardo like a typo?
09:21:02 <shachaf> I don't actually understand the FFI.
09:21:18 <shachaf> Is the whole "you give it a type and it makes it work" thing just magic?
09:21:24 <kmc> define "magic"
09:21:31 <shachaf> Well, I suppose it's well-defined in the report.
09:21:35 <elliott> shachaf: There's a table of Haskell<->C type conversions.
09:21:37 <elliott> In the report.
09:21:58 <shachaf> OK, not magic.
09:22:20 <shachaf> Just weird.
09:22:26 <elliott> By the way, does anyone know the answer to this: Monad : ArrowApply :: ? : Arrow
09:22:46 <elliott> i.e. a typeclass of kind (* -> *) -> Constraint that is equivalent to Arrow in the same way that Monad is equivalent to ArrowApply.
09:22:58 <kmc> probably there is none
09:23:00 <elliott> Presumably with a subclass that brings it to Monad.
09:23:07 <elliott> kmc: That seems bizarre.
09:23:13 <kmc> i'm pretty drunk though
09:23:17 <elliott> I don't mean one in a library though.
09:23:25 <elliott> I just mean, what is it?
09:23:57 <elliott> I mean, it's not Applicative, because the Category+Applicative+laws stuff is with the two-argument types.
09:26:22 * shachaf to sleep
09:27:32 <kmc> 'night shachaf
09:27:40 <kmc> godspeed you! black emperor
09:28:43 <elliott> kmc: Is "night" not a complete word?
09:28:55 <kmc> it's not the complete word which goes there
09:32:55 -!- ais523 has joined.
09:32:55 -!- ais523 has quit (Changing host).
09:32:55 -!- ais523 has joined.
09:39:24 <elliott> `welcome ais523
09:39:35 <HackEgo> ais523: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
09:43:26 <ais523> `? @ elliott welcome
09:43:29 <HackEgo> ​@ elliott welcome? ¯\(°_o)/¯
09:43:30 <ais523> err
09:43:35 <ais523> `@ elliott ? welcome
09:43:38 <HackEgo> elliott: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
09:44:14 <kmc> the wendy's near my house closed :(
09:45:34 <ais523> what is a wendy's
09:45:48 <ais523> and what do you mean by "near"? running distance? walking distance?
09:47:08 <fizzie> Some sort of a restaurant chain, isn't it? Burgers or something.
09:47:11 <ais523> elliott: I've actually had esolang thoughts in 2012
09:47:21 <ais523> came up with a new esolang while failing to sleep last night, I think
09:47:37 <ais523> it's vaguely inspired by both Anarchy and My Name Is Johny, What The F**K???
09:49:43 <ais523> and it's an attempt to make the most powerful language I can in which all programs always halt
09:49:56 <ais523> (and that's computable to determine whether a program is written in the language or not)
09:50:52 <ais523> <spambot> When a web hosting company is offering $6.95 hosting plan does this mean that you have to pay $6.95?
09:54:00 <kmc> it means they will host six dollars and ninety-five cents for you
09:54:02 <kmc> free of charge
09:54:20 <kmc> someone tell me about My Name Is Johny, What The F**K
09:54:31 <Deewiant> It means they will tell you of their plan to host $6.95, free of charge
09:54:44 <elliott> back
09:54:58 <elliott> <ais523> and it's an attempt to make the most powerful language I can in which all programs always halt
09:55:03 <ais523> kmc: it's something elliott's working on, basically it's for writing reversible programs, but instead of allowing only reversible primitives, it instead requires functions to come with a proof of reversibility
09:55:08 <elliott> ais523: I somewhat doubt you'll beat the proof assistants.
09:55:11 <elliott> Also, what?
09:55:17 <elliott> I don't remember Johny being that.
09:55:24 <ais523> hmm, really?
09:55:28 <fizzie> I parsed it so that if you pay $6.95, they'll graciously tell you about their hosting plans.
09:55:29 <elliott> Although Johny has been about fifteen languages in search of a name.
09:55:49 <ais523> I thought you had explicit destroy-data primitives that proved that the data being destroyed could still be reconstructed
09:56:02 <ais523> at least, you've only told us about one of the fifteen
09:56:21 <elliott> ais523: No, there was also the 2D ones.
09:56:30 <ais523> well, you've only told /me/ about one of them
09:56:35 <elliott> No.
09:56:39 <elliott> You just don't remember the other ones.
09:56:44 <ais523> you've only told me about one of them when I was paying attention?
09:56:51 <elliott> Or you forgot.
10:04:40 <ais523> elliott: oh, I was going on a different principle altogether than the proof assistants
10:04:43 <ais523> so, hmm
10:05:11 <ais523> elliott: oh, by the way, new BN dynasty, I'm running it
10:11:05 <elliott> ais523: Well, the proof assistants' advantage is that they've got significantly more power than any one given rule.
10:11:39 <ais523> elliott: what I mean was, I wasn't trying to compete with what they were doing
10:12:37 <elliott> It was just a responset o "make the most powerful language I can in which all programs always halt".
10:12:42 <elliott> *response to
10:22:50 -!- ais523 has quit (Ping timeout: 276 seconds).
10:39:07 -!- augur has quit (Remote host closed the connection).
10:39:33 -!- augur has joined.
10:48:13 -!- roper has changed nick to atrapado.
10:48:29 -!- atrapado has quit (Quit: Bye).
10:49:00 -!- augur has quit (Read error: Connection reset by peer).
10:55:48 -!- pikhq_ has joined.
10:56:00 -!- pikhq has quit (Ping timeout: 255 seconds).
10:56:05 <Sgeo> elliott, kallisti update (potentially quite a while ago, but I just saw it now)
10:56:11 <Sgeo> Hmm, 5 hours ago I guess
10:57:05 <elliott> kallisti keeps getting updated, never gets better
11:04:45 -!- augur has joined.
11:06:27 -!- GreaseMonkey has quit (Quit: The Other Game).
11:33:06 -!- ais523 has joined.
11:43:43 -!- ais523 has quit (*.net *.split).
11:43:43 -!- augur has quit (*.net *.split).
11:43:43 -!- itidus21 has quit (*.net *.split).
11:43:43 -!- Sgeo has quit (*.net *.split).
11:43:43 -!- Nisstyre has quit (*.net *.split).
11:43:43 -!- kmc has quit (*.net *.split).
11:43:43 -!- Lymia has quit (*.net *.split).
11:43:43 -!- MSleep has quit (*.net *.split).
11:43:43 -!- rodgort has quit (*.net *.split).
11:43:43 -!- atehwa has quit (*.net *.split).
11:43:44 -!- Patashu has quit (*.net *.split).
11:43:44 -!- olsner has quit (*.net *.split).
11:43:44 -!- yorick has quit (*.net *.split).
11:43:44 -!- lambdabot has quit (*.net *.split).
11:43:45 -!- jix has quit (*.net *.split).
11:43:45 -!- SimonRC_ has quit (*.net *.split).
11:43:45 -!- sebbu has quit (*.net *.split).
11:43:46 -!- mtve has quit (*.net *.split).
11:43:46 -!- cswords has quit (*.net *.split).
11:43:46 -!- cheater has quit (*.net *.split).
11:43:46 -!- yiyus has quit (*.net *.split).
11:43:46 -!- lifthrasiir has quit (*.net *.split).
11:43:46 -!- quintopia has quit (*.net *.split).
11:43:46 -!- Systemzwang has quit (*.net *.split).
11:43:47 -!- aloril has quit (*.net *.split).
11:43:47 -!- HackEgo has quit (*.net *.split).
11:43:47 -!- elliott has quit (*.net *.split).
11:43:47 -!- _Slereah has quit (*.net *.split).
11:43:47 -!- ineiros has quit (*.net *.split).
11:43:47 -!- lahwran has quit (*.net *.split).
11:43:47 -!- fungot has quit (*.net *.split).
11:43:47 -!- fizzie has quit (*.net *.split).
11:43:47 -!- pikhq_ has quit (*.net *.split).
11:43:48 -!- FireFly has quit (*.net *.split).
11:43:48 -!- coppro has quit (*.net *.split).
11:43:49 -!- tswett has quit (*.net *.split).
11:43:49 -!- Zetro has quit (*.net *.split).
11:43:49 -!- shachaf has quit (*.net *.split).
11:43:49 -!- const has quit (*.net *.split).
11:43:49 -!- comex has quit (*.net *.split).
11:43:49 -!- Zuu has quit (*.net *.split).
11:43:49 -!- qfr has quit (*.net *.split).
11:43:49 -!- EgoBot has quit (*.net *.split).
11:43:50 -!- Deewiant has quit (*.net *.split).
11:43:50 -!- oklofok has quit (*.net *.split).
11:43:50 -!- clog has quit (*.net *.split).
11:43:50 -!- Vorpal has quit (*.net *.split).
11:43:50 -!- Jafet has quit (*.net *.split).
11:50:09 -!- glogbackup has joined.
11:50:09 -!- ais523 has joined.
11:50:09 -!- augur has joined.
11:50:09 -!- pikhq_ has joined.
11:50:09 -!- itidus21 has joined.
11:50:09 -!- Vorpal has joined.
11:50:09 -!- elliott has joined.
11:50:09 -!- cswords has joined.
11:50:09 -!- _Slereah has joined.
11:50:09 -!- cheater has joined.
11:50:09 -!- Zuu has joined.
11:50:09 -!- Patashu has joined.
11:50:09 -!- Jafet has joined.
11:50:09 -!- Nisstyre has joined.
11:50:09 -!- Sgeo has joined.
11:50:09 -!- kmc has joined.
11:50:09 -!- sebbu has joined.
11:50:09 -!- fizzie has joined.
11:50:09 -!- Lymia has joined.
11:50:09 -!- lambdabot has joined.
11:50:09 -!- Deewiant has joined.
11:50:09 -!- atehwa has joined.
11:50:09 -!- rodgort has joined.
11:50:09 -!- MSleep has joined.
11:50:09 -!- yiyus has joined.
11:50:09 -!- oklofok has joined.
11:50:09 -!- shachaf has joined.
11:50:09 -!- SimonRC_ has joined.
11:50:09 -!- jix has joined.
11:50:09 -!- olsner has joined.
11:50:09 -!- yorick has joined.
11:50:09 -!- qfr has joined.
11:50:09 -!- aloril has joined.
11:50:09 -!- FireFly has joined.
11:50:09 -!- lifthrasiir has joined.
11:50:09 -!- quintopia has joined.
11:50:09 -!- coppro has joined.
11:50:09 -!- ineiros has joined.
11:50:09 -!- EgoBot has joined.
11:50:09 -!- HackEgo has joined.
11:50:09 -!- Systemzwang has joined.
11:50:09 -!- lahwran has joined.
11:50:09 -!- tswett has joined.
11:50:09 -!- mtve has joined.
11:50:09 -!- const has joined.
11:50:09 -!- fungot has joined.
11:50:09 -!- clog has joined.
11:50:09 -!- comex has joined.
11:50:09 -!- Zetro has joined.
11:50:29 -!- glogbackup has left.
11:50:30 -!- ais523_ has joined.
11:50:30 -!- ais523_ has quit (Client Quit).
11:50:31 -!- ais523 has quit (Ping timeout: 240 seconds).
11:50:31 -!- ais523_ has joined.
11:50:31 <ais523_> [11:44] <elliott> Stop forgetting about left identity.
11:50:31 <ais523_> [11:45] <ais523> no it doesn't; f can only possibly have the type x -> ()
11:50:31 <ais523_> [11:45] <ais523> so without _|_, there's only one possible value for f
11:50:58 <ais523_> elliott: or to put it another way, the left hand side is return a >>= f = return a = (), and the right hand side is f a = () because f has () as its return value
11:51:03 <ais523_> I meant return = const (), not return = (), above
11:51:07 -!- ais523_ has changed nick to ais523.
12:10:34 -!- ais523 has quit (Ping timeout: 260 seconds).
12:11:20 <elliott> @tell ais523 <elliott> Stop forgetting about left identity. <elliott> Oh, no. <elliott> OK, fine, it's a monad.
12:11:21 <lambdabot> Consider it noted.
12:15:31 * Sgeo ponders the best way to initialize an IntMap of MVar ()
12:17:18 <Sgeo> I could write code to write initialization for each individual number or something, but that seems stupid. I guess I could work out the smallest and largest possible value and do something with that
12:18:13 <Sgeo> But is there a way to exploit laziness to make it have a number of locks equivalent to the number of Ints (I mean, similarly to a Map Integer (MVar ()) and having that have an infinite number of locks)
12:18:53 <elliott> unsafeInterleaveIO
12:19:03 <elliott> But a full IntMap will be huge.
12:19:29 <elliott> At least assuming IntMap is spline-strict, which I rather suspect it is.
12:22:05 <kallisti> elliott: you're mom never gets better.
12:23:04 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:24:05 <Sgeo> The thing is, I do for these purposes know how many and which locks I need, but if I didn't...
12:25:02 <Sgeo> I guess for Integer, I could make a function instead of a physical map
12:25:14 <Sgeo> Wait, I'd still need memoization
12:25:50 -!- FireFly has left ("→").
12:27:22 <elliott> Sgeo: You sound even more confused as usual; I'm going to hazard a guess you're doing something in an awful manner.
12:27:25 <elliott> *confused than
12:32:35 <Sgeo> elliott, I'm interleaving talking about what I know I want and hypothetical thoughts on what if I wanted something slightly different.
12:33:45 <itidus21> like going to a nissan dealership and discussing subaru?
13:13:35 -!- Phantom_Hoover has joined.
13:14:14 <Phantom_Hoover> @messages?
13:14:14 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
13:15:12 <Phantom_Hoover> elliott, I should make a graph of messages per day against Homestuck updates, but I suspect that it a) wouldn't actually be a terribly strong correlation and b) would have next to no available data.
13:16:19 <elliott> Phantom_Hoover is a true scientist.
13:16:32 * elliott graphs price of tea in China v. hoovers phantommed.
13:23:32 <Sgeo> Since I'm going to be locking a bunch of these things at once, I think I'll go with IntMap (TMVar ()) instead of IntMap (MVar ())
13:24:36 <elliott> Sgeo: Err, I'm not sure you understand how locks work?
13:24:54 <elliott> Getting a bunch of locks in succession should not be any less safe than getting them all atomically, they're /locks/.
13:25:37 <Sgeo> elliott, unless I accidentally get locks in different orders from what I want to
13:25:45 <Sgeo> Erm, in different orders in different places
13:25:54 <Sgeo> I doubt that would happen, but still
13:26:08 <elliott> Sgeo: I'm rapidly becoming sure you don't understand how locks work
13:26:13 <elliott> *work.
13:26:29 <Sgeo> Suppose one thread tries to lock A, then B. A second thread tries to lock B, then A
13:27:17 <Sgeo> I should be able to control the order in which things are locked, so I should be able to avoid that, but still
13:27:35 <coppro> just put a lock around locking a and b
13:28:45 <elliott> Sgeo: If two locks are required for one thing and are taken together, shouldn't they be one lock?
13:29:33 <Sgeo> elliott, in my case, one function might require locks 1, 2, 3, another locks 1, 4, 5, another locks 10, 11, 12, another locks 4, 6
13:29:34 <Sgeo> etc
13:30:10 <elliott> Sgeo: This is the part where I return to hypothesis A, you're doing something badly.
13:30:40 <Sgeo> I may be designing around a scenario in the AW SDK that may or may not actually be present
13:30:41 <elliott> Sgeo: Anyway, STM doesn't magically get rid of contention.
13:30:45 <Jafet> This conversation seems deadlocked.
13:31:08 <elliott> Jafet: Welcome to #esoteric!
13:31:12 <itidus21> http://s3.amazonaws.com/files.posterous.com/timmmii/qjHzdDCcguJinwAktqmbksrwFBbuDGHnysCFpJxllodAnngiGlHbdxgJJzBv/media_httpcdn0knowyourmemecomi1569originalsnortingcokejpg1240906811_mBxaCmuIJBCpbwl.jpg.scaled1000.jpg?AWSAccessKeyId=AKIAJFZAE65UYRT34AOQ&Expires=1326288940&Signature=yQwe7dHO4MBkgwUpNnz0J5iHoIs%3D
13:31:19 <itidus21> wow that link was quite big
13:31:35 <fizzie> Possibly it's just a non-halting conversation that keeps on chugging.
13:31:40 -!- pikhq has joined.
13:31:43 -!- pikhq_ has quit (Ping timeout: 252 seconds).
13:31:54 <Sgeo> There is a design flaw that I know I have to deal with, and this particular approach to dealing with it seems ideal to me, in that I don't have to determine which functions need what locks and then figure out which functions may be called together or not
13:41:33 <elliott> Oh man!! Zed Shaw has published an OPINION about the K&R book? THANKS PROGGIT, THERE'S NOTHING I LOVE MORE THAN HEARING ZED SHAW'S OPINIONS! NOTHING!
13:42:00 <elliott> Ooh, Valgrind proves K&R are idiots.
13:42:18 <elliott> Also apparently the book is called <i><code>"K&R C"</code></i>?
13:45:44 <elliott> In the past all of us used to sit down about on the ground or around the desk and also play the board game with family or close friends. Right now online games are usually played by yourself or with assorted people all over the net. You are able to frequently become having fun with someone across the additional side on the planet. Nowadays we have absolutely no contact and even understand the other players that individuals are usually playing wit
13:45:44 <elliott> h and can't see them either.
13:48:02 <fizzie> Were you talking about that "Deconstructing K&R" thing?
13:48:53 <elliott> fizzie: Yes, but it's actually 'Deconstructing <i><code>"K&R C"</code></i>' for some unfathomable reason.
13:49:00 <elliott> Also why did you read it, I'm the only person stupid enough to subject myself to Zed Shaw.
13:49:34 <elliott> [[
13:49:34 <elliott> 83 people answered the first question, "When a command is misused, should it deliver its usage message to standard output or to standard error?". 62 (75%) agreed that the message should go to stderr; 11 (13%) said it should go to stdout. 10 indicated that they preferred a more complicated policy, of which 4 were essentially (or exactly) what M. Echeverri suggested; this brings the total in favor of stderr to 66 (80%). The others were:
13:49:34 <elliott> [...]
13:49:34 <elliott> 3.A very long response that suggested syslog.
13:49:36 <elliott> [...]
13:49:38 <elliott> ]]
13:49:43 <elliott> syslog, the best place to put --help output.
13:49:49 <elliott> *3. A
13:50:02 <Sgeo> What did M. Echeverri suggest?
13:50:29 <elliott> "#3 seemed to be answering a different question than the one that was asked; syslog may make sense for general diagnostics, but to use it for usage messages seems peculiar."
13:50:34 <elliott> Sgeo: http://blog.plover.com/Unix/usage.html
13:51:49 <fizzie> elliott: It's been linked to from both ##c and (IIRC) comp.lang.c a couple of times already, in agitation. Anyway, I didn't "read" it; I glanced at the start of it, and didn't quite get the point. There's a strcpy() (well, a "copy()") function which does not work when called with non-null-terminated char*'s, and that's somehow a bad thing because it "only works in this delicate balance".
13:53:16 <elliott> fizzie: You read ##c?
13:53:36 <elliott> I just jump in with a fireproof suit, yell my question, breathe in, wait five minutes for an answer, and then jump out the window.
13:54:10 <fizzie> I glance at the bottom of the scrollback every other hour or so, and sometimes paste the worst bits to a query.
13:54:11 <elliott> fizzie: Oh, man: "In the rest of this chapter though we will be modernizing the code in "K&R C" to fit the style you've been learning throughout this book. It will be more verbose, but it will be clearer and less error prone because of this slight increase in verbosity."
13:54:19 <elliott> That's the bestestworst idea for a programming book ever.
13:54:59 <fizzie> For example, currently there's "discussion" on why "double d = 10; printf("%d",d);" is not printing out "10".
13:55:20 <elliott> fizzie: You forgot the quotes.
13:55:28 <elliott> printf("\"%d\"", d);
13:55:29 <elliott> HTH
13:55:53 <fizzie> Well done.
14:07:45 <Sgeo> Is there any reason not to use TMVars?
14:12:12 <fizzie> Teenage Mutant Variables?
14:15:34 <Phantom_Hoover> I wish political cartoons had never moved beyond the "label everything so there's no chance you make any metaphors" stage.
14:16:14 <elliott> Phantom_Hoover: They have?
14:16:18 -!- myndzi has quit (Read error: Connection reset by peer).
14:17:54 <Phantom_Hoover> elliott, yeah, now they make a caricature of any given political figure and then that consists of their entire satire from then on.
14:21:16 -!- myndzi has joined.
14:26:50 -!- pikhq_ has joined.
14:27:00 -!- pikhq has quit (Ping timeout: 248 seconds).
14:32:12 <Sgeo> waitForEvent :: (a -> Bool) -> TChan a -> STM a
14:32:35 <Sgeo> This function is pretty much exactly what I was looking for for something
14:32:39 <Sgeo> And would have written it myself
14:32:48 <Sgeo> Does this make it worth using a TChan instead of a Chan?
14:34:10 <elliott> Sgeo: Why are you writing things to the Chan if you've going to discard them?
14:34:12 <Sgeo> Wait, this function might be wrong.
14:34:19 <elliott> Note that TChans are very different from Chans.
14:34:43 <Sgeo> elliott, my wrapper will be writing to a chan, users will be reading from
14:35:06 <elliott> Why are you exposing a Chan?
14:35:17 <elliott> Do you want to let Your Users(tm) write to it, too?
14:35:34 <Sgeo> No, but if they do, nothing should break
14:35:44 <elliott> Why do you want to let them write to it?
14:35:51 <elliott> I mean, you just said you don't.
14:35:56 <elliott> So why do you care about what breaks?
14:35:58 <elliott> You're not making any sense.
14:38:26 <Sgeo> I guess I should just the IO for reading
14:38:35 <elliott> Yes, just the IO for reading.
14:38:58 <Sgeo> And the IO to close the thing
14:39:20 <Sgeo> Wondering if I should use ResourceT
14:40:11 <elliott> Programming goes better with complete sentences.
14:40:38 <Sgeo> Control.Monad.Loops.iterateUntil does what I want, I think
14:40:44 <Sgeo> Assuming I just expose the IO to read
14:41:37 <Sgeo> http://hackage.haskell.org/packages/archive/monad-loops/latest/doc/html/src/Control-Monad-Loops.html#iterateUntil
14:41:40 * Sgeo blinks at the = go
14:41:59 <Sgeo> I guess it's a label for the loop
14:43:09 <elliott> Sgeo: It's not.
14:43:16 <elliott> go has two fewer parameters than iterateUntil.
14:44:53 <Sgeo> I guess that .. saves computation?
14:45:51 <elliott> Sgeo: What do you think parameters are passed on? (It's not the aether.)
14:46:33 <Sgeo> It looks like a tail call
14:46:40 <Sgeo> Either wy
14:46:41 <Sgeo> *way
14:47:02 <elliott> (>>) is in tail position there, not go, not that it's at all relevant.
14:51:05 <Sgeo> http://wiki.activeworlds.com/index.php?title=AW_AVATAR_SESSION see the two AW_CALLBACKs? That suggests to me that my IntMap of locks is a good idea
14:51:47 <Sgeo> ...or, this case is a bit pathological
14:53:22 * elliott decides not to click.
14:54:52 <Sgeo> _some_ callbacks have solutions to the main problem I'm trying to solve with these locks. Some do not. This case does, but in doing so, causes a complication that my IntMap of locks solves
14:55:03 <itidus21> Phantom_Hoover: i doubt the value of political satire etc
14:57:20 <itidus21> i guess its good to keep people reminded that politicians are not what their marketed image suggests
14:58:17 <itidus21> but satire can also make politician popular and appear more friendly, more comicbook-like
15:01:44 -!- pikhq has joined.
15:02:03 -!- pikhq_ has quit (Ping timeout: 248 seconds).
15:19:55 -!- Klisz has joined.
15:24:44 <Sgeo> once :: IO (IO a, IO ()) -> IO a
15:25:17 <Sgeo> Come to think of it, there's no particular reason that once's argument needs to be in IO
15:25:32 <Sgeo> But it does make it slightly easier to use over once =<< whatever
15:32:51 <elliott> I have no idea what that is meant to do.
15:33:21 <Sgeo> Performs the read once, then closes
15:34:40 <elliott> um... once m = m >>= \(a,b) -> a <* b?
15:35:01 <Sgeo> :t (<*)
15:35:02 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f a
15:35:20 <Sgeo> I'll probably forget that when it's time to implement it, but it's easy enough to write anyway
15:35:40 <Sgeo> Although I'd probably end up using do notation
15:36:15 <elliott> Are you saying that's seriously what it is?
15:36:15 <Sgeo> @src (<*)
15:36:16 <lambdabot> (<*) = liftA2 const
15:36:26 <elliott> Because if it is, that type is the most stupid possible way to express it.
15:36:45 <Sgeo> Hmm?
15:37:37 <elliott> Hmm what?
15:37:48 <Sgeo> How is it the most stupid possible way to express it?
15:38:04 <elliott> Because your type looks like
15:38:09 <elliott> once :: IO (IO a, IO ()) -> IO a
15:38:10 <elliott> instead of
15:38:12 <elliott> once :: (Applicative f) => f a -> f b -> f a
15:38:19 <elliott> and also the word "once" is irrelevant.
15:38:41 <Sgeo> It's relevent to what I imagine typical usage would be in applications using my wrapper
15:39:42 <elliott> If something of that type and semantics is common, your wrapper suck.
15:39:43 <elliott> s.
15:42:01 <Sgeo> :/
15:53:29 -!- cheater_ has joined.
15:57:33 <cheater_> i wonder, are there imacs with touch screens ?
15:57:44 <cheater_> i could use an older one, as a sort of youtube based ipod
15:57:47 <cheater_> kinda thing.
15:58:04 <cheater_> i'd totally google but i'm web-disabled for the next hour.
15:58:14 <Phantom_Hoover> http://en.wikipedia.org/wiki/Escitalopram
15:58:16 <cheater_> that is also the wrong channel.
15:58:25 <cheater_> oh hi Phantom_Hoover.
15:58:27 <Phantom_Hoover> Wow, a drug which is literally the mirror image of another drug by the same company.
15:58:36 <Phantom_Hoover> cheater_, fuck off.
15:58:47 <cheater_> Phantom_Hoover, fuck ON!
15:59:38 <elliott> <Phantom_Hoover> Wow, a drug which is literally the mirror image of another drug by the same company.
15:59:44 <elliott> Phantom_Hoover: What a scummy cost-cutting tactic!
15:59:54 <elliott> Wait, I was joking.
16:00:03 <elliott> But apparently people are actually saying that so maybe it's actually true.
16:00:40 <fizzie> Soon they're going to start selling versions with green nitrogen blobs instead of those blue ones seen there.
16:00:42 <Phantom_Hoover> Well, the main bit is where they denied that it was just clinging to patents despite it being literally identical in structure.
16:01:33 <Phantom_Hoover> fizzie, no, you fool!
16:01:42 <elliott> Phantom_Hoover: Well, there's only a limited number of parts they can twiddle!
16:01:51 <Phantom_Hoover> fizzie, green blobs are chlorine!
16:01:51 <elliott> HAVE SOME EMPATHY.
16:02:24 <fizzie> Phantom_Hoover: Stick some paint on it, any blob can be anything.
16:02:53 <elliott> fizzie: "Ingredients: Blue paint (98%), ..."
16:04:38 <Phantom_Hoover> fizzie, wait, we can turn lead into gold by painting it yellow!
16:05:22 <elliott> You didn't know?
16:05:54 <Phantom_Hoover> elliott, we're talking about sophisticated atomic painting here, not the shoddy work that fools you English idiots.
16:06:10 <Phantom_Hoover> I mean, the paintbrushes would have to be really, really small.
16:08:54 <elliott> Phantom_Hoover: dude, we use atomic paintbrushes in England.
16:09:24 <Phantom_Hoover> No, those are molecular paintbrushes.
16:11:51 <elliott> Phantom_Hoover: Um have you ever even SEEN England?
16:12:05 <Phantom_Hoover> Yes.
16:12:52 <elliott> Phantom_Hoover: No, you've seen the fake one we show to keep Scots complacent.
16:14:22 <Phantom_Hoover> elliott, ha ha ha, you actually think we were fooled by that?
16:16:45 <itidus21> Phantom_Hoover: so did they manage to take some drug they had a patent to, release an identical drug under another name, and get a patent for the new drug?
16:17:04 <elliott> itidus21: For sufficiently wrong definitions of "identical".
16:17:54 <itidus21> if they could only get away with that then the third world would never see any medicine ever
16:17:55 <Phantom_Hoover> elliott, it is identical.
16:18:35 <Phantom_Hoover> I'm pretty sure the synthesis is the same, for one thing, and there's no reliable evidence that it worked better.
16:18:51 <itidus21> ok i see the hole in my logic
16:19:05 <itidus21> Phantom_Hoover: but they can't retain their old patent in this way though right?
16:19:24 <Phantom_Hoover> itidus21, sure they can, but patents expire.
16:19:29 <itidus21> a new patent surely doesn't empower them to keep an old patent
16:19:36 <Phantom_Hoover> ...yes?
16:19:44 <Phantom_Hoover> As far as the patent office are concerned, it's a new drug.
16:19:57 <itidus21> but
16:19:59 <Phantom_Hoover> It just happens to have exactly the same structure, but mirrored.
16:20:06 <itidus21> uhmm
16:20:25 <itidus21> if people just make the drugs on the basis of the old drug then its ok right?
16:20:38 <Phantom_Hoover> Huh?
16:20:57 <Phantom_Hoover> Oh wow, it's even better than that.
16:21:15 <itidus21> you're doing logic with me.. so since im not that smart this may hurt
16:21:35 <itidus21> but i would invest 5 hours to express what i am trying to express if necessary
16:21:40 <Phantom_Hoover> Citalopram is actually half-and-half escitalopram and its mirror; it's not a new drug at all.
16:21:54 <itidus21> so.. an analogy is necessary here
16:23:29 <itidus21> so a company has a patent to some drug A, and then they create a new patent to some identical drug B. to me the question is does this prevent people copying drug A
16:23:35 <itidus21> without a patent
16:24:02 <itidus21> ^when the patent for drug A expires
16:24:23 <itidus21> even though A and B are (arguably) identical
16:25:17 <Sgeo> Oh, I do want an operation other than readChan: tryGetChan. Although I don't think I saw such a function :(
16:25:44 <itidus21> i suppose i should define copying
16:26:10 <itidus21> copying = selling
16:27:20 <elliott> <Phantom_Hoover> elliott, it is identical.
16:27:21 <elliott> <Phantom_Hoover> I'm pretty sure the synthesis is the same, for one thing, and there's no reliable evidence that it worked better.
16:27:34 <elliott> Phantom_Hoover: I reserve the word "identical" for things that don't have two separate images distinguishing them.
16:28:02 <itidus21> i don't see what the problem is so long as the original is in the public domain
16:28:06 <itidus21> :P
16:28:25 <itidus21> maybe i do.. maybe i do
16:28:35 <itidus21> hummm
16:28:41 <elliott> Sgeo: If you want tryGetChan, you're doing something wrong.
16:29:04 <itidus21> this is all normal for the system
16:29:26 <Sgeo> elliott, huh?
16:29:53 <itidus21> i guess the problem is that they continue to refer to patents as patents
16:29:58 <elliott> Sgeo: I think I need a policy of not responding to lines that have no possible response, like "huh?".
16:30:03 <itidus21> time to look into the etymology
16:30:09 <Sgeo> Why is it wrong to want tryGetChan?
16:30:54 <elliott> Sgeo: What possible purpose could you have for it? The only thing I can think of is doing things that should be done with threads.
16:31:04 <itidus21> The meaning "copyright an invention" is first recorded 1822, from earlier meaning "obtain exclusive right or monopoly" (1789), a privilege granted by the Crown via letters patent.
16:31:24 <Sgeo> Seeing if something has occured yet, and if not, doing something else
16:31:27 <elliott> Either you're going to be polling it like crazy, which is bad, or you're going to know when an item has come in on the Chan, in which case you might as well just read it because you know it won't block.
16:32:10 <Sgeo> I wonder if there's a problem with my main idea of turning an event-based system into something based on chans
16:32:17 <elliott> Sgeo: Sounds like a Do It Yourself Race Condition In Ten Steps opportunity.
16:32:26 <itidus21> copyright: "the right to make or sell copies," 1735, from copy + right.
16:32:52 <elliott> Sgeo: That idea is perfectly sound; your implementation sounds completely broken.
16:33:28 <Sgeo> elliott, it's more me trying to figure out how users will use this
16:33:51 <Sgeo> Than implementation-level things. Although I still haven't figured out exactly what sort of values will be going along the chans
16:35:33 <Sgeo> With the SDK itself, users set event handlers, and in their handlers, use functions like aw_int() to grab values out of something like global state
16:35:45 <elliott> Sgeo: No, your implementation itself sounds broken too.
16:35:56 <kallisti> so has everyone switched over to C++11 yet?
16:36:14 <Sgeo> I'm thinking each of my event chans passes along its own type of things, but then what if I want to combine two events and have a chan that reads from either
16:36:48 <Sgeo> Maybe a structure representing the entire possible state, and converting these smaller things to that
16:36:58 <kallisti> use an Either
16:36:58 <Sgeo> Each of the fields in the larger things being a Maybe
16:37:33 <Sgeo> kallisti, when a user wants a lot of event data pouring into one chan, that could get unwieldy
16:37:54 <elliott> The user the user the user the user.
16:38:00 <kallisti> I don't really know the problem. I just saw "combine two events and have a chan that reads from either" and thought Either.
16:38:18 <kallisti> seems natural
16:38:32 <Sgeo> kallisti, fine, imagine I said two or more
16:38:41 <kallisti> ah okay.
16:39:04 <kallisti> Either A (Either B (Either C D) )
16:39:07 <kallisti> should be good
16:39:09 <kallisti> :)
16:39:52 <kallisti> or you could use tuples or something...
16:40:02 <kallisti> (Maybe a, Maybe b, Maybe c) loooooool
16:40:14 <kallisti> Haskell needs "Either tuples"
16:40:38 <elliott> kallisti: a :+: b :+: c
16:40:44 <elliott> OK, fine, I'll take the bait:
16:40:47 <elliott> <Sgeo> With the SDK itself, users set event handlers, and in their handlers, use functions like aw_int() to grab values out of something like global state
16:40:52 <kallisti> :t (:+:)
16:40:53 <lambdabot> Not in scope: data constructor `:+:'
16:40:56 <elliott> Are these actual global state, or the equivalent of event params?
16:40:58 <kallisti> @hoogle (:+:)
16:40:59 <lambdabot> No results found
16:41:03 <elliott> kallisti: ITT: :t is not :k
16:41:25 <kallisti> ITT: elliott anticipates I will magically distinguish type names from data constructors given no context
16:41:33 <elliott> <kallisti> Either A (Either B (Either C D) )
16:41:36 <elliott> <kallisti> Haskell needs "Either tuples"
16:41:43 <elliott> If it was a :+: b :+: c as a value, it would not be Either.
16:42:00 <kallisti> oh, indeed.
16:42:19 <kallisti> still the value-level syntax will be clunky with the Lefts and Rights
16:42:21 <elliott> Not that (:+:) is in any standard place either, but it's easy to define.
16:42:37 -!- Nisstyre has quit (Ping timeout: 240 seconds).
16:42:38 <kallisti> here comes "define your own interface"
16:42:43 <Sgeo> elliott, what do you mean by the equivalent of event params?
16:42:47 <elliott> kallisti: You can fix that with a horrible typeclass hack.
16:42:56 <kallisti> oh good
16:43:00 <elliott> Sgeo: I don't know; I don't know anything about AW.
16:43:06 <Sgeo> It depends on the circumstances, I think. Some are the equiv of event params, some are global state
16:43:11 <elliott> Sgeo: Event params would be like "position mouse was clicked on" in a mouse click event.
16:43:15 <kallisti> Sgeo: so Either + typeclass hacks you'll be good
16:43:18 <elliott> Global state would be "current mouse position".
16:43:26 <elliott> Event param would be "user invoking this request".
16:43:32 <elliott> Global state would be "list of online users".
16:43:44 <Sgeo> elliott, some are one, some are the other
16:43:57 <elliott> Sgeo: Do you know the list of relevant params for each given event?
16:44:10 <elliott> Params-as-global-state, that is.
16:44:16 <Sgeo> elliott, can copy-paste from the wiki for that
16:44:28 <elliott> I really don't see where on earth a bunch of Chans comes in.
16:44:58 <Sgeo> Instead of event handlers, sending the data from each event to the user
16:44:59 <kallisti> Sgeo Chan Combinator Library SCCL
16:45:45 <elliott> Sgeo: What's wrong with event handlers?
16:45:49 <elliott> If you have
16:45:58 <elliott> installEventHandler :: (Event e) => (e -> IO ()) -> IO ()
16:46:01 <elliott> you can easily write
16:46:05 <elliott> waitForEvent :: (Event e) => IO e
16:46:06 <elliott> on top of it.
16:46:08 <kallisti> actually channel combinators that produce channels of tuples would be Arrow
16:46:30 <kallisti> is there something like "Arrow for Either"?
16:46:32 <elliott> Specifically
16:46:35 <elliott> kallisti: ArrowChoice
16:46:45 <Sgeo> elliott, but then if I repeatly waitForEvent, I lose events
16:46:47 <Sgeo> I think
16:46:48 <elliott> waitForEvent = do { v <- newEmptyMVar; installEventHandler (putMVar v); takeMVar v }
16:47:04 <Sgeo> I need to be able to uninstall event handlers too
16:47:04 <elliott> Sgeo: There is no possible way you can lose events with ^ if installEventHandler does what it's supposed to.
16:47:11 <elliott> installEventHandler :: (Event e) => (e -> IO ()) -> IO (IO ())
16:47:16 <elliott> Returned IO action deregisters events.
16:47:20 <elliott> This is the AddHandler type of reactive-banana.
16:47:32 <elliott> As in, deregisters the installed handler.
16:47:32 <elliott> So:
16:47:46 <elliott> waitForEvent = do { v <- newEmptyMVar; uninstall <- installEventHandler (putMVar v); r <- takeMVar v; uninstall; return r }
16:47:58 <elliott> The uninstall isn't needed there; the event handler will just block in future.
16:48:00 <Sgeo> I think someone in #haskell pushed the idea of not preferring event handling on me
16:48:13 <elliott> Of course, if you're interpreting "install" as "replace", then it can drop events.
16:48:17 <elliott> Hopefully you're not doing that.
16:48:51 <elliott> Sgeo: I certainly argued that a full blocking interface is often preferable, but you can't do that automatically.
16:48:57 <Sgeo> The SDK does, but I'm planning on abstracting over that
16:49:01 <elliott> You have to build it manually based on domain-specific knowledge.
16:50:16 <elliott> "abstracting over that": newEventHandler = newMVar Map.empty; addHandler v h = modifyMVar_ v $ \m -> do { u <- newUnique; return $ Map.insert u h m }; runHandlers v = readMVar v >>= mapM_ ($v) . Map.toList
16:51:02 <kallisti> elliott: I think Arrow would be a good choice for some signal processing algorithms
16:51:20 <Sgeo> elliott, please stop writing code for me, it does bother me
16:51:34 <elliott> kallisti: "Arrow would be a good choice" --people who haven't yet tried to apply arrows to a problem
16:51:37 <kallisti> as some are naturally expressed as dataflow diagrams, which Arrow represents pretty well.
16:51:42 <elliott> No it doesn't.
16:51:46 <elliott> Sgeo: Sorry, in the future I'll make sure to only write code for things you've never thought about.
16:51:51 <elliott> Sgeo: I might need a queriable database.
16:52:51 <elliott> I'm not sure if anyone can tell, but I'm super grouchy today!!
16:53:06 <elliott> kallisti: Arrow would be better if you could use actual flow diagrams with it, really.
16:53:17 <elliott> As it is you have the choice between unreadable combinator code and ugly imperative proc notation.
16:53:22 <elliott> Also, the tuples suck big-time.
16:53:35 <elliott> Arrowised FRP was in vogue for a while but it's not that popular any more for exactly these reasons.
16:53:52 <elliott> Well, OK, it is fairly used, because the arrowised FRP implementations are some of the best, but the intelligentsia don't like it.
16:54:04 -!- KingOfKarlsruhe has joined.
16:55:55 -!- Nisstyre has joined.
16:57:34 <kallisti> elliott: I think if you had some decent syntax for it, it wouldn't so cumbersome
16:57:45 <kallisti> for example a hetereogenous list syntax that's equivalent to linked tuples.
16:58:01 <Sgeo> elliott, if I use your waitForEvents twice in a row, and in between those usages, an event happens while I don't have a registered event handler, the code will never see it.
16:58:23 <Sgeo> That's what I meant by dropping events
16:58:29 <elliott> Sgeo: Are you saying, "unhandled events are not handled"?
16:58:35 <elliott> Yes, that is true.
16:59:02 <kallisti> elliott: but a graphical tool to generate arrow code would be interesting
16:59:04 <elliott> You can always maintain a backlog of events for those with no handlers.
16:59:31 <Sgeo> elliott, what, with hidden event handlers?
16:59:35 <elliott> kallisti: Arrows really aren't nice to use, even if you did have heterogeneous list stuff (which you can give list-style syntax, btw).
16:59:41 <Sgeo> But then the bot will be constantly sent information that it might not need.
16:59:47 <elliott> Sgeo: What?
16:59:58 <elliott> kallisti: Besides, being unable to use currying is gross.
17:00:05 <elliott> Arrows just aren't very Haskelly.
17:02:55 <kallisti> elliott: have you seen http://www.grame.fr/Ressources/pub/faust-chapter.pdf
17:03:04 <kallisti> it would appear arrows are very Fausty.
17:03:15 <Sgeo> elliott, I guess I could make the installEventHandler more primitive than something Chan-based
17:03:54 <kallisti> I'm not sure how you would represent the _ syntax in Faust, which basically stands for "an input"
17:04:02 <kallisti> I guess with regular function arguments...
17:04:45 <Sgeo> elliott, with the type used by reactive-banana, how would an event handler uninstall itself? I guess you could make a combinator that allows for that, but
17:06:05 <elliott> Sgeo: How can I go from A to C? I mean, I can go from A to B, and from B to C, but surely it would be better to glue A directly to C. For the user!
17:06:54 <Sgeo> I still don't see what
17:07:00 <Sgeo> what's so terrible about the Chan thing
17:07:26 <Sgeo> Although I guess if adding a handler is a common case, it might be a bit inefficient
17:07:49 <elliott> kallisti: _ is id.
17:08:05 <kallisti> ah
17:08:51 <elliott> kallisti: Lame how that Faust thing explicitly exposes the sample-rate by giving a one-sample delay.
17:09:12 <kallisti> how would you do a delay with continuous functions?
17:09:13 <elliott> But continuous time for signal processing seems to be an innovation restricted to FRP circles...
17:09:17 <elliott> (from my incredibly biased sample set)
17:09:22 <elliott> kallisti: A delay of what?
17:09:26 <elliott> There's no smallest real number.
17:09:37 <kallisti> so you have to perform delay in discrete signals... right?
17:10:35 <elliott> kallisti: This is like how, in real life, since time is continuous, you can't put something off for 5 minutes.
17:10:48 <elliott> You have to jump into a computer and become discrete and wait 5 units of time.
17:10:49 <kallisti> lol
17:11:00 <elliott> Therefore your deduction makes complete sense.
17:11:47 <kallisti> so I don't understand. what's wrong with delay f d t = f (t - d t)
17:12:34 <elliott> That's a very strange definition.
17:12:45 <elliott> delay t a b = \s -> if s < t then a s else b s
17:12:48 <elliott> makes more sense.
17:13:10 <elliott> And the answer is nothing; but that's not a one-sample delay, which is what I was complaining about.
17:13:15 <elliott> It's independent of sample-rate.
17:13:20 <Sgeo> :t mfix
17:13:21 <lambdabot> forall a (m :: * -> *). (MonadFix m) => (a -> m a) -> m a
17:13:21 <kallisti> oh I thought you were complaining about the delay operator.
17:13:27 <kallisti> which is that.
17:13:51 <kallisti> elliott: I don't really understand what your function is supposed to do.
17:14:17 <elliott> kallisti: delay 0.1s (pure 42) b is 42 for 0.1s and b thereafter
17:14:28 <kallisti> delay f d produces the signal f but delayed by the function d.
17:14:44 <elliott> Yes, thank you, I'm not an idiot.
17:14:53 <kallisti> how is your delay a... delay?
17:14:56 <elliott> The problem with that definition is that you can define pathological ds.
17:15:08 <elliott> You have to keep the entire history of f around to make that thing work, which is a time leak.
17:15:52 <elliott> kallisti: oh, I fucked it up
17:16:26 <elliott> Anyway, that definition is still unreasonable, but I was complaining about the one-sample delays which -- actually I'm starting to get the feeling you skipped the first 5 pages of this paper.
17:16:35 <kallisti> yep.
17:16:52 <kallisti> too much words, not enough programs.
17:16:53 * elliott terminates this discussion.
17:17:06 <itidus21> ok i can help
17:17:12 <kallisti> but I read it ages ago, if that counts!
17:17:14 <itidus21> with a random topic destroyer
17:17:24 <itidus21> ok a question here.. is it possible to compute from a set of genes an image of what a lifeform will become. i guess environment is a factor. ((render genes) environment)
17:18:06 <itidus21> i think it is a case of "of course, if you had infinite computing power"
17:18:15 <kallisti> elliott: well you could force the delay to be a constant value in order to make it more efficient
17:18:40 <elliott> kallisti: Time leaks aren't just about "efficiency".
17:18:41 <itidus21> but the extent to which the rendering is dependant upon environmental factors could be very signifigant
17:18:50 <elliott> A time leak means your program isn't properly streaming/real time.
17:18:56 <kallisti> as far as I know most delayed signals are delayed by a constant offset.
17:19:01 <elliott> Which is, of course, crucial for signal processing.
17:19:20 <elliott> Phantom_Hoover: You love biology, right? Then you'll love itidus21's question!
17:19:47 <kallisti> elliott: but would a constant offset fix this?
17:19:49 <itidus21> "* elliott terminates this discussion." i should have realized this was a bluff
17:19:51 <itidus21> hehe
17:19:58 <Phantom_Hoover> hello
17:20:37 <itidus21> Phantom_Hoover: i really started to think about this question in the past in relation to video game characters
17:20:58 <itidus21> humm.. but only now am i making the full connection
17:21:05 <itidus21> video game characters with dna
17:21:07 <elliott> kallisti: In that one, specific case, yes. (It has the rather serious problem that for the first `d`, the value is undefined.)
17:21:24 <Phantom_Hoover> itidus21, genes cannot be used to reliably determine the properties of a final organism; indeed, it is probably impossible to reconstruct a single cell from them.
17:21:32 <kallisti> elliott: yes I thought about that.
17:21:37 <elliott> Jeans on the other hand...
17:21:40 <itidus21> Phantom_Hoover: and yet we read so much into them :P
17:21:53 <elliott> kallisti: Which is what my definition was trying to get at: you need a signal to use for the first d.
17:21:57 -!- Gregor has set topic: T-30 seconds 'til topic change | http://codu.org/logs/_esoteric/.
17:22:00 <Phantom_Hoover> They can still have a consistent influence.
17:22:12 <elliott> delay d f g = \t -> if d < t then f t else g (t-d)
17:22:14 <itidus21> Phantom_Hoover: i wonder if that is because genes don't contain life itself
17:22:17 <kallisti> elliott: ah
17:22:26 <itidus21> that it is impossible to uhh.. derive life directly from information
17:22:33 <Phantom_Hoover> itidus21, no, it's because the cell contains stuff which isn't directly coded for.
17:22:37 <kallisti> elliott: wait are you sure it's undefined? is negative time not allowed? :P
17:22:49 <elliott> kallisti: Generally the signals you use with DSP start at a given time.
17:23:00 <elliott> And so don't, in fact, stretch back to the beginning of time.
17:23:14 <elliott> kallisti: Anyway, it's basically the same issues as you get with dynamic event/behaviour switching that have been a large focus of FRP research for ages.
17:23:22 <kallisti> well... if they're continuous functions they would in most cases...
17:23:23 <elliott> Of course the chances of the authors of this having heard of any of it is ~0.
17:23:30 <elliott> kallisti: Um, no?
17:23:39 <itidus21> Phantom_Hoover: hm... but is there an order to that uncoded stuff?
17:23:41 <kallisti> > sin (-1)
17:23:43 <lambdabot> -0.8414709848078965
17:23:46 <elliott> ...
17:23:47 <elliott> You're an idiot.
17:23:48 <kallisti> is perfectly valid, for example.
17:23:57 <elliott> Also, "continuous" doesn't mean "with continuous domain".
17:24:21 <kallisti> what is an example of a function that breaks on a negative time value?
17:24:28 <elliott> kallisti: an input signal?!?!
17:24:35 <elliott> You know, what DSPs are used for?
17:24:36 <Phantom_Hoover> itidus21, sure, it's the (highly ordered) cell machinery.
17:25:00 <elliott> You don't have to specify an infinite signal history that stretches back to the beginning of time when using a DSP, unless I'm sorely out of date with current audio technology.
17:25:12 <itidus21> so what if i was to have a model with both cell machinery and the genetics of some lifeform
17:25:29 <kallisti> elliott: I think it would be better to just write another combinator that provides a value for negative times or something.
17:25:37 <kallisti> elliott: input signals would automatically have it applies to them.
17:25:40 <kallisti> 0 is a good value...
17:25:43 <kallisti> for integers.
17:26:04 <itidus21> Phantom_Hoover: a curious thing here for me is whether cell machinery varies from species to species
17:26:15 <kallisti> elliott: so basically what you wrote but split up into two functions
17:26:16 <Phantom_Hoover> 'Duh'.
17:26:18 <elliott> kallisti: Or you could not be an idiot, and either incorporate a notion of signal start time or use combinators like my proposed delay.
17:26:21 <itidus21> because if it does then it may be as unique as genetics
17:26:49 <kallisti> elliott: I don't se a difference what I said and what you said aside from I proposed that your delay function should be two different functions
17:27:02 <kallisti> because you may want that behavior elsewhere.
17:27:05 <kallisti> without a delay.
17:27:11 <itidus21> which suggests that the emphasis on genetics as a buzz word these days is slightly misleading
17:27:45 <itidus21> can lead to a question of, am i human because of my genetics or my cell machinery
17:27:50 <kallisti> and also, you may want to not use a default value for signals that /do/ go back to the beginning of time.
17:27:52 <elliott> kallisti: Because your model makes no damn sense, because your signals are necessarily partial functions (due to having a source signal not defined on negative inputs that you can transform with a default value) yet you somehow think you need more machinery to solve it beyond the delay-without-initial-signal definition already gaining meaning then (disregarding the fact that just making it a partial function is a dumb idea for many reasons)
17:27:58 <Phantom_Hoover> itidus21, since genetics are what are used to build that machinery, it's not a hugely meaningful distinction.
17:28:02 <itidus21> ohhh
17:28:25 <Phantom_Hoover> The problem is that fitting that machinery together /from the genes alone/, without a preëxisting copy of it, is probably impossible.
17:28:38 <itidus21> and is that because life feeds on life?
17:28:57 <elliott> `quote floored me
17:29:00 <HackEgo> 169) <alise> "Europe is the national anthem of the Republic of Kosovo." <cpressey> alise: I <cpressey> I was going to say something then your last line floored me
17:29:21 <Phantom_Hoover> No, it's because life, by and large, tends to be produced by other life.
17:29:21 <itidus21> sorry phantom.. all my questions tend towards antagonism in their wording
17:29:36 <kallisti> elliott: I still think it would be a good idea to have both
17:29:42 <kallisti> and my delay is not partial unless its input is partial.
17:29:55 <elliott> kallisti: (a) You have no idea what you're talking about. (b) See (a).
17:30:16 <kallisti> ?
17:30:26 <Phantom_Hoover> You never have a strand of DNA forming a cell in isolation, from a bootstrap protein coder and some amino acids; you have a cell using its DNA to expand and replicate its existing structures.
17:30:32 <kallisti> elliott "good at conversation" hird
17:30:44 <kallisti> I'm going to go conjure money from thin air brb
17:30:49 -!- Sgeo has quit (Quit: Have stuff I need to do. Be back whenever.).
17:33:21 <itidus21> part of my view is that even if we could engineer life, i don't think we should
17:33:22 <itidus21> i mean like creating sentient beings which are not created from other sentient beings
17:33:23 <itidus21> sentient? ahh tough word ... just life
17:33:36 <kallisti> elliott: oh. homework: prove that delay sin is a partial function. I eagerly await your conclusion.
17:33:52 <itidus21> basically if we could take something which is not life.. and turn it into life through engineering techniques.. we should not do it
17:34:14 <elliott> kallisti: Sorry, I only engage idiots when I'm feeling stupid.
17:34:17 -!- Nisstyre has quit (Ping timeout: 240 seconds).
17:34:29 <kallisti> elliott: and yet I am not wrong?
17:34:37 <Phantom_Hoover> itidus21, what about when something which was not life turned into life of its own accord?
17:35:08 <itidus21> then thats fine with me :D
17:35:33 <kallisti> elliott: by your definition map is a partial function because you can pass it a partial function.
17:35:59 <kallisti> therefore: ban use of map
17:36:08 <itidus21> i like the sex model of reproduction. sleep together night after night with lots of pleasure, and then one day the woman starts missing her period
17:36:28 <itidus21> its pretty good
17:37:21 -!- Nisstyre has joined.
17:37:49 <Phantom_Hoover> Nisstyre is fortunate to have been spared that.
17:39:55 <itidus21> to the extent that there is something called mathematics which is thought about by some and not by others, and that some identify with it, defend it, build it up, ... there is also misconceptions woven into it, mistakes, errors.. all of this is inherent simply because it was done by humans :P
17:40:27 <Phantom_Hoover> Except for the bits we've computationally verified.
17:40:31 <kallisti> nah, it's all proven by naive set theory.
17:40:36 <itidus21> the views of the mathematician tend to be shaped by the mathematics
17:40:53 <Phantom_Hoover> And the award for most vacuous statement goes to...
17:41:14 <kallisti> Phantom_Hoover: but computers are built by people too!
17:41:56 <itidus21> i wish i could more efficiently say the right things without mixing in the wrong things but
17:41:57 <itidus21> anyway
17:42:25 <itidus21> it is an inevitable result of specialization that everyone ends up developing thought patterns specialized for some lifestyle
17:42:43 <kallisti> itidus21: if you speak in this channel long enough people will force you to be exact.
17:42:55 <kallisti> so you're well on your way!
17:42:58 <itidus21> and different people looking at the same un-understandable thing, will inevitably see different thing
17:43:37 <elliott> <Phantom_Hoover> Except for the bits we've computationally verified.
17:43:48 <elliott> Phantom_Hoover: But but but, humans made the computer proofsystems too!!!!
17:43:50 <elliott> *proof systems
17:43:58 <kallisti> elliott: I know that's what I was saying!
17:43:59 <kallisti> !!!
17:43:59 <itidus21> the only regret is if you get lazy in your choice of lifestyle
17:44:01 <elliott> WOE BE US, UNABLE TO DO ANYTHING BECAUSE OF COGNITIVE BIASES
17:44:20 <elliott> itidus21: You say "the only regret" because it's "my only regret", right?
17:44:36 <itidus21> im making a prediction
17:45:08 <kallisti> elliott: I like how specifying a negative number in our delay functions produces a future value.
17:45:37 <itidus21> elliott: ok yes :P
17:45:48 <kallisti> elliott: and also breaks it for finite signals
17:45:57 <elliott> kallisti: I object to this use of the term "our"; only I've presented a working delay function.
17:46:10 <itidus21> i hate the feeling of knowing that my mind tricked me for another day into doing nothing
17:46:19 <itidus21> clever mind that it is
17:46:23 <kallisti> yours is a conditional on top of my delay function, to assist dirty partial functions.
17:46:24 <Phantom_Hoover> Damn you, mind!
17:46:28 <Phantom_Hoover> Always tricking my brain!
17:46:46 <elliott> kallisti: Please shut up.
17:46:55 <kallisti> elliott: that's not very nice.
17:47:03 <elliott> Indeed.
17:47:06 -!- Klisz has quit (Read error: Operation timed out).
17:47:31 <kallisti> elliott: so you're just going to be a jerk without explaining yourself? it's a wonder you have any friends.
17:47:38 <itidus21> i dunno what it takes to snap out of it.. whether i need to lose everything i've got before i start to take life seriously
17:47:44 <elliott> I do; they're considerably less annoying.
17:48:03 <quintopia> elliott: you have friends?!?!?
17:48:03 <lambdabot> quintopia: You have 2 new messages. '/msg lambdabot @messages' to read them.
17:48:09 -!- Klisz has joined.
17:50:20 <elliott> quintopia: On occasion!
17:52:43 <kallisti> elliott: anyway in kallisti Signal Processing your function is just delay d f g = if' (d < t) f (pureDelay (const d) g)
17:53:57 <elliott> kallisti: I really don't care.
17:55:29 <kallisti> oops
17:55:57 <kallisti> delay d f g = if' (d <) f (pureDelay (const d) g)
17:58:13 <kallisti> unfortunately booleans are not overloadable. :(
17:58:22 <elliott> That's not what if' does.
17:58:26 <kallisti> I know
17:58:28 <kallisti> that's not if' if'
17:58:30 <kallisti> it's a different if'
17:59:17 <kallisti> to conditionally switch between signals based on a control signal
18:00:21 -!- MSleep has changed nick to MDude.
18:02:02 -!- pikhq_ has joined.
18:02:26 -!- pikhq has quit (Ping timeout: 268 seconds).
18:05:00 <kallisti> actually instead of < I'd want something like...
18:06:28 <fizzie> "<fizzie> The box has a statistics page with byte counters that seem to be saturating 32-bit, because the numbers are stuck at 2147483647. --" <-- actually now some of them have wrapped back down, so maybe it's signed 32-bit with wraparound, and shows 2^31-1 for <0.
18:06:41 <kallisti> class SigOrd s where { lt :: s a -> s a -> s Bool; gt :: ... } -- probably doesn't need to be a typeclass
18:08:04 <elliott> fizzie: I think you might be exceeding the design limits.
18:08:23 <fizzie> Two gigabytes is not really much to download.
18:11:31 -!- pikhq has joined.
18:11:34 -!- pikhq_ has quit (Ping timeout: 252 seconds).
18:12:21 <Gregor> THAT'S LIKE THREE EPISODES OF MY LITTLE PONY
18:13:07 <kallisti> elliott: http://www.haskell.org/haskellwiki/Package_versioning_policy do people actually follow this?
18:13:09 <elliott> `addquote <fizzie> Two gigabytes is not really much to download. <Gregor> THAT'S LIKE THREE EPISODES OF MY LITTLE PONY
18:13:11 <elliott> kallisti: Yes.
18:13:13 <HackEgo> 797) <fizzie> Two gigabytes is not really much to download. <Gregor> THAT'S LIKE THREE EPISODES OF MY LITTLE PONY
18:13:22 <kallisti> elliott: do people actually not follow this as well?
18:13:58 <elliott> Most packages follow the PVP.
18:14:14 <kallisti> good. everything is as it should be.
18:15:14 <kallisti> elliott: do you actively provide import lists for all of your import statements to avoid the situation where a package update results in new name clashes?
18:15:37 <elliott> No.
18:15:43 <kallisti> I wouldn't either. :P
18:15:45 <Deewiant> I do.
18:16:21 <kallisti> granted, there are other good reasons to do that, but most of the time I don't really see a need to.
18:16:46 <kallisti> though there's a laziness threshold where, if I'm only using a small number of functions, I'll provide an import list for documentation.
18:16:56 -!- pikhq_ has joined.
18:17:15 -!- pikhq has quit (Ping timeout: 252 seconds).
18:23:42 <kallisti> hmm
18:23:52 <kallisti> if fourier transform only worked with positive frequencies
18:24:03 <kallisti> would it only be able to accurately preserve periodic functions?
18:25:13 -!- Sgeo has joined.
18:25:20 <kallisti> or are there combinations of phases that produce non-periodic results?
18:27:36 <kallisti> actually...
18:27:54 <kallisti> negative frequencies are equivalent to being "perfectly" out of phase
18:29:21 <kallisti> so... I guess fourier transform would only preserve periodic functions if it only represented natural coefficients (representing positive frequencies) .
18:29:23 <fizzie> I'm not entirely sure what you mean with "only work with positive frequencies". I mean, if you only specify (complex-valued) F(x) for x >= 0, then... I guess it defines a real-valued function f(x) for all (real) x. Since if you define F(-x) = conj(F(x)) and run that through the usual inverse transform you'll get a purely real f(x).
18:29:32 <olsner> hmm, what's that funny quote about causation causing correlation causing the correlation implies causation fallacy?
18:30:09 <elliott> olsner: "causation causing correlation causing the correlation implies causation fallacy" -olsner
18:30:18 <fizzie> And if you flip it so that F(-x) = -conj(F(x)) you'll get a purely imaginary f(x).
18:30:25 <olsner> elliott: no, not that one
18:30:32 <kallisti> fizzie: I meant if the fourier series was only positive real parts.
18:30:39 <kallisti> but now I mean only natural numbers.
18:30:55 <olsner> istr it was more similar to "Causation causes correlation causes correlation causes causation." but that doesn't sound quite right either
18:32:00 <olsner> `pastelog causation
18:32:13 <kallisti> fizzie: basically my question is: what subset of all possible Fourier series represents only periodic functions.
18:32:31 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.25517
18:34:07 <olsner> `pastelogs causation
18:34:20 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.21658
18:34:21 <fizzie> kallisti: Can't say I'm still quite grokking it. I mean, a Fourier *series*, which has a countable number of coefficients, represents only periodic functions, period. If you have a nonperiodic function, you can take its (continuous) Fourier *transform* instead.
18:34:50 <kallisti> oh nevermind..
18:35:05 <elliott> olsner: don't repaste, just wait a bit and refresh
18:35:11 -!- Sgeo has quit (Quit: Leaving).
18:35:18 <elliott> olsner: wtf, causation has only been said that few times in here?
18:35:23 <olsner> <oklofok> correlation correlating with causation is correlated with correlation causing causation, and thus causes correlation to cause causation
18:35:41 <kallisti> fizzie: hmmmm is the fourier transform still a time-varying signal?
18:36:56 <fizzie> kallisti: A Fourier transform of a continuous function with a real argument is a continuous function with a real argument, if that's what you mean. Conventionally the first one is called "time" and the second one is called "frequency", but you're certainly free to call both whatever.
18:37:16 <olsner> elliott: didn't I misspell it the first time, since pastelog gave nothing and pastelogs gave me results?
18:37:36 <kallisti> fizzie: I'm basically confused as to how a fourier transform can represent a non-periodic signal.
18:38:20 <elliott> olsner: the "error: not in manifest" thing is usually just a delay but i dunno what happened there
18:38:22 <elliott> `cat bin/pastelog
18:38:25 <HackEgo> ​#!/bin/sh \ cd /var/irclogs/_esoteric \ \ pasterandom() { \ if [ "$1" -gt 150 ]; then \ echo "No." \ exit \ fi \ for i in $(seq "$1"); do \ file=$(shuf -en 1 ????-??-??.txt) \ echo "$file:$(shuf -n 1 $file)" \ done | paste \ } \ \ if [ "$1" ]; then \ if expr "$1" + 0 >/dev/null 2>&1; then \ pasterandom "$1" \ else \ lines=$(grep -P -i -- "$1"
18:38:29 <fizzie> kallisti: S(f) = \int_{-\inf}^{\inf} s(t) * e^{-i*2pi*f*t} dt -- why would s(t) need to be periodic?
18:38:35 <elliott> `run ls -l bin/pastelog
18:38:38 <HackEgo> ​-rwxr-xr-x 1 5000 0 602 Jan 11 18:38 bin/pastelog
18:38:40 <elliott> `run ls -l bin/pastelogs
18:38:43 <HackEgo> ​-rwxr-xr-x 1 5000 0 602 Jan 11 18:38 bin/pastelogs
18:38:49 <elliott> wtf
18:38:50 <kallisti> fizzie: I can't read that...
18:38:51 <elliott> `run diff bin/pastelog{,s}
18:38:55 <HackEgo> No output.
18:39:01 <elliott> olsner: yeah no it's fine
18:39:04 <kallisti> fizzie: oh yes I can
18:39:05 <elliott> just a glitch
18:39:07 <fizzie> kallisti: Anyway, if you *do* apply that to a periodic s(t), then the resulting S(f) is a Dirac comb modulated with a discrete set of coefficients. (The Fourier series coefficients, namely.)
18:40:17 <olsner> so oklopol's sentence was the one I was thinking about but thinking some more about it it seems to mean the opposite of what I expected it to mean
18:40:49 <kallisti> fizzie: so is it because it's an integral and not a summation?
18:41:23 <kallisti> fizzie: I'm confused as to how the inverse transform can produce a non-periodic signal, as well.
18:43:09 <fizzie> kallisti: It's just another integral. I seem to recall it's reasonably simple to show that if you stick the "forward transform" inside the inverse transform integral, you'll be left with just the original f(t), with not too many assumptions on f(t).
18:43:52 <fizzie> kallisti: I mean, forward transform has e^{-i...} and inverse transform has e^{i...} with the same "..." in it, and then you just shuffle the integral signs around a bit and hope no mathematicians notice.
18:44:09 <elliott> `addquote <fizzie> [...] and then you just shuffle the integral signs around a bit and hope no mathematicians notice.
18:44:12 <HackEgo> 798) <fizzie> [...] and then you just shuffle the integral signs around a bit and hope no mathematicians notice.
18:44:53 <fizzie> kallisti: (If you have a Fourier series instead, the resulting function is periodic, since it's just a sum of complex exponentials.)
18:45:57 <kallisti> fizzie: right so basically I don't understand because I intuitively grasp fourier transform in terms of fourier series, and am really bad at calculus..
18:47:25 <Phantom_Hoover> fizzie, I NOTICED
18:48:12 <fizzie> Phantom_Hoover: OH NO. Okay, I'll leave the integral signs in place and just shuffle something in through the "back door" over the dt.
18:48:12 <Phantom_Hoover> kallisti, so in other words you grasp the Fourier transform as a magic box that turns a function into a series.
18:48:23 <kallisti> yep
18:48:39 <kallisti> though I get all of its components too!
18:48:45 <kallisti> like Euler's formula
18:48:52 <Phantom_Hoover> AKA "not grasping the Fourier transform at all".
18:48:52 <kallisti> and integrals
18:49:04 <kallisti> well, but not how to integrate complex numbers...
18:49:37 <Phantom_Hoover> Fourier transforms don't require any integration of complex numbers.
18:50:37 <kallisti> well they require integration of real numbers within complex number functions
18:51:28 <Phantom_Hoover> \int f(x) e^-2pi*i*x*zeta dx = \int (cos e^-2pi*x*zeta + i sin ({...})) = \int cos {...} + i \int sin{...}.
18:51:39 <Phantom_Hoover> Oh, wait.
18:51:39 <elliott> Being really bad at calculus is a great position to be in if you want to write signal processing code.
18:51:40 <Phantom_Hoover> Oops.
18:52:09 <Phantom_Hoover> Yeah that's still valid even with the f(x).
18:52:39 <kallisti> elliott: poking fun at people all day in an IRC channel is a great position to be in if you want to lead a fruitful life.
18:52:41 <fizzie> Phantom_Hoover: Just put suitable things in the {...} to compensate.
18:53:34 <fizzie> Phantom_Hoover: Sorry, misread as "that's still valid even without the f(x)" as in "f(x) e^{-2pi*i*x*zeta} = (cos e^{-2pi*x*zeta + i sin ({...})) for any f(x)".
18:53:38 <Phantom_Hoover> No, just f(x) before the sin and cos.
18:53:58 -!- kallisti has left.
18:55:29 <Phantom_Hoover> He could've at least quit first.
18:56:34 <fizzie> Or at least left with a "ragepat" message, that's the convention.
18:57:17 -!- azaq23 has joined.
18:57:26 -!- azaq23 has quit (Max SendQ exceeded).
18:58:47 -!- azaq23 has joined.
19:00:43 <elliott> kallisti doesn't seem to have realised that the "you're WASTING your LIFE so SAD" angle doesn't really work on IRC.
19:01:04 <Phantom_Hoover> On a programming channel, at that.
19:01:15 <elliott> Phantom_Hoover: One expressly dedicated to languages with absolutely no practical use.
19:01:26 <olsner> If you can read this text, you are wasting your life
19:01:44 <elliott> olsner: The blind people in the room thank you.
19:02:06 <Phantom_Hoover> elliott, that's not how esolangs are defined, is it?
19:02:07 <fizzie> If you can hear this text, you are doubly-wasting your life. (Take that, screenreader users.)
19:02:31 <elliott> fizzie: BRAILLE DISPLAY
19:02:33 <olsner> If you can feel this text, you are wasting your life
19:02:34 <elliott> S
19:02:38 <elliott> Damn,.
19:02:39 <elliott> Uh.
19:02:41 <fizzie> That was fast.
19:02:50 <fizzie> If you can smell this text, I don't know what's going on.
19:02:50 <elliott> Phantom_Hoover: Well, no, but it's practically true.
19:02:56 <elliott> fizzie: :D
19:03:00 <olsner> If you can fnarf this text, you are Gregor
19:03:29 <elliott> If you can taste this text, stop licking your screen.
19:03:44 <elliott> If you can propriocept this text, wtf?
19:04:45 <fizzie> If you can equilibriocept this text, don't you get seasick in your fancy rotating ball thing, huh?
19:04:48 <Deewiant> If that were a word, I think it should be "proprioceive".
19:04:49 <Phantom_Hoover> If you can... balance this text, you used the wrong cables.
19:04:56 <Phantom_Hoover> fizzie, damn you.
19:06:05 <olsner> If you couldn't divine this text, you suck at fortune telling
19:06:09 <fizzie> If you can feel this text as pain, you're probably not the only one groaning.
19:06:21 <elliott> Deewiant: You're a proprioceive.
19:06:35 <Deewiant> No, I'm a noun.
19:06:42 <elliott> If you can synesthese this text, cool!
19:06:46 <fizzie> Deewiant: Your MOTHER was a noun.
19:06:49 <Phantom_Hoover> If you can detect this text with your Golgi organ, you should really see a doctor.
19:06:58 -!- pikhq_ has quit (Ping timeout: 240 seconds).
19:07:01 <elliott> inb4 Deewiant complains about my verbing.
19:07:03 -!- pikhq has joined.
19:07:44 <elliott> If you can feel pain in your heart because of the intense predictability of this text, I empathise.
19:07:57 <fizzie> If you can echolocate this text, hello to our dolphin/bat/batman/etc. friends.
19:08:39 <elliott> omg do we have any dolphins in the channel
19:09:26 <fizzie> They're probably just hiding.
19:09:34 <elliott> hi dolfins :DDDDDDDddddddddd
19:12:50 <Deewiant> And that is /why/ they're hiding.
19:13:58 <Phantom_Hoover> If you can magnetocept this channel, we're sorry for messing up your migration patterns.
19:14:14 -!- DCliche has joined.
19:15:48 -!- kallisti has joined.
19:15:48 -!- kallisti has quit (Changing host).
19:15:48 -!- kallisti has joined.
19:17:16 <elliott> Phantom_Hoover: "Magnetoception" sounds like a bad one-word pitch for an X-Men film involving nesting or dreams somehow.
19:17:39 -!- Klisz has quit (Ping timeout: 248 seconds).
19:17:49 <Phantom_Hoover> M A G N E T O C E P T I O N
19:18:59 <kallisti> I had made the mistake of assuming this was a channel about topics in mathematics and computing. I have since corrected that flaw and will now be idle until I can think of ways to belittle others until I feel better about myself.
19:19:28 <olsner> hmm, extra-sensory perception is a weird concept... if such perception actually happened, wouldn't that just make it ordinary sensory perception?
19:21:12 <elliott> kallisti: Just so you know, the joining-and-throwing-the-gauntlet-down thing works better if you /quit afterwards.
19:22:48 <Phantom_Hoover> kallisti, you could go after iti, but he at least acknowledges his ignorance.
19:23:45 <kallisti> What's great is that I don't even have to prove my own point. I can just let people respond and have it proven automatically.
19:24:54 -!- kallisti has quit (Quit: leaving).
19:25:48 <elliott> fizzie: I think I'm going to have to step down from the Ragepart Professorship of Drama Kingliness.
19:25:51 <elliott> I'm not worthy.
19:25:53 <elliott> *Ragepat
19:25:58 <elliott> HOW CAN I TYPO A TYPO
19:27:40 <Phantom_Hoover> elliott, I don't know about that.
19:27:50 <Phantom_Hoover> It would be pretty hard to top the Optbot Incident.
19:28:31 <elliott> Phantom_Hoover: Like you haven't gotten annoyed about inconsistent op decisions.
19:29:44 <Phantom_Hoover> elliott, I also haven't made a bot which automatically clobbers the topic twice a day and refused to listen to any complaints.
19:31:17 <elliott> Phantom_Hoover: I like how you're making this an opportunity to complain about me for some incomprehensible reason? Anyway, I didn't "refuse to listen to complaints", I just found it amusing that the only people who whined about it were people who became active long after it was present for months and entered channel folklore (incl. e.g. being the inspiration for fungot's babble) without a single complaint.
19:31:17 <fungot> elliott: mr president, commissioner, and have all approved this text. i would also like to tell the house that, in june of this year, broadly reflect the new political framework for aid to the economic and social cohesion policy. after the speech by the president
19:32:31 <Phantom_Hoover> elliott, you brought up the topic of your rageparting, and then you went on the offensive the minute I mentioned one of your more notable ones.
19:33:50 <elliott> Phantom_Hoover: lol, but seriously fizzie is the one who mentioned ragepatting and I was replying to that, and I'm hardly "on the offensive", I'm just responding when you direct ridiculous comments at me.
19:34:21 <Phantom_Hoover> <Phantom_Hoover> It would be pretty hard to top the Optbot Incident. ← look at this ridiculous comment.
19:34:24 <Phantom_Hoover> Look at it.
19:34:32 <olsner> oh, ragepat means ragepaRt? makes more sense now...
19:35:28 <elliott> Phantom_Hoover: OK, you're clearly not going to be satisfied no matter what I say, so whatevs
19:35:42 <Phantom_Hoover> Yes, clearly.
19:35:45 <Phantom_Hoover> Let's end it now.
19:36:34 <elliott> That was ending it.
19:37:13 <olsner> argh! gitweb is doing git archive on everything, for no good reason
19:37:54 <elliott> http://www.youtube.com/watch?v=W7iuXAQYRcI
19:38:10 <elliott> olsner: gitweb offers tarball downloads
19:40:20 <olsner> elliott: that's not good enough!
19:40:51 <elliott> olsner: disable them then
19:41:28 <olsner> but this thing is configured by PERL CODE!
19:41:56 -!- pikhq_ has joined.
19:42:01 -!- pikhq has quit (Ping timeout: 240 seconds).
19:44:21 <olsner> $feature{'snapshot'}{'default'} = [];
19:52:47 -!- Vorpal has quit (Read error: Operation timed out).
19:59:37 -!- kallisti has joined.
19:59:54 <kallisti> olsner: you can omit those single quotes, btw.
19:59:59 <kallisti> :)
20:00:14 -!- Klisz has joined.
20:00:26 <Phantom_Hoover> kallisti, ...
20:01:08 <kallisti> Phantom_Hoover: what? it's a valuable piece of information.
20:01:31 <Phantom_Hoover> kallisti, you're not very good at ragepatting, are you.
20:01:40 <kallisti> I went to go pay a thing.
20:01:45 <kallisti> with money I conjured out of thin air.
20:01:51 <kallisti> from a little machine that gives out money.
20:02:11 <Phantom_Hoover> I don't recall you fixing your rehosting problem.
20:02:12 <kallisti> god bless America land of free money*
20:02:21 <kallisti> (*see terms and conditions)
20:02:39 <kallisti> Phantom_Hoover: there never was one.
20:02:41 <Phantom_Hoover> You reconnected and joined here later.
20:02:54 <kallisti> that happened once because I don't remember why.
20:03:05 -!- DCliche has quit (Ping timeout: 260 seconds).
20:04:32 <kallisti> anyway I can just put elliott on ignore and then have (mostly) a channel that is constructive.
20:04:39 <kallisti> so no need to quit.
20:05:34 <kallisti> I doubt he would mind either.
20:05:42 <kmc> so much drama
20:06:41 <cheater_> so much drummer
20:07:28 <Phantom_Hoover> cheater_, fuck off.
20:07:30 -!- Sgeo has joined.
20:07:37 <kallisti> Sgeo: hey
20:07:44 <cheater_> Phantom_Hoover, fuck on
20:07:46 <Sgeo> Hi
20:08:03 * Sgeo registered for classes
20:08:05 <Sgeo> :/
20:08:07 <elliott> kallisti: Nobody ever puts me on /ignore.
20:08:54 <olsner> so much drarmar
20:09:09 <elliott> ^ul (Or at least, nobody ever puts fungot on /ignore.)S
20:09:09 <fungot> Or at least, nobody ever puts fungot on /ignore.
20:09:13 <Phantom_Hoover> Sgeo, which classes.
20:09:33 <kallisti> fungot: hi
20:09:33 <fungot> kallisti: mr president, the british government to reconsider its view on this rather than the press, newsprint, the printing houses and advertising. in that context insofar as subsidiarity is concerned.
20:09:47 <Sgeo> "Virtualization/Cloud Computing", Human Body/Health & Disease, The West and the World
20:10:00 <Sgeo> (+lab for Human Body Health and Disease)
20:10:55 <Sgeo> Uh, I forgot something, blargh
20:11:08 <Sgeo> Oh, forgot to register for UNIX Operating Systems II
20:11:17 * elliott predicts kallisti's /ignore will last until he needs Haskell help.
20:11:26 <fizzie> olsner: So much drachma (δραχμή).
20:11:43 * Phantom_Hoover notes that not one of Sgeo's classes are CS.
20:12:02 * Sgeo notes that there IS no CS at this college
20:12:19 <kallisti> I'm not taking any CS classes this semester either.
20:12:22 * Phantom_Hoover notes that dude seriously get out as soon as possible FFS
20:12:39 <kallisti> unless you count intro to advanced math.
20:12:47 <kallisti> where I get learn about COUNTABLE AND UNCOUNTABLE SETS.
20:12:51 <kallisti> in like... chapter 9.
20:13:04 * Sgeo has been pondering just graduating with a BS in this BS degree, then doing CS elsewhere
20:13:33 <kallisti> how do you get a Ph.D if you're really bad at school?
20:13:49 <kallisti> I doubt that's even something I want to do.
20:13:53 <Phantom_Hoover> Sgeo, the problem is that your college is terrible enough that nobody will care what you did there.
20:14:10 <olsner> Sgeo: a BS in bullshit?
20:14:15 <Sgeo> olsner, indeed
20:14:57 <olsner> you should just go get a job instead
20:15:14 <kallisti> this is my plan.
20:15:24 * Phantom_Hoover notes that apparently the readership of the Guardian don't realise that 3 As at A-level does not mean you should be at Oxbridge.
20:18:42 <Sgeo> olsner, I'm going to look for an internship at some point
20:19:16 <olsner> after your brain has rotted to mush at this school of yours? :)
20:23:50 <Phantom_Hoover> Sgeo, how do college admissions even work in the US?
20:24:04 <Sgeo> Good question, I don't remember
20:24:14 <kmc> poorly
20:24:17 <Phantom_Hoover> ...
20:24:24 <elliott> Phantom_Hoover: Don't be silly, I'm sure his father took care of that.
20:24:29 <Phantom_Hoover> Surely you had to go through the process?
20:24:38 <Sgeo> Phantom_Hoover, yes, in 2008.
20:24:48 <Sgeo> Wait, actually
20:24:57 <kallisti> Phantom_Hoover: they look at grades and SAT scores mostly.
20:25:03 <Sgeo> I was enrolled as non-matriculated for a while at first, then "transferred" in
20:25:04 <kallisti> and soemtimes you have to write about things.
20:25:07 <kallisti> depending on the school
20:25:07 <Phantom_Hoover> Yes, but what do you actually /do/?
20:25:09 <kallisti> it's basically dependent on each school.
20:25:24 <Phantom_Hoover> I assume you don't have anything as pinko commie as UCAS.
20:25:44 <kallisti> if it can be described as "pinko commie" then no.
20:25:46 <pikhq_> Phantom_Hoover: Fill out application form, hand them information they ask for (typically school transcripts, SAT/ACT scores, maybe an essay)
20:25:46 <kallisti> we don't have it.
20:25:54 <kmc> anything can be described thus
20:26:00 <kmc> there is a common application accepted by many but not all US schools
20:26:10 <kmc> https://www.commonapp.org/
20:26:20 <kmc> some also require supplemental materials
20:26:25 <Phantom_Hoover> pikhq_, so you could apply to an indefinite number of colleges?
20:26:35 <pikhq_> If you have the patience, yes.
20:26:35 <kallisti> sure. there are fees usually.
20:27:28 <Phantom_Hoover> Sgeo, did you even *try* to get into anywhere other than Farmingdale?
20:27:38 <kmc> also some states have common applications
20:27:41 <Sgeo> Phantom_Hoover, no.
20:27:43 <kmc> for their public school systems
20:27:56 <kmc> like you apply to all the University of California schools at once
20:28:08 <kmc> you just say which ones you are interested in
20:28:25 -!- oerjan has joined.
20:28:32 <kallisti> oerjan: hey
20:28:36 <oerjan> evening
20:29:52 <elliott> Phantom_Hoover: Hey, he aimed high. You're the one applying to Cambridge!
20:30:34 <oerjan> cambridge isn't high?
20:31:14 <Phantom_Hoover> Obviously not, if dead household appliances can apply.
20:31:42 <elliott> oerjan: Yes, so Phantom_Hoover's a hypocrite.
20:31:50 <elliott> He's just jealous of Farmingdale students.
20:32:30 <Phantom_Hoover> do they have hills there there aren't any hills in cambridge it scares me
20:32:37 <Phantom_Hoover> it's just 180 degrees of sky
20:32:39 <kallisti> BUGS
20:32:39 <kallisti> Numbered backupfile creation might have problems if the filename (not the backup number) contains the first six digits of the speed of light (in m/s)
20:33:00 <kallisti> http://search.cpan.org/~rgiersig/Tie-Persistent-1.00/Persistent.pm
20:33:37 <Phantom_Hoover> why
20:33:59 <kallisti> no idea.
20:37:10 <kallisti> !perl use Tie::File
20:37:13 <EgoBot> No output.
20:37:45 <kallisti> !perl tie @arr, 'Tie::File', 'foo.txt' or die
20:37:46 <EgoBot> Can't locate object method "TIEARRAY" via package "Tie::File" at /tmp/input.30334 line 1.
20:37:59 <kallisti> !perl use Tie::File; tie @arr, 'Tie::File', 'foo.txt' or die
20:38:00 <EgoBot> Died at /tmp/input.30398 line 1.
20:47:06 -!- Ngevd has joined.
20:47:20 <Ngevd> Hello!
20:55:18 -!- elliott has quit (Ping timeout: 276 seconds).
20:55:38 <kallisti> Ngevd: ey
20:55:40 <kallisti> +h
20:55:50 <Ngevd> How are you, kallisti?
20:55:51 -!- monqy has joined.
20:56:22 <kallisti> Ngevd: not bad. working on programming stuff as usual.
20:56:35 <Ngevd> :)
20:57:30 <Ngevd> Did I mention that during my General Studies exam I temporarily exchanged my phone for a raffle ticket labelled "128"?
21:00:04 <oerjan> `frink c -> m/s
21:00:16 <HackEgo> 299792458
21:00:35 <Ngevd> `frink c -> yards/s
21:00:48 <HackEgo> 374740572500/1143 (approx. 3.278570188101487e8)
21:00:51 <Phantom_Hoover> Ngevd, you mean they had a phone exchange system?
21:01:06 <Ngevd> Phantom_Hoover, precisely.
21:01:25 <Phantom_Hoover> (hahahaha general studies)
21:01:45 <olsner> I think they just give you back the phone you gave them, without bothering to even exchange them
21:01:57 <Ngevd> (school put us all in, too much effort to bother to opt out)
21:02:34 <oerjan> Ngevd: lucky you won it back
21:02:49 <Ngevd> oerjan, nah, there're better prizes
21:03:21 -!- zzo38 has joined.
21:06:06 <Phantom_Hoover> Ngevd, like an A-level in General Studies!
21:06:09 <Phantom_Hoover> Whoops no that's worthless
21:06:40 <Ngevd> I fell asleep during the exam
21:06:45 <Ngevd> And now I will brb
21:07:30 * oerjan is irritated by windows update slowing his google searches to a halt.
21:08:07 <oerjan> which means i cannot find out which car brand they use for second prizes in jokes these days. (first prize: fruit basket)
21:08:30 <oerjan> also, in the uk.
21:09:36 -!- Ngevd has quit (Read error: Connection reset by peer).
21:09:44 -!- Ngevd has joined.
21:09:50 <oerjan> i guess tata nano or something
21:11:28 * oerjan puts his joke dissection scalpel in the ...dammit i'd have to google for that too
21:11:36 <Ngevd> Hello
21:11:57 <oerjan> autoclave
21:12:17 * oerjan actually remembered it without googling
21:12:53 -!- DeadlyFugu has joined.
21:13:28 -!- oerjan has set topic: We apologize for the recent topic change delay | http://codu.org/logs/_esoteric/.
21:15:32 -!- oerjan has quit (Quit: Ye olde reboot request).
21:18:35 <fizzie> We don't really have notable hills at WaveU, but that's all right; we don't have hills in the whole country either. (Okay, there's a hill-alike (an I-can't-believe-it's-not-a-hill?) but it's off to the side of most things; and there's a bit of an incline at the east-side sea-shore.)
21:19:32 -!- oerjan has joined.
21:20:25 <Phantom_Hoover> fizzie, aaaaand Finland is off the list of places to visit.
21:21:00 <fizzie> Phantom_Hoover: There's some hills up there in the north, but they're not much to speak of.
21:21:34 <itidus21> so im not the only one running windows
21:21:38 <oerjan> come to hilly norway
21:21:47 <oerjan> also chilly
21:22:16 <Phantom_Hoover> fizzie, OK, when we get rid of Sweden, maybe we can give you its hills?
21:22:27 <olsner> Sweden has hills?
21:22:30 <itidus21> come to australia, we have deserts, surf beaches, snow capped mountains, forests
21:22:31 <fizzie> oerjan: "c?hilly".
21:22:36 <fizzie> olsner: More than we do.
21:22:36 <Deewiant> I walk uphill every time I travel to and from school, I don't know what you're talking about.
21:23:35 <fizzie> Deewiant: I don't know what hill that is. I mean, there's a bit of a hump at the library, and then the hill-alike which I mentioned which is at the student village side, and I suppose there's some sort of a thing towards that water tower but who goes *there*?
21:24:00 <fizzie> Phantom_Hoover: I sure hope you've already discounted Denmark, though? http://satwcomic.com/highest-points
21:24:01 <Ngevd> And thus fizzie finds out exactly where Deewiant lives
21:24:31 <fizzie> Ngevd: I'd've assumed the student village, but he said he's in Helsinki somewhere.
21:24:53 <fizzie> Deewiant: Unless you mean "uphill" from the Lehtisaari side?
21:25:05 <Deewiant> I don't.
21:25:22 <Sgeo> Phantom_Hoover won't visit a place unless it has hills?
21:25:38 <Deewiant> Does walking up a long staircase from underground count as going uphill?
21:25:39 <Phantom_Hoover> Except in exceptional circumstances.
21:25:52 <Phantom_Hoover> No.
21:26:40 <Ngevd> There is a place in Hexham called "Windmill Hill"
21:27:01 <Ngevd> And another called "Causey hill"
21:27:20 <fizzie> Okay, now that I think of it, there is indeed some bumpiness near the Dipoli area there. It's just that my "grounds" (around the CS building) are rather flat.
21:27:25 <fizzie> It's mostly just parking places.
21:27:32 <Deewiant> The street I live on even has "mountain" in its name.
21:27:55 <Phantom_Hoover> Edinburgh has Seven Hills, but nobody can agree on what they are
21:28:14 <Ngevd> Like Rome and Istanbul!
21:28:47 <zzo38> But some people cannot agree on the splitting of the Ten Commandments either.
21:28:59 <fizzie> Deewiant: Vuorimiehenkatu? Punavuorenkatu? (I've lived there!) Okay, I'm just guessworking here.
21:29:57 <Deewiant> Going to iterate through all the possibilities? :-P
21:30:22 <fizzie> Deewiant: Not unless you're going to say #t to one.
21:30:47 <fizzie> When I was born we lived at Tarkk'ampujankatu, lit. "marksman's street", yet I (probably) can't shoot worth a thing.
21:31:19 <fizzie> That's marksman as in sharpshooter, I don't really know which term is proper.
21:32:03 -!- pikhq has joined.
21:32:43 <Phantom_Hoover> There's a street in Edinburgh called Princes street, which confuses everyone.
21:32:44 <Deewiant> And now you're on some kind of "flatland street" with no hills anywhere?
21:32:48 <fizzie> Deewiant: Korkeavuorenkatu? No, then you'd probably have said "high mountain" or something. Hmm.
21:33:00 -!- pikhq_ has quit (Ping timeout: 276 seconds).
21:33:29 <fizzie> Deewiant: No, actually I'm on a hill right now. Ohhhhh, were you protesting my "no hills in the country" statement instead of the "no hills at WaveU" one?
21:34:23 <Deewiant> Yes, that was mostly it. At least the economical WaveU has a bit of a hill going on, too, though.
21:34:47 <fizzie> I don't really mentally consider those WaveUs yet.
21:35:30 <Deewiant> And there is that dipoli business, although it's not particularly WaveU in my opinion.
21:36:05 <Phantom_Hoover> WaveU?
21:38:27 <fizzie> Deewiant: Where can I find a good topographical map? I want to know how high my hill is. Karttapaikka used to have different maps, but apparently no longer; there's contour lines but no labels in it. Espoo's map service doesn't have one either; nor Eniro.
21:38:44 <fizzie> There was some place, it even had heights of buildings and all.
21:38:51 <Deewiant> Google Earth?
21:38:54 <kallisti> where can I get a large volume of compositions in a machine-readable format including non-note annotations like legato, comments, etc
21:39:11 <fizzie> /usr/bin/googleearth: 14: /usr/lib/googleearth/googleearth-bin: not found
21:39:15 <fizzie> Whoops, it has borkened.
21:39:26 <kallisti> as well as performances of said compositions.
21:39:33 <Deewiant> fizzie: Google maps as well, evidently.
21:39:43 <Deewiant> Use the Cloud.
21:39:48 <kallisti> so that I can, say, analyze what happens when sheet music says "legato"
21:40:41 <fizzie> Deewiant: I don't know what that means. I know it has the "terrain" map, but can it also tell heights?
21:41:04 <Phantom_Hoover> Use that Minecraft scale model.
21:41:19 <Deewiant> I assumed it could but it seems as though not, after all.
21:41:45 <oerjan> @where faq
21:41:46 <lambdabot> http://www.haskell.org/haskellwiki/FAQ
21:41:49 <kallisti> distant future goal: write a Haskell program that accurately plays Gymnopedie No. 1 by Erik Satie, with the same style and pacing.
21:41:53 * oerjan just testing
21:41:58 <fizzie> Hey, that walk-and-bicycle reittiopas plots a height-graph for routes, I can try that. Though there are no roads over the top of the hill. :/
21:42:17 <Deewiant> fizzie: You can order one from maanmittauslaitos.fi.
21:43:12 <fizzie> Deewiant: "Yay." (Also, wasn't there a recent decision that Maanmittauslaitos can/has to release more map data freely starting from some-date-in-the-future?)
21:43:29 <Deewiant> Dunno.
21:44:06 <fizzie> Okay, the walk/bicycle route thing says I start from +38m, and then drop down to +2m (presumably from sea level) when going from home to WaveU.
21:44:11 <Deewiant> Do you have a GPS device?
21:44:50 <Deewiant> Well, I guess that's good enough.
21:45:01 <fizzie> It probably gets the order of magnitude right.
21:45:27 <fizzie> And I guess 40 metres counts as a hill. (The top is probably ten metres or so higher up still.)
21:46:33 <Deewiant> I'm only at +27m.
21:47:28 <Deewiant> And WaveU appears to be at +7m?
21:49:31 -!- Ngevd has quit (Quit: goodnight).
21:51:37 -!- DeadlyFugu has quit (Ping timeout: 252 seconds).
21:57:03 -!- Jafet has quit (Quit: Leaving.).
22:09:44 <fizzie> Deewiant: Munkkivuoren puistotie? Siltavuorenpenger? I'm grasping at straws here. (Sorry, had to empty a waiting laundry machine.)
22:10:13 <Deewiant> I hope you're checking that those are at +27m.
22:10:45 <fizzie> No, and I don't think e.g. Munkkivuoren puistotie is.
22:11:20 <fizzie> Or could it be just Vuorikatu? That'd be dastardly.
22:11:48 <Deewiant> Heh, sorry, I'm not that dastardly.
22:20:36 <fizzie> You mentioned the subway recently, maybe I should look near the stations; though sadly I don't know anything about the streets east of Sörnäinen. Vilhonvuorenkatu? Kulmavuorenkatu? Tupavuori? Sorsavuorenkatu? Vuorenpeikontie? (Yes, yes.) Roihuvuorentie? Oh no, the subway *branches*.
22:20:46 <fizzie> I'll be back to check the heights of all these when I have some free time.
22:21:53 <fizzie> Or maybe I'll just give up; what's the point of any of this, anyway?
22:22:12 <fizzie> In fact, why on earth are you making me do this? This is stupef. I quit.
22:22:18 <itidus21> you're an anorak
22:24:43 <fizzie> Isn't that some sort of a jacket?
22:25:25 <Deewiant> I submit that I wasn't making you do anything.
22:25:26 <itidus21> precisely
22:25:37 <fizzie> Implicitly.
22:25:42 <itidus21> oh hmm
22:25:50 <Deewiant> But I can give you your #t now.
22:26:12 <fizzie> Okay, then I'll feel justified in stopping.
22:26:31 <itidus21> an anorak is a term for someone who wears an anorak due to their fairly specific hobby
22:27:05 <itidus21> i think it is something llike going out to the piers with a shortwave radio and listening in on ships broadcasts
22:27:21 <itidus21> not entirely sure
22:27:40 <itidus21> i was getting them confused with trainspotters when i said it
22:28:33 <itidus21> ive probably muddled up my facts somewhere in it
22:29:05 <fizzie> Is this a global term or just something you do?
22:29:24 <fizzie> I mean, not "you" personally.
22:29:34 <fizzie> But a regional group of people.
22:29:36 <fizzie> Or something.
22:29:58 <fizzie> Apparently it is a well-established thing.
22:30:02 <fizzie> The more you know, I guess.
22:30:21 <fizzie> Should've followed the "Anorak (Slang)" disambig link when I was at the Anorak page the first time.
22:30:36 <fizzie> British slang, they say.
22:30:38 <zzo38> Is the "monoidal monad" article in Wikipedia, are the second and third formulas like a applicative functor (where the morphisms being equal is like pure = return)? Is there any relation to Cartesian closed categories?
22:31:14 * Phantom_Hoover → sleep
22:31:19 -!- Phantom_Hoover has quit (Quit: Leaving).
22:34:32 -!- KingOfKarlsruhe has quit (Remote host closed the connection).
22:38:22 <zzo38> Does a Kleisli category have its own monads?
22:46:55 -!- cheater_ has quit (Quit: leaving).
22:57:15 -!- Patashu has joined.
22:58:40 <kallisti> !perl sub test {return (1,2);}; print test{1}
22:58:41 <EgoBot> 12
22:58:47 <kallisti> !perl sub test {return (1,2);}; print (test{1})
22:58:47 <EgoBot> 12
22:58:50 <kallisti> erm
22:58:59 <kallisti> !perl sub test {return (a=>b);}; print (test{a})
22:59:00 <EgoBot> ab
22:59:03 <kallisti> wat
22:59:15 <kallisti> !perl sub test {return (a=>b);}; print ((test){a})
22:59:16 <EgoBot> syntax error at /tmp/input.10384 line 1, near "){" \ Execution of /tmp/input.10384 aborted due to compilation errors.
23:01:50 <oerjan> :t Kleisli
23:01:51 <lambdabot> forall a (m :: * -> *) b. (a -> m b) -> Kleisli m a b
23:03:07 <oerjan> eta :: Kleisli m a (T a); mu :: Kleisli m (T (T a)) a
23:03:56 <oerjan> *eta :: Kleisli m a (T a); mu :: Kleisli m (T (T a)) (T a)
23:04:03 <oerjan> tha latter isomorphic to T (T a) -> m (T a)
23:04:34 <oerjan> and the former a -> m (T a)
23:04:54 <oerjan> which looks a bit like a transformer
23:05:21 <oerjan> zzo38: maybe monad transformers give monads in the kleisli category?
23:06:28 <oerjan> or maybe T itself just needs to be a monad
23:07:12 <oerjan> eta = return . return; mu = return . join
23:11:34 <zzo38> oerjan: I thought about that still I don't know
23:23:57 <kallisti> `perl @{undef}
23:24:01 <HackEgo> Can't open perl script "@{undef}": No such file or directory
23:24:06 <kallisti> !perl @{undef}
23:24:07 <EgoBot> No output.
23:24:32 <kallisti> !perl use strict; @{undef}
23:24:33 <EgoBot> Global symbol "@undef" requires explicit package name at /tmp/input.13293 line 1. \ Execution of /tmp/input.13293 aborted due to compilation errors.
23:24:37 <kallisti> oh lol
23:24:43 <kallisti> !perl use strict; @{+undef}
23:24:43 <EgoBot> Can't use an undefined value as an ARRAY reference at /tmp/input.13351 line 1.
23:25:31 <zzo38> I could probably still win the D&D game with only half as much power points.
23:27:08 -!- DeadlyFugu has joined.
23:32:36 <oerjan> <elliott> Sgeo: I'm rapidly becoming sure you don't understand how locks work <-- maybe he's actually a talking dog
23:32:59 <oerjan> hm elliott deficiency
23:33:05 <oerjan> no wonder it was silent
23:33:12 <oklofok> locks are used for closing something so so hard that you need a whole key to open it
23:33:49 <oklofok> that's what topology lacks
23:33:53 <oklofok> keys and locks :o
23:33:57 <oerjan> ic
23:34:09 <oklofok> you do?
23:37:43 <oerjan> i can confirm i don't recall any keys or locks in topology
23:42:17 <oklofok> math has been overwhelmingly awesome this week
23:42:22 <oklofok> it's scary
23:43:52 <oerjan> oklofok: the universe is probably balancing out the collapse of my ZipList monad definition
23:44:14 <oklofok> well i didn't say i've actually succeeded in anything
23:44:33 <oklofok> although sofar, i've managed to stick to my at least one result a day policy this year
23:49:55 <oklofok> although today's results were rather silly. but i may just have the awesomest conjecture
23:50:03 <oklofok> let X be a zero-entropy subshift
23:50:15 <oklofok> then X is totally disconnected in the Weyl topology
23:50:19 <oerjan> <Phantom_Hoover> Wow, a drug which is literally the mirror image of another drug by the same company. <-- someone should point out that mirroring organic molecules can give something with completely different effects.
23:51:27 <oklofok> where the distance of two points is given by for each n taking the n-block where they have maximal difference a_n, and then taking lim sup of a_n/n
23:52:03 <oklofok> this is not true for the related Besicovitch topology where instead of maximizing difference of n-blocks you take this at the origin
23:52:13 <oklofok> (note that the origin still doesn't actually play any sort of role)
23:52:31 -!- pikhq has quit (Ping timeout: 240 seconds).
23:52:36 <fizzie> oerjan: I was under the impression that didn't need to be pointed out due to obviousness.
23:52:40 -!- pikhq has joined.
23:53:44 <oerjan> fizzie: well the discussion sounded like people were assuming mirroring a drug was a trivial change
23:54:12 <oklofok> "mirroring organic molecules can give something with completely different effects." i don't even believe this so i don't think it's obvious
23:55:11 <oerjan> oklofok: well, it's true.
23:57:15 <oklofok> but WHY?
23:57:41 <fizzie> Because CHEMISTRY.
23:58:04 <oerjan> because nearly all cell machinery is built with only one handedness, and so only will interact with the handedness version they are evolved to interact with
23:58:12 <oerjan> *version of molecules
23:58:36 <oklofok> oh you didn't mean that EVERY molecule of the drug is flipped?
23:58:50 <oerjan> um yes.
23:59:06 <oklofok> well i mean
23:59:16 <oklofok> it's obvious that it will work differently on a human
23:59:32 <oklofok> but if you flip him
23:59:37 <oklofok> won't it be the same drug?
2012-01-12
00:00:01 <oerjan> yes, probably, but the supply of flipped humans is remarkably low.
00:00:20 <fizzie> There's an Asimov (IIRC) story about a flipped human.
00:00:34 <fizzie> He has problems digesting, if I recall correctly.
00:00:43 <oklofok> to me that sounds like an excuse for being able to patent the same thing twice.
00:00:52 <fizzie> But it might not be altogether factually accurate.
00:00:59 <oklofok> fizzie: not to mention being LEFT-HANDED
00:01:13 <oerjan> oklofok: but it won't have the same effect on a human, so why should they be equivalent patents?
00:01:14 <oklofok> dear god.
00:01:45 <oklofok> umm
00:01:51 <oklofok> i have to think about this
00:02:02 <oklofok> i mean
00:02:18 <oerjan> http://en.wikipedia.org/wiki/Chirality_(chemistry)#In_biology
00:03:13 <oklofok> let's say there's a drug that works just like aspirin, except that a permutation f is built between humans such that it actually works on you (x) like aspirin would've worked on f(x)
00:03:33 <oklofok> of course i suppose the situation is a bit different
00:03:34 <oklofok> more like
00:03:45 <oklofok> a bijection is built between humans and stones
00:04:01 <oklofok> okay so maybe you win for now
00:04:15 * oerjan victory dance
00:04:16 <fizzie> Oh no, it's the glove example (in Wikipedia).
00:05:15 <fizzie> Also I've been told that d-LSD, which does stuff to people, has a stereoisomer l-LSD, which does not do anything. (But I doubt there are patent issues there.)
00:06:47 <oklofok> that's the best description of lsd i've ever heard
00:07:35 <oklofok> A totally pure salt of LSD will emit small flashes of white light when shaken in the dark.[5] LSD is strongly fluorescent and will glow bluish-white under UV light.
00:07:36 <oklofok> :O
00:08:00 <oklofok> lsd must be the second coming of fucking jesus o_O
00:08:59 <fizzie> Also you can hear God's voice if you put some in your ear. (Not true.)
00:09:56 <oklofok> i think you'd hear a lot of things
00:11:08 <fizzie> I was probably thinking of that seashell/ocean thing there.
00:13:43 <Sgeo> kallisti, update
00:28:41 <zzo38> It is why I say they should abolish patents
00:36:18 <zzo38> Done next recording of D&D game.
00:37:16 -!- DeadlyFugu has left ("Leaving").
00:37:38 <itidus21> i think to understand patents you have to understand that investors need a way to protect their investments to avoid the investment market reducing to lowest common denominator of some kind
00:37:54 <itidus21> i think patent system is nothing more than investment protection
00:38:06 -!- oerjan has set topic: Now with itidus21's patented random topic destroyer | http://codu.org/logs/_esoteric/.
00:38:29 <itidus21> there was a topic?
00:38:31 <zzo38> The patent system still needs to be adjusted a lot, even if they do not abolish it entirely. But my opinion is it should be abolished.
00:39:16 <oerjan> itidus21: yes, it said "We apologize for the recent topic change delay | http://codu.org/logs/_esoteric/"
00:40:04 <itidus21> well recently i have heard about a flood of new laws in usa all of which are terrifying
00:40:36 <itidus21> i don't think there is any hope for someone who isn't a cog in a corporation
00:41:53 -!- oerjan has set topic: New US law banning itidus21's patented random topic destroyer | http://codu.org/logs/_esoteric/.
00:41:58 <itidus21> 1 such danger which i guess is not a law is some items that were in public domain being pushed back into the non-public domain
00:42:05 <oerjan> i think it's best to nip this in the bud
00:42:22 <zzo38> itidus21: How does that work?
00:42:50 <itidus21> another is the thing about how us military can now take you away if they want to
00:43:03 <itidus21> i think.. i dunno if that one is gone though
00:43:14 <itidus21> then again theres SOPA.. i dunno much about that, probably going through
00:43:22 <zzo38> They are certainly seems dumb laws
00:43:35 <itidus21> i dunno how factual i am being since i dont research well
00:43:55 <itidus21> anyway, theres also some business about changing the way the patent system works drastically
00:44:45 <zzo38> Then, hopefully they will correct it instead of making it stupid a second time.
00:45:00 <kallisti> ha ha ha
00:45:12 <oklofok> well it's obvious that humanity is doomed anyway so who gives a fuck
00:45:15 <itidus21> heard recently theyre looking into some kind of nicotine patch equivalent for marijuana using a mouth spray based on cannabis for helping addicts, after it was useed to help multiple sclerosis.. not sure about this either
00:45:18 <zzo38> But they probably don't know how to correct it
00:45:43 <kallisti> itidus21: cannabis addiction? no such thing.
00:45:48 <kallisti> not in the same way as nicotine.
00:46:01 <oklofok> i don't belive in nicotine addiction
00:46:17 <oklofok> i've been smoking half a pack a day for half a year and i don't have one
00:46:34 * kallisti actually quit smoking cigars recently.
00:46:43 <kallisti> I still smoke hookah occasionally but it's pretty much neglible to my health.
00:46:46 <kallisti> like once a week at most.
00:46:52 <kallisti> lately it's been like a month.
00:46:54 <itidus21> also.. in nigeria there was some kind of thing that 200,000 polio vaccinations contained some kind of stuff which can lead to problems giving birth
00:47:13 <itidus21> i just find random bits of troubling news i think
00:47:28 <oklofok> i have a smoking addiction, obviously. it's a fun way to pass time. but i don't actually feel anything if i skip a day or two. i just occasionally think i wish i had an excuse to go outside.
00:49:36 <oklofok> same for caffeine addiction, but caffeine at least feels like a drug, nicotine doesn't even seem to have any sort of effect on me. i tried snus but it doesn't do anything.
00:50:11 <oklofok> as for smoking, the first cigarette of the day feels nice, after that it's just an excuse to walk a bit and go outside.
00:50:17 <kallisti> nicotine is comparable to heroin in terms of addictive potential
00:50:26 <kallisti> cannabis, on the other hand, is incapable of creating a physical dependence.
00:50:33 <kallisti> I don't see what a patch would accomplish
00:50:38 <kallisti> aside from being another source of THC for someone to take.
00:51:01 <itidus21> well apparently they're able to take out the THC a bit or something
00:51:09 <oklofok> and i assume it feels nice because you don't get as much oxygen as you need if you smoke passionately.
00:51:13 <oklofok> so you get a bit dizzy
00:51:26 <oklofok> snus doesn't have this, and probably for this reason never feels like anything
00:51:26 <kallisti> oklofok: that's part of it
00:51:31 <kallisti> I get crazy light-headed when I smoke hookah
00:51:41 <kallisti> because you take deep hits
00:52:10 <oklofok> but do you agree with my opinion on nicotine addiction? (that it's impossi)
00:52:12 <oklofok> ble
00:52:37 <kallisti> no.
00:52:46 <kallisti> >_>?
00:52:51 <pikhq> Science has demonstrated that nicotine addiction is not merely possible but highly probable with nicotine intake.
00:53:12 <oklofok> or is it just me? or is the usual way to feel nicotine addiction that you feel (as always) that you need something to do with your hands, and nicotine addiction brings the memory to your brain that smoking gives something to do with them?
00:53:16 <zzo38> oklofok: No, but I agree that you have smoking addiction but not nicotine addiction, maybe?
00:53:49 <oklofok> well i have no idea what any sort of physical addiction is supposed to feel like.
00:53:58 <kallisti> oklofok: like that.
00:54:46 <oklofok> then i have a physical addiction to sex, nicotine, occasionally alcohol, to math, to going to work, to my computer, and pretty much to anything that i occasionally want to do.
00:54:49 <kallisti> it's not going to feel unpleasant. or strange. your brain isn't going to make you think "oh I want nicotine". it just becomes a habit regardless of how it's rationalized.
00:55:14 <kallisti> oklofok: sure. some of those things are reasonable statements.
00:55:23 <oklofok> so obviously cannabis is just as addictive as tobacco
00:55:29 <kallisti> hmmm...
00:55:30 <kallisti> no
00:55:50 <kallisti> there is a distinct difference between a normal habit and a physical addiction to a substance.
00:55:51 <oklofok> well it actually does something to you, so you might want to avoid it when, say, at work.
00:55:55 <zzo38> I suppose, different people are affected in different way
00:56:08 <oklofok> yeah i don't get it
00:56:11 <zzo38> So, it is the difference! Sometimes.
00:56:19 <kallisti> oklofok: uh, sure. that's irrelevant to the conversation.
00:56:52 <oklofok> actually i suppose i don't have a physical addiction to sex
00:57:08 <oklofok> because i actually feel that i need to have sex occasionally (90 times a day)
00:57:12 <oklofok> nor food
00:57:34 <oklofok> nor the computer, really
00:57:40 <oklofok> i specifically feel i want to use the computer
00:57:49 <oklofok> i never specifically feel i want to smoke
00:57:59 <oklofok> i could just as well buy an energy drink or a cola
00:58:03 <oklofok> it just costs way more
00:58:07 <kallisti> and isn't nicotine.
00:58:24 <oklofok> well note that i often do just buy another energy drink
00:58:32 <oklofok> and then i don't need to smoke for another 3 hours.
00:58:35 <oklofok> then i have another choice
00:59:04 <oklofok> so really smoking and caffeine are my only physical addictions, the only ones that i can just change for anything else to do with my hands.
00:59:05 <kallisti> seriously I think you're probably in some stage of denial about it. It's not controversial opinion that nicotine has similar addictive potential to other highly addictive drugs such as morphene and heroin.
00:59:43 <oklofok> i haven't tried heroin, but if it's as awesome as it sounds i doubt i could continue my life without retrying it every now and then.
00:59:46 <kallisti> I smoked for several months and could immediately notice that I was addicted.
01:00:29 <oklofok> also when it's cold outside i don't smoke, i fill a bottle of water and drink it.
01:00:56 <kallisti> two of the most addictive and detrimental substances to humanity are perfectly legal.
01:01:01 <itidus21> <itidus21> anyway, theres also some business about changing the way the patent system works drastically -- After six years, Congress is once again considering Patent Reform legislation in the form of the America Invents Act (S. 23). At the heart of the bill is a shift from a first-to-invent to first-inventor-to-file system.
01:02:01 <itidus21> <itidus21> then again theres SOPA.. i dunno much about that, probably going through -- The originally proposed bill would allow the U.S. Department of Justice, as well as copyright holders, to seek court orders against websites accused of enabling or facilitating copyright infringement.
01:02:10 <oklofok> are there nicotine-free cigarettes?
01:02:23 <kallisti> yes.
01:02:24 <oklofok> i guess that would be the easiest way to check
01:02:26 <kallisti> herbal cigarettes and such.
01:02:42 <kallisti> also "e-cigarettes" which are basically just vaporizers. they're healthier but more expensive.
01:02:57 <itidus21> <itidus21> heard recently theyre looking into some kind of nicotine patch equivalent for marijuana -- http://www.news-medical.net/news/20120110/Now-cannabis-mouth-spray-to-help-e28098pote28099-addicts-quit.aspx
01:03:07 <oklofok> ah yes
01:03:11 <kallisti> also you can roll your own cigarettes or smoke out of a pipe, which has fewer additives. It's still bad for you though. But much cheaper and slightly less harmful.
01:03:40 <oerjan> <kallisti> fizzie: I'm confused as to how the inverse transform can produce a non-periodic signal, as well.
01:03:52 <kallisti> itidus21: I can't take anything seriously when it says "pot addicts"
01:04:14 <itidus21> <itidus21> also.. in nigeria there was some kind of thing that 200,000 polio vaccinations contained some kind of stuff which can lead to problems giving birth -- http://www.lifesitenews.com/news/archive/ldn/2004/mar/04031101
01:04:42 <oklofok> kallisti: i've heard that heroin addicts start shaking and stuff if they don't get heroin
01:04:56 <oklofok> i've also heard this about nicotine, but that's obviously not true
01:04:57 <pikhq> So, they're actually making an Ender's Game film. Should I be horrified preemptively?
01:05:01 <oklofok> and caffeine
01:05:48 <kallisti> oklofok: it's definitely exaggerated a bit in movies, for example. but yes there are withdrawal symptoms of both heroin and nicotine...
01:05:57 <oklofok> i mean why the fuck is it called physical addiction if there are absolutely no physical signs o_O
01:06:04 <kallisti> >_>
01:06:06 <kallisti> <_<
01:06:25 <pikhq> Also, caffeine's withdrawal symptoms tend to be in the form of headaches.
01:06:28 <kallisti> oklofok: perhaps you should try heroin, then.
01:06:32 <oerjan> kallisti: you realize that if a/b is irrational, then e^(iat) + a^(ibt) is not periodic? :)
01:06:40 <oerjan> er
01:06:45 <oklofok> kallisti: i just said i would probably never want to give that up
01:06:48 <kallisti> lol a/b is irrational
01:06:51 <oklofok> how would that be a good choice for me?
01:06:51 <oerjan> *e^(iat) + e^(ibt)
01:07:09 <kallisti> oerjan: no I did not know that.
01:09:37 <oerjan> hth then
01:09:44 <kallisti> not really...
01:09:55 <kallisti> it's just something I'll need to learn when i have some time.
01:10:09 <oerjan> kallisti: well it shows you can get non-periodic functions even with two terms
01:10:11 <oklofok> numbers are trivial, you should learn symbolic dynamics instead
01:10:41 <zzo38> oerjan: I didn't know that either, but now I know
01:11:00 <kallisti> oerjan: the fact that non-periodic functions are trivial to produce doesn't really explain to me how frequency domain can translate to non-periodic time domain.
01:12:18 <oklofok> oerjan: can you sic e^(iat) + a^(ibt)?
01:12:26 <oerjan> oklofok: wat
01:12:29 <oklofok> (sic)
01:12:51 <itidus21> <itidus21> 1 such danger which i guess is not a law is some items that were in public domain being pushed back into the non-public domain -- Works from certain countries that were in the public domain because they didnt comply with formalities of US law (like notice and renewal requirements), or because they were published in countries that didnt have copyright relations with the US (like the S
01:12:52 <itidus21> oviet Union before 1973) had their copyrights restored on January 1, 1996.
01:13:18 <kallisti> itidus21: I'm going to get oerjan to ban you due to excessive self-quoting.
01:13:39 <oklofok> if you can sic it, then i suppose i understand your confusion even if you don't know what sic means. as i'm sure you do, i suppose you can sic it.
01:14:00 <oklofok> kallisti: guess what i'm going to do now btw :D
01:14:05 <oerjan> oklofok: i know what (sic) means, but why should i put it on something i already corrected
01:14:23 <oklofok> oerjan: because i wanted to know that was correct
01:14:27 <oklofok> oh
01:14:29 <oklofok> !
01:14:33 <oklofok> sorry, i missed that line.
01:14:41 <itidus21> i won't learn
01:14:43 <oklofok> now i understand all kinds of thing.
01:14:47 <oerjan> yay!
01:15:36 <oerjan> oklofok: i suppose the other is also correct if a/(b ln a) is irrational
01:16:21 <oklofok> i was gonna say i have no idea, but actually i now realize you're talking about trivial stuffs.
01:16:38 <itidus21> maybe if i must rant i should do it by pastebin
01:16:38 <oerjan> EXCELLENT
01:16:51 <oklofok> itidus21: or on the channel
01:17:07 <oklofok> only everyone except me is annoyed, so who gives a fuck
01:17:52 <zzo38> Are you sure everyone except you is annoyed?
01:17:57 <oklofok> not really
01:18:10 <oklofok> i'm the only one actively unannoyed though.
01:18:29 <oklofok> some of you just stand in a list and keep your mouths shut
01:18:30 <zzo38> I am not annoyed by it either
01:18:42 <oklofok> you must be immune
01:19:55 <itidus21> i think the effect in law is similar to the effect in technology where progress in technology doesn't lead to diminished labor rates
01:20:05 <itidus21> (or maybe slightly it does im not sure)
01:20:23 <itidus21> and in the same way more laws doesn't bring more and more fairness or justice
01:20:40 <pikhq> itidus21: Funny, progress in technology seems to have lead to significantly diminished actual labor rates, just not time-spent-"working" rates. :P
01:20:46 <oerjan> <olsner> If you can read this text, you are wasting your life <-- NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
01:21:07 <zzo38> Do you think the current way of catching errors from pure functions in Haskell is not good way and could be made a better way?
01:21:34 <itidus21> in other words, all these laws that get introduced year after year don't make anything any better
01:21:47 <itidus21> maybe its a very wrong and cynical view
01:22:21 <itidus21> after all.. capital punishment is being outlawed many places.. = good..
01:23:19 <oklofok> if half of humanity was randomly slaughtered, the rest of us would have twice as much money
01:23:20 <zzo38> They are I/O exceptions but it seems not quite right. Better way, in my opinion, would be, have a macro make a function into I/O action with specified strictifying and those one can be made caught exceptions.
01:23:23 <oklofok> though
01:24:26 <oklofok> AND cows.
01:24:31 <oerjan> zzo38: that makes a complete mockery of referential transparency
01:24:33 <oklofok> we could all make our own milk :o
01:28:59 <zzo38> oerjan: Is current way better or worse? I think it should be made with a macro, but current way they depend a lot on evaluation and means you can define something in terms of not defined seem wrong to me
01:35:14 <oerjan> zzo38: i don't know what to say but it would be a fundamentally different language.
01:36:53 <oklofok> you fundamentalists are all the same
01:37:44 <zzo38> oerjan: Are you sure? Current way seems not mathematically correct to me?
01:40:53 <oerjan> zzo38: it has a mathematical foundation in the imprecise exception theory. that may not be ideal. but your way changes a much _more_ fundamental property of haskell, one which it was designed to explore.
01:44:21 <zzo38> It seem to me, not only is not mathematically correct, but also can cause other problems too, such as strictness analysis and some other things
01:44:36 <zzo38> oerjan: Can you describe better please?
01:45:25 <oerjan> no, i don't know the details of the theory.
01:46:28 <kmc> if you want auditory hallucinations specifically you should take diisopropyltryptamine
01:47:02 <kmc> also auditory distortions like nonlinear pitch shift and "flanging"
01:47:06 <shachaf> kmc: Is it enough just to listen to someone trying to pronounce it?
01:48:20 <kmc> :D
01:49:00 * shachaf realises that's probably "di-iso-", not "diiso" pronounced as in Finnish.
01:49:05 <kmc> correct :)
01:49:42 <kmc> also pot addiction is a real thing, but it affects small minority of people who take pot ever
01:50:02 <kmc> you can become addicted to pretty much any sensation or activity
01:50:05 <kmc> some draw the distinction between physical addiction and psychological addiction
01:50:18 <kmc> i don't know the field well enough to know if this distinction makes sense or if it's bullshit dualism
01:50:48 <kmc> oklofok, but what would the money be worth
01:51:07 <oklofok> it's weight in fucking money that's what
01:55:05 <kmc> ...
01:59:26 <oerjan> oklofok: ah but most money is electronical these days
02:00:21 <oklofok> i suppose an addiction can only feel "physical" to things that are evolutio...narily (?) useful to have as addictions. for instance i have a very physical need to do pull-ups every day..
02:00:31 <oklofok> *-.
02:01:01 <kmc> or things that subvert evolved systems
02:01:29 <oklofok> i suppose, but i can't come up with such
02:01:48 <kmc> cocaine, heroin, etc
02:02:00 <oklofok> oerjan: i would probably take my cast out of the bank the day everyone i know is slaughtered
02:02:17 <oklofok> kmc: i hear heroin = nicotine in terms of addiction
02:02:23 <oklofok> so... obviously not
02:02:50 <kmc> cocaine is a dopamine reuptake inhibitor; it increases the amount of dopamine in the space between neurons
02:03:05 <kmc> which increases dopamine-related signaling
02:03:35 <kmc> dopamine is one of the main chemicals involved in reinforcement and reward-seeking behavior
02:04:08 <oklofok> right so it feels great for a while. obviously you would need quite a bit of self-control not to use such a substance once you know what it feels like.
02:04:15 <kmc> the brain has evolved to seek activities which are evolutionarily useful, like exercise, sex, food, etc
02:04:30 <oklofok> hmm
02:04:35 <kmc> drugs like cocaine are addictive not because they're evolutionarily useful
02:04:48 <kmc> but because they directly screw with the system for rewarding evolutionarily useful activity
02:05:16 <kmc> so yes the addiction is every bit as physical as the need for sex or pull-ups
02:05:20 <oklofok> but you don't get the feeling "right now it would make sense to have sex, since that's fun", you get the feeling "oh god i need to fuck someone"
02:05:25 <kmc> right
02:05:31 <kmc> similarly "oh god i need some cocaine"
02:05:45 <oerjan> oklofok: the norwegian minister of finance is fond of reminding us that most of our national capital is in the form of skilled labor and that we need to preserve that. (especially when someone suggests we use more of the saved-up oil money.)
02:05:46 <oklofok> you don't feel "i really need to do pull-ups since i want to get strong", you feel "i really need to do some pull-ups right now"
02:06:13 <oklofok> but, at least i, feel "smoking is so much fun, i wish i could do it all day"
02:06:38 <oklofok> i don't feel it every now and then when i'm low on nicotine, i would like to do it all the time.
02:06:57 <kmc> so maybe you are not "physically addicted" to nicotine
02:07:01 <oklofok> i must be
02:07:15 <oklofok> i've been smoking half a year, and a god-awful lot
02:07:22 <oklofok> i hear this i'm in denial
02:07:30 <kmc> you seem not to understand a damn word i'm saying
02:07:33 <kmc> that's ok
02:08:03 <oklofok> well i mean sure, it seems that i am not physically addicted to nicotine because i feel this way, by definition.
02:08:19 <oklofok> but how could i not be, if it is possible to be physically addicted to it?
02:08:26 <kmc> luck of biochemistry
02:08:34 <kmc> everyone's brain is a bit different
02:08:42 <kmc> some people can take cocaine or heroin and not get addicted
02:08:47 <kmc> there aren't a whole lot of them, but they do exist
02:08:55 <oklofok> but i get addicted to everything i do! i need to eat pizza *every day* nowadays
02:09:07 <oklofok> well
02:09:23 <kmc> yeah but what does pizza have to do with single-codon mutations in your nicotinic acetylcholine receptors
02:09:40 <kmc> i'm saying this stuff hinges on really specific genetic and biochemical details
02:09:50 <kmc> which are different for everyone
02:09:55 <oklofok> :P
02:09:55 <kmc> that's one reason why drug addiction is heritable
02:09:56 <oklofok> true
02:10:35 <oklofok> one interesting exception is alcohol, i certainly like being drunk, but i don't really feel like getting drunk except like once a month.
02:11:00 <oklofok> right now i have a bottle of whisky 20cm from my hand but i'm too lazy to pour so it's been there forever.
02:11:28 <oklofok> my family is full of drunks
02:11:38 <zzo38> Is it still OK after thirty years?
02:12:32 <oklofok> i hear that sort of thing can lead to you despising alcohol or something, but i certainly get completely wasted every now and then and have nothing against drinking in general. i'm just too lazy to pour. i'm never too lazy to smoke, really.
02:12:47 <oklofok> zzo38: yes, forever.
02:13:53 <oklofok> perhaps that has to do with my... let me copypaste alcoholic stuffoline receptors
02:15:44 <oklofok> which i inherit from my true parents, who are lizard kings.
02:15:46 -!- Jafet has joined.
02:19:55 <kmc> i am the lizard king, i can do anything
02:28:43 <oklofok> are you my parent?
02:42:25 <kmc> doubtful
02:42:48 <oerjan> sixth cousin once removed
02:53:04 <zzo38> I do not understand how my idea of catching pattern matching errors and so on breaks referential transparency any more than the existing way does
03:02:01 <oklofok> well i don't even understand how noses work.
03:15:29 -!- zzo38 has quit (Quit: OK!).
03:27:21 -!- madbr has joined.
03:27:45 <madbr> hey... I think I've got an intersting idea for a CPU design
03:28:10 <const> a friend had an optimization to TOD
03:28:37 <const> to make it go faster the system could run a modified ntpd system to change the speed at which seconds progress
03:29:41 <madbr> Have each cpu instruction output a result
03:29:50 -!- GreaseMonkey has joined.
03:30:06 <madbr> And then instead of reading operands from registers, reading them from the results of the N previous instructions
03:30:44 <pikhq> Because fuck pipelining.
03:31:14 <madbr> Essentially it's a form of out of order execution
03:33:27 <madbr> pikhq: eh I guess it's a sort of mobile pipeline instead of a staged one... I think
03:35:45 <madbr> Essentially you have a whole bunch of execution units, each of one is an ALU plus enough multiplexers to read operands from the N previous units, and you assign a whole bunch of incoming operations at the same time on a large block of units
03:37:38 <madbr> So operation results become valid one after the other and trickles down the scheduled units
03:39:00 <madbr> You'd have to do "out of band" instruction scheduling though
03:39:28 <madbr> ie have the number of loop iterations etc determined some other way than branching instructions
03:41:38 <madbr> Would probably mostly be interesting as a coprocessor to a RISC cpu
03:44:37 <madbr> Like, write the program except a couple of critical loops in C, C code gets run on the RISC part, until it runs into a critical loop, then use the RISC to load up the critical loop mode registers etc and switch to some ultra fast assembly routine running in that kind of massive multi-ALU mode
03:47:39 -!- DCliche has joined.
03:50:10 -!- Klisz has quit (Ping timeout: 252 seconds).
03:52:44 <Jafet> madbr: while you're at it, why not switch to an fpga on the fly
03:53:38 <Jafet> http://www.microsemi.com/en/products/whats-new/smartfusion
03:55:31 <madbr> jafet: looks nice
03:58:53 <madbr> jafet: aiming at somewhere between SIMD units and fpgas
04:01:09 -!- Jafet1 has joined.
04:02:37 -!- Jafet has quit (Ping timeout: 260 seconds).
04:05:32 -!- Jafet1 has quit (Ping timeout: 248 seconds).
04:12:01 -!- Jafet has joined.
04:13:41 <oklofok> "<madbr> You'd have to do "out of band" instruction scheduling though" yeah this is important, if you instruct all your band members to gtfo at once, you have no band anymore
04:42:34 -!- zzo38 has joined.
04:44:55 <Jafet> You can arrange a reunion, though
04:46:47 -!- Darth_Cliche has joined.
04:50:01 -!- DCliche has quit (Ping timeout: 240 seconds).
05:37:15 -!- Darth_Cliche has changed nick to Klisz.
05:41:36 <zzo38> I made up a TeX program to print out the experience points required for each level in D&D game, up to as many as will fit on a page (which is 53). There is still more room on the page so I could include other information too; do you have other idea?
06:10:51 -!- azaq23 has quit (Quit: Leaving.).
06:12:08 -!- oerjan has quit (Quit: Good night).
06:13:00 <zzo38> Good night, sir.
06:15:57 <kmc> zzo38, you wanted a pure function in Haskell to catch exceptions?
06:16:19 <kmc> like tryPure (error "foo") => Left (ErrorCall "foo")
06:16:19 <kmc> ?
06:16:31 <zzo38> kmc: No. Not quite what I asked.
06:16:38 <kmc> what then?
06:17:04 -!- Klisz has quit (Read error: Connection timed out).
06:17:36 <zzo38> I meant a *macro* (not a function at all) which converts an existing function (or even single value) to a function results in I/O action, with specified strictness of contained values (to specify which are used), and be able to catch errors there.
06:17:40 -!- Klisz has joined.
06:17:48 <kmc> ah
06:17:54 <kmc> that seems reasonable
06:18:10 <zzo38> Currently you catch them like other I/O errors, but the way it currently work seem wrong to me for more than one reason.
06:18:16 <kmc> maybe you can write a combinator library for that
06:18:18 <kmc> and not need macros
06:20:24 <zzo38> kmc: I think it won't be pure or mathematically correct or anything if it is not a macro. It doesn't make sense for it to be undefined and be defined due to that. There should be a layer in between, so that in one program it is undefined, and pass the layer, use a macro or something makes it a new thing based on the old one
06:21:12 <zzo38> Hopefully you can understand what I meant now. I do not completely understand what you meant that a combinator library can be written for that, however.
06:21:37 -!- elliott has joined.
06:22:37 <kmc> ii'm confused
06:22:39 <kmc> @type Control.Exception.try . Control.Exception.evaluate
06:22:39 <lambdabot> forall a e. (GHC.Exception.Exception e) => a -> IO (Either e a)
06:22:46 <kmc> isn't this the one-argument version of what you want?
06:22:54 <kmc> for whnf strictness
06:23:08 <zzo38> Like, say you have: f :: Int -> Int -> Int; f 0 x = x; g :: Int -> Int -> IO Int; g = xyz 2 f;
06:23:35 <zzo38> kmc: I know about try and evaluate but that is what seem wrong to me. One thing the strictness is not always correct
06:24:17 <zzo38> (In my example, "xyz" would be the macro that does that; it isn't a function, so g = xyz; or g = xyz (1 + 1) f; is not allowed.)
06:25:07 <zzo38> Now, g 1 5 is IO action calling the pattern match exception, and g 0 8 is same as return 8
06:26:13 <elliott> kmc: oh, are you and zzo38 discussing haskell?
06:26:14 <zzo38> Are you less confused now, or even more confused?
06:26:19 <elliott> great!
06:26:20 <kmc> i guess we are
06:28:30 -!- ais523 has joined.
06:31:57 -!- DCliche has joined.
06:32:22 <ais523> <Susan> Mike had written a series of tutorials on Funge-98, do you know if any others exist besides the ones currently posted on the rcfunge98.com site?
06:32:23 <lambdabot> ais523: You have 1 new message. '/msg lambdabot @messages' to read it.
06:32:51 <ais523> in other words, anyone know of any Funge-98 tutorials? this seemed like a good place to ask
06:33:12 <zzo38> kmc: Do you have any more answer to me by now?
06:33:15 <ais523> although probably a bad time, this is an awful time for people in most of the most common timezones for #esotericers
06:33:17 <elliott> ais523: wow, I assumed Susan had abandoned rcfunge
06:33:17 <zzo38> Or anyone else answer?
06:33:20 <kmc> no
06:33:34 <zzo38> Do you even understand what I mean, finally?
06:33:36 <ais523> elliott: esolangs tend not to need all that much maintenance
06:34:01 <elliott> ais523: well, no
06:34:44 <ais523> I'm wondering if Deewiant has some, he's the person I'd rate as most likely to have a Funge-98 tutorial in this channel
06:34:49 <zzo38> elliott: What is your opinion of my comments about this Haskell programs?
06:34:50 <ais523> also, what are you doing awake?
06:34:55 <elliott> http://www.google.co.uk/search?q=funge-98+tutorial not promising
06:34:58 -!- Klisz has quit (Ping timeout: 240 seconds).
06:35:00 <elliott> ais523: good question
06:35:01 <ais523> is this late at night or early morning for you, or do those terms have no meaning nowadays
06:35:09 <elliott> zzo38: i have no idea what the context is
06:35:15 <elliott> ais523: early morning right now
06:35:31 <ais523> elliott: I decided the same thing, so I went to work
06:35:38 <ais523> I had to get in early, by around 9am, to prepare a tutorial
06:35:41 <zzo38> elliott: Then read it!
06:35:44 <elliott> zzo38: :(
06:35:48 <ais523> so I'd have at most 3 hours sleep even if I managed to get to sleep instantly
06:35:51 <ais523> so I decided it wasn't worth it
06:36:06 <ais523> (I slept much of yesterday afternoon, due to only getting 2 hours sleep the day before)
06:36:19 <elliott> ais523: no, I've slept
06:36:44 <ais523> ah, OK
06:36:52 <zzo38> What it was, is I was discussing about a new way to do catching pattern matching failures and user error catching of pure functions in IO actions, by using macros.
06:36:53 <ais523> what timezone would you say you're in at the moment?
06:37:16 <ais523> (that is, if someone with a normal sleep schedule were sleeping at the same times as you, what timezone would they have to be in to make it a normal schedule?)
06:37:49 <zzo38> elliott: Now do you understand?
06:37:53 <zzo38> zzo38: Now do I understand?
06:37:59 <elliott> elliott: no
06:38:28 <elliott> ais523: err, I'm not sure; I slept about 8 hours, at least, from 21:00-05:00 or so
06:38:34 <zzo38> ais523: Do you know?
06:38:52 <ais523> elliott: ooh, I envy that sleep schedule
06:39:00 <ais523> I used it deliberately for a few days, but it made me ill
06:39:13 <elliott> ais523: it's awful, i get tired in the afternoon
06:39:30 <elliott> maybe it'd be better if it got bright earlier
06:39:32 <ais523> actually, I think mine was even more extreme, along the lines of 18:00-02:00
06:39:42 <ais523> and yes, I came to the conclusion that it works great in summer but doesn't work in winter
06:39:57 <ais523> (current thoughts as to the optimal sleep schedule: sleep 6-8 hours and wake at sunrise, regardless of when sunrise is)
06:40:22 <zzo38> I have a program to calculate the sunrise and all planets rise, but it doesn't include refraction, and it also doesn't include the apparent size of solar disc
06:40:26 <elliott> ais523: you misspelled 10+
06:41:08 <zzo38> ais523: I would think 18:00 is too early to sleep? At least to me, and people I know, it is too early
06:41:26 <zzo38> But I do sometimes wake up as early as 02:00
06:41:33 <zzo38> Not often, though.
06:42:16 -!- DCliche has changed nick to Klisz.
06:48:30 <fizzie> ais523: That schedule's going to be hard to follow in places north of the Arctic Circle, or south of the Antarctic, at least year-round.
06:49:21 <elliott> "south of the Antarctic"
06:49:29 <fizzie> Circle.
06:49:39 <fizzie> I didn't feel like repeating.
06:49:43 <fizzie> "I haven't slept in ten days and I'm SO TIRED, but some dude in the IRC said this is optimal."
06:49:59 <elliott> fizzie: Months, on the South Pole.
06:50:01 <ais523> fizzie: I was basing it on UKish latitudes
06:50:09 <elliott> Then you just sleep for another 3 months or whenever it was.
06:50:17 <elliott> I... guess it's efficient?
06:50:42 -!- _Slereah has quit (Ping timeout: 276 seconds).
06:50:57 -!- _Slereah has joined.
06:51:16 <fizzie> But it was just "sleep for the 6-8 hours before sunrise" always, you don't get to sleep in winter *or* summer.
06:51:40 <elliott> Oh, yes, quite.
06:51:47 <elliott> Well, it's even more efficient.
06:54:38 <zzo38> Does the rising/setting depends on sun declination?
06:57:05 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
07:02:06 -!- MDude has changed nick to MSleep.
07:04:01 <elliott> 01:14:00: <oklofok> kallisti: guess what i'm going to do now btw :D
07:04:04 <elliott> oklofok: how was the heroin
07:04:14 <zzo38> I would like to understand geometry of rising/setting. Astrolog has astro-graph so I can see it on the map of the world. There is yellow vertical line plotting hour angle, one point on the yellow line marked which is the declination, and the curved line red/green for rising/setting.
07:08:12 <elliott> 02:09:23: <kmc> yeah but what does pizza have to do with single-codon mutations in your nicotinic acetylcholine receptors
07:08:23 <elliott> kmc: what DOESN'T pizza have to do with single-codon mutations in your nicotinic acetylcholine receptors
07:08:39 -!- zzo38 has quit (Remote host closed the connection).
07:19:47 <pikhq> Omnomnom,.
07:38:39 <elliott> ais523: what's the opposite of infinitesimal?
07:38:41 <elliott> as in, not infinitesimal
07:38:53 <pikhq> Large?
07:39:19 <elliott> no.
07:39:21 <elliott> as in, not infinitesimal
07:39:25 <elliott> 0.00001 is not large
07:39:26 -!- madbr has quit (Quit: Page closed).
07:39:28 <ais523> elliott: "standard" means not infinitesimal and not infinite
07:39:30 <elliott> but it isn't infinitesimal, either
07:39:33 <ais523> in nonstandard analysis
07:39:41 <elliott> ais523: hmm, that could work
07:49:31 <Jafet> What's the opposite of purple?
07:56:01 <elliott> Jafet: purpl
07:56:01 <elliott> e
07:56:04 <monqy> green
07:56:09 <pikhq> elprup
07:56:55 <monqy> checyr
08:01:35 <elliott> monqy: checyr
08:01:53 <monqy> checyr
08:01:59 <elliott> checyr
08:04:01 <elliott> http://stackoverflow.com/questions/8831630/whats-benefits-of-nancyfx
08:06:03 <Sgeo> elliott, if you're not here, I won't put your name next to updates, so if when you read logs you only search for your name, you might not see it
08:06:03 <monqy> What happens if I use the benefits?
08:06:12 <monqy> thanks
08:06:38 <monqy> "if i was elliott, that's what i would say" - monqy
08:07:06 <ais523> elliott: hmm, one of the agora backup lists just got conference spam
08:07:28 <elliott> ais523: criminal cfj + playerhood inquiry cfj
08:07:31 <elliott> it's the only reasonable response
08:07:37 * Sgeo doesn't see it
08:07:46 <ais523> elliott: you can do it
08:07:59 <ais523> Sgeo: it was sent to tue, are you subscribed to that one?
08:07:59 <elliott> ais523: but i'd have to figure out a rule to charge them under
08:08:11 <elliott> err, Sgeo isn't subscribed to tue?
08:08:13 <elliott> that's worrying
08:08:17 <ais523> come to think of it, why did tue even accept that?
08:08:31 <ais523> elliott: 101? 2029?
08:08:33 <elliott> ais523: presumably they registered for the list
08:08:42 <Sgeo> I know I'm subscribed to at least one backup list, not sure if both or not
08:08:55 <elliott> Sgeo: I'll let the invaders know to use the backup lists
08:09:01 <elliott> ais523: heh
08:10:16 <Sgeo> I wouldn't be able to get to the password reminder thing if I wasn't registered, right?
08:10:55 <ais523> oh no, reddit was mentioned on slashdot
08:11:01 <ais523> and I didn't realise it'd lead to a moderation system flamewar until I saw it
08:11:05 <ais523> I should have done, obviously
08:16:15 <elliott> Sgeo: it's likely it's just going ito
08:16:18 <elliott> into your spambox
08:16:53 <elliott> ais523: "'Smaller' sites like Reddit start the ball rumbling, Slashdot joins in, [...]"
08:16:55 <elliott> ais523: i lol'd
08:17:02 <elliott> slashdot "bigger than reddit"
08:17:10 <ais523> people correct them later
08:17:34 <monqy> start the ball rumbling?
08:17:38 <ais523> but yes, most Slashdotters seem to be under the misconception that it's a major site
08:17:52 <Sgeo> elliott, it's not in my spambox though
08:17:59 <elliott> monqy: rumbly ball
08:18:01 <ais523> IMO it's historically important, and worth subscribing to, but not /large/
08:18:01 <pikhq> To be fair, once upon a time it was relatively large.
08:18:19 <pikhq> Slashdotting really was a major phenomenon.
08:18:25 <elliott> ais523: I think the only thing that can be slashdotted nowadays is, e.g. a teacup
08:18:37 <pikhq> But the web grew, and Slashdot did not.
08:18:38 <shachaf> What about that potato web server?
08:18:50 <elliott> That's teacup-sized.
08:19:03 <shachaf> Note: Either an actual potato or Debian Potato would do.
08:19:15 <shachaf> THE POTATO HAS LANDED
08:19:56 <ais523> elliott: actually, I think it's more a case of data having got larger
08:20:07 <ais523> nowadays, webservers are used to serving up gigabyte-large videos
08:20:13 <elliott> FSVO gigabyte
08:20:36 <ais523> elliott: well, I know I've watched videos over 1GB large, either metric or binary
08:20:59 <shachaf> ais523++ # metric or binary
08:21:04 <elliott> "Webservers" aren't used to that; big webservers are
08:21:20 -!- cswords has quit (Read error: Connection reset by peer).
08:21:46 <elliott> peer :(
08:22:29 <ais523> context is that reddit's planning to shut down for a while to protest against SOPA
08:22:45 <shachaf> peer++ # eh resets connectoins and doesn't afraid of anything.
08:22:56 <elliott> shachaf: no no
08:22:57 <elliott> bad
08:22:57 <elliott> person
08:23:00 <elliott> bad
08:23:07 <elliott> bad
08:23:10 <elliott> b
08:23:11 <elliott> ad
08:23:17 <elliott> bad!!!
08:23:18 <shachaf> If elliott won't go to the Reddit, the Reddit will come to the elliott.
08:23:31 <elliott> bad :(
08:23:45 <elliott> b a d
08:24:01 <elliott> bad
08:24:40 <elliott> bad
08:27:07 <kallisti> holy shit.
08:27:14 <kallisti> there's a sour melon flavor of powerade.
08:27:15 <kallisti> it's so
08:27:16 <kallisti> good.
08:27:18 <kallisti> oh my god.
08:27:35 <Sgeo> elliott, kallisti SBaHJ update
08:32:31 <GreaseMonkey> ooh
08:33:06 <GreaseMonkey> fucking incredible
08:33:30 <monqy> its very good but already hours old
08:33:33 <monqy> sgeo how could you...
08:33:44 <Sgeo> monqy, I only found out about it recently
08:33:52 <monqy> :o
08:34:57 <elliott> Sgeo lied to monqy
08:34:59 <elliott> with his words :(
08:35:10 -!- ais523 has quit (Ping timeout: 255 seconds).
08:35:44 <monqy> sgeo knows all therefore he knew about the sbahj update BUT DIDN'T SAY ANYTHING
08:35:52 <monqy> ;_;
08:37:23 <kmc> what's all this then
08:37:32 <elliott> kmc: monqy
08:37:47 <elliott> the channel's in monqy mode
08:37:53 <elliott> delay expectations of coherency
08:38:00 -!- ais523 has joined.
08:39:59 <elliott> ais523: "Proving that one never stops learning, Charles Pooh, one of our graph theory developers, pointed out to me that my synonyms item could have been done much better. I had broken one of the very rules that I wrote about in my “10 Tips for Fast Mathematica Code” entry—”Use built-in functions.”?
08:40:02 <elliott> s/?/"/
08:40:58 <ais523> elliott: you /have/ to use built-in functions to get reasonable performance out of Mathematica, as that's what it's tuned for
08:40:59 <kmc> i've already decohered
08:41:09 <kmc> BUILT IN FUNCTIONZ
08:41:16 <ais523> e.g. it's really fast at doing turing machines, but nowhere near as fast at doing sort-of-like-turing-machines-but-not-quite
08:41:33 <kmc> guido van rossum says that functional languages are the ones where map and filter etc are magical builtins
08:41:45 <kmc> python isn't functional because you can implement map in a few lines of code
08:42:06 <ais523> a few lines? how stupidly verbose
08:42:06 <monqy> well you need them to be builtin if you want performance
08:42:16 <elliott> 22:47:58 <The_Journey> how may I get a call stack when my program crashes?
08:42:16 <elliott> 22:48:09 <shachaf> You may not. Thanks for asking.
08:42:20 <elliott> shachaf: Hey, -xc works /most/ of the time.
08:42:23 <kmc> #haskell?
08:42:27 <kmc> hehe
08:42:29 <ais523> any reasonable functional language should be able to do map, filter, and both folds in three or fewer lines of code, putting line breaks in the natural places
08:42:31 <kmc> shachaf tells it like it is
08:42:31 <elliott> kmc: Maybe#
08:42:32 <ais523> (each, that is)
08:42:33 <elliott> *!
08:42:44 <kmc> Maybe#
08:42:46 <elliott> :D
08:42:47 <kmc> data Maybe# = Just# a | Nothing#
08:42:51 <shachaf> kmc: Hey, I elaborated a little more later on!
08:42:54 <elliott> it just uses a null pointer for nothing
08:42:55 <kmc> it's faster!!!!!!1!!!!
08:42:58 <kmc> YESSS
08:43:01 <kmc> omg the optimizationsz
08:43:03 <elliott> and is otherwise a pionter to the just value
08:43:07 <kmc> elliott, you're onto something here
08:43:08 <ais523> that was my interpretation of Maybe# too
08:43:14 <kmc> that would be srsly better right
08:43:14 <elliott> this means that Maybe# Int# can't represent 0
08:43:19 <ais523> although I hadn't thought it through in that much detail
08:43:26 <ais523> elliott: hmm, Maybe# would have to always use a pointer
08:43:26 <kmc> elliott, the kind of Maybe# would forbid that anyway
08:43:35 <kmc> it would be * -> * like the regular Maybe
08:43:41 <elliott> kmc: nah, kind polymorphism, dude
08:43:43 <pikhq> ais523: Heck, even an unreasonable functional language can pull them off in 10 or 15 lines.
08:44:17 <pikhq> (for my canonical example of "unreasonable functional langauge" I shall point you to clambda)
08:44:19 <ais523> now I want to invent a functional language in which map is incredibly hard to write
08:45:15 <elliott> ursala? :P
08:49:12 <ais523> it's probably only a couple of characters in ursala
08:49:23 <ais523> and only hard to write, because doing so would actually require learning ursala
08:49:35 <elliott> ais523: I suspect it's one character; the problem is that you have to write it without using map
08:51:06 * elliott wonders if you can convince repa to stick an array's data at a particular pointer.
08:51:09 <monqy> first result for ursula is arc forum and the link in the post title is broke :(
08:51:14 <monqy> I mean
08:51:17 <monqy> ursula programming language
08:52:11 <elliott> yeah the site is gone
08:52:38 <monqy> was it good
08:52:52 <kmc> elliott, http://hpaste.org/56368
08:53:03 <elliott> monqy: as consolation: http://arclanguage.org/item?id=6155
08:53:10 <kmc> it works except sometimes nothing# segfaults
08:53:16 <kmc> but that's just the price you pay for SPEED
08:53:22 <elliott> kmc: oh my god
08:53:37 <elliott> kmc: i want to show #haskell
08:53:41 <kmc> you should do it
08:53:51 <monqy> elliott: that post is too mysterious for me to tell if it's good or bad
08:53:59 <monqy> but it looks a bit on the absolutely crazy side
08:54:21 <monqy> #comment -[ yes good ]-
08:54:28 <elliott> kmc: <elliott> Help!! I've been trying to optimise my code with unboxed Maybes but nothing# sometimes segfaults! http://hpaste.org/56368
08:54:43 <kmc> elliott u troll
08:54:47 <kmc> y u troll
08:55:06 <elliott> kmc: it's ok i put a :P face after it
08:55:20 <kmc> i really should have put "just say maybe to drugs" as the module haddock
08:55:21 <kmc> o well
08:55:28 <shachaf> elliott: hlint tells you why it's broken.
08:55:34 <shachaf> You're not usingCamelCase.
08:55:34 <elliott> kmc: Put it on Hackage.
08:55:37 <Sgeo> There is no place to camelcase!
08:55:42 <kmc> acme-maybehash
08:55:55 <elliott> kmc: acme-maybe-fast
08:56:14 <elliott> kmc: I think maybe#'s type doesn't have enough #s in it.
08:56:24 <kmc> yeah it would be faster if it were maybe###
08:56:36 <kmc> truly optimized haskell code is about 40% hash by weight
08:56:36 * shachaf Maybe# (Maybe# a)
08:57:00 <kmc> «just# = M# . unsafeCoerce#»
08:57:07 <kmc> fuck, why did i compose a newtype constructor with unsafeCoerce#
08:57:08 <shachaf> nothing# should be (void*)0, just# nothing# should be (void*)1, etc.
08:57:10 <kmc> that's just sloppy
08:57:16 <elliott> kmc: safety
08:57:19 <elliott> haskell's all about safety
08:57:39 <kmc> yeah i used howard's curry to prove that Maybe# exists, in the type system
08:57:47 <elliott> thanks howard
08:58:02 <kmc> howard's curry with a side of samosas and bhang lassi
08:58:05 <shachaf> Curry-Howard. Coward.
08:58:16 <kmc> curry-howard. chowder.
08:58:17 <elliott> shachaf: I've already said "Hurry-Coward isomorphism". :(
08:58:38 <monqy> i always dyslexia it into hurry-coward in my head oops
08:58:41 <kmc> i'll have a jumbo bhang lassi, extra bhang, hold the lassi
08:58:49 <elliott> monqy: http://web.archive.org/web/20090113084759/http://www.basis.uklinux.net/ursala/
08:59:01 <elliott> http://web.archive.org/web/20080704174715/http://www.basis.uklinux.net/ursala/manual.pdf doesn't load :(
08:59:11 <monqy> at least i can read the
08:59:14 <monqy> design philosophy
08:59:22 <elliott> kmc: hey how do i get repa to put an array at an address thanx
08:59:30 <kmc> moar unsafeCoerce#
08:59:40 <kmc> if that fails load some FORTRAN into a ByteString and execute it
08:59:51 * Sgeo derpishly just now realizes that you can make isNothing from maybe
08:59:52 <kmc> damn i should make a quasiquoter for inline FORTRAN
08:59:59 <Sgeo> I mean, fromJust and fromMaybe occured to me sooner
08:59:59 <kmc> then Haskell can take over the scientific HPC world
09:00:07 <elliott> `addquote <kmc> damn i should make a quasiquoter for inline FORTRAN
09:00:12 <kmc> :t maybe True (const False)
09:00:13 <lambdabot> forall a. Maybe a -> Bool
09:00:19 <HackEgo> 799) <kmc> damn i should make a quasiquoter for inline FORTRAN
09:00:20 <Sgeo> (Actually, in one place I'm using maybe where fromMaybe makes more sense
09:00:21 <kmc> Sgeo, you can make anything that operates on Maybe from maybe
09:00:34 <kmc> :t maybe Nothing Just -- or did I just blow your mind
09:00:34 <elliott> It's almost like some kind of dogamorphism.
09:00:35 <lambdabot> forall a. Maybe a -> Maybe a
09:00:49 <monqy> woof woof
09:00:50 <shachaf> @quote ddarius isJust
09:00:50 <Sgeo> dogamorphism?
09:00:50 <lambdabot> ddarius says: isJust :: Maybe a -> Bool; isJust = unsafeCoerce
09:00:57 <elliott> unsafeFromForeignPtr sh fptr
09:00:57 <elliott> = fromFunction sh
09:00:57 <elliott> (\ix -> unsafePerformIO
09:00:57 <elliott> $ withForeignPtr fptr
09:00:57 <elliott> (\ptr -> peekElemOff ptr $ toIndex sh ix))
09:00:59 <kmc> it works too (fsvo)
09:01:04 <elliott> NO REPA NO THAT ISN'T WHAT I WANT
09:01:28 <kmc> http://mainisusuallyafunction.blogspot.com/2010/09/executing-bytestring.html do it this way
09:02:01 <elliott> AxioSep 29, 2010 07:32 PM
09:02:01 <elliott> >> Why not!
09:02:01 <elliott> For security reasons, of course !
09:02:01 <elliott> Unless you want Haskell to be the new C, as far as execution of arbitrary code is concerned…
09:02:08 <elliott> kmc: you're a bad person. you made haskell insecure
09:02:26 <kmc>
09:02:44 <kmc> that code segfaultz on my system now
09:02:48 <kmc> prolly stupid NX bit
09:02:59 <elliott> More like No funX bit.
09:03:19 * kmc stomps off in search of mprotect binding
09:03:55 <elliott> kmc: <nick8325> elliott: i could be wrong, but since Addr# has kind # i don't think you're allowed to cast it to Any, are you?
09:04:22 <kmc> unsafeCoerce# can cast between kinds
09:04:26 <kmc> it's just that powerful
09:04:38 <kmc> you can't ignore my techno
09:04:39 <shachaf> Can it cast * to * -> *?
09:04:46 <elliott> kmc: Your Show instance is wrong.
09:04:55 <kmc> no your brain is wrong
09:05:16 <elliott> :(
09:05:23 * elliott cries.
09:06:08 <elliott> why am i reading repa's code
09:06:32 <elliott> {-# INLINE [2] force #-}
09:06:33 <elliott> force arr
09:06:33 <elliott> = unsafePerformIO
09:06:33 <elliott> $ do (sh, vec) <- forceIO arr
09:06:33 <elliott> return $ sh `seq` vec `seq`
09:06:33 <elliott> Array sh [Region RangeAll (GenManifest vec)]
09:06:36 <elliott> best indentation ever
09:06:39 <kmc> idiomatic haskell
09:07:03 <elliott> Array sh _
09:07:03 <elliott> -> do mvec <- VM.unsafeNew (S.size sh)
09:07:03 <elliott> forceWith (VM.unsafeWrite mvec) arr'
09:07:05 <elliott> oh!
09:07:09 <elliott> i could write my own forcing function
09:07:13 <elliott> assuming vector gives me the kind of placement i need
09:07:17 <kmc> use strength reduction
09:07:25 <monqy> wow that indentation
09:07:26 <monqy> is so good
09:07:36 <kmc> this must be how dogs see
09:07:58 <elliott> hmm... Data.Vector.Unboxed.Mutable doesn't have any "cast pointer to vector lol" functions
09:08:07 <kmc> use storable vector
09:08:15 <elliott> kmc: <nick8325> oh, fair enough, i thought you were just crazy :P
09:08:29 <kmc> i should have more booze
09:08:45 <elliott> kmc: I don't think a storable vector would work.
09:08:57 <elliott> At least, Repa has unboxed ones under the hood and I don't think they're compatible.
09:09:06 <elliott> Although I suppose I could throw away the Repa array after forcing it...
09:09:30 -!- monqy has quit (Quit: hello).
09:09:58 <kmc> did you know the last segment of _2001: A Space Odyssey_ synchs up with "Echoes" by Pink Floyd
09:10:11 <elliott> Whoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
09:10:17 <elliott> Nobody has ever said that in the history of ever.
09:10:45 <kmc> true fact
09:13:37 <elliott> Data.Array.Repa.Internals.Forcing isn't exported :(
09:18:10 <ais523> bleh, I'm trying to print out a marksheet on this Windows computer here
09:18:16 <ais523> but apparently there isn't enough disk space to open Excel
09:18:21 * ais523 boggles slightly
09:19:08 <ais523> I can't think of something so important to save upon opening a spreadsheet program that it should refuse to open if it can't save it
09:19:32 <ais523> meanwhile, OpenOffice, which is also here, complained but allowed me to open the file
09:21:06 <pikhq> Knowing Microsoft? Probably saving a new copy of Excel to disk to run. :P
09:27:31 -!- pikhq_ has joined.
09:27:40 -!- pikhq has quit (Ping timeout: 252 seconds).
09:28:05 <ais523> heh, OpenOffice crashed, then went into an infinite loop of asking to clear disk space trying to save its recovery data
09:29:08 <elliott> have you tried deleting something
09:30:29 <fizzie> For example, Excel.
09:31:40 -!- Vorpal has joined.
09:32:55 <elliott> yes
09:35:31 <kmc> have you tried starting some fires
09:37:14 <kmc> maybe it would work better if nothing# were the pointer 1 instead of 0
09:38:29 <elliott> kmc: What about ~0?
09:38:40 <kmc> that might be the best pointer of them all
09:49:32 <itidus21> <kmc> this must be how dogs see <kmc> use storable vector <kmc> i should have more booze <kmc> did you know the last segment of _2001: A Space Odyssey_ synchs up with "Echoes" by Pink Floyd
09:49:40 <Vorpal> I wonder which video games from the last 10-20 years will still be widely known in, say, 100 years. Which ones will become (and stay) classics? Some are pretty obvious, like people will most probably know about pacman. Probably super mario as well.
09:49:57 <kmc> minecraft
09:50:02 <Vorpal> doubtful
09:50:10 <kmc> desert bus
09:50:13 <Vorpal> haha
09:50:34 <elliott> big rig
09:50:35 <elliott> s
09:50:35 <itidus21> i've never played desert bus
09:50:38 <kmc> <itidus21> <kmc> this must be how dogs see
09:50:46 <elliott> <kmc> <itidus21> <kmc> this must be how dogs see
09:50:49 <Vorpal> elliott, trying to remember which that one is. I heard the name before...
09:50:52 <fizzie> Dogs see with a storable vector?
09:50:52 <kmc> <elliott> <kmc> <itidus21> <kmc> this must be how dogs see
09:51:02 <elliott> <kmc> <elliott> <kmc> <itidus21> <kmc> this must be how dogs see
09:51:10 <elliott> Vorpal: http://en.wikipedia.org/wiki/Big_Rigs:_Over_the_Road_Racing
09:51:17 <itidus21> oh no, not that game
09:51:27 <itidus21> with the absence of collision detection
09:51:29 <elliott> "a severe lack of collision detection and frequent violation of the laws of physics were the game's main problems."
09:51:33 <fizzie> Vorpal: Sega Bass Fishing.
09:51:43 <kmc> 100 years from now womankind is extinct and so they only play dating sims
09:51:49 <Vorpal> fizzie, I never even heard about that one :P
09:51:59 <Vorpal> so this immediately turned into a list of the worst games?
09:52:18 <fizzie> Vorpal: http://en.wikipedia.org/wiki/Sega_Bass_Fishing "Gameplay: Bass Fishing is an arcade fishing game. Basically, someone choses a character then goes out on a boat to go and catch fish." (The description ends there.)
09:52:39 <Vorpal> wow
09:52:39 <fizzie> Best article.
09:53:05 <kmc> no the best article is http://en.wikipedia.org/wiki/List_of_animals_with_fraudulent_diplomas
09:53:26 <fizzie> I only know about it because it's in the four (four!) games chosen for the Dreamcast Collection for some reason.
09:53:36 <kmc> "The game struggled with critics due to its narrow nature. However, it did showcase the amazing graphical capabilities of the Dreamcast with the fish moving fluidly to create a smooth fishing experience."
09:53:38 <fizzie> (Sonic Adventure, Crazy Taxi, Space Channel 5: Part 2 and Sega Bass Fishing.)
09:53:40 <Vorpal> fizzie, wow. are the other games as bad?
09:54:28 <Vorpal> the only one I heard about there is Sonic Adventures. And I can't remember if that is one of the bad or good ones
09:54:45 <itidus21> sounds like its not a good one
09:55:21 <itidus21> there weren't really any good sonic games post-megadrive/genesis (i say this as someone who hasn't played them but reads on the topic a lot)
09:55:23 <fizzie> Sonic Adventure isn't bad; Crazy Taxi is I think a mediocre-to-goodish sandboxy car game; Sega Bass Fishing is... Sega Bass Fishing; and Space Channel 5: Part 2 is some sort of a strange rhythm game thing.
09:56:04 <Vorpal> itidus21, I heard that the recent sonic generations is pretty good
09:56:09 <elliott> "Curious, what would make some of the unicode characters display correctly but others not? I wasn't even aware there was an "inbetween", I thought you either see unicode characters rendered or you don't."
09:56:14 <Vorpal> haven't played it. Haven't played /any/ sonic game in fact
09:56:37 <elliott> fizzie: Isn't Crazy Taxi famous-ish?
09:56:43 <itidus21> sonic and knuckles is pretty cool though.. the way they stack up the cartridges
09:56:48 <elliott> http://upload.wikimedia.org/wikipedia/en/7/75/CrazyTaxi_cover.png certainly rings a bell at least.
09:56:56 <Vorpal> elliott, the font for a start
09:57:06 <fizzie> Sonic Adventure was I think the first "good" 3D Sonic; of course not everyone likes those, but quite a few do.
09:57:09 <Vorpal> (most likely cause even)
09:57:17 <fizzie> "The reception at the time of original Dreamcast version was overwhelmingly positive, including reviews from GameSpot and GameSpy being above 90%. The current Game Rankings average ranking is 88%.[11] It became one of the few Sega All Stars games. In Japan, it received an excellent 38 out of 40 from Famitsu.[12] Although criticized for its camera system, framerate issues, and fishing stages with Big, the game was still highly praised for retaining the f
09:57:17 <fizzie> ast and enjoyable gameplay that Sonic was known for in 2D as well as the game's graphics, multiple character storylines, and soundtrack."
09:57:26 <Vorpal> <itidus21> sonic and knuckles is pretty cool though.. the way they stack up the cartridges <-- eh?
09:58:09 <fizzie> Vorpal: The Sonic & Knuckles cartridge can be combined with Sonic the Hedgehog 3 to form "Sonic 3 & Knuckles", the game they were supposed to release but ran out of time. :p
09:58:28 <Vorpal> fizzie, combined as in physically connect them?
09:58:29 <fizzie> (It can also be combined with Sonic 2 to play as Knuckles in Sonic 2, but that's not such a big change.)
09:58:30 <Vorpal> or what
09:58:31 <fizzie> Yes.
09:58:37 <Vorpal> interesting
09:58:44 <Vorpal> fizzie, so it is an expansion pack of sorts?
09:58:44 <fizzie> You stick Sonic 3 on top of the Sonic & Knuckles game.
09:59:05 <Vorpal> or can it be used standalone?
09:59:07 <fizzie> You can also stick other cartridges there, and usually get to play one of the "collect the spheres" bonus levels.
09:59:12 <fizzie> It works as standalone too.
09:59:15 <elliott> fizzie: I'm imagining you just sort of balance them on top of each other.
09:59:35 <Vorpal> fizzie, that is probably an unique system they had there
09:59:37 <fizzie> Vorpal: But when you have Sonic 3 plugged in, you can play through the levels of both in one seamless "story".
09:59:59 <fizzie> Vorpal: Here's a picture: http://en.wikipedia.org/wiki/File:Sega_Genesis-_Sonic_%26_Knuckles_locked_on_to_Sonic3_flipped.jpg
10:00:05 <elliott> "Remember how UTF-8 was invented. The guys making Plan-9 looked at Unicode and said, "That's a good idea, but it's totally wasting half the bits," then made it up out of scratch. Microsoft could have done the same thing if they had a culture of innovation, but they didn't."
10:00:07 * elliott cries.
10:00:08 <elliott> I hate reddit.
10:00:21 <kmc> ...
10:00:34 <Vorpal> elliott, that... is just stupid?
10:00:42 <kmc> yeah UTF-8 is a vastly superior alternative to Unicode
10:00:48 <Vorpal> XD
10:00:48 <elliott> It's half the bits.
10:00:50 <itidus21> lol. it sounds like politics
10:00:58 <fizzie> fungot: Politics!
10:00:59 <fungot> fizzie: commissioner, mr van velzen has just said. it is true that fisheries play a social and cultural assets. europe' s undertaking in these critical areas must not be general, that it is right for europe to take advantage of the opportunities given to us by citizens at the heart of the socio-economic impact in the applicant countries to the european union
10:01:01 <Vorpal> elliott, there are so many things wrong with that stuff
10:01:15 <kmc> the trick is that you need only the bottom half of a '0' to distinguish it from a 1
10:01:18 <Vorpal> fungot, fisheries? Are you talking about that game too?
10:01:18 <fungot> Vorpal: madam president, ladies and gentlemen, it is essentially a humanitarian response to future situations which might arise. that is why i referred to earlier.
10:01:22 <kmc> and you don't need the flag or the little base on the '1' neither
10:01:27 <kmc> so that's some serious space savings
10:01:38 <elliott> Yay, the guy finally accepted my MONADS.
10:01:43 <kmc> M O N A D S
10:02:26 <itidus21> this government had a mandate from the public to create UTF-8, Mr. Speaker. Something the opposition ignored due to not being innovative Mr. Speaker
10:02:52 <itidus21> Rabble!
10:02:56 <fizzie> Vorpal: Anyway; in most Sonic games you collect (usually 7) Chaos Emeralds, and then can transform into Super Sonic; when you've got 3+Knuckles plugged in and continue to the latter half after collecting all, you can start collecting Super Emeralds and transform into Hyper Sonic. (Yes, I know how stupid it sounds.)
10:02:56 <itidus21> Rabble rabble rabble!
10:03:31 <Vorpal> fizzie, heh
10:03:41 <Vorpal> fizzie, and hyper sonic does what?
10:03:54 <fizzie> It's like Super Sonic, except more.
10:03:57 <Vorpal> (also super sonic? Nintendo can't have been happy with that one)
10:04:23 <fizzie> "Sonic the Hedgehog 3 and Sonic & Knuckles were originally to be released as one game.[2] However, due to time and money contraints, it was later split into two separate games. However, Sonic & Knuckles contained "Lock-on Technology", where the Sonic & Knuckles cartridge would be put in the Sega Genesis system, and then another game could be placed onto the top of the Sonic & Knuckles cartridge itself.[3]"
10:06:27 <itidus21> i wanna take back my comments about post-megadrive/genesis sonics
10:06:37 <Vorpal> itidus21, oh?
10:06:53 <itidus21> since i have indeed not played any, or looked in depth into the question
10:07:03 <Vorpal> right
10:07:11 <elliott> shachaf: Help!! The anti-ByteString-for-Unicode contingent is failing!!
10:07:17 <Vorpal> itidus21, I looked at some lets play of the last one at least
10:07:33 <shachaf> elliott: Hey, man, I did my part.
10:07:36 <shachaf> I'm not getting involved.
10:07:40 <shachaf> (Any more.)
10:07:41 <itidus21> i had some kfc and i upset my teeth
10:07:48 <shachaf> Doctor's orders. It's bad for my mental health.
10:08:13 <elliott> shachaf: IM CRYIN;G
10:08:19 -!- cheater has quit (Ping timeout: 255 seconds).
10:08:22 <itidus21> ok i have an idea
10:08:32 <shachaf> elliott: Just... Ignore.
10:08:38 <shachaf> Let them use their ByteStrings for text.
10:08:44 <elliott> shachaf: They should have merged that Text/UTF-8 stuff just to shut people up about it.
10:08:49 <Vorpal> <elliott> shachaf: Help!! The anti-ByteString-for-Unicode contingent is failing!! <-- what is it about?
10:08:51 <fizzie> ByteStrings for breakfast.
10:08:54 <kmc> people will never shut up about anything
10:09:06 <itidus21> what about including the data to describe each character in the beginning of the document
10:09:50 <kmc> ...
10:09:56 <itidus21> like {A = the 2 lines of length 1 forming a 30 degree angle from the top to the bottom and a line in the middle
10:10:02 <itidus21> or something
10:10:13 <fizzie> Like, uh, a PDF file with embedded fonts?
10:10:33 <Vorpal> aren't ByteStrings mostly for handling (large) amounts of binary data? As opposed to actual text?
10:10:37 <Sgeo> kmc, elliott GreaseMonkey (does GreaseMonkey want on the list?) update
10:10:39 <itidus21> hmm embedded fonts yeah, thats the word i didnt know until now
10:10:39 <Sgeo> I think
10:11:05 <elliott> hi kmc
10:11:05 <itidus21> you could use embedded fonts on every document :D
10:11:11 <elliott> I'm glad elliott GreaseMonkey got updated
10:11:20 <Vorpal> itidus21, you usually embed the used subset of the font in .pdfs
10:11:22 <elliott> he was getting so rusty
10:11:24 <kmc> hi elliott
10:11:27 <elliott> totally unlike his formerly-greasy self
10:11:34 <kmc> <elliott> <kmc> <elliott> <kmc> <itidus21> <kmc> this must be how dogs see
10:12:16 <itidus21> ok so embedded fonts probably isn't the solution to unicode
10:12:21 <elliott> <kmc> <elliott> <kmc> <elliott> <kmc> <itidus21> <kmc> this must be how dogs see
10:12:27 <Vorpal> itidus21, obviously
10:12:27 <kmc> unicode is a disease, we have the cure
10:12:33 <kmc> the cure is that foreigners need to learn english
10:12:42 <kmc> also mathematicians should quit their abstract mumbo jumbo and use real words
10:13:07 <Vorpal> elliott, what? Through recursive quotations?
10:13:40 <kmc> we will convert to ASCII and use the other 128 bytes to encode a series of pleasing softcore pornographic images
10:13:54 <Vorpal> kmc, why softcore?
10:14:05 <fizzie> Vorpal: Anyway speaking of stacking cartridges, http://withfriendship.com/images/i/44407/sega-32x.jpg (It's rather slow to load, but did so finally, at least for me.)
10:14:28 <Vorpal> fizzie, *waits*
10:14:36 <itidus21> the set of all mathematicians should define a mapping of abstract mumbo jumbo words to real words
10:14:45 <Vorpal> ah there
10:14:45 <kmc> itidus21, they have that
10:14:49 <kmc> it's called "learn math"
10:14:53 <Vorpal> fizzie, what is it?
10:15:12 <itidus21> i was trying to rephrase "<kmc> also mathematicians should quit their abstract mumbo jumbo and use real words" for irony
10:15:24 <Vorpal> fizzie, there is the sonic stuff, and a game genie, what are the rest?
10:15:47 <elliott> <kmc> unicode is a disease, we have the cure
10:15:47 <elliott> <kmc> the cure is that foreigners need to learn english
10:15:51 <elliott> i have seen people express this opinion seriously
10:15:56 <fizzie> Vorpal: The bottom layer is a Mega-CD; you put a regular MegaDrive on top to get a CD thing; then stacked on that is a Sega 32X, it's a MegaDrive add-on which has some 32-bit SH2s or whatever, I can't recall the details.
10:16:19 <Vorpal> ah
10:16:28 <Vorpal> and the thing between that an the game genie?
10:16:41 <fizzie> Vorpal: I can't quite make out what the red-rimmed thing is, and the grey thing seems to say 'cleaning system'.
10:16:48 <kmc> elliott, sure
10:16:51 <Vorpal> fizzie, also: what happened if you put a sonic & knuckles in another sonic & knuckles?
10:17:00 <kmc> people will also express seriously the opinion that the jews should be rounded up & killed
10:17:04 <elliott> Vorpal: It exploded.
10:17:10 <Vorpal> elliott, really?
10:17:17 <fizzie> Vorpal: I think there are two Sonic & Knuckleses in that pile.
10:17:20 <Vorpal> ah
10:17:22 <Vorpal> yes indeed
10:17:36 <fizzie> I'm not sure if that tower would actually run, but it looks fancy.
10:17:40 <kmc> in Germany it is illegal to disparage Unicode
10:18:03 <Vorpal> elliott, I guess with enough cartridges you could make a large circle of them. I doubt there isn't any sideways movement possible.
10:18:36 * elliott idly considers answering http://stackoverflow.com/questions/8832624/any-good-articles-on-optimizing-haskell-code.
10:18:47 <Vorpal> <elliott> i have seen people express this opinion seriously <-- ouch
10:18:48 <itidus21> it would be more cool if the combined object resembled a humanoid robot with a sword
10:19:07 <fizzie> Vorpal: Here's another confusing contraption: https://img.skitch.com/20111206-bg8k8khjfknd7siqbj825nph18.jpg
10:19:40 <Vorpal> <fizzie> I'm not sure if that tower would actually run, but it looks fancy. <-- hm I guess there could be issues with power, and at some point also the signal levels
10:19:51 <Vorpal> fizzie, not quite as absurd
10:20:08 <itidus21> this is what it should resemble http://gadgetsin.com/uploads/2011/11/robot_shaped_4_port_usb_hub_3.jpg
10:20:36 <Vorpal> fizzie, but big flat thing without support for most of it looks dangerous to the connector
10:21:07 * Sgeo wonders if the Robozzle Silverlight interface can be made to work
10:21:17 <fizzie> Vorpal: Yeah. I don't really know what they have there; there's the more compact Mega-CD unit, but I can't be sure what's under the 32X. The game second-to-top is Sonic & Knuckles again, but I'm not sure what that thing is where the controller wires go.
10:21:51 -!- cheater has joined.
10:22:10 <Vorpal> fizzie, no description offered on the page it was on?
10:22:23 <fizzie> No, it was a second-hand find.
10:22:27 <Vorpal> ah
10:22:32 <Vorpal> fizzie, same for the other picture?
10:22:53 <fizzie> Yes. "I can’t quite name everything I see in this picture, so if someone wants us to give a piece by piece rundown feel free."
10:22:55 <Vorpal> also that cleaning system thingy looks highly suspect. Cleaning what.
10:23:18 <fizzie> Ah, there's a commenter. "You’ve got a Sega 32X plugged into the base console (as it should be) but then the Master System adapter plugged into that (which may or may not be a functional combination), then a cleaning cartredge plugged into the master system adapter (which is just a piece of plastic with scrubby bits on the ends), so that completely breaks any functionality it may have had. Then a Game Geneie, two copies of Sonic and Knuckles (no reaso
10:23:18 <fizzie> n) and then Sonic 3. Also, a Sega CD to the side."
10:23:37 <fizzie> "About the biggest functional stack you could have would be Console + Sega CD + 32x, +Game Genie + Sonic & Knuckles, + another cart.
10:23:37 <fizzie> Or maybe if the 32x supports the master system adapter you could have Console + CD + 32x + Master System Adapter + Master System cart. (I don’t think there was a master system game genie)"
10:24:13 <Vorpal> heh
10:24:54 <fizzie> Vorpal: Anyway, Sega once made a handheld that played MegaDrive cartridges, so purely theoretically (and connector-wise) you could also plug in all that stuff (well, not the Mega-CD) into this: http://en.wikipedia.org/wiki/File:Sega-Nomad-Front.png
10:25:08 <fizzie> That would probably look even more ludicrous.
10:25:14 <Vorpal> heh
10:25:34 <fizzie> "32X Add-on: Cannot be played on the Nomad due to an obscure cartridge shape that can't fit in the Nomad's cartridge slot."
10:25:35 <fizzie> Aw.
10:25:41 <elliott> fizzie: I'm imagining a project to plug as many pieces of tech into each other as possible.
10:26:03 <elliott> Like, start from a laptop with a shitload of USB hubs, then USB adapters to everything, ..., TV, console, catridge, ...
10:26:07 <elliott> You could fill a house with it.
10:26:09 <fizzie> I don't really think 32X would run (at least for long) with batteries, anyway.
10:26:42 <fizzie> It's got 30 minutes of battery life with non-rechargable batteries, anyway. :p
10:27:01 <Vorpal> fizzie, heh
10:27:33 <kmc> did anyone ever make a laptop that's powered by a small internal combustion engine
10:27:40 <elliott> kmc: <sid> Hi, how can I create a list with an immutable length please?
10:27:50 <kmc> like the ones on model aircraft
10:27:52 <Vorpal> elliott, hm, you could probably do even more with a desktop
10:28:13 <shachaf> #esoteric: All the frustration of #haskell, with none of the good parts of #haskell!
10:28:34 <Vorpal> elliott, I have like 8 USB 2 ports on the back (iirc), two USB 3 ports, two USB 2 on the front and one USB 3 on the front
10:28:45 <kmc> 2 in the front, 1 in the back
10:28:48 <elliott> shachaf: Yep!
10:29:01 <Vorpal> kmc, that sounds more like a laptop?
10:29:08 <Vorpal> except it would be the side there
10:29:22 <Vorpal> oh wait, misread the context
10:29:22 <fizzie> They've had some fuel cell laptop prototypes, but that probably doesn't count as a combustion engine.
10:29:33 <kmc> now merijn will guess not only the question but the entire backstory of the question-asker
10:29:43 <elliott> haha
10:29:50 <elliott> kmc: <merijn> elliott: I suspect python experience, because python's tuples are essentially immutable lists
10:30:39 <Vorpal> elliott, the most USB ports I ever seen on a laptop was 6 hm. 2-4 is more usual
10:31:02 <elliott> Vorpal: Thus the hubs.
10:31:17 <Vorpal> elliott, yes but there is a limit to the number of devices on a single host controller
10:31:19 <Vorpal> 127 iirc
10:31:39 <Vorpal> elliott, since every port on my desktop has a separate host controller that means a lot more devices
10:31:49 <elliott> Vorpal: I never said it had to work.
10:31:54 <Vorpal> elliott, oh
10:31:58 <Vorpal> I assumed it had to
10:32:09 <elliott> Well, it would be cooler.
10:33:38 <Vorpal> elliott, I also have firewire hm (and so does my laptop). Might be rather hard to find any device that supports that these days
10:33:40 <fizzie> You can connect any amount of computers with wires (the technical term is "net-work", I believe) but maybe that's contrary to the spirit.
10:33:54 <Vorpal> but I believe the limit for firewire is 63 devices?
10:33:57 <Vorpal> or some such
10:33:58 <Vorpal> per chain
10:34:52 <Vorpal> fizzie, well obviously you could easily fill a house with that yes. And networked printers (especially since those tend to be rather large), NASes and what not
10:35:21 <kmc> let's fill the planet with interconnected computers
10:35:23 <elliott> fizzie: Well, you want to optimise for the number of different device-types.
10:35:25 <kmc> i call it "the internet"
10:35:28 <elliott> kmc: Some kind of... internetworking?
10:35:31 <fizzie> Vorpal: They make those clevur eSATA/USB hybrid ports into laptops too these days.
10:35:42 <Vorpal> oh yes I have one or two eSATA ports too
10:35:47 <Vorpal> none of the hybrid ones
10:35:53 <Vorpal> (on my desktop)
10:36:01 <Vorpal> (no such thing on my laptop, it is too old)
10:36:13 <Vorpal> (like, uh, almost 3 years)
10:36:19 <fizzie> "As the port is designed to work with both SATA and USB, neither organization has formally approved it. USB-IF states it does not support any connector used by other standards, these combo ports are to be used at your own risk,[1] --
10:36:30 <fizzie> "You'll plug your eye out?"
10:36:39 <fizzie> s/\?/!/
10:36:44 <Vorpal> fizzie, what?
10:37:10 <fizzie> The "at your own risk" makes it sound like that.
10:37:17 <Vorpal> also what about that new intel/apple thingy. The uh, lightsomething
10:37:20 <Vorpal> forgot the name of it
10:37:28 <elliott> Thunderbolt.
10:37:31 <Vorpal> ah
10:37:38 <Vorpal> elliott, I'm pretty sure it used to be lightsomething
10:37:41 <Vorpal> did they rename it?
10:37:48 <fizzie> Thunderbolts and lightning, very very frightening.
10:38:09 <fizzie> Light Peak was a codename for it.
10:38:11 <Vorpal> does anything use it (apart from apple products)?
10:38:13 <Vorpal> fizzie, ah okay
10:39:30 <itidus21> http://www.youtube.com/watch?v=YmCVYbTWU60
10:41:10 -!- cheater has quit (Ping timeout: 255 seconds).
10:42:39 <Vorpal> hm they dropped the actual fibre stuff? How boring
10:43:08 <fizzie> Can't send power over fibre (yet).
10:43:28 <fizzie> But yes, it's just boring copper.
10:43:35 <Vorpal> fizzie, yes you could by using a solar cell thingy at the end :P
10:43:59 <Vorpal> but more seriously you could use fibre for the data and copper for the power in the same cable
10:44:54 <Vorpal> it is not like you wouldn't need separate wires for data and power anyway
10:45:27 <Vorpal> (well okay, you can do networking over the mains and such, but iirc performance is rather bad)
10:46:50 <kmc> 1-wire does it
10:47:15 <fizzie> Copper is also cheaper, which is probably the more important reason.
10:47:29 <Vorpal> kmc, hm, not familiar with that bus (though I heard the name before, and thought "what a generic name"). But what is the data rate over that?
10:47:38 <kmc> dallas 1-wire
10:47:40 <Vorpal> also how does it form a circuit?
10:47:43 <kmc> and the data rate is not that high
10:47:49 <kmc> it's 2 wires incl. ground
10:47:53 <Vorpal> ah right
10:47:59 <kmc> there's a ground wire and a power/data wire
10:48:25 <Vorpal> kmc, anyway for high speed connections (over copper) you usually use differential signaling afaik
10:48:30 <kmc> yeah
10:48:49 <Vorpal> I wonder how that works for stuff like networking over the mains
10:48:59 <Vorpal> you can't really do that there
10:49:10 <fizzie> Not quite 2x2x10Gbps over 1-wire, I don't think.
10:49:27 <Vorpal> indeed
10:49:58 <Vorpal> what sort of data rate does 1-wire have? I would guess in the range of kbps
10:51:25 <Vorpal> also youtube just spazzed out. It now says that every video was uploaded 42 years ago for me
10:51:26 <Vorpal> wtf
10:51:44 <Vorpal> (in the channel video list thingy)
10:51:50 <Vorpal> (the date on the actual video is correct)
10:51:57 <Vorpal> wait no, they are not correct
10:51:59 <Vorpal> they are all today
10:52:01 <Vorpal> okay wtf
10:54:40 <fizzie> I think the common ("homeplug"/IEEE1901) ethernet-over-power-lines just uses fancy modulation (xDSL-style) and high-enough frequencies, so that they carry over the neutral wire.
10:54:48 -!- cheater has joined.
10:55:01 <Vorpal> ah
10:55:28 <kmc> do they transmit only around the AC zero crossing, or all the time
10:55:31 <Vorpal> fizzie, xDSL uses phase modulation iirc?
10:55:51 <Vorpal> (which I have to admit I have no clue how it works)
10:56:37 <elliott> kmc: I know of that thing solely thanks to menuconfig.
10:56:59 <Vorpal> elliott, ah yes that is where I have seen 1-wire before
10:57:01 <Vorpal> thanks
10:57:38 <ais523> hmm, that was fun
10:57:43 <ais523> going over past exam questions in a tutorial
10:57:49 <ais523> there was a "spot the six mistakes in this code" question
10:57:51 <ais523> and we found nine
10:57:54 <Vorpal> :D
10:58:34 <Vorpal> ais523, were three of them much less obvious than the other 6?
10:58:57 <ais523> I don't think so
10:59:02 <Vorpal> strange
10:59:03 <ais523> although some of them stemmed from the same root cause
10:59:08 <Vorpal> ah
10:59:16 <ais523> there was an array that wasn't initialized at all, and initializing it just brought up more problems
10:59:28 <Vorpal> which language was it?
10:59:38 <ais523> Java
10:59:41 <Vorpal> hm
10:59:51 <ais523> but it would have been the same in C, apart from the different syntax for allocating an array on the heap
11:00:56 <fizzie> Vorpal: I seem to recall at least ADSL supporting more than one modulation scheme (admittedly they could all be phase-related variants), using the "most suitable" one for each frequency subband. But I'm no telecomm engineer.
11:01:23 <Vorpal> quite possible
11:03:43 -!- cheater has quit (Ping timeout: 248 seconds).
11:07:00 <fizzie> At least QAM is used, and that's sort-of amplitude-and-phase-modulation.
11:08:10 <Deewiant> ais523: I have all the (Be)Funge specifications I'm aware of but no tutorials, sorry.
11:08:16 * Sgeo had alcohol in his mouth :/
11:08:35 <Vorpal> fizzie, QAM?
11:08:46 <Vorpal> oh "Quadrature amplitude modulation"
11:08:51 <Vorpal> wth is that
11:09:04 <fizzie> It's what they use very much.
11:09:09 <Vorpal> right
11:09:33 <Vorpal> Deewiant, ais523 was looking for a funge tutorial? Why?
11:10:02 <Vorpal> hm how many esolangs have tutorials?
11:10:04 <ais523> Vorpal: email request
11:10:13 <Vorpal> heh
11:10:17 <Vorpal> ais523, due to IFFI?
11:10:21 <ais523> no
11:10:25 <ais523> due to me being known as an esolanger
11:10:28 <Vorpal> ah
11:10:41 <Vorpal> I can't think of a single esolang that I know of any tutorial for
11:11:15 <Vorpal> ais523, are there intercal tutorials?
11:11:22 <fizzie> ais523: I don't think it's possible to have an "uninitialized" array in Java; all you can have is an array with elements initialized to their default values, which might informally count as one. (Cf. JLS 15.10.1p5 "Run-time Evaluation of Array Creation Expressions: ...array is created of the specified length, and each component of the array is initialized to its default value...")
11:11:30 <ais523> Vorpal: one unfinished one by Clinton Forbes
11:11:40 <ais523> fizzie: I meant a null pointer where an array should be
11:11:44 <Vorpal> heh
11:12:07 <ais523> I've been wondering about writing one myself, but I'm not sure if there's an audience
11:12:13 <ais523> perhaps I'll write a monad tutorial instead to annoy elliott
11:12:32 <Vorpal> ais523, I might read it. Actually being able to code in intercal would be cool
11:12:55 <fizzie> ais523: Does that "unfinished one" equal the "Diving into INTERCAL" blog?
11:13:09 <fizzie> Oh, the name's at the end of the comments; apparently so.
11:13:26 <ais523> fizzie: yes
11:13:43 <ais523> Vorpal: I think the author got lost right around when he tried to make a non-infinite loop
11:13:44 <fizzie> So which animal would the O'Reilly INTERCAL book have?
11:14:09 <ais523> fizzie: it wouldn't, it'd be an O'Reilly book but it'd have something that no other O'Reilly book has on its cover
11:14:19 <ais523> different in nature, rather than just a different animal
11:14:48 <fizzie> O'Reilly has quite a few non-animal books already.
11:15:20 <ais523> oh, in that case, it'd have to just not have a cover at all
11:15:42 <fizzie> They have a set of "X Hacks" books which have tool covers, for example.
11:15:48 <elliott> <ais523> perhaps I'll write a monad tutorial instead to annoy elliott
11:15:56 <elliott> ais523: Is "annoyance" an appropriate description of a murder?
11:16:06 <elliott> * Sgeo had alcohol in his mouth :/
11:16:09 <elliott> Sgeo: You am will die now.
11:16:22 -!- cheater has joined.
11:17:02 <elliott> <fizzie> So which animal would the O'Reilly INTERCAL book have?
11:17:05 <elliott> An alot, perhaps?
11:17:09 <elliott> fizzie: Also you SPACED AFTER THAT QUESTION AGAIN.
11:17:20 <fizzie> IT KEEPS HAPPENING.
11:17:24 <elliott> fizzie: Should I set up a bot that does annoying things on "\? $"?
11:17:26 <fizzie> Perhaps even: happening.
11:17:30 <elliott> That might help you kick the habit.
11:17:32 <Vorpal> elliott, why do you care about that space?
11:17:37 <elliott> Vorpal: It's bad for him.
11:17:40 <Vorpal> elliott, why
11:17:48 <ais523> it's not as bad as the enigma punctuation style !
11:17:57 <elliott> Vorpal: Stop being irresponsible.
11:18:02 <elliott> ais523: Isn't that just French?
11:18:11 <Vorpal> elliott, no I'm curious.
11:18:40 <ais523> elliott: perhaps, but it still gets on my nerves slightly
11:18:47 <ais523> especially when sentences I write, in English, are corrected to it
11:18:56 <elliott> ais523: wat
11:19:04 <ais523> hmm, I wonder if there are Funge-98 tutorials in the #esoteric logs
11:19:09 <Sgeo> Why do the There She Is animations take so long to load?
11:19:19 <ais523> elliott: a level I submitted to Enigma is officially called "Choices, choices ..."
11:19:38 <elliott> ais523: :(
11:19:41 <elliott> ais523: kill them all
11:20:00 * Sgeo should play Enigma
11:20:10 <ais523> Sgeo: do
11:20:13 <ais523> even if development is mostly dead
11:20:13 <Sgeo> Is it annoying to play with a touchpad?
11:20:20 <ais523> I got used to it surprisingly quickly
11:20:25 <ais523> it does take some getting used to, though
11:20:41 <ais523> and a lot of tweaking of the mouse speed option (which you can do using left and right in-game, so they probably realised it'd be necessary)
11:20:47 <Vorpal> ais523, I never managed to play it with a trackpoint
11:21:13 <Vorpal> and you need that tweaking when using the mouse depending on the level
11:21:16 <elliott> a trackpoint sounds perfect for enigma
11:21:41 <Vorpal> elliott, it really isn't
11:21:51 <Vorpal> elliott, the level of control is too low
11:22:01 <Vorpal> as in, not exact enough
11:22:31 <ais523> `pastlog funge
11:22:32 <fizzie> Why are there so few trackballs around? I want to fondle some balls. :/
11:22:44 <ais523> fizzie: we have a trackball on the desktop at home, because there isn't enough table space for a mouse
11:22:56 <ais523> thumb trackball, I find them much superior to the finger-controlled versions
11:23:06 <HackEgo> No output.
11:24:06 <oklofok> "<elliott> ais523: what's the opposite of infinitesimal?" on hyperreals, you can at least say finite for all nonzero values in R afaik.
11:24:12 <fizzie> Those "rod mice" are weird too. I don't know the term for it. There's a horizontally positioned rod, slightly like an oversized pencil, and you rotate it to go up/down, and do something, I don't know quite what, to move sideways.
11:24:14 <Vorpal> ais523, how do they compare to mice?
11:24:17 <elliott> oklofok: i was looking for something a little snappier
11:24:21 <oklofok> apparently ais523 already answered
11:24:38 <elliott> fizzie: The privilege of fondling balls is restricted to the chosen few.
11:25:19 <ais523> Vorpal: easy to use but slightly slower
11:25:44 <Vorpal> easier to use in what way? Better precision or what?
11:26:06 <ais523> they really obviously convey the assumptions behind Fitt's Law; with a mouse moving it is one motion and the adjustments are subconcious, with a trackball you notice yourself making them
11:26:08 <fizzie> Gah, I can't find even a picture of the horizontal-rod thing. What *are* they called?
11:26:09 <ais523> and I didn't say easier to use
11:26:16 <ais523> just, they aren't massively difficult to use
11:26:29 <Vorpal> ah
11:26:31 <Vorpal> I misread
11:26:32 <Vorpal> sorry
11:26:33 <ais523> `pastlog funge
11:26:36 <ais523> `pastlog funge
11:26:38 <ais523> `pastlog funge
11:26:39 <ais523> `pastlog funge
11:26:41 <ais523> `pastlog funge
11:26:43 <Vorpal> what
11:26:48 <Vorpal> `echo test
11:26:51 <ais523> Vorpal: trying to find funge tutorials in the logs
11:26:59 <ais523> -98, that is
11:27:01 <Vorpal> ais523, I doubt spamming it helps
11:27:07 <HackEgo> No output.
11:27:08 <ais523> Vorpal: I wanted five different results
11:27:19 <Vorpal> ais523, I thought pastelog includes all
11:27:25 <fizzie> "past", not "paste".
11:27:27 <HackEgo> test
11:27:30 <Vorpal> oops
11:27:36 <HackEgo> No output.
11:27:47 <fizzie> Seems what you got was five similar results, sadly.
11:27:47 <ais523> pastelog's an interesting thought
11:27:48 <ais523> might be too much output, though
11:27:51 <ais523> I'll try anyway
11:27:53 <elliott> `pastlog funge
11:27:53 <elliott> `pastlog funge
11:27:53 <elliott> `pastlog funge
11:27:53 <elliott> `pastlog funge
11:27:53 <elliott> `pastlog funge
11:27:54 <elliott> `pastlog funge
11:28:04 <elliott> c<fizzie> Gah, I can't find even a picture of the horizontal-rod thing. What *are* they called?
11:28:06 <elliott> fizzie: Roller mice?
11:28:19 <elliott> Yes.
11:28:25 <fizzie> Apparently.
11:28:26 <oklofok> so umm, we say a minsky machine is somewhat reversible if it has only one configuration (say state f, zero counters) where it doesn't have a successor and only one config (say state i, zero counters) which doesn't have a predecessor, and it's injective on all configs.
11:28:36 <fizzie> I'd'nvr've thought.
11:28:45 <fizzie> ("never" is not really easy to stick in like that.)
11:28:49 <oklofok> is it undecidable whether you reach the final config from the initial one?
11:28:55 <elliott> fizzie: I'd'ne'er've thought.
11:29:31 <HackEgo> No output.
11:29:47 <oklofok> we need this for a paper, but i don't know anything about minsky machines because computer science is such bleh :/
11:30:23 <HackEgo> No output.
11:30:23 <HackEgo> No output.
11:30:23 <HackEgo> No output.
11:30:28 <Vorpal> <fizzie> Gah, I can't find even a picture of the horizontal-rod thing. What *are* they called? <-- oh yes, I only remember seeing them in the context of health care receptionists and similar
11:30:29 <elliott> oklofok: sorry we're all programmers here try #computejerisjojicience
11:30:33 <ais523> oklofok: what do you mean by injective, here?
11:30:48 <oklofok> ais523: all configs that have successors have different successors
11:30:59 <oklofok> so all except the final config that doesn't have a successor.
11:31:29 <ais523> ah, I was going to pigeonhole principle it, but then realised there are infinitely many states (obviously)
11:31:41 <HackEgo> No output.
11:31:41 <HackEgo> No output.
11:31:43 <HackEgo> No output.
11:31:44 <oklofok> well infinitely many configurations
11:31:45 <HackEgo> No output.
11:31:45 <HackEgo> No output.
11:31:52 -!- pikhq has joined.
11:32:24 <oklofok> i have a state part taken from a finite set and a finite number of counters. values for those together i call a config
11:32:24 <ais523> where's the logs repo?
11:32:42 <ais523> I'll do this on my local machine, easier that way
11:32:55 -!- pikhq_ has quit (Ping timeout: 252 seconds).
11:33:15 <elliott> ais523: !logs
11:33:20 <oklofok> from this we'd get that stability of a CA from a zero entropy SFT is undecidable
11:33:20 <ais523> !logs
11:33:38 <oklofok> by running the machine backwards and some magic
11:34:04 <ais523> thanks
11:34:55 <ais523> oklofok: I don't see an obvious reason why reversibility would suddenly make termination decidable in an infinite-state program
11:34:59 <ais523> but ofc that's not the same thing as a proof
11:36:40 <oklofok> reversibility certainly doesn't, but the specific problem statement might.
11:37:10 <oklofok> reversible minsky machines have a lot of undecidable problems, but we need a concrete reduction
11:37:17 <ais523> oklofok: wait, how many counters does this machine have?
11:37:33 <oklofok> as many as you like. two will suffice.
11:37:42 <oklofok> (two always suffices)
11:37:45 <ais523> right, ofc
11:37:49 <elliott> oklofok: zero, one, infinity
11:38:10 <oklofok> that doesn't apply when you can prove something different happens at 2.
11:38:21 <elliott> ais523: http://www.reddit.com/r/haskell/comments/ob9oj/til_about_planethaskellorg/c3g3rfp?context=1
11:38:25 <kmc> elliott, this one is way better: http://hpaste.org/56369
11:38:26 <elliott> ais523: you know what you have to do...
11:38:27 <oklofok> but we're not restricting the counters anyway.
11:38:49 <elliott> kmc: you need pseq, not seq
11:38:51 <kmc> given various assumptions about GHC, it even won't segfault
11:38:54 <elliott> F- sloppy
11:38:57 <kmc> sux
11:38:57 <elliott> (I think)
11:39:01 <kmc> you're right though
11:39:04 * kmc hangs head in shame
11:39:07 <oklofok> for the journal version, we're planning to completely characterize the types of computation CA can do depending on the particular subshift
11:39:32 <oklofok> (zero entropy sofic subshift)
11:39:42 <kmc> . o O ( unsafePerformIO ( evaluate x >> return y ) )
11:39:58 <oklofok> it will be so awesome and no one will ever read it :)
11:40:00 <elliott> kmc: isn't that just pseq but slower
11:40:09 <ais523> oklofok: heh
11:40:13 <ais523> sometimes I feel that way about my papers
11:40:16 <elliott> unsafePerformIO (return $! x >>= return >> return y) -- i cba to expand it beyond this
11:40:26 <kmc> unsafeDupablePerformIO ( evaluate x >> return y )
11:40:31 <elliott> hmm, no, pseq uses that lazy trick
11:40:38 <kmc> fix (>=> return)
11:41:25 <oklofok> we have 7 papers of original research now where i'm a coauthor (or sole author), so technically i could write up two phd theses based on those.
11:41:33 <kmc> anyway i think this one is almost a reasonable api for users
11:41:40 <kmc> except just# nothing# == nothing#
11:41:47 <oklofok> (4 are required, 3 would probably be tolerated)
11:41:49 <elliott> kmc: just special-case nothing# in just#
11:41:55 <kmc> bleh
11:42:00 <elliott> kmc: by dynamically allocating new nothings
11:42:04 <kmc> too many pigeons, not enough holes
11:42:13 <oklofok> i wonder if elliott will love me if i do two phds this year.
11:42:22 <elliott> oklofok: y
11:42:24 <kmc> oklofok, at the same time?
11:42:30 <oklofok> kmc: yes.
11:42:34 <elliott> -- A nullary constructor gives a distinguished boxed value.
11:42:34 <elliott> data Nothing# = Nothing#
11:42:38 <oklofok> note that i'm planning to do 0
11:42:38 <elliott> kmc: so if it's boxed what does the # represent
11:42:40 * kmc has never "done" anyone with a PhD
11:42:48 <kmc> elliott, dope
11:42:55 <ais523> 2003-09-25 15:50:10: <fizzie> I'm afraid I'll end up writing a mathematica-based befunge interpreter. happens with every new language I learn.
11:43:04 <elliott> kmc: ah
11:43:29 <fizzie> ais523: Never did. (Or if I did, I've forgotten about it.)
11:43:33 <kmc> man now i'm embarrassed i've never slept with anyone who has a graduate degree
11:43:41 <kmc> much less two of them at the same time
11:43:42 <ais523> good, I'm vaguely glad you didn't
11:43:53 <ais523> seems my hatred for mathematica is greater than my love for befunge
11:44:17 <oklofok> kmc: does masturbation count?
11:44:18 <fizzie> I did some "pretty pictures with IFS" and that was about it.
11:44:21 -!- cheater has quit (Ping timeout: 268 seconds).
11:44:30 <kmc> well i don't have a graduate degree, so no
11:44:43 <kmc> i know, someone without a PhD, programming Haskell
11:44:45 <oklofok> you can't make the rules based on whether you would win o_O
11:44:47 <ais523> "Earn Earn Earn Earn Money Money Online Poundpyramid.com"
11:44:47 <kmc> sounds impossible but here i am
11:44:54 <ais523> that doesn't look like a plausible search query…
11:45:27 <elliott> kmc: did you at least get your degree in haskell
11:45:33 <elliott> the most academic of subjects
11:45:48 <oklofok> the nonexistent degree?
11:45:49 <elliott> ais523: i know i want to earn earn earn earn money money online poundpyramid.com
11:46:00 <oklofok> poundpyramid.com sounds legit enough
11:46:19 <elliott> it's a pound scheme
11:46:31 <ais523> oklofok: possibly is, spambots often spam the names of legit sites to try to beat them in the search rankings
11:46:46 <ais523> so many people search for a site rather than just visiting it…
11:47:37 <elliott> ais523: it's squatted
11:48:09 <elliott> (diff) (hist) . . Language list‎; 07:32 . . (-790) . . 76.174.173.118 (Talk) (dag yall they was spammin up that shizzle i love this site i do not wanna see some spammed up sheezy)
11:48:09 <elliott> (diff) (hist) . . Language list‎; 03:48 . . (+266) . . 149.255.39.50 (Talk) (Kathy, the content you have graciously shared with us every once in a while is both inspiring and entertaining. And a blog is the perfect medium for this. A lot of the content is about your style and)
11:48:21 <ais523> 2004-09-14 21:49:24: <ZeroOne> what's rms? 21:51:31: <lindi-> ZeroOne: richard stallman, stallman.org
11:48:27 <ais523> wow
11:49:10 <ais523> elliott: also, 2004-11-04 is an awesome log, read all of it (it's also very short)
11:49:43 <elliott> well, it's certainly short
11:50:05 <fizzie> 2004-11-05 is in the same "genre".
11:50:25 <elliott> ais523: haha, two days later slava joins
11:50:32 <ais523> who's slava?
11:50:37 <elliott> ais523: pestov
11:50:42 <ais523> ah, right
11:50:47 <ais523> I have heard of him, but can't remember why
11:50:48 <elliott> hmm, jDoctor, I remembe that name from old #concatenative logs... I guess it must have been mentioned there
11:50:50 <elliott> ais523: jEdit, Factor
11:50:55 <ais523> ah, OK
11:51:00 <ais523> I remember now
11:51:30 <ais523> hmm, this channel really has got more active over time
11:51:33 <ais523> even though it feels like less
11:51:37 <ais523> it's got less ontopic, though
11:51:46 <elliott> 03:35:33: <slava> i'm working on stack effect inference for postfix languages
11:51:46 <elliott> hehe, factor has that
11:51:54 <elliott> ais523: feels like less?
11:52:01 <elliott> the last time people said this channel was dying was like 2005
11:52:08 <ais523> elliott: I don't think it's less active
11:52:15 <ais523> just that I have rose-tinted memories of it
11:52:24 <ais523> come to think of it, I probably considered bsmnt_bot ontopic
11:52:45 <Vorpal> ais523, are you talking about activity as number of lines said or number of persons saying stuff?
11:52:51 <ais523> oh heh, just came across Gregor's first visit to the channel, advertising FYB
11:52:57 <ais523> Vorpal: pretty much any plausible metric
11:53:04 <ais523> even absolute amount of ontopic conversation, possibly
11:53:04 <Vorpal> because elliott talks a lot (and so did I use to, I think I'm less active these days)
11:53:07 <ais523> (rather than proportion)
11:53:10 <ais523> and so do I
11:53:14 <fizzie> The number of "q" letters spoken.
11:53:25 <elliott> 08:28:34: <fizzie> why do you have those discussions at 05-06am?
11:53:25 <elliott> 08:39:28: <heatsink> I don't
11:53:25 <elliott> 08:44:29: <fizzie> 05:50:44 < heatsink> ooh, you do continuations too!
11:53:25 <elliott> 08:44:32: <fizzie> see, with proof.
11:53:37 <Vorpal> fizzie, you should do a new graph showing who spoke most during the last year or so
11:53:38 <fizzie> elliott: I hadn't heard of time zones yet.
11:53:46 <elliott> fizzie: :D
11:53:48 <fizzie> They're so confusing.
11:53:59 <fizzie> It's now... but it's not now now somewhere else.
11:54:06 <fizzie> It's, like... not now. Now.
11:54:13 <elliott> Vorpal: I'd like to amend that request: fizzie: you should do a new graph showing me to be the top in whatever it is you're grapinh.
11:54:22 <fizzie> Also it could be yesterday or tomorrow now.
11:54:26 <Vorpal> elliott, hah
11:54:28 <fizzie> *mind blown*
11:54:29 <elliott> fizzie: It is.
11:54:48 <elliott> 22:22:04: <lindi-> anybody thought about building a smart compiler that could optimize by replacing poor algorithms with better ones?
11:54:48 <elliott> 22:22:44: <lindi-> so if the programmer has used e.g. bubble sort the compiler would detect that and actually use quick sort
11:55:10 <elliott> sufficiently genius compiler
11:55:13 <Vorpal> isn't it always two dates on earth except in one specific instant?
11:55:25 <ais523> probably would be mostly useless, because it's easier to just use library sort rather than implement it yourself
11:55:31 <Vorpal> (per 24h period of course)
11:55:35 <ais523> Vorpal: no, sometimes it's three
11:55:38 <elliott> 22:31:20: <fizzie> not related, but mooz could perhaps say something here about his "random programs" experiments.
11:55:38 <elliott> 22:31:37: <lindi-> hmm
11:55:38 <elliott> 22:31:40: <fizzie> it's esoteric enough.
11:55:38 <elliott> 22:32:14: <fizzie> apparently he keeps finding composite-number-factoring algorithms at a surprisingly high rate. :p
11:55:42 <ais523> there are timezones that are more than 24 hours off UTC
11:55:42 <elliott> fizzie: do tell, eight years later
11:55:47 <Vorpal> ais523, oh okay
11:55:55 <Vorpal> ais523, then I guess there are always 2 or 3 ones then
11:55:58 <oklofok> maybe the compiler could identify pieces of code that seem to remake an stdlib algo and give a warning though
11:56:12 <Vorpal> ais523, also you mean 12 hours off?
11:56:17 <fizzie> ais523: I don't think there are; I mean, there are timezones with more than 24 hours difference between them, but...
11:56:31 -!- cheater has joined.
11:56:33 <elliott> oh, the channel turned 9 years old last month
11:56:45 <Vorpal> elliott, oh nice, and we completely missed the bday
11:56:53 <ais523> elliott: has it been logged from the start?
11:56:58 <elliott> ais523: almost
11:57:04 <ais523> fizzie: I thought there were
11:57:11 <ais523> oh, I must have meant more than 12
11:57:19 <Vorpal> indeed
11:57:26 <elliott> EFNet #esoterica: 9 dec 2002; lament proposes OpenProjects 8 dec (?!); "OK, so now we can be found at OPN, #esoteric (it's ours!)." 9 dec
11:57:32 <Vorpal> anyway why more than 12 hours off? That is just silly
11:57:37 <elliott> oh -- 8 dec was in UTC-0800
11:57:45 <elliott> so yeah, 9 dec
11:57:46 <ais523> hmm, befunge.org was all the rage back in 2005
11:57:50 <elliott> fizzie: when are your early logs from, again?
11:57:51 <kmc> Vorpal, 'cause it sucks if your neighbors are on a different day from you
11:57:53 <ais523> and now it's been gone so long people can't even be bothered to squat it
11:58:04 <ais523> either that, or fizzie is hanging onto the domain but isn't using it for anything
11:58:07 <fizzie> Vorpal: It goes up to UTC+14 in one direction, but only UTC-12 the other.
11:58:08 <Vorpal> kmc, hm
11:58:16 <elliott> ais523: he noted it was going to be dropped in here
11:58:17 <Vorpal> 14? wow
11:58:18 <fizzie> ais523: No, I let it expire.
11:58:43 <ais523> in that case, I'm shocked it isn't being squatted
11:58:50 <ais523> I thought expired domains got squatted forever just i ncase
11:58:51 <kmc> like the Chatham Islands are 45 minutes ahead of New Zealand rather than 23 hours 15 minutes behind
11:59:19 <ais523> fizzie: so /did/ you ever teach your girlfriend befunge?
11:59:36 <Vorpal> kmc, 45 minutes. So not even full hour steps...
11:59:42 <elliott> "Disagreed. In my way of thinking, scopes are static, and I/O is no more
11:59:42 <elliott> in violation of scopes than passing of parameters or other such phenomena."
11:59:43 <kmc> "As a British colony, Kiribati was centered in the Gilbert Islands, just west of the old date line. Upon independence in 1979, the new republic acquired the Phoenix and Line Islands from the United States and the country found itself straddling the date line. Government offices on opposite sides of the line could only communicate by radio or telephone on the four days of the week when both sides experienced weekdays simultaneously. A con
11:59:43 <kmc> sequence of this time zone revision was that Kiribati, by virtue of its easternmost territory, the Line Islands, including the inhabited Kiritimati island, started the year 2000 on its territory before any other country on earth, a feature which the Kiribati government capitalized upon as a potential tourist draw."
11:59:46 <fizzie> elliott: I don't recall when they are, and it's always such a chore to find them. There weren't very many days' worth of them.
11:59:52 <ais523> <Keymaker> languages that definitely should stay in wikipedia, are in my opinion the following: brainfuck, befunge, thue, malbolge, unlambda
11:59:53 <elliott> ais523: seems like esoteric discussion being off-topic dates back to the lists :P
12:00:14 <ais523> elliott: remember when we were discussing the list of top-stream esolangs?
12:00:19 <kmc> (UTC+14)
12:00:30 <kmc> Vorpal, yeah, half-hour timezones are pretty common; 15 minute less so but there are some
12:00:35 <ais523> I think that's the same as our list, plus thue and malbolge, minus underload as it hadn't been invented yet
12:00:45 <elliott> fizzie: Well, there are about ~40 days from the founding of the channel to clog.
12:00:50 <ais523> also, whitespace, false and shakespeare were suggested in that conversation
12:00:59 <elliott> ais523: err, which list?
12:01:10 <Vorpal> kmc, I want a 2.512 minute timezone.
12:01:10 <Vorpal> :D
12:01:24 <elliott> oh
12:01:25 <fizzie> ais523: Well, I've spoken about the topic quite a few times, but not so much that you could call it "teach".
12:01:26 <ais523> elliott: we were discussing a while back a list of esolangs that were best-known or most worthy of study
12:01:27 <Vorpal> (or any other similarly small offset)
12:01:33 <ais523> the classics of esolangs, as it were
12:01:41 <elliott> ais523: my list was brainfuck, intercal, unlambda, underload, malbolge, I think
12:02:00 <elliott> ais523: I'd add /// and BCT, personally
12:02:02 <elliott> and strongly reject Thue
12:02:08 <elliott> even if it is more well-known than ///
12:02:10 <kmc> Vorpal, a few countries have declared their timezone to be centered on the capital
12:02:15 <oklofok> my list is toi, clue and oklotalk.
12:02:18 <kmc> leading to shit like http://en.wikipedia.org/wiki/UTC%2B04:51 and http://en.wikipedia.org/wiki/UTC%E2%88%9200:44
12:02:27 <oklofok> ^__^
12:02:28 <ais523> oklofok: oklopol-clue, or keymaker-clue?
12:02:36 <oklofok> ais523: keymaker-clue obviously
12:02:42 <oklofok> oklopol-clue is just silly
12:02:42 <kmc> i've heard rumors of a Riyadh Mean Solar Time which adjusted every day based on sunrise in Riyadh
12:03:00 <Vorpal> kmc, heh
12:03:01 <kmc> one of the few timezones so fucked it's not in the tz database
12:04:13 <fizzie> elliott: "At 03:16 24/07/2001 -0500, Chris Pressey wrote: >Has anyone organized an esoteric IRC meeting place yet?" -- "Date: Tue, 24 Jul 2001 20:39:33 -0700 (MST) ... I hang out on EFNet when I am home, nick: calamari. But, I can also stay in undernet irc.undernet.org port 6667 channel #esolang"
12:04:16 <fizzie> Ooh, predecessors.
12:04:22 <fizzie> I don't think I ever joined *that*, though.
12:04:32 <elliott> fizzie: "I can also".
12:04:46 <elliott> fizzie: I imagine he joined it just because of that message.
12:04:53 <elliott> And left the next time his IRC client restarted.
12:04:53 <Vorpal> kmc, I first read that as Rlyeh
12:04:54 <Vorpal> XD
12:05:14 <kmc> haha
12:05:55 <Vorpal> R'lyeh standard time. I wonder what that would be like
12:06:56 <fizzie> Date: Wed, 22 May 2002 12:39:12 +0300 (EEST), atehwa writes: "As for a real answer about _IRC_ channels, I think somebody founded a channel in DALnet."
12:07:12 <elliott> atehwa: ELABORATE
12:07:41 <elliott> fizzie: I bet there's a flourishing esolangs community on some other network that we've just never heard of.
12:07:48 <oklofok> how do we know we're the real #esoteric and there's not one with 500 ppl on another network o_O
12:07:54 <oklofok> ...
12:07:55 <elliott> :D
12:07:58 <elliott> it's practically guaranteed now.
12:08:02 <oklofok> yes
12:08:05 <oklofok> oh dear fuck
12:08:18 <elliott> http://stackoverflow.com/questions/8834582/is-haskell-a-lisp-dialect
12:08:33 <elliott> someone actually voted that up
12:08:43 <fizzie> http://en.wikipedia.org/wiki/Esoteric_programming_languages#Internet_community "There is a mailing list, but it is nearly abandoned and most discussion happens on the wiki (see below) or on IRC." Perhaps *they* are the "on IRC" part of that.
12:09:54 <oklofok> "Turing completeness is a favorite topic of discussion, since it is not immediately obvious whether or not a language is Turing complete, and it often takes rather large intuitive leaps to come to a solution." is this really correct usage of "intuitive leap"?
12:10:03 <elliott> no
12:10:16 <elliott> i have a feeling that article is very bad
12:10:26 <ais523> idea: esolang that's forward-polish, but not because it parses forward-polish, rather because it has a stack of functions
12:10:30 <oklofok> i was wondering if i'm just misunderstanding the sentence it fundamentally
12:10:51 <ais523> just like you do reverse-polish with a stack of values
12:11:00 <ais523> hmm, now I'm wondering if you could make it concatenative
12:11:02 <fizzie> Heh, in May 2008 the sentence read "There is a mailing list, but it is nearly abandoned and most discussion happens on the wiki (see below)."
12:11:02 <elliott> oklofok: it fundamentally
12:11:04 <ais523> and thus a sort of dual to Underload
12:11:04 <oklofok> i guess it often does require some intuitive leaps: "well brainfuck can simulate itself so obv it's tc"
12:11:19 <oklofok> elliott: yes not just fundamentally but IT fundamentally
12:11:23 <ais523> oklofok: there are sub-TC languages that can simulate themselves
12:11:28 <ais523> Text, for example
12:11:33 <oklofok> yeah
12:11:41 <oklofok> and you'd need quite an intuitive leap to prove it tc
12:11:49 <elliott> Chris, you're saying a lot of silly things in this mailing list archive. :/
12:11:51 <fizzie> Some "oerjan" dude has added the bit about IRC. I wonder if e means the five-thousand-person real community on NeverHeardNet, or this channel.
12:12:03 <elliott> fizzie: He's the spy sent to keep us in the dark.
12:12:04 -!- cheater has quit (Ping timeout: 255 seconds).
12:12:58 <oklofok> what if there's life outside earth? :O that would be even worse
12:13:09 <ais523> elliott: do you consider Ruby a Lisp dialect?
12:13:23 <elliott> ais523: all languages are lisp dialects, apart from scheme
12:13:26 <Vorpal> fizzie, I never seen a channel with 5000 persons in it except when I was watching a stress test of an ircd (using bots)
12:13:27 <elliott> scheme is a clojure dialect
12:14:08 <elliott> CAN SOMEONE PLEASE EXPLAIN TO ME WHY SOMEBODY UPVOTED THAT QUESTION, CHRIST
12:14:41 <fizzie> Vorpal: Me neither, but maybe NeverHeardNet is much more popular. (On this side of the fence, Ubuntu seems to have 1507 people at the moment.)
12:14:43 <Vorpal> elliott, but clojure is a lisp dialect by those rules. So anything that is a clojure dialect is thus a lisp dialect
12:14:56 <elliott> Vorpal: educated stupid
12:15:05 <oklofok> i've seen a channel where there was so much traffic that your messages appeared hours after you sent them.
12:15:13 <Vorpal> fizzie, yes #ubuntu and #gentoo were like the largest channels on here last I checked. Not sure if #gentoo is still as large
12:15:13 <oklofok> there were only 4 ppl there though
12:15:46 <fizzie> Vorpal: #ubuntu, #archlinux and #debian were the only ones in my LIST >1000 of a moment ago.
12:15:59 <fizzie> Still all Lunnux distrubtions.
12:16:16 <elliott> LIST supports queries like that?
12:16:21 <Vorpal> fizzie, hm I guess #ubuntu has grown, back when I checked it and #gentoo were about the same size (~950)
12:16:24 <elliott> oklofok: was it vjn
12:16:32 <fizzie> freenode LIST does.
12:16:39 <oklofok> elliott: part of it
12:16:40 <Vorpal> and yes #archlinux is quite large
12:16:41 <fizzie> freenode? More like linuxnode, amirite?
12:16:51 <elliott> Vorpal: #gentoo is only 852.
12:17:07 <ais523> what's the second most popular linux distro?
12:17:11 <Vorpal> elliott, nowdays yes
12:17:20 <Vorpal> elliott, it used to be larger
12:17:23 <oklofok> it was on my irc server, my friend made this rpg and people spammed a few megabytes of commands there.
12:17:38 <fizzie> #pyt "NO LOL" hon has 923 people on it.
12:17:46 <Vorpal> huh
12:17:54 <oklofok> no lol!
12:17:59 <Vorpal> fizzie, on which network?
12:18:02 <ais523> wow, the phone spambot that keeps contacting me seems to have hired a bunch of new voice actors
12:18:10 <fizzie> Vorpal: This one.
12:18:11 <Vorpal> fizzie, oh #python
12:18:14 <Vorpal> not #pyt
12:18:15 <ais523> unless it's two different spambots that just happen to use the same script
12:18:16 <Vorpal> right
12:18:41 <fizzie> Vorpal: Yes, I wanted a "firstname 'nickname' lastname" format, so had to split.
12:18:49 <Vorpal> ais523, you get spam over your phone? ouch
12:18:57 <ais523> oh right, did the wire-crossing problem ever turn out to be meaningful?
12:18:59 <ais523> Vorpal: only at work
12:19:15 <Vorpal> still wow
12:19:16 <ais523> I was interested in it when I got into esolangs, and invented EL1 and Formula
12:19:21 <elliott> fizzie: #pyt"NO LOL"hon is the best way to do that.
12:19:31 <elliott> fizzie: Or #python "NO LOL" #python.
12:19:38 <Vorpal> #python 923 NO LOL | NO PROJECT EULER | [...]
12:19:40 <Vorpal> wow
12:19:45 <Vorpal> why do they hate project euler?
12:19:53 <fizzie> With that many people, you have to rule with an IRON FIST.
12:19:59 <oklofok> because it sucks
12:20:18 <elliott> lol can some1 help me with project euler #1
12:20:21 <elliott> heres my code
12:20:25 <elliott> class Euler:
12:20:26 <oklofok> do it
12:20:28 <oklofok> i'll join too
12:20:29 <elliott> def __init__
12:20:29 <elliott>
12:20:30 <elliott>
12:20:30 -!- ais523 has set topic: "NO LOL | NO PROJECT EULER" | http://codu.org/logs/_esoteric/.
12:20:31 <elliott> where
12:20:34 <elliott> if x=4 :
12:20:35 <elliott>
12:20:36 <elliott>
12:20:38 <elliott>
12:20:58 <Vorpal> elliott, wth is up with the blank lines?
12:21:06 <elliott> lazy
12:21:24 -!- oklofok has changed nick to oklopol.
12:21:33 <ais523> <fungebob> cpressey: ever consider a timecube esolang?
12:21:57 <oklopol> elliott: what's the question?
12:22:00 <oklopol> i'd love to help
12:22:03 <ais523> <fungebot> Hello tobegnuf:
12:22:08 <elliott> http://projecteuler.net/problem=1
12:22:14 <ais523> ah, fungot's long-lost distant relative
12:22:16 <fungot> ais523: mrs randzio-plath asks whether the authority will provide this. as an auxiliary language, it can make a formal proposal that, however, the most important, namely how to determine which groups are covered by the text, as you have pointed out, that there is scope to use lower interest rates: long-term interest rates in 1994 because in 1993 the commission adopted the draft directive for the third year in succession, the ve
12:22:29 <elliott> ais523: fungot isn't the first funge-98 bot?
12:22:30 <fungot> elliott: mr president, at a time when this house's declarations of goodwill are reflected in salaries and in professional life, and i can assure you that we have to provide more substantial financial and other intermediaries are already well behind schedule: it is not work that could be, and is presenting a new directive to the mining of metal fnord. upon my refusal, the perspectives have not been implemented for twenty years n
12:22:36 <ais523> 00:09:37: <jix> JOIN
12:22:37 <ais523> 00:09:38: <fungebot> Hello xij
12:22:40 <oklopol> "<nosklo> John: I can't reproduce the problem, and I don't see where the memory could be leaking" he's trying to REPRODUCE a problem he already solved :o pythonists are crazy!
12:22:45 <ais523> elliott: it's unclear whether fungebot was -98 or -93
12:22:46 <elliott> ais523: lmao
12:23:28 <oklopol> if i solve a problem i immediately start running to keep my state of blissful thinking i did it rightness.
12:23:56 <fizzie> Perhaps it's a time-traveling fungot.
12:23:57 <fungot> fizzie: mr president, i would like to say, i support the amendments that we tabled and opens the way to resolve the armenia embargo and border issue. lastly, the commission is obliged to support the amendments made to mr jarzembowski.
12:23:57 <Vorpal> ais523, hm when was that funge bot from?
12:24:13 <ais523> `pastlog <fungebot>
12:24:21 <ais523> already gone way past that page
12:24:22 <elliott> "I've been reading The Haskell Road to Logic, Maths and Programming by Doets and Eijck 2004. It seems to be a well respected book, but I was struck when it claims that Haskell is a member of the Lisp family. Would anyone else agree with that? I would characterise Lisps with s-expressions, impure functions, and lists as the only composite data structure. Haskell has none of that. What do you think?"
12:24:23 <elliott>
12:24:23 <elliott> 1
12:24:23 <elliott>
12:24:24 <Vorpal> that doesn't echo to the channel
12:24:24 <elliott> I disagree, but what was the argument the authors gave? – Tobu Jan 14 '11 at 22:24
12:24:26 <elliott> 2
12:24:28 <elliott>
12:24:32 <elliott> None! They are giving a general introduction and say 'as a functional language, Haskell is part of the Lisp family along with ML, Occam and Clean'. – Bob Bobson Jan 14 '11 at 22:29
12:24:32 <Vorpal> ais523, and did it use netcat or SOCK? And can anyone find the source?
12:24:37 <Vorpal> `pastlog <fungebot>
12:24:39 <elliott> ais523: did you remember to use -i?
12:24:42 <HackEgo> 2005-07-19.txt:00:14:18: <fungebot> Hello }^nevaR^{
12:24:44 <ais523> hmm, it's going to take me a while to check every mention of befunge in the channel ever
12:24:48 <HackEgo> 2005-07-19.txt:00:14:18: <fungebot> Hello }^nevaR^{
12:24:49 <Vorpal> hm
12:24:51 -!- elliott has changed nick to }^nevaR^{.
12:24:51 <ais523> elliott: yep
12:24:52 <Vorpal> okay
12:25:02 <Vorpal> ais523, do you know who made it?
12:25:04 <fizzie> ais523: By a curious coincidence, my logs don't show a "fungebot" at all. It must've been during one of my periodic absences from the channel.
12:25:15 <ais523> Vorpal: jix
12:25:18 <Vorpal> ah
12:25:21 <fizzie> To think, that I missed a fungebot. :/
12:25:22 <oklopol> }^nevaR^{: you never asked #python for help with your problem
12:25:24 <ais523> who is here right now
12:25:26 <}^nevaR^{> fizzie: You weren't around much circa 2005, were you?
12:25:26 <ais523> so you could ask him
12:25:27 <}^nevaR^{> oklopol: sry
12:25:31 <}^nevaR^{> ais523: constantly idle
12:25:48 <ais523> hmm
12:25:48 -!- cheater has joined.
12:25:51 <ais523> a nickping sometimes works
12:25:55 <ais523> and a /msg sometimes works if a nickping doesn't
12:26:07 <Vorpal> jix: hi! Do you have any info on that fungebot from 2005? Was it in befunge-93 or funge-98? And do you still have the source?
12:26:19 <}^nevaR^{> @tell jix hi
12:26:19 <lambdabot> Consider it noted.
12:26:38 <oklopol> jix tried to do something with thue once and failed. i don't recall what.
12:26:59 <ais523> 00:36:55: <GregorR-W> Could you write this exact line to this channel?
12:27:00 <ais523> 00:37:46: <Wildhalcyon> Could I write what exact line to this channel?
12:27:11 <ais523> the joys of IRP quines
12:27:21 <oklopol> it was back when that was not trivial
12:27:32 <fizzie> }^nevaR^{: I have missing months of 2003-06, 2003-08, 2005-09, 2006-04, 2007-04, 2007-10, 2008-01 and 2008-02. On all other months (since 2002-12) I've been on-channel at least once during the month.
12:27:47 <oklopol> fizzie: were you in jail?
12:28:01 <}^nevaR^{> ais523: impressively, that is-haskell-a-lisp question is a /duplicate/
12:28:19 <}^nevaR^{> fizzie: How many days out of the total days the channel has existed have you been present? Percentage-wise.
12:28:28 <ais523> well, for any arbitrary language you only just heard of, it makes sense to ask if it's a lisp variant
12:28:29 <}^nevaR^{> fizzie: I need to calculate how aggressively to request your logs from you.
12:28:40 <Vorpal> fizzie, I thought you used a bouncer?
12:28:42 <ais523> it's only a stupid question if you already know the answer
12:28:50 <}^nevaR^{> ais523: the other one was going based on a /haskell book/ claiming it was a lisp dialect
12:28:52 <fizzie> oklopol: In 2003-06 I probably was "working" (civil service) in Vankeinhoidon koulutuskeskus, if that counts.
12:28:56 <Vorpal> -fizzie- VERSION bip-0.8.2
12:28:57 <Vorpal> -fizzie- VERSION xchat 2.8.8 Linux 2.6.35-31-generic [x86_64/2.00GHz/SMP]
12:28:57 <Vorpal> -fizzie- VERSION irssi v0.8.15
12:28:57 <Vorpal> hm
12:28:59 <Vorpal> probably yes
12:29:10 <oklopol> oh that counts.
12:29:16 <oklopol> that counts to fucking million.
12:29:24 <fizzie> Vorpal: Nowadays; but only since 2009-03; before that, irssi.
12:29:29 <Vorpal> ah
12:29:35 <Vorpal> fizzie, bip is a bouncer is it?
12:29:43 <ais523> oklopol: could you translate for the non-finns in the audience?
12:29:52 <fizzie> Vorpal: Yes. (Not that I had a disconnection habit with the irssi connection either.)
12:29:58 <oklopol> education center for taking care of prisoners.
12:30:00 <Vorpal> heh
12:30:02 <oklopol> is a stupid translation
12:30:20 <oklopol> i don't quite understand what it means so that's the best i can do.
12:30:22 <fizzie> It's been renamed to Rikosseuraamusalan koulutuskeskus now, anyway.
12:30:33 <Vorpal> fizzie, what is it for?
12:30:35 <oklopol> not sure how you educate taking care of prisoners
12:30:35 <fizzie> "The Training Institute for Prison and Probation Services" is the official translation.
12:30:36 <ais523> fizzie: so were you sent there as a punishment?
12:30:42 <oklopol> yes
12:30:45 <oklopol> punishment for p
12:30:47 <oklopol> askdjf
12:30:49 <}^nevaR^{> ais523: punishment for being finnish
12:30:52 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:30:58 <fizzie> ais523: Civil service; it's an alternative for the regular compulsory military service.
12:31:07 <Vorpal> fizzie, you still have conscription?
12:31:08 <oklopol> punishment for being a latent rapist
12:31:09 <Vorpal> hm
12:31:10 <ais523> fizzie: ah, I see
12:31:12 <oklopol> that is, male
12:31:29 <ais523> oklopol: I don't know, females are convicted of rape sometimes
12:31:31 <ais523> although much more rarely
12:31:39 <oklopol> yeah can you imagine :D
12:31:40 <fizzie> I mostly just fiddled with PageMaker; they publish books (sometimes by prisoners, but also textbooks on their field, and a yearly "newsletter" thing).
12:31:41 <ais523> (typically the sort that involves drugs rather than physical violence)
12:32:05 <ais523> oh right, INTERCAL's EOF handling is hilarious
12:32:08 <oklopol> "you CHEATED on me?" "no i was raped!"
12:32:11 <Vorpal> ais523, oh?
12:32:14 <oklopol> is what that means.
12:32:15 <ais523> (it crashes on EOF, with no way to catch the error or seeing it's coming)
12:32:38 <Vorpal> ais523, so what do people normally do to avoid this?
12:32:38 <fizzie> Vorpal: We do, yes, unless you invent a proper excuse.
12:32:56 <Vorpal> fizzie, like medical reasons?
12:33:02 <ais523> Vorpal: they don't
12:33:08 <Vorpal> heh
12:33:09 <ais523> nothing you /can/ do about it
12:33:15 -!- }^nevaR^{ has quit (Quit: Leaving).
12:33:24 <Vorpal> ais523, is this for c-intercal or clc-intercal?
12:33:29 <oklopol> you can do a lot of things. unless you're a perfectly healthy male.
12:33:33 <oklopol> fml
12:33:35 <ais523> although it'd be fun to implement some way to catch the error
12:33:40 <ais523> Vorpal: -72
12:33:43 <Vorpal> ah
12:33:54 <fizzie> Vorpal: Medical, psychological, religious, or moral. (But the latter one will get you thrown in jail as a "conscientious objector" if you also refuse the non-military alternative.)
12:33:55 <Vorpal> ais523, I assume neither ick nor clc crashes?
12:34:11 <ais523> sure they do, it'd be incompatible otherwise
12:34:20 <ais523> you can't not implement the spec
12:34:32 <Vorpal> fizzie, pretty easy to join a suitable religion like a year before or such
12:34:47 <Vorpal> and then leave it a bit later
12:35:02 <fizzie> Vorpal: I'm not sure if there are any recognized religions that'd forbid the civil service part.
12:35:08 <Vorpal> hm
12:35:13 <ais523> jediism?
12:35:16 <fizzie> I mean, it's a weird thing to forbid.
12:35:27 <Vorpal> ais523, hm, is that starwars related?
12:35:39 <ais523> non-military civil service isn't something I'd object to anyway, though, although I would object to the military version
12:35:45 <ais523> Vorpal: yes, originally
12:35:52 <ais523> it's a reference to the jedi census phenomenon
12:35:52 <oklopol> jehova's witnesses are exempt from all afaiu?
12:35:57 <Vorpal> oh
12:35:59 <Vorpal> right
12:36:04 <ais523> where there was a worldwide movement to claim to be a jedi on censuses
12:36:12 <Vorpal> heh
12:36:12 <ais523> with the result that many countries ended up recognising it as a religion
12:36:18 <Vorpal> ais523, really? :D
12:36:37 <ais523> (there's at least one court case where someone successfully claimed that their jedi religion forbade them from doing something that would otherwise be mandatory, too)
12:36:41 <ais523> Vorpal: that was the whole /point/
12:36:54 <Vorpal> ais523, I'm just a bit scared that it worked
12:37:15 <fizzie> oklopol: I think they are, yes. Also people living in Åland.
12:37:40 <ais523> http://en.wikipedia.org/wiki/Jedi_census_phenomenon
12:38:03 <ais523> ah, apparently no /official/ recognition; jediism was assigned a convenience number on the census processing thing because it was so popular
12:38:10 <ais523> but that was apparently only to make statistics easier or something
12:38:50 <Vorpal> ais523, do UK still do censuses? Sweden doesn't any more
12:38:52 <ais523> <wikipedia> In Scotland 14,052 people stated that Jedi was their current religion (14,014 "Jedi", 24 "Jedi Order" and 14 "Sith")
12:38:56 <ais523> Vorpal: yes, but rarely
12:39:00 <ais523> it's something like once every ten years
12:39:04 <ais523> maybe once every five
12:39:05 <Vorpal> hm
12:39:10 <Vorpal> that is quite often
12:39:32 <fizzie> There are 70-80 people who refuse both the military and the civil service; Amnesty classifies them as "prisoners of conscience", which bumps up Finland's "score" on that considerably. Otherwise we'd totally lose to all kinds of regimes.
12:39:39 <fizzie> 70-80 people per year, that is.
12:39:52 <oklopol> i've only encountered censuses in complexity theory
12:40:00 <ais523> <wikipedia> In 2009, a Jedi was banned from a Tesco Supermarket in Bangor, North Wales, for refusing to remove his hood on a religious basis. The following year, a Jedi was thrown out of a Jobcentre in Southend, Essex, for refusing to remove his hood; he later received an apology.
12:40:17 <Vorpal> heh
12:40:27 <ais523> fizzie: I wonder why they do that
12:40:39 <ais523> seems a weird thing to make that heavy a stand about
12:40:46 <oklopol> err
12:40:58 <fizzie> ais523: For many it's an official protest against the length of the civil service; it's about double the most common length for the military one.
12:40:58 <oklopol> not wanting to waste a year of your life is stupid now?
12:41:09 <fizzie> ais523: "Conscientious objectors to military service continued to be imprisoned for refusing the alternative civilian service due to its punitive and discriminatory length. The length of alternative civilian service remained at 362 days, more than double the most common military service period of 180 days."
12:41:19 <ais523> oklopol: aren't you still wasting it, just in jail?
12:41:25 <fizzie> The jail term is shorter.
12:41:30 <oklopol> ais523: less of it, and there's more freedom
12:41:32 <ais523> ah, I see
12:41:38 <fizzie> Two days of civil service translate to one day of jail.
12:42:08 <fizzie> And with a very few exceptions they are in these "open prisons".
12:42:12 <fizzie> So you can study and whatever.
12:42:33 <Vorpal> ais523, I would answer sith on such a question btw.
12:42:48 <oklopol> and more importantly, you don't have to do meaningless work
12:42:49 <ais523> Vorpal: really?
12:42:53 <oklopol> like taking care of old people
12:42:57 <Vorpal> ais523, sure, why not?
12:43:09 <oklopol> or learning to kill healthy people
12:43:25 <ais523> fizzie: clearly the appropriate punishment should be community service, not a prison term
12:43:26 <Vorpal> ais523, it is not like religion should be listed on a census form anyway
12:43:36 <oklopol> well the latter is not useless if you want to become a serial killer
12:43:50 <fizzie> oklopol: I know quite a few people who've just done research at the university where they were studying "around" the civil service term.
12:43:55 <ais523> why would they teach that?
12:44:13 <oklopol> what do you mean "around"?
12:44:18 <fizzie> oklopol: Before, and after.
12:44:19 <oklopol> ais523: in the army?
12:44:23 <oklopol> do you know what armies are for?
12:44:23 <ais523> oh, I see
12:44:31 <ais523> forgot about the army option
12:44:38 <ais523> my mind excluded it as an option that nobody sane would take
12:44:47 <oklopol> oh. no not in the civil service
12:44:58 <fizzie> ais523: Some do civil service for six months which would match the military service, and then refuse; their remaining six months are then translated to a three-month prison term.
12:45:16 -!- GreaseMonkey has quit (Quit: The Other Game).
12:45:26 <ais523> fizzie: it's almost as if people are being tempted to break the law, if there's an exchange rate for it
12:45:35 <ais523> what about alternating days of civil service and prison?
12:45:46 <oklopol> i've always wanted to try prison out anyway but i don't actually want to commit a crime.
12:45:49 <fizzie> You can't go back from the prison to civil service.
12:45:52 <Vorpal> "If Jedi were counted it would have been the second largest religion in New Zealand. T"
12:45:55 <Vorpal> s/T//
12:46:23 <fizzie> There's a one-month common "training period" for the civil service, but I don't think it was much about killing. I mostly learned that some people do crazy things (aluminium foil wrapped beer-potatoes?) on a campfire.
12:46:32 <fizzie> It might be slightly different during the wintertime.
12:46:44 <fizzie> Oh, I think there was also some CPR training maybe?
12:46:58 <fizzie> I got a free tea+pastry coupon for maintaining Darkhive.
12:47:07 <fizzie> Managed to describe it as a cultural act.
12:47:27 <Vorpal> fizzie, darkhive being?
12:48:43 <ais523> 2006-04-28 22:18:55: <kate`> a funge would suit an irc bot well, i suspect
12:49:30 <jix> Vorpal: I don't have anything about fungebot anymore (and I don't remember working with it)
12:49:31 <lambdabot> jix: You have 1 new message. '/msg lambdabot @messages' to read it.
12:49:32 <fizzie> Vorpal: Uh. There was this Finnish magazine called Demi, core audience teenage girls (13-19 years); they had (well, have) a web forum, which didn't have a search system and expired old threads; Darkhive crawled the site periodically and archived the messages.
12:49:38 <Vorpal> jix, oh
12:49:46 <Vorpal> jix, ais523 claimed you were the author
12:50:06 <ais523> jix: well, it was only up there for a day, I assume you've just forgotten about it
12:50:15 <Vorpal> fizzie, heh
12:50:18 <ais523> or, hmm, maybe it was someone else
12:50:29 <ais523> `pastlog fungebot
12:50:36 <HackEgo> 2005-07-19.txt:00:14:18: <fungebot> Hello }^nevaR^{
12:50:45 <Vorpal> `pastelog fungebot
12:50:53 -!- elliott has joined.
12:50:55 <elliott> http://www.cs.uit.no/~daniels/PingTunnel/
12:50:56 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5540
12:50:59 <Vorpal> wasn't that the command?
12:51:06 <elliott> Ptunnel is an application that allows you to reliably tunnel TCP connections to a remote host using ICMP echo request and reply packets, commonly known as ping requests and replies.
12:51:07 <jix> I was never fluent in befunge... but I think I did some experiments with other esolangs and irc that never got anywhere
12:51:11 <ais523> 00:06:08: <jix> i wrote a crappy ping less sub-minmal befunge irc bot that prints hello msgs with the nick reversed...
12:51:21 <ais523> unless it's a different jix, it was you
12:51:29 <fizzie> Vorpal: It gained some amounts of popularity among the users, possibly because it also did not remove messages the official board admins deleted for "unsuitable content".
12:51:43 <jix> ais523: oh then I probably did...
12:51:46 <Vorpal> fizzie, heh
12:52:06 <jix> but I never did anything that would remotely qualify as a complete irc bot
12:52:06 <elliott> fizzie: Now you gotta tell us why on earth you decided to write that.
12:52:16 <fizzie> elliott: Also http://thomer.com/icmptx/
12:52:16 <ais523> elliott: kerio is a fan of tunnelling all sorts of things over DNS
12:52:21 <ais523> jix: don't worry, fungebot wouldn't
12:53:03 <fizzie> (ICMPTX and NSTX are I think related.)
12:53:17 <elliott> fizzie: That guy has written a lot of freeloader internet-tunneling tools. :p
12:53:31 <fizzie> elliott: His mission in life is to mooch for free stuffs, I suppose.
12:53:33 <elliott> Oh, he didn't write that one.
12:53:58 <fizzie> Ah, it's stolen. Well, in any case.
12:54:04 <elliott> fizzie: You can't dodge my question!!!
12:54:30 <ais523> the depressing thing is, there's almost certainly a way to tunnel HTTP over HTTP already
12:54:44 <fizzie> elliott: It's just that I don't quite recall the motivations. I'm supposing some IRC people were somehow involved.
12:55:03 <ais523> you know what we need? another esolang competition
12:55:08 <ais523> with a reasonable number of people actually participating
12:55:40 <Vorpal> ais523, that last point might be hard
12:55:55 <Vorpal> ais523, btw when are the results of IOCCC going to be announced?
12:55:55 <fizzie> Vorpal: I got a cease-and-desist from the magazine editor finally; didn't think it was worth a fight so I took the site down. Some random guy at WaveU asked me for the database dump, though, and ran it for a while longer.
12:55:58 <ais523> 6 or so would be reasonable enough
12:56:13 <Vorpal> fizzie, heh
12:56:15 <elliott> fizzie: I will accept a blatant but interesting lie, e.g. "Finnish demosceners used to use it to chat ironically".
12:57:11 <ais523> but not exactly that one, as it wouldn't be interesting now it's been mentioned
12:57:44 <elliott> ais523: no, it would
12:57:45 <Vorpal> fizzie, if it was on irc you could search your logs?
12:57:52 <elliott> ais523: how implausible is it that I would guess the precise truth?
12:57:58 <elliott> even if it isn't actually true
12:59:05 <ais523> elliott: it'd be obviously a lie, though
12:59:12 <ais523> as well as just being blatant
12:59:16 <fizzie> Vorpal: I guess I could look for the first mention, but I'm not even sure where in IRC it would be.
13:00:29 <fizzie> elliott: I think "Finnish <justsomepeople> used to use it to chat ironically" is quite close to the truth, actually.
13:01:20 <Vorpal> fizzie, grep -R?
13:01:31 <elliott> fizzie: See, I can pretend to believe you now!
13:02:15 <fizzie> elliott: Heh; from !assembly, paraphrasing: "[2005-08-05 19:20:37] <fizzie> The demi.fi folks are quite the sceners: darkhive=# select sum(msgs) from dh_thre where tname ilike '%assembly%'; => 473"
13:02:26 <fizzie> (I asked for first mention separately per-channel.)
13:02:32 <elliott> :D
13:02:51 <fizzie> Anyway, 473 messages containing the substring "assembly".
13:04:28 <fizzie> I think these logs are too new.
13:05:14 <fizzie> Hey, someone donated me money because of it.
13:05:19 <elliott> I...
13:06:35 <fizzie> elliott: Oh, oh oh! I might have just continued from "demikhat".
13:06:38 <ais523> elliott: *…
13:06:49 <fizzie> elliott: See, uh... this is also a bit complicated to explain.
13:06:50 <elliott> ais523: no
13:06:56 <elliott> fizzie: Go on.
13:08:12 <fizzie> elliott: They had this flash-based "isometric 3D" chat thing there (before the web forum times); think "Habbo Hotel" or such, except much more limited. I was bored one day, so I packet-sniffed that, reverse-engineered the protocol (it was a custom ASCII-based one) and wrote a "roguelike" client which let you chat there and IIRC do a couple of things the official interface couldn't.
13:08:46 <elliott> fizzie: You're a strange person.
13:09:17 <fizzie> They also had another real-time "text chat" which was actually run over the IRC server of the web-media company that made the pages; I also hung out there with an IRC client and sort-of got to know some of the folks behind the scenes.
13:09:29 <fizzie> I'm not quite sure of the chronology of all these different forums and chats and such.
13:09:44 <elliott> How did you even come to look at anything related to this magazine?
13:10:04 <fizzie> They had another web-forum that Darkhive didn't crawl. (Though I made a 'wget' dump of it scant few days before they wiped it out and started the new forum which Darkhive did index.)
13:10:16 <fizzie> Actually come to think of it, that dump might have been the inspiration for Darkhive itself.
13:10:24 <fizzie> So you can blame whoever asked me to do it.
13:11:11 <fizzie> Wow, I had so forgotten about this.
13:11:56 <fizzie> Apparently at the civil service training we used the instructor's laptop/projector to watch how Darkhive updated itself, and read some threads using the psql command-line tool.
13:12:07 <fizzie> And after that I got the free-tea voucher.
13:12:46 <elliott> fizzie: I don't understand Finland.
13:12:57 <fizzie> It's not as strange as e.g. Japan.
13:13:01 <fizzie> Or so I have been led to believe.
13:14:15 <fizzie> Sadly, I never finished my other "chat archive" project.
13:14:27 <fizzie> (That would've been called "sharkhive".)
13:14:27 <elliott> Charchive.
13:14:29 <elliott> :D
13:14:44 <fizzie> It wasn't related to the Demi chats, incidentally.
13:14:58 <elliott> Oh, what was it going to archive, then?
13:15:40 <elliott> ais523: you might enjoy this: http://www.bbctvlicence.com/Please%20do%20not%20write%20below%20the%20line.htm
13:15:43 <fizzie> See, there's this midday/midnight SMS-based TV channel chats, they're really horrible. There's some horrible person as a presenter, and then people send all kinds of stupid things in. Really stupid things. And each message costs like real money, but they still keep doing it.
13:15:48 <elliott> it reminds me of those train routeing letters
13:15:58 <fizzie> I was thinking, I had this analog TV receiver card, I could've OCR'd and archived those.
13:16:00 <elliott> fizzie: Ohh, yes, I know what you mean.
13:16:50 <elliott> fizzie: Well, sort of.
13:17:35 <ais523> elliott: obvious conclusion is that it's to present people writing below the line before the letters are sent
13:17:42 <fizzie> I think it would've mostly worked. At least for the digital TV stream, that's significantly less noisy (if a bit compression-artifacty). It's got a particular font and everything.
13:18:33 <elliott> fizzie: You should archive...
13:18:48 <elliott> fizzie: Uh, do/did (when you had analogue television) you people have a teletext-style thing?
13:19:39 <fizzie> Yes.
13:19:45 <fizzie> I think the system still exists.
13:20:07 <fizzie> http://www.yle.fi/tekstitv/html/P100_01.html
13:20:08 <elliott> fizzie: Those tend to have vaguely "user-generated" pages.
13:20:12 <fizzie> You can read it in the interwebs.
13:20:21 <elliott> fizzie: Actually you should just archive the whole thing, that would be simplest.
13:20:28 <elliott> Oh, I've seen this.
13:20:34 <elliott> It's even hyperlinked!
13:20:35 <fizzie> I think it was discussed.
13:20:57 <elliott> Okay, but pretend that doesn't exist and do it with a receiver card instead. :p
13:21:25 <fizzie> Only the top half of double-height numbers are hyperlinked, unless I'm mispointing.
13:21:38 <ais523> hmm, the "music industry" (not sure what group in particular, and I'm annoyed at the vagueness of the story) are apparently suing Ireland for not making file sharing sufficiently illegal
13:22:29 <elliott> fizzie: WFM
13:22:35 <elliott> fizzie: It even hyperlinks URLs, e.g. http://www.yle.fi/tekstitv/html/P101_01.html.
13:22:58 <Vorpal> speaking of storing chats, I wonder if anyone is recording /b/ and such, iirc 4chan expires old messages?
13:23:11 <Vorpal> I hope no one is archiving /b/...
13:23:21 <Sgeo> Would take a lot of space, probably
13:23:33 <Sgeo> I've seen archives of individual threads
13:23:33 <fizzie> elliott: So it seems; but on the front page, 100, the big numbers (the four headlines, like "107 Urpilainen: ...") seem to have only their top halves clickable.
13:24:28 <elliott> fizzie: Oh, right.
13:24:33 <elliott> fizzie: I suspect the linking may be automated somehow.
13:24:41 <elliott> Vorpal: http://4chanarchive.org/
13:24:48 <elliott> Is at least a thing.
13:24:52 <elliott> (NSFW ads, seemingly.)
13:25:02 <ais523> elliott: it almost certainly also has NSFW content
13:25:16 <elliott> ais523: That too, presumably.
13:25:28 <ais523> I guess you could find a SFW subset of 4chan, but it'd be mostly missing the point
13:26:16 <elliott> Oh, "update May, 7th: we take no more new archival requests. please visit chanarchive.org instead.".
13:26:18 <elliott> http://chanarchive.org/welcome It's all Web 2.0.
13:26:22 <elliott> There's even a Twitter.
13:27:14 <fizzie> ais523: The local "Copyright Information & Anti-Piracy Centre" sued one of our ISPs (and cases for two others are pending), and the lowest court agreed and told the ISP to "block PirateBay", or suffer a nice hundred thousand euro fine; recently the "enforcement unit" of the court came up with a long list of DNS names and three IP addresses for the ISP to block. They've complained to the higher court, but just few days ago "temporarily" enabled the block
13:27:14 <fizzie> s while that case is pending.
13:27:24 <fizzie> ais523: There's quite a debate going on about this.
13:27:40 <ais523> fizzie: yes; I was mostly interested because they'd sued a country rather than an ISP
13:27:41 <fizzie> ais523: Including a bomb threat to the office of the "Anti-Piracy Centre" and so on.
13:28:24 <elliott> fizzie: Is that what Finns call a debate?
13:28:56 <fizzie> elliott: The bomb threat was by "Anonymous Finland". :p
13:29:11 <ais523> there are almost certainly multiple Anonymouses
13:29:25 <ais523> with a name like that, and their alleged structure, more than one could exist quite easily without anyone noticing
13:29:30 <ais523> including the organizations themselves
13:29:40 <fizzie> ais523: Well *this* one owns a Twitter account "anon_finland", it's certainly very legit.
13:30:00 <elliott> fizzie: I'm sure it was a very credible threat.
13:30:53 <fizzie> "thepiratebay.org, www.thepiratebay.org, depiraatbaai.be, www.depiraatbaai.be, piratebay.am, www.piratebay.am, piratebay.net, www.piratebay.net, www.piratebay.no, piratebay.no, piratebay.se, www.piratebay.se, suprnova.com, www.suprnova.com, themusicbay.com, www.themusicbay.com, themusicbay.net, www.themusicbay.net, themusicbay.org, www.themusicbay.org, thepiratebay.am,www.thepiratebay.am, www.thepiratebay.com, thepiratebay.com, thepiratebay.gl, www.thep
13:30:53 <fizzie> iratebay.gl, thepiratebay.net, www.thepiratebay.net, www.thepiratebay.se, thepiratebay.se, thepiratebay.org.nyud.net"
13:30:58 <elliott> fizzie: "The LulzSleigh's taking off! Expect us. And don't miss us: someday, We'll come back (:" RIP anon_finland ages ago -- 2 hours ago
13:30:59 <fizzie> That's the list of DNS names they want removed.
13:31:01 <elliott> thepiratebay.org.nyud.net <-- LOL
13:31:17 <elliott> The best part is, I doubt you can even /search/ with that one.
13:31:30 <ais523> what's nyud.net?
13:31:32 <fizzie> And also "194.71.107.15, 194.71.107.19, 194.71.107.18" for any traffic, which I guess does slightly more.
13:31:34 <elliott> ais523: coralcdn
13:31:37 <ais523> I've heard of it but can't remember why
13:31:44 <elliott> ais523: http://en.wikipedia.org/wiki/Coral_Content_Distribution_Network
13:31:48 <elliott> The Coral Content Distribution Network, sometimes called Coral Cache or Coral, is a free peer-to-peer content distribution network designed and operated by Michael Freedman. Coral uses the bandwidth of a world-wide network of web proxies and nameservers to mirror web content, often to avoid the Slashdot Effect or to reduce the general load on websites servers in general.
13:31:52 <ais523> ah, right
13:33:18 <fizzie> Heh, "piraattilahti.fi" (the literal translation of "piratebay") goes to EFFI's (the "Finnish EFF") webpage.
13:33:39 <elliott> lol
13:34:53 <fizzie> Heh, it was actually originally on that list.
13:35:13 <fizzie> There's an update from yesterday that they have removed the "piraattilahti.fi" block.
13:35:28 <fizzie> Presumably whoever owns the domain will again point it at Pirate Bay, and they'll add it back, and GOTO 10.
13:35:34 <elliott> fizzie: http://www.effi.org/ -- try google-translating it from finnish to english and read the first sentence.
13:35:39 <elliott> (Right click -> translate in Chrome.)
13:36:14 <fizzie> "What."
13:36:55 <elliott> fizzie: So how's the weather in Helsinki, Ireland today?
13:37:18 <Vorpal> :D
13:37:22 <fizzie> I mean, the original text just says "Electronic Frontier Finland ry ...", and 'ry' is basically "registered association".
13:37:41 <fizzie> If you just type "Electronic Frontier Finland" and ask for a Finnish -> English translation, it goes "The Electronic Frontier Ireland".
13:37:49 <elliott> fizzie: Statistical translation, presumably.
13:37:53 <fizzie> Apparently fi:Finland equals en:Ireland, then.
13:38:04 <elliott> fizzie: Things like country names tend to get mixed up.
13:38:05 <fizzie> Admittedly "Finland" isn't Finnish.
13:38:23 <Vorpal> fizzie, it s Soumi isn't it?
13:38:24 <elliott> I think it's because e.g. a Finnish document talking about Finland might match up with an English document talking about the UK.
13:38:28 <Vorpal> or something like that
13:38:28 <elliott> I don't really know how it works.
13:38:29 <fizzie> Vorpal: Suomi.
13:38:31 <Vorpal> ah
13:38:31 <elliott> But that's what I've heard.
13:38:46 <elliott> fizzie probably knows more, since speech recognition is, like, vaguely related, and about twice as unreliable. :p
13:38:55 <Vorpal> elliott, also inches vs. centimeters
13:39:01 <Vorpal> that gets messed up badly too
13:39:03 <fizzie> There was some other Google Translate "lul" related to gay Swedes, but I don't recall how it went.
13:39:04 <Deewiant> "Irlanti" is pretty close to "Finland", I guess.
13:39:07 <elliott> Vorpal: Right.
13:39:43 <Vorpal> elliott, also I have seen it insert extra negations that completely changed the meaning of the sentence. :D
13:40:06 <kallisti> `words --finnish --swedish 25
13:40:08 <elliott> fizzie "cunningly dodged" my speech recognition remark.
13:40:13 <HackEgo> ​åldolskeimmart säcklaansar psymmästa tiuminärpäsidornotkelvä dopatsansa ontusensatsenning rat anarre vid vesidorketsovånga hittu utadierna lähiöllämtnin kava mystele roillnadalm baskanaruttavlar uusioniser sydasmerkiltäng uppromerkkl uhoidkarist kn ahdottaga käläisig nyrper
13:40:25 <Vorpal> kallisti, none of them looks Swedish at all
13:40:30 <Deewiant> Vorpal: vid?
13:40:32 <fizzie> Also I don't know about Google Translate so much; but I suppose they do some "proactive" training-text acquisition, since there aren't so many actual good-quality parallel Finnish/English corpora; Europarl, of course, but still.
13:40:41 <Vorpal> Deewiant, oh right, missed that word
13:40:45 <Vorpal> apart from that though
13:41:25 <fizzie> Aren't many Finnish-looking words either. "hittu" could be.
13:41:32 <elliott> fizzie: Europarl is good for translating "Mr. President".
13:41:57 <fizzie> `words --finnish 15
13:42:00 <HackEgo> matushovina jalailevakin tontumissasi uneeksesi syventävikseen aampiansa tyhjenemassamme erivaan alustamaksena ajamuissasi aihtyvilta liukkaama hälyttömimmaksee näppäivyttävista kapisimpia
13:42:07 <Vorpal> fizzie, I think psymmästa looks finnish
13:42:10 <Vorpal> to me at least
13:42:14 <Deewiant> Vorpal: Fails vowel harmony
13:42:18 <Vorpal> hm okay
13:42:26 <Vorpal> Deewiant, what does vowel harmony entail?
13:42:29 <fizzie> The all-purpose refusal.
13:42:40 <Deewiant> Vorpal: https://en.wikipedia.org/wiki/Vowel_harmony#Finnish
13:43:03 <fizzie> You could've just said "no [uoa] or [yöä] in the same word".
13:43:10 <fizzie> It's shorter than the link. :p
13:43:15 <elliott> Do you have to pass, like, a gruelling five-hour test of vowel harmony to gain Finnish citizenship?
13:43:19 <Deewiant> But that requires typing, not copy-pasting.
13:43:38 <Deewiant> Anyway, I was /going/ to give a longer explanation including stuff about foreign imports and compound words but SCREW IT THEN.
13:43:54 <elliott> "Päuikkä" "Yes!" "Paaäaia" "No!" "Kapisimpia" "Yes!" "Syventävikseean" "Yes! -- NOOOOOOOOOOOOOOOO"
13:44:11 <Vorpal> Deewiant, yeah a bit tricky for compound words and imported words I imagine
13:44:19 <fizzie> "Päuikkä" is not a "Yes!".
13:44:54 <elliott> fizzie: What, how does that break vowel harmony, I spent like 3 seconds trying to understand vowel harmony so I don't see how I could possibly be wrong.
13:45:01 <Deewiant> elliott: "ä" and "u"
13:45:15 <fizzie> Yeah, my short explanation should've probably said "and" instead of "or". :p
13:45:27 <elliott> :(
13:45:40 <elliott> fizzie: I was going solely based on "no a and ä" that yous aid once. :p
13:45:54 <elliott> Anyway, EVEN THE EXAMINER MAKES MISTAKES SOMETIMES.
13:46:08 <Vorpal> fizzie, what about å?
13:46:27 <elliott> /kickban Vorpal trolling
13:46:40 <Vorpal> elliott, what?
13:46:40 <Deewiant> In practice the rule is usually equivalent to "if a native speaker can't pronounce it easily, it fails vowel harmony"
13:46:55 <Deewiant> Vorpal: å is just o.
13:46:59 <Vorpal> ah
13:47:07 <Vorpal> Deewiant, so you say "oland" for "åland"?
13:47:08 <elliott> Oh, "å" actually occurs in Finnish?
13:47:08 <Deewiant> And not present in any words.
13:47:12 <elliott> Right.
13:47:28 <ais523> what's the point of a letter that isn't in any words?
13:47:28 <Vorpal> elliott, they have it in Åland afaik, unless they use a different name for that
13:47:35 <ais523> to confuse the alphabet?
13:47:35 <fizzie> Vorpal: "Ahvenanmaa".
13:47:35 <Deewiant> Vorpal: "ooland" and "åland" would be pronounced the same.
13:47:45 <Vorpal> ais523, å is used in Swedish so I guess that is why?
13:48:02 <Deewiant> ais523: It's something that stayed from Swedish, and is only used in Swedish names.
13:49:13 <fizzie> Vorpal: Anyway we say Åland much like you say Åland; it's just that your 'å' is like IPA /o:/ pretty much, and therefore much like our 'o'.
13:49:30 <Vorpal> fizzie, what about our o? Do you have that
13:49:38 <fizzie> 'u'.
13:49:42 <Vorpal> and our u?
13:50:30 <fizzie> I think that's IPA ʉ which we don't quite have? But that's just going by my knowledge of Swedish pronunciation, which is rather vague.
13:50:43 <fizzie> Don't you have some context-sensitivity going on there?
13:50:51 <Vorpal> hm maybe?
13:50:58 <fizzie> Finnish mostly has a context-free mapping from lexemes to phonemes.
13:51:12 <Vorpal> well there is a lot of stuff that depends on context in Swedish
13:51:23 <Vorpal> like double consonant after a vowel modifies it and so on
13:51:39 <Vorpal> (and that is the only place where you can put two of the same consonant pretty much)
13:52:03 <Deewiant> Swedish o is also context-sensitive.
13:52:26 <Vorpal> Deewiant, I believe /ever/ vowel can be modified by at least single/double consonant after it
13:52:29 <Vorpal> possibly more stuff
13:52:34 <Deewiant> Quite possibly.
13:52:38 <fizzie> Yes, I suppose 'bot' and 'bott' have quite a different 'o' in them?
13:52:41 <Vorpal> every*
13:52:45 <Vorpal> fizzie, indeed
13:52:46 <Deewiant> Swedish is a quite vowel-tricky language.
13:53:40 <Vorpal> also we have various other things going on. Like the sj-sound
13:53:44 <fizzie> Swedish-speaking Finns for the most part probably just approximate it.
13:53:54 <Vorpal> also stj and various other variants
13:56:23 <Sgeo> boten annan?
13:56:36 <Vorpal> Sgeo, uh "the cure another"?
13:56:37 <Sgeo> Oh, it's Boten Anna
13:56:49 <Vorpal> still "The cure Anna" (where Anna is a name)
13:57:00 <Vorpal> (but that is not what it refers to)
13:57:13 <Sgeo> I saw bott, and thought of the song Boten Anna
13:57:26 <fizzie> Much like I couldn't really do all the seven Russian fricatives that are all more or less "s" (or "z") in Finnish. (с, ш, щ, з, ж, ч, ц -- esp. ш/щ., IIRC.)
13:57:41 <Sgeo> And in whatever language "Boten Anna" is, it's supposed to mean Anna the Bot, I think
13:57:55 <Sgeo> So I think it's a different language from whatever you're talking about
13:58:00 <fizzie> "NO NO IT'S ABOUT A BOAT LOL"
13:58:06 <Deewiant> Sgeo: Thank you for your insightful commentary.
13:58:13 <Vorpal> Sgeo, I don't think bott exists as a Swedish word. Possibly as a loan word. The way it is written it would be pronounced like the English "bot" though
13:58:14 <Sgeo> http://www.youtube.com/watch?v=zf2wbRWb9xI
13:58:22 <Vorpal> with a single t it would be different
13:58:27 <Sgeo> What language is this?
13:58:34 <Vorpal> fizzie, that would be båten
13:58:34 <Vorpal> :P
13:58:46 <elliott> Deewiant: My, that's a little EDGY for you.
13:58:56 <Vorpal> Sgeo, can't check, no sound where I am.
13:58:57 <fizzie> Vorpal: "bott" doesn't exist? bo, bor, bodde, bott.
13:59:09 <Vorpal> fizzie, oh right, true
13:59:15 <elliott> <Sgeo> What language is this?
13:59:16 <elliott> finnish
13:59:26 <Vorpal> Sgeo, it is probably Swedish anyway
13:59:28 <elliott> hth yw
13:59:33 <Deewiant> []
13:59:34 <Deewiant> (18470.58 secs, 14756796564032 bytes)
13:59:36 <Vorpal> (if it is what I'm thinking of)
13:59:36 <Deewiant> Conjecture proved.
13:59:44 <Vorpal> Deewiant, what conjecture?
13:59:50 <elliott> Vorpal: Conjecture.
13:59:58 <elliott> Deewiant actually just typed [], he just has a really slow computer.
14:00:05 <Deewiant> Yep.
14:00:12 <Vorpal> :P
14:00:21 <elliott> And also his GHC has a really bad memory leak.
14:00:30 <Vorpal> quite
14:00:38 <Sgeo> elliott, uh
14:00:40 <Vorpal> `frink 14756796564032 bytes -> gb
14:00:41 <elliott> 13.5 terabytes for the empty list is quite impressive.
14:00:43 <Sgeo> http://en.wikipedia.org/wiki/Boten_Anna#Swedish_lyrics
14:00:45 <Vorpal> wasn't that the command?
14:00:46 <Vorpal> hm
14:00:49 <elliott> Vorpal: Yes.
14:00:51 <elliott> It's slow.
14:00:52 <HackEgo> Unknown symbol "gb" \ Warning: undefined symbol "gb". \ Unconvertable expression: \ 118054372512256 bit (information) -> gb (undefined symbol)
14:00:56 <Vorpal> ffs
14:00:56 <elliott> Also, "gb" is unlikely to work.
14:01:01 <Vorpal> `frink 14756796564032 bytes -> gigabytes
14:01:01 <elliott> `frink 14756796564032 bytes -> gibibyte
14:01:05 <elliott> Vorpal: gibi
14:01:12 <Vorpal> elliott, I want base 1000 :P
14:01:13 <HackEgo> 230574946313/15625000 (exactly 14756.796564032)
14:01:13 <Deewiant> bogo
14:01:17 <Vorpal> (okay not really)
14:01:28 <elliott> Anyawy, like I said, 13.5 tebibytes.
14:01:37 <Vorpal> elliott, you said it after I typed that line
14:01:39 <Deewiant> (Actually you said tera)
14:01:42 <elliott> *Anyway
14:01:43 <elliott> Deewiant: Indeed!
14:01:44 <elliott> But I LIED.
14:01:50 <Deewiant> Shameful.
14:02:04 <HackEgo> 230574946313/16777216 (approx. 13743.33776909113)
14:02:22 <fizzie> Vorpal: Anyway, there was a recording from when someone called to a radio show host about the song, and explained the whole "IRC bot" thing, but the host just couldn't understand the concept and was all "no, no, you're mistaken, he's singing about a boat".
14:02:23 <elliott> Gotta love that useful rational representation.
14:02:36 <Vorpal> fizzie, heh
14:02:47 <elliott> fizzie: I'm not sure what would compel someone to attempt to explain that to a radio show host.
14:02:47 <Vorpal> elliott, XD
14:03:03 <Deewiant> Anyway, the line was filter (uncurry (<)) [(fromIntegral (abs d :: Int32) :: Word32, fromIntegral (gcd (2^32 :: Int64) (fromIntegral d :: Int64)) :: Word32) | d <- [minBound..maxBound :: Int32], d /= 0]
14:03:07 <fizzie> elliott: The radio show host had kept on babbling about the boat earlier, I suppose it got on someone's nerves.
14:03:27 <elliott> fizzie: Isn't there a boat in the video? Very confusing.
14:03:39 <elliott> Deewiant: What.
14:03:53 <Vorpal> speaking of Swedish pronunciation, there is also quite a lot of dialectal variation still.
14:03:58 <Deewiant> For another conjecture, (5383.32 secs, 2327345782000 bytes) vs (5561.58 secs, 2706088878288 bytes) shows that using toInteger and Integers is faster than fromIntegral and Ints.
14:04:06 <elliott> Deewiant: Also, (abs d :: Int32) === (abs d) there.
14:04:09 <elliott> :t gcd
14:04:10 <lambdabot> forall a. (Integral a) => a -> a -> a
14:04:17 <elliott> And (2^32 :: Int64) === (2^32).
14:04:20 <fizzie> Vorpal: Also since it's talking about the "kanal" and, you know, a canal of water and all.
14:04:24 <Deewiant> elliott: I added some extras to make sure everything was correct.
14:04:34 <elliott> Deewiant: TYPES DON'T WORK LIKE THAT
14:04:46 <Deewiant> elliott: Yes they do, it'd give me an error if they weren't what I thought they were.
14:05:02 <elliott> Deewiant: Anyway, you could, like, totally golf that.
14:05:12 <Deewiant> Yes, and optimize it. But that wasn't the point.
14:05:19 <Deewiant> The point was to make sure that it returns the empty list.
14:05:21 <Vorpal> fizzie, indeed
14:05:26 <fizzie> I have no idea how the "Jag är ingen [båt], jag är en väldigt, väldigt vacker tjej" part makes sense for the "boat interpretation", as it is known in scholarly circles.
14:05:37 <elliott> http://stackoverflow.com/a/8836331/1097181 ;; ooh, there's a *psychic* on SO.
14:05:44 <fizzie> Perhaps some sort of a possessed boat?
14:05:46 <elliott> Deewiant: Are we going to get context?
14:05:55 <Vorpal> fizzie, just looked up the lyrics and they make no sense wrt a boat
14:05:56 <Sgeo> fizzie, what's the translation of that?
14:05:56 <elliott> fizzie: Translation?
14:06:11 <fizzie> Sgeo: "I'm not a bot, I'm a really, really beautiful girl."
14:06:17 <elliott> X-D
14:06:21 <elliott> Well, you know boats these days.
14:06:38 <Vorpal> fizzie, the stuff about banning too
14:06:42 -!- elliott has set topic: I'm not a boat, I'm a really, really beautiful girl | http://codu.org/logs/_esoteric/.
14:06:53 <Sgeo> I'm you.
14:06:57 <fizzie> "för i mina ögon är hon alltid en [båt]".
14:07:05 <elliott> Vorpal: Boats have kicked people out before!
14:07:05 <fizzie> "In my eyes she's always a bot/boat."
14:07:09 <itidus21> i guess what i was arguing earlier was that mathematics has some closed-circle views about reality. And going further to say that perhaps everyone has some closed-circle views about reality. These statements of mine themselves represent a closed circle argument.
14:07:19 <elliott> fizzie: Very progressive.
14:07:26 <itidus21> means.. tidus acquired the word closed-circle argument in his inventory
14:07:54 <elliott> Oh, "itidus" derives from "tidus"? I suppose that should have been obvious.
14:07:59 <Vorpal> elliott, it said ban, not kick
14:08:09 <elliott> Vorpal: Yes, well, boats that kick don't let people back in.
14:08:10 <itidus21> elliott: hahahah.........
14:08:21 <itidus21> yup
14:08:25 <fizzie> Vorpal: I... guess it could be some sort of a warship that's patrolling the canal so that you can't travel there?
14:08:27 <Deewiant> elliott: Context: having checked that gcd (2^32) (fromIntegral d) * x doesn't overflow, what can we say about whether fromIntegral (abs d) * x overflows? (If I'm looking at this correctly.) As it turns out, I can't think of anything, although if that had been true in some cases, maybe there would've been something.
14:08:38 <itidus21> i dont necesarily still hold that view, but a few hours ago i was arguing it
14:08:47 <Sgeo> If you die on a boat, you die in real life!
14:08:51 <Deewiant> And the other one was filter (\(a,b) -> abs (toInteger a) /= toInteger b) [(x,y) | (x :: Int32) <- [minBound..maxBound], let y = fromIntegral (abs x) :: Word32].
14:08:57 <Deewiant> Which seems pretty self-explanatory.
14:09:07 <elliott> Deewiant: Doesn't QuickCheck let you run tests over functions?
14:09:10 <Vorpal> elliott, hm not true. I actually turned a small dinghy upside down in the water (as part of training how to do that, I used to sail many years ago)
14:09:11 <elliott> You could try and find a predicate.
14:09:22 <Deewiant> elliott: For what?
14:09:51 <elliott> Deewiant: Well, um, good point.
14:09:57 <Vorpal> Deewiant, was this on one core or multiple cores?
14:09:58 <elliott> Something relating the two. Somehow. :p
14:10:04 <elliott> Vorpal: Does it matter?
14:10:06 <elliott> filter isn't parallel.
14:10:11 <Deewiant> Vorpal: That's not using parFilter or anything so those are single-core.
14:10:12 <elliott> (It's not like it could be parallel over linked lists.)
14:10:21 <elliott> (Well, usefully parallel.)
14:10:27 <Vorpal> elliott, well he should have used parFilter then
14:10:37 <Deewiant> I don't think parFilter exists.
14:10:41 <Vorpal> Deewiant, oh okay
14:10:49 <Vorpal> right
14:10:54 <Deewiant> And it wouldn't've been enough on its own, anyway.
14:11:01 <Vorpal> fair enough
14:11:02 <Deewiant> And I didn't exactly care about the runtime, either.
14:11:09 <elliott> Deewiant: You can easily construct it with Control.Parallel.Strategies.
14:11:20 <Deewiant> elliott: filter `using` parList or whatever?
14:11:33 <Deewiant> I forget how that module works.
14:11:36 <elliott> (\p xs -> filter p xs `using` parList), but I rather suspect you'd want to use one of the fancier chunking combinators.
14:11:42 <elliott> I mean, sparks are cheap, but not /that/ cheap.
14:11:49 <elliott> Erm.
14:11:51 <Deewiant> Right.
14:11:54 <elliott> (\p xs -> filter p xs `using` parList strat)
14:12:01 <elliott> For some strat, probably rseq.
14:12:32 <Deewiant> Alternatively I could've just trusted my belief that what's true for 8-bit is also true for 32-bit.
14:13:03 <elliott> Deewiant: UNTRUE COUNTEREXAMPLE "THEY CAN HOLD ONLY THINGS OF 8 BITS" QED MOFO
14:13:12 <elliott> QED QED QED
14:13:29 <elliott> QED QED QED
14:13:33 <Deewiant> MOT
14:13:39 <fizzie> NETMOT.
14:13:42 <Deewiant> CQFD
14:13:44 <Deewiant> WZBW
14:13:49 <Deewiant> чтд
14:13:55 <Vorpal> Deewiant, but is it true for 64-bit?
14:14:00 <elliott> ASDF
14:14:01 <Deewiant> Vorpal: It better be.
14:14:03 -!- boily has joined.
14:14:08 <Vorpal> hehe
14:14:11 <fizzie> Deewiant: You mean you're not going to... check?
14:14:16 <Deewiant> No, I'm not.
14:14:26 <elliott> Deewiant: You could use one of those fancy SMT things to check it.
14:14:31 <elliott> http://hackage.haskell.org/package/sbv, e.g.
14:14:44 <elliott> I don't know whether they're clever/good enough to.
14:14:50 <fizzie> <Deewiant> And I didn't exactly care about the runtime, either. <-- so there's no reason not to just bump up the bits.
14:15:07 <Vorpal> elliott, SMT... I heard this before, what did it stand for now again
14:15:10 <Vorpal> something modulo?
14:15:11 <elliott> At least expressing it with one of them wouldn't be any harder than writing the Haskell code. :p
14:15:15 <elliott> Vorpal: Satisfiability, theories.
14:15:20 <Vorpal> elliott, ah right
14:15:21 <Deewiant> elliott: That's probably an order of magnitude slower than boolector and whatnot.
14:15:25 <elliott> http://en.wikipedia.org/wiki/Satisfiability_Modulo_Theories
14:15:31 <Vorpal> elliott, I quite like Something Modulo Thingies :P
14:15:38 <elliott> Deewiant: It doesn't dot he solving itself.
14:15:40 <elliott> Deewiant: *do the
14:15:48 <elliott> Deewiant: It uses Yices or something.
14:15:55 <Deewiant> Yices is kind of shitty IIRC.
14:16:11 <elliott> https://github.com/LeventErkok/sbv/tree/master/Data/SBV/Provers
14:16:14 <Deewiant> Anyway, I could just as easily express it in C and probably get faster runtime :-P
14:16:16 <elliott> Also Z3.
14:16:27 <Vorpal> elliott, what about z3?
14:16:29 <Deewiant> Z3 is performant.
14:16:31 <Vorpal> (I used it)
14:16:37 <elliott> Vorpal: It supports it.
14:16:40 <Vorpal> ah right
14:16:42 <elliott> Deewiant: I somewhat doubt even C could enumerate 2^64 integers in a reasonable timeframe.
14:16:51 <Deewiant> elliott: Of course it can't.
14:17:01 <elliott> Deewiant: You don't say.
14:17:10 <Deewiant> I meant, express it in C and get the SMT problem from that.
14:17:28 <elliott> Deewiant: I doubt that would buy you anything over sbv, since it extracts to C anyway.
14:17:44 <Deewiant> Ah, then maybe not.
14:18:13 <Vorpal> Deewiant, why C->SMT? Are there automated tools for that or something?
14:18:15 * elliott considers getting sbv working and trying it himself.
14:18:16 <Deewiant> But anyway, I'm not sure that SMT solvers could figure it out.
14:18:28 <elliott> ONLY ONE WAY TO FIND OUT
14:18:39 <itidus21> assmebly language could do it
14:18:47 <elliott> (Which is the best one in https://github.com/LeventErkok/sbv/tree/master/Data/SBV/Provers? I don't really want to try and get more than one of these things working.)
14:18:51 <itidus21> ^assembly
14:19:01 <Vorpal> itidus21, no, there is no way you can even run a simple loop that just counts up to 2^64 :P
14:19:02 <elliott> itidus21: What, enumerate all 64-bit integers?
14:19:06 <Deewiant> I tried finding examples of "des(x) == x" with SMT solvers and didn't get a solution after some 875 hours of CPU time.
14:19:11 <itidus21> i guess not
14:19:22 <elliott> Deewiant: That property is a lot simpler than des(x) == x :P
14:19:25 <itidus21> point is though that if asm can't do it then it can't be done
14:19:27 <ais523> you know what? I'm not convinced Funge-98 is an esolang
14:19:31 <Vorpal> :t des
14:19:32 <lambdabot> Not in scope: `des'
14:19:36 <elliott> itidus21: Yes it can, you just have to use your brain.
14:19:36 <ais523> although I guess here's as good a place to discuss it as any
14:19:37 <Vorpal> wtf is des?
14:19:43 <Deewiant> Vorpal: DES
14:19:44 <Vorpal> oh wait, DES?
14:19:46 <Vorpal> right
14:19:51 <elliott> itidus21: Brute force is not the only way to solve every problem.
14:19:57 <elliott> itidus21: Also, asm is not even the lowest level you can get at.
14:20:20 <itidus21> if the problem is ennumerating all 64 bit integers
14:20:22 <Deewiant> Vorpal: I did C at that time so that I could go C -> LLVM -> optimized LLVM -> hand-translated SMT
14:20:24 <Vorpal> ais523, what is it then? It is not exactly a main stream language.
14:20:35 <elliott> Oh, Yices and Z3 are the only ones supported.
14:20:38 <itidus21> then asm would be your best bet :P
14:20:38 <elliott> Z3 is better, I guess?
14:20:51 <Sgeo> Does cheater expect his trolling to be successful?
14:20:55 <Vorpal> ais523, I think it is just an esolang that borders on not being one. But still firmly on the esolang side of things.
14:20:59 <elliott> itidus21: No, it wouldn't.
14:21:05 <elliott> Sgeo: What's he doing this time?
14:21:09 <elliott> BTW, he's in here.
14:21:10 <itidus21> any funge derivative is an esolang
14:21:15 <Sgeo> <cheater_> hey guys what is the opposite of return? ...
14:21:20 <Sgeo> <cheater_> i want something like <-
14:21:35 <ais523> cheater: ever heard of comonads?
14:21:38 <elliott> Sgeo: You assume he's trolling, but I think he might just be stupid.
14:21:45 <ais523> they have unreturn and unjoin as their primitives, no matter what elliott wants to call them
14:21:52 <elliott> At least if #haskell over many months is any indicator.
14:21:58 <Deewiant> elliott: IIRC Z3 was about twice as fast as yices on average in SMT-COMP 2011
14:22:00 <fizzie> Deewiant: Incidentally this is the map-related decision I briefly mentioned: http://www.maanmittauslaitos.fi/tiedotteet/2011/12/raha-asiainvaliokunta-puoltaa-avausehdotusta -- so starting first of May, there's going to be some datta.
14:22:05 <Vorpal> ais523, what does elliott want to call them?
14:22:14 <Deewiant> fizzie: Alright, cool.
14:22:33 <Vorpal> Deewiant, which one was fastest?
14:22:38 <Deewiant> Vorpal: Z3, IIRC. :-P
14:22:40 <fizzie> Of course in the US it's been a law that all federally produced stuff is free for who knows how long. :p
14:22:40 <Sgeo> He solved his problem with binds and lambdas, apparently
14:22:45 <Vorpal> Deewiant, I meant out of all
14:22:47 <itidus21> elliott: i wouldn't even know how to go to lower levels than asm :P
14:22:51 <Deewiant> Vorpal: Yes, that's what I meant as well.
14:22:55 <Vorpal> ah okay
14:23:07 <itidus21> i have heard of microcode though
14:23:15 <Deewiant> Vorpal: There were many benchmarks and it didn't win all of them, but it was the fastest for my use case at least.
14:23:17 <elliott> itidus21: I was thinking FPGAs.
14:23:47 <itidus21> would you put them on a board and plug it in? :D
14:24:46 <itidus21> i say this to hint at the fact that i doubt very many individuals ever make their own AGP/PCI cards
14:24:56 <itidus21> and maybe it's an underdeveloped area
14:25:03 <Vorpal> problem with FPGAs is that unless you can take advantage of their different architecture it is going to be slower
14:25:20 <Vorpal> I believe the top clock frequencies for FPGAs is around 200 MHz
14:25:27 <Vorpal> (might be somewhat out of date on that)
14:25:35 <ais523> they don't need a high clock speed
14:25:46 <elliott> [ 1 of 104] Compiling Data.SBV.Utils.Lib ( Data/SBV/Utils/Lib.hs, dist/build/SBVUnitTests/SBVUnitTests-tmp/Data/SBV/Utils/Lib.o )
14:25:47 <itidus21> hmm.. im daydreaming
14:25:51 <ais523> and you don't really need to take advantage of the architecture beyond running thousands of cores in parallel
14:25:53 <Vorpal> ais523, indeed, if the problem is suited to being done on an FPGA of course.
14:25:55 <elliott> Deewiant: It'll probably take 2 seconds to check but ten years to install sbv
14:26:00 <Vorpal> ais523, and that is what I meant
14:26:02 <ais523> if your project parallelises easily, no issue using FPGAs at all
14:26:23 <itidus21> hmm
14:26:29 <Vorpal> ais523, if it doesn't parallelise you have issues though
14:26:59 <itidus21> yeah, i want to develop a GLU = game logic unit :P (not really.. sounds cool though)
14:27:04 <ais523> Vorpal: not really; see, e.g. the stats at the end of http://www.cs.bham.ac.uk/~drg/papers/icfp11.pdf
14:27:10 <Vorpal> ais523, hm are there any embarrassingly non-parallelisable problems?
14:27:23 <elliott> ais523: counting to 2^64 parallelises really easily
14:27:35 <ais523> we gave an input which is pretty much the worst possible algorithm for implementing on an FPGA, and the resulting circuit did no parallelism at all
14:27:43 <Vorpal> elliott, you can't use 2^64 "cores" though
14:28:01 <ais523> and yet it was within a factor of 2 of the algol, and within a factor of around 7 of ocaml
14:28:09 <itidus21> what is achieved by counting though.. the algorithm makes no sense
14:28:22 <ais523> even with just the one thread, the advantage gained from hardcoding your program into the hardware is noticeable
14:28:23 <elliott> Vorpal: Well, it would work.
14:28:29 <itidus21> its like in brainfuck you would optimize ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
14:28:41 <Vorpal> elliott, what would?
14:28:48 <elliott> Vorpal: Using 2^64 cores.
14:29:00 <Vorpal> elliott, no it wouldn't due to you not having that many
14:29:09 <elliott> Vorpal: That doesn't mean it parallelises any worse.
14:29:11 <itidus21> so you could optimize the counting problem to just setting a variable to 2^64
14:29:15 <Vorpal> elliott, of course
14:29:19 <itidus21> time vs space tradeoff :D
14:29:25 <Vorpal> elliott, but what I mean is that it isn't a practical solution
14:29:28 <Vorpal> 2^64 is too big
14:29:41 <fizzie> ais523: We recently had some visiting guy from Japan doing signal processing (sound recognition; not speech, just environmental sounds in general) on an FPGA.
14:29:52 * elliott wonders how long it'd take the top supercomputer to count to 2^64 (in parallel).
14:29:57 <oklopol> itidus21: how is that a tradeoff?
14:30:06 <Vorpal> itidus21, the problem was actually to run a function on each value
14:30:12 <fizzie> Apparently it was rather faster than running the equivalent stuff on DSP cores.
14:30:14 <itidus21> oklopol: oh.. my posts dont make sense sequentially
14:30:23 <oklopol> oh.
14:30:26 <elliott> Or non-sequentially.
14:30:28 <Vorpal> fizzie, nice
14:30:43 <elliott> Deewiant: What, z3's not open-sores? :/
14:30:52 <Vorpal> elliott, it is MS research
14:30:57 <itidus21> 2^64 cores solution demands more space... using 1 core demands more time
14:30:58 <elliott> Vorpal: So is GHC.
14:31:04 <Vorpal> elliott, you need to use a really old version or run it under wine
14:31:24 <Vorpal> itidus21, the bf case is not a tradeoff at all
14:31:30 <Vorpal> nor is just setting a variable
14:31:43 <itidus21> Vorpal: i know.. hence my comment about my posts don't make sense sequentially
14:31:44 <fizzie> Vorpal: It was all "and then we made our vectors this long..." "but what about the running time?" "we just used more gates".
14:32:07 <Vorpal> ais523, I wonder why there aren't FPGAs in normal computers. To offload problems to. Just like you offload rendering (and other stuff) to GPUs
14:32:25 <Vorpal> fizzie, heh
14:32:33 <ais523> Vorpal: people are starting to do that already, I think
14:32:36 <ais523> it's not mainstream yet
14:32:39 <elliott> Deewiant: Oh come on, Yices is closed-source too?
14:32:41 <ais523> but may become so eventually
14:32:50 <ais523> elliott: what are these programs for?
14:32:53 <elliott> ais523: SMT
14:33:01 <ais523> which expands to?
14:33:02 <Vorpal> ais523, I hope so
14:33:10 <elliott> ais523: satisfiability modulo theories
14:33:22 <itidus21> so it seems to me the formula is.... i = 2 ^ 64 / c where c is the number of cores, and i is the number of iterations per core
14:33:27 <ais523> Vorpal: if you have a few thousand pounds to spare, you can buy an FPGA add-on for your computer right now
14:33:35 <ais523> then the problem's just finding software that makes use of it
14:33:38 <Vorpal> ais523, sadly I don't have that
14:33:40 <Vorpal> and indeed
14:33:46 <ais523> I can only expect the price to come down over time
14:33:58 <ais523> it just needs a killer app, really (like gaming for GPUs)
14:34:15 <elliott> Deewiant: How recent is Z3 2.19? :p
14:34:19 <Vorpal> ais523, the problem is no game is going to depend on such a thing, because it would hurt the sales figures
14:34:42 <ais523> hmm, I added VHDL to Emacs' flymake-mode yesterday
14:34:45 <elliott> Vorpal: Games have had optional-but-makes-it-prettier things for ages now.
14:34:46 <ais523> also, turned flymake-mode on by default
14:34:53 <Vorpal> ais523, flymake?
14:34:55 <elliott> (diff) (hist) . . N User:Splu26ri160a‎; 12:55 . . (+4,830) . . Splu26ri160a (Talk | contribs) (New page: Your email could not be delivered error 552. Who knows what this means! SMTP error codes were designed way back in 1982, mainly for other computers to be able to read and understand them. ...)
14:35:01 <Vorpal> elliott, well yes
14:35:08 <ais523> elliott: right, you'd have a game that works fine without it, but ends up with 100 times the framerate or something silly like that with
14:35:09 <Vorpal> elliott, you need to find such a use for FPGAs too
14:35:33 <ais523> Vorpal: actually, I think the FPGA-in-PC market's currently being driven by bitcoin miners
14:35:42 <itidus21> ooh
14:35:47 <Vorpal> ais523, I would expect any such killer app to happen in, say, CAD or such first, this would bring it down a bit, then maybe in something more mainstream
14:35:49 <ais523> sometimes I wonder if bitcoin is actually a cunning plan to advance the state of technology
14:36:08 <ais523> Vorpal: I don't get why CAD would require that sort of processor power
14:36:10 <Vorpal> ais523, didn't the price of bitcoin collapse or something iirc?
14:36:15 <itidus21> ais523: everything is "actually a [...] technology"
14:36:26 <Vorpal> ais523, hm okay
14:36:32 <Vorpal> ais523, advanced simulation?
14:36:36 <ais523> Vorpal: yes, although it picked up somewhat after that
14:36:40 <itidus21> fsvo everything
14:37:00 <elliott> "You should download Z3 version 3.2 or later."
14:37:12 <elliott> Ah, http://research.microsoft.com/projects/z3/z3-x64-3.2.tar.gz
14:37:16 <elliott> Vorpal: Not ancient, that's the latest version.
14:37:21 <Vorpal> ah nice
14:37:25 <itidus21> im such a phony using expressions like fsvo.. someone could accidently mistake me for one of you
14:37:35 <ais523> <lament> (of course, there's also z-machine for windows. Sadly, no windows for the z-machine yet.)
14:37:36 <elliott> *I* started the FSVOing.
14:37:36 <Vorpal> elliott, last I looked (half a year ago?) that wasn't around
14:37:39 <elliott> I demand royalties.
14:37:52 <elliott> Or, maybe Deewiant used it a bit before me.
14:37:56 <elliott> But I started the influx.
14:38:05 <itidus21> `pastelog fsvo
14:38:15 <Vorpal> ais523, z-machines hm, what are those now again?
14:38:23 <itidus21> zork machines?
14:38:30 <ais523> some game interp, IIRC
14:38:33 <Vorpal> ah
14:38:37 <itidus21> intercom
14:38:38 <HackEgo> 2006-08-29.txt:09:04:18: <GreyKnight> FSVO "few" \ 2009-07-11.txt:19:21:32: <ehird> FSVO recently \ 2009-07-20.txt:19:59:04: <ehird> well, FSVO entirely possible \ 2009-07-24.txt:18:56:18: <ehird> AnMaster: fsvo love equal to shit \ 2009-07-24.txt:18:56:25: <AnMaster> "fsvo"? \ 2009-07-24.txt:18:56:36: <ehird> fsvo. \ 2009-07-24.txt:18:56:37: <GregorR-L> `translate fsvo \ 2009-07-24.txt:18:56:38: <HackEgo> fsvo
14:39:04 <itidus21> hackego's heart just wasn't in it
14:39:12 <Deewiant> elliott: I don't think I've ever used the abbreviation "FSVO", at least.
14:39:23 <Vorpal> Deewiant, for some values of used?
14:39:29 <Deewiant> Har har.
14:39:45 <Vorpal> I don't have the logs on this computer so meh
14:40:21 <ais523> ooh, I've reached the arrival of ehird` in my great log reread
14:40:28 <elliott> Prelude Data.SBV> prove $ \(x::SWord8) -> x .== 0
14:40:28 <elliott> *** An error occurred.
14:40:28 <elliott> *** Unable to locate executable for Yices
14:40:28 <elliott> *** Executable specified: "yices"
14:40:32 <ais523> it's been over three years now
14:40:32 <elliott> Aw come on.
14:40:36 <elliott> ais523: FSVO great.
14:40:41 <elliott> ais523: I still plan to read every single log in order some day.
14:40:45 <Deewiant> 2009-07-24 20:57:13( Deewiant) http://www.google.com/search?q=fsvo
14:41:00 <Deewiant> That's the only use other than that "I don't think I've ever used" use.
14:41:08 <ais523> wow, it's so weird to see elliott not knowing something about the channel
14:41:20 <ais523> Deewiant: that isn't a use, that's a mention
14:41:28 <elliott> ais523: what, Deewiant not using FSVO, or?
14:41:29 <Deewiant> Fair enough.
14:41:35 <ais523> (the referent of "that" is ambiguous there, but the statement's right both ways)
14:41:53 <ais523> elliott: Google-searching something is mentioning it, not using it
14:42:00 <itidus21> ooh
14:42:06 <elliott> Prelude Data.SBV> proveWith z3 $ \(x::SWord8) -> x .== x
14:42:06 <elliott> Q.E.D.
14:42:14 <elliott> Deewiant: OK what was the proposition again.
14:42:21 <Deewiant> Which one?
14:42:25 <elliott> Deewiant: The one.
14:42:36 <Deewiant> > filter (uncurry (<)) [(fromIntegral (abs d :: Int32) :: Word32, fromIntegral (gcd (2^32 :: Int64) (fromIntegral d :: Int64)) :: Word32) | d <- [minBound..maxBound :: Int32], d /= 0]
14:42:40 <lambdabot> mueval-core: Time limit exceeded
14:42:44 <elliott> That lasted long.
14:42:47 <ais523> elliott: oh, we may have been using TC all wrong
14:42:58 <ais523> there was a goodmathbadmath post about the difference between turing-complete and turing-equivalent
14:43:09 <Vorpal> ais523, oh? what is the difference?
14:43:13 <ais523> (a TC computation is one that requires at least a TE interp to run)
14:43:19 <Vorpal> ah
14:43:36 <Deewiant> http://scienceblogs.com/goodmath/2007/01/turing_equivalent_vs_turing_co.php
14:43:45 <Vorpal> ais523, are there any known TC computations?
14:43:53 <elliott> err, yes?
14:43:57 <elliott> a brainfuck interpreter?
14:44:16 <Vorpal> elliott, apart from interpreting TE interps I mean
14:44:17 <ais523> yep, interpreting a TE language is the most common one
14:44:31 <ais523> another one is to run all possible programs in a particular TE lang in parallel
14:44:34 <ais523> and output when each of them halts
14:45:04 <ais523> (if you don't care about the exact details of how the threads interleave, running infinitely many things in parallel is trivial)
14:45:54 <Vorpal> okay let me rephrase that: are there any known TC computations that doesn't involve TE languages.
14:45:56 <itidus21> `searchlog itidus computation limit
14:45:58 <elliott> Deewiant: What's the corresponding form for 8-bit? Just s/Int32/Int8/ s/Word32/Word8/?
14:46:00 <ais523> hmm, what2D languages have nothing to do with Befunge?
14:46:08 <ais523> *what 2D
14:46:12 <HackEgo> 2012-01-12.txt:14:45:56: <itidus21> `searchlog itidus computation limit
14:46:16 <elliott> ais523: biota
14:46:28 <Deewiant> elliott: And 2^8
14:46:31 <itidus21> bah.. anyway.. i think one of you directed me to the gravity esolang
14:46:36 <Deewiant> elliott: And the Int64 is of course just "some bigger int"
14:46:41 <elliott> Deewiant: Right. Could the Int64 be shortened to ... right.
14:46:44 <itidus21> when i was questioning the limits of computation
14:46:47 <ais523> elliott: ah, interesting
14:46:51 <Vorpal> itidus21, I believe that one is uncomputable?
14:46:53 <ais523> made by the inventor of c2, I didn't expect that
14:47:38 <itidus21> there was another time discussing sumamoito where i held the belief for a short moment that sumamoito was uncomputable
14:47:44 <itidus21> but elliott cleared up that mistake for me
14:48:13 <ais523> hmm, is Biota the only esolang ever to have been sold at a profit?
14:48:29 <Vorpal> huh, sold at a profit?
14:48:33 <elliott> Deewiant: This is FUN.
14:49:04 <Vorpal> ais523, under what circumstances did that happen?
14:49:33 <ais523> <ais523> do bees hibernate?
14:49:45 <ais523> Vorpal: not sure; apparently someone found Biota useful enough to buy it
14:49:49 <Vorpal> heh
14:49:55 <ais523> the idea was to make a language that was reasonably resistant to mutation
14:50:06 <itidus21> it was devised by ward cunningham apparently (looking at the wiki)
14:50:20 <itidus21> and he is a big name so i guess he can sell esolangs
14:50:28 <Sgeo> ais523, sounds similar to a design requirement for Creatures
14:50:41 <Sgeo> Uh, big name != ability to find a buyer for esolangs
14:50:41 <itidus21> "The inventor of Biota. Also, the inventor of the wiki, having created the Internet's first wiki at c2.com. Outside of the esolangs community, he is far more famous for the latter. "
14:51:01 <ais523> possibly inside the esolangs community too
14:51:13 <Sgeo> Smalltalk source in a text file?
14:51:27 <ais523> text file's a good way to store source
14:51:32 <itidus21> i am curious though
14:51:39 <ais523> I bet even @lang has a text representation it can roundtrip via
14:51:40 <itidus21> what exactly do you sell with an esolang
14:51:55 <itidus21> do you sell the BNF?
14:52:00 <ais523> an interp for it? copyrights on the spec? support?
14:52:02 <elliott> ais523: Biota predates esolangs, really
14:52:07 <itidus21> or an implementation.. both?
14:52:11 <Vorpal> ais523, I'm guessing elliott is going to go with no? (wrt text)
14:52:11 <elliott> and wasn't intended as one
14:52:30 <elliott> <itidus21> it was devised by ward cunningham apparently (looking at the wiki)
14:52:39 <elliott> itidus21: The irony of this statement is palpable.
14:52:51 <ais523> it's really unlike funge in pretty much every way, it's more like sansism
14:53:03 <elliott> <ais523> I bet even @lang has a text representation it can roundtrip via
14:53:04 <ais523> elliott: no capital W, it's OK
14:53:06 <elliott> Not really.
14:53:13 <ais523> besides, the Wiki says it was deviced by ward cunningham too
14:53:27 <itidus21> i have read up on ward a teeny bit before
14:53:36 <itidus21> something about patterns
14:53:50 <elliott> Deewiant: The hard part is the casting here. :p
14:53:51 <itidus21> that his wiki focuses on patterns perhaps..
14:53:58 <elliott> Deewiant: Oh, SignCast is what I want.
14:54:06 <itidus21> maybe something about extreme programming
14:54:17 <ais523> heh, discussion of the timeout challenge on anagolf
14:54:28 <Vorpal> ais523, link?
14:54:35 <ais523> and the way that the golfiest way to get a timeout in ruby is `vi`
14:54:40 <ais523> Vorpal: 2008-01-18
14:54:43 <Vorpal> oh
14:54:47 <itidus21> the idea of copyrighting a language spec just isn't cool
14:55:18 <ais523> C does it!
14:55:20 <Vorpal> itidus21, I would assume C# or such is copyrighted?
14:55:24 <elliott> Deewiant: Reassure me that (unsignCast . extend . signCast) will DTRT, thx
14:55:26 <Vorpal> and yes C and so on too
14:55:31 <itidus21> it could be done in a predatory way
14:55:32 <elliott> Erm
14:55:36 <elliott> (signCast . extend . unsignCast)
14:55:50 <ais523> hmm, clearly, the esolang just refuses to function unless you've paid its author money
14:56:05 <ais523> if you patch out the check that does that, you're no longer conforming to the spec
14:56:12 <Vorpal> heh
14:56:22 <itidus21> all those little details
14:56:53 <Vorpal> itidus21, when did you first come here btw?
14:57:03 <elliott> prop.hs:22:13:
14:57:03 <elliott> Context reduction stack overflow; size = 21
14:57:03 <elliott> Use -fcontext-stack=N to increase stack size to N
14:57:03 <elliott> $dSignCast :: SignCast SWord8 SInt16
14:57:03 <elliott> $dSignCast :: SignCast SWord16 SInt8
14:57:03 <elliott> $dSignCast :: SignCast SWord8 SInt16
14:57:05 <itidus21> not that long ago
14:57:05 <elliott> $dSignCast :: SignCast SWord16 SInt8
14:57:07 <elliott> $dSignCast :: SignCast SWord8 SInt16
14:57:07 <Vorpal> ah
14:57:09 <elliott> $dSignCast :: SignCast SWord16 SInt8
14:57:11 <elliott> $dSignCast :: SignCast SWord8 SInt16
14:57:12 <itidus21> under a year ago
14:57:13 <ais523> elliott: wow, you really used to hate funge-98
14:57:13 <elliott> :-|
14:57:19 <elliott> :t gcd
14:57:20 <lambdabot> forall a. (Integral a) => a -> a -> a
14:57:21 <Vorpal> ais523, why=
14:57:27 <ais523> meanwhile, I had a sudden realisation that I'm a call-by-name fanboy
14:57:38 <ais523> Paul Levy has promised to shock me out of it next week, I'll be interested in that
14:57:51 <Vorpal> ais523, you actually like call by name? why?
14:57:53 <ais523> Vorpal: for being so much more complex than -93
14:58:05 <Vorpal> ais523, also who is Paul Levy?
14:58:06 <itidus21> like, suppose brainfuck was copyrighted
14:58:10 <ais523> Vorpal: because it's so much more natural and intuitive than CBV, and has many fewer special cases
14:58:15 <ais523> Vorpal: the call by push value guy
14:58:21 <Vorpal> hm
14:58:22 <ais523> he was mentioned to me by elliott, I think
14:58:26 <itidus21> would it be that you could just replace one char with another?
14:58:29 <Vorpal> ais523, what about call by reference?
14:58:30 <ais523> who was surprised to discover that we worked in the same department
14:58:38 <ais523> Vorpal: hahahahahahahahahahahahahahahahaha
14:58:57 <Vorpal> ais523, thanks. The reaction was everything I hoped.
14:59:12 <Vorpal> hoped for*
14:59:20 <elliott> call by push name, pls
14:59:57 <ais523> 21:28:39: <ehird`> gcc insists char [x][y]
14:59:58 <ais523> 21:28:45: <ehird`> is really really different from char **
15:00:12 <ais523> elliott: wow, I'd never expected such a misconception coming from you
15:00:33 <ais523> sadly, my response to you was also a misconception
15:00:53 <itidus21> http://en.wikipedia.org/wiki/File:Bangalore_India_Tech_books_for_sale_IMG_5261.jpg
15:01:06 <elliott> Deewiant: Oh, dear
15:01:15 <elliott> Deewiant: I'm going to have to write my own gcd
15:01:28 <elliott> ais523: Please, don't assume 2008-ehird is me; I dislike him quite intensely
15:01:44 <Vorpal> ais523, anyway I quite like call by value for strict languages anyway. I guess call by name might make more sense in a lazy language hm
15:02:19 <elliott> Vorpal: Note that a language does not (should not) have to enforce a call strategy.
15:02:29 <elliott> It's an implementation detail.
15:02:38 <Vorpal> elliott, I believe C enforces call by value?
15:02:45 <elliott> Haskell, for example, only requires non-strict semantics; so lazy evaluation, call-by-name, etc. are all legitimate implementation strategies.
15:02:45 <itidus21> so is there such a thing as a public domain programming language?
15:02:58 <elliott> Vorpal: As-if rule says it doesn't, although there's not much you could do with that flexibility.
15:03:01 <elliott> itidus21: everything on http://esolangs.org/w
15:03:14 <Vorpal> elliott, hm
15:03:34 <elliott> @src gcd
15:03:34 <lambdabot> gcd 0 0 = error "Prelude.gcd: gcd 0 0 is undefined"
15:03:34 <lambdabot> gcd x y = gcd' (abs x) (abs y)
15:03:34 <lambdabot> where gcd' a 0 = a
15:03:34 <lambdabot> gcd' a b = gcd' b (a `rem` b)
15:03:36 <elliott> Yay
15:03:38 <itidus21> so biota is public domain by now right? :D
15:04:03 <Vorpal> elliott, which evaluation stratergy does ghc use?
15:04:10 <Vorpal> strategy*
15:04:11 <elliott> Vorpal: Lazy.
15:04:14 <Vorpal> ah
15:04:35 <elliott> Vorpal: So, call-by-need.
15:04:40 <Vorpal> right
15:04:51 -!- Phantom_Hoover has joined.
15:05:08 -!- ais523_ has joined.
15:05:10 -!- ais523 has quit (Read error: Connection reset by peer).
15:05:11 <Phantom_Hoover> spod
15:05:12 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
15:05:13 <elliott> hi Phantom_Hoover
15:05:17 <ais523_> 19:03:06: <AnMaster> I'm pondering writing a befunge interpreter in bash, however, I'm not clear on one point, while the size of the playfield isn't limited in Befunge-98, is it "not limited in one dimension, but still limited in the other" or "totally unlimited"?
15:05:23 <ais523_> see, I can poke fun at past-all-of-us
15:05:26 -!- ais523_ has changed nick to ais523.
15:05:30 <ais523> apart from people who weren't there
15:06:12 <Vorpal> wow I had forgotten that befunge implementation. It kind of worked for -93 I remember.
15:06:13 <elliott> Deewiant: I run into the roadblock of having no idea how to extend this thing with functions :P
15:06:16 <Vorpal> ugly piece of crap though
15:06:26 <elliott> Not as ugly as cfunge!
15:06:28 <Vorpal> since bash really doesn't like null-bytes
15:06:32 -!- cheater_ has joined.
15:06:58 <Vorpal> I had to store null bytes as something else
15:07:08 <Vorpal> forgot how I solved that
15:07:23 <elliott> Vorpal: Yo, how do I define gcd in Z3
15:07:32 <Phantom_Hoover> ASCII escape?
15:07:38 <elliott> Hmm, I guess you have to specify them as axioms
15:07:47 <Vorpal> elliott, no clue. When I said I used z3 I mean I used it as a backend to something else
15:07:54 <Vorpal> and it worked pretty well for that
15:10:48 -!- ais523_ has joined.
15:10:59 <ais523_> [15:07] <ais523> Vorpal: you stored them as the string "NUL"
15:11:01 <ais523_> [15:07] <ais523> apparently, you got most of -98 sort-of-working too
15:11:09 <ais523_> it completed Mycology but with a few BADs and no fingerprints
15:11:17 -!- ais523 has quit (Disconnected by services).
15:11:18 -!- ais523_ has changed nick to ais523.
15:11:26 -!- ais523 has changed nick to ais523|sl.
15:11:28 <Vorpal> ais523, heh
15:11:29 <ais523|sl> I forgot all about this nick
15:11:37 <Vorpal> sl?
15:11:47 <ais523|sl> it was a typo for something
15:11:48 <elliott> http://hackage.haskell.org/packages/archive/sbv/0.9.24/doc/html/Data-SBV-Examples-CodeGeneration-GCD.html
15:11:49 <elliott> aha
15:11:51 <itidus21> i suppose i have fun creating trouble by saying things of an imbalancing nature
15:12:03 <elliott> "Why 12? We've empirically determined that this algorithm will recurse at most 12 times for arbitrary 8-bit numbers. Of course, this is a claim that we shall prove below."
15:12:04 <itidus21> but what next.. what next?
15:12:07 <elliott> argh, it only works for 8-bits
15:12:07 <Vorpal> ais523|sl, I believe I didn't actually handle arbitrarily wide playfield (because bash only had one-dimensional arrays) just a very large value
15:12:15 <Vorpal> ais523|sl, and that didn't trip up mycology
15:12:22 <itidus21> i'll tell you what next
15:12:23 <elliott> sgcd :: SWord8 -> SWord8 -> SWord8
15:12:23 <elliott> sgcd a b = go a b 12
15:12:23 <elliott> where go :: SWord8 -> SWord8 -> SWord8 -> SWord8
15:12:23 <elliott> go x y c = ite (c .== 0 ||| y .== 0) -- stop if y is 0, or if we reach the recursion depth
15:12:23 <elliott> x
15:12:24 <elliott> (go y y' (c-1))
15:12:26 <elliott> where (_, y') = x `bvQuotRem` y
15:12:28 <elliott> oh!
15:12:30 <elliott> it supports sharing
15:12:58 <Vorpal> ais523|sl, anyway I have no clue where the source for that thing is, if I even have it still. It is probably around in a backup. Which year was it?
15:13:03 <itidus21> A program whose instructions exist in continuous space.
15:13:08 <ais523|sl> 2008
15:13:13 <ais523|sl> you made cfunge a couple of days later
15:13:17 <Vorpal> heh
15:13:38 <Vorpal> I believe I was still learning C at the time
15:14:08 <itidus21> A further deviation of the continuous chess idea
15:14:39 <Phantom_Hoover> Oh no.
15:14:52 <Vorpal> Phantom_Hoover, hm?
15:14:54 <itidus21> cellular automata are so friendly with their tile-alignment
15:14:54 <fizzie> ais523|sl: Hey, you'll hit fungot's first appearance soon, if you haven't already; that's in 2008 too.
15:14:54 <fungot> fizzie: thank you for the positive approach which makes use of a gmo may be authorised against the will of the majority of members of parliament.
15:15:21 <Vorpal> fungot, wow that sounds scary
15:15:22 <fungot> Vorpal: mr president, here with me in this matter, though i feel this is necessary. my view is that dublin i achieved its objectives of regulating the market in may, as we know, allocates eur fnord million in the 2001 budget. having always been in favour of all the services and reception facilities must apply to all the others and extend its cooperation with states who find themselves excluded from it.
15:15:27 <Phantom_Hoover> iti isn't so funny when he gets at your ideas.
15:15:43 <fizzie> Also I see that "^raw" was free-for-all at first, and the fourth thing the bot said on channel was "PISS OUT MY ASS".
15:15:52 <fizzie> How... typical.
15:16:00 <Vorpal> wow
15:16:02 <Vorpal> who said that
15:16:04 <itidus21> but an infinite space where there are only points and edges, all existing at relative distances from each other
15:16:07 <elliott> fizzie: :D
15:16:15 <Vorpal> fizzie, did it run on cfunge from the start or was it rcfunge first?
15:16:18 <Vorpal> I don't remember
15:16:19 <elliott> rcfunge
15:16:24 -!- Ngevd has joined.
15:16:30 <elliott> fungot: PISS OUT MY ASS
15:16:31 <fungot> elliott: mr president, i think that, while the agency has lost 20 because of these shortcomings that we are very happy, i think, is to consolidate what has been said demonstrates the tendency and effort to liberate tibet and censure the peoples republic of china since 1986, especially in the central southern areas of the country is very complex, because we need to deploy all the resources, if the ban remains in place, as was re
15:16:46 <fizzie> Rc/Funge-98 was what I started with, yes.
15:16:48 <fungot> elliott: last night, that there are no easy answers. i hope that parliament will be right behind you. mr rack was right: the iraqi people should be given the power of the judiciary, with clear figures and sanctions. furthermore, there were procedures which the court of auditors' reports, and i would like to ask the european commission has been made so far on the closure of the pas de calais plant is the worst one. since the dis
15:17:00 <fizzie> fungot: YUO BUG.
15:17:01 <fungot> elliott: madam president, it is in taking repressive measures, restore the constitutional state and release all 30 remaining political prisoners.
15:17:07 <fizzie> fungot: STILL NOT ELLIOTT.
15:17:07 <fungot> fizzie: mr president, i would like to give a high profile in contrast to the much discussed issue of category. as you will be able to turn back the clock of history.
15:17:18 <Vorpal> fizzie, what causes that bug?
15:17:25 <elliott> What bug?
15:17:27 <fizzie> It's part of the same corruption thing.
15:17:32 <elliott> I see no bug.
15:17:49 <itidus21> Phantom_Hoover: yeah i just find the discrete space of befunge to be too "easy"
15:17:59 <Vorpal> elliott, you said one line and it highlighted you 3 times rather than the person who actually triggered it
15:18:11 <Vorpal> fizzie, hm maybe it is overlong lines or such?
15:18:25 <Vorpal> fizzie, try increasing the size of some buffers to more than what should be required?
15:18:31 <itidus21> discrete 2d graphs in general, with a finite number of neighbours for each cell
15:18:38 <itidus21> how dull
15:18:42 <fizzie> Yes, it could be the text-generation making overlong sentences, though those should have limits.
15:18:46 -!- ais523|sl has quit (Ping timeout: 244 seconds).
15:18:48 <Ngevd> Aaah!!!
15:18:49 <Ngevd> Hello!
15:18:54 <fizzie> Vorpal: Here's how it saw the last lines: http://sprunge.us/cdNL
15:19:08 <elliott> Vorpal: Oh.
15:19:23 <Vorpal> fizzie, hrrm.
15:19:41 <elliott> fizzie: Can the text generator overflow if a /word/ is too long?
15:19:41 <Ngevd> fizzie, that explains why Pietbot isn't working!
15:19:47 <elliott> fizzie: Like, it's under, appends a word, and that makes it go oevr.
15:19:48 <elliott> over.
15:20:28 <fizzie> elliott: I don't really recall at all. My guess is it's writing directly to the "output line" buffer, but I could be worng.
15:20:30 <fizzie> ^source
15:20:30 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
15:20:32 <Vorpal> fizzie, just in case you might want to try valgrind. I can't say I have debugged the network code much past making sure mycology passes, which iirc gives 100% branch coverage (excluding "failed to connect" style branches)
15:21:26 <Vorpal> I don't really see what sort of C code bug could cause that result though
15:21:33 <Vorpal> the code is fairly simple iirc
15:23:37 <elliott> 100% branch coverage excluding branches.
15:24:05 <Vorpal> elliott, I should point out that there are actually branches in cfunge testing if malloc returned NULL :P
15:24:15 <Vorpal> elliott, I'm talking about that sort of branches.
15:24:31 <Vorpal> elliott, and a lot of input validation
15:24:37 <fizzie> Line 0 is the input buffer I read to with SOCK; line 3 has the current IRC message line before parsing, and is also used for the reply; lines 4... are the separate parts (prefix, command, arguments) of the IRC line. If I mungle around on line 3, that shouldn't matter, since in the next round it *should* copy a new line on top of it. Line 8 is used for reading the babble model files, and line 9 has the generated tokens of the sentence.
15:24:39 <Vorpal> I have code to test all of that
15:24:45 <Vorpal> except the malloc ones
15:24:58 <fizzie> In general though I'd expect that even if one of these buffers overflow, they'd stay on their respective lines.
15:25:27 <Vorpal> fizzie, hm any literal newlines that might mess up anywhere?
15:25:34 <Vorpal> oh wait you use FILE right?
15:25:37 <Vorpal> so probably not
15:26:26 <itidus21> about that good math bad math thing, the guy didn't give any references so i think its ok to hold onto your definitions of TC for now
15:26:27 <fizzie> Yes, and even if you 'p' a newline it won't change the topology of the space (sadly). But of course there might well be bugs in anywhere.
15:26:42 <Vorpal> fizzie, I was thinking about io with i
15:26:44 <itidus21> until there is some signifigant proof
15:26:48 <Vorpal> you could run into newline issues there
15:27:00 <fizzie> Oh, right. Well, no, I don't use 'i' except for ^reload.
15:27:14 <itidus21> i mean the mere fact that the guy is a mathematician phd blogger working at google doesn't give him final word
15:27:51 <Vorpal> fizzie, anyway how many bytes do you read from the socket? Could you end up with reading 511 out of 512 chars or such?
15:28:04 <Vorpal> afaik SOCK doesn't split into lines for you
15:28:17 <Vorpal> fizzie, so I assume you deal with partial lines somehow?
15:28:26 <fizzie> Vorpal: I read up to fff** bytes at a time.
15:28:30 <elliott> <itidus21> about that good math bad math thing, the guy didn't give any references so i think its ok to hold onto your definitions of TC for now
15:28:38 <Vorpal> fizzie, what if you have a partial line in the OS buffer?
15:28:43 <elliott> itidus21: The guy is prominent enough to *be* the reference, methinks.
15:29:01 <itidus21> so how did you guys get it wrong? :P
15:29:11 <itidus21> might be a state of panic
15:29:15 <elliott> <fizzie> Yes, and even if you 'p' a newline it won't change the topology of the space (sadly).
15:29:17 <Vorpal> fizzie, a line could be split over multiple packets due to Nagel's algorithm bunching up a bit of data and you hitting the limit for the packet size in the middle of a line
15:29:18 <elliott> fizzie: Very sadly indeed.
15:29:33 <Vorpal> probably due to other reasons as well
15:29:36 <itidus21> as far as language goes, language changes.. gay doesn't mean happy
15:29:42 <itidus21> maybe TC now means TE
15:30:00 <itidus21> and maybe this guy is a grump about terminology
15:30:27 <fizzie> Vorpal: It reads into line 0, appending it after the end of any previous incomplete line; then processes all complete lines (that end in CR or LF), and finally copies whatever trailing bytes remain after the last CR or LF to start of line 0, so that the next read appends to that.
15:30:34 <fizzie> Vorpal: Or anyway that's what it's supposed to do.
15:30:38 <Vorpal> hm
15:31:13 <fizzie> For each newline it copies the complete IRC-line to line 3, and then does whatever is necessary.
15:31:15 <itidus21> ok i guess he may be right
15:31:29 <fizzie> I think it ignores empty lines before that bit of code, but that shouldn't really be relevant.
15:31:51 <fizzie> (For example the empty line between CR and LF if the server's sending CRLF-terminated lines like it IIRC should.)
15:31:52 <Vorpal> I can't see any obvious problems in the algorithms
15:32:02 <Vorpal> and I don't feel like debugging befunge code written by someone else
15:32:10 <Vorpal> and I just looked at SOCK.c
15:32:14 <Vorpal> and it looks in order
15:32:35 <Vorpal> very simple code for R
15:32:42 <elliott> fizzie: Can you write an n-cursor k-d tree zipper for me, please? Thanks
15:33:34 <Vorpal> fizzie, what would happen if the server sent LF terminated or CR terminated?
15:33:49 <fizzie> Nothing much, except there wouldn't be any empty lines to ignore.
15:33:54 <fizzie> It accepts both as terminators.
15:33:58 <Vorpal> fizzie, also if you replay the input, does the bug still happen?
15:34:14 <fizzie> No, IIRC; that's sort-of why I suspect the babblerator.
15:34:24 <Vorpal> how do you do the randomness?
15:34:27 <fizzie> Though it of course might have to do with the reads getting split up at different places.
15:34:32 <fizzie> With "?", what else?-)
15:34:33 <Vorpal> (?)
15:34:35 <Vorpal> hm
15:34:47 <Vorpal> fizzie, I believe there is some fingerprint that provides random(n), not sure
15:34:51 <fizzie> Anyway, I needs to go grocery shopping now, back laters.
15:34:54 <Vorpal> cya
15:35:35 <itidus21> elliott: basically seems to me he is trying to say that a language/machine is TE, but a program is TC
15:35:39 <Vorpal> oh yes, FIXP (an rcfunge one) provides D for fixed point randomness
15:35:47 <Vorpal> err, integer randomness even
15:35:59 <Vorpal> which I see I do in the rather naive way.
15:36:17 <Vorpal> (random() % n) <-- don't do this at home kids
15:36:39 <Vorpal> (at least I left a comment about it)
15:36:40 <itidus21> "It's about the distinction between a Turing equivalent computing system, and a Turing complete computation. "
15:38:41 <itidus21> don't worry guys im sure your wiki pages don't need updating
15:44:34 -!- Ngevd has quit (Read error: Connection reset by peer).
15:44:55 -!- Ngevd has joined.
15:45:57 <itidus21> im a teeny bit arrogant :P
15:46:29 <Ngevd> Is it possible to make lambdabot give someone a message at a particular time
15:46:56 <itidus21> who created lambabot, was it roger g?
15:46:57 <Vorpal> Ngevd, if that time is "when they next speak", sure
15:47:18 <elliott> itidus21: Many people.
15:47:27 <itidus21> oh ok
15:47:32 <Ngevd> Vorpal, I was thinking more along the lines of first of february
15:47:45 <itidus21> hmm..
15:48:20 <elliott> itidus21: It's been around for at least 8 years, I think.
15:48:24 <elliott> Probably longer.
15:49:01 <itidus21> Ngevd: do you mean to simulate a regular @tell on the specified moment?
15:49:16 <Ngevd> itidus21, that would be nice, but not necassarily
15:49:33 <itidus21> the person might not be there at the specified time
15:49:44 <Ngevd> It's going to be me
15:51:40 <elliott> Ngevd: Just @tell yourself to @tell yourself about it then.
15:51:48 <elliott> And keep re@telling yourself about it until the day before.
15:52:15 <itidus21> @tell ngevd <Ngevd> Is it possible to make lambdabot give someone a message at a particular time
15:52:15 <lambdabot> Consider it noted.
15:52:35 <Ngevd> @messages
15:52:36 <lambdabot> itidus21 said 20s ago: <Ngevd> Is it possible to make lambdabot give someone a message at a particular time
15:53:30 <itidus21> thats my try
15:55:09 <Vorpal> <Ngevd> Vorpal, I was thinking more along the lines of first of february <-- log on then and give them that message?
15:55:18 <Vorpal> Ngevd, or schedule cron on your computer to send it?
15:55:38 <Ngevd> Hmm
15:57:04 <itidus21> the difference with me is i have practical uses for these topics
15:57:31 <itidus21> im not trying to fix whats not broken
15:57:41 <Ngevd> itidus21 is actually a Computer Science teacher
15:57:54 <itidus21> like, evolution vs intelligent design is not actually helpful :D
15:58:40 <itidus21> at least it's not a useful end in itself. i guess it generates cool things in the same way as chess ai research does
15:59:09 <Ngevd> Chess AI is next-to-useless except for playing chess
15:59:22 <Ngevd> What would be useful is an AI for some psychological game
15:59:22 <itidus21> oh crud
15:59:25 <Ngevd> Like Uno
15:59:57 <itidus21> but i mean (in my idealistic fairyland) that chess AI research improves the AI technology and such
16:00:11 <itidus21> can i prove it? no.. i just take peoples word on it
16:00:30 <elliott> Ngevd: I think gmail has a todo date reminder thing.
16:00:32 <elliott> You could use that.
16:00:34 <itidus21> i guess its like how games create a market for graphics cards which accelerates their development
16:01:11 <Vorpal> Ngevd, poker?
16:01:31 <Vorpal> Ngevd, also check your phone, I can put reminders in mine
16:01:51 <Vorpal> like "08:00 exam"
16:01:54 <Ngevd> Bah, I never have my phone on
16:02:09 <Ngevd> Gmail seems the best option
16:02:10 <Vorpal> I only turn mine off when sleeping
16:02:27 <Vorpal> and unless I'm home it is always in my pocket
16:02:35 <Vorpal> when I'm home it is usually somewhere on my desk
16:03:07 <itidus21> traditional chinese medicine may have developed due to attempts to create an immortality system
16:03:57 -!- cheater has quit (Ping timeout: 248 seconds).
16:04:19 <itidus21> chemistry may have developed due to trying to turn lead into gold
16:04:56 <itidus21> etc
16:05:01 <Vorpal> which is probably possible but not very cost efficient
16:05:42 <Vorpal> hm lead is 89 and gold 79. I guess you need to split lead to get gold then
16:06:06 <Ngevd> Gold and Neon?
16:06:18 <itidus21> this painting itself is cooler than the act it depicts http://upload.wikimedia.org/wikipedia/commons/c/c1/JosephWright-Alchemist-1.jpg
16:06:26 <Vorpal> Ngevd, is that the difference?
16:06:36 <Ngevd> Yes
16:06:49 <Ngevd> Neon has 10 protons
16:06:52 <Vorpal> Ngevd, well we want to get the lighter element out of the heavier, not the other way around
16:06:54 <Vorpal> so hrrm
16:07:07 <Ngevd> I'm no physisist
16:07:19 <Vorpal> nor am I
16:08:00 <itidus21> for me, the goal is always games
16:08:23 <Vorpal> uh?
16:08:30 <itidus21> yeah
16:08:39 <Vorpal> and what does it depict
16:08:43 <Vorpal> itidus21, and goal for what?
16:08:46 <itidus21> alchemy
16:08:52 <itidus21> ^it depicts alchemy
16:08:55 <Vorpal> itidus21, I meant more specifically
16:09:03 <itidus21> i dunno man i stumbled on it in wiki
16:09:06 <Vorpal> right
16:09:13 <Vorpal> then I don't get the cooler thingy you just said
16:09:14 <itidus21> and i mean the goal of any study or serious work
16:09:22 <itidus21> cool as in impressive
16:09:31 <itidus21> alchemy inspired that painting
16:09:38 <Vorpal> itidus21, so in the end you want games out of everything?
16:09:47 <Vorpal> computer games?
16:09:48 <itidus21> and.. i think the painting is more valuable than gold
16:10:39 <itidus21> nah, i don't want to limit it to computer games
16:11:04 <itidus21> but primarily yes
16:11:20 <itidus21> just as most music is done through a computer these days :P
16:11:25 -!- KingOfKarlsruhe has joined.
16:11:32 <itidus21> ok well i know the playing isn't
16:11:35 <itidus21> but the listening is
16:11:53 <Vorpal> uh.. no? It is generally done through sound waves
16:11:56 <Vorpal> :P
16:14:27 <itidus21> i have done the thinkin
16:14:30 <itidus21> ^thinking
16:14:44 <itidus21> there is no good reason why gaming can't be an end in itself
16:14:46 -!- Klisz has joined.
16:21:02 <elliott> thing I just wrote:
16:21:03 <elliott> class R t where
16:21:03 <elliott> simple
16:21:04 <elliott> :: ((t ~ Void) => Proxy () -> r)
16:21:04 <elliott> -> (forall a. (t ~ Const a, Reg a) => Proxy a -> r)
16:21:04 <elliott> -> ((t ~ Id) => Proxy () -> r)
16:21:04 <elliott> -> (forall a b. (t ~ (a :+: b), R a, R b) => Proxy (a (), b ()) -> r)
16:21:06 <elliott> -> (forall a b. (t ~ (a :*: b), R a, R b) => Proxy (a (), b ()) -> r)
16:21:08 <elliott> -> (forall a b. (t ~ (a :. b), R a, R b) => Proxy (a (), b ()) -> r)
16:21:10 <elliott> -> r
16:21:38 <Ngevd> I have but the vaguest idea what this doesw
16:30:32 <Vorpal> elliott, what is Proxy?
16:30:54 <Vorpal> :t Proxy
16:30:55 <lambdabot> Not in scope: data constructor `Proxy'
16:30:56 <Ngevd> Wow, the sky is beatiful to the west
16:31:01 <Vorpal> not built in indeed
16:42:19 -!- pikhq_ has joined.
16:42:35 -!- pikhq has quit (Ping timeout: 252 seconds).
16:44:22 -!- ais523 has joined.
16:48:27 <Sgeo> Vorpal, I vaguely think it's a thing to avoid using undefined::Blah all the time, but not sure
16:48:41 <Vorpal> hm
16:48:44 <elliott> Vorpal: http://hackage.haskell.org/packages/archive/tagged/0.2.3.1/doc/html/Data-Proxy.html
16:49:09 <Vorpal> elliott, what does tagged do?
16:49:19 <elliott> Provides Data.Proxy and Data.Tagged.
16:49:35 <Sgeo> elliott: helpful
16:49:50 <kallisti> `run echo 'package Foo; our $x;' > test.pl; perl -e 'package Foo; our $x = 2; do "test.pl"; print $x'
16:49:54 <Sgeo> "Provides newtype wrappers for phantom types to avoid unsafely passing dummy arguments"
16:49:56 <HackEgo> 2
16:50:03 <kallisti> oh ho
16:50:03 <Vorpal> Sgeo, right
16:50:23 <kallisti> so a non-assigned our declaration does not rewrite anything.
16:50:27 <kallisti> this could be USEFUL
16:50:42 <Sgeo> " This can be used in place of the more traditional but less safe idiom of passing in an undefined value with the type, because unlike an (s -> b), a Tagged s b can't try to use the argument s as a real value."
16:50:45 <Sgeo> I get it now
16:51:25 <elliott> (Proxy s -> b) is nicer than (Tagged s b).
16:52:37 <Sgeo> So Proxy Foo is an abstract thing that ... refers to type Foo without having a value?
16:53:31 <elliott> data Proxy a = Proxy
16:53:32 <elliott> SO ABSTRACT
16:54:08 <Sgeo> Ah, was wondering how to make Proxys
16:54:15 <Sgeo> So, Proxy::Int instead of undefined::Int
16:54:32 <elliott> Sgeo: ...
16:54:39 <elliott> yeah Proxy is a great Int.
16:54:40 <Sgeo> Er
16:54:50 <Sgeo> Proxy::(Proxy Int)
16:56:30 <Sgeo> I can think of preferring to use a Tagged over a Proxy
16:56:45 <Sgeo> Means just an untag, instead of a dummy Proxy argument
16:58:00 <elliott> Sgeo: Taggeds are a lot harder to write implementation code with.
16:58:07 <elliott> With proxies you can easily retag to recurse etc.
17:00:23 <Sgeo> Maybe I'll understand Reflection better
17:01:06 <Sgeo> Why proxy s -> a instead of Proxy s -> a?
17:04:41 <Sgeo> Let me see if I understand the usage: Code that calls code that .. etc. that use configuration stuff just add a class constraint to their type signature. No extra argument or anything like that. A function that wants the data gets at it by building a Proxy of the appropriate type (ScopedTypeVariables perhaps?) and calling reflect on it. The whole thing is run with reify
17:05:03 <Sgeo> Hmm, I'm not entirely sure it makes sense.
17:06:00 <Sgeo> Wait, the whole conglamoration needs to accept an argument
17:06:45 <Sgeo> I guess every function accepts an extra argument, but ... wait, that makes the whole thing pointless
17:10:08 <elliott> class Encoding t id (**) pu (++) su where
17:10:08 <elliott> p_encoding
17:10:09 <elliott> :: ((t ~ id) => r)
17:10:09 <elliott> -> ((t ~ pu) => r)
17:10:09 <elliott> -> ((t ~ su) => r)
17:10:09 <elliott> -> (forall a b. (t ~ (a**b),
17:10:11 <elliott> Encoding a id (**) pu (++) su,
17:10:13 <elliott> Encoding b id (**) pu (++) su)
17:10:15 <elliott> => Proxy (a (), b ()) -> r)
17:10:17 <elliott> -> (forall a b. (t ~ (a++b),
17:10:19 <elliott> Encoding a id (**) pu (++) su,
17:10:21 <elliott> Encoding b id (**) pu (++) su)
17:10:23 <elliott> => Proxy (a (), b ()) -> r)
17:10:25 <elliott> -> r
17:10:27 <elliott> class Algebraic t id (**) pu (++) su where
17:10:29 <elliott> type ADT t :: * -> *
17:10:31 <elliott> encode :: t -> ADT t t
17:10:33 <elliott> decode :: ADT t t -> t
17:10:35 <elliott> p_algebraic :: ((Encoding (ADT t) id (**) pu (++) su) => r) -> r
17:11:52 <elliott> Kind mis-match
17:11:52 <elliott> The third argument of `Algebraic' should have kind `(* -> *)
17:11:52 <elliott> -> (* -> *)
17:11:52 <elliott> -> *
17:11:52 <elliott> -> *',
17:11:53 <elliott> but `**' has kind `* -> * -> *'
17:11:54 <elliott> grr.
17:21:36 -!- zzo38 has joined.
17:31:45 <kallisti> oh nice the last section of this book is some group theory proofs
17:31:51 <kallisti> we won't get to cover that in class though
17:33:37 <kallisti> the first half of the book is... literally the same as in discrete math.
17:36:29 <kallisti> maybe I should take real analysis. er wait I think that requires calc 3 which I didn't take...
17:36:40 <kallisti> MAYBE I SHOULD MAJOR IN MATH?????
17:36:49 <kallisti> or minor
17:36:51 <kallisti> I could do that.
17:37:10 <kallisti> or.... dual major?
17:37:13 <kallisti> that's a thing.
17:37:51 <itidus21> i think you need to find a polymath to be an apprentice for
17:37:56 <itidus21> but that could be a completely dumb idea
17:38:03 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.88 [Firefox 9.0.1/20111220165912]).
17:39:50 <itidus21> although it is implicit that it could be a dumb idea, i bring attention to it because anyone who actually took that idea to heart could end up in the shadows of someone who doesn't want to be outshined
17:41:07 <itidus21> verily if you want to anticipate new paradigms you need to have some freedom
17:41:21 <itidus21> but i guess everyone needs some training to get started
17:42:19 <itidus21> i mean ahh why must i give advice
17:42:59 <itidus21> anyway, it is as true for academics as it is for sports that you get out what you put in
17:45:09 <cheater_> what is a polymath itidus21
17:45:21 <itidus21> a polymath is an intellectual badass
17:45:37 <cheater_> right
17:45:38 <itidus21> the kind who have villages named after them
17:46:57 <itidus21> it could be argued that they are a jack of many trades
17:47:22 <itidus21> but i think there is some synergy they get from so many trades
17:47:46 <itidus21> wiki defines synergy as "Synergy may be defined as two or more things functioning together to produce a result not independently obtainable."
17:47:59 <itidus21> which fits perfectly with what i said
17:49:52 <itidus21> examples might be leonardo da vinci, gottfried leibniz
17:50:02 <itidus21> im sure newton also
17:50:52 <itidus21> http://en.wikipedia.org/wiki/List_of_polymaths
17:52:59 <itidus21> to be fair it is more about the mind than the body, but some would argue that a strong mind requires a strong body
17:53:20 <fizzie> I want a http://en.wikipedia.org/wiki/List_of_polygons. You know, just famous polygons from around the world.
17:53:45 <fizzie> Okay, there is a "List of polygons, polyhedra and polytopes".
17:53:54 <fizzie> But it's just types of polygons, not individual famous ones.
17:54:31 <fizzie> Of course it does contain e.g. the great inverted snub icosidodecahedron, so it's got that going for it.
17:54:59 <fizzie> http://en.wikipedia.org/wiki/Great_inverted_snub_icosidodecahedron
17:55:16 <fizzie> It's like a small cute hedgehog, except not quite.
17:55:24 <olsner> merge them into a "List of polygons, polyhedra, polymaths and polytopes"
17:55:34 <itidus21> and polyglots
17:55:59 <elliott> fizzie: That is my new favourite polyhedron.
17:56:15 <Sgeo> Polypolys
17:56:27 <Sgeo> Things that have more than one poly- descriptor
17:59:56 <itidus21> im always struck by ideas.. im not sure whether saying them all is positive. this idea which just hit me due to reading a page wrong is a dictionary where every definition is a poem
18:00:23 <itidus21> not an example usage but literally a definition
18:01:03 <itidus21> this is the idea born of someone who owns so many dictionaries that he realizes they are useless
18:01:48 <itidus21> i suppose poetry would merely be a kind of sugar coating though for the definition
18:04:14 <zzo38> I should try to write the more class descriptions for Aberration Saver prestige class of D&D game, and write some of the spells which have not yet been written (such as Confuse Objects)
18:04:26 <itidus21> ooh heres a nice quote
18:04:32 <itidus21> As Jorge Luis Borges says in the prologue to "El otro, el mismo": "It is often forgotten that (dictionaries) are artificial repositories, put together well after the languages they define. The roots of language are irrational and of a magical nature."
18:06:12 <zzo38> itidus21: O, I didn't see that. But, yes OK. But, there are constructed languages as well and they are difference
18:07:06 <itidus21> i got into a slight argument over lojban on new years eve
18:08:49 <itidus21> oh fuck its already been done
18:09:05 <itidus21> "The first Sanskrit dictionary, the Amarakośa, was written by Amara Sinha ca. 4th century CE. Written in verse, it listed around 10,000 words."
18:09:48 <zzo38> http://zzo38computer.cjb.net/dnd/other_stuff/levels.tex
18:18:46 <itidus21> zzo38: is that a program or a tex document or both?
18:22:12 <zzo38> itidus21: A TeX document is also a program, so it will be both
18:22:58 <itidus21> is it laying out d&d rules?
18:23:25 <itidus21> i mean uhh.. the tex is just used as a markup language right?
18:23:29 <zzo38> itidus21: No, only the experience points needed for each level. The book only has up to level 20 but this one has as many as will fit on the page.
18:23:41 <itidus21> ya
18:23:47 <itidus21> hmmmm
18:24:51 <zzo38> And there is still more room on the page, so I could add more columns, do you have idea what information to add on one page?
18:25:03 <itidus21> i don't know d&d
18:25:30 <itidus21> also i don't make for a good roleplayer.. i don't like the politics
18:26:32 <itidus21> the whole bit where one can make an ego investment in their character and then set up conditions of winning or losing
18:26:37 <zzo38> Politics?
18:26:44 <itidus21> probably not in d&d
18:27:31 <itidus21> but roleplay especially online
18:27:42 <Vorpal> itidus21, uh?
18:27:53 <Vorpal> itidus21, I'm not familiar with what you mean
18:27:55 <itidus21> like "you have to be descriptive"
18:27:57 <itidus21> oh
18:28:18 <zzo38> Well, we do try to be descriptive.
18:28:42 <itidus21> i have issues thats all
18:28:56 <Vorpal> itidus21, I mean with roleplaying online. In which type of game?
18:29:01 <itidus21> some people use roleplay as an escape from reality as i'm told.. but i can't make that leap
18:29:21 <itidus21> reality has too much gravity for me
18:29:54 <zzo38> I play as monster character... so, that is part of the escape from reality; but I also sometimes use actual physics and so on to resolve a spell, so therefore it is similar to reality even if it isn't
18:30:08 <kallisti> `pastelog plaindromes
18:30:13 <kallisti> `pastelog palindromes
18:30:32 <itidus21> this should be good
18:30:38 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.13749
18:30:58 <itidus21> well... not so good
18:31:34 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.30415
18:31:40 <Vorpal> itidus21, do you not read fantasy?
18:32:04 <itidus21> i haven't... i think that makes it extra difficult to play fantasy
18:32:04 <Vorpal> if you can enjoy fantasy novels then you can probably enjoy RPGs
18:32:22 <Vorpal> itidus21, try playing a non-online RPG?
18:32:26 <Vorpal> skyrim or whatever
18:32:34 <zzo38> And text adventure game is also a computer game similar to a role playing game.
18:32:36 <Vorpal> witcher 2 is rather good, but might be too dark for your tastes
18:33:29 <itidus21> i haven't been corrupted by exposure to the books in the sense that my idea of roleplay is still somewhat free from convention
18:33:41 <Vorpal> zzo38, text adventures usually annoy me. You have to try to guess the commands usually and also I can't make a clear map of the environment in my head.
18:33:45 <itidus21> but i have seen a lot of the types of roleplayers i describe chatting
18:34:05 <Vorpal> itidus21, "corrupted"?
18:34:12 <itidus21> its kind of funny the whole model of the world which have been developed around rpgs
18:34:44 <Vorpal> also eh, RPGs is just an interesting way to pass free the time for me.
18:34:49 <itidus21> each town has a tavern.. in this tavern adventurers sort of..
18:34:59 <Vorpal> itidus21, not really, that is a stereotype
18:35:02 <itidus21> im going to be wrong for a few liens
18:35:15 <Vorpal> itidus21, also you can have RPGs in other settings than fantasy
18:35:27 <Vorpal> fantasy is certainly the most common but sci-fi is rather common as well
18:35:29 <zzo38> Not always in D&D game and stuff, they don't always have a tavern, or whatever
18:35:34 <zzo38> They are all different
18:35:46 <itidus21> ok
18:36:02 <Vorpal> itidus21, you could set an RPG in a contemporary environment easily
18:36:29 <zzo38> Do you like to play multi-class? Do you like to play as monster character? Do you like to do strange thing in game? Sometimes even the referee didn't know you were going to do that, and that make game interesting too?
18:36:47 <itidus21> i don't like competitive role playing anyway
18:36:58 <Vorpal> itidus21, consider Deus Ex: It is an FPS/RPG hybrid set into the relatively near future (something like 50 years or so)
18:37:12 <itidus21> i like cooperative because i have some neuroses which make it difficult to compete
18:37:18 <Vorpal> zzo38, me?
18:37:36 <zzo38> Vorpal: Including, but not limited to, you; yes.
18:37:42 <itidus21> hm
18:37:44 <Vorpal> zzo38, I tend to play computer RPGs mostly
18:37:47 <Ngevd> I'm in that palindromes pastelog a lot...
18:37:56 <Vorpal> zzo38, single player most of the time
18:38:02 <Ngevd> Just for "E, esoteric, ire to see"
18:38:03 <itidus21> zzo38: so rpgs in this sense are not referentially transparent
18:38:11 <zzo38> Computer RPGs are not real role playing games
18:38:18 <Vorpal> zzo38, how so?
18:38:22 <zzo38> itidus21: What do you mean by that?
18:38:35 <itidus21> i mean "Sometimes even the referee didn't know you were going to do that, and that make game interesting too?"
18:38:42 <Vorpal> zzo38, how are they less real than an RPG on pen and paper?
18:38:55 <zzo38> Vorpal: I mean it isn't a role playing game
18:38:58 <Vorpal> zzo38, NWN even uses D&D ruleset for example
18:39:08 <zzo38> That isn't the point
18:39:14 <Vorpal> zzo38, what /is/ the point then?
18:39:21 -!- zzo38 has quit (Remote host closed the connection).
18:39:21 <itidus21> i understand the idea i think, im just playing dumb to flush out the topic
18:39:33 <Vorpal> and uh
18:39:37 <itidus21> but haveing said that i havent done a proper game of d&d
18:39:41 <itidus21> im not playing dumb much
18:40:28 <Vorpal> itidus21, anyway, I quite like computer RPGs. They move at a faster pace than pen & paper RPGs.
18:40:30 <itidus21> just that i dont quite need the concept explained
18:40:44 <itidus21> i like non rpg rpgs the best
18:40:48 <Vorpal> ...
18:41:07 <itidus21> basically, anything made in japan
18:41:08 <elliott> Vorpal: Surely even you can see the dissimlarity of a role-playing game in which very little role-playing is involved.
18:41:27 <itidus21> hmm
18:41:39 <Vorpal> elliott, well that varies between different RPGs. Especially for online RPGs there can be quite a bit or role playing going on
18:41:58 -!- augur has quit (Ping timeout: 240 seconds).
18:42:02 <Vorpal> elliott, and pen&paper RPG can easily devolve into a min-max style game play
18:42:12 <Vorpal> elliott, so no, the difference isn't that large at all
18:42:18 <itidus21> japan have this way of japanifying everything that hits their shores and they certainly managed it for the rpg
18:42:23 <elliott> <Vorpal> elliott, and pen&paper RPG can easily devolve into a min-max style game play
18:42:25 <elliott> Only in Sweden.
18:42:32 <Vorpal> itidus21, anyway you might like Deus Ex: Human Revolution, it is set into the near future, it is a RPG/FPS hybrid but it deals with interesting moral questions.
18:42:49 <Vorpal> elliott, not really. Ever played pen&paper D&D?
18:43:03 <itidus21> Vorpal: yeah my brother has that... i saw him play it.. pretty kick ass world simulation
18:43:09 <Vorpal> I have once. And once I played a pen&paper RPG with GURPS
18:43:20 <Vorpal> itidus21, the texture quality in that game is pretty shit though.
18:43:28 <itidus21> rolls eyes
18:43:34 <Vorpal> itidus21, what?
18:43:50 <itidus21> the graphics thing :P
18:43:52 <Vorpal> itidus21, it is a nice game. But it is obviously a console port.
18:43:57 <itidus21> ahhh
18:44:28 <Vorpal> itidus21, if you play it on a large computer monitor near you you see things in much more detail than on a TV further away
18:44:40 <Vorpal> itidus21, and the result is that it is obviously a console port
18:44:49 <itidus21> im not fussy... my video card sucks
18:45:05 <Vorpal> then it might not be playable. Who knows.
18:45:08 <itidus21> i have intentions to upgrade my video card, however, i still doubt my pc can easily handle it
18:45:11 <Vorpal> try it and see
18:45:14 -!- augur has joined.
18:45:19 <Vorpal> itidus21, how much ram and which CPU?
18:45:29 <itidus21> one moment
18:45:40 <Vorpal> itidus21, I ran it from a slow HDD, only issue was that the loading time was like >half a minute
18:45:49 <Phantom_Hoover> itidus21, can you just type something into IRC for me?
18:45:56 <Vorpal> itidus21, when possible I play games from my SSD
18:45:58 <itidus21> ok
18:46:15 <Phantom_Hoover> "/ignore Vorpal*!*@*"
18:46:22 <Vorpal> Phantom_Hoover, why?
18:46:25 <Vorpal> Phantom_Hoover, why on earth
18:46:34 <itidus21> is it because he keeps saying my name over and over?
18:46:35 <elliott> I gotta concur right now.
18:46:46 <itidus21> vorpal hmm i have an idea...
18:46:49 <Vorpal> oh the highlight thing, sorry, used to high volue channels
18:46:50 <Phantom_Hoover> itidus21, I'll explain once you've done it.
18:46:58 <itidus21> ok
18:47:03 <elliott> Yes, it's most definitely the highlight thing.
18:47:19 <Vorpal> will try to remember it isn't needed
18:47:32 <itidus21> Usage: IGNORE <mask> <types..> <options..>
18:47:32 <itidus21> mask - host mask to ignore, eg: *!*@*.aol.com
18:47:32 <itidus21> types - types of data to ignore, one or all of:
18:47:32 <itidus21> PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL
18:47:32 <itidus21> options - NOSAVE, QUIET
18:47:40 <Phantom_Hoover> Oh, right
18:47:41 <Vorpal> I see you use xchat
18:47:42 <Phantom_Hoover> "/ignore Vorpal*!*@* ALL"
18:47:47 <Vorpal> and don't do it
18:48:03 <Vorpal> I think Phantom_Hoover is being a jerk here
18:48:10 <itidus21> ive done it cos i have to see where this is going :P
18:48:16 <Phantom_Hoover> Excellent.
18:48:21 -!- Gregor has set topic: I'm not a boat, I'm a really, really beautiful cheese grater | http://codu.org/logs/_esoteric/.
18:48:30 <Vorpal> you could easily just say you did it and not do it
18:48:34 <Phantom_Hoover> Vorpal is unbearable, and you haven't been around long enough to fully understand his unbearability.
18:48:39 -!- MSleep has changed nick to MDude.
18:48:39 <Ngevd> Hehe
18:48:42 <Vorpal> Phantom_Hoover, oh shut up
18:48:53 <Ngevd> Sqrt(-Garfield) 926
18:48:55 <itidus21> ok unignored
18:49:01 <Phantom_Hoover> -_-
18:49:08 <itidus21> i will slow down..
18:49:13 <elliott> I love #esoteric.
18:49:16 <Vorpal> and I think Phantom_Hoover is while not unbearable, quite close. :P
18:49:22 <Vorpal> and he is also quite a jerk
18:49:30 <Vorpal> (sometimes at least)
18:50:01 <Sgeo> I think what I want is Trex
18:50:10 <itidus21> its not that i don't like mathematics.. its just that my knowledge of coding is way out of step with my knowledge of math
18:50:12 <Vorpal> anyway, itidus21, if you have a reasonably modern CPU (say core 2 duo or such) and like 4 GB RAM then you can probably play most games.
18:50:20 <Ngevd> Phantom_Hoover, am I still on your ignore list?
18:50:20 <Vorpal> (given an upgraded GPU)
18:50:27 <itidus21> even though i'm not a good coder.. i'm an atrocious mathematician
18:50:37 <Phantom_Hoover> Ngevd, no, although you're on probation until you renounce Smith.
18:50:48 <Vorpal> Ngevd, who is this smith?
18:51:18 <Ngevd> Matt Smith, actor of the eleventh (not counting Hammer films and audiobooks, etc) Doctor from the TV Serieses Doctor Who
18:51:27 <Vorpal> oh haha
18:51:42 <Vorpal> and I guess PH didn't like him
18:51:43 <elliott> Ngevd: "serieses"
18:51:43 <Vorpal> okay
18:51:45 <itidus21> Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz
18:51:45 <itidus21> ... 2gb ram
18:51:47 <elliott> That gets you another ignore.
18:52:05 <Vorpal> well okay, ram is quite cheap though
18:52:08 <Ngevd> elliott, I was emphasising the plural-ness for effect
18:52:16 <Ngevd> Because I am a /poet/
18:52:54 <Vorpal> the CPU is probably at the lower end as well.
18:53:26 <Vorpal> but I don't think Deus Ex: HR would cause much of a problem for that, you might not be able to run at max settings
18:53:51 <Vorpal> check the official system requirements though, and note that they probably err on the side of caution to avoid pissed off customers
18:54:36 <itidus21> i am actually so awful at math that i can't transpose algebra expressions made up only of the alphabet of "=", "+", "*", "/", "-", "x", "^", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
18:54:51 <itidus21> i can get some of them.. but the problem is i don't get all of them
18:54:57 <Vorpal> (system requirements is not an exact science, apart from the required disk space everything is pretty hard to calculate and you can't really test on every possible configuration)
18:55:18 <Vorpal> itidus21, try base 2, that reduces the alphabet ;P
18:55:40 <itidus21> thats the best way i can explain the level i'm at
18:55:55 <itidus21> so i try to "dodge" algebra
18:56:25 <Phantom_Hoover> Transpose?
18:56:29 <itidus21> yup
18:56:38 <Vorpal> I was wondering about that too.
18:56:40 <itidus21> trans as in change.. not sure about the pose
18:56:43 -!- monqy has joined.
18:56:47 <itidus21> rewrite
18:56:59 <itidus21> solve?
18:57:05 <itidus21> i dunno
18:57:14 <itidus21> find a variable :)
18:57:22 <Vorpal> Phantom_Hoover, anyway if you don't like me why don't /you/ simply ignore me? Rather than try to get other people to do so?
18:57:35 <Phantom_Hoover> itidus21, that's pretty damn difficult in the general case.
18:57:37 <itidus21> i think i mean rewrite to x=[...]
18:58:16 <kallisti> question: is a set of all possible strings in an alphabet of N symbols isomorphic to the set of all strings in ALL possible alphabets?
18:58:30 <elliott> What.
18:58:50 <Phantom_Hoover> wat
18:58:51 <monqy> what do you mean isomorphic
18:58:57 <itidus21> Phantom_Hoover: but even for expressions with only 1 variable..
18:58:59 <kallisti> bijective function.
18:59:04 <itidus21> no wait that can't be right
18:59:05 <Phantom_Hoover> "duh"
18:59:10 <itidus21> maybe 2 or 3.. i dunno
18:59:14 <monqy> and what do you mean all possible alphabets
18:59:18 <kallisti> all of them
18:59:20 <kallisti> >_>
18:59:28 <monqy> very helpful
18:59:37 <Phantom_Hoover> Do you mean finite strings on finite alphabets?
18:59:40 <kallisti> yes
18:59:45 <Phantom_Hoover> "duh"
18:59:59 <kallisti> "okay"
19:00:00 <elliott> ^ul (what)S
19:00:00 <fungot> what
19:00:47 <kallisti> well I mean I know a finite string with a finite N-sized alphabet has a bijective function to any other set of finite strings with a finite M-sized alphabet.
19:01:05 <kallisti> but I wasn't sure if there was a bijective function from that set of strings to "all the other finite-alphabet strings ever"
19:01:34 <Ngevd> I'm pretty sure infinite-length strings are uncountable
19:01:53 <elliott> By the way, that http://i.imgur.com/pAy4z.png review that I think Deewiant linked is fake: http://www.amazon.com/gp/cdp/member-reviews/A15T4V4O8P803T/ref=cm_pdp_rev_all?ie=UTF8&sort_by=MostRecentReview :(
19:01:59 <itidus21> so, i am here with only an elementary knowledge of math(s) and so it's more than a little strange
19:02:29 <elliott> "I modified this to fit on my oxygen tank and it ended up causing a small fire. Do not buy" "This connector is terrible. I need to connect a SATA connector to a old style molex 4 pin CD drive, but this connector does the opposite. Piece of junk and a waste of money" "I took a job that required me to make device drivers for some kind of weird thing with some blinking lights on it. I never made a driver before, but I am good at using Office and stu
19:02:29 <elliott> ff so I told them I knew C++ and read a bit about it and was able to BS the interview. So I got this book and tried to understand how to make my drivers, but I couldn't and I got fired after 6 weeks. NOT RECOMMENDED for driver makers."
19:02:38 <elliott> "Nothing is more fun than getting trashed and ripping around the lake on my boat. This song reminds me of that!"
19:02:44 <kallisti> but I guess it makes sense considering that binary can be used to represent all other strings.
19:02:46 <elliott> Actually I suppose they could just be a very strange person who also apparently flies.
19:02:49 * elliott will hold out hope.
19:02:54 <monqy> B. Meowsic Keyboard
19:02:55 <monqy> good good
19:02:56 -!- pikhq has joined.
19:02:58 <kallisti> I just don't know the specific mapping
19:03:01 <itidus21> i didnt actually anticipate math(s) at all on the topic of esolangs.. i had gotten this far without ever encountering the theory of computation
19:03:09 -!- pikhq_ has quit (Ping timeout: 248 seconds).
19:03:49 <elliott> itidus21: This was a place devoid of LIGHT and REASON before we all grew up and became REAL* MATHEMATICIANS*
19:03:51 <elliott> *fake
19:03:53 <elliott> *CS poseurs
19:03:57 <Vorpal> Phantom_Hoover, anyway if you don't like me why don't /you/ simply ignore me? Rather than try to get other people to do so?
19:04:22 <Vorpal> Phantom_Hoover, if you ever talk to me again I hope you answer that question :)
19:04:34 <Ngevd> Vorpal, consider that he may be ignoring you
19:04:36 <Vorpal> (if you don't then I will just assume you did in fact finally ignore me)
19:04:40 <kallisti> Vorpal: because he's better than you, obviously.
19:05:00 <Vorpal> Ngevd, my next line took care of that possibility yes
19:05:15 <Vorpal> kallisti, so just because someone is better than someone else they should be arrogant about it?
19:05:20 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
19:05:21 <Vorpal> kallisti, that doesn't seem right to me
19:05:25 <Ngevd> Hmm...
19:05:33 <Vorpal> Ngevd, okay that is a third possibility
19:05:39 <Ngevd> Maybe Edinburgh has blown up in a ball of fire
19:05:39 <kallisti> Vorpal: well, in #esoteric, that seems to be the rule.
19:05:55 <itidus21> elliott: next you will probably tell me that this is a room of novices not fit to clean the shoes of the leading guys in the field
19:05:57 <itidus21> or......
19:05:59 <Vorpal> kallisti, anyway I don't think he is better than me. Better at some topics, sure. Worse at other ones probably.
19:06:06 <kallisti> Vorpal: well I didn't really mean that...
19:06:06 <itidus21> are the so called leading guys in the field the ones with the biggest supercomputers
19:06:15 <kallisti> it was kind of not totally serious. I don't have a metric with which to value the worth of human beings.
19:06:17 <Vorpal> kallisti, but I don't think a person can be intrinsically better than another one
19:07:04 <Vorpal> kallisti, fair enough, but I think the implications of it being taken seriously are worth considering
19:07:11 <itidus21> eh.. im trolling at this point
19:07:14 <kallisti> Vorpal: yes that was kind of my point.
19:07:16 <Vorpal> itidus21, :)
19:07:55 <itidus21> the way i see it.. you can tell what the state of the art is by what the general populace has access to
19:07:58 <Vorpal> <itidus21> are the so called leading guys in the field the ones with the biggest supercomputers <-- not really no. Supercomputers aren't required for esolangs
19:08:42 <Vorpal> <itidus21> the way i see it.. you can tell what the state of the art is by what the general populace has access to <-- for what? Computers?
19:08:43 <Ngevd> Esolangs are more of an art than a mathsy thing
19:08:43 <elliott> <Vorpal> Phantom_Hoover, if you ever talk to me again I hope you answer that question :)
19:08:43 <itidus21> i don't think that the esoteric knowledge held by military mad scientists really is very practical
19:09:06 <Vorpal> elliott, well obviously if he timed out I will agree he didn't receive it
19:09:08 <kallisti> killing people is practical.
19:09:10 <elliott> Vorpal: You really need to stop using :) like that all the time, it gets tired even quicker than usual when you do it all the time.
19:09:22 <kallisti> elliott: :)
19:09:29 <Vorpal> kallisti, indeed :)
19:09:33 <elliott> kallisti: I thought you were ignoring me.
19:09:42 <Vorpal> he totally should
19:09:45 <Vorpal> (not really)
19:09:51 <elliott> Yes, he should.
19:09:56 <Vorpal> oh?
19:10:04 <itidus21> basically, i think if most people don't have access to it then it can be ignored
19:10:17 <monqy> what is access
19:10:27 <kallisti> monqy: monqy denied access to the meaning of access.
19:10:29 <Vorpal> itidus21, very much depend on what you are trying to accomplish.
19:10:36 <itidus21> monqy: im sure bill gates has a secret tech room
19:10:44 <itidus21> where he has billion$ toys
19:10:48 <monqy> i too have a secret tech room
19:10:53 <Vorpal> anyway I need to sleep. Exam tomorrow. Computer graphics. Quite a fun topic.
19:11:19 -!- roper has joined.
19:11:36 <Ngevd> `welcome roper
19:11:41 <HackEgo> roper: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
19:11:53 <roper> guelcon
19:11:57 <monqy> hi
19:12:13 <itidus21> hm
19:12:15 <roper> low
19:12:29 <kallisti> what are the chances of me learning group theory in a topology class?
19:12:58 <Ngevd> Mathematical or geographic topology?
19:12:59 <roper> 0/0
19:13:06 <kallisti> maths
19:13:12 <kallisti> roper: ah good
19:13:27 <roper> :)
19:13:29 <kallisti> that's basically "I don't know"
19:13:36 <Ngevd> I reckon roper's actually slightly further ahead in time to us
19:13:48 <roper> oopoo
19:13:50 <Ngevd> roper> low
19:13:59 <monqy> roper lives in bizarro world
19:14:06 <roper> :)
19:14:18 <roper> car
19:14:27 <monqy> yes
19:14:50 <roper> no car
19:14:54 <kallisti> no yes
19:14:55 <monqy> :(
19:15:04 <elliott> cdr
19:15:11 <roper> flac
19:15:16 <monqy> calf
19:15:20 <Ngevd> midi
19:15:20 <monqy> moo
19:15:28 <roper> unknown
19:15:32 <kallisti> undef
19:15:37 <roper> redef
19:15:45 <Ngevd> Er... fed?
19:15:52 <roper> feed
19:16:12 <Ngevd> beef
19:16:17 <kallisti> blessed hashref of blessed globrefs
19:16:29 <roper> too much
19:16:35 <Ngevd> Not enough!!!
19:16:37 <monqy> never enough
19:16:39 <Ngevd> !!!
19:16:41 <monqy> !
19:16:42 <Ngevd> !!!!!!
19:16:45 <roper> nevermind
19:16:50 <kallisti> > repeat '!'
19:16:51 <lambdabot> "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!...
19:17:03 <monqy> always mind
19:17:06 <roper> %
19:17:07 <monqy> monqy motto
19:17:14 <Ngevd> 5
19:17:22 <roper> true.
19:17:27 <kallisti> that's numberwang!
19:17:34 <Ngevd> !numberwang 5
19:17:37 <EgoBot> That's numberwang!
19:17:46 <roper> well
19:17:47 <itidus21> roper: i just want to clarify this is the room of esoteric computer programming languages, not occult esoteric
19:17:54 <elliott> wrong its super occult
19:17:59 <elliott> supermax occult++ full
19:18:08 <roper> ioihgfdddf
19:18:11 <itidus21> you may know this im just making doubly clear so your time is not wasted
19:18:21 <roper> too much
19:18:27 <elliott> `addquote <roper> ioihgfdddf
19:18:30 <HackEgo> 800) <roper> ioihgfdddf
19:18:31 <monqy> good
19:18:32 <roper> rephtrase
19:18:35 <elliott> best 800 quote
19:18:41 <elliott> `addquote <roper> rephtrase
19:18:46 <HackEgo> 801) <roper> rephtrase
19:18:47 <elliott> best 801 quote
19:18:52 -!- Vorpal has quit (Ping timeout: 276 seconds).
19:18:57 <roper> listen
19:19:00 <monqy> ok
19:19:01 <elliott> ok
19:19:07 <roper> we should
19:19:10 <elliott> ok
19:19:12 <Ngevd> ^ul (~:S~:^)(!):S~:^
19:19:12 <fungot> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ...too much output!
19:19:14 <roper> implement
19:19:17 <elliott> ok
19:19:17 <monqy> yes
19:19:23 <monqy> we should implement
19:19:23 <elliott> yes
19:19:26 <elliott> yes ok
19:19:30 <monqy> good good
19:19:32 <Ngevd> yes
19:19:38 <roper> a language _
19:19:45 <kallisti> perl JIT yes
19:19:47 <monqy> brilliant
19:19:53 <Ngevd> outstanding
19:20:02 <kallisti> standoutish
19:20:06 <elliott> ok
19:20:09 <roper> autotopoptimised
19:20:21 <Ngevd> Auto top optimised?
19:20:22 <kallisti> I'm agree.
19:20:27 <roper> ues
19:20:28 <Ngevd> I'm angree
19:20:30 <roper> y
19:20:39 <Ngevd> -n
19:20:41 <roper> well
19:20:48 <roper> ues i think
19:20:59 <Ngevd> "yes" is probably what you want
19:21:05 <roper> y
19:21:09 <Ngevd> :)
19:21:15 <kallisti> Ngevd: nh
19:21:24 <kallisti> ues si ues
19:21:29 <elliott> kgvjl
19:21:34 <roper> sumamoito is the most inrfficient
19:21:44 <itidus21> lol
19:21:53 <roper> build -O
19:21:54 <monqy> oh no
19:21:58 <kallisti> mount kilimanjaro
19:21:58 <monqy> we must
19:22:01 <monqy> refficientise it
19:22:05 <monqy> i mean
19:22:08 <Ngevd> Atrapado?
19:22:08 <roper> sure
19:22:09 <monqy> rfficientise it
19:22:13 <roper> yes
19:22:28 <roper> yres
19:22:42 <elliott> http://esoteric.voxelperfect.net/w/index.php?title=Vowels&curid=4086&diff=26989&oldid=24085
19:22:45 <roper> on screen keyvoard
19:22:50 <Deewiant> elliott: So how'd the SMT'ing go
19:22:50 <kallisti> Ngevd: ayudame!
19:22:51 <elliott> new vowels for new breakfast homesteads
19:23:10 <roper> sorry
19:23:17 <elliott> Deewiant: It got into some kind of loop; I think my gcd definition was wrong or something
19:23:21 <elliott> Maybe I'll look at it some more tomorrow
19:23:25 <roper> battery: 15
19:23:48 <Ngevd> SMT?
19:23:49 <itidus21> vowels looks cool
19:23:53 <roper> i have some optimizations alteady
19:24:09 <elliott> Ngevd: so many terraces
19:24:19 <roper> like add on hardware
19:24:27 <Ngevd> In an esoteric programming language, optimization is not recommended
19:24:29 <elliott> (satisfiability modulo theories)
19:24:37 <kallisti> Ngevd: I am completely disagree
19:24:56 <itidus21> I am completely disangree
19:24:58 <roper> yrs but we ned tine final implementation
19:25:09 <itidus21> ^tune
19:25:10 <itidus21> :D
19:25:14 <Ngevd> Well, adding on of features to make shorter source code beyond what is necessary for Turing-completeness
19:25:14 <itidus21> sorry
19:25:16 <roper> :)
19:25:19 <Ngevd> Unless you're befunge
19:25:23 <kallisti> Ngevd: nope wrong
19:25:38 <kallisti> perl best esolang fro example
19:25:38 <Ngevd> I have controversial opinions
19:25:43 <roper> source code unchanged
19:25:43 <ais523> Ngevd: you're discussing tarpits there
19:25:47 <ais523> not all esolangs are tarpits
19:25:47 <Ngevd> True
19:25:53 <elliott> im houses
19:26:08 <ais523> but most of the better ones are, because good esolangs are there to convey a new idea, and a tarpit's usually the clearest way to do that
19:26:11 <kallisti> best fro example
19:26:14 <Ngevd> SumaMoito is, however, a tarpit
19:26:22 <Ngevd> "SumaMoito is a family of languages that aims to include minimal Turing-complete languages with a particular style."
19:26:27 <kallisti> ais523: Haskell isn't very tarpitty. maybe in Core.
19:26:27 <Ngevd> 3 tarpits, rather
19:26:37 <kallisti> ais523: and also conveys some new ideas.
19:26:41 <roper> eg hardware-add ÷÷ sumamoito add
19:26:50 <kallisti> ais523: well... hmmm
19:26:51 <kallisti> maybe not.
19:26:58 <elliott> '/'/'/'''''''''/
19:27:03 <ais523> hmm, are any of the main ideas in Haskell new in Haskell? I thought Haskell was busy codifying them and using them well, not inventing them
19:27:12 <kallisti> probably.
19:27:17 <kallisti> I don't know where they originate, except for ML.
19:27:22 <kallisti> and lambda calculus
19:27:38 <roper> collapde-afd
19:27:39 <Ngevd> FORTRAN
19:27:46 <kallisti> Haskell is kind of a synthesis of already existing ideas, I guess.
19:28:03 <ais523> IIRC the reason Haskell was invented was that so many people were trying to make lazy functional langs all at once
19:28:06 <ais523> and they decided to join forces
19:28:06 <olsner> Ngevd: yes, Haskell is based on FORTRAN
19:28:06 <elliott> not really
19:28:09 <elliott> yeah what ais523 said
19:28:18 <ais523> (not sure if "pure" was in there from the start, or added later)
19:28:25 <elliott> basically pure non-strict languages were just coming into existence
19:28:32 <elliott> and everyone had their own dialect
19:28:37 <elliott> there was miranda and i think lazy ml etc.
19:28:37 <roper> sumamoito add is on hardware add is slightly more than ologn
19:28:42 <elliott> thus the haskell committee
19:28:57 <ais523> elliott: I'm actually thinking that we need a pure total functional language
19:28:58 <roper> mm
19:29:04 <elliott> ais523: the typeclass system is a haskell innovation though I think
19:29:10 <ais523> maybe with the ability to use partiality under controlled circumstances
19:29:16 <elliott> and probably Haskell's most prominent added feature
19:29:20 <elliott> ais523: meh, that already exists
19:29:28 <ais523> sure, total languages can't express anything, but the things they can they're better for
19:29:40 <elliott> yeah yeah
19:30:05 <roper> transform languahe features to match hardware fearures
19:30:07 <ais523> and if a language is both total and pure, evaluation strategy is irrelevant
19:30:17 <ais523> you can use call-by-telephone and it still works just fine
19:30:23 <kallisti> interestingly, some definitions of weak typing count ad-hoc polymorphism as weak typing.
19:30:28 <roper> :)
19:30:31 <elliott> ais523: i'm not sure whether you think you're stating non-obvious things or not :P
19:30:56 <ais523> elliott: I think it's obvious, and yet people don't care about it anyway
19:31:11 <elliott> sure they do
19:31:16 <kallisti> roper: yes compilers that compile to machine languages are good at that.
19:31:27 <roper> yes
19:31:43 <roper> but collapse all language features?
19:31:50 <kallisti> ais523: what about call-by-nothing evaluation?
19:31:56 <kallisti> where you do nothing isntead of evaluate.
19:31:57 <Deewiant> ais523: Did you settle on whether Funge-98 is an esolang?
19:32:01 <roper> we nedd an uncollapsed language
19:32:14 <ais523> Deewiant: I think it isn't, but I also think I can't justify my claim in terms that other people will understand
19:32:19 <ais523> so I'm not going to bother trying to argue the point
19:32:21 <kallisti> roper: depends on what you mean by collapse
19:32:37 <Deewiant> ais523: Fair enough I guess.
19:32:41 <roper> reduce to hardware operations
19:32:42 -!- pikhq_ has joined.
19:32:45 <kallisti> roper: compiling a language doesn't remove its features, it just implements them a certain way.
19:32:58 -!- pikhq has quit (Ping timeout: 244 seconds).
19:32:59 <itidus21> i wonder what he has in mind
19:33:02 <roper> sure$
19:33:11 <elliott> ais523: I think Funge-98 is an esolang, FWIW (and I don't think it's particularly esoteric myself).
19:33:24 <Deewiant> What's the definition of an esolang you generally use?
19:33:37 <elliott> Deewiant: Who, me or ais523?
19:33:47 <ais523> Deewiant: a language for which writing a fully-featured standard library would be a waste of time
19:33:54 <Deewiant> elliott: Both, I think, which is why I didn't address it.
19:34:00 <elliott> ais523: Terrible definition IMO
19:34:03 <roper> line wrap not allowed. q
19:34:13 <monqy> hwat
19:34:14 <monqy> q
19:34:16 <kallisti> a language for which defining what esolang means would be a waste of time.
19:34:19 <ais523> elliott: or, not so much waste of time, but people not thinking it's necessary
19:34:38 <roper> 40 chars
19:34:46 <roper> kimit
19:35:00 <Deewiant> ais523: So basically "a language which is hardly used at all, or only used as a joke" or something thereabout?
19:35:00 <Ngevd> A language designed to entertain rather than to be used for any practical task is my definition
19:35:18 <elliott> Deewiant: Well, obviously idiosyncrasy relative to the generalised status quo factors into it, as well as novelty and generally not being optimised for /use/ in design -- but the main factor I use is authorial intent, because it's inherently subjective and there are good reasons for going by it.
19:35:20 <itidus21> what if its a language designed for only 1 user?
19:35:28 <roper> o am drinking water
19:35:34 <olsner> I think entirely made-for-practical-use languages can be esolangs too, e.g. bancstar
19:35:42 <roper> battery 14
19:35:44 <ais523> elliott: but I declare every language I invent an esolang, regardless of what it's for
19:35:47 <elliott> Deewiant: e.g., Ursula, however weird it is by any metric, is not an esolang, because it was not intended as an esolang, and because it was designed for being used
19:35:49 <ais523> hmm, would you consider OIL an esolang?
19:35:51 <olsner> but of course it's a kind of failure for a practical language to get that status
19:35:54 <ais523> to me, it's just a DSL
19:36:05 <itidus21> whats a DSL?
19:36:12 <olsner> and ursala!
19:36:26 <elliott> ais523: (a) Intent isn't quite declaration, and I don't necessarily take declarations I think are unreliable at face value. (b) I know barely nothing about OIL.
19:36:29 <ais523> itidus21: domain-specific language
19:36:36 <olsner> hmm, those could be called "accidental esolangs" perhaps?
19:36:53 <ais523> elliott: http://c.intercal.org.uk/manual/dlbvn76f.htm#Optimizer-Idiom-Language
19:37:02 <elliott> Deewiant: But Befunge-98 is, both for reasons of idiosyncrasy (its syntax and very oddball tied-to-syntax control structure), and very clear intent of esoteric nature.
19:37:03 <ais523> it's a language invented for the purpose of implementing INTERCAL optimisers
19:37:11 <ais523> it's pretty good at that, and really bad at anything else
19:37:13 <elliott> Even if Befunge-98 is nicer to program in than Ursula.
19:37:22 <kallisti> esolangs are languages that make defining what esolang means difficult.
19:37:42 <Deewiant> elliott: that's the kind of definition I'd use as well.
19:37:45 <roper> wesay this is equivalent to
19:37:52 <elliott> ais523: Glancing at it and combining with what I know, I wouldn't say it's an esolang, but I'd say it's clearly intended to be fairly weird.
19:38:00 <roper> and we optimisr to
19:38:36 * kallisti has seen some people claim that C is an esolang.
19:38:38 <elliott> Deewiant: Another good reason to go by what the author says is that it avoids offending authors of serious languages when you call their work something with the connotations esolang has, and avoids offending authors of esolangs when you dare to suggest their work doesn't meet the criteria :P
19:38:40 <roper> like
19:38:41 <kallisti> also Haskell.
19:38:54 <roper> dgffgg %% add
19:38:57 <Deewiant> elliott: Heh, yes.
19:38:58 <elliott> People like to say "lolololol <language> is an esolang".
19:38:59 <roper> then
19:39:02 <elliott> Especially Perl, Java, etc.
19:39:05 <elliott> But that's just noise.
19:39:07 <Ngevd> I first encountered Haskell on this channel
19:39:15 <roper> we transform things to dgffgg
19:39:19 <Deewiant> elliott: I might say that "not being optimised for /use/ in design" counts as authorial intent, though.
19:39:22 -!- sebbu has quit (Read error: Connection reset by peer).
19:39:28 <Deewiant> As long as that includes all kinds of use.
19:39:32 <Gregor> !languages
19:39:41 <roper> :$
19:39:43 <Gregor> Err,
19:39:44 <Gregor> !help languages
19:39:45 <EgoBot> ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
19:39:48 -!- sebbu has joined.
19:39:48 -!- sebbu has quit (Changing host).
19:39:48 -!- sebbu has joined.
19:39:50 <elliott> Deewiant: True, but I meant more direct intent; e.g. putting something on esolangs.org, or obvious presentation of the language as a serious tool on a website.
19:39:51 <ais523> elliott: so would you say LOLCODE is intended to be an esolang?
19:39:55 <Gregor> ^^^ Herp durp I call non-esolagns eso too
19:39:56 <Deewiant> E.g. BANCStar is not an esolang, it's just an ASCII encoding of something that people have evidently unfortunately programmed in.
19:40:02 <ais523> I can't believe its authors had heard of esolangs, otherwise they wouldn't have invented something so banal
19:40:14 <ais523> Deewiant: BANCStar's basically an asm
19:40:18 <ais523> just an insane one
19:40:18 <elliott> ais523: I don't think the inventors of LOLCODE are competent enough to intend one way or another.
19:40:24 <Deewiant> ais523: Yes.
19:40:30 <ais523> elliott: that's pretty much my argument
19:40:34 <elliott> ais523: But I definitely recall the author didn't know of esolangs.
19:40:40 <kallisti> for Gregor an esolang is any language that's not C, assembly, C, cxx (???), forth, or sh
19:40:48 <kallisti> also C
19:40:53 <ais523> gah: http://esoteric.voxelperfect.net/wiki/Vowels
19:40:55 <elliott> LOLCODE probably is an esolang based on its sliver of silly syntax, but it's a really bad one.
19:40:55 <Deewiant> I would say that LOLCODE is intended as an esolang.
19:41:17 <Deewiant> Even if the author(s) didn't know the term or other such languages, it's clearly got a similar intent.
19:41:26 <fizzie> ^ul ((!)S:^):^ it's the age of minimalism, simplify!
19:41:26 <fungot> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ...too much output!
19:41:30 <elliott> Deewiant: BANCStar is sort of an honorary esolang, in that it doesn't really count as one, but who the hell else is going to take it under their wing?
19:41:34 <ais523> the category of languages that includes Vowels was done better by Sorted!
19:41:41 <ais523> which will probably never be beaten in that category
19:42:03 <Deewiant> elliott: It's just an assembly language, IMO.
19:42:17 <elliott> Deewiant: Yeah, it's more of a community sense in which it counts as one than a language sense :P
19:42:19 <ais523> you'd probably discover that x86 microcode is just as insane
19:42:26 <elliott> Deewiant: It lacks the mnemonics to be an assembly language, though, I think.
19:42:29 <ais523> or, hmm, it probably differs between manufacturers
19:42:31 <ais523> but you know what I mean
19:42:34 <kallisti> esolangs are languages that are members of the set of esolangs.
19:42:38 <Deewiant> elliott: Then you can call it an ASCII-encoded object format.
19:42:45 <roper> glue language
19:42:52 <kallisti> lol gluethon
19:42:54 <elliott> Anyway, I don't really care all that much whether something is an esolang or not; the main thing it's relevant for is to know how to categorise articles on the wiki.
19:43:29 <ais523> "Sorted! is bilingual. It can understand both english and german code. To my knowledge, Sorted! is the only programming language that can do this, in the world." <--- someone should mention INTERCAL
19:43:33 <ais523> (English/Latin)
19:43:50 <roper> a sumamoito loop is optimised by some add
19:43:52 <fizzie> Gregor: What's EgoBot's '!forth', gforth?
19:43:54 <Deewiant> If "the wiki" is the esolang wiki, then isn't being on the wiki something that makes it an esolang? :-P Except for joke articles like Perl (which should be categorized as a joke article or equivalent).
19:44:11 <roper> nnested
19:44:32 <roper> unnested
19:44:38 <monqy> ununested
19:44:41 <roper> uunnested
19:44:47 <roper> uuencoded
19:44:51 <elliott> Deewiant: http://esolangs.org/wiki/Forth
19:44:57 <Gregor> fizzie: Yeah, gforth.
19:45:16 <elliott> Deewiant: The question of whether only esolangs can be articles has been brought up before; there's consensus that the wiki is for articles of relevant interest to esoteric programmers.
19:45:28 <elliott> Deewiant: That includes oddball things like Joy and whatnot.
19:45:33 <Deewiant> elliott: I'd have a "category: non-esoteric", then.
19:45:36 <fizzie> !forth gforth type
19:45:37 <EgoBot> ​\ in file included from *OS command line*:-1 \ /tmp/input.1112:1: Undefined word \ >>>gforth<<< type \ Backtrace: \ $7F2761A86A68 throw \ $7F2761A9CCE0 no.extensions \ $7F2761A86D28 interpreter-notfound1
19:45:41 <fizzie> Hmm.
19:45:47 <elliott> Also http://esolangs.org/wiki/Chalcraft-Greene_train_track_automaton.
19:45:54 <elliott> Deewiant: Negated categories? Nah.
19:46:01 <elliott> Deewiant: [[Category:Not 1999]]
19:46:04 <itidus21> i dont understand how befunge98 could possibly not be esoteric
19:46:18 <Deewiant> elliott: Well, "category: esoteric" would be fine as well, just more work to keep up-to-date. :-P
19:46:33 <Deewiant> And also seemingly redundant with the topic of the site.
19:46:33 <elliott> Deewiant: http://esolangs.org/wiki/Category:Languages
19:46:45 <MDude> It would be nice to be able ot perform boolan operations on categories in wikis.
19:46:47 <Deewiant> elliott: That doesn't say "esoteric languages".
19:46:52 <Deewiant> elliott: Forth is a language.
19:46:59 <elliott> Deewiant: Yes, but it's only for esolangs, just like Forth was misplaced in [[Category:Before 1993]].
19:47:12 <elliott> Adding "esoteric" to everything would be too many words. :p
19:47:22 <roper> battry 13
19:47:35 <elliott> !forth hi
19:47:36 <EgoBot> ​\ in file included from *OS command line*:-1 \ /tmp/input.1367:1: Undefined word \ >>>hi<<< \ Backtrace: \ $7FF11B654A68 throw \ $7FF11B66ACE0 no.extensions \ $7FF11B654D28 interpreter-notfound1
19:47:36 <Deewiant> elliott: Put it in the description of that category, then. :-P
19:48:07 <itidus21> here is my question for you.. would you pay someone a salary to code in befunge98?
19:48:14 <itidus21> fsvo you
19:48:17 <Deewiant> I'd do it but I can't be bothered to make a wiki account just for that, and I don't want to do it anonymously.
19:48:48 <elliott> Deewiant: Yeah, if you did it anonymously your vital contribution of "Esoteric" would be lost to the sands of time.
19:49:00 <elliott> It might even not end up on your tombstone.
19:49:04 <elliott> HERE LIES DEEWIANT
19:49:06 <elliott> "ESOTERIC"
19:49:14 <roper> i only need bread and water
19:49:24 <Deewiant> elliott: Something like that, yes.
19:49:26 <elliott> Actually "ESOTERIC" would be a badass epitaph.
19:49:29 <fizzie> !forth : gfv s" gforth" environment? if type then ; gfv
19:49:30 <EgoBot> 0.7.0
19:49:33 <fizzie> Okay, right.
19:49:35 <elliott> Not epitaph.
19:49:37 <elliott> Is it epitaph?
19:49:48 <elliott> Deewiant: Anyway, maybe tomorrow.
19:49:53 <Ngevd> There should be more esolang collabs
19:50:03 <monqy> abcdef
19:50:09 <fizzie> (Didn't notice it was an environment-query thing and not a word.)
19:50:14 <Ngevd> abcdef...g
19:50:47 <Deewiant> elliott: What's happening today?
19:51:17 <roper> the end of the world approaches
19:51:25 <elliott> Deewiant: I'm tired.
19:51:26 <monqy> rip future world
19:51:29 <elliott> And lazy.
19:51:57 <roper> 1 second per second
19:52:04 <monqy> oh no
19:52:18 <roper> no exit
19:52:24 <monqy> :(
19:52:35 <roper> quantum language
19:52:38 <itidus21> RIP future world ,~ESOTERIC~`
19:52:42 <elliott> roper: hi
19:52:51 <roper> hi elliott
19:52:54 <Deewiant> elliott: Want to tell me about the bleeding edge when it comes to testing C libraries? Anything QuickCheck-like for C? Is TAP still the harness of choice?
19:53:08 <elliott> Why do we travel through time at 1 second per second?, page 1 http://www.abovetopsecret.com/forum/thread551324/pg1
19:53:11 <fizzie> !forth s" gforth" environment? [if] type [then] \ simplify!
19:53:12 <EgoBot> 0.7.0
19:53:23 <elliott> Deewiant: You're picking me due to my inexperience, right?
19:53:34 <elliott> Deewiant: Something like QuickCheck seems ill-suited to C.
19:53:38 <elliott> Not many C functions are pure.
19:53:42 <elliott> Fuzz testing seems like the closest thing.
19:53:46 <fizzie> (Now it doesn't need to be in a separate dummy word just because if is a compile-only word.)
19:54:04 <elliott> fizzie: Now implement Befunge.
19:54:22 <fizzie> elliott: I have a gforth interpreter (for -93) already, but it won't fit on one line.
19:54:23 <elliott> Wow, TAP dates back to 1987.
19:54:31 <elliott> fizzie: Yes, that's why you have to do it again.
19:54:32 <elliott> Also -98.
19:54:37 <elliott> (Also EgoBot takes URLs.)
19:54:46 <Deewiant> Fuzz testing is pretty much the same thing.
19:54:48 <fizzie> It probably has bitrotted away anyway.
19:54:48 <elliott> Deewiant: Oh! There's Falderal. :)
19:55:04 <elliott> (http://catseye.tc/projects/falderal/)
19:55:07 <fizzie> Also it asks for which file to load. But maybe I could hardcore an interesting Befunge-93 program in. Are there any?
19:55:21 <Deewiant> I'm just wondering about good software for doing it, not just "cat /dev/random | test program".
19:55:53 <fizzie> Man, be.fs is like the worstest. The 2003 fizzie should be shot.
19:56:14 <elliott> fizzie: He was cool!!! he used lowercase
19:56:28 <fizzie> I can see that, all the comments in this are in lowercase.
19:56:55 <elliott> Deewiant: I bet you're not even *considering* Falderal. :p
19:57:15 <Deewiant> elliott: "doctests for DSLs" isn't really what I'm after. :-P
19:57:37 <elliott> Deewiant: Well, you could make it more-or-less work like TAP except slightly awkwarder. :p
19:58:20 <Deewiant> So, extra work to do something in an awkwarder way than an alternative... I'm not considering it any more now, at least.
19:58:43 <elliott> Deewiant: Has anyone ever told you you're BOERING?
19:59:14 <Deewiant> elliott: Hey, you could be my fuzzer. Write me a battery of Funge-Space tests.
19:59:49 <elliott> Deewiant: Okay.
20:00:00 <elliott> Deewiant: I'm not entirely sure how you would fuzz-test a fungespace.
20:00:22 <Deewiant> Neither am I.
20:01:17 <elliott> Deewiant: I'm not entirely sure how you would test a fungespace. I guess you could do read string -> do operations -> check string-rendered result, but...
20:01:37 <elliott> Deewiant: You should prove it correct.
20:02:17 <Deewiant> I was thinking along the lines of doing random writes, some of which come as groups forming patterns (so it's not just individual writes all over the place), and pairing each write with a read, which need not come immediately after the write (again random), as long as all writes are paired with a read. (Overlapping writes should discard the previous read somehow, or something.)
20:02:55 <roper> precise
20:03:33 <elliott> Deewiant: Too much structure; I'd do load random string -> do random write operations -> render to string -> check against trivial (slow) ref impl.
20:03:38 <elliott> Deewiant: I mean, the rendering part will already test the reading operations.
20:03:45 <elliott> Also that's easier.
20:04:28 <Deewiant> It needs some structure or it won't catch some things that could be wrong. :-P (And have been wrong, in CCBI's implementation.)
20:04:39 <olsner> hmm, so someone should make the funge spec executable
20:05:31 <elliott> Deewiant: What could that miss? I mean, with enough samples...
20:05:36 <elliott> olsner: They did.
20:05:39 <elliott> olsner: It's called Mycology.
20:05:40 <olsner> meh
20:06:14 <Deewiant> elliott: Well, depends on how you do the randomness. Is it "generate three 32-bit integers and write the third to the coordinates specified by the first two"? :-P
20:06:58 <roper> can I define to- hardware optimization?
20:06:59 <elliott> Deewiant: That, a few thousand times. Except probably restrict the range so you're likely to hit the pre-initialised data.
20:07:06 <roper> lidten
20:07:10 <elliott> I suppose that doesn't test for things like possible overflow, but you could do "edge" tests separately.
20:07:22 <roper> battery 12
20:07:39 <Deewiant> elliott: I guess one could generate a random offset to load the original data to.
20:07:57 <Deewiant> Which could then be biased to be near the edges at least some of the time.
20:08:16 <elliott> Deewiant: Man, who even cares, just release the damn thing already.
20:08:20 <roper> assign a name for each hardware operation
20:08:31 <fizzie> Deewiant: Statistical models of fungespace write/read behaviour learned from some of the high-profile mission-critical large-scale Befunge programs (the sort of stuff eBay, facebook, Google use), then used to generate streams of operations.
20:08:50 <roper> assing some or more codes for each name
20:08:54 <elliott> fizzie: *Facebook
20:09:04 <elliott> It's only "facebook" in the logotype.
20:09:08 <fizzie> elliott: I confused it with fREenODE, sorry.
20:09:11 <roper> transform from/to them and other
20:09:12 <roper> .
20:09:24 <elliott> Freen Ode.
20:09:31 <monqy> ode to freen
20:09:32 <roper> ooooo
20:09:37 <fizzie> Ode to nerf-E.
20:09:52 <elliott> roper: How drunk are you?
20:09:59 <roper> hehe 0
20:10:14 <monqy> me too
20:10:15 <Deewiant> elliott: But anyway, the kind of stuff that wouldn't catch is e.g. "write to x, x+8, x+16, and now read x+8" (something similar to this was broken in CCBI once; not this simplest case, I think, but closely similar).
20:10:20 <fizzie> On a scale from -10 to 0.
20:10:20 <roper> battery 10
20:10:31 <elliott> Deewiant: Sure it would; x+8 would be read in the ->string conversion.
20:10:40 <roper> )
20:10:51 <monqy> one day i hope to be negative drunk
20:10:56 <Deewiant> elliott: But that precise sequence of writes?
20:11:00 <elliott> monqy: Knurd is the term.
20:11:03 <roper> that is acid
20:11:06 <elliott> Deewiant: Well, it's fuzz testing.
20:11:13 <elliott> Deewiant: There's no intelligent design.
20:11:35 <elliott> Deewiant: Anyway, just work on sufficiently small fungespaces that you can exhaust a lot of the searchspaces? e.g. Doing something over 2^32 coordinates is easy.
20:11:35 <roper> pur one, elliot
20:12:00 <roper> battery 9a
20:12:33 <roper> a %% almost-from-top
20:13:02 <monqy> "optomized"
20:13:03 <Deewiant> elliott: I suppose I can resign and leave the possibility that a lot of special cases will be broken at release. :-P
20:13:16 <roper> :)
20:13:42 <kallisti> it would be interesting to implement a fungespace on something that's far more parallel than a traditional CPU
20:13:46 <kallisti> like a GPU perhaps?
20:14:26 <elliott> That wouldn't really be interesting.
20:14:33 <elliott> You don't really access them concurrently.
20:15:09 <kallisti> hmm, right.
20:15:12 <kallisti> but you could.
20:15:22 <Deewiant> Except with ATHR, I guess.
20:15:42 <Deewiant> ("in ATHR": the new "in Feather"?)
20:16:39 -!- ais523 has quit (Remote host closed the connection).
20:17:04 <fizzie> Deewiant: It has the sibling "in NSCK" for anything networking-related.
20:17:21 <roper> battery 8a
20:17:46 <Deewiant> fizzie: I'll have to remember that one.
20:18:18 <monqy> roper: maybe you should charge
20:18:24 <monqy> ; optomize your battery%
20:18:30 <Sgeo> What is a WA game style doing here?
20:18:31 <roper> no, I wont until off
20:18:36 <roper> :)
20:18:38 <monqy> but then it will off
20:18:44 <roper> sure
20:18:49 <roper> and me sleep
20:19:04 <monqy> what about all the poor datas
20:19:05 <elliott> Sgeo: Ropers date back to Worms 2, you uncultured plebeian.
20:19:23 <roper> I hope they will stay
20:19:33 * Sgeo installs Hedgewars due to not having his WA.iso handy
20:19:55 <roper> it is an android
20:20:09 <roper> anananandroid
20:20:10 <fizzie> Deewiant: It's like how fungot will do IPv6, server names instead of just IP, and HTTP requests "in NSCK". (Never mind most of those aren't actually NSCK-dependant at all, except the IPv6 thing.)
20:20:11 <fungot> fizzie: i fully endorse the proposal for a new com in the fruit and vegetable sector is the one area where europe can play an important role to play in relation to the content of his speech. will the commissioner hold new talks with the sudanese government. i hope that before they join. it is against that background it is totally disgraceful to claim that the court has given updated information on its application.
20:20:20 -!- augur has quit (Ping timeout: 240 seconds).
20:20:48 <roper> :/
20:20:59 <elliott> fizzie: You should make a BABL to accelerate babble-generation.
20:21:06 <elliott> Bonus: Tower of Babel allusion.
20:21:13 <Sgeo> mikmod
20:21:38 <fizzie> The module player library?
20:22:51 -!- oerjan has joined.
20:22:56 <Sgeo> Yes
20:23:12 <Deewiant> elliott: How about benchmarks, what's "criterion for C"?
20:23:15 <fizzie> I seem to recall that some MikMod's XM effects were a bit dubiously implemented.
20:23:15 <Sgeo> I assume hedgewars uses modules for music
20:23:29 <elliott> Deewiant: You know the great thing about Haskell?
20:23:35 <elliott> Deewiant: All those wonderful tools you don't get with C.
20:23:58 <Deewiant> (And vice versa.)
20:24:07 <Sgeo> It's a bit shaky
20:24:11 <Sgeo> (The music)
20:24:23 <fizzie> Sgeo: How retro. Also fmod would have more street cred. (And a worse license.)
20:24:46 <fizzie> I think fmod is by scenesters.
20:24:51 <elliott> Deewiant: Anyway, just write your own thing or whatever.
20:25:06 <elliott> I don't think C people "outsource" such "trivial" things.
20:25:13 <Deewiant> Firk ding blast.
20:25:23 <fizzie> They seem far more businessy than what they did.
20:25:40 -!- augur has joined.
20:25:43 <Deewiant> It's true that C programmers tend to be far too NIH-y.
20:26:08 <fizzie> Anyway, they've got that minifmod thing that does XM playback in 5k, they must have *some* intro background.
20:26:10 <elliott> Deewiant: Well, the language kind of forces you to.
20:26:21 <elliott> Deewiant: There's not really much in the way of abstraction. :p
20:26:55 <Deewiant> It doesn't force you to, it just makes it a bit tricky to not.
20:28:01 <elliott> Deewiant: Well, you have to resort to cpp for anything beyond the most basic abstraction.
20:28:11 <elliott> Deewiant: Which gives you all the abstractional power of raw text substitution.
20:28:18 <Deewiant> But oh well, I guess NIH + ministat is the way to go.
20:29:31 <elliott> What's ministat?
20:29:36 <Deewiant> https://github.com/codemac/ministat
20:29:57 <elliott> Deewiant: So cheating.
20:30:03 <roper> entanglement
20:30:05 <Deewiant> Got a better idea?
20:30:11 <elliott> Deewiant: Write yer own!!!!
20:30:20 <elliott> Be sure to replicate it feature-for-feature.
20:30:54 <fizzie> Deewiant: Confidence intervals are like so bourgeoisie. (And frequentist!)
20:31:23 * elliott tries to figure out why GArrow doesn't include ga_swap.
20:33:42 <roper> always had to code it
20:34:03 -!- MSleep has joined.
20:34:12 <Deewiant> fizzie: Bourgeoisie Funge-98 software since 2007.
20:35:29 -!- MDude has quit (Ping timeout: 240 seconds).
20:36:24 <elliott> Deewiant: You know what they say, can't spell Funge-98 without Bayes' theorem.
20:36:29 <elliott> Unless you're DEEWIANT.
20:37:06 <Deewiant> Er, shouldn't that be that you /can/ spell it without it unless you're Deewiant?
20:37:30 <fizzie> No; being a frequentist, you obviously somehow spell it without.
20:39:40 <elliott> What fizzie said.
20:39:52 <elliott> Which is a PERVERSE ABOMINATION.
20:39:58 <elliott> PERVBOMINATION.
20:41:16 <Deewiant> Well, I don't think I can come up with a prior for the speed of my Funge-Space.
20:41:24 <roper> when do you expect we talk in binary?
20:41:30 <oerjan> <Vorpal> R'lyeh standard time. I wonder what that would be like <-- enough time for death to die
20:41:38 <roper> will+
20:41:53 <fizzie> Deewiant: Then you will use an uninformative prior.
20:42:01 <roper> 2013?
20:43:48 -!- augur has quit (Ping timeout: 240 seconds).
20:44:56 -!- augur has joined.
20:45:02 <roper> pull and wait
20:45:33 <roper> push and wait
20:45:41 <roper> pull push
20:45:45 <roper> 01
20:47:27 <roper> 0110
20:48:16 <roper> 01%%10
20:48:40 <roper> 0+0%%00
20:48:47 <elliott> hi
20:48:57 <roper> 1+1%%11
20:48:58 <elliott> Deewiant: "So fast".
20:49:58 <roper> so pppqqq%%010101
20:50:40 <Deewiant> elliott: Shush, I want to observe this in peace.
20:51:13 <roper> %% means interchangeable
20:51:34 <elliott> Deewiant: What, roper or your funge-space?
20:51:44 <roper> + means concatenation
20:51:45 <Ngevd> Hello!
20:51:46 <Deewiant> elliott: roper.
20:52:01 <roper> :)
20:52:14 <roper> well that is almost all
20:52:30 <roper> ask anything
20:53:01 <roper> battery 7a
20:53:44 <roper> that may serve for optimisation
20:53:49 <roper> replace
20:54:14 <roper> from ffaster to slower or viceversa
20:54:51 <roper> may need to go slower before faster
20:55:07 <roper> in the chain
20:55:37 <roper> it may inviolve mathnythinfg
20:55:47 <roper> :)
20:56:13 -!- MSleep has changed nick to MDude.
20:56:25 -!- oerjan has set topic: I'm not a number, I'm a free cheese grater | http://codu.org/logs/_esoteric/.
20:58:27 <roper> double+doube%%quad
20:58:38 <roper> l
20:58:53 <roper> quadruplicate
21:00:45 <roper> inc a + inc a + dec a %% inc a
21:00:59 <Deewiant> system() should be called shell() because that's what it does.
21:01:01 -!- Patashu has joined.
21:02:09 <elliott> Deewiant: What, in C?
21:02:23 <Deewiant> Yep.
21:02:36 <elliott> Deewiant: No it doesn't.
21:02:44 <elliott> Deewiant: You're a terrible DS9K thinker.
21:03:02 <fizzie> Deewiant: It should be called commandprocessor().
21:03:20 <Deewiant> "shell" is the max-6-letter equivalent of "commandprocessor".
21:03:48 <fizzie> But these are the days of max-31-letter names.
21:03:51 <elliott> Deewiant: system() just does something completely unspecified, so "system" seems like a good name for it.
21:03:55 <elliott> It calls out to the system, somehow.
21:04:03 <Deewiant> elliott: It passes the string to a command processor.
21:04:18 <elliott> Is that defined?
21:04:20 <Deewiant> "system" makes me think of system calls.
21:04:25 <fizzie> That is how it's defined.
21:04:36 <elliott> Fair enough.
21:04:48 <fizzie> "the system function passes the string pointed to by string to that command processor to be executed in a manner which the implementation shall document".
21:04:51 <Deewiant> If string is not a null pointer, the system function passes the string pointed to by string to that command processor to be
21:04:54 <Deewiant> executed in a manner which the implementation shall document; this might then cause the
21:04:58 <Deewiant> program calling system to behave in a non-conforming manner or to terminate.
21:05:04 <fizzie> I like the warning.
21:05:13 <roper> battery 6a
21:05:32 <fizzie> Also I wonder how many times system(NULL) has been used.
21:05:47 <fizzie> Unaccidentally, anyway.
21:06:25 <Deewiant> When my C compiler starts needing a library, I'll make sure that that library's system() calls abort() if system(NULL) hasn't been called first.
21:07:58 <fizzie> Will you also give system(NULL) a 10% chance to return 0 just to test that the programs are robust in handling the "no command processor" case?
21:08:02 <roper> battery 5a
21:08:52 <Deewiant> fizzie: Nah; I trust that if they check it, they do so properly. :-P
21:09:06 <roper> battery 4a
21:12:59 <roper> battery 3a
21:13:34 <roper> battery 2a
21:15:20 <roper> battery 1a
21:17:32 <oerjan> on the DeathStar 9000, system() of course blows up a star system.
21:17:36 <roper> batterya
21:18:47 <monqy> rip
21:18:55 <roper> almost
21:19:02 <roper> 1%
21:21:28 -!- roper has quit (Read error: Connection reset by peer).
21:21:43 <elliott> I can't tell whether he's avant-garde or just stupid.
21:21:45 <Deewiant> Thus ends roper.
21:22:01 <Deewiant> The ropening: a saga for the ages.
21:22:29 <elliott> Maybe he was a robot slowly deteriorating as he runs out of power, a million miles from Earth.
21:22:32 <elliott> Only IRC to keep him company.
21:23:11 <oerjan> `frink 1000000 miles -> c s
21:23:24 <HackEgo> 804672000/149896229 (approx. 5.368193752225748)
21:23:40 <oerjan> i guess we've had worse lag than that
21:26:13 <itidus21> his ip hinted spain
21:26:41 <Deewiant> His server hinted USA
21:26:54 <itidus21> oh
21:27:12 <Ngevd> Maybe he was in the Spanish Embassy in New York?
21:27:14 <itidus21> i see >.>
21:27:20 <itidus21> im not good at irc
21:27:52 <Deewiant> itidus21: His IP is the more relevant info, you can obviously connect to any server you want. :-P
21:27:53 <oerjan> Deewiant: um servers are frequently assigned randomly?
21:28:15 -!- Phantom_Hoover has joined.
21:28:24 <Phantom_Hoover> <kallisti> bijective function.
21:28:25 <Deewiant> oerjan: I guess they are, if you just connect to irc.freenode.net or whatever.
21:28:42 <Phantom_Hoover> BtW, this is never what 'isomorphic' means.
21:28:46 <oerjan> atrapado also suggests spanish
21:28:50 <fizzie> But why would you not connect to irc.eu.freenode.net or some such continentally appropriate name.
21:29:19 <Phantom_Hoover> An isomorphism is a bijection which also preserves structure in some way, at least in all the examples I've seen.
21:29:24 <Phantom_Hoover> 19:01:34: <Ngevd> I'm pretty sure infinite-length strings are uncountable
21:29:28 <fizzie> Sorry, chat.eu.freenode.net.
21:29:34 <Deewiant> I just connect to the specific server I want and then when irssi auto-reconnects it goes to some random place if that server's down, I think.
21:29:38 <oerjan> Phantom_Hoover: except in the category of Set, you uncouth illiterate
21:29:46 <kallisti> Phantom_Hoover: define "preserves structure"
21:29:53 <elliott> oerjan: *illiterate fuck is standard terminology tyvm.
21:29:58 <fizzie> Deewiant: Yes, it converts 32 random bits into an IPv4 address and goes there.
21:30:02 <Phantom_Hoover> oerjan, who the hell uses isomorphisms in Set.
21:30:13 <Deewiant> fizzie: That's what it seems like.
21:30:17 <oerjan> elliott: i was a bit confused after what i saw in the log, was it uncouth plebeian?
21:30:18 <Phantom_Hoover> kallisti, it varies.
21:30:35 * oerjan only looked at some of the logs today
21:30:37 <elliott> oerjan: That is also acceptable when you want to SHAKE THINGS UP A BIT and can't quite bring yourself to swear at Ngevd.
21:30:40 <Phantom_Hoover> For groups, it means that f(x*y) = f(x)*f(y).
21:30:52 <fizzie> I seem to have lindbohm.freenode.net and chat.eu.freenode.net listed.
21:31:01 <fizzie> oerjan: You've been accused of espionage in the logs. HTH.
21:31:02 <elliott> Illiterate DARN.
21:31:05 -!- NihilistDandy has joined.
21:31:14 <elliott> oerjan: I guess if the recipient is illiterate it doesn't matter what words you use.
21:32:01 <Phantom_Hoover> For graphs, it means that edges and nodes stay attached.
21:32:09 <oerjan> <fizzie> But why would you not connect to irc.eu.freenode.net or some such continentally appropriate name. <-- erm irc.freenode.net is in the irssi default list (and still what i connect to if my main norwegian server doesn't work)
21:32:19 <kallisti> Phantom_Hoover: ah okay.
21:32:28 <elliott> C'moon. C'mon SO. Two upvotes in two and a half hours.
21:32:29 <fizzie> oerjan: But you might end up in the Americas! They might shoot you!
21:32:30 <elliott> You can do it for me.
21:32:36 <elliott> Let me breach 6,800 today.
21:32:58 <fizzie> (They shoot people there.)
21:33:02 <Phantom_Hoover> half
21:33:07 <Phantom_Hoover> Oops.
21:33:07 <Phantom_Hoover> 19:01:34: <Ngevd> I'm pretty sure infinite-length strings are uncountable
21:33:11 <Phantom_Hoover> Yes, they are.
21:33:14 <fizzie> Yes, they shoot them IN HALF.
21:33:34 <fizzie> I saw a MythBusters show about that. (Or I guess it maybe was a tree.)
21:33:41 <elliott> `addquote <fizzie> I saw a MythBusters show about that. (Or I guess it maybe was a tree.)
21:33:44 <Phantom_Hoover> If you shoot them in half, they stay infinite.
21:33:45 <HackEgo> 802) <fizzie> I saw a MythBusters show about that. (Or I guess it maybe was a tree.)
21:34:12 <elliott> oerjan: Have you seen our perfect quotes:
21:34:14 <elliott> `quote 800
21:34:14 <elliott> `quote 801
21:34:17 <HackEgo> 800) <roper> ioihgfdddf
21:34:38 <Phantom_Hoover> The mysterious quote 801.
21:34:45 <elliott> `quote 801
21:34:49 <HackEgo> 801) <roper> rephtrase
21:35:19 <oerjan> <fizzie> oerjan: You've been accused of espionage in the logs. HTH. <-- i saw that. didn't quite understand. i mean, how you could you possibly suspect innocent little _me_? also, don't touch that big red button.
21:35:31 <HackEgo> 801) <roper> rephtrase
21:35:34 <Phantom_Hoover> https://github.com/ktat
21:35:43 <Phantom_Hoover> ohmy;'god
21:36:04 <Phantom_Hoover> Sgeo, you didn't tell us KT-AT could Perl.
21:36:16 <Ngevd> Wait a goddamn goddamn second
21:36:20 <elliott> Phantom_Hoover: That's only one program.
21:36:23 <elliott> She has to learn all the other programs.
21:36:25 <elliott> Or was that another one.
21:36:26 <Ngevd> Are pi and e co-transcendental?
21:36:31 <Phantom_Hoover> That was Idiot Girl.
21:36:35 <Phantom_Hoover> Ngevd, co-transcendental?
21:36:39 <elliott> Phantom_Hoover: The politest name.
21:36:48 <fizzie> oerjan: Your careless un-Torred logged-in Wiki edits have revealed you.
21:36:57 <Phantom_Hoover> The categorical dual of transcendental?
21:36:59 <Phantom_Hoover> oerjan, define this.
21:37:04 <elliott> fizzie: As opposed to Torred logged-in wiki edits.
21:37:09 <elliott> Those would have been so fucking safe.
21:37:38 <Ngevd> Phantom_Hoover, a is not expressible in algebraic terms of b
21:38:07 <fizzie> elliott: ONION ROUTING.
21:38:11 <Phantom_Hoover> You mean a /= kb, k \in A?
21:38:19 <oerjan> <Ngevd> Are pi and e co-transcendental? <-- famous unsolved problem. e.g. it's unknown whether either of pi+e and pi*e are rational, although at least one must be transcendental and both are suspected to be
21:38:20 <Phantom_Hoover> Where A are algebraics.
21:38:34 <elliott> fizzie: He just stepped on a security rake and got a face full of fucking safety, etc.
21:38:48 <elliott> (The onions are the rake.)
21:39:33 <elliott> (diff) (hist) . . N User:Asd4628182‎; 21:36 . . (+3) . . Asd462818 (Talk | contribs) (New page: asd)
21:39:34 <elliott> (diff) (hist) . . N User:Asd462818‎; 21:31 . . (+3) . . Asd462818 (Talk | contribs) (New page: asd)
21:39:37 <elliott> SPAMBOTS. YOU'RE NOT EVEN TRYING ANY MORE.
21:40:03 <Ngevd> oerjan understands me
21:40:13 <Phantom_Hoover> Damn you oerjan.
21:40:20 <Ngevd> oerjan, will you be my friend?
21:40:28 <monqy> You will find that when it comes to camping, you dont just want to sleep in an tent, but you will want to get a commercial RV and use the commercial campgrounds as an alternative camping experience.
21:40:29 -!- GreaseMonkey has joined.
21:40:36 <oerjan> Phantom_Hoover: i assume he means whether pi / e is in the algebraic closed field generated by the other (equivalently i think, whether there's a nontrivial rational polynomial p(x,y) such that p(pi,e) = 0)
21:40:46 <monqy> [...]
21:40:48 <monqy> You may need to go traditionally camping because of the money, however, you will want to think about modern ways of camping. fuck tonight locally
21:40:52 <oerjan> er,
21:40:57 <oerjan> *pi and e
21:41:03 <oerjan> no division implied
21:41:15 <monqy> Erla64ys418a "a good spambot"
21:41:55 <oerjan> Phantom_Hoover: so more like prime : coprime :: transcendental : cotranscendental
21:42:01 <elliott> monqy: fuck tonight locally
21:42:19 <monqy> it was a link too
21:42:51 <elliott> "What’s the Trick to Fucking Local Horny Locals Tonight?"
21:42:56 <elliott> modern ways of camping
21:43:14 <Phantom_Hoover> They're not just local, they're fucking local.
21:43:23 <Phantom_Hoover> I mean, these locals are local as *shit*.
21:43:52 <Ngevd> Edinburgh, city where shit is fucking local
21:44:06 <elliott> Phantom_Hoover: They're so fucking local that they're referred to as "local" TWICE in the same question!
21:44:39 <Phantom_Hoover> I can't deal with all this locality.
21:44:42 <Phantom_Hoover> I'm going camping.
21:44:51 <elliott> You will find that when it comes to camping, you dont just want to sleep in an tent, but you will want to get a commercial RV and use the commercial campgrounds as an alternative camping experience.
21:45:55 <monqy> i also like the userpages of the asd bots
21:45:59 <monqy> theyre very good
21:46:04 <oerjan> just get a sleeping bag and a room at the alta ice hotel
21:46:30 <elliott> oerjan: Also known as a "Norwegian holiday".
21:46:50 <oerjan> (no i haven't tried that. do i _look_ insane? oh right. well, i still haven't.)
21:49:28 <fizzie> Or the Kiruna "ICEHOTEL" if you want the "Swedish holiday".
21:49:32 <oerjan> Ngevd: you can be my slightly less often beaten minion, if you like.
21:49:40 <Ngevd> :D
21:49:48 <fizzie> http://www.itravelguide.co.uk/wp-content/uploads/2011/07/ice-hotel-jukkasjarvi-church.jpg <- the hotel.
21:49:53 <fizzie> (Okay, so it's just their church.)
21:50:33 <elliott> fizzie: omg :DD
21:50:35 <fizzie> There's also a snow hotel in Finland.
21:50:42 <oerjan> fizzie: wait, are you saying finland... ok.
21:50:43 <fizzie> It's less translucent. :/
21:50:55 <fizzie> http://www.snowcastle.net/en/
21:51:21 <fizzie> They do weddings and that sort of thing, much what you'd expect.
21:51:30 <fizzie> I think mooz might've stayed there?
21:52:08 <fizzie> They do have some ice in it, but judging from the photos not quite as much as at the ICEHOTEL.
21:53:37 <fizzie> We're going to go through Kiruna (twice, actually, since we need to get back too) around Easter, but skipped the ICE. I'm not sure how long it's open, anyway.
21:55:02 <fizzie> I think they put it in a storage hall during the summer and keep it open in a sort of reduced mode.
21:55:09 <fizzie> Which is pretty pointless.
21:55:30 <fizzie> Apparently summer tourists have been so disappointed for not being able to go to the ice hotel.
21:56:51 <oerjan> fizzie: http://en.wikipedia.org/wiki/Ice_hotel says it's just ice that is stored, not the previous hotel
21:56:59 <kallisti> Phantom_Hoover: so sets do not have isomorphisms?
21:57:06 <kallisti> or are set isomorphisms just bijective functions?
21:57:14 <fizzie> oerjan: http://www.icehotel.com/uk/ICEHOTEL/Stay-at-ICEHOTEL/The-ice-factory/ "For the first time in history you can experience the sensation of ICEHOTEL even during summer. The world’s first and largest hotel built of snow and ice, will have a little sister in the summer of 2012. On the 8th of June a smaller version of the hotel opens; 120 square meters and will hold three art suites, an ICEBAR by ICEHOTEL and place for guests to try ice sculpting."
21:57:34 <Phantom_Hoover> kallisti, they're just bijections, so nobody calls them isomorphisms.
21:57:58 <elliott> "Sleep well in -5 °C"
21:58:00 <elliott> Yeees.
21:58:17 <oerjan> fizzie: ah.
21:58:21 <elliott> "What is ICEHOTEL? A hotel built of ice and snow, would be the most common response. The first and the largest in the world, someone might add. But we have more thrilling stories to tell. Lean closer to your computer screen and we'll whisper them in your ear."
21:58:27 <kallisti> Phantom_Hoover: would it be technically incorrect to say so? aside from being laughed at?
21:59:15 <Phantom_Hoover> kallisti, finite strings aren't the same as sets.
21:59:16 <elliott> fizzie: So are the beds made out of ice in ICEHOTEL?
21:59:21 <Phantom_Hoover> There's an implied structure there.
21:59:22 <Phantom_Hoover> elliott, yews.
21:59:25 <Phantom_Hoover> *yes
21:59:31 <kallisti> Phantom_Hoover: yes but a set of finite strings is a -- oh I see :P
21:59:57 <elliott> Phantom_Hoover: Wait, really?
22:00:10 <Phantom_Hoover> elliott, they have insulation on top.
22:00:16 <Deewiant> elliott: "The bed you'll sleep on is made of blocks of ice, a wooden base and a mattress covered with reindeer skin."
22:01:03 <Ngevd> Is it bad that I don't see the paradox in the Banach-Tarski Paradox?
22:01:03 <elliott> Deewiant: The reindeer skin is frozen, right?
22:01:04 <Deewiant> elliott: Yes, it's made of ice.
22:01:13 <oerjan> kallisti: bijections are the isomorphisms of the category Set. just because no one bothers to use the term when speaking solely about sets doesn't mean it's not true.
22:01:18 <elliott> Ngevd: What, do your folk usually take a sphere apart and reassemble it into two spheres of the same size?
22:01:32 <shachaf> "paradox" is pretty much a meaningless word these days.
22:01:37 <Ngevd> elliott, nah, we don't have enough spheres
22:01:55 <shachaf> Its meaning seems to be approximately along the lines of "whoa, man".
22:02:04 <elliott> shachaf: Yes, those modern Banach-Tarskiers totally ruined everything.
22:02:06 <Ngevd> I mean, it's just Hilbert's Hotel all over again
22:02:07 <elliott> I remember the day when...
22:02:15 <elliott> Ngevd: Not... really.
22:02:18 <shachaf> elliott: Well, it's been that way for a while.
22:02:29 <shachaf> Hilbret's hotel? Huh?
22:02:47 <Phantom_Hoover> <Ngevd> Is it bad that I don't see the paradox in the Banach-Tarski Paradox?
22:02:59 <Phantom_Hoover> Not really, it just means you understand what it actually means.
22:03:19 <elliott> Phantom_Hoover: I somewhat doubt that?
22:03:24 <shachaf> I have the feeling Ngevd doesn't understand what it actually means, going by what it just said.
22:03:26 <Phantom_Hoover> elliott, why?
22:03:32 <Ngevd> Aaah stop making me delete what I'm writing then making me realise that I didn't need to delete it
22:03:51 <elliott> Phantom_Hoover: Well, people who understand Banach-Tarski don't generally say things like "Is it bad that I don't see the paradox in the Banach-Tarski Paradox?".
22:03:58 <elliott> Phantom_Hoover: Or compare it to Hilbert's hotel.
22:04:13 <shachaf> My actual working definition of "paradox" is "an apparent contradiction".
22:04:21 <shachaf> Which covers a lot, you must admit.
22:04:29 <elliott> Ngevd: "A stronger form of the theorem implies that given any two "reasonable" solid objects (such as a small ball and a huge ball) — solid in the sense of the continuum — either one can be reassembled into the other. This is often stated colloquially as "a pea can be chopped up and reassembled into the Sun"." -- maybe this seems more appropriately paradoxical to you.
22:04:52 <Ngevd> elliott, only when thinking about physics
22:05:04 <Ngevd> And even then not strictly paradoxical
22:05:12 <shachaf> elliott: Well, Hilbert's Hotel can be rearranged to, like, fit Hilbert's SUPERhotel.
22:05:35 <Phantom_Hoover> Ngevd, it's more complex than just Hilbert's hotel; for one thing, it relies on the axiom of choice.
22:05:36 <elliott> Ngevd: I don't see why you think things become less paradoxical-sounding when you detach them from "physics".
22:05:40 <elliott> It's still geometry.
22:05:56 <Ngevd> elliott, only finite subdivisions of the pea and the sun
22:06:00 * shachaf is not a fan of geometry.
22:06:20 <Ngevd> As opposed to the hypothetically infinite subdivisions of the magic maths ball
22:06:21 <Phantom_Hoover> shachaf, it's only tangentially geometry, really.
22:06:22 <oerjan> shachaf: don't be such a square!
22:06:32 <elliott> the non-measurable weirdness going on with the pieces.
22:06:33 <Phantom_Hoover> The meat of the proof is actually some neat group and set theory.
22:06:34 <fizzie> They've got some specifically warm sleeping bags, or some-such.
22:06:35 <elliott> Argh.
22:06:40 <elliott> I deleted the wrong part of that line.
22:06:51 <fizzie> From what I've heard it's still a bit chilly, at least in the Finnish snowcastle.
22:07:01 <elliott> Phantom_Hoover: I think the rub is that Ngevd probably wouldn't consider it any differently if the pieces /weren't/ all weird and non-measurable.
22:07:10 <fizzie> Also having a wedding there is probably a recipe for a bit... frozen performance on your wedding night, maybe?
22:07:18 <Phantom_Hoover> <Ngevd> As opposed to the hypothetically infinite subdivisions of the magic maths ball
22:07:24 <shachaf> I think this explains everything, really : http://www.youtube.com/watch?v=uFvokQUHh08
22:07:24 <elliott> At least he seems to be saying essentially "it's abstract so anything goes". Also it is maybe IMPOLITE to talk about him in the third person like this.
22:07:26 <Phantom_Hoover> This does kind of imply that he gets that much.
22:07:32 <Phantom_Hoover> Yes this occurred.
22:07:44 <shachaf> s/ :/:/ # grr
22:07:55 <Ngevd> I'm used to it, carry on talking about me behind my back in front of my back
22:08:11 <elliott> That Ngevd guy sucks.
22:08:22 <elliott> shachaf: what
22:08:26 <kallisti> fizzie: ...
22:08:37 <Ngevd> Also I need sleep, tomorrow is an important day for me. A day I do not want to be sleepy on
22:08:39 <Ngevd> Goodnight
22:08:41 -!- Ngevd has quit (Quit: Goodbye).
22:08:48 <elliott> He's getting married.
22:08:58 <fizzie> Oh, I thought it was just a very mellow ragepat.
22:09:06 <Phantom_Hoover> He is going to try to execute the Banach-Tarski paradox in real life.
22:09:14 <Phantom_Hoover> You need to be very deft with a scalpel.
22:09:15 <elliott> Phantom_Hoover: With himself.
22:09:21 <elliott> And then marry his clone.
22:09:25 <Phantom_Hoover> Very deft.
22:09:26 <oerjan> Phantom_Hoover: he'll fail, but then try again on Dec 21.
22:09:29 <monqy> good video
22:10:17 <Phantom_Hoover> good song
22:10:37 <monqy> banach-tarski
22:12:26 <Phantom_Hoover> This university should probably do something about its orange problem.
22:12:30 <elliott> En samling af de bedste film der har medvirket i Matematik Revyen.
22:13:00 <fizzie> `words --danish 20
22:13:06 <HackEgo> Unknown option: danish
22:13:09 <fizzie> Aw.
22:13:17 <elliott> ONE UPVOTE SO
22:13:18 <elliott> ONE UPVOTE
22:13:24 <fizzie> Also poor Denmark, I don't think they've got an ice hotel at all.
22:13:52 <shachaf> elliott: How would you like a shiny point of IRC karma?
22:13:52 <Deewiant> `words --norwegian 20
22:13:56 <HackEgo> lyderokolen pluminsiprobi kunstrømskate råde lantrassamenestilpa kavdelekand demotteriktenestpappe hallgasilkjordigst countraks artnerntor dovenestyrkivproduksst vittningen spektor kasjonensambasjon notektbifagaarken bilene bandringer mumsgud sykejenevningen konterstyrret
22:14:13 <Deewiant> fizzie: Close enough!
22:14:25 <shachaf> `words --finnish 20
22:14:27 <fizzie> oerjan: ^^ Is it, really.
22:51:25 -!- esowiki has joined.
22:51:26 -!- glogbot has joined.
22:51:28 -!- EgoBot has joined.
22:51:30 -!- esowiki has joined.
22:51:31 -!- esowiki has joined.
22:51:32 -!- HackEgo has joined.
22:53:14 -!- Gregor has joined.
22:53:23 <GreaseMonkey> codu.org spam
22:53:42 <GreaseMonkey> how do you even get away with that Gregor
22:54:57 <Gregor> Lies.
22:54:59 <Gregor> Filthy lies.
22:56:11 <GreaseMonkey> "hi, i need a whatever-line extension so i can connect my bots that aren't part of any botnet"
22:56:43 <Gregor> BotNETs are typically, y'know, botNETs.
22:56:53 <GreaseMonkey> Microsoft Visual Bot.NET
22:57:21 <GreaseMonkey> anyhow i'm listening to music that AnMaster/Vorpal would hate
22:57:25 <GreaseMonkey> (C64 music :D)
22:57:42 <GreaseMonkey> actually, do you like chiptune stuff at all?
23:06:36 <kallisti> awwwww yeah chiptune
23:07:02 <itidus21> my music sucks ass... i basically just used a midi composer and placed some random notes
23:08:05 <GreaseMonkey> i'm at least pretending to work on a sega master system music driver
23:08:22 <itidus21> cool
23:08:27 <itidus21> wanna know what i was doing?
23:08:48 <itidus21> telling my mom about this jackie chan biography i have been reading while making a cup of coffee >.<
23:09:25 <GreaseMonkey> multitasking
23:26:22 <oerjan> it's ok as long as you don't leave coffee stains
23:26:53 <fizzie> Deewiant: pixelsize=12 didn't (on the top row, anyway), now I already turned that thing off.
23:26:56 <itidus21> i love retro gaming anyway
23:27:11 <itidus21> its the best thing
23:27:21 <itidus21> it reminds us that modern gaming aint so great
23:27:53 <itidus21> and.. reminds us about the joys of haptic feedback before touchscreens became so popular
23:29:01 <itidus21> and the joys of indexed image palettes
23:29:42 <fizzie> There's that one pretty webpage doing palette-rotation animations with canvas.
23:29:48 <itidus21> and the joys of box shaped image restoration filters
23:31:11 <itidus21> and video game magazines .. im sure they'll never be the same
23:32:23 <fizzie> http://www.effectgames.com/demos/canvascycle/?sound=0 in case someone's managed to miss it; though in Internet time it's SO OLD.
23:33:04 -!- rdrp has joined.
23:33:09 <itidus21> whoa
23:33:19 <itidus21> not what i expected
23:33:33 <rdrp> battery 73a
23:33:48 <itidus21> i think i should say and the joys of pixel art.. too
23:34:13 <itidus21> that is badass
23:37:13 -!- rdrp has quit (Client Quit).
23:38:00 -!- pikhq has quit (Ping timeout: 240 seconds).
23:38:00 -!- pikhq_ has joined.
23:38:29 <fizzie> The pictures are drawn by a guy who's done backgrounds for Loom and Secret of Monkey Island.
23:38:46 <itidus21> ah... he is that kind of scum
23:39:48 <itidus21> i looked at super mario in a nes emulator once and saw a palette cycle on a golden colour... used on coins and question blocks
23:47:00 <itidus21> pardon the pun
23:54:08 -!- boily has quit (Quit: WeeChat 0.3.6).
23:54:19 -!- cheater has joined.
2012-01-13
00:01:40 -!- Klisz has quit (Ping timeout: 240 seconds).
00:03:23 -!- Guest50440 has joined.
00:05:46 <kallisti> `pastelogs
00:05:49 <kallisti> `pastelog
00:06:08 <kallisti> `log >.*palindromes
00:06:17 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.9465
00:06:42 <HackEgo> No output.
00:06:57 <kallisti> `log \>.*palindromes.*iterate
00:07:19 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.15923
00:07:26 <HackEgo> 2012-01-13.txt:00:06:57: <kallisti> `log \>.*palindromes.*iterate
00:08:56 <kallisti> http://en.wikipedia.org/wiki/Palindromic_number
00:09:01 <kallisti> every number is a palindromic number...
00:09:17 <kallisti> there exists at least one base in which that number is a palindrome.
00:09:48 <oerjan> actually, infinitely many
00:10:41 <monqy> for any number n, all bases m > n?
00:10:57 <monqy> e
00:11:00 <monqy> yes
00:11:31 <monqy> i mistyped the empty string and then fumbled a bit but now i'm ok
00:11:57 <oerjan> also m=n-1, it seems
00:12:05 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com).
00:12:10 <oerjan> http://en.wikipedia.org/wiki/Strictly_non-palindromic_number
00:13:38 <kallisti> a
00:13:43 <kallisti> oopses mistyped empty string
00:13:49 <kallisti> I meant to say:
00:21:07 <kallisti> oerjan: m = n-2 as well, for most bases I think
00:21:38 -!- myndzi has quit (Read error: Connection reset by peer).
00:21:39 <oerjan> um no, that's 12
00:21:50 <kallisti> oh rite
00:21:57 <kallisti> that's not a palindrome ha ha ha ha ha ha ha ha ha
00:21:58 <kallisti> ha
00:22:04 <oerjan> ^ha
00:22:04 <fungot> ha. ha. ha ha. ha ha ha. ha ha ha ha ha. ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ...too much output!
00:22:08 -!- myndzi has joined.
00:22:28 <kallisti> in my opinion bash has the best support for infinite data structures.
00:22:42 <oerjan> i...c
00:23:13 <monqy> hi
00:23:20 <kallisti> maybe the human mind is an infinite data structure.
00:23:25 <monqy> hi
00:23:48 <kallisti> the human body is like a cellular automata of infinite structures.
00:24:06 <kallisti> an
00:24:09 <kallisti> infinite matrix of solidity
00:24:15 <monqy> hi
00:25:15 <kallisti> if our minds are like operating systems, does that mean our operating system has a really shitty memory addressing scheme?
00:25:33 <kallisti> how many cores does it have?
00:25:41 <kallisti> :>
00:25:48 <monqy> mysterys of life
00:32:45 <oerjan> a few billion cores
00:34:49 -!- Guest50440 has quit (Quit: SLEEP, GLORIOUS SLEEP).
00:57:26 -!- esowiki has joined.
00:57:31 -!- esowiki has joined.
00:57:31 -!- esowiki has joined.
00:58:30 -!- esowiki has joined.
00:58:35 -!- esowiki has joined.
00:58:35 -!- esowiki has joined.
00:59:11 -!- esowiki has joined.
00:59:16 -!- esowiki has joined.
00:59:16 -!- esowiki has joined.
00:59:42 -!- esowiki has joined.
00:59:47 -!- esowiki has joined.
00:59:47 -!- esowiki has joined.
01:00:26 -!- esowiki has joined.
01:00:30 -!- esowiki has joined.
01:00:31 -!- esowiki has joined.
01:01:06 -!- esowiki has joined.
01:01:10 -!- esowiki has joined.
01:01:11 -!- esowiki has joined.
01:01:43 -!- esowiki has joined.
01:01:48 -!- esowiki has joined.
01:01:48 -!- esowiki has joined.
01:02:29 -!- esowiki has joined.
01:02:34 -!- esowiki has joined.
01:02:34 -!- esowiki has joined.
01:03:09 -!- esowiki has joined.
01:03:14 -!- esowiki has joined.
01:03:14 -!- esowiki has joined.
01:03:44 -!- esowiki has joined.
01:03:49 -!- esowiki has joined.
01:03:49 -!- esowiki has joined.
01:04:28 -!- esowiki has joined.
01:04:28 -!- glogbot has joined.
01:04:28 <?unknown?> [freenode-info] channel flooding and no channel staff around to help? Please check with freenode support: http://freenode.net/faq.shtml#gettinghelp
01:04:33 -!- esowiki has joined.
01:04:33 -!- esowiki has joined.
01:54:34 -!- azaq23 has joined.
01:54:48 -!- azaq23 has quit (Max SendQ exceeded).
01:55:16 -!- azaq23 has joined.
02:19:59 <kallisti> @src iterate
02:20:00 <lambdabot> iterate f x = x : iterate f (f x)
02:22:28 -!- oerjan has set topic: I'm not a number, I'm a cheesy and grating topic | http://codu.org/logs/_esoteric/.
02:33:44 <kallisti> @src (.)
02:33:44 <lambdabot> (f . g) x = f (g x)
02:33:44 <lambdabot> NB: In lambdabot, (.) = fmap
02:35:13 <oerjan> @src (++)
02:35:14 <lambdabot> [] ++ ys = ys
02:35:14 <lambdabot> (x:xs) ++ ys = x : (xs ++ ys)
02:35:14 <lambdabot> -- OR
02:35:14 <lambdabot> xs ++ ys = foldr (:) ys xs
02:35:21 <oerjan> @src flip
02:35:21 <lambdabot> flip f x y = f y x
02:35:31 <oerjan> some NB's lacking
02:36:39 <oerjan> :t flip
02:36:40 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b
02:45:07 <shachaf> More like Nofunctor!
02:57:01 -!- cswords has joined.
03:18:48 <Sgeo> kallisti, there was an update
03:18:55 <kallisti> I see.
03:19:15 -!- oerjan has set topic: I'm not a number, I'm a cheesy and grating update | http://codu.org/logs/_esoteric/.
03:49:07 <kallisti> @src (>=>)
03:49:07 <lambdabot> Source not found. You speak an infinite deal of nothing
03:49:34 <oerjan> @src >=>
03:49:34 <lambdabot> Source not found. BOB says: You seem to have forgotten your passwd, enter another!
03:49:58 <oerjan> it's probably (f >=> g) x = f x >>= g , anyway
03:59:04 <kallisti> BAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA
03:59:21 <kallisti> that fills up the entire width of my terminal
03:59:45 <oerjan> that leaves one char at the end of mine
04:00:00 <kallisti> ah so you too do not maximize
04:00:05 <kallisti> we are non-maximize buddies then
04:01:10 <kallisti> would it be accurate to say that...
04:01:24 <kallisti> =<< and <=< are analogous to $ and . ?
04:01:55 <oerjan> a bit.
04:02:15 <oerjan> although =<< needs to fight with <*> / ap for that.
04:02:23 <kallisti> indeed
04:02:31 <kallisti> <*> is a different kind of application. :P
04:02:54 <oerjan> . is generalized in Control.Category, and Kleisli is one based on <=<
04:02:54 <kallisti> it's like application lifted into another type.
04:03:20 <kallisti> $ should be generalized somehow.
04:03:25 <kallisti> ......er
04:03:30 <kallisti> I guess that's ap
04:04:07 <oerjan> fmap is another
04:04:24 <oerjan> which lambdabot uses for .
04:04:53 <kallisti> you're completely clusterfucking my analogy.. :P
04:04:57 <oerjan> and lambdabot's weird flip is yet one
04:04:59 <oerjan> :t flip
04:05:01 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b
04:05:11 <kallisti> BIND FUNCTOR
04:05:25 <kallisti> except the f is on the outside
04:05:32 <kallisti> f (a ->b) instead of a -> f b
04:05:41 <oerjan> it's all about different ways to put in the f's
04:05:47 <kallisti> yes I've noticed.
04:06:20 <kallisti> flip is some kind of mixture of bind and ap isn't it?
04:06:52 <oerjan> flip f x = fmap ($ x) f
04:07:02 <kallisti> >_> oh
04:07:32 <kallisti> ah yes
04:07:39 <kallisti> I see how that generalizes the function case
04:07:53 <oerjan> and there's also comonad whateverit'scalled
04:08:03 <kallisti> yes of course...
04:08:10 <kallisti> (what?)
04:08:15 <oerjan> extend, iirc
04:08:18 <oerjan> :t extend
04:08:19 <lambdabot> Not in scope: `extend'
04:08:27 <oerjan> ):
04:08:31 <kallisti> @src Comonad
04:08:31 <lambdabot> Source not found.
04:08:43 <oerjan> i guess lambdabot may not have them at all
04:08:47 <oerjan> :k Comonad
04:08:48 <lambdabot> Not in scope: type constructor or class `Comonad'
04:08:53 <oerjan> :k CoMonad
04:08:54 <lambdabot> Not in scope: type constructor or class `CoMonad'
04:08:57 <kallisti> yes functions are not pokemon.
04:09:05 <oerjan> :k Monad
04:09:06 <lambdabot> Class `Monad' used as a type
04:09:06 <lambdabot> In the type `Monad'
04:09:11 <oerjan> sheesh
04:10:00 <oerjan> @hoogle extend
04:10:00 <lambdabot> System.Posix.Terminal ExtendedFunctions :: TerminalMode
04:10:00 <lambdabot> Text.Regex.Posix.Wrap compExtended :: CompOption
04:10:00 <lambdabot> Text.Regex.Posix.String compExtended :: CompOption
04:10:06 <oerjan> didn't think so
04:10:53 <kallisti> ah yes the classic regex comonad
04:11:28 <oerjan> careful, it might exist
04:11:40 <kallisti> well Parsec is pretty close I guess.
04:11:49 <oerjan> ...is a Monad.
04:11:53 <kallisti> oh rite
04:12:04 <kallisti> see...
04:12:10 <kallisti> I shouldn't talk so much when I'm tired.
04:12:25 <oerjan> aslobutely
04:12:50 <monqy> :t (=>>)
04:12:51 <lambdabot> Not in scope: `=>>'
04:12:53 <monqy> lambdabot...................
04:12:56 <monqy> how could you
04:13:04 <oerjan> oh that maybe was it
04:13:12 <monqy> (=>>) is flip extend
04:13:13 <oerjan> @hoogle (=>>)
04:13:13 <lambdabot> No results found
04:13:21 <monqy> at least I think it's flip extend??
04:13:38 <kallisti> extend flip
04:13:53 <kallisti> extend tail
04:13:54 <oerjan> :t (>>= flip)
04:13:55 <lambdabot> forall (f :: * -> *) a b. (Functor f) => (a -> f (a -> b)) -> a -> f b
04:14:04 <monqy> extend is defined by the Extend typeclass in Data.Functor.Extend which is exported by Control.Comonad, I think?????????
04:14:18 <monqy> and all Comonads are Extends
04:15:20 <monqy> I thought lambdabot had this stuff though
04:17:07 <kallisti> oerjan: you should make sure that the f has been put in all the places and if not list out all of combinations you can put the f in and then write functions for them
04:19:56 <oerjan> O KAY
04:21:33 <kallisti> here's a good one
04:21:46 <kallisti> f a -> f b -> (f a -> f b)
04:22:19 <monqy> const const?
04:22:28 <kallisti> yes yes
04:22:42 <kallisti> no?
04:22:43 <kallisti> maybe
04:22:49 <monqy> :t const const
04:22:50 <lambdabot> forall a b b1. b1 -> a -> b -> a
04:23:03 <monqy> :t const const :: (Functor f) => f a -> f b -> (f a -> f b)
04:23:04 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f a -> f b -> f a -> f b
04:23:31 <kallisti> oh okay.
04:23:54 <kallisti> here's another good one:
04:24:10 <kallisti> (f a -> f b) -> (f a -> f b)
04:25:04 -!- qfr has left.
04:25:09 <kallisti> I will pay you $200 to figure this one out
04:25:33 <kallisti> unsolved porbelm fro matemathics
04:27:42 <kallisti> > id id id id id id id id 2
04:27:42 <lambdabot> 2
04:27:54 <kallisti> > fix id 2
04:27:58 <lambdabot> mueval-core: Time limit exceeded
04:28:16 <kallisti> damn you consequences of halting problem.
04:29:57 <monqy> hi
04:30:08 <kallisti> .hi
04:40:36 -!- MSleep has changed nick to MDude.
05:06:22 <shachaf> kallisti: "consequences of the halting problem" being "everything"?
05:06:29 <shachaf> (Everything provable, anyway.)
05:09:43 <Lymia> ...
05:09:46 <Lymia> I'm speechless.
05:09:58 <Lymia> I downloaded a Windows game, and tried to run it on WINE. It did not work.
05:10:08 <monqy> :o
05:10:10 <Lymia> Since it included source, I tried typing in "make"
05:10:24 <Lymia> After adding a few imports, against all reason, it actually compiled...
05:10:41 <Lymia> Ya-- Segmentation Fault
05:10:45 <Lymia> ;.;
05:11:06 <monqy> :o
05:11:13 <oerjan> but did you try running _that_ in wine?
05:11:16 * oerjan helpful
05:11:50 <Lymia> oerjan, I compiled it to a Linux native binary, dummy.
05:12:14 <shachaf> If you ran it under WINE you might get a General Protection Fault.
05:12:40 <Lymia> The Linux version, at least, manages to bring up a window before crashing.
05:17:52 -!- pikhq has joined.
05:18:27 -!- pikhq_ has quit (Ping timeout: 268 seconds).
05:20:10 -!- augur has quit (Read error: Connection reset by peer).
05:20:34 -!- augur has joined.
05:34:49 <kmc> "Even in math there seems to be a general consensus about which problems are hard to solve, and what constitutes a good solution. But hacking is like writing. Who can say which of two novels is better? Certainly not the authors."
05:34:50 <kmc> ...
05:37:30 -!- pikhq_ has joined.
05:37:38 -!- pikhq has quit (Ping timeout: 240 seconds).
05:50:26 <shachaf> I thought it was like painting.
05:56:49 <kmc> all the best writers of history have been painters and vice versa
05:56:51 <kmc> duh, everyone knows that
06:14:35 -!- azaq23 has quit (Quit: Leaving.).
06:27:36 -!- MDude has quit (Ping timeout: 240 seconds).
06:40:59 -!- oerjan has quit (Quit: Good night).
06:56:46 <shachaf> kmc: Doesn't look like your tolerance for doses of #-blah is increasing with practice.
06:57:34 <kmc> no it's just wli
06:59:43 <pikhq_> Determined to die, so why bother trying to find alternatives. That's him.
07:00:27 <kmc> i mean he has got a really raw deal in life
07:00:35 <kmc> his bitterness is totally justified
07:00:44 <kmc> but that doesn't make it any more pleasant to be around
07:01:22 <pikhq_> True, *but* nevertheless. He might actually be able to wrangle refugee status. Or leave the US somehow...
07:07:42 <kmc> "Thinking in typeclasses is IMO the best thing to do: it's really the most Haskellish."
07:08:52 <kmc> anyway I'm surprised people are apparently willing to pay $250/day to program in Haskell rather than another language
07:08:56 <kmc> re http://www.reddit.com/r/haskell/comments/odv3t/welltyped_are_hiring_haskell_consultant/
07:09:17 <shachaf> Are people actually willing to do that?
07:09:38 <kmc> i was talking about this in #haskell-blah but wli took over with his AMERIKKKA rants so now y'all get to hear about it
07:09:40 <shachaf> It was copumpkin's assertion that if someone takes the job, then they're willing to do that.
07:10:01 <kmc> shachaf, it's possible the number is too low and that well-typed won't get any applications
07:10:17 <kmc> i mean, price discovery is hard, double so in labor markets
07:10:27 <kmc> i'm taking one party's bid as a crude approximation of market price
07:11:09 <kmc> i think one danger is that you get someone with intermediate Haskell skill who is super naive
07:12:22 <kmc> someone who thinks Haskell magically eliminates all of the annoyances of programming in the real world
07:12:41 <pikhq_> Alas, Haskell doesn't eliminate the real world.
07:12:44 <pikhq_> That's what @'s for!
07:13:11 <kmc> if the language really were as good as those people think, it would be worth the pay cut
07:13:15 <kmc> but it's not, and no language ever will be
07:13:40 <kmc> it's just a pretty good programming language
07:13:57 <kmc> and there are many other companies that will pay you twice as much to use a different pretty good programming language
07:14:13 <Sgeo> What are some other pretty good programming languages?
07:15:06 <pikhq_> And I'm pretty sure $55k is more like (somewhat low) starting wages for a halfway competent programmer literally just out of college...
07:15:15 <shachaf> kmc: I think the consensus in that thread in general was that they're underpaying.
07:15:30 <kmc> pikhq_, last I knew Google, Facebook, etc. would start around $80k, plus health insurance and other benefits
07:15:33 <pikhq_> ... In the Midwest.
07:15:51 <kmc> if you're working remotely from the USA, take like $500/mo off that Well-Typed money for health insurance
07:16:26 <kmc> Sgeo, languages i like include Haskell, Python, OCaml, Clojure, Scheme, C (for certain things)
07:16:29 <kmc> none of them is perfect
07:16:56 <kmc> for many tasks none of the first five will dominate, assuming you have skill in all
07:17:11 <pikhq_> kmc: Sorry, my scale of wages is somewhat set by the region I live in, which has significantly lower cost-of-living than the Valley.
07:17:20 <kmc> fair enough
07:17:36 <kmc> and that is one reason Well-Typed's offer might be more reasonable than it looks
07:17:38 <kmc> you can live somewhere cheap
07:17:49 <kmc> but cheap places suck
07:17:55 <pikhq_> Yeah.
07:18:13 <kmc> either you really need the money, in which case you can get more anyway, or you're young and healthy and single, in which case you probably don't want to live in the middle of nowhere
07:18:29 <kmc> (i mean that's a false dichotomy but you get the point)
07:18:46 <pikhq_> Well, you're presuming a fairly high level of skill.
07:18:53 <pikhq_> Which makes the dichotomy pretty applicable.
07:19:27 <kmc> well also you might be stuck in the middle of nowhere for other reasons
07:20:19 <kmc> personally i think working from home is Not For Me
07:20:34 <pikhq_> I've done that. I've learned the hard way that it's Not For Me.
07:20:47 <kmc> why?
07:21:16 <pikhq_> I've discovered I'm not very productive in a home environment at all.
07:21:19 <kmc> one problem for me was the lack of separation between "work" and "not-work", meaning I'd spend all day not-working but also spend all day feeling guilty about the fact that I should be working
07:21:25 <pikhq_> Like some mental switch in my head goes "home" = "fuck around"
07:21:51 <kmc> with a physical office job I might enter that state too but only for 8-10 hours at a time :)
07:21:59 <Sgeo> Nohjf
07:22:01 <Sgeo> Niughji
07:22:02 <Sgeo> Night
07:22:06 <kmc> O_O
07:22:08 <kmc> 'night Sgeo
07:22:08 <monqy> night sgeo
07:22:48 <kmc> the other problem was lack of contact with my coworkers and employers
07:22:59 <kmc> just seeing them around being productive makes me more productive
07:23:12 <kmc> it's not about explicit communication
07:23:19 <pikhq_> That, too, is a factor.
07:23:23 <kmc> (though in my experience with WFH we were also bad about explicit communication)
07:23:55 <kmc> some companies have employees who WFH most of the time and come in like one day a week
07:23:58 <kmc> maybe i'd like that
07:26:49 <shachaf> I may have an ingrown fingernail.
07:26:59 <kmc> sucks :(
07:27:14 <shachaf> Hopefully it'll pass on its own. Sometimes that happens.
07:27:21 <kmc> really?
07:28:48 <shachaf> Well, sometimes I think "this might be an ingrown fingernail" and then the thing passes on its own.
07:28:52 <kmc> heh
07:29:03 <kmc> is this a subtle hint that the previous topic is less pleasant than an ingrown fingernail
07:29:29 <shachaf> I think the previous topic was *more* pleasant than an ingrown fingernail, come to think of it.
07:29:44 <shachaf> But if I'm going to suffer, why not share it with the rest of you?
07:29:51 <kmc> why not share it with wli
07:31:18 <shachaf> What's a place where I can ask experts questions about category theory without bothering to figure out anything about category theory, including what my question means?
07:31:32 <kmc> is the answer "#haskell"?
07:31:50 <shachaf> The answer is probably "don't".
07:32:59 <kmc> i mean probably the best reason to take a pay cut for a job using Haskell specifically
07:33:08 <kmc> is that it's a proxy for the kind of people you'll be working with
07:33:40 <kmc> but i think the dollar value there is pretty low
07:34:44 <kmc> i'm not sure how much it tells you versus being extra attentive during the process of interview etc.
07:35:04 <kmc> (i think it's much more valuable in the other direction, for companies assessing candidates)
07:35:06 <pikhq_> kmc: Also, much more relevant if you're working in the office.
07:35:07 <shachaf> Well, in this case it's not just "the kind of people" but a specific group of people in particular.
07:35:33 <kmc> right
07:37:23 <kmc> pikhq_, why more relevant if you're working in the office?
07:38:16 <kmc> by "kind of people" i mean that they're probably pretty smart and have some respect for sophisticated and unconventional approaches, stuff like that
07:38:29 <kmc> not really like the personality aspect
07:39:10 <kmc> i'm thinking of stuff that is relevant if you're working together on some code, whether or not you're in the same physical location
07:40:20 <pikhq_> Ah.
07:40:50 <kmc> i doubt you can infer that much about personality from someone's choice of programming language
07:41:08 <kmc> except for Lisp of course
07:41:25 <pikhq_> :P
07:41:38 <kmc> Lisp programmers are all geniuses from a higher plane of existence, tragically misunderstood in this brutal, unenlightened era
07:42:08 -!- cheater has quit (Ping timeout: 240 seconds).
07:42:34 <kmc> destined to die young and crazy of syphilis, like the great painters and writers
07:42:46 <pikhq_> Also doomed to die rich.
07:42:51 <pikhq_> :P
07:42:58 <kmc> no hackers are painters/writers
07:43:07 <kmc> dying rich is super nega-cred for those folks
07:43:21 <kmc> you're supposed to die poor and then have your art become ultra-valuable hundreds of years later
07:43:23 <pikhq_> Then what about Paul Graham?
07:43:30 <pikhq_> Oh, wait, right. Do as I say, not as I do.
07:43:41 <kmc> :D
08:00:15 -!- cheater has joined.
08:41:16 -!- cheater has quit (Ping timeout: 240 seconds).
08:59:12 -!- GreaseMonkey has quit (Quit: The Other Game).
09:06:56 -!- cheater has joined.
09:12:24 -!- pikhq_ has quit (Ping timeout: 252 seconds).
09:12:25 -!- pikhq has joined.
09:34:11 -!- augur has quit (Read error: Connection reset by peer).
09:34:33 -!- augur has joined.
09:49:15 <fizzie> There's some sort of a thing that in some PDF files, evince has replaced capital-sigma sum signs with large dots. This is not the first such file I've seen.
10:08:43 -!- elliott has joined.
10:08:51 <elliott> -NickServ- Last failed attempt from: elliott!~elliott@c-69-181-214-206.hsd1.ca.comcast.net on Jan 13 03:36:38 2012.
10:09:01 <elliott> My nick, fucker.
10:09:32 -!- Vorpal has joined.
10:09:41 <shachaf> Oh my, is that my IP address?
10:09:43 <shachaf> (No.)
10:10:01 <fizzie> elliott: "My, nickfucker."
10:15:08 <monqy> my oh my
10:15:13 <monqy> nickfuckers can only mean trouble
10:16:11 <elliott> 07:09:38: <kmc> i was talking about this in #haskell-blah but wli took over with his AMERIKKKA rants so now y'all get to hear about it
10:16:21 <elliott> shachaf: I'm so glad I didn't listen to you when you told me to join -blah.
10:17:09 <kmc> hi elliott
10:17:13 <shachaf> elliott: FASCIST
10:17:24 * shachaf expected to be asleep a couple of hours ago.
10:17:25 <elliott> hi monqy
10:17:26 <elliott> *kmc
10:17:38 <shachaf> And by "expected" I mean "planned but didn't really expect".
10:17:50 <monqy> hi elliott
10:18:49 * Lymia flails
10:18:50 <elliott> shachaf: You should pay someone to knock you unconscious at a prearranged time.
10:18:52 <Lymia> CRAP CRAP CRAP
10:18:57 <Lymia> Run under valgrind? No segfault
10:19:01 <Lymia> Run without valgrind? Segfault
10:19:02 <shachaf> elliott: I'll be happy to pay you to do that.
10:19:03 <Lymia> Heisingbug... :(
10:19:17 <elliott> shachaf: Okay. My going rate is $2,000/knockout.
10:19:19 <shachaf> Lymia: Does valgrind report errors?
10:19:26 <Lymia> shachaf, I'm going to examine that
10:19:29 <shachaf> elliott: I have these wooden nickels...
10:19:56 <elliott> shachaf: [Hilarious Monkey Island quote I'm too tired to think of.]
10:20:11 <elliott> "In the Mayan calendar, 2012 is suppose to be a year of deep cleansing and rebirth for the world. In this spirit, I’ve been branching out into new fields and broadening my conceptual view of software development."
10:20:13 <elliott> Thanks, Mayans.
10:20:16 <elliott> Thayans.
10:21:22 <monqy> i have these nickel woodens
10:21:25 <monqy> absolutely useless
10:22:54 <elliott> wickel noodens
10:22:56 <shachaf> elliott: Why am I not on that list?
10:23:12 <shachaf> "shachaf, IRC idling genius"
10:24:10 <kmc> elliott, yeah i lolled at that post
10:24:13 <elliott> shachaf: Wait, what list?
10:24:29 <shachaf> elliott: From the post you just quoted.
10:24:46 <elliott> Oh. I didn't actually read beyond that.
10:25:05 <elliott> Wait, it's literally just a list of people who use functional languages?
10:25:07 <shachaf> Well, thanks for nothing, elliott. Thfnelliott.
10:25:25 <shachaf> elliott: No, it also has Haskell B. Curry.
10:26:06 <elliott> shachaf: He programmed in ML.
10:26:19 <elliott> It's like how Jesus was Jewish.
10:26:32 <elliott> 07:21:59: <Sgeo> Nohjf
10:26:32 <elliott> 07:22:01: <Sgeo> Niughji
10:26:32 <elliott> 07:22:02: <Sgeo> Night
10:26:35 <elliott> godrijgromorngoirdg
10:26:38 <elliott> mogirdg nogidr
10:26:39 <elliott> good morning
10:26:49 <monqy> hi ieelieiote
10:26:53 <monqy> hoe eihgleiont
10:26:55 <monqy> hi helioent
10:26:56 <elliott> 07:26:49: <shachaf> I may have an ingrown fingernail.
10:26:57 <monqy> hi heliot
10:26:59 <monqy> hi elliott
10:26:59 <shachaf> elliott: He programmed in ML like how Jesus was Jewish?
10:27:04 <elliott> shachaf: I thought that wasn't possible.
10:27:08 <elliott> At least ais said that wasn't possible.
10:27:16 <kmc> hey guys i like haskell and fp, i have nothing to say about it, just wanted you all to know
10:27:18 <elliott> Also, yes.
10:27:49 <elliott> kmc: Here's my spj shrine *strokes framed photo lovingly*
10:28:00 <elliott> Wait, why haven't I set up an SPJ shrine yet?
10:28:06 <elliott> That's like #1 on my list of things to do.
10:28:51 <elliott> 07:43:21: <kmc> you're supposed to die poor and then have your art become ultra-valuable hundreds of years later
10:29:02 <elliott> kmc: which is why you should found a startup that everybody hates and is lost to the mists of time
10:29:09 <elliott> make sure that the servers keep running when you die
10:29:14 -!- Lymia has changed nick to Madoka-Kaname.
10:29:22 <elliott> and in a few hundreds of years everyone will rediscover it and it'll become the talk of the web2.0sphere
10:29:32 <elliott> artist style(tm)
10:29:54 <monqy> web2.0 in hundreds of years?
10:30:02 <monqy> haven't they moved on to web a billion point oh by then
10:30:10 <elliott> monqy: no its classique
10:30:16 <elliott> "Father of Haskell foundations" hahaha i didn't even
10:30:18 <elliott> see that part
10:30:19 <monqy> oh a special sphere
10:30:25 <monqy> for web2.0 archaeologists
10:31:20 <elliott> everyone has their own sphere in the future
10:31:57 <shachaf> elliott: Oh, you got that post from /r/haskell.
10:32:00 <shachaf> I like how it has 4 points.
10:32:22 <shachaf> I should do some experiments on how bad I can make posts before they get downvoted on /r/haskell.
10:32:33 <elliott> shachaf: I'm balancing the satisfaction of commenting with something like "You forgot to add the content." and the chance that it'll make people think I'm a jerk and not upvote me on SO.
10:32:53 <shachaf> elliott: That's why you make the second account.
10:33:01 <elliott> http://stackoverflow.com/questions/8834582/is-haskell-a-lisp-dialect ;; this question got 3 upvotes
10:33:09 <shachaf> Anyway, people upvote jerks on SO.
10:33:22 <elliott> http://stackoverflow.com/questions/8829194/why-are-types-with-no-data-constructors-valid ;; this one got 10
10:34:16 <shachaf> Did you know that typedefs can shadow variable names in C?
10:34:36 <shachaf> int foo; void v() { typedef int foo; ... }
10:34:47 <elliott> shachaf: Isn't that what causes that context-sensitive bit?
10:35:00 <elliott> "Waterstones, the bookshop, has dropped the apostrophe in its trading name and logo, sparking outrage among some of its customers.
10:35:00 <elliott> "It's just plain wrong", said John Richards, chairman of the Apostrophe Protection Society"
10:35:23 <shachaf> "Its just plain wrong", wrote John Richard's, chairman of the Apostrophe Protection Society"
10:35:30 <elliott> *'Society
10:35:39 <shachaf> "Its just plain wrong", wrote John Richard's, chairman of the Apostrophe Protection *'Society"
10:35:50 <fizzie> I was going to go with S'ociety, but that's all right too.
10:36:08 <monqy> ch'man
10:36:14 <monqy> o' th'
10:36:29 <shachaf> CAN YOU FIND ALL OCCURENCES OF THE LTTER S IN THIS SENTENCE? IF YOU FIND ALL SIX, YOUR IQ IS AT LEAST 400
10:36:37 <monqy> 'postraph' 'rotectin'
10:36:48 <elliott> apo'strophe
10:36:58 <elliott> "thanks for the trophe" --apo
10:37:41 <shachaf> The apostrophe, named after the apostles of Jesus Christ.
10:38:08 -!- pikhq_ has joined.
10:38:09 -!- pikhq has quit (Ping timeout: 252 seconds).
10:39:31 <elliott> Since I don't know much C I shall upvote you, but from what I DO know; WHY not use C++ instead? You'll just have your instance of a pushbutton, and call functions from within it, Instead of having 430983852 different functions in a really messy API. Tidyness disappears. However, for those of you who are experienced in both C and C++, what is the benefits of programming like a nutcracker (in C) ?
10:39:31 <shachaf> elliott: "Of course, for the single-constructor, single-item cases, newtype is preferred over data."
10:39:50 <kmc> what
10:39:53 <elliott> shachaf: Don't. I already held back the tears.
10:39:55 <kmc> nutcracker?
10:40:05 <elliott> kmc: if i suddenly say something really weird it's a quote
10:40:11 <elliott> unless it's me
10:40:12 <kmc> i got that, but?
10:40:14 <elliott> oh
10:40:21 <elliott> http://www.reddit.com/r/programming/comments/oek2t/any_interest_in_a_c_binding_to_wxwidgets_from/c3gp4si
10:40:31 <elliott> interpretation is left to the reader
10:42:00 <shachaf> elliott: I'm going to write a preprocessor for GHC that replaces all instances of "data" with "newtype" if the file remains valid.
10:43:03 <elliott> shachaf: I bet the author of that comment thinks that "newtype" exists as a separate keyword for historical reasons. :(
10:44:21 <shachaf> From today, 430983852 will be known as "the C++ overhead constant".
11:05:35 -!- monqy has quit (Quit: hello).
11:10:11 <elliott> hi
11:11:59 <kmc> <elliott> everyone has their own sphere in the future
11:12:02 <kmc> this, a thousand times
11:13:22 <elliott> kmc: deep
11:13:29 <kmc> <elliott> Wait, it's literally just a list of people who use functional languages? <shachaf> elliott: No, it also has Haskell B. Curry. <elliott> shachaf: He programmed in ML.
11:13:36 <kmc> irrelevant because Haskell was the first functional language
11:13:48 <kmc> ML is "almost-functional"
11:13:59 <kmc> source: _Gentle Introduction to Haskell 98_, chapter 1
11:16:59 <kmc> <shachaf> CAN YOU FIND ALL OCCURENCES OF THE LTTER S IN THIS SENTENCE? IF YOU FIND ALL SIX, YOU HAVE LUPUS
11:20:32 <elliott> kmc: Well, I wouldn't really call ML functional either. I guess I'm a zealot.
11:20:38 <Jafet> kmc, irc is hard real time
11:20:56 <kmc> IRC is real, hard time
11:20:59 <kmc> (for computer hacking)
11:21:16 <kmc> elliott, a language can't be considered functional unless it uses {- -} for multi-line comments
11:21:23 <kmc> as should be trivially obvious to the most casual observer
11:21:45 <kmc> (in college we had a house office named Most Casual Observer)
11:21:54 <kmc> (their job was to observe things casually and thus know all)
11:22:09 <elliott> kmc: i wonder how the {--} syntax came abou
11:22:09 <elliott> t
11:22:40 <Jafet> Well, it combines the worst bits of imperative programming languages, that we don't have a use for any more
11:22:43 <Jafet> {} and --
11:22:50 <elliott> :D
11:23:28 <kmc> they represent a pair of dwarvish fire-daggers
11:23:36 <kmc> as should be trivially obvious to the most casual observer
11:23:43 <fizzie> The most causal observer.
11:24:05 <kmc> together they cast a powerful Spell of Warding +5 which prevents execution of the code by any compiler with armor class 12 or lower
11:26:43 <fizzie> fungot: All Witchaloks are hermaphroditic androgynites.
11:26:44 <fungot> fizzie: oh, no, man... i forgot. i've got some mashed potatoes over here, it means you're a math teacher.
11:27:06 <kmc> another benefit is that you can write {-∗-} should you need to represent Darth Vader's TIE Fighter Advanced x1 within Haskell source code
11:27:47 <elliott> "the ideal comment syntax is smalltalks"
11:28:05 <kmc> seriously, the Gentle Introduction does say that ML and Scheme are "almost-functional"
11:45:06 <elliott> Alas, GHC 7.0 still cannot handle equality superclasses:
11:45:06 <elliott> Rep t ~ rep
11:45:09 <elliott> Not again!
11:45:56 <kmc> alas and alack
11:46:32 -!- Phantom_Hoover has joined.
11:46:58 <elliott> this is way too difficult
11:50:22 <kmc> it works in newer GHC
11:50:44 <Phantom_Hoover> blomg
11:51:00 <Phantom_Hoover> elliott, please send me messages so I don't look like an idiot again.
11:51:38 <elliott> @tell Phantom_Hoover Hi.
11:51:38 <lambdabot> Consider it noted.
11:51:48 <Phantom_Hoover> Better.
11:51:49 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
11:51:53 <Phantom_Hoover> @messages
11:51:53 <lambdabot> elliott said 15s ago: Hi.
11:55:42 <kmc> @tell lambdabot u suck
11:55:43 <lambdabot> Nice try ;)
11:56:22 <fizzie> @tell me something new
11:56:22 <lambdabot> Consider it noted.
11:56:23 <kmc> T PANTS THESE AREN'T THE BALLS YOU'RE LOOKING FOR
11:56:30 <fizzie> I wonder how many messages "me" has.
12:00:28 <Phantom_Hoover> me's not an allowed nick, is it?
12:01:07 <fizzie> Information on me (account spb): blah blah blah.
12:01:10 <fizzie> It's someone else's.
12:08:13 <Phantom_Hoover> Whoever it is, they have MemoServ set up to prevent them getting sent anything.
12:08:26 <elliott> * me :Nick/channel is temporarily unavailable
12:08:36 <Phantom_Hoover> And they haven't been seen for 40 weeks in any case.
12:08:39 -!- elliott has changed nick to elliott_.
12:08:41 <elliott_> @messages?
12:08:42 <lambdabot> Sorry, no messages today.
12:08:46 -!- elliott_ has changed nick to ehird.
12:08:48 <ehird> @messages?
12:08:48 <lambdabot> Sorry, no messages today.
12:08:50 -!- ehird has changed nick to elliott.
12:09:03 -!- elliott has changed nick to Phantom__Hoover.
12:09:05 <Phantom__Hoover> @messages?
12:09:05 <lambdabot> Sorry, no messages today.
12:09:07 -!- Phantom__Hoover has changed nick to elliott.
12:09:24 <Phantom_Hoover> How does lambdabot deal with ident stuff?
12:10:36 <elliott> It doesn't.
12:11:47 <fizzie> They haven't used the "me" nick in 40 weeks, you mean; the account is online right now.
12:12:45 <fizzie> The owner of "you" similarly hasn't used you in 62 weeks.
12:12:57 <fizzie> I'm thinking nicknames for punnery or such.
12:15:46 -!- ais523 has joined.
12:16:05 <elliott> @hoogle try
12:16:05 <lambdabot> Control.OldException try :: IO a -> IO (Either Exception a)
12:16:06 <lambdabot> System.IO.Error try :: IO a -> IO (Either IOError a)
12:16:06 <lambdabot> Control.Exception.Base try :: Exception e => IO a -> IO (Either e a)
12:17:13 <fizzie> Trying times.
12:18:20 <elliott> :t reads
12:18:21 <lambdabot> forall a. (Read a) => String -> [(a, String)]
12:18:42 * Sgeo wants to see an example of there being more than one element in the list
12:22:12 <kmc> me too
12:23:23 -!- cheater has quit (Ping timeout: 255 seconds).
12:23:24 <Phantom_Hoover> Is try a typeclass thing then, or not?
12:23:36 <kmc> what's "a typeclass thing"
12:23:41 <kmc> mean
12:23:48 <Phantom_Hoover> Is it a typeclass method, or based on them.
12:24:01 <Phantom_Hoover> Erm, wait, no, not based on them.
12:24:18 <Phantom_Hoover> Are those functions all independently defined, or are they parts of instances?
12:24:30 <kmc> which functions? the three that hoogle mentioned?
12:24:34 <Phantom_Hoover> Yes.
12:24:35 <Sgeo> I was able to make an Exception instance without defining any methods, somehow
12:24:55 <Sgeo> It occurs to me that that doesn't mean much
12:24:56 <elliott> Phantom_Hoover: http://hackage.haskell.org/packages/archive/base/latest/doc/html/Control-Exception.html
12:25:01 <kmc> Phantom_Hoover, those are independent functions. basically, three different generations of the exception system
12:25:04 <elliott> Exception is just
12:25:09 <elliott> toException :: e -> SomeException
12:25:09 <elliott> fromException :: SomeException -> Maybe e
12:25:13 <elliott> so no, try isn't a typeclass method.
12:25:15 <kmc> Sgeo, that's expected, and documented
12:25:21 <Phantom_Hoover> Yeah, I just checked that in ghci.
12:25:35 <Sgeo> kmc, yes, but for some reason I thought that was relevant to Phantom_Hoover's question
12:25:39 <Sgeo> When it really wasn't
12:25:40 <kmc> oh
12:26:30 <Sgeo> Eh, the things need to be Typeable?
12:26:42 <kmc> Phantom_Hoover, so in standard Haskell you have try for IOError only, and then that was generalized to a larger fixed set of exceptions (in what's now Control.OldException), and then to the extensible system in Control.Exception
12:26:56 <kmc> Sgeo, yes, the extensible exception system uses Typeable
12:29:04 <kmc> basically exceptions are dynamically typed
12:29:10 <kmc> and catching does a run-time type check
12:29:33 <ais523> <spambot> The use of the phrase "pozycjonowanie google cottages" can be considered a little bit misleading.
12:29:47 <elliott> :D
12:29:53 <kmc> is that polish or gibberish
12:30:06 <elliott> ais523: I'm glad you have correctly left alone the asd pages
12:30:08 <elliott> as they're claerly not spam
12:30:09 <ais523> I think it's a foreign language from context, polish wouldn't surprise me
12:30:13 <elliott> <Sgeo> Eh, the things need to be Typeable?
12:30:17 <kmc> seems to mean "positioning" in Polish
12:30:18 <elliott> Sgeo: that's how the entire exception system works
12:30:19 <ais523> elliott: I haven't reached them yet
12:30:41 <ais523> but meh, I'll leave them
12:30:42 <elliott> Sgeo: if you unlayer the abstractions far enough, the exception system is based on comparing two strings and using unsafeCoerce if they're equal
12:30:49 <elliott> which is: gross
12:31:29 <kmc> anything is gross if you unlayer the abstractions far enough
12:31:47 <elliott> kmc: yeah but you can still define your own Typeable instances today :P
12:31:58 <kmc> yeah that's unfortunate
12:32:36 <elliott> data a :=: b where { Refl :: a :=: a}; class TypeEq a where { typeEq :: (TypeEq b) => Maybe (a :=: b) }
12:32:41 <elliott> and a magic deriving (TypeEq)
12:32:54 <elliott> that's what we need, it would be perfectly safe ... and also really confusing
12:33:14 <kmc> you want things besides decidable equality
12:33:30 <elliott> kmc: do you? I thought that's all Exception needed
12:33:31 <elliott> cast
12:33:39 <kmc> it's convenient if you can order and hash TypeReps
12:33:47 <elliott> kmc: Typeable is useful, yeah
12:33:47 <kmc> maybe Exception doesn't need that
12:33:49 <kmc> but in general
12:33:49 <elliott> but Exception doesn't need it
12:34:06 <elliott> well i think it's kind of a misuse of Typeable, Exception wants dynamic typing and uses the reflection mechanism to accomplish it
12:34:53 <kmc> Dynamic is also implemented with Typeable, is that an abuse?
12:35:26 <elliott> kmc: well, yes :)
12:35:31 <elliott> i mean it's not terrible or anything
12:35:40 <elliott> but Typeable gives you a lot more than you need for that
12:35:44 <Sgeo> Why is the more useful function's name longer?
12:35:48 <elliott> and it definitely feels like conflating two things
12:35:54 <elliott> Sgeo: ?
12:36:03 <Sgeo> fromDynamic vs fromDyn
12:36:10 <elliott> historical reasons?
12:36:10 <kmc> yeah that's terrible
12:36:15 <Sgeo> fromDyn could easily be expressed in terms of fromDynamic
12:37:06 <kmc> elliott, I see your point
12:37:15 <Sgeo> fromDyn dyn default = fromMaybe default (fromDynamic dyn)
12:37:37 <Sgeo> from is now semantically saturated for me
12:37:38 <kmc> yes yes
12:37:40 <Sgeo> from from from
12:38:43 <kmc> fromDynamic (Dynamic t v) = case unsafeCoerce v of r | t == typeOf r -> Just r | otherwise -> Nothing
12:38:57 <kmc> that's a fun tangle
12:42:06 <elliott> kmc: haha is that seriously the implementation?
12:42:09 <kmc> yes
12:42:18 <fizzie> Funtangled particles.
12:42:20 <elliott> that scares me, I wouldn't be able to bring myself to type unsafeCoerce until I'm safely in the right branch
12:42:43 <kmc> yeah it's pretty sketchy
12:43:01 <elliott> kmc: i wonder if Dynamic is actually more efficient than an existential these days
12:43:10 <elliott> i guess (a -> TypeRep) is a bit heavier than TypeRep
12:43:29 <kmc> you mean, an existential with a Typeable constraint?
12:43:43 <kmc> *nod*
12:43:43 <elliott> yeah
12:43:51 <kmc> someone should write abenchmark
12:43:54 <elliott> at least i was told it's a deliberate optimisation of that
12:44:03 <kmc> interesting
12:44:12 <elliott> benchmarks? meh, that's work, and I might be proven wrong
12:44:23 <elliott> it's easier to sit here and make people think i'm smart for having seen the better way
12:44:30 <kmc> bravo
12:44:57 <kmc> better use some hash tables too, I hear they're O(1)
12:45:21 <elliott> O(1) EVERYTHING
12:45:33 <elliott> find :: (a -> Bool) -> HashTable k a -> Maybe a -- O(1)
12:45:53 * Sgeo pokes the argument order of that
12:46:28 <Sgeo> Didn't I once yell at Factor for its sensitivity to argument order? And for the endless required imports?
12:46:32 <Sgeo> Yet Haskell does both
12:46:35 <kmc> haha
12:46:54 <kmc> but Haskell is the best language
12:47:07 <elliott> "sensitivity to argument order"?
12:47:08 <kmc> so sensitivity to argument order and endless required imports must somehow be virtues
12:47:34 <elliott> anyway that argument order is obviously correct
12:47:39 <Sgeo> elliott, a decision about order of arguments can make a function easier or harder to use
12:47:41 <kmc> i'm gonna say that sensitivity to argument order makes you pay attention to something important that the Java Monkeys ignore
12:47:44 <kmc> doesn't really matter what
12:48:07 <kmc> and required imports are great for all those static analysis and refactoring tools Haskell has
12:48:25 <kmc> (by "has" I mean "someone would have to write from scratch", but that's a matter of trivial engineering)
12:50:21 <elliott> Sgeo: Yeah, API design matters. That's a big language flaw.
12:51:05 <elliott> It's maybe annoying in a language where curried functions (<-- I will kill anyone who objects to this terminology) aren't the standard, but when they are it's obviously a benefit, since partial application is so common.
12:51:08 <Sgeo> The thing is argument order is a more significant part of the API in Haskell and Factor than it is in Python
12:51:48 <elliott> Relatedly, I consider it a /good/ thing if functions with 5+ arguments are a pain to use; it's a sign you should be factoring out those arguments into data types, or taking a more combinator-based approach, etc. (Although the record hack is acceptable for interfacing with foreign libraries at a low level.)
12:52:09 <elliott> kmc: You're really grumpy.
12:52:36 <Sgeo> elliott, I love how the Haskell standard libraries got API design wrong so often
12:52:39 <kmc> it's a good thing that <language flaw> because <flimsy rationalization>
12:52:44 <Sgeo> :t Map.lookup
12:52:45 <lambdabot> Couldn't find qualified module.
12:52:48 <Sgeo> :t Data.Map.lookup
12:52:50 <lambdabot> forall k a. (Ord k) => k -> M.Map k a -> Maybe a
12:52:55 <elliott> Sgeo: They did?
12:53:05 <Sgeo> :t head
12:53:05 <elliott> That's the correct way around.
12:53:06 <lambdabot> forall a. [a] -> a
12:53:14 <kmc> elliott, I may be grumpy but I'm right, and that's all that counts on The Internet
12:53:27 <elliott> kmc: I don't consider it a rationalisation of a language flaw; I have no real vested interest in making people think Haskell is good.
12:53:48 <kmc> elliott, which "record hack"? the one where your function takes a big record, and you provide a default value for that record, and callers can use record-update syntax?
12:53:57 <elliott> Sgeo: head is evil; what's that got to do with Map.lookup?
12:54:06 <Phantom_Hoover> Wait, why's head evil.
12:54:08 <Phantom_Hoover> Oh, wait.
12:54:11 <kmc> > head []
12:54:12 <lambdabot> *Exception: Prelude.head: empty list
12:54:14 <Sgeo> head is evil is a separate example of bad API design
12:54:20 <Sgeo> :t lookup
12:54:20 <lambdabot> forall a b. (Eq a) => a -> [(a, b)] -> Maybe b
12:54:22 <kmc> so much bad API design in Prelude
12:54:33 <elliott> kmc: Yes. It's a blatant hack, and it's awful, but if you want to interface with something that uses keyword arguments or whatever at a low level...
12:54:59 <kmc> elliott, can you explain what makes it a "blatant hack" and "awful"?
12:55:01 <elliott> kmc: I'd usually just bind N-parameter-for-huge-N functions directly, since they're almost always from languages without keyword arguments, anyway (since almost all languages don't have keyword arguments).
12:55:10 <Sgeo> Isn't it preferred to make a function that takes the object immediately, so you could try different keys with the partially applied function, etc?
12:55:18 <kmc> i like that trick and I don't see what it has to do with "interfacing with foreign libraries at a low level"
12:55:32 <elliott> kmc: You're misinterpreting me.
12:55:40 <kmc> it's common to have a procedure with a bunch of customizable behavior, for which most callers only want to change a few parts
12:55:45 <elliott> I'm not saying that the trick exists to do such interfacing.
12:56:02 <kmc> you're saying it's gross and has cooties and should only be used when touching the unclean terrible world of anything not Haskell
12:56:14 * elliott yawn
12:56:15 <kmc> but why
12:56:21 <kmc> why is it a hack and awful
12:56:24 <elliott> I'm not going to bother if you're just going to twist everything I say into "HASKELL R AWSUM".
12:56:43 <kmc> ok
12:57:01 <kmc> well i'm going to continue to use this "blatant hack" in APIs i design
12:57:17 <kmc> until I see a problem with it or someone points one out to me
12:57:21 <kmc> if you're fine with that, so am i
12:57:34 <elliott> I also don't see why you're blowing a parenthical remark in a completely different context out of proportion...
12:58:40 <elliott> I do consider most uses of the record thing a hack, and I do think it's fairly awful, but I was talking about it in a completely different context to the use-case you suggested.
12:59:01 <kmc> <kmc> why is it a hack and awful
12:59:14 <kmc> and which context?
12:59:33 <kmc> you just keep saying it's bad without explaining why
13:00:15 <elliott> kmc: The context I was talking about is the awkwardness of using functions with a large number of parameters (which a lot of people think explicitly named arguments like in Smalltalk (not overriding-defaults style like in Python or whatever) alleviates).
13:00:37 <kmc> ok
13:01:38 <kmc> i agree that functions with a large number of required parameters are bad
13:01:46 <elliott> For representing something like a Smalltalk-named-argument call, a record with a default is supremely ugly because you have to use "undefined" or whatever as a default, and failing to specify an argument is just silently accepted.
13:02:16 <Sgeo> What about using Nothings as a default?
13:02:21 <elliott> I do think that a lot of the procedure-with-a-bunch-of-customisable-behaviour situations can be done more nicely combinator-style or similarly, but records-with-defaults are fine for such configuration.
13:02:25 <Sgeo> Although admittedly it's ugly to call, but still
13:02:36 <elliott> Sgeo: That doesn't solve anything, since the underlying function will have to fromJust them.
13:02:58 <Sgeo> Oh, when all the things should be required?
13:03:03 <Sgeo> Don't provide a default then
13:03:18 <Sgeo> Oh, right, SomeRecord {} fills things in with undefined?
13:03:20 <Sgeo> :/
13:03:27 <kmc> yeah, at least GHC will warn though
13:03:38 <elliott> kmc: Anyway, my main point was that a lot of people point to e.g. an OpenGL or Win32 call with a billion parameters and say "look how much cleaner this would be if we you named arguments; therefore it's a language flaw not to have them", but in reality those functions have more like 3 parameters, it's just that those parameters are data-types left implicit because of limited abstraction facilities.
13:03:50 <kmc> yeah
13:03:56 <elliott> Or sometimes it's even that one function is doing the work of five because of limited composability, etc.
13:04:15 <elliott> Not having named arguments simplifies the language and discourages such things. Of course you have to make up for it with sufficient abstractional facilities.
13:04:28 <kmc> glLoadMatrix16(float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float)
13:04:49 <kmc> i think the record trick is fine (not perfect) when you want to selectively override defaults
13:04:50 <elliott> Is that a real example? :D
13:04:54 <kmc> i don't think so
13:04:56 <elliott> :(
13:05:24 <kmc> for a while i worked on a C++ codebase where one of the most important classes had a constructor like this:
13:05:41 <kmc> Thing::Thing(Foo, const Bar*, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool)
13:05:52 <kmc> all of those bools had default values; some were true and some were false
13:06:18 <kmc> also you had to be careful because the order would change between development and production branches, as new features were merged
13:06:22 <elliott> Was the class called Thing too?
13:06:25 <kmc> no
13:06:26 <elliott> :(
13:06:27 <kallisti> I can't think of a situation where named parameters beats a properly designed abstraction.
13:06:36 <elliott> kallisti: naming parameters
13:07:04 <kallisti> well, it's better at that I suppose.
13:07:04 <kmc> kallisti, overriding default settings
13:07:14 <kallisti> meanwhile data structures are better at naming record fields.
13:07:15 <kmc> for example how would you replace this with a "properly designed abstraction"? http://hackage.haskell.org/packages/archive/concorde/0.1/doc/html/Algorithms-Concorde-LinKern.html#t:Config
13:07:27 <elliott> [[
13:07:27 <elliott> (I wonder: is this for beginn...@haskell.org ?)
13:07:27 <elliott> toA_IO = openFile (dir "toA") WriteMode :: IO Handle
13:07:27 <elliott> fromA_IO = openFile (dir "fromA") ReadMode
13:07:27 <elliott> -- used as global values
13:07:27 <elliott> toA = unsafePerformIO toA_IO --
13:07:29 <elliott> fromA = unsafePerformIO fromA_IO --
13:07:31 <elliott> ]]
13:07:33 <elliott> thank god for beginners
13:07:40 <elliott> s/\?\)/?)\n[...]\n/
13:07:56 <kmc> kallisti, maybe what you meant by "properly designed abstraction" is in fact a record like this
13:08:02 <kallisti> kmc: yes
13:08:02 <kmc> but i don't think it's much of an abstraction
13:08:16 <kallisti> kmc: defConfig is your default parameter set
13:08:18 <kmc> it's just a hodgepodge of all the ways you can change the behavior of 'tsp'
13:08:19 <elliott> kmc: TBH I'd probably represent that like...
13:08:36 <elliott> Well, similarly, I guess. But with a Monoid interface.
13:08:42 <elliott> That doesn't really buy you all that much in this situation, though.
13:08:47 <kmc> in a language with default keyword args I probably wouldn't define a separate type
13:08:53 <elliott> Hmm, do I actually want a Monoid interface there.
13:08:53 <kmc> for simplicity's sake
13:09:07 <kmc> the Monoid instance is sometimes useful; I think it's dubious here
13:09:08 <elliott> kmc: Anyway, I think that's actually preferable to named parameters.
13:09:11 <elliott> Because you can pass around Configs.
13:09:20 <fizzie> elliott: gluProject(GLdouble, GLdouble, GLdouble, const GLdouble *, const GLdouble *, const GLint *, GLdouble*, GLdouble*, GLdouble*). (Okay, so last three are just output parameters; they pretty consistently take 4x4 matrices as pointers, and only go up to 4-vectors as separate parameters.)
13:09:32 <elliott> fizzie: SO ELEGANT.
13:09:32 <kallisti> to the function user it's not a huge difference. To the implementor it's a bit more work to define a data type and a default constructor.
13:09:41 <kmc> elliott, sure, you can, but you usually don't need to
13:09:47 <elliott> kallisti: "default constructor"? you have to specify the defaults anyway :P
13:09:56 <kallisti> true.
13:10:01 <kmc> an airplane is better than a car because it can also fly
13:10:03 <kallisti> it's just abit more typing is all.
13:10:12 <Phantom_Hoover> fizzie, why 4-vectors?
13:10:13 <elliott> kmc: If you used more-notation, I think you could specify the defaults inline with the fields.
13:10:14 <kmc> however the airplane is harder to build and more expensive ;P
13:10:15 <kallisti> same amount of information though, I suppose. (except you also need types in a statically typed language of course)
13:10:24 <kmc> M O R E N O T A T I O N
13:10:27 <Phantom_Hoover> Has OpenGL cornered the 4D gaming market while I wasn't looking?
13:10:35 <kmc> haha
13:10:38 <fizzie> elliott: GLint gluUnProject4(GLdouble, GLdouble, GLdouble, GLdouble, const GLdouble *, const GLdouble *, const GLint, GLdouble, GLdouble, GLdouble*, GLdouble*, GLdouble*, GLdouble*); /* real function */
13:10:40 <elliott> kmc: http://www.haskell.org/haskellwiki/User:Zzo38/Proposal_for_more-notation#Fields_in_record_syntax
13:10:40 <Phantom_Hoover> /kick kmc
13:10:42 <fizzie> Phantom_Hoover: Homogenous coordinates.
13:10:47 <elliott> fizzie: :D
13:10:53 <kmc> Phantom_Hoover, perspective transformation is linear with homogeneous coordinates
13:11:10 <kmc> meaning that (x, y, z, w) represents the 3D point (x/w, y/w, z/w)
13:11:23 <kallisti> and then for the cases in Python where a function basically treats its parameter set as a hash table you'd use some equivalent mapping structure.
13:11:25 <fizzie> elliott: Sorry, I droppeded one star.
13:12:05 <kmc> you start with some vectors where w=1 and then get something else
13:12:12 <kmc> and renormalize them before you draw them
13:12:44 <kallisti> also I can't, for the life of me, figure out how named parameters are supposed t work in conjunction with currying.
13:12:45 <kmc> believe this corresponds to 3D projective space, where the extra "point at infinity" is (anything, anything, anything, 0)
13:14:50 <kallisti> some other minor issues that could be amended are that named parameters require you to know the names of parameters. In Haskell these are lovely things such as "m f g h x y z". Also, currently documentation doesn't list parameter names and doing so look pretty ugly in most cases.
13:14:52 <fizzie> kmc: It's a "sphere at infinity" with antipodal points made the same; there's a difference between (1, 0, 0, 0) and (0, 1, 0, 0) even though they're both "at infinity".
13:15:08 <kmc> hmm
13:15:10 <fizzie> But (1, 0, 0, 0) and (-1, 0, 0, 0) are the same thing.
13:15:15 <kallisti> these are problems with introducing a language feature into an existing codebase rather than problems with the feature itself.
13:15:26 <kmc> interesting
13:15:43 <elliott> wait why the fuck am i amending my answer to help this guy, their accept rate is 33%
13:15:57 <kallisti> elliott: DO IT
13:15:59 <elliott> kmc: I bet you didn't even LOOK at that more-notation link.
13:16:11 <kmc> elliott, I've seen the more notation...
13:16:34 <elliott> kmc: Yeah, but did you know it can simplify default parameter records?!
13:16:44 <elliott> It's almost as if it's ten different notations in one!
13:16:50 * kallisti begins writing a proposal for "not enough" notation
13:16:52 <kmc> it's too early to understand this
13:16:59 <kmc> i was there in #haskell when zzo38 first arrived
13:17:16 <elliott> You can thank me for that.
13:17:20 <kmc> haha
13:17:34 <kmc> now i have a better understanding of all the ways Haskell is unlike INFORM 7 and Magic: the Gathering
13:17:44 <elliott> Too many ways, is the answer!
13:18:59 <fizzie> It's like the projective plane is the R^2 plus one "point at infinity" for each class of parallel lines, so that the added points form a single "line at infinity". The Riemann sphere is the version where there's a plane and a single point.
13:19:52 <kmc> aha, that makes some sense
13:19:57 <kallisti> elliott: WHAT IF YOU COULD PUT THE DEFAULT VALUES IN THE RECORD SYNTAX
13:20:09 <kallisti> data REcord = { x :: Foo = YEAAAAh }
13:20:50 <kallisti> actually
13:20:51 <elliott> hmm... GArrowSum is confusing, I don't think it lets you actually have a conditional
13:20:54 <elliott> oh wait yes it does duh
13:20:54 <kallisti> you could have it this
13:21:03 <kallisti> data REcord = { x = YEAAAAh :: Foo }
13:21:05 <Sgeo> Would be nice if you could say that the things in the record have no defaults
13:21:10 <kallisti> and the :: could be omitted because of type inference.
13:21:13 <Sgeo> So Record {} is a compile-time error
13:21:24 <kallisti> Sgeo: that would be the default, sir.
13:21:34 <kallisti> the default is to have no defaults. :P
13:21:44 <elliott> kallisti: you did not click the more notation link
13:21:51 <kallisti> I did not
13:21:54 <kallisti> does it involve the "more" keyword?
13:22:16 <kallisti> the main reason I didn't click is that gnome-terminal's link regex breaks on colons
13:22:34 <kallisti> so to click it I would have to actually DRAG AND DROP MY MOUSE CURSOR OVER IT AND COPY AND PASTE IT MANUALLY
13:22:37 <kallisti> yikes
13:23:20 * kmc sleep
13:24:19 <fizzie> Phantom_Hoover: Also the homogenous coordinates are nice because when all your vectors are normalized [x y z 1]^T vectors you can do translation (and any affine operations) by multiplying with a 4x4 matrix [x x x x; x x x x; x x x x; 0 0 0 1] to get another [x' y' z' 1]^T, so you can just concatenate sequences of translations and rotations and whatever by multiplying them all up.
13:28:58 <kallisti> I think once I have a working implementation of portal chess I'll start working on a generic interface to define chess games with arbitrary pieces, movement rules, starting positions, etc.. and have that available as a different module.
13:29:57 -!- sebbu2 has joined.
13:29:58 -!- sebbu2 has quit (Changing host).
13:29:58 -!- sebbu2 has joined.
13:30:24 <kallisti> I'm not sure but I /think/ type families would be useful for this.
13:30:27 -!- itidus20 has joined.
13:30:42 <fizzie> elliott: Can't seem to find anything that'd take >13 parameters, though gluLookAt takes 9 doubles in a row (three 3-vectors), which is at least nice and uniform.
13:33:04 -!- itidus21 has quit (Ping timeout: 240 seconds).
13:33:24 -!- sebbu has quit (Ping timeout: 240 seconds).
13:34:46 <fizzie> Bah. The "sum is denoted by ●" was one thing, but this thing-as-seen-by-evince also has limits as "N → °", and it's not talking about zero there.
13:34:57 -!- sebbu3 has joined.
13:34:58 -!- sebbu3 has quit (Changing host).
13:34:58 -!- sebbu3 has joined.
13:35:01 <fizzie> Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
13:35:01 <fizzie> Producer: Acrobat Distiller Command 3.01 for Solaris 2.3 and later (SPARC)
13:35:07 <fizzie> Going to blame Adobe here.
13:37:35 <kallisti> fizzie: how do you render that white dot on white paper?
13:38:00 -!- sebbu2 has quit (Ping timeout: 240 seconds).
13:38:32 <kallisti> fizzie: in fact all of that text is white
13:38:35 <kallisti> isn't it jujst going to be invisible?
13:38:39 <kallisti> :)
13:39:43 <fizzie> Bah. The "sum is denoted by " was one thing, but this thing-as-seen-by-evince also has limits as "N → °", and it's not talking about zero there.
13:40:07 <kallisti> oooooooh
13:40:08 <kallisti> now I see.
13:40:11 <kallisti> pleasing to the eyes.
13:41:50 <kallisti> I think type-directed name resolution isn't too terrible of an idea
13:41:52 <kallisti> the only problem
13:41:56 <kallisti> is it needs a better name.
13:42:14 <kallisti> also it's playing "how many ways can we overload . ? " game
13:42:18 <kallisti> +the
13:42:28 <fizzie> (Maybe I should've s/(●|N → °)/$1/g instead.)
13:45:12 <elliott> :D
13:45:41 <kallisti> if ' weren't already an identifier character, record'field would be a good alternative to using .
13:45:42 <elliott>
13:45:42 <elliott>
13:45:42 <elliott> Ok I don't know how to use it for my problem : I want somthing like this: loadfunction = do { x <- string2int getLine if( failed parsing int ) call somefunction y <- string2int getLine if( failed parsing int ) call somefunction } – user606521 10 mins ago
13:45:42 <elliott>
13:45:44 <elliott>
13:45:46 <elliott> Ok I don't know how to use it for my problem : I want somthing like this: loadfunction = do { x <- string2int getLine if( failed parsing int ) call somefunction y <- string2int getLine if( failed parsing int ) call somefunction otherfunction x y } I dont know how to do it using your anserws... – user606521 2 mins ago
13:45:50 <elliott> *sigh*
13:45:53 <elliott> shachaf: Should I bother?
13:46:21 <kallisti> elliott: sounds easy enough. just talk about read and catch.
13:46:45 <kallisti> :):):):):)
13:46:48 <elliott> kallisti: http://stackoverflow.com/questions/8850299/catching-errors-during-string-parsing
13:47:03 -!- itidus20 has quit (Read error: Connection timed out).
13:47:11 <kallisti> oh... okay
13:47:23 <kallisti> what do you think about record'field for TDNR?
13:47:41 * elliott decides not to bother.
13:47:43 <elliott> kallisti: ugly
13:48:03 <kallisti> unfortunately all the non-ugly symbols are taken.
13:48:58 <kallisti> (except for, you know, all of those unicode characters)
13:50:58 <kallisti> oh I know
13:51:04 <kallisti> a non-breaking space could indicate TDNR
13:51:06 <kallisti> :)
13:54:55 <kallisti> I think
13:55:01 <kallisti> ' is the best choice aside from .
13:55:19 <kallisti> because it doesn't really break anything (how many people put a ' in the middle of a variable name?) and doesn't look very bad.
13:57:17 <elliott> it breaks don't
13:57:33 <kallisti> oh shit...
13:57:48 <Phantom_Hoover> http://lal0nde.deviantart.com/art/problem-sleuth-279003657
13:57:50 <Phantom_Hoover> this
13:57:54 <Phantom_Hoover> this must be moddable
13:58:57 <kallisti> elliott: you're banned from ever naming another variable "eVal"
13:59:28 <kallisti> oh
13:59:30 <kallisti> that was the guy
13:59:31 <kallisti> oops
13:59:51 <kallisti> he's banned forever.
14:02:41 <kallisti> @C.A.McCann: How can you sleep when there's rep to be gained?! :) – ehird Jan 8 at 18:51
14:02:41 <lambdabot> Unknown command, try @list
14:02:47 <kallisti> bahahahahahahahahahahahahahahahahahahahahahahahahahahahaha
14:02:50 <kallisti> ^ha
14:02:50 <fungot> ha. ha. ha ha. ha ha ha. ha ha ha ha ha. ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ...too much output!
14:08:10 <kallisti> http://stackoverflow.com/questions/8793736/haskell-to-javascript-compilers/8793958#8793958
14:08:18 <kallisti> elliott: btw there's also Selenium bindings for Haskell.
14:08:29 -!- Gregor` has set topic: Update grating, and Cheesy A! I'm Number A, not IM. | http://codu.org/logs/_esoteric/.
14:08:33 <Gregor`> Wha
14:08:35 -!- Gregor` has changed nick to Gregor.
14:08:50 -!- Gregor has set topic: Update grating, and Cheesy A! I'm Number A, not IM. | http://codu.org/logs/_esoteric/.
14:11:26 <elliott> kallisti: i don't think selenium is relevant.
14:12:25 <kallisti> it's as relevant as Ji..
14:13:00 <elliott> Nope.
14:13:12 <elliott> It might be if you make incorrect assumptions about what Ji does, though.
14:13:54 <kallisti> "it lets a Haskell server control a browser connected to it via AJAX."
14:14:27 <elliott> I call you an idiot in T-10, T-9...
14:15:07 <elliott> This happens because you deliberately ignore people rather than, say, doing something as simple as clicking a link to clarify your impression after someone points out that you're wrong.
14:17:26 <kallisti> oh right, that's why I was ignoring you.
14:18:25 <elliott> Yes, because I call you an idiot after I point out you're wrong and you continue to insist you're not rather than doing the most cursory research.
14:18:38 <Phantom_Hoover> elliott, selenium is always relevant.
14:18:59 <kallisti> elliott: I discovered how I was wrong. happy?
14:19:10 <elliott> When people who aren't me say "no, that's not related", they usually mean "You clearly know more than me about what both of these things do. Please, quote something I said back at me."
14:19:29 <elliott> kallisti: Sorry, I hate life and everyone and existence.
14:20:33 <kallisti> I don't really see how any of what I did implied that I think I "know more about something"
14:20:47 <kallisti> instead, I was just quoting you... to show you where I got that impression.
14:20:48 <kallisti> ????
14:20:50 <kallisti> whatever
14:23:06 <Sgeo> Blargh
14:23:16 <Sgeo> Just got a terrible thought for API design
14:40:11 <kallisti> "it is always better to work continuously over the course of the term, rather than in discrete bursts around the time of examinations."
14:40:19 <kallisti> SILLY PROFESSOR AND YOUR MATH HUMOR
14:49:38 <ais523> hmm, back
14:49:45 <ais523> that was a fun seminar
14:49:52 <ais523> we spent a whole hour talking about call-by-name
14:50:01 <ais523> then another 40 minutes after the seminar talking about product types
14:50:19 <coppro> ais523: see #nomic
14:54:24 -!- ais523 has quit (Ping timeout: 240 seconds).
14:57:08 <kallisti> @tell ais523 can you actually talk about product types alone for 40 minutes?
14:57:08 <lambdabot> Consider it noted.
15:18:03 <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Carlos_segundo80.png
15:18:08 <Phantom_Hoover> Ngevd's family tree.
15:21:27 <kallisti> http://en.wikipedia.org/wiki/File:Undirected_6_cycle.svg Phantom_Hoover's family tree
15:21:39 <oklopol> kallisti: especially as all discrete bursts have measure zero.
15:22:14 <Phantom_Hoover> This is also known as the Hexagon of Hoover.
15:24:34 <elliott> <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Carlos_segundo80.png
15:24:41 <elliott> Phantom_Hoover: Every time I see this I just grin and gawp at it.
15:24:51 <elliott> It's like they're optimising for inbreeding.
15:25:37 <Phantom_Hoover> It's the way that the guy has exactly five ancestors who weren't inbred there.
15:26:10 <elliott> Phantom_Hoover: (The comments on the SO question whose reddit thread I presume you found that in are really annoying.)
15:26:17 <Phantom_Hoover> Yes, they are.
15:26:34 <elliott> "This might be one of those cases where you need to ask yourself: Do I really want to make business with that guy?" INCEST IN FAMILY TREES HAS LITERALLY NEVER HAPPENED, JUST IGNORE IT
15:26:58 <Phantom_Hoover> Well, in this case, the complainer /was/ a man who said he'd had two children with his daughter.
15:27:11 <elliott> A man with money to spend on family tree software!!!
15:27:15 <elliott> CAPITALISM: the movie
15:27:43 <Phantom_Hoover> "What the guy should have asked is how to handle nodes that can be reached via two or more distinct paths. Every family tree has cases like this (no exceptions)."
15:27:52 <elliott> <kallisti> http://en.wikipedia.org/wiki/File:Undirected_6_cycle.svg Phantom_Hoover's family tree
15:27:54 <Phantom_Hoover> Um excuse me what do you say to Cain and Abel??
15:28:05 <elliott> All the vertices are Phantom_Hoover.
15:28:18 <Phantom_Hoover> Yes.
15:28:31 <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Complete_graph_K7.svg
15:28:35 <Phantom_Hoover> elliott's family tree.
15:28:53 <elliott> Yes.
15:30:50 -!- ais523 has joined.
15:31:44 <kallisti> ais523: hi
15:31:48 <ais523> hi
15:31:48 <lambdabot> ais523: You have 1 new message. '/msg lambdabot @messages' to read it.
15:31:50 <ais523> stupid connection
15:32:08 <ais523> sure you can talk about product types for 40 minutes
15:32:32 <ais523> note that it was in the context of impure languages
15:32:58 <ais523> in particular, we were debating the expression that in ICA would be written as "print(1);(2,3)"
15:33:24 <ais523> (you could write something similar in various other impure CBN languages, but there aren't a whole lot of those in existence)
15:33:45 <ais523> both in call-by-name, and in call-by-value
15:38:52 <kallisti> what is ICA
15:39:36 <kallisti> Immaculate Conception Academy-Greenhills, an elite private all-girls Chinese school in Greenhills, San Juan, Metro Manila, Philippines. (Not to be confused with ICA Manila (ICAM) or ICA Dasmariñas)
15:40:18 <kallisti> International Council on Archives <--- aka elliott
15:41:55 <Phantom_Hoover> http://en.wikipedia.org/wiki/File:EgyptianPtolemies2.jpg
15:42:02 <Phantom_Hoover> Ngevd's other family tree.
15:42:37 <Phantom_Hoover> Jesus Christ, the most recent new stock in that family tree is Antiochus III.
15:42:43 <kallisti> impressive pedigree
15:42:48 <ais523> kallisti: idealized concurrent algol
15:42:55 <Phantom_Hoover> Well, right up until Caesar and Antony.
15:43:02 <kallisti> also note how Antiochus III of Syria manages to birth Cleopatra I by himself
15:43:05 <kallisti> impressive.
15:43:36 <Phantom_Hoover> Cleopatra VII's family were completely inbred for 5 generations.
15:44:06 <kallisti> I don't even know how to interpret these family relations....
15:44:27 <kallisti> also what happened to Ptolomy, the son, the sequel.
15:45:10 <kallisti> for example what is the relationship between Ptolomey XIII and Cleopatra VII... they appear to be brother and sister twice.
15:45:36 <Phantom_Hoover> They married, you dolt.
15:45:45 <elliott> Phantom_Hoover: What is marriage but being brother and sister twice?
15:45:58 <Phantom_Hoover> They just didn't have any children, which is not exactly surprising given the circumstances.
15:46:12 <kallisti> I'm sorry it looked strange.
15:46:23 <kallisti> Cleopatra wasn't lined up with all the others
15:46:32 <kallisti> and the elbow line didn't register as "marriage" at that point
15:46:52 <Phantom_Hoover> Charles II clearly got the short end of the homozygous stick, seeing as Cleopatra isn't generally remembered as a twisted freak.
15:48:33 <elliott> Phantom_Hoover: I was going to say "I wonder what the maximally inbred family would be like" and then I realised it's called LIFE.
15:48:35 <kallisti> http://bisserjeta.hsara.com/2012/01/100-year-old-prostitute-still-going-strong/?article
15:48:36 <elliott> DEEP.
15:49:07 <kallisti> I wonder what her family tree looks like.
15:49:18 <elliott> kallisti: "surrounded by prominent politicians, businessmen, lawyers and members of the clergy, all of whom were in costume to protect their identities. “I so enjoyed lapping up their warm greetings,” she beams." Somehow I doubt this is: legit.
15:50:19 <kallisti> really?
15:50:22 <kallisti> I don't see how
15:51:25 <kallisti> this looks like a completely legit site to me.
15:54:40 <kallisti> I wonder who the audience is for this material.
15:55:14 <kallisti> this creepily written probably fake story about a 100-year-old prostitute.
15:55:33 <kallisti> what is its purpose.
16:03:04 <Sgeo> I still need to play Ally Cat
16:03:16 <Sgeo> It's still on my Todo list
16:03:19 <Sgeo> *Alley Cat
16:03:32 <fizzie> In Ally Cat, the cat is your ally.
16:04:21 <elliott> I am glad people take my decrees so seriously.
16:04:29 <elliott> Or at least I can't imagine anyone else having told Sgeo to play Alley Cat.
16:04:45 <Sgeo> elliott, you may have been telling someone else to play Alley Cat
16:04:51 <fizzie> Did the PC version of that thing have rather horrible PC speaker beeping.
16:04:55 <fizzie> I think it did.
16:04:57 <Sgeo> The 10/2/2011 logs
16:05:17 <Sgeo> (As in October 2nd, not as in February 10th)
16:05:30 <fizzie> As in 2011-10-02.
16:05:50 <Sgeo> 04:54:08: <elliott> Sgeo|web: Play alley cat.
16:05:50 <Sgeo> 04:54:14: <elliott> FOREVERRR
16:05:50 <Sgeo> 04:54:17: <Sgeo|web> elliott: on Thursday, I will
16:07:12 <Phantom_Hoover> What is this alley cat
16:07:56 <Sgeo> Some old game
16:08:05 <elliott> :t runWriter
16:08:06 <lambdabot> forall w a. Writer w a -> (a, w)
16:08:14 <elliott> :t execWriter
16:08:15 <lambdabot> forall w a. Writer w a -> w
16:08:52 <elliott> fizzie: Yes, it did.
16:09:01 <elliott> Phantom_Hoover: The BEST GAME.
16:10:38 <fizzie> The CGAest game.
16:10:52 <elliott> :t msum
16:10:53 <lambdabot> forall (m :: * -> *) a. (MonadPlus m) => [m a] -> m a
16:13:39 <Sgeo> How many lives do I have?
16:13:56 <Sgeo> I suck at games
16:14:46 <Sgeo> I think I'm dead. I wasn't counting, but 9 would make sense
16:15:10 <Sgeo> Oh
16:15:14 <Sgeo> It says next to cat
16:15:30 <elliott> Wait 'til Sgeo discovers you can JUMP IN THE WINDOWS.
16:15:38 <Sgeo> The windows have minigames
16:15:40 <Sgeo> I think
16:15:58 <Sgeo> I've only been in 1 window
16:16:05 <fizzie> It's JUST like Mario Party. Almost.
16:16:55 <elliott> :D
16:16:57 <elliott> Without the party part.
16:16:58 <elliott> Solo party.
16:17:00 <Sgeo> There's a weird clicking coming from the speakers
16:17:05 <elliott> Yes.
16:17:28 <Sgeo> I mean, while it tries to play the music, I don't think it is the music
16:17:35 <elliott> No, there's no "music".
16:17:45 <elliott> That's patter sounds.
16:18:04 <Sgeo> "patter sounds"?
16:18:08 <elliott> Like, feet.
16:18:26 <Sgeo> Feet that play a melody with different pitches?
16:18:53 <elliott> Well.
16:19:07 <elliott> Oh.
16:19:11 <elliott> No, that's the music.
16:19:56 <Sgeo> Hmm, no music during gameplay, I guess, just at game over/intro screen
16:22:25 <elliott> Right.
16:27:49 -!- Ngevd has joined.
16:28:20 <elliott> :t evalWriter
16:28:21 <lambdabot> Not in scope: `evalWriter'
16:28:28 <elliott> @hoogle evalWriter
16:28:28 <lambdabot> No results found
16:29:36 <Ngevd> Hello!
16:31:29 <kallisti> elliott: am I actually gaining anything by defining this Storable instance and converting square data to Word16. Wouldn't it already kind of work that way internally?
16:31:48 <kallisti> oh, no, it would be Word32 or Word64 or whatever. :P
16:31:50 <kallisti> nevermind.
16:34:11 <kallisti> it seems to me that it's optimizing for space over time.
16:44:24 <kallisti> better spatial locality of the vector seems to be cancelled out by using a map...
16:46:01 <elliott> What?
16:48:49 <kallisti> :t succ . fromEnum $ maxBound
16:48:50 <lambdabot> Ambiguous type variable `a' in the constraints:
16:48:50 <lambdabot> `Enum a' arising from a use of `fromEnum' at <interactive>:1:7-14
16:48:50 <lambdabot> `Bounded a'
16:50:53 <ais523> here's a line from my IOCCC submission: echo '(find-file "./prog.c" t) (indent-region (point-min) (point-max)) (write-file "./emacs.c" t)' > reindent-prog.el
16:51:26 <kallisti> :t fromEnum
16:51:26 <ais523> my submission was specifically designed to confuse reindentors, so I decided to put a few reindentors in an optional part of the Makefile, so that it could easily be tested
16:51:26 <lambdabot> forall a. (Enum a) => a -> Int
16:51:30 <kallisti> ah
16:51:34 <ais523> and then left it in to show the judges that I wasn't afraid of them
16:52:56 <elliott> ais523: hmm, this must be some other submission to the one i saw
16:53:38 <ais523> which one did you see?
16:53:48 <ais523> (that's part of the Makefile, not of the C code)
16:54:28 <elliott> ais523: the one with a bunch of setjmps
16:54:33 <elliott> or maybe it's the same one
16:54:34 <ais523> same one
16:54:47 <elliott> that one was pretty
16:54:48 <elliott> i think
16:54:50 <kallisti> > maxBound :: Just Bool
16:54:50 <lambdabot> Not in scope: type constructor or class `Just'
16:54:51 <elliott> i don't remember what it looked like
16:54:53 <ais523> I consider setjmp pretty much mandatory in obfuscated C
16:54:55 <kallisti> > maxBound :: Maybe Bool
16:54:55 <lambdabot> No instance for (GHC.Enum.Bounded (Data.Maybe.Maybe GHC.Bool.Bool))
16:54:55 <lambdabot> aris...
16:55:01 <ais523> elliott: each function consists of nothing but declarations
16:55:12 <ais523> which are very complicated expressions, overparenthesized
16:55:23 <ais523> and indented in columns, using Lisp-style indentation for each column
16:55:39 <kallisti> is there any reason why writing an instance for (Bounded a) => Maybe a is a bad idea?
16:55:40 <elliott> ais523: can i see it :( i lost my copy :(
16:55:53 <kallisti> er
16:55:54 <elliott> kallisti: is minBound (Just minBound) or Nothing
16:56:01 <ais523> well, we're past the deadline now, so I can paste it somewhere and PM people the link
16:56:01 <kallisti> Nothing, I would say.
16:56:08 <kallisti> though I realize that's arbitrary.
16:56:10 <elliott> well I guess that's consistent with Maybe's Ord instance
16:56:15 <kallisti> yes.
16:56:21 <kallisti> also Enum
16:56:23 <elliott> ais523: you realise that there's no rule against sharing them in the first place, right?
16:56:26 <kallisti> I think it has an enum...
16:56:26 <elliott> at least Gregor didn't find one
16:56:30 <ais523> elliott: right, indeed
16:56:34 <ais523> just it has to be your own work
16:56:35 <kallisti> > toEnum 0 :: Maybe True
16:56:35 <lambdabot> Not in scope: type constructor or class `True'
16:56:39 <kallisti> > toEnum 0 :: Maybe Bool
16:56:40 <kallisti> lol
16:56:40 <lambdabot> No instance for (GHC.Enum.Enum (Data.Maybe.Maybe GHC.Bool.Bool))
16:56:40 <lambdabot> arising...
16:56:42 <kallisti> oh neverminde
16:56:46 <ais523> I'm just a little overprotective of it
16:56:48 <Gregor> They even allow team submissions.
16:56:57 <Gregor> Publicly sharing is probably not wise though.
16:57:01 <ais523> Gregor: I think that's a change
16:57:32 <ais523> int r,u,y, getchar(), putchar(), b();
16:59:53 <Gregor> ais523: Now if only you could do int r, u, y, main() { ... };
16:59:54 <Gregor> :)
17:00:17 <ais523> is that legal? it'd be awesome if it were
17:00:23 <Gregor> 'snot.
17:00:39 <ais523> incidentally, the reason I did getchar and putchar like that rather than including stdio.h is so that I could give them the wrong number of arguments
17:01:06 <Gregor> Which is ... so useful ... for getchar and putchar ... ?
17:02:02 <ais523> the extra arguments don't do anything but make the code look nicer
17:02:04 <kallisti> :t fromEnum
17:02:05 <lambdabot> forall a. (Enum a) => a -> Int
17:02:08 <ais523> and it's a free obfuscation
17:02:22 <ais523> (a () out of context in the wrong column makes people realise the code isn't meant to be read in columns)
17:04:02 <ais523> Gregor: where's your submission, btw? I'm interested in seeing it now the deadline's passed
17:04:02 <kallisti> @hoogle asTypeOf
17:04:02 <lambdabot> Prelude asTypeOf :: a -> a -> a
17:04:18 <Gregor> ais523: I'll PM
17:06:39 <kallisti> what's an example of a type that is Bounded but not Enum.
17:07:11 <Sgeo> kallisti, real numbers between -1 and 1?
17:07:23 <kallisti> oh, yes I suppose that counts.
17:07:36 <kallisti> but then what would that look like in Haskell
17:09:31 <elliott> Float and Double are Enum but shouldn't be.
17:09:43 <elliott> But they're bounded.
17:09:46 <elliott> Since IEEE has -inf and +inf.
17:09:57 -!- sebbu3 has changed nick to sebbu.
17:10:05 <kallisti> ah yes
17:10:39 <elliott> kallisti: More generally, you can make any type bounded like
17:10:52 <elliott> data WithBounds a = MinBound | Middle a | MaxBound
17:10:57 <elliott> but can't necessarily give it an Enum instance.
17:11:12 <elliott> (You need `Ord a` for the Boudned instance to mean much, though.)
17:11:34 <kallisti> that's an interesting type.
17:11:52 <elliott> It's the "free Bounded". :p
17:12:19 * kallisti isn't sure why he didn't generalize his gross Enum code earlier...
17:12:51 <Sgeo> elliott, I was thinking, something like that makes more sense than your WithNegInfinity and WithPosInfinity, I think
17:13:14 <Sgeo> It's not nonsensical for a lower bound to be positive infinity
17:13:29 <elliott> Sgeo: My types were like that for a reason.
17:13:50 <elliott> Namely, WithBounds didn't make sense for the usecase in question.
17:16:00 <ais523> you know what? less needs syntax highlighting
17:16:09 <ais523> I know you could just use an editor, but good editors aren't necessarily good viewers
17:17:30 <elliott> http://stackoverflow.com/questions/8850299/catching-errors-during-string-parsing
17:17:32 <elliott> http://stackoverflow.com/questions/8853896/throwing-exceptions-in-haskell-and-xderivedatatypeable
17:17:32 <elliott> http://stackoverflow.com/questions/8854471/io-string-and-io-data-type
17:17:35 <elliott> this guy
17:17:37 <elliott> sigh
17:17:44 <elliott> ais523: highlight foo | less -R
17:17:57 <ais523> ooh, interesting
17:18:21 <Deewiant> Where highlight = e.g. code2color
17:18:29 <ais523> there's an actual command highlight, it seems
17:18:33 <ais523> I'm not sure what engine it's based on
17:18:40 <Deewiant> lesspipe also has some kind of support
17:18:41 <elliott> Deewiant: I think there's a program that does that actually called "highlight", which is why I said "highlight".
17:18:51 <ais523> elliott: right, and I found it in the repos
17:18:52 * ais523 installs it
17:18:53 <Deewiant> elliott: It sounded generic so I wasn't sure. :-P
17:18:59 <elliott> ais523: I think more also does syntax highlighting, but who the fuck uses more.
17:19:03 <elliott> Er.
17:19:03 <elliott> most.
17:19:05 <elliott> Not more.
17:19:07 <ais523> heh
17:19:22 <ais523> I hope highlight's a no-op on stuff it doesn't understand
17:19:26 <ais523> in that case, I could just add it into l
17:19:32 <elliott> into l
17:19:39 <ais523> l is my ls-or-less program
17:19:46 <ais523> that runs ls or less depending on whether you give it a directory or a file
17:20:00 <ais523> aww, highlight doesn't do INTERCAL
17:20:19 <elliott> ais523: you realise less has preprocessor support built in, right?
17:20:27 <ais523> yes
17:20:28 <elliott> LESSOPEN
17:20:30 <elliott> or w/e
17:20:42 <ais523> it's more annoying than anything else, as it tries to interpret .doc as Word files rather than text files
17:20:42 <elliott> ais523: be careful about -R, though; you won't want to do that on binary files
17:20:43 <ais523> and errors out
17:20:47 <elliott> also, err, what?
17:20:52 <elliott> we're not talking about the same thing
17:20:56 <ais523> elliott: less foo.doc
17:21:02 <ais523> gives an error message "no catdoc available"
17:21:19 <elliott> INPUT PREPROCESSOR
17:21:19 <elliott> You may define an "input preprocessor" for less. Before less opens a file, it first gives your input preprocessor a chance to modify the way the contents
17:21:19 <elliott> of the file are displayed. An input preprocessor is simply an executable program (or shell script), which writes the contents of the file to a different
17:21:19 <elliott> file, called the replacement file. The contents of the replacement file are then displayed in place of the contents of the original file. However, it will
17:21:21 <elliott> appear to the user as if the original file is opened; that is, less will display the original filename as the name of the current file.
17:21:24 <elliott> An input preprocessor receives one command line argument, the original filename, as entered by the user. It should create the replacement file, and when
17:21:27 <elliott> finished, print the name of the replacement file to its standard output. If the input preprocessor does not output a replacement filename, less uses the
17:21:30 <elliott> original file, as normal. The input preprocessor is not called when viewing standard input. To set up an input preprocessor, set the LESSOPEN environment
17:21:33 <elliott> variable to a command line which will invoke your input preprocessor. This command line should include one occurrence of the string "%s", which will be
17:21:36 <elliott> replaced by the filename when the input preprocessor command is invoked.
17:21:38 <elliott> etc.
17:21:44 <ais523> elliott: yes, I believe it's lessopen that's responsible
17:21:54 <elliott> I doubt it, since it just executes a script you pass it...
17:22:00 <elliott> s/pass it/specify/
17:22:05 <ais523> $ echo $LESSOPEN
17:22:07 <ais523> | /usr/bin/lesspipe %s
17:22:29 <elliott> ais523: OK, so since lesspipe does something wrong, you're saying LESSOPEN is to blame?
17:22:40 <ais523> and indeed, /bin/lesspipe (=/usr/bin/lesspipe) complains on 104
17:22:48 <ais523> elliott: I'm saying the default value of $LESSOPEN is to blame
17:22:53 <elliott> how is that relevant?
17:22:53 <ais523> because it's set to lesspipe
17:23:03 <elliott> I was telling you you didn't need a wrapper script to accomplish what you want
17:23:06 <elliott> sheesh
17:23:13 <Deewiant> LESSOPEN="|highlight -qOxterm256 --force %s" seems to work. elliott: Thanks for the pointer to highlight, it seems to be an improvement over code2color.
17:23:18 <ais523> elliott: well, I either need to wrap less, or lesspipe
17:23:36 <elliott> ais523: wtf?
17:23:40 <elliott> ais523: just do what Deewiant said
17:23:48 <elliott> nobody forces you to pue lesspipe in that variable
17:23:50 <elliott> *put
17:23:55 <elliott> Deewiant: np
17:23:59 <ais523> elliott: well, it processes gzip files
17:24:04 <ais523> which is a useful thing for it to do
17:24:25 <elliott> LESSOPEN="| /usr/bin/lesspipe %s | highlight -qOxterm256 --force"
17:24:26 <fizzie> Deewiant: highlight (via the libhighlight-perl bindings) is what p.zem.fi uses.
17:24:32 <Vorpal> hi
17:24:50 <elliott> ais523: you're complaining "I don't want to use LESSOPEN to accomplish this because of <problem I have /anyway/ that is tangentially related to what LESSOPEN is currently set to>"
17:25:16 <Deewiant> fizzie: I don't recall seeing anything syntax highlighted on p.zem.fi. Which may just be due to the fact that I hardly ever see links to p.zem.fi, for obvious reasons. :-P
17:25:32 <elliott> Deewiant: Is the obvious reason that Finns are blind to each other's words?
17:25:57 <fizzie> Deewiant: It's syntax-highlighted if you add a ".foo" to it, I've sometimes pasted a link to the highlighted version.
17:25:59 <Deewiant> The reason is that fizzie is the only one I know of who has write access to it.
17:26:45 <fizzie> Deewiant: http://p.zem.fi/w3mimgdisplay.c
17:27:28 <elliott> fizzie: You should use a content-disposition header on that .bin to set the filename correctly.
17:27:37 <Deewiant> I note that http://p.zem.fi/w3mimgdisplay.x is ASCII but served as application/xhtml+xml
17:28:08 -!- itidus21 has joined.
17:28:21 <elliott> http://p.zem.fi/w3mimgdisplay.sybase
17:28:26 <fizzie> Deewiant: Yes, I sort of forgot to handle errors there.
17:29:03 <Deewiant> This committee is not addressing lazy programmers.
17:29:09 <elliott> :D
17:29:23 <elliott> fizzie: "
17:29:23 <elliott> XXX = unsupported language: x"
17:29:26 <elliott> Looks like error handling to me!
17:29:33 <fizzie> Well, for some values of "handling", maybe.
17:29:54 <elliott> s/"\n/"/
17:30:04 <elliott> Oops, now fizzie's line is squashed into mine. :/
17:33:00 <kallisti> > let _ = 2 in _
17:33:01 <lambdabot> Pattern syntax in expression context: _
17:33:07 <kallisti> mmk
17:34:48 <elliott> "Thinking in typeclasses is IMO the best thing to do: it's really the most Haskellish."
17:34:56 <kallisti> wat
17:34:56 <elliott> Starting to become convinced that everyone but me is just crazy.
17:37:27 <elliott> ais523: btw, shouldn't it run less or ls | less, for consistency?
17:46:11 <fizzie> Deewiant: 'highlight' doesn't seem to do "pass through unrecognized data" all that well. I gave it a four-megabyte binary file and it just outputs the bytes 00000000 1b 5b 33 38 3b 35 3b 30 6d 1b 5b 6d 0a |.[38;5;0m.[m.| with --force.
17:47:30 <Deewiant> Meh, evidently so.
17:47:39 <Deewiant> $ highlight -qOxterm256 --force /bin/ls
17:47:39 <Deewiant> highlight: Undefined language definition. Use --syntax option.
17:47:39 <Deewiant> zsh: segmentation fault highlight -qOxterm256 --force /bin/ls
17:48:04 <fizzie> Personally I think it should just exec cat or something when it doesn't have a clue based on the file extension.
17:48:13 <Deewiant> That's what I thought --force would do.
17:48:32 <Deewiant> (With -q.)
17:48:33 <fizzie> "less /bin/ls" outputs "^?ELF^B^A^A" in blue now.
17:49:54 <elliott> yay! http://stackoverflow.com/users/1097181/ehird
17:50:12 <elliott> Deewiant: Couldn't you just use || cat %s?
17:50:17 <elliott> Assuming you can silence errors.
17:50:38 <Deewiant> I told it to be quiet and it still said "Undefined language definition" (and segfaulted).
17:51:28 <kallisti> I'm assuming sharing applies to typeclass constants right?
17:51:30 <Deewiant> Evidently it says that whenever the file has no extension.
17:51:36 <kallisti> it would be silly to calculate minBound for a type multiple times.
17:52:10 <elliott> Deewiant: You might want to report a bug. :p
17:52:15 <elliott> Anyway, 2>/dev/null and so on.
17:54:27 <fizzie> elliott: You're reputation is apostrophical.
17:54:32 <kallisti> http://sprunge.us/ELCM some code to generate Enum instances for 2-operand product types. feedback welcome.
17:54:41 <Deewiant> Well, -q is just "supress progress info in batch mode" [sic], so maybe 2>/dev/null is the canonical solution.
17:55:28 <elliott> http://en.wikipedia.org/wiki/Talk:Stack_Overflow#Partisanship_section_recuringly_censored_by_MICROSOFT_vendors
17:55:29 <elliott> http://en.wikipedia.org/wiki/Talk:Stack_Overflow#Criticism_.28October_2011.29
17:55:36 <elliott> TIL people on [[Talk:Stack Overflow]] are insane.
17:55:36 <fizzie> Deewiant: It does quiet the "unknown extension" message, though.
17:55:59 * elliott yells "MICROSOFT" every time it says "MICROSOFT".
17:56:15 <elliott> "but that discussing a (much faster) Free Web server using full ANSI_C scripts is "obvious advertising" (citation missing after the user account and all its posts have been censored)."
17:56:19 <elliott> this is amazing :D
17:56:30 <Deewiant> fizzie: Yes, that it does. In fact it seems a bit random about what it quiets and what it doesn't, based on a cursory reading of https://syntaxhighlight.svn.sourceforge.net/svnroot/syntaxhighlight/highlight/src/cli/main.cpp
17:56:46 <elliott> Hmm, it's by the vendors of this thing, which I have seen before: http://g-wan.com/
17:57:12 <kallisti> the only thing I can't generalize very well is the enum instance for PieceInfo, because it's essentially all special cases...
17:57:27 <fizzie> elliott: You'd better be a bit careful in gaining reputation, because once you clear the 50k mark you turn into MICROSOFT C# developper [sic] and a C# book author.
17:57:34 <elliott> "G-WAN (~100 KB) makes it a breeze by transparently parallelizing legacy procedural code."
17:57:36 <elliott> I'm sure it does.
17:57:44 <elliott> Also I like how you can't select text on that site.
17:57:49 <elliott> fizzie: Does that mean I get money?
17:58:06 <fizzie> It doesn't say.
17:58:13 <elliott> It sounds like money!
17:58:18 <elliott> More money than Haskell, anyway.
17:58:38 <elliott> "G-WAN makes C/C++ libraries fly:
17:58:38 <fizzie> Developping C# though... are you sure it's worth it?
17:58:41 <elliott> #pragma link "sqlite3""
17:58:48 <elliott> FLIGHT.
17:58:59 <elliott> fizzie: Well, I must be pretty good at it, if I've written books about it.
17:59:06 <elliott> Actually I suppose that doesn't hold for an awful lot of tech books out there.
17:59:40 <elliott> "so NO REFERENCE IS AVAILABLE BECAUSE OF STACKOVERFLOW CENSORSHIP."
17:59:43 <elliott> That's remarkably convenient.
18:00:11 <fizzie> elliott: You'll also start to make blattant lies.
18:00:21 <elliott> "who claimed during a conflict that he is a RUBY developer while in fact he works as a C# developer."
18:00:27 <elliott> fizzie: I might even start programming in more than one language!
18:00:38 <fizzie> "The fact that you are FAKING to be willing to investigate this issue is raising the question of the neutrality of Wikipedia moderators.."
18:00:42 <fizzie> The conspiracy, it's spreading.
18:01:01 <elliott> They're all MSFTies too.
18:01:07 <elliott> Once you get past 50k edits...
18:01:27 <elliott> "You are "only an Ordinary user" -of course. With a Wikipedia "User" page and the ability to lock-up (sorry, "Protect") a page against a properly documented MICROSOFT-BIAS"
18:01:27 <elliott> :D
18:01:32 <elliott> This just keeps getting better.
18:01:43 <elliott> You "Ordinary users" with your Wikipedia "User" pages.
18:02:13 <fizzie> I think he's drinking the Microsoft Kool-Aid. (Is that what you say?)
18:02:24 <fizzie> I don't know about idioms.
18:02:37 <elliott> And your bias in adding the notice is evident from the fact that you've added the "Criticism" the moment you were suspended from Super User. SathyaBhat (talk) 14:55, 24 October 2011 (UTC)
18:02:38 <elliott> As you list yourself as a StackOverflow moderator on your profile, I hardly consider you an unbiased source. [...]
18:02:38 <elliott> I'm not a Stack Overflow moderator. SathyaBhat (talk) 15:18, 24 October 2011 (UTC)
18:02:46 <elliott> SECRET STACK OVERFLOW MODERATOR.
18:04:27 <fizzie> What's this "Super User" thing?
18:04:37 <kallisti> > toEnum 256 :: Word8
18:04:38 <lambdabot> *Exception: Enum.toEnum{Word8}: tag (256) is outside of bounds (0,255)
18:04:38 <elliott> fizzie: It's the Third Site in the Stack Overflow Trilogy.
18:04:45 <Deewiant> What's the second?
18:04:46 <elliott> fizzie: I swear this terminology is not made up.
18:04:50 <elliott> Deewiant: Server Fault.
18:04:58 <elliott> Server Fault is sysadmin stuff; Super User is general "computery" stuff.
18:05:13 <Deewiant> Oh, I thought Super User was the sysadmin one.
18:05:20 <Deewiant> Okay then.
18:05:51 <kallisti> I wonder if there's a way to automatically determine the minimal WordN type needed to represent maxBound of a type.
18:05:53 <elliott> fizzie: Help! Microsoft just hired me! http://en.wikipedia.org/w/index.php?title=Stack_Overflow&diff=471179936&oldid=469906030
18:06:08 <elliott> kallisti: Represent howso?
18:06:11 <elliott> Bounded doesn't imply integral.
18:06:14 <kallisti> well yes.
18:06:42 <elliott> kallisti: So I don't see how it makes sense.
18:06:48 <kallisti> hmmm...
18:06:56 <kallisti> for a Bounded Enum
18:07:00 <kallisti> how about that?
18:07:16 <elliott> kallisti: Well, Enum only offers ->Int conversion.
18:07:21 <elliott> So it fits into an Int.
18:07:25 <elliott> Apart from wrong instances.
18:07:30 <elliott> @src Integer fromEnum
18:07:31 <lambdabot> Source not found. I can't hear you -- I'm using the scrambler.
18:07:34 <elliott> Wrong instances like that.
18:07:40 <elliott> (Fuck the Prelude.)
18:07:57 <kallisti> right but you could convert it to a smaller integer type right?
18:08:12 <ais523> <elliott> ais523: btw, shouldn't it run less or ls | less, for consistency? <-- it's not about consistency, it's about convenience
18:08:13 <kallisti> how would you determine the minimum at compile time.
18:08:45 <kallisti> or is that generally an impossible thing to do because it requires runtime information (namely fromEnum (maxBound))
18:08:51 <elliott> kallisti: At compile-time? You can't, maxBounded isn't accessible at compile time; types can't depend on values, because Haskell is not Agda.
18:08:52 <fizzie> elliott: Hackage/Prelude "fromEnum :: a -> Int: Convert to an Int. It is implementation-dependent what fromEnum returns when applied to a value that is too large to fit in an Int." See, it can be bigger too, it just doesn't work then.
18:09:00 <elliott> fizzie: IT'S IMMORAL.
18:09:14 <fizzie> It's in YOUR oral.
18:09:27 <fizzie> I don't know what that meant.
18:09:36 <elliott> This channel is rated PG, man.
18:10:11 <ais523> hmm, what's responsible for printing "Segmentation fault" on a segfault? the kernel, sending to the process's stderr? to its controlling terminal?
18:11:16 <elliott> bash
18:11:17 <Deewiant> ais523: waitpid() and company return an exit status, from which the parent process (the shell) can determine that the child exited due to a segfault. Right?
18:11:17 <elliott> i think
18:11:27 <fizzie> I'd strongly suspect the shell, but I've never thought about it.
18:11:31 <fizzie> It'd sound the logical place.
18:11:31 <kallisti> I feel as though this Enum generator thing is probably something that someone has already done somewhere.
18:11:47 <elliott> :D there's a "bloomier filter"
18:12:06 <Deewiant> Given that zsh says "zsh: segmentation fault" it'd be very unexpected if it weren't the shell. :-P
18:12:24 <kallisti> do modules implicitly export typeclass instances that they import?
18:12:36 <kallisti> oh wait irrelevant
18:13:22 <elliott> kallisti: There is no control over importing/exporting instances.
18:13:26 <elliott> Instances just permeate the natural vacuum.
18:13:30 <kallisti> ah good
18:13:32 <elliott> If they can get to your code, they will.
18:13:36 <kallisti> that's what I thought
18:13:41 <elliott> (That's required by the open world assumption.)
18:13:42 <kallisti> but wasn't sure.
18:14:08 <elliott> (See my answer to http://stackoverflow.com/questions/8728596/explicitly-import-instances.)
18:14:45 <kallisti> maxBoundProd looks lonely without a minBoundProd. but in most cases it would just be toEnum 0
18:15:09 <kallisti> but it could NOT be that... I guess.
18:15:09 <Deewiant> elliott: Please leave a space after URLs so that hyperlinkifiers get it right; thanks.
18:15:45 <elliott> Deewiant: Your hyperlinkifier is seriously broken if it includes final dots.
18:15:57 <elliott> Also, <space><dot> is incredibly ugly. :(
18:16:01 <Deewiant> elliott: It includes the dot and the period.
18:16:09 <Deewiant> And that's a completely valid resulting URL.
18:16:14 <elliott> Deewiant: There's a difference between a dot and a period?
18:16:17 <Deewiant> Erm.
18:16:21 <Deewiant> The dot and the bracket.
18:16:42 <elliott> And yes, it is, but hyperlinkifiers have to extract URLs from language; there's a trade-off to be made where you must reject some valid URLs to be useful in the majority case.
18:16:55 <elliott> I suppose I could half-heartedly make an effort to enclose them <in brackets> in cases of ambiguity?
18:17:02 <elliott> (See my answer to <http://stackoverflow.com/questions/8728596/explicitly-import-instances>.)
18:17:04 <elliott> does that work?
18:17:06 <elliott> s/^d/D/
18:17:10 <Deewiant> Yeah, that seems to work.
18:17:54 <Deewiant> I'd rather have an inclusive linkifier and tell people to be machine-helpful when they paste URLs; it's easier to backspace characters off the end than add missing stuff, too. :-P
18:18:12 <fizzie> Deewiant: Also:
18:18:14 <fizzie> [htkallas@pc112 ~]$ echo "./segfault" | bash
18:18:14 <fizzie> bash: line 1: 24141 Segmentation fault ./segfault
18:18:14 <fizzie> [htkallas@pc112 ~]$ echo "./segfault" | env LC_ALL=fi_FI.UTF-8 bash
18:18:14 <fizzie> bash: rivi 1: 24144 Muistialueen ylitys ./segfault
18:18:30 <fizzie> (For some reason it won't obey LC_ALL if I give it -c "./segfault" instead.)
18:18:47 <Deewiant> Heh.
18:18:56 <elliott> fizzie: Probably it bubbles the signal up.
18:19:04 <elliott> Because -c is generally for non-interactive use.
18:20:52 <kallisti> ha ha ha monomorphism restriction you're funny.
18:21:34 <fizzie> elliott: It looks as if it execve's ./segfault without forking if I do a simple-command -c like that.
18:22:12 <fizzie> [htkallas@pc112 ~]$ LC_ALL=fi_FI.UTF-8 bash -c "./segfault"
18:22:12 <fizzie> Segmentation fault
18:22:12 <fizzie> [htkallas@pc112 ~]$ LC_ALL=fi_FI.UTF-8 bash -c "./segfault > /dev/null"
18:22:12 <fizzie> bash: rivi 1: 24200 Muistialueen ylitys ./segfault > /dev/null
18:22:21 <fizzie> I guess it makes sense, even if it's not quite what I'd expect.
18:22:24 <Deewiant> File a bug report about that changing behaviour.
18:22:45 <fizzie> At least it won't leave all those useless 'bash' processes around when people do "sh -c ..." from wherever.
18:23:04 <elliott> fizzie: Yes, file a bug. It will, at least, be amusing to see the laughter.
18:24:11 * kallisti notes that while the SO user from before was not allowed to use eVal as a variable name, it is perfectly acceptable for kallisti to do so.
18:24:18 <fizzie> I don't know, then I'd have to dig around the documentation first to see if it's mentioned somewhere.
18:24:30 <elliott> fizzie: That's what maintainers are there for!
18:24:36 <elliott> To do that for you and yell at you about it.
18:27:17 <ais523> is eVal hungarian notation?
18:30:56 <kallisti> no...
18:31:00 <kallisti> well, maybe
18:31:02 <kallisti> it is a value
18:31:03 <kallisti> >_>
18:31:12 <fizzie> According to one list, "e" is a prefix for enums.
18:31:35 <kallisti> it stands for "enum value" which is a shitty way of saying "the integer returned by the value in this expression that had an Enum instance and not the one that had both Enum and Bounded"
18:31:43 <kallisti> I'll let you determine which is shittier.
18:32:58 <elliott> foo
18:32:59 <elliott> :: (GArrow g (**3) u,
18:32:59 <elliott> GArrowDrop g (**2) b,
18:32:59 <elliott> GArrowCopy g (**) u1,
18:32:59 <elliott> GArrowCopy g (**2) b,
18:32:59 <elliott> GArrowSum g (**1) ((**2) a1 (Mu (Foo a1))),
18:33:01 <elliott> GArrowLoop g (**) u1) =>
18:33:03 <elliott> g a (Mu (Foo a1))
18:33:05 <elliott> Well this is going to be painful.
18:33:20 <pikhq_> So much type!
18:33:29 <fizzie> Also so full of stars.
18:33:40 <elliott> The best part is that those (**2) things aren't actually valid syntax.
18:33:47 <elliott> It just appends numbers without thinking, to operators.
18:34:13 <pikhq_> Is there some sort of GHC extension to make that work, or was this just written by a blithering idiot?
18:34:37 <elliott> pikhq_: "This" was written by the blithering idiot known as GHCi.
18:35:46 <pikhq_> Ah, classy.
18:38:28 <elliott> *Main> putStrLn . runHask $ foo
18:38:28 <elliott> \a -> let (b,c) = (((((\a -> (a,a)) . (Mu)) . (Foo)) . (\x -> case x of { Left y -> Left ((\_ -> ()) y); Right y -> Right y })) . (Right)) (a,c) in b
18:38:29 <elliott> Yay!
18:39:09 <kallisti> :t toInteger
18:39:10 <lambdabot> forall a. (Integral a) => a -> Integer
18:39:23 <elliott> Phantom_Hoover: Behold.
18:39:52 <kallisti> > fromEnum . succ . toInteger $ (maxBound :: Int)
18:39:53 <lambdabot> -9223372036854775808
18:39:55 <kallisti> lolwat
18:40:16 <elliott> > succ (maxBound :: Int)
18:40:17 <lambdabot> *Exception: Prelude.Enum.succ{Int}: tried to take `succ' of maxBound
18:40:21 <elliott> > 1 + (maxBound :: Int)
18:40:22 <lambdabot> -9223372036854775808
18:40:25 <elliott> kallisti: I simplified it for you.
18:40:33 <kallisti> well... yes.
18:40:53 <kallisti> negative enum indexes seem... bad.
18:41:13 <elliott> kallisti: Not really?
18:41:20 <elliott> enum foo { MAGIC_BLAH = ~0 }
18:41:22 <elliott> *};
18:42:09 -!- Vorpal has quit (Ping timeout: 240 seconds).
18:42:16 <elliott> Phantom_Hoover: I SAID BEHOLD.
18:42:20 <kallisti> well I guess now that I've rewritten numOf to not assume that minBound is 0, it's less of a problem.
18:42:46 <kallisti> still it makes the assumption that it's a contiguous interval (i.e. the enum doesn't only use even numbers or powers of two etc)
18:48:30 -!- pikhq has joined.
18:48:34 -!- pikhq_ has quit (Ping timeout: 252 seconds).
18:51:00 <kallisti> elliott: also are you sure that "they're used in C" is a good defense?
18:53:22 <elliott> kallisti: That's what Enum is for.
18:53:24 <elliott> An enumeration of values.
19:00:15 <Ngevd> Hello!
19:01:15 <elliott> hi
19:17:44 -!- ais523 has quit (Remote host closed the connection).
19:20:56 -!- MDude has joined.
19:49:59 -!- ais523 has joined.
20:03:05 -!- pikhq_ has joined.
20:03:23 -!- pikhq has quit (Ping timeout: 268 seconds).
20:04:15 <kallisti> what is the topological structure of the universe?
20:04:25 <kallisti> er rather
20:04:26 <kallisti> space
20:04:32 <kallisti> in the universe
20:05:00 <Ngevd> I read it was some sort of mobiusy dodecahedron or something somewhere
20:05:03 <Ngevd> Also...
20:05:06 -!- Ngevd has quit (Quit: ice cream).
20:05:23 <kallisti> dodecahedron wat
20:06:13 <elliott> kallisti: http://en.wikipedia.org/wiki/Shape_of_the_Universe
20:06:23 <elliott> kallisti: flat
20:06:45 <Phantom_Hoover> No.
20:06:56 <elliott> Phantom_Hoover: No? "The Wilkinson Microwave Anisotropy Probe (WMAP) has confirmed that the universe is flat with only a 0.5% margin of error.[1] Within the Friedmann-Lemaître-Robertson-Walker (FLRW) model, the presently most popular shape of the Universe found to fit observational data according to cosmologists is the infinite flat model,[2]"
20:07:51 <Phantom_Hoover> a) flat isn't a topological thing, it's a differential geometric thing; b) the Poincaré dodecahedron is homeomorphic to the 3-sphere, which isn't flat.
20:08:51 <Phantom_Hoover> a) is kind of splitting hairs, admittedly, and b) was due to a misunderstanding
20:09:09 <elliott> Phantom_Hoover: (a) Well, I was being liberal with my interpretation of kallisti; he tends to yell at me when I'm not. (b) Yeah, but that's just one of the models.
20:10:38 <Phantom_Hoover> elliott, no, I mean I assumed you were following on from Ngevd.
20:11:14 <elliott> Ah.
20:11:49 -!- oerjan has joined.
20:11:49 <kallisti> so uh... which one is it? :P
20:12:23 <elliott> kallisti: Which one of what?
20:12:27 <elliott> It's flat.
20:12:44 <kallisti> "flat" isn't a topological structure is it?
20:13:00 <elliott> Phantom_Hoover: Okay, I was too liberal.
20:13:04 <Phantom_Hoover> Flat here means R^3.
20:13:14 <kallisti> oh. okay.
20:13:17 <Phantom_Hoover> (With the usual topology, of course.)
20:13:52 <kallisti> I thought most scientists believe that the universe "wraps around"
20:13:55 <elliott> Phantom_Hoover: http://upload.wikimedia.org/wikipedia/commons/1/16/World_line.svg I like how this is indistinguishable from pseudoscience.
20:14:01 <elliott> kallisti: You thought wrong.
20:14:12 <elliott> kallisti: Also, it's not like you could ever find out, to my understanding.
20:14:15 <elliott> i.e. there is no way to reach the edge.
20:14:50 <Phantom_Hoover> You could find out, at least through application of the Copernican principle and measurement of the large-scale curvature.
20:16:07 <elliott> Well, OK, but I mean "you couldn't actually do it".
20:17:28 -!- Ngevd has joined.
20:17:31 <Ngevd> Hello!
20:18:12 <kallisti> I suppose it's entirely possible for the universe to be expanding and also infinite, given that the "expanding universe" thing technically means something more like "the distance between two parts of the universe grows over time" and less "lol it's finite and expanding into nothingness"
20:18:41 -!- pikhq_ has quit (Ping timeout: 240 seconds).
20:18:41 -!- pikhq has joined.
20:21:53 <kallisti> hm. so enumerating an arbitrary product type is actually kind of like a mixed radix numeral system.
20:22:50 -!- zzo38 has joined.
20:23:24 <kallisti> if I were to extend my code to product types with 3 operands I would be adding a "digit" whose base is multiplied by a power of two.
20:27:00 <ais523> kallisti: projectable product types, or patternmatchable product types?
20:27:11 <kallisti> I don't know the difference. "Haskell product types" :P
20:27:22 <ais523> Haskell's pure, so it doesn't matter ther
20:27:22 <kallisti> so probably the latter/
20:27:24 <ais523> *there
20:27:26 <kallisti> oh.
20:28:09 <kallisti> http://sprunge.us/Gcbh this is the 2-operand case. you can see how it looks like a 2-digit numeral system.
20:28:14 <kallisti> with mixed radix.
20:28:18 <ais523> I'm not going to spend 40 minutes discussing product types with someone and then not /use/ the resulting knowledge
20:28:31 <kallisti> lol
20:28:46 <kallisti> basically in fromEnumProd is where you can see the mixed radix.
20:29:38 <kallisti> numOf b returns the total number of elements of b's type. numOf True would return 2.
20:29:56 <kallisti> (it makes some assumptions about how the Enum instance is defined)
20:30:01 <Phantom_Hoover> <kallisti> I suppose it's entirely possible for the universe to be expanding and also infinite, given that the "expanding universe" thing technically means something more like "the distance between two parts of the universe grows over time" and less "lol it's finite and expanding into nothingness"
20:30:16 <Phantom_Hoover> This is precisely the current scientific consensus.
20:30:58 <kallisti> oh good.
20:31:00 <elliott> Phantom_Hoover: Eventually we're going to need big magnets to keep everything close enough.
20:31:20 <kallisti> does this mean I'm actually increasing in volume? :P
20:31:48 <zzo38> I don't think so
20:31:49 <Phantom_Hoover> I don't think it's possible to stop it; one of the scenarios for the end of the universe is the expansion overwhelming all binding forces and ripping every particle into its constituents.
20:31:51 <Phantom_Hoover> kallisti, no.
20:32:13 <Phantom_Hoover> The bonds holding you together are slightly strained by the expansion, but they aren't pulled apart.
20:32:31 <kallisti> that doesn't sound like an "end of the universe" but just "an end of matter as we know it"
20:33:22 * kallisti isn't sure how to write the inverse function for an n-operand product type...
20:33:31 <kallisti> I guess I could define an applicative? maybe
20:35:09 <kallisti> I need a way to take an integer and a constructor with any number of arguments and fill all of its fields with values.
20:35:41 <kallisti> every field needs to be Bounded and Enum, except for the last one, which can be just Enum.
20:36:21 <kallisti> oh wait no they all need to be Bounded I think.
20:36:37 <elliott> <Phantom_Hoover> I don't think it's possible to stop it; one of the scenarios for the end of the universe is the expansion overwhelming all binding forces and ripping every particle into its constituents.
20:36:43 <elliott> Phantom_Hoover: Excuse me are you suggesting magnets will get less powerful.
20:36:48 <elliott> (Also I know that you dolt.)
20:36:53 <Phantom_Hoover> Yyyyes.
20:37:39 <elliott> Phantom_Hoover: But what will ICP do?
20:40:04 <elliott> Phantom_Hoover: Also couldn't you just use a really really dense powerful magnet.
20:40:11 <elliott> We just need to keep creating larger magnet galaxies.
20:40:54 <kallisti> yes this is exactly like a mixed radix numeral system. shocking.
20:43:54 <oerjan> kallisti: see also instance Ix for tuples
20:47:29 <kallisti> it's pretty difficult to read..
20:47:39 <elliott> @src (,) index
20:47:40 <lambdabot> Source not found. The more you drive -- the dumber you get.
20:47:41 <elliott> @src (,) range
20:47:42 <lambdabot> Source not found. There are some things that I just don't know.
20:47:42 <elliott> hmph
20:47:53 <elliott> wouldn't it be nice if @src actually worked.
20:47:55 <kallisti> http://www.haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/src/GHC-Arr.html#Ix
20:48:25 <elliott> kallisti: "6.12.2"
20:48:33 <kallisti> whatever
20:48:57 <oerjan> it's not immensely likely to have changed
20:49:18 <elliott> oerjan: considering that the latest docs do _not_ include ghc.arr...
20:49:28 <oerjan> O KAY
20:49:31 <elliott> though http://www.haskell.org/ghc/docs/latest/html/libraries/base/src/GHC-Arr.html works
20:49:42 <elliott> oerjan: if you keep replying to everything with O KAY it'll become annoying :P
20:49:51 <oerjan> O KAY
20:49:58 <elliott> cough
20:50:07 <oerjan> oh no, not the coughing
20:53:14 <Ngevd> I am GOING TO READ A BOOK.
20:53:16 <Ngevd> MADE OF PAPER
20:53:23 <Ngevd> LOOK AT ME BEING ALL LOW TECH
20:55:42 <elliott> Phantom_Hoover: Have I told you about how we don't have electricity in Hexham?
20:55:48 <Phantom_Hoover> Linear algebra is not as boring as I'd thought.
20:55:50 <elliott> Ngevd: What's the book.
20:56:03 <Ngevd> The Girl with the Dragon Tatyoo
20:56:06 <elliott> Tatyoo.
20:56:13 <Ngevd> That was a ytpo
20:56:25 <kallisti> oaky
20:58:01 <zzo38> I also read the books made of paper, when resting in bed
20:58:17 <elliott> Phantom_Hoover: What are the books made out of in Edinburgh?
20:58:25 <Ngevd> This book is set in Sweden.
20:58:36 <Phantom_Hoover> Raw abstraction.
20:58:47 <Ngevd> I understand there is at least one person who lives in Sweden who frequents this channel
20:58:58 <elliott> Ngevd: Yes, and he's terrible.
20:59:11 <Ngevd> Ooh, maybe he's the killer!
20:59:22 <oerjan> Ngevd: it's originally in swedish, yes
20:59:24 <Ngevd> Dammit, elliott, you've ruined the ending for me!
20:59:43 <elliott> oerjan: Just like you.
21:00:20 <oerjan> elliott: jag fattar inte vad du pratar om
21:00:29 <kallisti> zzo38: in that chess server program you were talking about a long time ago, does the server randomly select who's black and white?
21:01:08 <elliott> oerjan: "You're fat, also bad; do you pratar om?"
21:01:24 <zzo38> kallisti: Free Internet Chess Server? I do not remember now, but I think there is an option to do that but it does not always do that
21:01:43 <oerjan> elliott: hey i cannot disagree with you making a translation that insults you
21:01:47 <kallisti> zzo38: the way I see it working is you choose a preference.
21:01:53 <kallisti> either white, black, or no preference
21:01:55 <kallisti> or
21:02:03 <kallisti> if there's a ranking system, then unfavored players are given white.
21:02:06 <zzo38> kallisti: That does make sense is one way
21:02:16 <kallisti> or some mix of the two.
21:02:20 <zzo38> I think, choose the preference.
21:02:37 -!- monqy has joined.
21:02:48 <kallisti> yes. a ranking gsystem implies a) an actual userbase b) a consistent set of rules
21:02:51 <kallisti> of which I have neither.
21:03:09 <kallisti> now if there were a tournament, with a consistent set of rules between each game, then a ranking system would be reasonable.
21:03:11 <zzo38> Possibly in case both player preference, players with lower ranking preference override, but in general you match up such that preferences agree instead of conflict so you do not have to use the rankings
21:03:32 <kallisti> yes that sounds good.
21:05:42 <kallisti> so the preference should be indicated as part of the standard "greeting" between a client and server.
21:06:27 <Ngevd> Is 2.4 million kronor a lot?
21:07:01 <elliott> Phantom_Hoover: So wait, is everything in Edinburgh made out of raw abstraction?
21:07:06 <zzo38> "Do you want to play [f]irst, [s]econd, or [n]o preference?"
21:07:15 <Phantom_Hoover> elliott, yes.
21:07:23 <elliott> Phantom_Hoover: What about the sandstone?
21:07:25 <Phantom_Hoover> How else do you think a Phantom_Hoover such as myself could live there.
21:07:36 <Phantom_Hoover> elliott, raw abstraction and sandstone.
21:07:54 <elliott> Phantom_Hoover: Ah.
21:08:07 <elliott> Phantom_Hoover: I forget, are you a hoover that hoovs phantoms or a hoover that is a phantom?
21:08:08 <Phantom_Hoover> Sandstone is a very good abstract building material.
21:08:13 <elliott> I always forget.
21:08:19 <Phantom_Hoover> A hoover that is phantom.
21:08:27 <kallisti> zzo38: I don't really know if I intend to set it up that way. perhaps.
21:08:37 <Ngevd> I'm a Taneb who is a Ngevd who is about to leave
21:08:38 -!- Ngevd has quit (Quit: Goodbye).
21:08:45 <elliott> Phantom_Hoover: I really hope you one day use the name Phantom Hoover in an official capacity and get sued by the Hoover company.
21:08:49 <Sgeo> kallisti, elliott Phantom_Hoover darnnit Ngevd left update
21:08:53 <Sgeo> Who else?
21:08:55 <elliott> Phantom_Hoover: Wait why don't you change your name to Phantom Hoover, it's way more pronouncable.
21:09:08 <kallisti> zzo38: I do want it to be text-based in a way that allows you to connect through telnet. or a simple text-based client that memorizes settings for you, so that you can automate any kind of client-server greeting
21:09:20 <elliott> Sgeo: You LIED to me.
21:09:30 <Sgeo> elliott, what?
21:09:50 <Phantom_Hoover> monqy
21:10:01 <kallisti> zzo38: so there would be a prefer command. if you don't send a prefer command then it defaults to no preference.
21:10:06 -!- ais523 has quit (Write error: Connection reset by peer).
21:10:06 <Phantom_Hoover> elliott, my name was Phantom_Hoover until IRC ruined it.
21:10:06 <Phantom_Hoover> cf. the wiki.
21:10:13 <monqy> hi
21:10:17 <kallisti> zzo38: other settings would work similarly. for example, there are a number of rule preferences you can make.
21:10:29 -!- ais523_ has joined.
21:10:33 -!- ais523 has joined.
21:10:33 -!- ais523 has quit (Write error: Broken pipe).
21:10:38 -!- ais523_ has changed nick to ais523.
21:11:16 <Sgeo> Phantom_Hoover, I don't think monqy wants to be on my list?
21:11:18 <Sgeo> I may be wrong
21:11:27 <Sgeo> I should make a macro or something
21:11:41 <Phantom_Hoover> Sgeo, i want him to suffer
21:11:50 <elliott> <Phantom_Hoover> elliott, my name was Phantom_Hoover until IRC ruined it.
21:11:53 <elliott> Phantom_Hoover: I meant your IRL name?
21:12:06 <elliott> Sgeo: There was no update.
21:12:15 <Phantom_Hoover> Because everyone would give me funny looks.
21:12:17 <Phantom_Hoover> elliott, there was.
21:12:28 <Sgeo> elliott, yes there was, unless you checked like two seconds before I announced and read it already
21:12:36 <elliott> Oh, there it is.
21:12:44 <elliott> Phantom_Hoover: Dude, you're called Ahamhmahnahmnhahhnahanin McCuil.
21:12:50 <elliott> Phantom_Hoover: Your funny lookage would *decrease*.
21:13:06 <Phantom_Hoover> elliott, I don't actually recall saying you could disclose that in the channel.
21:13:38 <elliott> Phantom_Hoover: (a) I spelled it terribly (b) Dude it was originally in the channel.
21:13:54 <elliott> It's also been in the channel multiple times since originally being in the channel?
21:14:21 <Phantom_Hoover> I still don't recall saying that.
21:14:43 <elliott> 2011-04-15.txt:08:55:14: -!- Phantom_Hoover is now known as A_McCuil.
21:14:56 <Phantom_Hoover> Humm.
21:15:08 <elliott> First occurrence of "McCuil" (case insensitive) 2010 onwards.
21:16:22 <elliott> Phantom_Hoover: Other reasons to change your name to Phantom Hoover: You'll no longer be named after a crappy search engine.
21:16:36 <Phantom_Hoover> Cuil was not crappy.
21:17:00 <elliott> Phantom_Hoover: OK, *innovative search engine
21:17:10 <shachaf> elliott: I see that you bothered.
21:17:13 <elliott> Innovative in areas such as, for example, not returning relevant results.
21:17:24 <elliott> shachaf: I was running close to the cap and wanted accept rep.
21:17:33 <elliott> shachaf: :(
21:17:34 <kallisti> elliott: the innovation has been around since long before.
21:17:35 <Phantom_Hoover> It did, however, produce extremely entertaining results.
21:17:37 <kallisti> *that
21:17:39 -!- Ngevd has joined.
21:17:42 <Ngevd> Hello!
21:18:01 <Phantom_Hoover> It didn't get you where you meant to go, but where you secretly wanted to go, and is that not the greater journey.
21:18:06 * oerjan recalls cuils are very abstract
21:18:14 <elliott> Phantom_Hoover: FWIW I'm happy not to mention the string that is approximately 100x too ridiculous to be your name in-channel if you don't want me to.
21:18:18 <elliott> Ngevd: How quickly did you read.
21:18:21 <oerjan> Ngevd: 2.4 million Swedish kronor = 223 598.928 British pounds
21:18:26 <Ngevd> Not quickly enough
21:18:29 <elliott> Phantom_Hoover: Also, slapping B-coloured paint on A, etc.
21:18:36 <Ngevd> oerjan, hmm... I could do with that amount of money
21:19:06 <kallisti> > let (a, a) = (2,2) in a
21:19:06 <lambdabot> Conflicting definitions for `a'
21:19:06 <lambdabot> Bound at: <interactive>:1:5
21:19:07 <lambdabot> <in...
21:19:10 <kallisti> this should be a thing.
21:19:27 * shachaf should create fake SO questions that steadily grow more and more annoying.
21:19:30 <elliott> kallisti: gb2Prolog HTH HAND
21:19:37 <Phantom_Hoover> gb2?
21:19:39 <Ngevd> > let (a, _) = (2, 2) in _
21:19:41 <lambdabot> Pattern syntax in expression context: _
21:19:41 <kallisti> get back to
21:19:41 <elliott> Phantom_Hoover: Go back to.
21:19:50 <elliott> shachaf: That would be indistinguishable from SO.
21:20:03 <shachaf> elliott: I think you underestimate me.
21:20:10 <Sgeo> Ngevd, in a, not in _
21:20:13 <kallisti> elliott: I'm trying to think of a situation where such a thing would be useful.
21:20:24 <shachaf> The goal would be to see how long you could last before going *actually* insane.
21:20:29 <kallisti> but I don't think it would be too difficult to implement would it?
21:20:36 <shachaf> kallisti: What do you want this to do, exactly? Compare with (==)?
21:20:48 <kallisti> whatever case does.
21:20:58 <shachaf> No, you don't want structural equality.
21:21:04 <shachaf> What if a is a function?
21:21:27 <shachaf> What if a is a Set, and you have two equivalent sets that are represented using different trees?
21:21:29 <Sgeo> > let f id = 5 in f id
21:21:30 <lambdabot> 5
21:21:33 <Sgeo> !
21:21:36 <kallisti> I... don't know.
21:21:42 <shachaf> What if a is a data structure that has cycles in it?
21:21:44 <Sgeo> How... what
21:21:48 <kallisti> I guess Eq would work, but maybe isn't the best way?
21:21:56 <shachaf> > let f q = 5 in f id
21:21:56 <Sgeo> > let f id = 5 in f (id . id)
21:21:57 <lambdabot> 5
21:21:57 <lambdabot> 5
21:22:07 <Sgeo> > let f id = 5 in f undefined
21:22:08 <lambdabot> 5
21:22:14 <shachaf> kallisti: The best way is probably not to do it.
21:22:14 <Sgeo> Oh
21:22:33 <Sgeo> ...oh
21:22:33 <Ngevd> :t let f id = 5 in f
21:22:34 <lambdabot> forall t t1. (Num t1) => t -> t1
21:22:41 * Sgeo suddenly sees the obvious
21:22:46 <Sgeo> (Before the type)
21:23:02 <shachaf> Before the type, all IRC users are equal.
21:23:31 <Sgeo> > let num = (1::Int) in let f num = num in f 2
21:23:32 <kallisti> I am great confused waht tpye
21:23:32 <lambdabot> 2
21:24:04 <Sgeo> I guess there's no way to make the pattern thing see variables outside the pattern, nor any meaning towards trying to do so
21:24:29 <kallisti> correct
21:26:18 <elliott> <Sgeo> > let f id = 5 in f id
21:26:18 <elliott> <lambdabot> 5
21:26:18 <elliott> <Sgeo> !
21:26:18 <elliott> <Sgeo> How... what
21:26:34 <elliott> On this day elliott died by putting his palm on his face so hard that it went straight through.
21:27:11 <kallisti> elliott: hi now is the time where you have an opportunity to talk me out of using a monad transformer.
21:27:15 <Sgeo> elliott, I managed to trick myself into thinking it was magically pattern matching on the function known as id
21:27:32 -!- oerjan has set topic: Scottish clan invades Hexham, demands apology for calling their name "ridiculous" | http://codu.org/logs/_esoteric/.
21:27:43 <elliott> kallisti: You're stupid and dumb and your code sucks and I hate you.
21:27:45 <elliott> Oh, *monad* transformer.
21:27:51 <elliott> Uh, shachaf doesn't like them.
21:28:05 <Phantom_Hoover> shachaf, why do you not like monad transformers.
21:28:14 <Phantom_Hoover> They're like burrito transformers!
21:28:19 <elliott> oerjan: Unfortunately they're made out of pure abstraction and thus pass right through normal matter.
21:28:27 <Sgeo> > let f (\x -> x) = 5 in f id
21:28:27 <Phantom_Hoover> They turn burritos into spacesuits containing toxic waste.
21:28:27 <lambdabot> <no location info>: Parse error in pattern
21:28:28 <elliott> Phantom_Hoover: I don't like them either, if that means anything to you.
21:29:11 <Ngevd> Oh dear, the Scottish clan is invading Hexham again
21:29:19 <Ngevd> Don't forget to burn the Abbey!
21:29:30 <oerjan> elliott: you shouldn't underestimate their sandstone ballistas
21:29:38 <kallisti> well I will make use of both IO and State. I will begin coding with both monads seperate and see if I ever need them at the same time.
21:29:52 <kallisti> or if I can avoid doing so altogether
21:30:00 <Phantom_Hoover> Ngevd, we will abstract burn them.
21:30:01 <monqy> Sgeo: do you not understand what was happening
21:30:16 <elliott> Phantom_Hoover: Yes, so they'll be abstractly burned but not concretely.
21:30:20 <Phantom_Hoover> elliott, I don't know much about them; I'm interested in what's wrong with them?
21:30:27 <Phantom_Hoover> Monad transformers, that is.
21:30:29 <Sgeo> monqy, I figured it out
21:30:39 <Sgeo> * Sgeo suddenly sees the obvious
21:30:54 <elliott> Phantom_Hoover: They don't compose well.
21:31:03 <Sgeo> id in f id = was just a variable in the pattern to be assigned to whatever the argument was
21:31:37 <elliott> Phantom_Hoover: The order you apply transformers in can have often confusing changes to the semantics; also, there's no real unified "theory" or definition of monad transformers. They're just things that turn Monad instances into other Monad instances where you can lift actions of the inner Monad in.
21:31:38 <monqy> > let 2 + 2 = text "~the wonders of shadowing~" in 2 + 2
21:31:39 <lambdabot> ~the wonders of shadowing~
21:31:50 <elliott> Phantom_Hoover: That sounsd specific, but in reality it means that monad transformers can pretty much do anything.
21:31:59 <Phantom_Hoover> elliott, no, I get what you mean.
21:32:02 <elliott> When turning a monad into its transformer, there's no mechanical rule for telling where you layer on the "m"s.
21:32:28 <elliott> As far as operational concerns go, they can be pretty damn slow, because every single bind you perform has to go through N layers of wrapping.
21:32:41 <elliott> I mean, there's a RWST that's just ReaderT, WriterT, and StateT bundled together for performance.
21:33:01 <kallisti> I'm not entirely sure I understand the purpose of RWS
21:33:04 <elliott> (I guess "convenience" too, but it could just be a type synonym if that was the real reason.)
21:33:12 <kallisti> it seems that State works well for all three of these things.
21:33:23 <elliott> kallisti: Yes, and you can write all your code in IO, too.
21:33:33 <elliott> Using State for all of those is great, because you can write to your read-only state!
21:33:38 <elliott> And reverse your monoidal accumulator.
21:33:40 <shachaf> MONAD TRANSFORMERS R DUM
21:33:42 <shachaf> That's why.
21:33:46 * shachaf QED
21:33:56 <elliott> shachaf: I think Phantom_Hoover will find your criticism tau times as convincing as mine.
21:34:03 <elliott> s/sounsd/sounds/
21:34:06 <Sgeo> So basically, needing to learn new semantics for each monad transformer independent of the semantics of the monad?
21:34:08 <elliott> s/}/ }/ way up
21:34:24 <elliott> Sgeo: Well, no, what they do is usually intuitively obvious.
21:34:27 <elliott> That's not saying much, though.
21:34:34 <elliott> Oh, yeah, and it's really hard to "combine" monad transformer stacks.
21:34:38 <elliott> You pretty much have to define one stack and stick to it.
21:34:53 <elliott> You can't say "this code needs <list of effects>, this other code needs <other list of effects>, and this code uses both the previous codes".
21:34:57 <shachaf> elliott: So at least one of our criticisms was irrational.
21:35:04 <elliott> At least not without a LOT of threading stuff manually to run it all.
21:35:09 -!- Ngevd has quit (Quit: Goodbye).
21:35:10 <shachaf> Oh, wait, you're giving actual justifications.
21:35:11 <oerjan> what we need is a monad transformer zipper!
21:35:52 <elliott> Phantom_Hoover: FWIW my current favourite solution to the problem of composable effects is http://math.andrej.com/2010/09/27/programming-with-effects-ii-introducing-eff/, which I especially like because there's no leap of syntax from pure code to an effect.
21:36:00 <elliott> With Haskell you need to, at the very least, interleave <$> and <*> everywhere.
21:36:04 <oerjan> elliott: hey that's what Monad* classes are for
21:36:14 * kallisti considers what he could possibly use RWS for in his portal chess implementation.
21:36:27 <kallisti> writer could be used for a log.... but, do I need one of those?
21:36:30 <elliott> oerjan: Yeah, and you can't define context synonyms, so all your method signatures are 10x larger! \o/
21:36:46 <elliott> oerjan: Also, if the compiler doesn't inline it away, you get to pass around a hundred typeclass dictionaries everywhere!
21:36:53 <elliott> s/method signatures/definition signatures/
21:37:06 <elliott> oerjan: Oh, and you can't have two pieces of state in the same stack.
21:37:15 <elliott> That's just not allowed. Everyone only needs one piece of state.
21:37:44 <Sgeo> elliott, hmm? Surely you can if you drop the convenience of MonadState?
21:37:55 <elliott> Sgeo:
21:38:00 <elliott> <elliott> Oh, yeah, and it's really hard to "combine" monad transformer stacks.
21:38:00 <elliott> <elliott> You pretty much have to define one stack and stick to it.
21:38:00 <elliott> <elliott> You can't say "this code needs <list of effects>, this other code needs <other list of effects>, and this code uses both the previous codes".
21:38:00 <elliott> <elliott> At least not without a LOT of threading stuff manually to run it all.
21:38:03 <elliott> <oerjan> elliott: hey that's what Monad* classes are for
21:38:13 <elliott> Phantom_Hoover: I BET YOU'RE NOT EVEN READING THAT
21:38:33 <Phantom_Hoover> I was reading, does that count??
21:38:34 <oerjan> elliott: Phantom_Hoover thinks this was far too concrete for an abstraction
21:38:35 <elliott> shachaf: You should read it too, unless you did since I told you ages ago.
21:39:14 <Sgeo> What's with the def and nonsense?
21:39:39 <Sgeo> Tastes like... ML?
21:39:46 <kallisti> I wonder if Valve will hunt me down if I make advertisement money off of portal chess. :P
21:39:56 <ais523> kallisti: just name it something other than portals
21:40:00 <elliott> Sgeo: Well, it's not like you can do mutually-recursive definitions any other way at a REPL.
21:40:04 <shachaf> elliott: Read what? "introducting eff"?
21:40:05 <elliott> But yes, the authors are ML people.
21:40:13 <elliott> shachaf: Yes. I told you to the last time monad transformers came up.
21:40:19 <shachaf> It's in my list-of-things-that-I'll-ostensibly-read-someday!
21:40:25 <shachaf> Isn't that enough for you, elliott?
21:40:32 <ais523> elliott: I had an INTERCAL REPL idea that each line you wrote would append to a program
21:40:36 <elliott> shachaf: NO READ NOW.
21:40:37 <shachaf> There are only about a hundred other tabs in that list!
21:40:44 <elliott> shachaf: It's like 3 pages long, dude
21:40:45 <ais523> and it'd rerun the program from scratch each time, discarding any output that was the same as last time
21:40:46 <elliott> DUDE.
21:40:48 <elliott> ais523: heh
21:40:51 <ais523> that way, even COME FROM would work properly
21:41:27 <shachaf> elliott: Fine, I'll move it to the end of that list.
21:41:32 <shachaf> I always start from the end.
21:41:47 <elliott> shachaf: OK, and then start now.
21:41:55 * shachaf should probably wake up now.
21:42:13 <oerjan> alles hat ein ende nur die wurst hat zwei
21:42:53 <elliott> ais523: In an emergency situation, could you crudely fashion an antistatic wristband by crouching on a computer case?
21:43:15 <ais523> elliott: depends on if the case is earthed
21:43:25 <ais523> which it probably will be if it's made of metal, not painted, and plugged in
21:43:29 <ais523> 1 and 3 are likely, 2 may not be
21:43:32 <kallisti> liftCatch :: (m (a, s, w) -> (e -> m (a, s, w)) -> m (a, s, w)) -> RWST l w s m a -> (e -> RWST l w s m a) -> RWST l w s m a
21:43:35 <kallisti> mmmmmm
21:43:39 <ais523> (the paint would make the outside not earthed, although the inside would be)
21:44:04 <elliott> ais523: thanks, I'll let my supernatural vacuum cleaner friend know
21:44:10 <oerjan> earth tone painting
21:44:33 <ais523> elliott: this is a really bizarre question, anyway
21:44:42 <ais523> a good emergency antistatic wristband is water pipes, anyway
21:44:44 <elliott> wow, TPB are switching to magnet links exclusively
21:44:49 <ais523> they're often unpainted, and quite commonly found around houses
21:45:15 <Phantom_Hoover> 'Often'?
21:45:23 <Phantom_Hoover> I don't think I've ever seen painted water pipe— oh wait you don't mean taps.
21:45:32 <Phantom_Hoover> (I used a tap to assuage my paranoia.)
21:45:33 <ais523> and pretty much every house has their entire water supply system earthed because it saves on money for earth wires
21:45:45 <elliott> Phantom_Hoover/tap otp
21:45:49 <ais523> well, on the flip side, sometimes taps are made of plastic
21:46:18 <Phantom_Hoover> elliott, no, I'd have to be one of those hoovers that works with water (these are a thing apparently, it said so on Postman Pat once).
21:46:32 <ais523> Phantom_Hoover: I think we actually own one
21:46:41 <ais523> haven't used it in years, though
21:46:44 <elliott> Phantom_Hoover: Reference 1. Postman Pat
21:46:58 <oerjan> Phantom_Hoover: my aunt has one
21:47:07 <ais523> used it occasionally to wash the carpet, rather than just vacuum-clean it
21:47:25 <shachaf> elliott: You're missing out on #haskell
21:47:41 <shachaf> <carpi> okay.. i solved the problem.. but it really makes me think that haskell is dead slow. when it was taking more than 20 minutes.. i thought i made a mistake somwhere.. but that doesn't seem to be the case.. after 20 minutes my code gav me the right answer..which leads me to believe that my code was correct..but haskell was dead slow..
21:47:47 <shachaf> <carpi> 20 minutes is simply inexcusable
21:48:19 <monqy> is carpi for real
21:50:14 <shachaf> <carpi> koeien: could you please tell me why do you recommend data.set? what aspect of the problem makes you think that using data.set would make it run faster?
21:50:15 <kallisti> so if I use Lazy RWS, this means I can call runRWS and get things like i.e. infinite lists of output to pass to channels/sockets/filehandles etc
21:50:24 <kallisti> right?
21:50:58 <elliott> shachaf: Did you suggest -O2?
21:51:02 <elliott> Did anyone suggest -O2?
21:51:02 <kallisti> if I used strict RWS I would want to add IO to the stack.
21:51:05 <elliott> I bet carpi is running in GHCi.
21:51:29 <kallisti> elliott: yes oxygen is generally helpful when problem solving.
21:51:31 <shachaf> ghci -O2 is the obvious answer.
21:51:38 <elliott> kallisti: Don't use lazy input.
21:51:51 <elliott> shachaf: Come on, you have to suggest -O2, it hurts me inside.
21:52:10 <kallisti> elliott: okay, so then I don't want to use lazy RWS, because I'm pretty sure I'd want lazy input.
21:52:11 <shachaf> elliott: Why don't you suggest it?
21:52:47 <elliott> 02:36:01 <Eduard_Munteanu> carpi: think of 'main' as a function that produces a list of things the runtime has to do, like write a file, read stdin etc.
21:52:47 <elliott> 02:36:43 <Eduard_Munteanu> carpi: the things the runtime does for you is stuff that gets "executed"
21:52:47 <elliott> 02:38:40 <carpi> and by runtime are you referring to the part where actions are performed by systems outside haskell on behalf of haskell?
21:52:47 <elliott> 02:39:47 <Eduard_Munteanu> carpi: the RTS
21:52:48 <elliott> 02:42:57 <carpi> ah okay.. i googled RTS for haskell.. seems like its an option for ghc where i can tweak the environment in which the haskell code can run. This is exciting..so it means i can make code more faster this way
21:52:58 <elliott> shachaf: Because I'd join and go "HI, SHACHAF PASTD ME LOGS TO MOCK YOU, USE -O2" and no.
21:53:03 <kallisti> elliott: or are you saying /in general/ not to use lazy input?
21:53:11 <elliott> kallisti: In general.
21:53:16 <shachaf> elliott: Hey, I wasn't *mocking*! I was sharing.
21:53:40 <kallisti> elliott: ...really?
21:53:44 <elliott> kallisti: Unless you want space leaks, resource allocation problems, unpredictable performance, ...
21:53:47 * shachaf imagines it: * elliott has join #haskell <elliott> USE -O2! <elliott> WHY ISN'T ANYONE TALKING ABOUT -O2??? <elliott> SOMEONE MENTION -O2, YOU USELESS CHANNEL! * elliott has left #haskell [RAGE]
21:53:51 <elliott> ... difficult-to-debug IO problems ...
21:54:11 <kallisti> elliott: so you mean lazy input is a bad idea for programs that are moderately complicated.
21:54:20 <kallisti> but okay for simple things.
21:54:35 <elliott> kallisti: No.
21:54:45 <pikhq> Lazy IO is "good" for the following: trivial examples.
21:54:45 <elliott> Lazy input is useful only for toy hacks.
21:54:59 <elliott> i.e. programs you will run less than 5 times ever.
21:55:02 <kallisti> I see.
21:55:10 <elliott> Or, I suppose, programs that are thiny-veiled wrappers over a trivial pure function.
21:55:15 <shachaf> elliott: Nonsense.
21:55:25 <shachaf> There's also the second thing you mentioned.
21:55:34 <shachaf> And probably there are other justified uses for lazy I/O.
21:55:34 <kallisti> elliott: and here I thought lazy input was something that made Haskell awesome to use. :P
21:55:54 <elliott> shachaf: Well, "interactive multi-user network server" isn't one.
21:56:21 <oerjan> who cares about multiple users anyway
21:56:25 <elliott> kallisti: You might like enumerators or conduits or whatever, since they were designed to offer the convenience of lazy IO without the problems.
21:56:41 <elliott> They don't really succeed at the convenience part, but I hear the problems they have are new and specific to their solutions.
21:57:21 <kallisti> elliott: I'm guessing they generalize to many different sources of IO? i.e. sockets, filehandles, concurrent channels
21:57:28 <elliott> shachaf: 13:10:18 <carpi> koeien: yea in ghci
21:57:30 <elliott> shachaf: Told you.
21:57:41 <elliott> kallisti: Yes, although in GHC sockets are Handles.
21:57:48 <elliott> (Yes, there's the lower-level interface, but you almost never need to use it.)
21:57:50 <kallisti> oh that's right.
21:58:15 <elliott> kallisti: Conduits are the hip new thing, but I have a predisposed bias against them. On the other hand, enumerator is possibly even more overcomplicated, so...
21:58:16 <shachaf> elliott: I'm pretty sure Haskell is just dead slow.
21:58:27 <Deewiant> elliott: What bias?
21:58:35 <elliott> Conduits are better at the resource management thing, anyway.
21:58:36 <kallisti> elliott: what about things like.... a simple recursive loop.
21:58:47 <elliott> Deewiant: Well, I don't like them. :p
21:58:52 <Deewiant> elliott: Why not? :-P
21:59:03 <elliott> Deewiant: They use mutable references to maintain basic internal state, for one.
21:59:25 <elliott> Just because their interface is basically "stateless" but, hey, they run in ST or IO, so let's just use refs!
22:00:18 <elliott> Also, they seem very much "engineer-designed", in that there's no coherent underlying semantics or theory at all, there's just a bunch of types that usually have too many members and appear to be essentially "ad-hoc" OOP-ish object records where more things were added on to accomplish additional needs like resource management.
22:00:39 <elliott> Which works, sure, but is bad news for something so "basic" and underlying as stream processing.
22:00:48 <elliott> Also, "quotes".
22:01:00 <Deewiant> Alright.
22:01:51 <elliott> Deewiant: Anyway, not necessarily that enumerator or anything seems any more coherently designed, but at least there's good signs like functions, simple ADTs, use of closures to maintain internal state, etc.
22:02:25 <kallisti> elliott: a simple glance at the top-level module for both enumerator and conduit suggests that enumerator is conceptually simpler.
22:02:39 <elliott> Deewiant: Mostly I think that we're close enough to coming up with a consistent and simple underpinning for iteratees that throwing everything away to start afresh right before that happens is a waste.
22:02:49 <elliott> kallisti: I suspect people will begin abandoning enumerator in droves.
22:02:55 <elliott> kallisti: Anyway, enumerator is painful to use in practice.
22:03:07 <elliott> Largely because there's about 10 composition operators and you usually just have to guess which one you need.
22:03:32 <elliott> http://hackage.haskell.org/packages/archive/conduit/0.0.3/doc/html/Data-Conduit.html#g:5 -- at least conduit's are simple.
22:03:50 <kallisti> there's many more types though. I don't really know where to start.
22:04:48 <kallisti> SourceResult is simple enough. :P
22:04:51 <elliott> kallisti:
22:04:55 <elliott> http://www.yesodweb.com/blog/2011/12/resourcet
22:04:55 <elliott> http://www.yesodweb.com/blog/2011/12/conduits
22:05:00 <elliott> http://www.yesodweb.com/blog/2011/12/conduits-sink
22:05:05 <elliott> http://www.yesodweb.com/blog/2012/01/conduits-conduits
22:05:07 <elliott> http://www.yesodweb.com/blog/2012/01/conduits-buffering
22:05:13 <elliott> is the blog post series they were introduced in that just concluded.
22:06:03 -!- NihilistDandy has joined.
22:06:41 <shachaf> elliott: I'm glad to hear that the conduit's are out of the bag.
22:07:16 <elliott> shachaf: conduit's [composition operators].
22:07:24 <shachaf> Oh.
22:07:30 <shachaf> That's what I get for not reading context.
22:07:42 * shachaf should probably just leave IRC.
22:07:46 <shachaf> At this rate.
22:12:11 <oerjan> yeah internet damages your brain, you hear.
22:23:53 <kallisti> elliott: I sure am learning a lot about how to abstract ResourceT to non-IO monads!
22:24:28 <elliott> Sorry, next time I won't link you the material presented introducing an abstraction you find confusing.
22:25:12 <kallisti> elliott: oh no it's useful material I'm just drudging through it waiting for the punchline.
22:25:32 <kallisti> (the probably three or four functions I need)
22:25:49 <elliott> kallisti: If you're writing a network server, you'll probably need more than that.
22:26:06 <kallisti> assuming I have an actual need to scale, yes. a good assumption to make.
22:28:24 <kallisti> psh, you mean resourceT can only have (maxBound :: Int) registered actions!?
22:29:05 <zzo38> kallisti: OK. Yes, it could just be a "prefer" command, so you can connect using telnet or MUD client or whatever, and if a graphical client is used it can be a menu.
22:29:13 <kallisti> zzo38: yep
22:29:27 <kallisti> the actual syntax I'll work out later.
22:29:38 <kallisti> as "prefer" could be many different kinds of preferences.
22:29:45 <kallisti> regarding player color and rule set.
22:29:52 <kallisti> and possibly other unforseen options.
22:30:48 <kallisti> aha, I figured out what my reader data is. :P
22:31:48 -!- _Slereah has quit (Ping timeout: 255 seconds).
22:35:42 -!- _Slereah has joined.
22:36:17 -!- MDude has quit (Ping timeout: 240 seconds).
22:38:33 <zzo38> kallisti: Yes, you can have those kind of option too, I suppose. And then "help prefer" lists the available preferences (a graphical client can simply list all of them on a menu).
22:39:09 <zzo38> Such as, "prefer color black" to set the preference for playing black, and "prefer -color" to unset that preference.
22:41:42 <kallisti> yes something along those lines.
22:43:19 <kallisti> elliott: okay now that I've stubmled through the ResourceT article the actual conduit article itself is significantly less painful.
22:43:35 <zzo38> While "prefer" by itself should probably display the current settings.
22:45:53 <elliott> kallisti: *articles
22:52:29 <kallisti> it appears that $= =$= and =$ have considerable variation in the ways you can equivalently piece sources/conduits/sinks together.
22:53:13 <elliott> It's just (a $= b =$= c =$= d =$ e), isn't it?
22:53:19 <elliott> i.e. you only use ($=) and (=$) at the end-points.
22:53:50 <kallisti> elliott: well, if I'm understanding correctly you could could continue to use them until the midpoints
22:53:57 <elliott> Phantom_Hoover: Is lambda l or h, I forget.
22:54:15 <elliott> kallisti: That's just (f . g . h $ x) vs. (f $ g $ h $ x), isn't it?
22:54:18 <Phantom_Hoover> elliott, l.
22:54:39 <kallisti> elliott: yes.
22:54:43 <elliott> Phantom_Hoover: thx
22:55:22 <kallisti> elliott: it's just a question of how you want to use the abstraction. What you want to be considered a start point, mid point, and end point.
22:56:53 <kallisti> I haven't learned how enumerators work to compare, but the basics of conduits are pretty intuitive.
22:58:51 <elliott> shachaf:
22:58:52 <elliott> The type of function is off, but without seeing it we probably can't tell why. – Xodarap 10 mins ago
22:58:52 <elliott>
22:58:52 <elliott>
22:58:52 <elliott> It doesn't need a type – GoodGuyGreg 4 mins ago
22:59:05 <elliott> IT DOESN'T NEED A TYPE.
22:59:08 <kallisti> lol
22:59:47 <kallisti> "It doesn't need a type" are probably, out of context, words I would never associate with Haskell.
23:01:44 <kallisti> so for example, the function that transforms text input into sybolic "commands" I would probably make a source.
23:02:01 <kallisti> s/function/thing/
23:02:04 <kallisti> (????)
23:02:11 <kallisti> conduit-thingy
23:04:09 <elliott> kallisti: Presumably you'd write a parser first.
23:04:33 <kallisti> I was actually going to define what the commands are first..
23:04:39 <kallisti> and then do the parser afterwards
23:04:42 <kallisti> or well
23:04:44 -!- Patashu has joined.
23:04:45 <kallisti> do both kind of at the same time.
23:04:50 <elliott> I meant before writing a conduit thing.
23:04:53 <kallisti> oh yes.
23:05:20 <kallisti> the first thing is to implement the "pure" chess game, playable by absolutely no one. it just sits there and exists.
23:05:36 <kmc> lots of things in haskell don't have types
23:05:38 <kmc> like types
23:05:39 <kallisti> then I'm going to add all the things that are required for the interface.
23:06:22 <kallisti> well, someone could play it in GHCI by feeding it a list of commands (in the form of an ADT), actually.
23:08:48 -!- FireFly has quit (Excess Flood).
23:09:23 <Phantom_Hoover> Omegle... now lets you log in through Facebook.
23:09:57 <oerjan> types have a type, kind of
23:10:09 <Phantom_Hoover> Not in Haskell, surely.
23:10:35 <oerjan> the whoosh is strong in this one.
23:11:07 <Phantom_Hoover> I'm Vorpalling.
23:11:25 * kallisti Vorpals the Ngevd.
23:12:17 <oerjan> sorry, *with
23:14:34 * oerjan notes that you can say "kind of" or "sort of", but not really "type of"
23:15:38 <oerjan> well not in that idiom.
23:16:36 <elliott> kmc: They don't need types.
23:16:42 <elliott> Only things that need types have them in Haskell.
23:16:45 <kmc> :D
23:16:47 <elliott> So, not functions.
23:19:24 <kallisti> is Data.Conduit correct?
23:19:32 <kallisti> I would think... Control.Conduit is a better name
23:19:37 <kallisti> perhaps.
23:19:50 <elliott> There's no difference.
23:20:14 <kallisti> well, yes. that's the bottom line.
23:20:17 <elliott> Data.List; shouldn't it be Control.List, because its Applicative and Monad instances model nondeterministic computation?
23:20:24 <elliott> Data.Functor but Control.Applicative?
23:20:41 <elliott> Why, shouldn't Control.Applicative be Data.Applicative, considering how many containers are instances of it?
23:20:44 <kmc> such a stupid distinction
23:21:00 <elliott> Why are monads in Control.Monad, but if you just chop off the type parameter it ends up in Data.Monoid?
23:21:31 <kallisti> oh wait I've got the best module name:
23:21:32 <kallisti> Conduit
23:21:43 <kallisti> Monad
23:21:46 <kallisti> Applicative
23:21:53 <elliott> Conduit.Monad.Applicative
23:21:59 <kallisti> yes exactly
23:22:55 <kallisti> I guess it would make sense for Data to contain actual data structures
23:22:59 <kallisti> and related functions
23:23:06 <elliott> kmc: Anyway, we need to sharply distinguish Data and Control to distance ourselves from the Lispers.
23:23:08 <kallisti> with Control containing abstractions over many structures.
23:23:09 <zzo38> The Data/Control module names are not really always sensible
23:23:14 <zzo38> Since in Haskell they are the same thing
23:23:25 <elliott> kallisti: So is a total trie in Data or Control?
23:23:28 <zzo38> (I mean, data structures and control structures are the same thing)
23:23:30 <elliott> After all, it represents a function.
23:23:42 <elliott> But it's pure data, no function arrows or control structures in there.
23:24:02 <kallisti> elliott: I don't know enough about what that is to conclude anything about it.
23:24:55 <kallisti> I mean
23:24:57 <kallisti> I know what a trie is
23:24:59 <kallisti> but not a total trie
23:25:20 <elliott> kallisti: http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries might help.
23:25:28 <elliott> I simply mean a trie that has all its elements defined.
23:25:37 <elliott> i.e. representing (a -> b) rather than (a -> Maybe b) or similar.
23:25:55 <kallisti> ah
23:26:13 <kallisti> well, can such a trie be used as a control structure?
23:26:41 <kallisti> (I'm not entirely sure what that means)
23:26:49 <elliott> kallisti: Presumably functions call under control in your categorisation scheme, since they're not "actual concrete data structures"(tm).
23:26:51 <elliott> *fall
23:27:01 <elliott> Also lambda is the ultimate control flow and all that.
23:27:29 <elliott> So, since you have ((a -> b) -> Trie a b) and (Trie a b -> (a -> b))...
23:27:32 <kallisti> hmmm, I'm not really sure honestly. Sure I understand the distinction is arbitrary, but also believe it can be made, though it may be an ill-defined distinction.
23:27:40 <elliott> Yet they're pure data trees.
23:27:44 <kallisti> I would say "control structures" in a functional language would include higher-order functions.
23:27:44 <elliott> Concrete and all that.
23:27:54 <zzo38> Is any of the changes made to Haskell to provide built-in natural number types having inhabited natural number types?
23:28:04 * Phantom_Hoover → sleep
23:28:04 -!- Phantom_Hoover has quit (Quit: Leaving).
23:28:23 <elliott> kallisti: It really isn't a meaningful distinction.
23:28:51 * elliott would merge Data and Control and call the result Structure or something like that.
23:28:55 <elliott> Oh, "Form", that's nicest.
23:29:02 <kallisti> I would just remove that level.
23:29:03 <zzo38> There is no difference between data structures and control structures in Haskell (unless they are made strict)
23:29:03 <kallisti> >_>
23:29:11 <elliott> Then move Control.Exception into System.Exception.
23:29:18 <elliott> As well as Control.Concurrent to System.Concurrent.
23:29:32 <elliott> kallisti: That would cause massive top-level pollution.
23:29:45 <kallisti> what nasty things does that entail?
23:30:03 <kallisti> Data and Control are already pretty hugely populated.
23:30:43 <elliott> kallisti: For a start, there's a Data.Data :P
23:30:48 <zzo38> I would put Functor and then Functor.Applicative, Functor.Monad, and Functor.Comonad. That might do.
23:31:00 <elliott> Also Data.Dynamic would become Dynamic, and that's a very overloaded word to occupy.
23:31:06 <zzo38> But put list stuff in Data.List
23:31:15 <elliott> And that's just in base.
23:31:42 <kallisti> s/^(Data|Control)/Stuff/g
23:31:55 <kallisti> s/^(Data|Control)/Computers/g
23:32:06 <kallisti> s/^(Data|Control)/Power!/g
23:32:12 <kallisti> Power.Monad
23:32:16 <kallisti> sounds more exciting doesn't it?
23:32:18 * elliott sincerely likes Form the best.
23:32:35 <kallisti> sounds like something from martial arts...
23:32:41 -!- Phantom_Hoover has joined.
23:32:42 <elliott> Data structures are about form, control structures are about form, abstractions like Functors and Monads are about form.
23:32:46 * kallisti utilizes the monad form to deliver a crushing blow to elliott.
23:32:50 <zzo38> What are they called in mathematics?
23:32:54 <elliott> Something like concurrency or exceptions or IO or whatever isn't really about form.
23:33:03 <kallisti> elliott: help what is "form"
23:33:18 <elliott> kallisti: Buy a dictionary.
23:34:25 * Phantom_Hoover → sleep again
23:34:25 -!- Phantom_Hoover has quit (Client Quit).
23:34:43 <elliott> http://www.reddit.com/r/haskell/comments/og3lr/don_stewart_spokesman_for_senate_minority_leader/
23:34:46 <elliott> GREAT HASKELL CONTENT
23:35:10 <kmc> sigh
23:35:30 <kmc> great comment too
23:36:09 <elliott> : - )
23:36:10 <zzo38> Do you think the try/evaluate stuff is not really ideal? I could try to make a library that makes macros using Template Haskell for catching these kind of pattern errors, which seem more ideal way to me since it does not require any values (including functions) to be not mathematically correct; macros are not values so it works OK
23:36:15 -!- MDude has joined.
23:36:30 -!- MDude has quit (Client Quit).
23:38:29 -!- cswords_ has joined.
23:38:32 <zzo38> :: -- ))
23:38:33 <elliott> mathematically correct, n. something done the way zzo likes it
23:38:42 <zzo38> Ssoorrrryy,, dduupplleexx sswwiittcchh oonn..
23:38:53 <elliott> oops
23:38:57 <zzo38> elliott: That isn't the correct definition.
23:39:02 <oerjan> yyoouu aarree ffoorrggiivveenn
23:40:51 -!- augur_ has joined.
23:41:00 -!- sebbu2 has joined.
23:41:00 -!- sebbu2 has quit (Changing host).
23:41:00 -!- sebbu2 has joined.
23:41:36 <monqy> correct definition would make it an adjective?
23:41:52 <zzo38> monqy: That would be part of it.
23:47:51 -!- tswett_ has changed nick to tswett.
23:48:29 -!- sebbu has quit (*.net *.split).
23:48:30 -!- augur has quit (*.net *.split).
23:48:30 -!- cswords has quit (*.net *.split).
23:49:53 <oerjan> i disagree with monqy's correct
23:50:46 <elliott> kmc: oh god
23:50:58 <elliott> kmc: i just answered two SO questions by the poster of that functional dreamers thing
23:51:04 <elliott> fml
23:51:31 <monqy> functional dreamers thing?
23:53:07 <elliott> monqy: http://www.jadbox.com/2012/01/functional-dreamers/
23:53:25 <monqy> oh that
23:53:29 <monqy> heheheh
23:53:51 * elliott enjoys the use of "conceptualised" re: Conal since it's the closest verb he can think of to "nothingised"
23:54:26 <oerjan> proactivized
23:55:01 <kmc> link elliott?
23:55:46 <zzo38> How often do you find (zip [0..]) a useful function?
23:56:35 <kmc> very
23:57:10 <elliott> kmc: to the questions?
23:57:22 <kmc> yeah
23:57:28 <zzo38> Is there a single name for (zip [0..]) function?
23:57:38 <elliott> http://stackoverflow.com/questions/8858422/does-tryhaskell-org-support-definitions http://stackoverflow.com/questions/8858739/the-difference-between-and-expressions
23:57:39 <elliott> zzo38: zip [0..]
23:58:04 <oerjan> zzo38: there are single-name functions with more characters than that :P
23:58:16 <zzo38> elliott: That is not what I meant, though.
23:58:28 <kmc> i'm fine with calling it «zip [0..]»
23:58:29 <zzo38> oerjan: I just wanted to know if there is any; it is not required
23:58:34 <kmc> one less arbitrary name to memorize
23:58:36 <kmc> but no, I don't know of one
23:58:39 <kmc> python calls that "enumerate"
23:58:43 <kmc> haha"closed as exact duplicate by duri, ehird, Martin Geisler, Tikhon Jelvis, Daniel Pratt 4 secs ago"
23:59:19 <elliott> hilarious
23:59:22 <elliott> (?)
23:59:32 <kmc> :t (?)
23:59:33 <lambdabot> Not in scope: `?'
23:59:56 <elliott> the ideal language is one where you don't need name bindings at all
23:59:59 <elliott> because they'd all be longer than the definition
2012-01-14
00:00:25 <zzo38> elliott: Do you mean, like, Unlambda or Lazy-K, for example?
00:00:41 <elliott> well... for sufficiently wrong definitions of "longer"
00:02:08 <oerjan> elliott: i have a hunch that might somehow violate a theorem, similar to http://en.wikipedia.org/wiki/G%C3%B6del%27s_speed-up_theorem
00:02:28 <oerjan> for sufficiently weird definitions of violate
00:02:51 <elliott> oerjan: well um of course it's impossible
00:02:55 <elliott> without an infinite alphabet at least
00:03:01 <kmc> the famous mathematician G%C3%B6del
00:03:26 <oerjan> kmc: he encrypted his name to keep the persecutors away
00:03:28 <elliott> "This statement cannot be proved in Peano arithmetic in less than a googolplex symbols" goedel really liked antagonising PA
00:04:43 <elliott> oerjan: lmao at "List of long proofs" in the see also
00:04:55 <elliott> i somehow doubt they're googolplex-length
00:06:00 <oerjan> _probably_ not
00:06:16 <oerjan> as even an automated prover couldn't check them
00:07:44 <Jafet> They could be in a less powerful system
00:09:53 <zzo38> http://zzo38computer.cjb.net/textfile/miscellaneous/impossible_physics_list
00:10:43 -!- cheater has joined.
00:10:55 -!- primo has joined.
00:13:32 <kallisti> do most web browsers support HTML% yet?
00:13:34 <kallisti> *5
00:13:54 <monqy> what is most
00:13:58 <ais523> hmm, there's a website called caniuse or something
00:14:00 <kallisti> the ones that the people use.
00:14:01 <ais523> that tracks the support
00:14:49 <kallisti> so HTML5 Audio is supported in the newest versions of everything except Opera Mini
00:15:00 <elliott> `welcome primo
00:15:11 <kallisti> browsers in risk of not having it include... IE. awesome.
00:15:11 <monqy> audio why do you want audio audio is awful dont do audio
00:15:12 <HackEgo> primo: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:15:12 <olsner> kallisti: I'd say that's a feature though
00:15:21 <kallisti> monqy: go on
00:15:22 -!- oerjan has set topic: Hexhammers chase scottish clan back to Edinburgh with proton packs | http://codu.org/logs/_esoteric/.
00:15:28 <primo> elliott: thanks
00:15:49 <olsner> but of course, even Mini could open audio through whatever platform audio handler(s) there are
00:15:53 <monqy> do you want audio why do you want audio dont
00:15:55 <olsner> theoretically anyway
00:16:23 <zzo38> I suggest not using any fancy stuff unless needed for your webpage for sure; don't use video and audio and JavaScripts and CSS and pictures for everything.
00:16:39 <olsner> I'd say implementing that would be a horrible thing, and I will obviously prevent it
00:17:51 <kallisti> zzo38: it's difficult to implement a simple audio player without playing audio.
00:18:28 <monqy> noisy webpages are why bad things happen
00:18:29 <zzo38> kallisti: Yes; if you need to play audio then of course you need to play audio. But if you want to implement a simple audio player you probaly don't need a webpage anyways
00:21:52 -!- augur_ has changed nick to augur.
00:22:34 -!- ais523 has quit (Remote host closed the connection).
00:24:43 -!- kallisti_ has joined.
00:24:54 <kallisti_> hi
00:24:59 <kallisti_> X suddenly froze
00:25:01 <kallisti_> what do?
00:25:06 <kallisti_> is there a way to fix this without restart?
00:26:15 <kallisti_> I'm just going to restart...
00:26:38 <kallisti> oh...
00:26:49 -!- kallisti_ has quit (Client Quit).
00:26:57 <kallisti> apparently
00:27:00 <kallisti> right clicking was the solution
00:27:46 <kallisti> I think gftp is just bad and I should never use it again.
00:28:09 <olsner> so based on the last 9 lines, #esoteric is now kallisti's channel for talking to his/her self
00:28:23 <kallisti> yes.
00:29:19 <zzo38> A few lines are not sufficient statistics.
00:30:05 <olsner> zzo38: hush, you're breaking the statistics
00:32:35 <kallisti> WHY ARE ALL OF THESE FTP CLIENTS SO BAD
00:32:59 <zzo38> kallisti: What happen if you just type in "ftp" at the prompt?
00:33:01 <elliott> kallisti: ftp(1)
00:33:41 <kallisti> I'll learn that later.
00:34:05 <elliott> im sure learning a new crappy inconsistent gui app will be about 10x eaiser
00:34:06 <elliott> easier
00:34:40 <kallisti> well for doing a few simple things when under a slight time pressure.
00:34:43 <kallisti> it will be fine
00:34:45 <kallisti> and then I can go learn ftp
00:43:03 -!- Klisz has joined.
01:03:32 <elliott> monqy: hi
01:04:29 <kmc> <cl1> i got a new irc client Pidgin <cl1> aparently xchat is not free after 30 days
01:04:40 <elliott> hahaha
01:05:17 <pikhq> So, US courts think that having a .com or .net hostname suffices in order for them to have jurisdiction over you.
01:05:25 <elliott> hmm, i need to find some way to convince elliottt to change their legal name
01:05:47 <kmc> the US has 'jurisdiction' over the entire world anyway
01:05:48 <pikhq> Apparently nobody in the legal system even knows a damned thing about anything.
01:05:48 <elliott> or else, try and be really active in #haskell about twenty minutes ago
01:05:59 <elliott> minimise or maximise confusion, the choice is mine
01:06:02 <kmc> you're lucky if the courts claim jurisdiction
01:06:14 <kmc> otherwise the executive branch can unilaterally blow up your house
01:06:30 <pikhq> Y'mean it's a matter of "most money wins" rather than "we win" then?
01:06:38 <elliott> hey gusy i hear ameriKa suxe!
01:06:48 <elliott> *ameriKKKa
01:07:04 <pikhq> I need to move to the fucking Moon.
01:08:20 <kmc> jesus h christ in a chicken basket, houston
01:08:24 <kmc> we're on the fucking moon, over
01:09:17 <elliott> pikhq: you can't escape on the moon!!! president george w "satan" bush will just declare it as ame"corporatism"riKKKan territory
01:09:28 <elliott> oh man, ame"corporatism"riKKKan is a really good name
01:09:30 <pikhq> Hey, if I move to the moon, I estimate it'd be at least 50 years before the US could enforce anything there.
01:09:34 <elliott> that was completely accidental, i've created a masterpiece
01:09:54 <pikhq> Given that the current US space program progress is *negative*, it could actually be forever.
01:10:07 -!- elliott has set topic: united irc of hexham & helsinki of the UNUNITED states of ame"corporatism"riKKKa | http://codu.org/logs/_esoteric/.
01:10:45 <elliott> pikhq: are you suggesting that we are somehow absorbing spaceflight endeavours from space
01:11:08 <pikhq> elliott: No. If we were we'd probably have fewer energy issues. :P
01:11:32 <pikhq> (I presume if you can absorb spaceflight endeavours, you can then extract electricity from it)
01:11:45 <pikhq> "I call it: the Science-Consuming Generator."
01:12:19 <pikhq> It sucks up future science and makes energy, thus killing two birds with one stone.
01:12:22 <pikhq> :P
01:13:32 <elliott> someone tell me to go to bed
01:13:46 <pikhq> elliott: Go to bed.
01:14:02 <pikhq> ベッドへ行け!
01:16:12 <elliott> oh well, g'night i guess
01:16:13 <zzo38> As far as I can tell, the moon never goes directly above the United States. Its maximum declination appears to be 22
01:17:39 <pikhq> zzo38: The US also has about as much of a valid claim to the moon as it does Alpha Centauri.
01:17:40 <primo> nor does the sun, for that matter
01:17:50 <pikhq> i.e. "Hahahaha you can't even get there!"
01:18:57 <zzo38> primo: True; the sun doesn't either. The limits of the sun declination are the tropics of Cancer and Capricorn
01:20:00 <zzo38> Alpha Centauri is much farther away, but I don't know its declination.
01:20:25 -!- elliott has quit (Ping timeout: 240 seconds).
01:20:39 <primo> itwouldn't take long to find out, if one were interested in knowing
01:21:53 <primo> and that it's something that baffles me as well
01:22:38 <primo> we should, by all logic, be the most intelligent humans to have ever lived. anything we want to know, we can know in a matter of seconds
01:22:59 <primo> yet, that doesn't seem to be the case at all
01:26:51 <zzo38> I have the declinations for 47 stars, but not Alpha Centauri
01:28:30 <zzo38> I have the right ascension as well. They are listed in the order according to their right ascension.
01:28:45 <zzo38> I can also calculate ecliptic coordinates if wanted.
01:29:28 <oerjan> Declination -60° 50′ 02.308″ says wikipedia
01:29:35 <zzo38> OK
01:29:40 <oerjan> well, that's for A
01:30:10 <oerjan> -60° 50′ 13.761″ for Alpha Centauri B
01:30:49 <zzo38> OK. I didn't know there are two
01:31:17 <oerjan> −62° 40′ 46.141″ for Proxima Centauri
01:36:32 <zzo38> The list I have is not completely by order of right ascension; it is approximate. Andromeda is past zero now; in 1202 it was before zero. And sometimes they move past each other. In 1202 some were in a different order than listed, but now they are in the exact order of right ascension, even though Andromeda is past zero.
01:43:27 <shachaf> kmc: The official XChat for Windows is indeed not free after 30 days.
01:43:39 <kmc> that's fucked
01:44:06 <kmc> Windows more like WinKKKbl0$E
01:45:48 <zzo38> Are constellations supposed to be numbered according to alphabetical order of their Latin names?
01:52:01 <oerjan> zzo38: http://www.iau.org/public/constellations/ has no numbers that i can see
01:52:47 * oerjan notes Aquarius (Aqr) is before Aquila (Aql), so it's not sorted by abbreviation
01:53:53 <zzo38> Astrolog includes a list of constellations (Alt+5) in alphabetical order by Latin name (including Aquarius before Aquila); but they are also numbered 1 to 88.
01:55:29 <oerjan> well i imagine you cannot get more authoritative than the IAU on this
01:55:42 <zzo38> Yes, the IAU is authoritative for such things
01:55:56 <Sgeo> kallisti, there was an update earlier
01:55:57 <zzo38> But this list is same as the IAU, except that it is numbered
01:58:24 <zzo38> O, the IAU even has constellation boundary files, so I suppose it can be used to make up a computer program that displays them.
01:58:45 -!- roper has joined.
01:59:57 <roper> they say one got online every day to remedy affairs caused other hours from her nick
02:01:21 <zzo38> roper: I do not understand without a context?
02:01:40 <roper> account hijacking
02:02:13 <roper> bot harassment
02:03:02 <roper> they are quite talkative
02:03:43 <roper> i think they use your history from other conversations
02:03:47 <kallisti> oh wow mozilla doesn't support mp3 in audio elements.
02:03:54 <kallisti> pretty ballsy.
02:04:05 <zzo38> kallisti: Use Vorbis or FLAC. MP3 is no good anyways
02:04:09 <kallisti> zzo38: yes I am
02:04:12 <roper> mp3 is not free
02:04:22 <kallisti> yes that's why Mozilla doesn't support its use in audio elements.
02:04:23 <zzo38> roper: Yes, that is one reason it is no good
02:04:25 <roper> patented
02:05:34 <zzo38> For videos, use Theora.
02:05:38 <roper> worse than secret
02:07:20 <primo> question for anyone
02:07:49 <primo> if an iterpretter for a given esolang doesn't work at all, can i just overwrite it with one that does?
02:08:17 <roper> questionable
02:08:33 <primo> i'm looking at ferNANDo
02:08:43 <zzo38> primo: You could do so, yes; if they don't like then they can still view the history. But first ensure that you are correct about it not working at all, because maybe it does work on their computer.
02:08:50 <roper> orLANDO
02:08:50 <primo> the haskell implementation is correct. python not at all
02:10:02 <zzo38> Check what things were changed by the anonymous modificationsby 164.67.235.79 and 131.179.32.131
02:10:28 <zzo38> Also look at talk page
02:10:31 <primo> zzo38: can't possibly work on any machine. A = B nand C was originally implemented as A = A nand B
02:10:49 <primo> and the talk page implemenation, is even worse o.O
02:11:14 <zzo38> Well, then, please do fix it.
02:11:33 <zzo38> I did not look carefully at them or try to run them on my computer
02:11:49 <primo> output 2**(9-i) should be 2**(7-i) (or, <<7-i)
02:11:57 <oerjan> heh
02:12:16 <primo> and the 'fix' to find the last line number is entirely broken
02:12:20 <oerjan> primo: well if you think it's so bad it's not worth basing a corrected one on it
02:12:28 <primo> because list.reverse() is in-place, it returns None
02:13:03 * oerjan wrote the haskell one btw
02:13:43 <roper> may ever be a limit for the most inefficient formulation?
02:14:04 <roper> that does the calculation
02:15:10 <oerjan> roper: you can always put in extra nop's... this is a technical point used to show that O(f) is contained in O(g) if f <= g
02:15:26 <oerjan> hm wait
02:15:27 <roper> nop is nop
02:15:29 <oerjan> you don't need that
02:16:13 <oerjan> but you can pad in time and space for technical reasons
02:16:31 <zzo38> I would have written it entirely differently but your way is just as good. But I generally write Haskell programs seem to be differently than most, anyways. A literate Haskell program can be implemented in MediaWiki; just make the codes with > and with <pre> around it! And then, it does have the URL to download the raw copy, so you can use that to download .lhs file.
02:18:07 <olsner> "Boy without a cerebellum baffles doctors" - I wonder if this is a documentary about guido
02:18:18 <roper> how would you make worse a = sum (range(0,n)) ?
02:18:34 <roper> worst complexity class
02:18:42 <kallisti> it seems as though if I look away from skype for too long it will be frozen when I come back.
02:19:23 <kallisti> roper: sum(x) = sleep()
02:19:32 <roper> nope
02:19:44 <roper> not valid
02:19:47 <kallisti> roper: sum(x) = sum(x)
02:19:58 <roper> same complexity
02:20:09 <kallisti> I don't understand the question then
02:20:29 <zzo38> Instead of sum(range...) you could convert it to single algebra formula
02:20:32 <roper> well O(n)
02:20:37 <primo> ahh yes, it seems 164.67.235.79 broke it
02:21:07 <roper> zzo38 that would not change complexity
02:22:03 <zzo38> You could write n*(n+1)/2 instead
02:22:43 <roper> zzo38 wrong, that is O(1)
02:22:53 <zzo38> Yes, it is O(1)
02:23:12 <roper> i mean worst complexity
02:23:35 <zzo38> I don't know how to change it to worst complexity.
02:23:47 <roper> neither i
02:23:52 <roper> curious
02:24:11 <roper> you can optimize but not worsenize
02:24:32 <kallisti> what is the "worst complexity"?
02:24:42 <quintopia> roper: you can easily worsenize. see bogosort for an example in sorting
02:25:13 <kallisti> I would say there's no end to the amount of useless operations you can perform.
02:25:27 <roper> worst complexity is... at least O(n^2)
02:25:28 <kallisti> if you count it, O(infnity) is the "worst possible case"
02:25:39 <kallisti> though big O notation is usually defined over reals.
02:25:49 <zzo38> It is possible to write a program in the "most pessimum" if necessary, such as what someone did when writing a program with rotating memory, they moved the instructions around to slow it down, instead of using delay loops.
02:26:20 <roper> i mean complexity class, not number of operations
02:26:31 <quintopia> here's a worse way to do that sum: replace the "a=" with "point a to a location in memory that already has the right value. if it does not exist, write random bits memory and repeat"
02:26:43 <oerjan> zzo38: hm was that the Mel story?
02:26:54 <quintopia> <3 mel
02:27:15 <roper> quintopia wrong
02:27:33 <kallisti> roper is never satisfied.
02:27:45 <quintopia> roper: you are wrong
02:27:52 <roper> i am over satisfied
02:28:01 <oerjan> roper: the problem here is that it takes a sentient being to determine whether the worsening is allowed or not.
02:28:08 <roper> no it is still o n
02:28:19 <kallisti> uh, no?
02:28:54 <roper> worse than x*N OPERATIONS?
02:29:01 <kallisti> worst case of quintopia's algorithm is O(infinity) aka it continues to the end of time.
02:29:19 <quintopia> roper: it is not O(n). it is expected to take O(n*x*1/p)
02:29:27 <roper> that is not an alforithm, kallinsti
02:29:43 <quintopia> where x is the size of memory and p is the probability of the right number occurring in it
02:29:57 <roper> mmm
02:29:58 <kallisti> roper: http://en.wikipedia.org/wiki/Las_Vegas_algorithm
02:31:02 <kallisti> http://en.wikipedia.org/wiki/Probabilistic_complexity#Computational_complexity
02:31:06 <roper> and deterministic?
02:31:20 <roper> instead?
02:31:34 <roper> impossible?
02:31:44 <quintopia> nope
02:31:56 <kallisti> okay it resizes the range by repeating each element of the range N times where N is the length of the list
02:31:59 <kallisti> then it calculates the sum of that
02:32:05 <kallisti> and then divides that by N
02:32:05 <kallisti> :P
02:32:08 <kallisti> WORSER
02:32:30 -!- augur_ has joined.
02:32:37 <roper> mmm
02:33:00 <quintopia> for instance "count to A(n) every time you increment the counter that will eventually contain your answer"
02:33:16 <quintopia> much worse complexity :D
02:33:58 <roper> 2^n
02:34:03 <oerjan> it is easy to make it _technically_ at least O(enormous(n)). Just do enormous(i) useless operations between normal step i and i+1.
02:34:17 <quintopia> ^
02:34:51 <roper> 2^n is the worst i think... count until the correct result
02:35:05 -!- augur has quit (Ping timeout: 240 seconds).
02:35:10 <kallisti> O.O
02:35:21 <roper> :)
02:35:24 <oerjan> roper: i have for a while now thought that you're probably trolling.
02:35:44 <roper> not entirely
02:35:51 <kallisti> he could just be really dumb.
02:35:53 <kallisti> >_>
02:36:24 <roper> just a though experiment
02:36:49 -!- augur has joined.
02:37:23 -!- augur_ has quit (Read error: Connection reset by peer).
02:38:00 <kallisti> bah paypals fees suck.
02:38:20 * kallisti should try bitcoin.
02:51:21 -!- roper has quit (Quit: Yaaic - Yet another Android IRC client - http://www.yaaic.org).
03:07:20 <kmc> what about cosbycoin
03:08:51 <oerjan> well if you insist on using bills...
03:10:17 -!- TeruFSX has joined.
03:10:55 <kallisti> oerjan: ..........................
03:11:05 <kallisti> astounding
03:11:21 <oerjan> yw
03:11:31 <zzo38> I have a different idea the kind of payment system to use; you buy the card with the account number and SSH key, split the account if necessary, and then give them the code. So it would be decentralized system. And not necessarily require the use of a computer.
03:14:05 <kallisti> has anyone heard about the Jan. 18 "blackout"?
03:14:22 <zzo38> kallisti: What does that mean?
03:15:00 <kmc> reddit is going to go offline on Jan 18 to protest SOPA
03:15:06 <kallisti> also Mozilla
03:15:09 <kallisti> and possibly others.
03:15:11 <kmc> en.wikipedia might too, or at least display a banner: http://en.wikipedia.org/wiki/Wikipedia:SOPA_initiative/Action
03:15:34 <kmc> if facebook and google do it, that might be something
03:16:03 <kallisti> oh god I would have to use bing.
03:16:07 <kallisti> or duckduckgo
03:16:08 <kallisti> or yahoo
03:16:11 <kallisti> AAAAAAAAAAAAAAAAAAAAAH
03:16:37 <zzo38> Will Freenode go offline too?
03:16:50 <kallisti> not that I'm aware of.
03:17:32 <zzo38> You could probably still use gopher if Google go ofline
03:19:06 <zzo38> Or some Wikipedia mirror
03:23:20 <kmc> zzo38, you're aware that Google does not actually control the HTTP protocol, yes?
03:23:39 <zzo38> kmc: Yes, I am aware.
03:26:26 -!- pir^2 has joined.
03:36:53 -!- pir^2 has quit (Quit: Read error: Connection reset by peer).
03:45:31 <zzo38> I am writing a program called Internet Quiz Engine. It is written in CWEB, and will be available to put your own quiz file too, after I have tested it. It is a program to run on gopher services; similar to CGI but much simpler. There is only one environment variable called SELECTOR and no headers.
03:46:07 <zzo38> (I have already written other programs to use this convention, you can use PHP or Perl or whatever you want, as long as you can access environment variables)
04:03:30 -!- pikhq has quit (Ping timeout: 245 seconds).
04:03:38 -!- pikhq has joined.
04:10:22 <zzo38> Even though it is C, there is no buffer overflow because there is no buffer!
04:19:45 <zzo38> How often would you use >>= or join with Parsec? Probably only very rarely; it isn't useful in most cases. Actually, return probably isn't very useful with Parsec either; if I need a constant value I can use <$ to result in that value when certain things are parsed.
04:21:27 -!- _Slereah has quit (Ping timeout: 255 seconds).
04:22:08 -!- _Slereah has joined.
04:25:55 <oerjan> zzo38: you'd want >>= if you want to branch on the first parser in a way too complicated to be efficiently split into <|> cases?
04:26:37 <oerjan> *parser result
04:27:01 -!- TeruFSX has quit (Read error: Connection reset by peer).
04:27:32 <zzo38> oerjan: Well, yes; a dependent parser (I don't know if that is a proper term used anywhere), in case you want to do something such as a number written in decimal form which tells how many bytes to read for the data, and stuff like that. But it is not required for most things you are going to parse.
04:28:37 <oerjan> "non-context-free" would be an approximation.
04:29:04 <zzo38> oerjan: O, is that what it is called? Or, only approximately?
04:30:01 <oerjan> well in principle you always _can_ split into <|> 's; i saw a blog post showing how. but it requires using haskell's laziness to make the grammar essentially infinite.
04:30:53 <oerjan> and i think if you use only applicative methods and a finite grammar, you can do only context-free things.
04:33:09 <zzo38> Yes I think so.
04:33:39 <zzo38> But you would rarely ever need it differently.
04:34:30 <oerjan> you might also want >>= i think if you want to check for things like variables being in scope. but of course you can do that post-parsing as well.
04:35:12 <oerjan> oh and you'll need that anyhow if you have arbitrary order of declarations like in haskell.
04:35:22 <oerjan> (that = post-parsing)
04:36:03 <zzo38> oerjan: Yes, you would probably do that post-parsing. Although if it needs to be done during parsing for some reason then yes you would want >>= for that purpose, but I suppose that is also a "dependent parser" or "non-context-free" or whatever? Is it?
04:36:14 <oerjan> yeah
04:40:38 <zzo38> So I suppose context-free with an infinite grammar is like non-context-free?
04:42:02 <oerjan> yes, you can turn an arbitrary String -> Bool function into such a grammar
04:43:01 <oerjan> oh hm
04:43:08 <oerjan> finite strings.
04:46:38 <oerjan> here is the blog article; note that he uses "context-sensitive" but that's too restrictive: http://byorgey.wordpress.com/2012/01/05/parsing-context-sensitive-languages-with-applicative/
04:52:53 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com).
04:53:27 <zzo38> OK
04:54:01 -!- augur has quit (Ping timeout: 240 seconds).
04:57:48 -!- augur has joined.
05:01:18 <zzo38> Nginx does not properly support headerless HTTP. I suggest that they fix that.
05:02:02 -!- pir^2 has joined.
05:02:07 <kmc> "headerless HTTP" sounds like "not HTTP"
05:02:40 <kmc> do you mean HTTP 0.9?
05:03:13 <zzo38> kmc: No, I mean headerless HTTP. True it is not complete HTTP. But Apache supports headerless HTTP.
05:03:44 <kmc> i don't think nginx is obliged to support everything apache does
05:03:45 -!- Nisstyre has quit (Ping timeout: 240 seconds).
05:03:52 <kmc> do you have some documentation of Apache's support
05:03:59 <kmc> all i found googling for "headerless HTTP" was HTTP 0.9
05:04:40 <zzo38> With Apache, omitting the HTTP/1.1 or whatever after the URL omits both the request header and the response header. Nginx will omit the request header if you do that, but it will not omit the response header.
05:05:16 <kmc> is this a documented feature
05:05:22 <kmc> or just something that happens to work
05:05:28 <zzo38> I don't know, but I know how it works because I tried it.
05:05:52 <zzo38> And Apache's headerless HTTP seems more reasonable to me than Nginx's headerless HTTP.
05:05:52 <kmc> so now you want nginx to be bug-compatible with apache
05:05:57 -!- Nisstyre has joined.
05:06:31 <zzo38> As far as I know it isn't a bug, it is supposed to be like that.
05:06:57 <shachaf> kmc: According to http://www.apacheweek.com/features/http11 this is standard HTTP 0.9 behaviour.
05:07:58 <kmc> hm it does seem nginx claims to support HTTP/0.9
05:08:02 <kmc> i'm surprised
05:08:36 -!- Nisstyre has quit (Max SendQ exceeded).
05:08:41 <shachaf> When I $ nc localhost 80\nGET /\n, it gives me an nginx response page with no headers.
05:08:59 <shachaf> Maybe the headers are coming from a CGI-style executable or something along those lines?
05:09:35 <zzo38> shachaf: OK. Yes maybe that is the case, or maybe they changed it from the version I have tried connecting to (including Google and FreeGeek), or whatever else.
05:10:08 <shachaf> I don't think Google runs nginx.
05:10:29 <zzo38> O, it is gws
05:10:30 -!- Nisstyre has joined.
05:10:44 <zzo38> Then they should fix gws
05:11:07 <zzo38> But I know FreeGeek is nginx and at least the version I have tried had that problem; maybe not all versions do
05:11:26 <zzo38> (I use Apache on my own computer, however.)
05:11:36 <kmc> zzo38, you seem to have an odd idea of what the word "fix" means
05:16:07 -!- TeruFSX has joined.
06:31:17 -!- Mathnerd314 has joined.
06:31:50 <kmc> http://stackoverflow.com/questions/4382223/pure-functional-language-haskell oh man, Haskell question answered by Joel Spolsky
06:32:29 -!- Mathnerd314 has set topic: United ITV of hex-him & hill-sinking of the UNITED states of ame"corporatism"riva | http://codu.org/logs/_esoteric/.
06:34:49 <monqy> hi
06:35:03 <pir^2> hiiiii
06:36:48 <Sgeo> Is it correct to say that the big idea is to have the impurity _just outside_ the language level?
06:36:53 -!- Mathnerd314 has changed nick to notaprogram.
06:37:05 <Sgeo> I mean, of how IO gets done in Haskell
06:37:12 * oerjan hides an impurity monster under Sgeo's bed
06:37:54 * oerjan turing tests notaprogram
06:38:21 <notaprogram> move pawn to b1
06:38:52 <zzo38> notaprogram: Do you mean a black pawn?
06:39:05 <oerjan> ok you're human, no computer could play chess that badly
06:39:18 <notaprogram> zzo38: no, I insist on moving first
06:39:55 <zzo38> notaprogram: Then is it a variant or is it standard FIDE chess? In standard FIDE chess, you cannot move a white pawn to b1
06:40:24 <notaprogram> oops, I meant b3
06:40:36 <notaprogram> it's friday the 13, I mix up the digits
06:40:41 -!- Nisstyre has quit (Ping timeout: 240 seconds).
06:41:03 <zzo38> O, OK.
06:41:21 <kmc> Sgeo, no
06:41:31 -!- pir^2 has quit (Quit: ChatZilla 0.9.88 [Firefox 10.0/20111221135037]).
06:43:48 -!- notaprogram has changed nick to quantumprogram.
06:46:01 -!- quantumprogram has changed nick to Mathnerd314.
06:48:16 <Mathnerd314> the universe is a functional programming language
06:48:33 <monqy> ok
06:48:39 <Mathnerd314> but it is so esoteric that only I know how to program it
06:48:43 <monqy> ok
06:49:19 <oerjan> O KAY
06:49:38 <oerjan> (i think even elliott would consider that an appropriate case)
06:49:58 <Mathnerd314> so... can I get added as an op here?
06:50:04 <monqy> yes
06:50:11 <Jafet> Can you?
06:50:16 <oerjan> it's quite physically possible.
06:50:55 <Mathnerd314> but is it probable?
06:51:05 <oerjan> not in the near future, no.
06:51:22 <Jafet> You need a heart of gold.
06:51:35 <Mathnerd314> gold is expensive...
06:56:00 <monqy> a heart of pyrite will do
06:56:12 <kmc> Sgeo, to me the essential idea is that descriptions of IO are first-class values
06:56:47 <Sgeo> kmc, right, and right outside the language, the description of main is executed?
06:56:55 <kmc> i wouldn't say that's "outside the language"
06:57:04 <kmc> the Haskell Report specifies the meaning of each IO action
06:57:13 <Jafet> Outside the miranda of the language
06:57:21 <kmc> you have one semantics for function application and evaluation, and another semantics for execution of IO actions
06:57:24 <kmc> they're both part of the language
06:57:40 <kmc> in fact the rules for execution invoke the rules for evaluation
06:58:12 <Mathnerd314> monqy: http://www.youtube.com/watch?v=Eh44QPT1mPE
06:58:15 <kmc> before you can execute an IO action, you have to compute what it is
06:58:36 -!- oerjan has quit (Quit: Good night).
06:58:41 <kmc> not just at the "outer level" of main, but at each occurrence of (>>=)
06:59:17 <kmc> if you have unsafe{Perform,Interleave}IO then the rules are mutually recursive: the result of evaluating some value can depend on the result of executing some IO action
06:59:56 <kmc> it would be interesting to program in a strict-evaluation language which still has the evaluation/execution distinction, but where unsafePerformIO is not as stigmatized
07:00:23 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
07:06:36 <Mathnerd314> kmc: it would be even more interesting to program in http://requestforlogic.blogspot.com/2011/08/embracing-and-extending-levy-language.html
07:13:15 <kmc> Mathnerd314, cool
07:13:48 <Mathnerd314> but unfortunately there's no Haskell implementation
07:17:14 <zzo38> How long is Jyte closed for upgrades/bad gateway?
07:19:32 -!- jpulgarin has joined.
07:19:38 -!- jpulgarin has left ("Leaving").
07:24:12 -!- Mathnerd314 has quit (Read error: Connection reset by peer).
07:45:58 -!- sebbu3 has joined.
07:45:58 -!- sebbu3 has quit (Changing host).
07:45:58 -!- sebbu3 has joined.
07:49:18 -!- Mathnerd314 has joined.
07:49:36 -!- sebbu2 has quit (Ping timeout: 252 seconds).
08:05:24 -!- primo_ has joined.
08:07:51 -!- primo has quit (Ping timeout: 248 seconds).
08:27:22 <zzo38> Internet Quiz Engine: gopher://zzo38computer.cjb.net:70/1quiz.menu*a
08:28:11 <Sgeo> Chrome doesn't seem to support gopher
08:28:36 <Mathnerd314> firefox removed support... but there's an extension
08:28:46 <zzo38> http://zzo38computer.cjb.net/prog/bashgopher/bashgopher
08:29:32 <zzo38> You might need to modify it to work with your system. h = go back, j k = down/up, u i = page down/page up, l = follow, q = quit. When reading text file, space next page, b previous page, q go back.
08:29:59 <zzo38> Such as, adding "-q -1" to nc if necessary, changing "clsb" to "clear", and changing CRLF to LF only.
08:32:47 <zzo38> Does this work for you?
08:38:13 <zzo38> In today's economy, which would be worth more, five golden tumors or five golden mice?
08:40:40 -!- Mathnerd314 has changed nick to [Mathnerd314].
08:43:02 -!- [Mathnerd314] has changed nick to Mathnerd314_.
08:48:04 -!- Mathnerd314_ has changed nick to Mathnerd314.
08:54:40 -!- zzo38 has quit (Remote host closed the connection).
08:54:57 -!- Phantom_Hoover has joined.
09:03:01 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
09:09:03 -!- monqy has quit (Quit: hello).
09:16:18 -!- Phantom_Hoover has joined.
09:20:20 <augur> fizzie: ping
09:21:47 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
09:22:09 -!- Phantom_Hoover has joined.
09:29:17 <Mathnerd314> me: pong
09:41:26 -!- primo_ has changed nick to primo.
09:44:26 <Mathnerd314> `quote 74
09:44:36 <HackEgo> 74) <Warrigal> Invalid! Kill! Kill! <Aftran> I get that feeling too.
09:44:53 <Mathnerd314> `quote 69
09:44:57 <HackEgo> 69) <oklopol> Warrigal: what do you mean by 21?
09:45:02 <Mathnerd314> `quote 21
09:45:06 <HackEgo> 21) IN AN ALTERNATE UNIVERSE: <bsmntbombdood> there is plenty of room to get head twice at once
09:46:27 <Mathnerd314> `quote 314
09:46:31 <HackEgo> 314) <elliott> ais523: quick, say something funny <oklopol> something funny hagrea:D <oklopol> can'tä sopt laughitn
09:48:41 <Mathnerd314> `quote 313
09:48:43 <Mathnerd314> `quote 315
09:48:44 <HackEgo> 313) <olsner> it is from 2002 though, I was younger then
09:48:47 <HackEgo> 315) <ais523> elliott: hey, thinking's easier than using the Internet
09:49:14 <Mathnerd314> hmm.
09:49:23 -!- Nisstyre has joined.
09:49:28 <Mathnerd314> `quote 333
09:49:30 <HackEgo> 333) <oklopol> haha, god made one helluva blunder there :DS <oklopol> "WHOOPS HE AIN'T DEAD YET!" <oklopol> "luckily no one will believe him because christians are such annoying retards"
09:49:51 <Mathnerd314> `quote 249
09:49:54 <HackEgo> 249) <nddrylliog> Sgeo: re "hm?": at the emerging languages conf., after the talks we went out for a drinks and all the Factor team was on heavy liquor
09:50:11 <Mathnerd314> `quote 250
09:50:15 <HackEgo> 250) <elliott> mtve, now he's an expert idler. <nddrylliog> mtve: kitty kitty kitty
09:52:11 <Mathnerd314> `quote 252
09:52:14 <HackEgo> 252) <j-invariant> I need a new desktop background <Gregor> j-invariant: Try http://codu.org/spinners.png (tiled) <j-invariant> uhrghoaudp
09:53:18 <Mathnerd314> `quote 253
09:53:21 <HackEgo> 253) * quintopia sits on gregor
09:53:41 -!- Nisstyre has quit (Ping timeout: 240 seconds).
09:53:45 <Mathnerd314> blargh, to sleep I go
09:54:49 <Mathnerd314> `quote 254
09:54:52 <HackEgo> 254) <Phantom_Hoover> [...] reyouthismootherate [...]
10:02:48 <Mathnerd314> `quote 302
10:02:51 <HackEgo> 302) <fungot> Phantom_Hoover: if the list is in random order, like poor ehird here
10:05:02 <Mathnerd314> `quote 304
10:05:06 <HackEgo> 304) * Received a CTCP VERSION from nyuszika7h * VERSION Microsoft IRC# 2011 64-bit (Windows 8 Beta, x64, 2GB RAM) <nyuszika7h> Gregor: Windows 8 Beta? o_O <Gregor> A small benefit of my brief time as an intern at MS.
10:05:35 <Mathnerd314> `quote 305
10:05:38 <HackEgo> 305) <cpressey> addquoting yourself? isn't that like commenting on your own facebook status? <Gregor> Yup, but I'm JUST THAT AWESOME.
10:07:12 -!- Mathnerd314 has changed nick to lament.
10:08:28 -!- lament has changed nick to mathnerd314.
10:11:19 -!- mathnerd314 has changed nick to Mathnerd314.
10:11:40 <Mathnerd314> `quote 311
10:11:43 <HackEgo> 311) <zzo38> I also do not like that it should be disallow just because of too weird. They haveto make up more name so that not everyone has the same name!!!
10:14:28 -!- Vorpal has joined.
10:20:20 <Mathnerd314> `quote 320
10:20:23 <HackEgo> 320) <cpressey> BYE dbc WE'LL BE SURE TO ACCIDENTALLY MENTION YOUR NICK OFTEN
10:20:43 <Mathnerd314> whoops... too far
10:20:53 <Phantom_Hoover> FFS.
10:20:54 <Mathnerd314> I'll try again tomorrow
10:20:57 <Phantom_Hoover> `pastequotes
10:21:01 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.1014
10:21:06 <Phantom_Hoover> Here, enjoy.
10:21:54 <Mathnerd314> see, they're all wrong
10:22:16 <Phantom_Hoover> Oh, jesus.
10:22:25 <Phantom_Hoover> I liked you more when you were just annoying, rather than insane.
10:22:58 <Mathnerd314> yes, I know. but insanity appears to be the only way out...
10:23:22 <augur> fizzie: ping me when you're available
10:23:41 <kmc> `quote 683
10:23:45 <HackEgo> 683) <kmc> COCKS [...] <kmc> truly cocks
10:24:34 <kmc> wouldn't it be cool if i joined with ms comic chat
10:26:23 -!- Mathnerd314 has quit (Quit: ChatZilla 0.9.88 [Firefox 12.0a1/20120113031050]).
10:31:25 <shachaf> `quote sleep
10:31:28 <HackEgo> 325) <oklopol> i'm really sleep \ 544) <elliott> IM FIST IN HEAD AND DONT KNOW TO SLEEP?????? \ 559) <fizzie> That's the stupidest thing I've heard all morning. (Though I did wake up five minutes ago, so I haven't had a chance to hear very much.) <fizzie> The "Why are you still asleep? I told the cat to wake you up." comment does come pretty close, though. \ 613) <monqy> in the past few minutes I tried remembering
10:31:44 <shachaf> `quote shachaf
10:31:48 <HackEgo> 617) <shachaf> elliott: GHC bug? Come on, it's the parentheses. <shachaf> The more parentheses you add, the closer it is to LISP, and therefore the more dynamically-typed. \ 663) <shachaf> Real Tar is GNU tar. <shachaf> You just ignore whichever features don't make you feel superior enough. \ 701) <shachaf> VMS Mosaic? <shachaf> I hope that's not Mosaic ported to VMS. <shachaf> Hmm. It's Mosaic ported to VMS.
10:32:03 <shachaf> Those quotes are terrible.
10:32:30 <shachaf> I'll take solace in the fact that `quote isn't so much "best of" as "random of".
10:38:13 <Vorpal>
10:38:17 <Vorpal> err, oops
10:38:41 <Vorpal> (why was there a single space in the input line?)
11:45:22 <cheater> clearly a ploy by the romulans to disrupt our communications
11:46:33 -!- elliott has joined.
11:46:37 <elliott> -NickServ- Last failed attempt from: elliott_!~elliott@c-69-181-214-206.hsd1.ca.comcast.net on Jan 13 15:34:34 2012.
11:46:40 <elliott> WHO THE FUCK ARE YOU
11:52:55 <elliott> "A purely functional user interface is not a user interface at all! It is a picture or maybe even an animation, but it is not something you can interact with."
11:52:56 * elliott cries.
11:54:34 <elliott> 01:58:45: -!- roper has joined #esoteric.
11:54:35 <elliott> 01:59:57: <roper> they say one got online every day to remedy affairs caused other hours from her nick
11:54:35 <elliott> 02:01:21: <zzo38> roper: I do not understand without a context?
11:54:35 <elliott> 02:01:40: <roper> account hijacking
11:54:35 <elliott> 02:02:13: <roper> bot harassment
11:54:35 <elliott> 02:03:02: <roper> they are quite talkative
11:54:37 <elliott> 02:03:43: <roper> i think they use your history from other conversations
11:54:39 <elliott> I...
11:54:48 <kmc> romulans
11:54:57 -!- Ngevd has joined.
11:55:31 <Ngevd> If there's ever an esoteric blend of Haskell, f should be equivalent to `(flip f)`
11:55:45 <kmc> haha
11:55:52 <kmc> what, haskell isn't esoteric enough for you?
11:55:53 <Ngevd> Also, Hello
11:55:57 <kmc> hi Ngevd
11:56:30 <Ngevd> Nah, I can generally figure out what a Haskell program is for by looking at it for a while
11:57:06 <cheater> Ngevd: i was thinking exactly that haskell is a right-to-left language
11:57:24 <cheater> and indeed i define flip ($) in all my programs to be <>
11:57:29 <cheater> it's very useful
11:58:24 <Ngevd> I would have called it
11:58:38 <kmc> yes
11:59:43 <kmc> £sd
12:04:42 <elliott> 00:24:32 <Fifo> dibblego: Why did you kick me?
12:04:42 <elliott> 00:25:04 <dibblego> Fifo: please do not spam the channel or its users in private
12:04:42 <elliott> 00:25:29 <Fifo> dibblego: Sorry!
12:04:42 <elliott> 00:25:49 <Fifo> dibblego: Please join ##iPhoneFifo!
12:05:43 -!- Nisstyre has joined.
12:05:45 <Ngevd> What?
12:06:27 <elliott> 02:35:24: <oerjan> roper: i have for a while now thought that you're probably trolling.
12:06:27 <elliott> 02:35:44: <roper> not entirely
12:06:27 <elliott> 02:35:51: <kallisti> he could just be really dumb.
12:06:27 <elliott> 02:35:53: <kallisti> >_>
12:06:36 <elliott> oerjan logreading: i'm definitely leaning on the side of just really dumb
12:08:22 <kmc> this is such a weird channel
12:08:37 <Ngevd> It's possitively esoteric
12:08:46 <kmc> womp womp
12:08:56 <elliott> 03:23:20: <kmc> zzo38, you're aware that Google does not actually control the HTTP protocol, yes?
12:08:57 <elliott> kmc: YET.
12:09:01 <kmc> yeah
12:09:11 <kmc> <zzo38> Internet Quiz Engine: gopher://zzo38computer.cjb.net:70/1quiz.menu*a
12:09:13 <kmc> SOUNDS LEGIT
12:09:17 <elliott> it is
12:10:11 <kmc> gopher://zzo38computer.foeug3g47fgeg34.ch3p-h4rbl-vjaagra.co.ng:22/../../warez2.php
12:10:50 <Ngevd> Gopher is a pun!
12:10:54 <Ngevd> Heheheh
12:11:44 -!- kmc has left ("Leaving").
12:11:46 -!- kmc has joined.
12:12:02 <elliott> 04:34:30: <oerjan> you might also want >>= i think if you want to check for things like variables being in scope. but of course you can do that post-parsing as well.
12:12:02 <elliott> 04:35:12: <oerjan> oh and you'll need that anyhow if you have arbitrary order of declarations like in haskell.
12:12:02 <elliott> 04:35:22: <oerjan> (that = post-parsing)
12:12:12 <elliott> hmm, what you need is a bitemporal state monad
12:12:18 <elliott> so that state flows both forwards and backwards
12:12:33 <Ngevd> "bitemporal"!? That two-timing...!
12:12:33 <elliott> i guess you need the state to be a Monoid to combine them
12:12:37 <kmc> one point twenty one jiggawatts
12:14:17 <elliott> 06:31:50: <kmc> http://stackoverflow.com/questions/4382223/pure-functional-language-haskell oh man, Haskell question answered by Joel Spolsky
12:14:17 <elliott> surprisingly it's even basically correct
12:15:08 <elliott> despite all the people going "getChar is, like, referentially transparent so you're wrong" :|
12:16:59 <elliott> 06:48:16: <Mathnerd314> the universe is a functional programming language
12:16:59 <elliott> 06:48:33: <monqy> ok
12:16:59 <elliott> 06:48:39: <Mathnerd314> but it is so esoteric that only I know how to program it
12:17:03 <elliott> oh, good, he's still crazy!
12:24:53 <kmc> it's kind of correct
12:25:13 <kmc> i mean it's just arguing about what words mean
12:25:29 <kmc> but if you accept joel's definition than Haskell isn't a pure functional language
12:26:33 <elliott> well it has a pure subset, but I've never heard a convincing argument that haskell with IO is pure; people say that since getChar is always "the same getChar" it's referentially transparent, but nobody has a definition of "same" for IO actions
12:26:41 <kmc> i have one
12:26:45 <kmc> extensional equivalence
12:26:57 <kmc> there's no experiment by which you can distinguish "one getChar from another"
12:27:14 <kmc> anyway i don't want to argue about what "pure" means
12:27:21 <kmc> but evaluating getChar (like with seq) doesn't perform any IO
12:27:24 <kmc> that's just a fact
12:27:26 <elliott> that's a little lax for my tastes :P and yeah, I'm not saying it does
12:27:39 <kmc> elliott, it's the same standard by which you decide whether two functions are "the same"
12:27:40 <elliott> well whatever
12:27:49 <kmc> and if we can't do that, we can't even say that "map" is referentially transparent
12:27:50 <elliott> kmc: sure, but there /are/ experiments you can perform on functions
12:27:59 <kmc> there are experiments you can perform on IO actions too
12:28:05 <kmc> you do one every time you run a haskell program
12:28:19 <elliott> i see you're arguing about what "pure" means :P
12:28:22 <kmc> nope
12:28:45 -!- MDude has joined.
12:30:07 <kmc> Haskell has evaluation semantics and execution semantics
12:30:37 <kmc> the former is a calculus of referentially-transparent functions without side effects
12:30:52 <kmc> the latter is like an imperative programming language with effects and results
12:31:16 * elliott isn't up for arguing himself, but I *do* understand how IO works in Haskell and I don't think that it's "not really a monad" or "just impurity that you can't see" or whatever newbies say because of a lack of understanding
12:31:20 <kmc> whether the combination of these forms a "pure functional programming language" is a stupid argument
12:31:27 <kmc> i know you know how it works
12:31:29 <elliott> and I agree that treating (IO a) as a model of an imperative program with result type a is just fine
12:31:46 <elliott> I just think that it lets you consider far too many things that are completely impure in practice as pure
12:31:49 <elliott> because you can model them that way
12:33:07 <kmc> i don't understand
12:33:31 <kmc> but that's ok
12:33:39 <elliott> :)
12:33:40 <Ngevd> Are there any pure imperative languages?
12:33:47 <Ngevd> Would such thing have any point at all?
12:34:11 <kmc> it sounds like a great excuse to argue about what "pure" and "imperative" mean
12:34:36 <kmc> if you pressed me for a yes/no answer on "pure" and "imperative" I would say that Haskell is both
12:34:43 <kmc> this may be an unpopular viewpoint
12:35:54 <kmc> i think it's the wrong focus if you want to understand haskell or why it's good
12:36:11 <elliott> I think it's much easier to agree on "Haskell code that does IO is too imperative and impure in style" than "Haskell is impure"
12:36:23 <kmc> "too imperative" by what standard
12:36:34 <elliott> bring your own standards
12:36:40 <elliott> compared to "the ideal"
12:36:54 <Ngevd> A little impurity is good for a language
12:36:56 <elliott> i.e. it would be nicer if we could write code that interacts with the outside world in a more functional style
12:37:18 <Ngevd> How would that work?
12:37:19 <kmc> i would say "declarative" rather than "functional"
12:37:32 <elliott> kmc: yes. others would say "denotational" :P
12:37:46 <kmc> Ngevd, well, a very simple example is interact :: (String -> String) -> IO ()
12:37:48 <elliott> but the basic sentiment is the same
12:37:59 <kmc> yeah
12:38:12 <kmc> i like declarative programming and it would be cool to use it in more areas
12:38:31 <kmc> at the same time, i find imperative programming in Haskell to be pleasant enough
12:38:56 <elliott> I mean, don't get me wrong -- Haskell's IO system is a good compromise and it's much more "crisply" defined than in most other languages
12:39:24 <elliott> but it definitely bugs me to see people say "haskell is like the purest language ever and if you think IO is in any way imperative or 'impure in style' or anything you're just an idiot"
12:39:27 <elliott> (ok, not in those words :P)
12:39:59 <Ngevd> Purest language ever... surely that would be a tie between a few esolangs?
12:40:11 <kmc> i think it's pretty much agreed that IO is an embedded imperative language
12:40:12 -!- Nisstyre has quit (Ping timeout: 276 seconds).
12:40:20 <kmc> whether this makes Haskell overall "impure" is a meaningless argument about definitions
12:40:30 <Ngevd> Also, how can we say that language a is more or less pure than language b?
12:40:46 <Ngevd> Which is more pure? Java or C++?
12:40:49 <elliott> kmc: I think it's agreed in #haskell, but I don't think that's the same thing as "agreed by people who call themselves haskell programmers on the wider internet" :p
12:40:57 <kmc> shrug
12:41:18 <kmc> to me Haskell is a pragmatic multiparadigm language with a good set of design tradeoffs
12:41:31 <kmc> so i don't focus on ideological purity
12:41:43 <elliott> I mean, I've seen at least one person in here and one person on SO yell loudly about how stupid the "action" terminology is because "you wouldn't call (Maybe a) an action and IO is, like, just as pure as the rest of the nomads"
12:41:52 <elliott> admittedly at least one of those people was dumb.
12:42:04 <kmc> that's stupid
12:42:12 <Ngevd> Nomads aren't pure.
12:42:14 <kmc> i wouldn't call (Maybe a) a list either, but [a] is
12:42:31 <elliott> kmc: well it was in reaction to saying "monadic actions" more generally
12:42:36 <elliott> and I think it's perfectly reasonable to call (Maybe a) an action
12:42:39 <kmc> shrug
12:42:43 <kmc> i don't think it matters
12:42:53 <kmc> i think #haskell should agree on common terminology and push it
12:42:58 <kmc> instead we just bicker about words
12:43:12 <elliott> haha, getting a few hundred people to agree on IRC
12:43:15 <elliott> ur funy
12:43:27 <kmc> anyway the *reason* i don't worry about whether Haskell is philosophically pure
12:43:29 <Ngevd> I avoid #haskell, mainly because I'm scared of big groups
12:43:34 <kmc> is that i wish *other people* would see it as a pragmatic multiparadigm language with a good set of design tradeoffs
12:44:06 <kmc> rather than a language for extremists who argue all day about philosophical purity
12:44:09 <Ngevd> I would say it is at least primarily functional, although has features from other paradigms
12:44:47 <elliott> kmc: as an extremist i'm offended
12:44:51 <kmc> haha
12:44:54 <kmc> very well sir
12:46:51 -!- Ngevd has quit (Read error: Connection reset by peer).
12:50:56 <kmc> in particular many of Haskell's strengths have nothing to do with "purity"
12:54:54 <kmc> in my "why learn Haskell" slides i talk only a little bit about "purity" and types
12:56:26 <kmc> i spend more time on stuff like EDSLs, lightweight concurrency, STM, semi-implicit parallelism, GHC
12:56:43 <elliott> Maybe purity is overrated but I don't think types are.
12:56:48 <kmc> QuickCheck, Criterion, Threadscope, other tools, etc.
12:57:04 * elliott doesn't think Haskell is very well-suited to EDSLs... it excels at some of them but falls down for others
12:57:47 <kmc> some of those features rely on purity, in the sense of "Haskell programmers tend to write lots of pure functions", not in the sense of "Haskell absolutely forbids you from writing an impure function"
12:57:55 <kmc> (which of course, common implementations don't)
12:58:58 <kmc> elliott, yeah, types are pretty important
12:59:05 <kmc> but it's hard to convince someone of that in a few slides
12:59:22 * elliott doesn't try to convince people of things in a few slides :)
12:59:28 <kmc> well ok
12:59:33 <elliott> But yeah, fair point.
12:59:38 <kmc> i do, and I was talking about one effort to do so
13:00:02 <elliott> I agree that things like you listed are better sells under such constraints.
13:00:02 <kmc> in the best case, you convince them that it's a useful feature for preventing mistakes
13:00:05 <kmc> which is... still not that sexy
13:00:21 <kmc> i mean, subconsciously I know that *I* don't make any mistakes
13:00:47 <elliott> Yeah, but think about all the other terrible programmers you have to deal with!
13:00:54 <elliott> See, we can sell Haskell on antagonism and ego.
13:00:54 <kmc> they probably aren't using haskell
13:00:58 <elliott> Like Ruby!
13:01:00 <kmc> haha
13:01:03 <kmc> touché
13:01:53 <kmc> anyway there was enough to fill an hour with "here's this amazing thing Haskell lets you do"
13:02:17 <kmc> that I didn't have to focus too much on the essentially negative "here's how Haskell protects you from the stupidity of yourself and others"
13:02:28 <kmc> i agree it's not a great EDSL host
13:02:42 <kmc> i think it's a pretty good EDSL host, and that this plays nicely with the other strengths of the language
13:02:54 <elliott> "The question is a simple one. Must all operations on a TVar happen
13:02:54 <elliott> within *the same* atomically block, or am I am I guaranteed thread
13:02:54 <elliott> safety if, say, I have a number of atomically blocks in an IO
13:02:54 <elliott> function."
13:03:01 <kmc> i wish Template Haskell weren't so fucking cumbersome; then we could have some better concrete syntax for EDSLs
13:03:18 <kmc> O_O
13:03:32 <kmc> tell them to read the last chapter of RWH
13:03:38 * elliott wants to live in a world where "atomically" means "atomicallyAndThenSome", and the layout of code into "IO functions" affects its semantics.
13:03:43 <elliott> kmc: I'd have to subscribe to haskell-cafe.
13:03:55 <kmc> instead you just lurk and snark
13:03:58 <elliott> Yes.
13:04:06 <kmc> that's cool
13:04:27 <elliott> kmc: I think the kind of EDSLs Haskell is good at are the ones that are richer than Haskell.
13:04:35 <elliott> Which is to say "first-class" EDSLs.
13:04:42 <elliott> e.g. Parsec and so on.
13:04:50 <elliott> The problems come when you can't embed Haskell in them, e.g. anything you're trying to compile
13:05:06 <kmc> right
13:05:32 <elliott> And then you just have to fall back on ugly typeclass hacks and in the end you get sick of Eq because it forces (==) to mean something rather than letting you use any "boolean" you want :P
13:05:52 <kmc> this would be solvable in principle
13:06:22 * elliott thinks there are a few promising ways to solve it, and I think solving it would be a great way to create a language better than Haskell.
13:06:52 <elliott> There's a *lot* of this kind of stuff being done -- anything that does observable sharing is essentially working around Haskell's DSL-related weaknesses, for example.
13:06:58 <kmc> yes
13:07:10 <kmc> well first you want to unify something like Template Haskell with something like GHC API, only hopefully make both of them a lot less shitty
13:07:45 * elliott thinks that would be very (very) valuable, but isn't sure it's the best basis for most EDSLs
13:07:49 <kmc> that is, you can construct a Haskell AST, then compile it and use it as a function
13:07:52 <elliott> metaprogramming in haskell sucks right now
13:08:14 <kmc> and you can do this at "compile time" or at "run time", and hopefully the distinction between the two is not so pronounced
13:08:29 <elliott> kmc: Have you seen the http://www.cs.berkeley.edu/~megacz/garrows/ stuff?
13:08:40 <kmc> uh, started reading it a while ago
13:08:43 <kmc> didn't get very far
13:08:45 <elliott> heh
13:08:49 <elliott> I don't like arrows, but it's very interesting.
13:09:08 <elliott> And seems to be able to do an awful lot of DSL-y stuff that isn't really possible now.
13:09:17 <elliott> The syntax is ugly though.
13:09:58 <kmc> they get bonus style points for implementing part of GHC in Coq
13:10:27 <elliott> I'm always surprised that Coq extraction actually works in practice.
13:11:14 <kmc> elliott, so how would you solve the problem
13:11:27 <kmc> other than better macros and staged compilation
13:14:34 <elliott> kmc: Well, I think it involves restructuring the language at a bit of a deeper level to be truly natural. Things like using typeclasses for the kind of introspective overloading you see is basically just trying to selectively override the language's semantics, which is generally really awkward in Haskell. (The AwesomePrelude thing takes this to its logical conclusion, and it's not pretty.) I can imagine a language which essentially does the equiv
13:14:35 <elliott> alent of having a typeclass for each language feature -- conditionals, pattern-matching, self-reference, duplicating values, etc. -- and you can override that piecemeal so that all the same syntax and meaning is retained, but in possibly a more restricted setting; you'd have a bracket mechanism which would let you write code in a new semantics. That's basically what the generalised arrow stuff is doing, to my understanding; there's a typeclass fo
13:14:35 <elliott> r each additional language feature, and the code you write is just unrolled into a bunch of those.
13:14:58 <kmc> i see
13:15:06 <kmc> i should learn more about garrows then
13:15:17 <elliott> If you want to be *really* radical, you could eliminate the bracketing entirely, and direct the overriding of the semantics by the types -- i.e. if something is expecting an argument in a certain semantics, those semantics are used when you fill in that argument.
13:16:30 <elliott> kmc: That also ties in with more language-based support for effects; e.g. you could easily define a semantics that supports every such "language ability" but that does nondeterministic computation, and you'd get the equivalent of the list monad but with the same syntax as the outer language.
13:17:26 * elliott hasn't read all of the GArrows stuff, but intends to sometime. What I've read is basically similar to all this, except that it's very explicit about what's "metaprogramming" and what's not -- there's a leap from "normal Haskell" to "metaprogramming stuff".
13:18:24 <elliott> kmc: And, of course, opting out of implementing a certain capability lets you do things like the kind of optimisations you can do to applicative/arrow-based parsers.
13:18:41 <elliott> Except more aggressive, since you have full access to the *entire* structure of the EDSL program.
13:18:53 <elliott> (Nothing hiding behind an "arr", etc.)
13:20:34 <elliott> It wouldn't even be a large leap from that to make the language self-extending on an even deeper level -- if you can define your own language capabilities (and I don't see what would stop you, if everything was appropriately first-class -- indeed, I'd expect most extensions (like nondeterministic computation) would be implemented by defining a new capability for that, and giving a canonical implementation), then all you need to be able to do is d
13:20:34 <elliott> efine new syntax for those capabilities and it becomes as good as a native language feature.
13:20:40 <elliott> That might be going further down the Lisp path than most people would like, though.
13:21:09 <kmc> yeah
13:21:20 <kmc> there's already controversy over "how typed" template haskell should be
13:21:53 <elliott> yeah
13:22:18 <elliott> I think the proposal to give it a typed layer, but allow access to just AST-mangling, is probably the best thing for it as it stands
13:22:53 <elliott> but I think that in a more ideal language, TH would be basically completely untyped, because well-typed things would be expressible directly, without having to resort to a special "metaprogramming macro processing" facility
13:34:22 <kmc> yeah
13:34:24 <kmc> makes sense
13:34:25 -!- Patashu has quit (Read error: Connection reset by peer).
13:48:31 -!- pikhq_ has joined.
13:48:55 -!- pikhq has quit (Ping timeout: 255 seconds).
13:53:43 <elliott> Need help indexing XML files into Solr using DataImportHandler
13:53:44 <elliott> I don't know java, I don't know XML, and I don't know Lucene. Now that that's out of the way. I have been working to create a little project using apache solr/lucene. My problem is that I am unable to index the xml files.
13:53:55 <elliott> [...] I am not sure what information is required for you to help me so I will just post the code.
14:15:59 -!- primo has quit (Read error: Connection reset by peer).
14:17:54 -!- Nisstyre has joined.
14:25:23 -!- Nisstyre has quit (Ping timeout: 240 seconds).
14:31:03 -!- Nisstyre has joined.
14:58:51 -!- primo has joined.
14:59:11 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
14:59:31 <elliott> RIP Phantom_Hoover
15:02:48 -!- Phantom_Hoover has joined.
15:03:58 <kmc> eek a zombie
15:05:36 <elliott> RIP us all
15:05:56 <kmc> %rip
15:06:24 <elliott> mv %rip, usall
15:06:27 -!- primo has quit (Read error: Connection reset by peer).
15:06:38 -!- Ngevd has joined.
15:07:39 <Ngevd> Hello!
15:07:50 <elliott> hi
15:08:09 <kmc> hi Ngevd
15:08:53 <Ngevd> How did your Haskell thing-that's-a-bit-like-an-argument-but-you-both-agree go?
15:09:18 <kmc> i think that's called a "discussion"
15:09:39 <kmc> anyway the logs are public
15:09:48 <Ngevd> I know, I've read them.
15:09:56 <Ngevd> I just want to make conversation
15:10:14 <elliott> not allowed
15:10:17 <elliott> only arguments
15:12:47 <Ngevd> > ap (.) (join (.) (ap (.) (join (.)))) (*2) 1
15:12:48 <lambdabot> 1024
15:13:01 <kmc> lols
15:13:23 <Ngevd> > ap (.) (join (.) (ap (.) (join (.)))) (join (+)) 1
15:13:24 <lambdabot> 1024
15:14:06 <elliott> this is probably what Ngevd's new haskell program actually looks like
15:14:28 <Ngevd> Nah, I'm just playing with MIBBLLII
15:14:55 <Ngevd> Lambdabot can be used as a non-compliant interpreter for a similar language to MIBBLLII
15:18:00 <Ngevd> :t ap id id
15:18:01 <lambdabot> Occurs check: cannot construct the infinite type: a = a -> b
15:18:01 <lambdabot> Probable cause: `id' is applied to too few arguments
15:18:01 <lambdabot> In the second argument of `ap', namely `id'
15:18:04 <kmc> cool
15:18:11 <kmc> an esolang that looks like brainfuck but isn't
15:18:27 <kmc> compared to the usual esolangs that don't look like brainfuck but are
15:18:47 <Ngevd> The functions ap, join, const, id, flip, and (.) match up 1 to 1 with MIBBLLII combinators
15:19:07 <Ngevd> As long as you work in the ... (->) r monad ???
15:19:07 <elliott> kmc: Or the ones that look like, and are brainfuck.
15:19:36 <Ngevd> Or something?
15:19:47 <Ngevd> As long as you have Control.Monad and Control.Monad.Instances
15:19:51 <elliott> http://esolangs.org/wiki/Zoo_Tycoon_2_Cheats_Money
15:20:13 <Ngevd> Have spambots been attacking spam articles?
15:20:56 <kmc> i would totally use a language named Zoo Tycoon 2 Cheats Money
15:21:41 <Ngevd> Shall we create a language by that name?
15:22:22 <kmc> yes
15:22:31 <Ngevd> Zoo == objects, tycoon == control structures, 2 == ...arithmetic?, cheats == functions./subroutines
15:22:40 <Ngevd> money == finance library?
15:23:09 <kmc> it will be brainfuck except the instructions are encoded as the phrases "Wikipedia", "game money prize tree", "free money woman", "money and mbti", "trace a money order", "europes history on money", "find instantly low money price search", and "how much money to bring to europe"
15:23:28 <Ngevd> No.
15:26:03 <elliott> yes
15:26:55 <kmc> actually you should invent a language such that we can execute these spam pages
15:27:17 <kmc> has there been any work towards designing programming languages specifically for stoned people
15:27:28 <kmc> i guess there are PLs for children, and that's kind of similar
15:35:02 -!- Nisstyre has quit (Ping timeout: 240 seconds).
15:38:29 -!- Nisstyre has joined.
15:43:46 -!- azaq23 has joined.
15:52:38 -!- cheater has quit (Ping timeout: 240 seconds).
15:54:01 -!- primo has joined.
16:01:13 <oklopol> asldkfjaksdlfldskjakdlfldskjaksldfldksjaksdlf
16:03:05 <elliott> hi
16:11:04 <Ngevd> Hehehe
16:33:32 -!- pikhq has joined.
16:34:16 -!- pikhq_ has quit (Ping timeout: 268 seconds).
16:43:25 -!- Madoka-Kaname has quit (Ping timeout: 240 seconds).
16:44:47 -!- Madoka-Kaname has joined.
16:58:15 -!- pikhq_ has joined.
16:58:46 -!- pikhq has quit (Ping timeout: 260 seconds).
17:01:27 -!- Sgeo has quit (Remote host closed the connection).
17:02:09 -!- Sgeo has joined.
17:02:51 -!- Deewiant has quit (Quit: Server going down for maintenance.).
17:18:02 -!- Madoka-Kaname has quit (Ping timeout: 240 seconds).
17:20:09 <itidus21> the way i see it the main role of mathematics in esolang design is to provide the language designer with a look at the primitive elements of programming languages instead of making a hopped up basic clone
17:25:59 <itidus21> more accurately, thats what it means to me
17:27:57 -!- Phantom_Vax has joined.
17:28:15 <Phantom_Vax> Hello everybody.
17:29:01 <elliott> Phantom_Vax: Please tell me you're using an OpenVMS emulator.
17:29:04 -!- Ngevd has quit (Quit: Poor timing, Phantom_Vax).
17:29:07 <Phantom_Vax> Yes.
17:36:07 <itidus21> elliott: i'm concocting a diabolical language possibly using some kind of message passing, but since i don't know in detail what message passing is i'm not entirely sure
17:36:19 <elliott> ah.
17:37:20 <itidus21> the idea is really terrible, and "concocting a language" said in this room can mean something other than what i am doing since people here tend to actually create and finish languages and i don't
17:38:40 <itidus21> actually its such a terrible idea that it just might work, but i have left little to go on in my posts
17:39:08 -!- sebbu3 has changed nick to sebbu.
17:41:02 -!- Klisz has joined.
17:43:29 -!- Phantom_Vax has quit (Remote host closed the connection).
17:44:08 <itidus21> ok the fundamental idea is an operator which can tell you if an object has a member of a specific type, and if it does you can access it directly through a local name
17:45:00 -!- Phantom_Vax has joined.
17:45:05 <itidus21> sort of like saying, does this object contain a string member? if it does then call that string s and do toupper(s)
17:46:06 <itidus21> this could run into some kind of trouble when an object has multiple members of the same type but thats another story
17:48:37 -!- Madoka-Kaname has joined.
17:48:51 <itidus21> if that sounds weird, the idea gets even weirder the more i explore it
17:59:15 -!- Madoka-Kaname has quit (Read error: Operation timed out).
18:11:08 -!- ais523 has joined.
18:23:27 -!- zzo38 has joined.
18:29:26 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
18:30:17 <zzo38> I wrote some of my own Arrows stuff because I don't like the existing one much. The purpose of "arr" is moved into a different class called CatFunctor and you can have from any category, doesn't have to be (->) and in addition, the (,) does not have to be (,) you can have any type of kind (* -> * -> *) used for a specific CatArrow. Purpose of ArrowChoice is just done by a dual category, now.
18:31:06 <elliott> you've said
18:32:59 <Sgeo> Is there a way to abuse a monad of some sort to get nice syntax without -XArrows?
18:34:05 <Sgeo> There's a "bind-like operator"
18:34:07 * Sgeo blinsk
18:34:11 <Sgeo> blinsk
18:34:14 <Sgeo> nblinks
18:34:58 -!- Madoka-Kaname has joined.
18:34:58 -!- Madoka-Kaname has quit (Changing host).
18:34:58 -!- Madoka-Kaname has joined.
18:35:16 <Sgeo> I could have sworn I saw something though
18:36:43 <zzo38> Do you agree that "arr" in Control.Arrow is really a kind of functor (not an endofunctor)?
18:37:36 * Sgeo has no idea what the difference is
18:38:41 <zzo38> Difference of what?
18:38:58 <Sgeo> functors and endofunctors
18:39:23 <kallisti> endofunctor is a functor from a category to itself.
18:39:25 <zzo38> Endofunctor is a functor from a category to itself. The Functor class in Haskell make endofunctor from (->) category to itself
18:39:55 <kallisti> functors are comparable to morphisms over categories.
18:40:08 <Phantom_Vax> Functions /are/ morphisms, you dolt.
18:40:08 -!- toruk-mack has joined.
18:40:17 <kallisti> (in fact I believe many of them are morphisms in the category of small categories.)
18:40:39 <kallisti> (but not all?? not sure)
18:41:18 <zzo38> Is Internet Quiz Engine good to you?
18:41:26 <zzo38> Yes it is legitimate.
18:41:28 <kallisti> it is not relevant to me.
18:43:11 <zzo38> But gopher://zzo38computer.foeug3g47fgeg34.ch3p-h4rbl-vjaagra.co.ng:22/../../warez2.php not only looks wrong, and uses . as the type, but doesn't even resolve. I am unsure why kmc posted this wrong URL, possibly to confuse you???
18:45:07 <elliott> `welcome toruk-mack
18:45:12 <HackEgo> toruk-mack: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
18:45:36 <elliott> @tell kmc Explain yourself!!!1
18:45:36 <lambdabot> Consider it noted.
18:45:37 <zzo38> toruk-mack: Are you good at esolang?????
18:46:07 <kallisti> TG: (omg still lolig @ that word boner i made ooomg)
18:46:25 <toruk-mack> Sorry, wrong channel
18:46:30 -!- toruk-mack has left ("Leaving").
18:47:54 <kallisti> :(
18:48:14 <elliott> `@ past-toruk-mack ? esoteric
18:48:18 <HackEgo> past-toruk-mack: This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dal.net.
18:54:25 <Sgeo> They're still online
18:54:36 * Sgeo messages
18:55:03 <zzo38> Yes I checked that too
18:55:11 <zzo38> But I have no message to write to them.
18:55:27 * Sgeo just sent "for the other kind of esoterica, try #esoteric on irc.dal.net."
18:56:07 <zzo38> Sgeo: It work if it was what they were looking for, which is possible, however
18:59:41 <Sgeo> Is DALnet down?
19:00:36 <zzo38> Did you try connecting or ping or whatever?
19:01:05 <zzo38> Yes it seem down to me.
19:01:09 <zzo38> No ping
19:05:09 -!- Phantom_Vax has quit (Changing host).
19:05:09 -!- Phantom_Vax has joined.
19:05:20 -!- Phantom_Vax has changed nick to Phantom_Hoover.
19:06:43 -!- monqy has joined.
19:07:26 <kallisti> what would be annoying about only having gender neutral pronouns is that you could only refer to two things at the same time
19:07:44 <kallisti> in English you can refer to at least 4 things unambiguously via pronouns.
19:08:12 <kallisti> I suppose as a compromise would be to invent more than one gender-neutral pronoun
19:08:15 <kallisti> for different kinds of.. things.
19:08:31 <elliott> kallisti: That only works if the things you're referring to are of different genders.
19:08:46 <kallisti> elliott: ...yes, that's what I mean.
19:08:56 <elliott> Well, so it's not much of an advantage.
19:09:01 <elliott> Anyway, people don't seem to have any problem in languages which use "it" for everything.
19:09:11 <kallisti> the difference between it and he or she or they is pretty useful.
19:09:18 <elliott> Making pronouns gender-neutral only to immediately re-segregate them by some other means is ridiculous.
19:09:30 <elliott> kallisti: No?
19:09:39 <elliott> kallisti: I mean, I really doubt you ever talk about that many things at once without using names.
19:09:44 <kallisti> sure.
19:09:45 <elliott> Because that would be impossible to follow.
19:10:23 <kallisti> it happens frequently enough
19:10:39 <kallisti> and anyway there's no reason not to "resegregate" the pronouns by grammatical or conceptual distinctions
19:10:44 <kallisti> that have nothing to do with people.
19:11:05 <kallisti> well
19:11:10 <kallisti> it could involve people
19:11:29 <kallisti> for example you could have a pronoun for humans, and a pronoun for everything else
19:11:32 <kallisti> or
19:11:35 * elliott doesn't think it happens frequently enough.
19:11:36 <kallisti> a pronoun for livings things, and a pronoun for inanimate things.
19:11:42 <elliott> You mean they vs. it?
19:11:47 <kallisti> "he knew that it was a bad idea"
19:11:49 <monqy> but what if you want to refer generally to both humans and nonhumans
19:11:54 <elliott> Anyway, there's real data on this, i.e. every language without such a distinction, so unless you're a linguist...
19:12:03 <kallisti> "she took it from me" (thieving bitch)
19:12:13 <kallisti> :)
19:12:16 <zzo38> There can be one for living, one for inanimate, but then, is there going to be one for ideas?
19:12:30 <kallisti> elliott: note that I am not in any way saying that these languages are somehow crippled in their expressiveness
19:12:36 <kallisti> just that having multiple kinds of pronouns is a convenience.
19:12:52 <monqy> but also an inconvenience
19:13:10 <kallisti> zzo38: yes that would be good. :)
19:13:19 <monqy> shrugs violently
19:13:27 * kallisti sighs EXPLOSIVELY
19:13:45 <elliott> i sure do love wild conjecture
19:13:53 <kallisti> elliott: do tell. what is my conjecture.
19:14:09 <elliott> no
19:14:20 -!- Frooxius has joined.
19:15:41 <kallisti> anyway it happens all the time in storytelling. It's pretty frequent that you have a sentence involving a person and an inanimate that were both previously mentioned.
19:16:13 * kallisti conjectures wildly.
19:16:44 <elliott> And you think persons and inanimates are so easily-confusable that we cannot deduce that from context like the billion other things we do on a regular basis?
19:18:35 <kallisti> well, no.
19:19:10 <kallisti> I simply assumed it was bad style in those languages to use the same pronoun in the same sentence to mean different things.
19:19:17 <kallisti> but if that's common then... that works too.
19:22:28 <kallisti> the person/non-person distinction isn't unheard of in other languages. For example Finnish.
19:22:37 -!- zzo38 has left.
19:24:21 <elliott> kallisti: It doesn't appear in colloquial Finnish, from what I've heard in here.
19:24:29 <elliott> "it" is used for everything.
19:25:35 <kallisti> ah I see
19:29:01 <kallisti> The demonstratives are used of non-human animate entities and inanimate objects. However, se and ne are often used to refer to humans in colloquial Finnish. (This usage is quite correct in a demonstrative sense, i.e. when qualified by the relative pronoun joka, and in fact it is hypercorrect to replace a demonstrative se or ne with hän or he just because the antecedent is human.)
19:32:12 <kallisti> well, zzo38 and I are going to go invent a language with at least 20 pronouns
19:33:47 <kallisti> and maybe some distinctions between pro-adjectives and pro-verbs and pro-adverbs
19:33:50 <kallisti> also pro-sentences.
19:34:01 <kallisti> it's a language for pros.
19:36:05 <kallisti> to get the other words, we'll take a dataset of every word in every language and its meaning, and then reassign it a different meaning using `words
19:36:11 <kallisti> er
19:36:15 <kallisti> different name rather
19:36:49 <kallisti> the end result will be that there's probably like 50 ways to say "dog"
19:37:13 <kallisti> (assuming 50 languages were uses, and none of those languages have more than one way to say dog)
19:46:35 <kallisti> !perl $x = qr[(a)]g; print "a a a a" =~ $x;
19:46:39 <EgoBot> Bareword found where operator expected at /tmp/input.17425 line 1, near "qr[(a)]g" \ syntax error at /tmp/input.17425 line 1, near "qr[(a)]g" \ Execution of /tmp/input.17425 aborted due to compilation errors.
19:47:02 <kallisti> !perl $x = qr/(a)/g; print "a a a a" =~ $x;
19:47:02 <EgoBot> Bareword found where operator expected at /tmp/input.17496 line 1, near "qr/(a)/g" \ syntax error at /tmp/input.17496 line 1, near "qr/(a)/g" \ Execution of /tmp/input.17496 aborted due to compilation errors.
19:47:07 <kallisti> erm
19:47:12 <kallisti> !perl $x = qr/(a)/; print "a a a a" =~ $x;
19:47:13 <EgoBot> a
19:47:18 <kallisti> !perl $x = qr/(a)/; print "a a a a" =~ /$x/g;
19:47:19 <EgoBot> aaaa
19:47:48 <kallisti> ah
19:49:17 -!- zzo38 has joined.
19:54:22 -!- oerjan has joined.
19:55:35 -!- Deewiant has joined.
19:57:16 -!- _Slereah has quit (Ping timeout: 260 seconds).
19:58:56 -!- Phantom_Hoover has quit (Remote host closed the connection).
19:59:29 <elliott> hi oerjan
19:59:50 -!- Phantom_Hoover has joined.
20:06:39 -!- Phantom_Hoover has quit (Remote host closed the connection).
20:07:47 -!- Phantom_Hoover has joined.
20:08:00 <kallisti> wow so I got $25 for setting up a simple HTML5 audio player, and then got $10 to write the ugly terrible hack to load an embedded player in the event of IE.
20:08:04 <kallisti> what's wrong with this picture.
20:08:19 <elliott> "some one always irritate me an facebook massage, he use mobile for post massage. i want to know his mobile no, is there any way ?" what a good answer
20:08:34 <kallisti> ...answer?
20:08:37 <monqy> kallisti: web audio players
20:08:47 <kallisti> monqy: regardless of that.
20:09:49 <elliott> `quote fought for
20:09:53 <HackEgo> 459) <fizzie> elliott: You have become the very thing you fought for!
20:10:22 <kallisti> elliott: what is meaning of that massage.
20:12:01 <elliott> no
20:13:35 <Sgeo> IE doesn't support <audio>?
20:14:51 <kallisti> IE8 doesn't
20:14:52 <kallisti> IE9 does.
20:14:55 <Sgeo> :/
20:15:16 <kallisti> and a lot of people still use IE8
20:15:18 <kallisti> IE7 even
20:15:40 <kallisti> fortunately the entire internet will break for them soon and they'll realize they need a newer web browser.
20:15:43 <Sgeo> IE9 isn't even available for XP, right?
20:15:45 <kallisti> ...I hope.
20:15:50 <kallisti> Sgeo: no idea.
20:16:00 <elliott> <kallisti> fortunately the entire internet will break for them soon and they'll realize they need a newer web browser.
20:16:01 <Sgeo> kallisti, we're just now finally killing off IE6, I think
20:16:05 <elliott> --people, about IE6, for about a decade
20:16:28 <kallisti> well, IE6 is /still/ used I think.
20:17:06 -!- zzo38 has left.
20:17:22 <Sgeo> 7.7%
20:17:25 <Sgeo> http://www.ie6countdown.com/
20:18:08 <itidus21> so charting out some ideas on paper it suddenly becomes obvious why state is a pain in the ass... since 2 objects which contain instances of each other end up with an infinite state
20:18:21 <itidus21> ^infinitely large
20:18:35 <kallisti> itidus21 is not a fan of cyclic linked lists.
20:18:51 <kallisti> or trees or...
20:18:54 <monqy> itidus21: what
20:19:04 <Sgeo> kallisti, cyclic trees?
20:19:08 <Sgeo> I guess it's possible
20:19:11 <kallisti> sure.
20:19:17 <kallisti> dunno how useful they are.
20:20:04 <itidus21> kallisti: well yeah if you use pointers you can just set a pointer to null and call it the end of the state
20:20:37 <monqy> what
20:20:47 <Sgeo> itidus21, what language are you thinking in, exactly?
20:20:53 <elliott> none
20:20:58 <monqy> the magical itidus21 nonlanguage
20:20:59 <itidus21> im insane
20:21:02 <kallisti> itidus21: most cyclic structures are implemented with pointers. Otherwise you would have a massive memory leak.
20:21:13 <kallisti> trying to copy the structures infinitely
20:21:42 <kallisti> s/most/all/
20:21:49 <itidus21> the greater question is how would you initialize them
20:21:56 <kallisti> individually?
20:22:07 <monqy> itidus21: what
20:22:21 <kallisti> "initilization" is programmer-defined. they can choose to not have the inner-object as part of the initilization
20:22:24 <kallisti> so in that situation
20:22:27 <kallisti> you would initialize both objects
20:22:31 <kallisti> and link them together after the fact
20:22:33 <kallisti> does that make sense?
20:22:58 <fizzie> Cyclic tree is the stupidest, since the definition of tree is "no cycles".
20:22:59 <monqy> alternatively you could think at a higher level of abstraction
20:23:04 <itidus21> but when each piece of data is a function then it never needs initialization
20:23:07 <kallisti> fizzie: oh, yes...
20:23:24 <kallisti> itidus21: I. sure.
20:23:26 <kallisti> ?
20:23:39 <itidus21> it always ends badly with me
20:23:45 <monqy> and not need to worry about such awful details as initialization
20:23:54 <kallisti> monqy: I'm guessing itidus21 is somewhat familiar with C++
20:24:02 <kallisti> based on what he's saying.
20:24:11 <elliott> fizzie: it's magic paradox tree
20:24:15 <itidus21> somewhat but you i don't know it very well
20:24:17 <elliott> of love :')
20:24:25 <itidus21> ^but you couldn't give me a salary for it
20:24:30 <itidus21> or.. even trust me with it :-s
20:24:38 <itidus21> brb
20:26:06 <kallisti> itidus21: some clarifications: a) "stateless" languages can define cyclic data structures, so cyclicness has nothing to do with state b) cyclic structures are not inherently bad as you seemed to think.
20:26:33 <kallisti> inb4 hair splitting
20:26:57 <Sgeo> let ones = 1:ones in ones
20:28:22 <kallisti> lol "ultrabook"
20:28:39 <monqy> whats an ultra book
20:28:51 <monqy> are normal books not good enough???
20:29:00 <monqy> not
20:29:01 <itidus21> back
20:29:02 <monqy> ultra
20:29:03 <monqy> enough???
20:29:07 <kallisti> as far as I can tell it's inbetween a netbook and a normal laptop
20:29:18 <kallisti> in terms of weight/size/performance
20:29:25 <kallisti> I just heard it on CNN.
20:30:14 <monqy> how ultra
20:30:20 <kallisti> totally.
20:30:42 <oerjan> <elliott> hi oerjan <-- hi elliott
20:31:19 <itidus21> so if there was, in c++ ... class x { public: int a; x b; }; then you could end up with x x1; x1.b.b.b.b.b.b.b.b.b.b.b[...]
20:31:19 <kallisti> <oerjan> <elliott> hi oerjan <-- hi elliott <-- hi oerjan
20:31:43 <kallisti> itidus21: well, no.
20:31:53 <kallisti> itidus21: in that case it would either have to terminate at some point or exhaust your memory
20:32:00 <itidus21> i think they don't allow you to do that
20:32:08 <itidus21> im not quite sure
20:32:09 <kallisti> itidus21: if however you had a x *b as a field of x
20:32:27 <kallisti> then you could have x1->b->b->b[..]
20:32:42 <tswett> Whoa. Internal set theory is weird.
20:32:50 <kallisti> itidus21: yes I doubt it allows that because it can't determine the size of the struct. I think.
20:32:57 <itidus21> size is infinite
20:33:01 <kallisti> itidus21: yes.
20:33:05 <itidus21> hair pulls out
20:33:13 <itidus21> :D
20:33:15 <tswett> It says, among other things, that out of all the natural numbers, only finitely many are actually defined by formulas.
20:33:20 <kallisti> itidus21: however a pointer is a fixed size, so pointers are fine.
20:34:10 <kallisti> a pointer is the size of a memory address in C++.
20:34:37 <itidus21> but if you say
20:34:52 <kallisti> tswett: hm?
20:35:24 <kallisti> tswett: what about Peano arithmetic. is that not a formula that describes all the natural numbers?
20:35:38 <kallisti> *axioms
20:35:38 <itidus21> ... class x { public: int a(void) { return 5;} x b; }; then it works
20:35:53 <itidus21> in theory
20:35:56 <monqy> what
20:36:01 <kallisti> itidus21: no it doesn't
20:36:03 <tswett> It defines the *set* of all natural numbers. But IST is talking about individual natural numbers.
20:36:04 <itidus21> not in c++ ... but
20:36:19 <tswett> I.e. there exist infinitely many naturals n such that there is no formula defining n.
20:36:24 <kallisti> tswett: that's a pretty arbitrary differences. but no, it doesn't mention individual numbers.
20:36:27 <kallisti> aside from 0
20:36:53 <itidus21> in my head it does
20:36:59 <kallisti> itidus21: how is that any difference
20:37:01 <oerjan> <kallisti> <oerjan> <elliott> hi oerjan <-- hi elliott <-- hi oerjan <-- hi kallisti
20:37:04 <kallisti> that now there's a methof
20:37:06 <kallisti> *d
20:37:25 <itidus21> since the only data stored by each instance of x is another x
20:37:35 <kallisti> what is the size of x in memory?
20:37:49 <kallisti> how many bytes does an instance of type x occupy?
20:37:56 <oerjan> @src Mu
20:37:57 <lambdabot> newtype Mu f = In { out :: f (Mu f) }
20:38:02 <itidus21> well.. in this case i am proposing that in a good language it could be 0
20:38:11 <kallisti> C++ is not such a language.
20:38:26 <monqy> talking about bites and syzes is making me saad
20:38:48 <kallisti> monqy: if only computers stored thingies
20:38:52 <kallisti> then we could just talk about thingies.
20:39:20 <monqy> yes i love thingies
20:39:43 <primo> i bet you do.
20:39:50 <monqy> hi
20:39:55 <primo> sup
20:40:10 <kallisti> itidus21: the normal way to do that would be to have x *b;
20:40:11 <itidus21> anyway this all became clear to me when i tried drawing down on paper all these things
20:40:25 <kallisti> itidus21: at which the type x contains however many bytes are needed to store a memory address.
20:40:30 <kallisti> *which point
20:41:42 <ais523> <spambot> Superior vomiting.
20:41:46 <monqy> itidus21: all became clear?
20:42:16 <itidus21> i drew up some simple tables of classes and objects
20:42:25 <oerjan> > do rec { x <- Just $ out y; y <- Just $ out x }; return x
20:42:27 <lambdabot> Couldn't match kind `* -> *' against `(* -> *) -> *'
20:42:37 <kallisti> itidus21: also higher-level language implementations would most likely implement cyclic data structures in the same (or a similar) way.
20:42:43 <oerjan> oops
20:43:01 -!- _Slereah has joined.
20:43:05 <oerjan> > do rec { x <- Just $ In y; y <- Just $ In x }; return x
20:43:06 <lambdabot> Couldn't match kind `(* -> *) -> *' against `* -> *'
20:43:12 <monqy> itidus21: my question isn't about the method in which it became clear to you; it's about whether it really became clear at all, or if you're just delusional
20:43:19 <monqy> er
20:43:22 <oerjan> now what
20:43:25 <monqy> something like tthat
20:43:25 <itidus21> possibly both
20:43:34 <kallisti> monqy: aren't we all delusional????
20:43:42 <monqy> itidus21 most so
20:43:56 -!- Vorpal has quit (Ping timeout: 260 seconds).
20:43:59 <elliott> <ais523> <spambot> Superior vomiting.
20:44:00 <elliott> finally.
20:44:10 <elliott> > > do { rec { x <- Just $ In y; y <- Just $ In x }; return x }
20:44:11 <lambdabot> <no location info>: parse error on input `>'
20:44:13 <ais523> "finally"?
20:44:13 <elliott> > do { rec { x <- Just $ In y; y <- Just $ In x }; return x }
20:44:14 <lambdabot> Couldn't match kind `(* -> *) -> *' against `* -> *'
20:44:16 <kallisti> elliott: just what I was looking for.
20:44:24 <elliott> ais523: all my life i've been dealing with the side-effects of inferior vomiting
20:45:05 <itidus21> actually the real goal is looking for a language to remind me of super mario bros. 1
20:45:15 <monqy> what
20:45:28 <ais523> itidus21: I'm pretty sure someone's already made an esolang along those lines
20:45:31 <ais523> but IIRC it sucked
20:45:57 <kallisti> does a good "themed language" exist?
20:46:05 <itidus21> i feel like a smart ass saying "along which lines?"
20:46:19 <itidus21> but maybe super mario bros. means something unique to me
20:46:21 <kallisti> "are you as white or as black as you think you are?" -- guy on CNN
20:46:27 <monqy> what
20:46:54 <kallisti> itidus21: for me super mario bros. means dungeons and dragons.
20:47:14 <oerjan> > rec
20:47:15 <lambdabot> not an expression: `rec'
20:47:24 <oerjan> ok, it _does_ have rec notation
20:47:27 <itidus21> one thing about super mario bros. which really impresses me is that when the game does something it's not supposed to, it handles whatever data it runs into and still manages to turn that data into playable levels
20:47:46 <elliott> :t do { rec { x <- Just $ In y; y <- Just $ In x }; return x }
20:47:47 <lambdabot> Couldn't match kind `(* -> *) -> *' against `* -> *'
20:47:47 <lambdabot> When matching the kinds of `Mu :: (* -> *) -> *' and `f :: * -> *'
20:47:47 <lambdabot> Expected type: f (Mu f)
20:47:51 <elliott> oerjan: hth
20:48:22 <oerjan> oh hm
20:48:39 <itidus21> most games do something wrong and they're like.. crash! ... but super mario bros. drums to a different beat.. and it just throws a new level at you such as the infamous minus world
20:48:43 <kallisti> itidus21: when's the last time you wrote a program?
20:48:45 <oerjan> > do rec { x <- Just (1,In y); y <- Just (2,In x) }; return x
20:48:50 <lambdabot> mueval-core: Time limit exceeded
20:48:55 <oerjan> sheesh
20:49:02 <elliott> > do rec { x <- Just (1,In y); y <- Just (2,In x) }; return x
20:49:04 <lambdabot> Just (1,In (2,In (1,In (2,In (1,In (2,In (1,In (2,In (1,In (2,In (1,In (2,I...
20:49:12 <oerjan> ok just slow
20:49:18 <elliott> oerjan: (hm why _did_ your original one fail)
20:49:32 <itidus21> kallisti: probably a brainfuck cat program
20:49:42 <kallisti> itidus21: that's not a time.
20:49:42 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:49:58 <oerjan> elliott: there was no actual f, the Just got taken out by the <-
20:50:07 <itidus21> ^bf ,[.,]!test
20:50:07 <fungot> test
20:50:51 <kallisti> elliott: in what situations does lazy input cause a memory leak?
20:50:58 <oerjan> so it was like Mu F with type F a = a
20:51:24 <elliott> oerjan: ah
20:51:26 <oerjan> which doesn't work
20:51:40 <elliott> kallisti: what do you mean by "memory leak"
20:52:42 <kallisti> in this case I don't know because the only thing I know about lazy input and memory leaks is that you told me that they can do that.
20:53:40 <Sgeo> I don't quite understand how rec works with IO
20:53:41 <kallisti> if it's some kind of technical distinction you're trying to make feel free to elucidate.
20:53:44 <elliott> i don't think i said "memory leak" directly
20:53:46 <Sgeo> Does it cause the IO to go into a loop?
20:53:56 <kallisti> well you said something like "memory can build up unexpectedly"
20:54:48 * elliott demands a quote of himself before continuing.
20:55:00 <kallisti> it was a paraphrase
20:55:02 <kallisti> you said something
20:55:08 <kallisti> involving memory and lazy input
20:55:17 * kallisti decides to become more vague instead of taking the effort to find the quote.
20:55:28 <elliott> ok, it's a thingy then
20:55:29 <elliott> hth
20:55:48 <kallisti> come on...
20:56:03 <kallisti> why do I need to quote you exactly again?
20:56:16 <kallisti> you're practical a self-quoting machine. just quote yourself by speaking.
20:56:19 -!- Phantom_Hoover has joined.
20:57:00 <kallisti> `log elliot.*bluh.*bluh.*lazy input.*bad
20:57:21 <HackEgo> 2012-01-14.txt:20:57:00: <kallisti> `log elliot.*bluh.*bluh.*lazy input.*bad
20:57:45 <elliott> because i only like defending things actually relevant to my continued reputation of always being right :P
20:58:24 <oerjan> Sgeo: no. it creates dummy thunks for the identifiers which error out if they are accessed before the IO actions fill them in.
20:58:29 <kallisti> there is nothing being attacked to defend..../
20:58:49 <kallisti> I was just curious as to the specific mechanism by which lazy input can cause unexpected memory.... problems.
20:59:08 <oerjan> because of laziness, they can often be practically filled in before that happens.
20:59:14 <elliott> kallisti: the main problems with lazy input are resource alloaction; the handle is only closed when you reach the end of the string, so if you fail to force it all the way in a timely fashion (say because of a short-circuiting algorithm) that handle will _leak_. this also means that readFile "foo" >>= writeFile "foo" can never work
20:59:47 <elliott> space leaks basically result from the fact that it's hard to assure constant-space streaming IO type functionality, because the interface doesn't enforce it; you must avoid keeping a reference to earlier cells of the string, etc.
21:00:00 <oerjan> :t Compose
21:00:01 <lambdabot> Not in scope: data constructor `Compose'
21:00:02 <elliott> of course the same issues exist with "pure" lists but they're not tied in with IO issues like lazy input is
21:00:17 <oerjan> hm...
21:00:34 <kallisti> elliott: how big of a deal is a leaked handle. what are the consequences.
21:00:38 <oerjan> :t WriterT
21:00:39 <lambdabot> forall (m :: * -> *) a w. m (a, w) -> WriterT w m a
21:01:33 <kallisti> elliott: but yes I see the problem.
21:01:48 <elliott> kallisti: a huge deal
21:01:54 <elliott> as i said for one: "this also means that readFile "foo" >>= writeFile "foo" can never work"
21:01:59 <elliott> also, it's very easy to run out of available fds
21:02:10 <elliott> the naive implementation of multi-file wc with lazy IO does so, for instance
21:02:17 <elliott> which is one of the motivating examples oleg used for iteratees
21:02:20 <elliott> (enumerators)
21:02:57 <kallisti> lazy input would be fine though for applications that always read all of the data in a linear order without saving any chunk of it for later use. for example such robust demand intensive applications as: getContents >>= putStr
21:03:50 <kallisti> oh and it can't open too many fds
21:03:55 <kallisti> that's another requirement
21:04:31 <oerjan> Sgeo: basically, rec only recurses on _values returned_, never on actions.
21:04:40 <kallisti> by "leaked handles" do you mean that the handle never gets closed and just sits there or do you mean a sudden profusion of handles are allocated in an increasing number.
21:04:56 <elliott> <kallisti> lazy input would be fine though
21:04:57 <elliott> wrong
21:05:01 <kallisti> I suppose the former could easily cause the latter.
21:05:02 * Sgeo looks into Snap
21:05:09 <elliott> <kallisti> by "leaked handles" do you mean that the handle never gets closed and just sits there or do you mean a sudden profusion of handles are allocated in an increasing number.
21:05:10 <oerjan> (this should be true for any monad implementing it.)
21:05:13 <elliott> are you familiar with the definition of a leak?
21:05:30 <kallisti> elliott: I believe you forgot to quote the rest of that second to last quote
21:05:55 <kallisti> elliott: I'm familiar with the term of memory in general. I suppose with handles it's the same thing.
21:05:58 <kallisti> *for
21:06:36 <kallisti> I'm not really sure I understand how readFile "foo" >>= writeFile "foo" leaks handles though.
21:07:21 <elliott> <kallisti> I'm not really sure I understand how readFile "foo" >>= writeFile "foo" leaks handles though.
21:07:24 <elliott> it's not about leaking.
21:07:26 <elliott> it just plain doesn't work.
21:07:27 <elliott> as in, ever.
21:07:32 <elliott> try it.
21:07:46 <elliott> [elliott@dinky tmp]$ echo hi >fuck
21:07:46 <elliott> [elliott@dinky tmp]$ ghci
21:07:46 <elliott> GHCi, version 7.0.3: http://www.haskell.org/ghc/ :? for help
21:07:46 <elliott> Loading package ghc-prim ... linking ... done.
21:07:46 <elliott> Loading package integer-gmp ... linking ... done.
21:07:46 <elliott> Loading package base ... linking ... done.
21:07:48 <elliott> Loading package ffi-1.0 ... linking ... done.
21:07:50 <elliott> Prelude> readFile "fuck" >>= writeFile "fuck"
21:07:52 <elliott> *** Exception: fuck: openFile: resource busy (file is locked)
21:07:59 <kallisti> ah I see
21:08:00 <kallisti> it's not a leak
21:08:01 <kallisti> well
21:08:02 <elliott> this is because the handle is still open until the whole resulting string is forced
21:08:02 <kallisti> it is
21:08:07 <elliott> so it cannot be opened for writing
21:08:08 <Sgeo> If readFile wasn't lazy, it would work, right?
21:08:11 <elliott> yes
21:08:14 <Sgeo> :t evaluate
21:08:15 <lambdabot> Not in scope: `evaluate'
21:08:17 <elliott> considering the topic is how lazy input breaks things
21:08:23 <Sgeo> :t Control.Exception.evaluate
21:08:24 <lambdabot> forall a. a -> IO a
21:08:46 <Sgeo> readFile "fuck" >>= evaluate >>= writeFile "fuck"?
21:08:57 <Sgeo> Wait, I don't think that works, does it?
21:09:20 <elliott> Sgeo: No.
21:09:40 <elliott> evaluate . force would.
21:09:53 <Sgeo> @hoogle force
21:09:54 <lambdabot> Control.DeepSeq force :: NFData a => a -> a
21:09:54 <lambdabot> Graphics.UI.GLUT.Initialization ForceDirectContext :: DirectRendering
21:09:54 <lambdabot> Graphics.UI.GLUT.Initialization ForceIndirectContext :: DirectRendering
21:10:26 <Sgeo> Ah, ok
21:10:33 <Sgeo> (looking at the documentation for force)
21:10:51 * kallisti doesn't really understand what lazy does.
21:11:21 <Sgeo> @hoogle trace
21:11:21 <lambdabot> Debug.Trace module Debug.Trace
21:11:21 <lambdabot> Debug.Trace trace :: String -> a -> a
21:11:21 <lambdabot> Debug.Trace traceShow :: Show a => a -> b -> b
21:11:24 <kallisti> @hoogle lazy
21:11:24 <lambdabot> Control.Monad.ST.Lazy module Control.Monad.ST.Lazy
21:11:24 <lambdabot> Data.STRef.Lazy module Data.STRef.Lazy
21:11:24 <lambdabot> Control.Monad.ST.Lazy lazyToStrictST :: ST s a -> ST s a
21:11:32 <elliott> kallisti: It's just a compiler trick.
21:11:41 <elliott> lazy is strict in its argument but the compiler believes it's lazy.
21:11:47 <Sgeo> Oh, the function
21:11:55 <elliott> (Of course, it has to be strict in its argument, since it's semantically id.)
21:12:17 <kallisti> elliott: oh I see.
21:12:35 <kallisti> but now I'm not sure why you would want that.
21:12:54 <elliott> pseq a b = seq a (lazy b)
21:13:15 <elliott> To stop the compiler doing things like reordering things.
21:14:56 <oerjan> <elliott> as in, ever. <-- what about with a named pipe? :D
21:15:28 <elliott> kallisti: (That works because, since pseq is lazy in its second argument (to the compiler), GHC obviously isn't allowed to force the second argument before the first, because what if it was _|_?.)
21:15:50 <elliott> (So it's guaranteed to stay like (seq a b) in that order.)
21:15:58 -!- zzo38 has joined.
21:16:11 -!- primo has quit (Ping timeout: 252 seconds).
21:16:56 <elliott> -- The reason for the strange "lazy" call is that
21:16:56 <elliott> -- it fools the compiler into thinking that pseq and par are non-strict in
21:16:56 <elliott> -- their second argument (even if it inlines pseq at the call site).
21:16:56 <elliott> -- If it thinks pseq is strict in "y", then it often evaluates
21:16:56 <elliott> -- "y" before "x", which is totally wrong.
21:17:45 <kallisti> so is $! implemented with seq or pseq. if seq often evaluates the second argument first it doesn't seem like you get much from it.
21:18:05 <oerjan> with seq
21:18:07 <kallisti> when used in the way that $! is used.
21:18:51 <elliott> kallisti: I don't see why, necessarily.
21:18:57 <kallisti> well, sometimes
21:18:59 <kallisti> not every time.
21:19:00 <elliott> If f is already strict then f $! x === f x, so...
21:19:16 <oerjan> kallisti: f $! x still forces x to be evaluated first if f is not obviously strict
21:19:18 <elliott> ...so, for ($!) to matter, f has to not inspect its argument.
21:19:24 <elliott> So whether x is forced before or after is irrelevant.
21:19:48 <kallisti> I guess so, yes.
21:20:01 <elliott> Mostly you would use ($!) to do something like
21:20:03 <elliott> Just $! x
21:20:06 <elliott> to stop a thunk lying around.
21:20:15 <elliott> And whether you force x "before" or after (Just x) is irrelevant, it gets de-thunked either way.
21:20:26 <kallisti> yes
21:21:33 <kallisti> :t the
21:21:34 <lambdabot> Not in scope: `the'
21:21:47 <kallisti> the is weird.
21:22:05 <kallisti> why does GHC.Exts have so many weird things.
21:22:49 <kallisti> :t build
21:22:50 <lambdabot> Not in scope: `build'
21:22:52 <kallisti> :(
21:22:53 <elliott> kallisti: Because GHC uses them, one presumes.
21:22:54 <oerjan> wtf is the
21:23:01 <oerjan> kallisti: build is for list fusion
21:23:08 <kallisti> the basically errors if the list isn't full of identical elements.
21:23:10 <elliott> -- | 'the' ensures that all the elements of the list are identical
21:23:10 <elliott> -- and then returns that unique element
21:23:10 <elliott> the :: Eq a => [a] -> a
21:23:10 <elliott> the (x:xs)
21:23:10 <elliott> | all (x ==) xs = x
21:23:11 <elliott> | otherwise = error "GHC.Exts.the: non-identical elements"
21:23:11 <kallisti> oerjan: yes I know
21:23:13 <elliott> the [] = error "GHC.Exts.the: empty list"
21:23:15 <elliott> There's also
21:23:17 <elliott> -- | The 'Down' type allows you to reverse sort order conveniently. A value of type
21:23:18 <kallisti> oerjan: I was getting an idea for what it does exactly.
21:23:19 <elliott> -- @'Down' a@ contains a value of type @a@ (represented as @'Down' a@).
21:23:21 <elliott> -- If @a@ has an @'Ord'@ instance associated with it then comparing two
21:23:23 <elliott> -- values thus wrapped will give you the opposite of their normal sort order.
21:23:25 <elliott> -- This is particularly useful when sorting in generalised list comprehensions,
21:23:27 <elliott> -- as in: @then sortWith by 'Down' x@
21:23:29 <elliott> newtype Down a = Down a deriving (Eq)
21:23:31 <elliott> instance Ord a => Ord (Down a) where
21:23:33 <elliott> compare (Down x) (Down y) = y `compare` x
21:23:35 <elliott> I'm pretty sure this stuff is just "things used in GHC that we can't think of a good place for and don't want to pollute the library namespace with".
21:24:06 <zzo38>
21:24:08 <elliott> Actually the Down stuff looks to be intended for user code.
21:24:19 <elliott> zzo38:
21:24:47 <kallisti> zzo38: why only three spaces sir?
21:25:08 <zzo38> There are various things that will reverse, such as reversing ordering, monoid, category, applicative, etc
21:25:10 <monqy> looks more like 2 to me
21:25:52 <oerjan> monoid already has the Dual type
21:25:54 <oerjan> :t Dual
21:25:55 <lambdabot> forall a. a -> Dual a
21:26:09 <zzo38> oerjan: Yes, it does have.
21:26:22 <zzo38> For category and applicative, I have made up types for reversing them.
21:27:54 <kallisti> :t breakpoint
21:27:55 <lambdabot> Not in scope: `breakpoint'
21:28:17 <kallisti> GHC gives you a lot of ways to say id.
21:28:21 <zzo38> Alternative and MonadPlus classes can also be reversed
21:29:30 <kallisti> -- XXX This should really be in Data.Tuple, where the definitions are
21:29:30 <kallisti> maxTupleSize :: Int
21:29:31 <kallisti> maxTupleSize = 62
21:29:36 <kallisti> shameful, ghc.
21:30:00 <monqy> 62-tuples, my favourite
21:30:21 <oerjan> kallisti: iirc Data.Tuple contains a comment to the effect that adding one more size causes a crash
21:32:46 <kallisti> > text '(' : replicate 61 ',' ++ ")"
21:32:47 <lambdabot> Couldn't match expected type `[GHC.Types.Char]'
21:32:47 <lambdabot> against inferred ty...
21:33:01 <kallisti> > text '(' : (replicate 61 ',' ++ ")")
21:33:02 <lambdabot> Couldn't match expected type `[GHC.Types.Char]'
21:33:02 <lambdabot> against inferred ty...
21:33:05 <kallisti> oh
21:33:09 <kallisti> > text $ '(' : (replicate 61 ',' ++ ")")
21:33:10 <lambdabot> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
21:33:20 <elliott> looks smaler
21:33:25 <monqy> bigh tuppel
21:33:28 <kallisti> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
21:33:29 <lambdabot> forall a b c d e f g h i j k l m n o p q r s t u v w x y z t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62
21:33:29 <lambdabot> t63. a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 ->
21:33:29 <lambdabot> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61 -> t62 -> t63 -> (a, b, c,
21:33:29 <lambdabot> d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53,
21:33:29 <lambdabot> t54, t55, t56, t57, t58, t59, t60, t61, t62, t63)
21:33:41 <elliott> hi
21:33:57 <monqy> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
21:33:58 <lambdabot> forall a b c d e f g h i j k l m n o p q r s t u v w x y z t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62
21:33:58 <lambdabot> t63 t64 t65 t66. a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 ->
21:33:58 <lambdabot> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61 -> t62 ->
21:33:58 <lambdabot> t63 -> t64 -> t65 -> t66 -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45,
21:33:58 <lambdabot> t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64, t65, t66)
21:34:01 <monqy> :o
21:34:04 <elliott> nooooooooooooooooooooooooooooooooooooooooooooooo
21:34:04 <kallisti> :O
21:34:09 <elliott> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
21:34:10 <lambdabot> forall a b c d e f g h i j k l m n o p q r s t u v w x y z t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62
21:34:10 <lambdabot> t63 t64 t65 t66 t67 t68 t69 t70 t71 t72 t73 t74 t75 t76 t77 t78 t79 t80 t81 t82 t83 t84 t85 t86 t87 t88 t89 t90 t91 t92 t93. a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o ->
21:34:10 <lambdabot> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 ->
21:34:10 <lambdabot> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61 -> t62 -> t63 -> t64 -> t65 -> t66 -> t67 -> t68 -> t69 -> t70 -> t71 -> t72 -> t73 -> t74 -> t75 ->
21:34:10 <lambdabot> t76 -> t77 -> t78 -> t79 -> t80 -> t81 -> t82 -> t83 -> t84 -> t85 -> t86 -> t87 -> t88 -> t89 -> t90 -> t91 -> t92 -> t93 -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x,
21:34:12 <lambdabot> y, z, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64, t65,
21:34:14 <lambdabot> t66, t67, t68, t69, t70, t71, t72, t73, t74, t75, t76, t77, t78, t79, t80, t81, t82, t83, t84, t85, t86, t87, t88, t89, t90, t91, t92, t93)
21:34:15 <elliott> NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
21:34:16 <monqy> nooooooooooo
21:34:24 <elliott> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
21:34:25 <lambdabot> forall a b c d e f g h i j k l m n o p q r s t u v w x y z t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62
21:34:25 <lambdabot> t63 t64 t65 t66 t67 t68 t69 t70 t71 t72 t73 t74 t75 t76 t77 t78 t79 t80 t81 t82 t83 t84 t85 t86 t87 t88 t89 t90 t91 t92 t93 t94 t95 t96 t97 t98 t99 t100 t101 t102 t103 t104 t105 t106 t107 t108 t109
21:34:25 <lambdabot> t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131 t132 t133 t134 t135 t136 t137 t138 t139 t140 t141 t142 t143 t144 t145 t146 t147 t148
21:34:25 <lambdabot> t149 t150 t151 t152 t153 t154 t155 t156 t157 t158 t159 t160 t161 t162 t163 t164 t165 t166 t167 t168 t169 t170 t171 t172 t173 t174 t175 t176 t177 t178 t179 t180 t181 t182 t183 t184. a -> b -> c -> d -
21:34:25 <lambdabot> > e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 ->
21:34:27 <lambdabot> [11 @more lines]
21:34:30 <elliott> NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
21:34:31 <elliott> @more
21:34:31 <lambdabot> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61 -> t62 -> t63 -> t64 -> t65 -> t66 -> t67 ->
21:34:31 <lambdabot> t68 -> t69 -> t70 -> t71 -> t72 -> t73 -> t74 -> t75 -> t76 -> t77 -> t78 -> t79 -> t80 -> t81 -> t82 -> t83 -> t84 -> t85 -> t86 -> t87 -> t88 -> t89 -> t90 -> t91 -> t92 -> t93 -> t94 -> t95 ->
21:34:33 <lambdabot> t96 -> t97 -> t98 -> t99 -> t100 -> t101 -> t102 -> t103 -> t104 -> t105 -> t106 -> t107 -> t108 -> t109 -> t110 -> t111 -> t112 -> t113 -> t114 -> t115 -> t116 -> t117 -> t118 -> t119 -> t120 ->
21:34:35 <lambdabot> t121 -> t122 -> t123 -> t124 -> t125 -> t126 -> t127 -> t128 -> t129 -> t130 -> t131 -> t132 -> t133 -> t134 -> t135 -> t136 -> t137 -> t138 -> t139 -> t140 -> t141 -> t142 -> t143 -> t144 -> t145 ->
21:34:37 <lambdabot> t146 -> t147 -> t148 -> t149 -> t150 -> t151 -> t152 -> t153 -> t154 -> t155 -> t156 -> t157 -> t158 -> t159 -> t160 -> t161 -> t162 -> t163 -> t164 -> t165 -> t166 -> t167 -> t168 -> t169 -> t170 -
21:34:39 <lambdabot> [6 @more lines]
21:34:40 <monqy> thanks lambdabot
21:34:41 <elliott> OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
21:34:41 <elliott> @more
21:34:42 <lambdabot> > t171 -> t172 -> t173 -> t174 -> t175 -> t176 -> t177 -> t178 -> t179 -> t180 -> t181 -> t182 -> t183 -> t184 -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t28,
21:34:43 <lambdabot> t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64, t65, t66, t67, t68,
21:34:45 <lambdabot> t69, t70, t71, t72, t73, t74, t75, t76, t77, t78, t79, t80, t81, t82, t83, t84, t85, t86, t87, t88, t89, t90, t91, t92, t93, t94, t95, t96, t97, t98, t99, t100, t101, t102, t103, t104, t105, t106,
21:34:47 <lambdabot> t107, t108, t109, t110, t111, t112, t113, t114, t115, t116, t117, t118, t119, t120, t121, t122, t123, t124, t125, t126, t127, t128, t129, t130, t131, t132, t133, t134, t135, t136, t137, t138, t139,
21:34:49 <lambdabot> t140, t141, t142, t143, t144, t145, t146, t147, t148, t149, t150, t151, t152, t153, t154, t155, t156, t157, t158, t159, t160, t161, t162, t163, t164, t165, t166, t167, t168, t169, t170, t171, t172,
21:34:51 <lambdabot> t173, t174, t175, t176, t177, t178, t179, t180, t181, t182, t183, t184)
21:34:53 <elliott> OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
21:34:59 <kallisti> does GHC have arbitrary tuple sizes now or something?
21:35:05 <elliott> bignum tuples
21:35:34 <kallisti> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
21:35:35 <lambdabot> forall a b c d e f g h i j k l m n o p q r s t u v w x y z t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62
21:35:35 <lambdabot> t63 t64 t65 t66 t67 t68 t69 t70 t71 t72 t73 t74 t75 t76 t77 t78 t79 t80 t81 t82 t83 t84 t85 t86 t87 t88 t89 t90 t91 t92 t93 t94 t95 t96 t97 t98 t99 t100 t101 t102 t103 t104 t105 t106 t107 t108 t109
21:35:35 <lambdabot> t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131 t132 t133 t134 t135 t136 t137 t138 t139 t140 t141 t142 t143 t144 t145 t146 t147 t148
21:35:35 <lambdabot> t149 t150 t151 t152 t153 t154 t155 t156 t157 t158 t159 t160 t161 t162 t163 t164 t165 t166 t167 t168 t169 t170 t171 t172 t173 t174 t175 t176 t177 t178 t179 t180 t181 t182 t183 t184 t185 t186 t187
21:35:35 <lambdabot> t188 t189 t190 t191 t192 t193 t194 t195 t196 t197 t198 t199 t200 t201 t202 t203 t204 t205 t206 t207 t208 t209 t210 t211 t212 t213 t214 t215 t216 t217 t218 t219 t220 t221 t222 t223 t224 t225 t226
21:35:37 <lambdabot> [25 @more lines]
21:35:57 <elliott> @more
21:35:57 <lambdabot> t227 t228 t229 t230 t231 t232 t233 t234 t235 t236 t237 t238 t239 t240 t241 t242 t243 t244 t245 t246 t247 t248 t249 t250 t251 t252 t253 t254 t255 t256 t257 t258 t259 t260 t261 t262 t263 t264 t265
21:35:58 <lambdabot> t266 t267 t268 t269 t270 t271 t272 t273 t274 t275 t276 t277 t278 t279 t280 t281 t282 t283 t284 t285 t286 t287 t288 t289 t290 t291 t292 t293 t294 t295 t296 t297 t298 t299 t300 t301 t302 t303 t304
21:35:58 <lambdabot> t305 t306 t307 t308 t309 t310 t311 t312 t313 t314 t315 t316 t317 t318 t319 t320 t321 t322 t323 t324 t325 t326 t327. a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -
21:35:58 <lambdabot> > r -> s -> t -> u -> v -> w -> x -> y -> z -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -
21:35:58 <lambdabot> > t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61 -> t62 -> t63 -> t64 -> t65 -> t66 -> t67 -> t68 -> t69 -> t70 -> t71 -> t72 -> t73 -> t74 -> t75 -> t76 -> t77 ->
21:35:59 <lambdabot> [20 @more lines]
21:36:00 <elliott> @more
21:36:01 <lambdabot> t78 -> t79 -> t80 -> t81 -> t82 -> t83 -> t84 -> t85 -> t86 -> t87 -> t88 -> t89 -> t90 -> t91 -> t92 -> t93 -> t94 -> t95 -> t96 -> t97 -> t98 -> t99 -> t100 -> t101 -> t102 -> t103 -> t104 -> t105
21:36:03 <lambdabot> -> t106 -> t107 -> t108 -> t109 -> t110 -> t111 -> t112 -> t113 -> t114 -> t115 -> t116 -> t117 -> t118 -> t119 -> t120 -> t121 -> t122 -> t123 -> t124 -> t125 -> t126 -> t127 -> t128 -> t129 ->
21:36:05 <lambdabot> t130 -> t131 -> t132 -> t133 -> t134 -> t135 -> t136 -> t137 -> t138 -> t139 -> t140 -> t141 -> t142 -> t143 -> t144 -> t145 -> t146 -> t147 -> t148 -> t149 -> t150 -> t151 -> t152 -> t153 -> t154 ->
21:36:07 <kallisti> elliott: NO STOP
21:36:07 <lambdabot> t155 -> t156 -> t157 -> t158 -> t159 -> t160 -> t161 -> t162 -> t163 -> t164 -> t165 -> t166 -> t167 -> t168 -> t169 -> t170 -> t171 -> t172 -> t173 -> t174 -> t175 -> t176 -> t177 -> t178 -> t179 -
21:36:09 <lambdabot> > t180 -> t181 -> t182 -> t183 -> t184 -> t185 -> t186 -> t187 -> t188 -> t189 -> t190 -> t191 -> t192 -> t193 -> t194 -> t195 -> t196 -> t197 -> t198 -> t199 -> t200 -> t201 -> t202 -> t203 -> t204
21:36:11 <lambdabot> [15 @more lines]
21:36:12 <elliott> @more
21:36:13 <lambdabot> -> t205 -> t206 -> t207 -> t208 -> t209 -> t210 -> t211 -> t212 -> t213 -> t214 -> t215 -> t216 -> t217 -> t218 -> t219 -> t220 -> t221 -> t222 -> t223 -> t224 -> t225 -> t226 -> t227 -> t228 ->
21:36:15 <lambdabot> t229 -> t230 -> t231 -> t232 -> t233 -> t234 -> t235 -> t236 -> t237 -> t238 -> t239 -> t240 -> t241 -> t242 -> t243 -> t244 -> t245 -> t246 -> t247 -> t248 -> t249 -> t250 -> t251 -> t252 -> t253 ->
21:36:17 <lambdabot> t254 -> t255 -> t256 -> t257 -> t258 -> t259 -> t260 -> t261 -> t262 -> t263 -> t264 -> t265 -> t266 -> t267 -> t268 -> t269 -> t270 -> t271 -> t272 -> t273 -> t274 -> t275 -> t276 -> t277 -> t278 -
21:36:18 <kallisti> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
21:36:19 <lambdabot> > t279 -> t280 -> t281 -> t282 -> t283 -> t284 -> t285 -> t286 -> t287 -> t288 -> t289 -> t290 -> t291 -> t292 -> t293 -> t294 -> t295 -> t296 -> t297 -> t298 -> t299 -> t300 -> t301 -> t302 -> t303
21:36:21 <lambdabot> parse error (possibly incorrect indentation)
21:36:23 <lambdabot> -> t304 -> t305 -> t306 -> t307 -> t308 -> t309 -> t310 -> t311 -> t312 -> t313 -> t314 -> t315 -> t316 -> t317 -> t318 -> t319 -> t320 -> t321 -> t322 -> t323 -> t324 -> t325 -> t326 -> t327 -> (a,
21:36:25 <lambdabot> [10 @more lines]
21:36:28 <kallisti> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
21:36:29 <lambdabot> forall a b c d e f g h i j k l m n o p q r s t u v w x y z t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62
21:36:29 <lambdabot> t63 t64 t65 t66 t67 t68 t69 t70 t71 t72 t73 t74 t75 t76 t77 t78 t79 t80 t81 t82 t83 t84 t85 t86 t87 t88 t89 t90 t91 t92 t93 t94 t95 t96 t97 t98 t99 t100 t101 t102 t103 t104 t105 t106 t107 t108 t109
21:36:31 <lambdabot> t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131 t132 t133 t134 t135 t136 t137 t138 t139 t140 t141 t142 t143 t144 t145 t146 t147 t148
21:36:32 <elliott> @more
21:36:33 <monqy> wow if you do it in ghc each thingy goes on its own line
21:36:33 <lambdabot> t149 t150 t151 t152 t153 t154 t155 t156 t157 t158 t159 t160 t161 t162 t163 t164 t165 t166 t167 t168 t169 t170 t171 t172 t173 t174 t175 t176 t177 t178 t179 t180 t181 t182 t183 t184 t185 t186 t187
21:36:35 <monqy> er
21:36:35 <lambdabot> t227 t228 t229 t230 t231 t232 t233 t234 t235 t236 t237 t238 t239 t240 t241 t242 t243 t244 t245 t246 t247 t248 t249 t250 t251 t252 t253 t254 t255 t256 t257 t258 t259 t260 t261 t262 t263 t264 t265
21:36:35 <elliott> @more
21:36:36 <monqy> ghci
21:36:37 <elliott> @more
21:36:37 <lambdabot> t188 t189 t190 t191 t192 t193 t194 t195 t196 t197 t198 t199 t200 t201 t202 t203 t204 t205 t206 t207 t208 t209 t210 t211 t212 t213 t214 t215 t216 t217 t218 t219 t220 t221 t222 t223 t224 t225 t226
21:36:38 <elliott> @more
21:36:39 <elliott> @more
21:36:39 <lambdabot> t266 t267 t268 t269 t270 t271 t272 t273 t274 t275 t276 t277 t278 t279 t280 t281 t282 t283 t284 t285 t286 t287 t288 t289 t290 t291 t292 t293 t294 t295 t296 t297 t298 t299 t300 t301 t302 t303 t304
21:36:41 <elliott> @more
21:36:41 <lambdabot> [32 @more lines]
21:36:43 <monqy> if you do it in ghci each thingy goes on its own line it's amazing
21:36:43 <lambdabot> t305 t306 t307 t308 t309 t310 t311 t312 t313 t314 t315 t316 t317 t318 t319 t320 t321 t322 t323 t324 t325 t326 t327 t328 t329 t330 t331 t332 t333 t334 t335 t336 t337 t338 t339 t340 t341 t342 t343
21:36:44 <elliott> what a beautiful sea this is
21:36:45 <lambdabot> t344 t345 t346 t347 t348 t349 t350 t351 t352 t353 t354 t355 t356 t357 t358 t359 t360 t361 t362 t363 t364 t365 t366 t367 t368 t369 t370 t371 t372 t373 t374 t375 t376 t377 t378 t379 t380 t381 t382
21:36:47 <lambdabot> t383 t384 t385 t386 t387 t388 t389 t390 t391 t392 t393 t394 t395 t396 t397 t398 t399 t400 t401 t402 t403 t404. a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -
21:36:49 <lambdabot> Plugin `more' failed with: thread killed
21:36:53 <monqy> rip
21:36:59 <kallisti> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
21:37:00 <lambdabot> forall a b c d e f g h i j k l m n o p q r s t u v w x y z t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62
21:37:00 <lambdabot> t63 t64 t65 t66 t67 t68 t69 t70 t71 t72 t73 t74 t75 t76 t77 t78 t79 t80 t81 t82 t83 t84 t85 t86 t87 t88 t89 t90 t91 t92 t93 t94 t95 t96 t97 t98 t99 t100 t101 t102 t103 t104 t105 t106 t107 t108 t109
21:37:00 <lambdabot> t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131 t132 t133 t134 t135 t136 t137 t138 t139 t140 t141 t142 t143 t144 t145 t146 t147 t148
21:37:01 <lambdabot> t149 t150 t151 t152 t153 t154 t155 t156 t157 t158 t159 t160 t161 t162 t163 t164 t165 t166 t167 t168 t169 t170 t171 t172 t173 t174 t175 t176 t177 t178 t179 t180 t181 t182 t183 t184 t185 t186 t187
21:37:01 <lambdabot> t188 t189 t190 t191 t192 t193 t194 t195 t196 t197 t198 t199 t200 t201 t202 t203 t204 t205 t206 t207 t208 t209 t210 t211 t212 t213 t214 t215 t216 t217 t218 t219 t220 t221 t222 t223 t224 t225 t226
21:37:02 <lambdabot> [33 @more lines]
21:37:06 <elliott> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
21:37:06 <kallisti> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
21:37:06 <elliott> ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
21:37:07 <lambdabot> parse error (possibly incorrect indentation)
21:37:07 <lambdabot> parse error (possibly incorrect indentation)
21:37:10 <monqy> rip
21:37:12 <kallisti> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
21:37:13 <lambdabot> parse error (possibly incorrect indentation)
21:37:14 <elliott> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
21:37:14 <elliott> ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
21:37:15 <lambdabot> parse error (possibly incorrect indentation)
21:37:17 <elliott> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
21:37:17 <elliott> ,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
21:37:18 <lambdabot> parse error (possibly incorrect indentation)
21:37:18 <kallisti> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
21:37:19 <lambdabot> parse error (possibly incorrect indentation)
21:37:19 <elliott> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
21:37:20 <lambdabot> parse error (possibly incorrect indentation)
21:37:24 <elliott> ,,,,,,,,,,)
21:37:24 <kallisti> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
21:37:25 <lambdabot> parse error (possibly incorrect indentation)
21:37:26 <elliott> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
21:37:27 <lambdabot> parse error (possibly incorrect indentation)
21:37:27 <monqy> no,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
21:37:30 <kallisti> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
21:37:31 <lambdabot> parse error (possibly incorrect indentation)
21:37:31 <elliott> ,)
21:37:33 <elliott> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
21:37:34 <lambdabot> forall a b c d e f g h i j k l m n o p q r s t u v w x y z t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62
21:37:34 <lambdabot> t63 t64 t65 t66 t67 t68 t69 t70 t71 t72 t73 t74 t75 t76 t77 t78 t79 t80 t81 t82 t83 t84 t85 t86 t87 t88 t89 t90 t91 t92 t93 t94 t95 t96 t97 t98 t99 t100 t101 t102 t103 t104 t105 t106 t107 t108 t109
21:37:34 <lambdabot> t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131 t132 t133 t134 t135 t136 t137 t138 t139 t140 t141 t142 t143 t144 t145 t146 t147 t148
21:37:34 <lambdabot> t149 t150 t151 t152 t153 t154 t155 t156 t157 t158 t159 t160 t161 t162 t163 t164 t165 t166 t167 t168 t169 t170 t171 t172 t173 t174 t175 t176 t177 t178 t179 t180 t181 t182 t183 t184 t185 t186 t187
21:37:34 <lambdabot> t188 t189 t190 t191 t192 t193 t194 t195 t196 t197 t198 t199 t200 t201 t202 t203 t204 t205 t206 t207 t208 t209 t210 t211 t212 t213 t214 t215 t216 t217 t218 t219 t220 t221 t222 t223 t224 t225 t226
21:37:36 <lambdabot> [36 @more lines]
21:37:36 <kallisti> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
21:37:38 <elliott> yesss
21:37:38 <lambdabot> parse error (possibly incorrect indentation)
21:37:40 <elliott> i did it
21:37:42 <elliott> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
21:37:42 -!- Ngevd has joined.
21:37:42 <kallisti> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
21:37:43 <lambdabot> parse error (possibly incorrect indentation)
21:37:43 <lambdabot> forall a b c d e f g h i j k l m n o p q r s t u v w x y z t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62
21:37:45 <monqy> "bigest tupel"
21:37:45 <lambdabot> t63 t64 t65 t66 t67 t68 t69 t70 t71 t72 t73 t74 t75 t76 t77 t78 t79 t80 t81 t82 t83 t84 t85 t86 t87 t88 t89 t90 t91 t92 t93 t94 t95 t96 t97 t98 t99 t100 t101 t102 t103 t104 t105 t106 t107 t108 t109
21:37:47 <lambdabot> t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131 t132 t133 t134 t135 t136 t137 t138 t139 t140 t141 t142 t143 t144 t145 t146 t147 t148
21:37:47 <elliott> @more
21:37:49 <lambdabot> t149 t150 t151 t152 t153 t154 t155 t156 t157 t158 t159 t160 t161 t162 t163 t164 t165 t166 t167 t168 t169 t170 t171 t172 t173 t174 t175 t176 t177 t178 t179 t180 t181 t182 t183 t184 t185 t186 t187
21:37:49 <elliott> @more
21:37:50 <Ngevd> Hello!
21:37:51 <lambdabot> t227 t228 t229 t230 t231 t232 t233 t234 t235 t236 t237 t238 t239 t240 t241 t242 t243 t244 t245 t246 t247 t248 t249 t250 t251 t252 t253 t254 t255 t256 t257 t258 t259 t260 t261 t262 t263 t264 t265
21:37:51 <elliott> @more
21:37:53 <lambdabot> t188 t189 t190 t191 t192 t193 t194 t195 t196 t197 t198 t199 t200 t201 t202 t203 t204 t205 t206 t207 t208 t209 t210 t211 t212 t213 t214 t215 t216 t217 t218 t219 t220 t221 t222 t223 t224 t225 t226
21:37:53 <elliott> @more
21:37:54 <monqy> hi
21:37:55 <lambdabot> t266 t267 t268 t269 t270 t271 t272 t273 t274 t275 t276 t277 t278 t279 t280 t281 t282 t283 t284 t285 t286 t287 t288 t289 t290 t291 t292 t293 t294 t295 t296 t297 t298 t299 t300 t301 t302 t303 t304
21:37:55 <elliott> @more
21:37:57 <lambdabot> [36 @more lines]
21:37:57 <elliott> @more
21:37:59 <lambdabot> t305 t306 t307 t308 t309 t310 t311 t312 t313 t314 t315 t316 t317 t318 t319 t320 t321 t322 t323 t324 t325 t326 t327 t328 t329 t330 t331 t332 t333 t334 t335 t336 t337 t338 t339 t340 t341 t342 t343
21:37:59 <elliott> @more
21:38:01 <lambdabot> t344 t345 t346 t347 t348 t349 t350 t351 t352 t353 t354 t355 t356 t357 t358 t359 t360 t361 t362 t363 t364 t365 t366 t367 t368 t369 t370 t371 t372 t373 t374 t375 t376 t377 t378 t379 t380 t381 t382
21:38:01 <elliott> hi
21:38:03 <lambdabot> Plugin `more' failed with: thread killed
21:38:03 <elliott> hi
21:38:05 <elliott> @more
21:38:07 <elliott> :(
21:38:13 <elliott> :t (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
21:38:14 <lambdabot> forall a b c d e f g h i j k l m n o p q r s t u v w x y z t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62
21:38:15 <lambdabot> t63 t64 t65 t66 t67 t68 t69 t70 t71 t72 t73 t74 t75 t76 t77 t78 t79 t80 t81 t82 t83 t84 t85 t86 t87 t88 t89 t90 t91 t92 t93 t94 t95 t96 t97 t98 t99 t100 t101 t102 t103 t104 t105 t106 t107 t108 t109
21:38:15 <lambdabot> t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131 t132 t133 t134 t135 t136 t137 t138 t139 t140 t141 t142 t143 t144 t145 t146 t147 t148
21:38:15 <lambdabot> t149 t150 t151 t152 t153 t154 t155 t156 t157 t158 t159 t160 t161 t162 t163 t164 t165 t166 t167 t168 t169 t170 t171 t172 t173 t174 t175 t176 t177 t178 t179 t180 t181 t182 t183 t184 t185 t186 t187
21:38:15 <lambdabot> t188 t189 t190 t191 t192 t193 t194 t195 t196 t197 t198 t199 t200 t201 t202 t203 t204 t205 t206 t207 t208 t209 t210 t211 t212 t213 t214 t215 t216 t217 t218 t219 t220 t221 t222 t223 t224 t225 t226
21:38:16 <lambdabot> [36 @more lines]
21:38:20 <elliott> @more
21:38:20 <lambdabot> t227 t228 t229 t230 t231 t232 t233 t234 t235 t236 t237 t238 t239 t240 t241 t242 t243 t244 t245 t246 t247 t248 t249 t250 t251 t252 t253 t254 t255 t256 t257 t258 t259 t260 t261 t262 t263 t264 t265
21:38:21 <lambdabot> t266 t267 t268 t269 t270 t271 t272 t273 t274 t275 t276 t277 t278 t279 t280 t281 t282 t283 t284 t285 t286 t287 t288 t289 t290 t291 t292 t293 t294 t295 t296 t297 t298 t299 t300 t301 t302 t303 t304
21:38:22 <lambdabot> t305 t306 t307 t308 t309 t310 t311 t312 t313 t314 t315 t316 t317 t318 t319 t320 t321 t322 t323 t324 t325 t326 t327 t328 t329 t330 t331 t332 t333 t334 t335 t336 t337 t338 t339 t340 t341 t342 t343
21:38:24 <lambdabot> t344 t345 t346 t347 t348 t349 t350 t351 t352 t353 t354 t355 t356 t357 t358 t359 t360 t361 t362 t363 t364 t365 t366 t367 t368 t369 t370 t371 t372 t373 t374 t375 t376 t377 t378 t379 t380 t381 t382
21:38:26 <lambdabot> t383 t384 t385 t386 t387 t388 t389 t390 t391 t392 t393 t394 t395 t396 t397 t398 t399 t400 t401 t402 t403 t404 t405 t406 t407 t408 t409 t410 t411 t412 t413 t414 t415 t416 t417 t418 t419 t420 t421
21:38:28 <lambdabot> [31 @more lines]
21:38:30 <elliott> @more
21:38:30 <lambdabot> t422 t423 t424 t425 t426 t427 t428 t429 t430 t431 t432 t433 t434 t435 t436 t437 t438 t439 t440 t441 t442 t443 t444 t445 t446. a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -
21:38:32 <lambdabot> > p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 ->
21:38:34 <lambdabot> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61 -> t62 -> t63 -> t64 -> t65 -> t66 -> t67 -> t68 -> t69 -> t70 -> t71 -> t72 -> t73 -> t74 -> t75 ->
21:38:36 <lambdabot> t76 -> t77 -> t78 -> t79 -> t80 -> t81 -> t82 -> t83 -> t84 -> t85 -> t86 -> t87 -> t88 -> t89 -> t90 -> t91 -> t92 -> t93 -> t94 -> t95 -> t96 -> t97 -> t98 -> t99 -> t100 -> t101 -> t102 -> t103 ->
21:38:38 <lambdabot> t104 -> t105 -> t106 -> t107 -> t108 -> t109 -> t110 -> t111 -> t112 -> t113 -> t114 -> t115 -> t116 -> t117 -> t118 -> t119 -> t120 -> t121 -> t122 -> t123 -> t124 -> t125 -> t126 -> t127 -> t128 -
21:38:40 <lambdabot> [26 @more lines]
21:38:41 <elliott> @more
21:38:42 <lambdabot> > t129 -> t130 -> t131 -> t132 -> t133 -> t134 -> t135 -> t136 -> t137 -> t138 -> t139 -> t140 -> t141 -> t142 -> t143 -> t144 -> t145 -> t146 -> t147 -> t148 -> t149 -> t150 -> t151 -> t152 -> t153
21:38:44 <lambdabot> -> t154 -> t155 -> t156 -> t157 -> t158 -> t159 -> t160 -> t161 -> t162 -> t163 -> t164 -> t165 -> t166 -> t167 -> t168 -> t169 -> t170 -> t171 -> t172 -> t173 -> t174 -> t175 -> t176 -> t177 ->
21:38:46 <lambdabot> t178 -> t179 -> t180 -> t181 -> t182 -> t183 -> t184 -> t185 -> t186 -> t187 -> t188 -> t189 -> t190 -> t191 -> t192 -> t193 -> t194 -> t195 -> t196 -> t197 -> t198 -> t199 -> t200 -> t201 -> t202 ->
21:38:48 <lambdabot> t203 -> t204 -> t205 -> t206 -> t207 -> t208 -> t209 -> t210 -> t211 -> t212 -> t213 -> t214 -> t215 -> t216 -> t217 -> t218 -> t219 -> t220 -> t221 -> t222 -> t223 -> t224 -> t225 -> t226 -> t227 -
21:38:50 <lambdabot> > t228 -> t229 -> t230 -> t231 -> t232 -> t233 -> t234 -> t235 -> t236 -> t237 -> t238 -> t239 -> t240 -> t241 -> t242 -> t243 -> t244 -> t245 -> t246 -> t247 -> t248 -> t249 -> t250 -> t251 -> t252
21:38:52 <lambdabot> [21 @more lines]
21:38:53 <elliott> @more
21:38:54 <lambdabot> -> t253 -> t254 -> t255 -> t256 -> t257 -> t258 -> t259 -> t260 -> t261 -> t262 -> t263 -> t264 -> t265 -> t266 -> t267 -> t268 -> t269 -> t270 -> t271 -> t272 -> t273 -> t274 -> t275 -> t276 ->
21:38:56 <lambdabot> t277 -> t278 -> t279 -> t280 -> t281 -> t282 -> t283 -> t284 -> t285 -> t286 -> t287 -> t288 -> t289 -> t290 -> t291 -> t292 -> t293 -> t294 -> t295 -> t296 -> t297 -> t298 -> t299 -> t300 -> t301 ->
21:38:58 <lambdabot> t302 -> t303 -> t304 -> t305 -> t306 -> t307 -> t308 -> t309 -> t310 -> t311 -> t312 -> t313 -> t314 -> t315 -> t316 -> t317 -> t318 -> t319 -> t320 -> t321 -> t322 -> t323 -> t324 -> t325 -> t326 -
21:39:00 <lambdabot> > t327 -> t328 -> t329 -> t330 -> t331 -> t332 -> t333 -> t334 -> t335 -> t336 -> t337 -> t338 -> t339 -> t340 -> t341 -> t342 -> t343 -> t344 -> t345 -> t346 -> t347 -> t348 -> t349 -> t350 -> t351
21:39:01 <Ngevd> `addquote <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> :(
21:39:02 <lambdabot> -> t352 -> t353 -> t354 -> t355 -> t356 -> t357 -> t358 -> t359 -> t360 -> t361 -> t362 -> t363 -> t364 -> t365 -> t366 -> t367 -> t368 -> t369 -> t370 -> t371 -> t372 -> t373 -> t374 -> t375 ->
21:39:04 <HackEgo> 803) <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> :(
21:39:04 <lambdabot> [16 @more lines]
21:39:05 <elliott> @more
21:39:06 <lambdabot> t376 -> t377 -> t378 -> t379 -> t380 -> t381 -> t382 -> t383 -> t384 -> t385 -> t386 -> t387 -> t388 -> t389 -> t390 -> t391 -> t392 -> t393 -> t394 -> t395 -> t396 -> t397 -> t398 -> t399 -> t400 ->
21:39:08 <lambdabot> t401 -> t402 -> t403 -> t404 -> t405 -> t406 -> t407 -> t408 -> t409 -> t410 -> t411 -> t412 -> t413 -> t414 -> t415 -> t416 -> t417 -> t418 -> t419 -> t420 -> t421 -> t422 -> t423 -> t424 -> t425 -
21:39:10 <lambdabot> > t426 -> t427 -> t428 -> t429 -> t430 -> t431 -> t432 -> t433 -> t434 -> t435 -> t436 -> t437 -> t438 -> t439 -> t440 -> t441 -> t442 -> t443 -> t444 -> t445 -> t446 -> (a, b, c, d, e, f, g, h, i,
21:39:12 <lambdabot> j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56,
21:39:14 <lambdabot> t57, t58, t59, t60, t61, t62, t63, t64, t65, t66, t67, t68, t69, t70, t71, t72, t73, t74, t75, t76, t77, t78, t79, t80, t81, t82, t83, t84, t85, t86, t87, t88, t89, t90, t91, t92, t93, t94, t95, t96,
21:39:16 <lambdabot> [11 @more lines]
21:39:17 <elliott> Ngevd: u forgot the double space rule :'(
21:39:18 <elliott> @more
21:39:18 <lambdabot> t97, t98, t99, t100, t101, t102, t103, t104, t105, t106, t107, t108, t109, t110, t111, t112, t113, t114, t115, t116, t117, t118, t119, t120, t121, t122, t123, t124, t125, t126, t127, t128, t129,
21:39:20 <lambdabot> t130, t131, t132, t133, t134, t135, t136, t137, t138, t139, t140, t141, t142, t143, t144, t145, t146, t147, t148, t149, t150, t151, t152, t153, t154, t155, t156, t157, t158, t159, t160, t161, t162,
21:39:22 <lambdabot> t163, t164, t165, t166, t167, t168, t169, t170, t171, t172, t173, t174, t175, t176, t177, t178, t179, t180, t181, t182, t183, t184, t185, t186, t187, t188, t189, t190, t191, t192, t193, t194, t195,
21:39:24 <lambdabot> t196, t197, t198, t199, t200, t201, t202, t203, t204, t205, t206, t207, t208, t209, t210, t211, t212, t213, t214, t215, t216, t217, t218, t219, t220, t221, t222, t223, t224, t225, t226, t227, t228,
21:39:26 <lambdabot> t229, t230, t231, t232, t233, t234, t235, t236, t237, t238, t239, t240, t241, t242, t243, t244, t245, t246, t247, t248, t249, t250, t251, t252, t253, t254, t255, t256, t257, t258, t259, t260, t261,
21:39:27 <Ngevd> `delquote 803
21:39:28 <lambdabot> [6 @more lines]
21:39:30 <elliott> @more
21:39:30 <lambdabot> t262, t263, t264, t265, t266, t267, t268, t269, t270, t271, t272, t273, t274, t275, t276, t277, t278, t279, t280, t281, t282, t283, t284, t285, t286, t287, t288, t289, t290, t291, t292, t293, t294,
21:39:31 <HackEgo> ​*poof* <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> :(
21:39:32 <lambdabot> t295, t296, t297, t298, t299, t300, t301, t302, t303, t304, t305, t306, t307, t308, t309, t310, t311, t312, t313, t314, t315, t316, t317, t318, t319, t320, t321, t322, t323, t324, t325, t326, t327,
21:39:34 <lambdabot> t328, t329, t330, t331, t332, t333, t334, t335, t336, t337, t338, t339, t340, t341, t342, t343, t344, t345, t346, t347, t348, t349, t350, t351, t352, t353, t354, t355, t356, t357, t358, t359, t360,
21:39:36 <lambdabot> t361, t362, t363, t364, t365, t366, t367, t368, t369, t370, t371, t372, t373, t374, t375, t376, t377, t378, t379, t380, t381, t382, t383, t384, t385, t386, t387, t388, t389, t390, t391, t392, t393,
21:39:38 <lambdabot> t394, t395, t396, t397, t398, t399, t400, t401, t402, t403, t404, t405, t406, t407, t408, t409, t410, t411, t412, t413, t414, t415, t416, t417, t418, t419, t420, t421, t422, t423, t424, t425, t426,
21:39:40 <lambdabot> t427, t428, t429, t430, t431, t432, t433, t434, t435, t436, t437, t438, t439, t440, t441, t442, t443, t444, t445, t446)
21:39:42 <elliott> relief
21:39:49 <elliott> "god bless"
21:39:55 <elliott> hi oerjan
21:40:16 <Ngevd> `addquote <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> :(
21:40:19 <HackEgo> 803) <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> :(
21:40:23 <elliott> wh
21:40:28 <elliott> thats not 2 spaec.s.
21:40:36 <elliott> thats 3
21:40:37 <Ngevd> 3 is greater than 2
21:40:46 <Ngevd> > 3 > 2
21:40:47 <lambdabot> True
21:40:55 <Ngevd> See, even lambdabot agrees with me
21:40:59 <elliott> :'(
21:41:02 <elliott> you are bad man
21:42:32 <oerjan> `run sed -i '803/ */ /g' quotes
21:42:36 <HackEgo> sed: -e expression #1, char 4: unknown command: `/'
21:42:40 <oerjan> `run sed -i '803s/ */ /g' quotes
21:42:43 <HackEgo> No output.
21:42:52 <oerjan> `quote 803
21:42:56 <HackEgo> 803) <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> @more <elliott> :(
21:43:46 <elliott> oerjan patriot
21:43:51 <elliott> soul patriot
21:44:31 <elliott> DEAR THREE PEOPLE UPVOTE ME PLEASE
21:44:43 <elliott> U ONLY HAVE 2 HOURS 36 MINUTES TO DO SO :(
21:45:02 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:45:09 <Ngevd> Where at?
21:45:18 <Ngevd> `karma + elliott
21:45:20 <elliott> no not you that would be cheating
21:45:25 <HackEgo> ​+ elliott has 0 karma.
21:45:29 <elliott> rip + elliott
21:45:33 <elliott> "missed"
21:46:02 <Ngevd> But us 3 Hexhamers have got to stick together
21:46:10 <Ngevd> OTHERWISE THEY HAVE ALREADY WON
21:46:20 <Ngevd> THEY BEING PHANTOM_HOOVER, primarily.
21:46:25 <elliott> 3
21:46:30 <Ngevd> 3.
21:46:35 <Ngevd> You, me, and facekicker
21:46:40 <Ngevd> But nobody likes facekicker
21:47:16 <oerjan> and phantoms cannot be kicked, anyway
21:47:24 <Ngevd> Hoovers can
21:48:09 <Ngevd> Also, I've written the beginnings of an implementation of a kind of combinatory logic program in Haskell
21:49:07 -!- oerjan has set topic: lambdabot crushes previous #esoteric spam record; ops "dare not kick it" | http://codu.org/logs/_esoteric/.
21:49:19 <elliott> dude
21:49:20 <elliott> who the fuck
21:49:23 <elliott> puts two spaces after a ;
21:49:25 -!- oerjan has set topic: lambdabot crushes previous #esoteric spam record, ops "dare not kick it" | http://codu.org/logs/_esoteric/.
21:49:26 <elliott> you fucking monster
21:49:27 <elliott> thank you
21:49:32 <Ngevd> http://hpaste.org/56454
21:49:49 <elliott> --eval does not detect endless loops!
21:49:53 <elliott> here i was expecting it to
21:50:10 <elliott> Ngevd: btw you might want to make step be
21:50:14 <elliott> Expression -> Maybe Expression
21:50:19 <elliott> using Nothing for the identity case
21:50:28 <elliott> because currently eval treats a terminated program and a one-step infinite loop as the same
21:50:33 <Ngevd> That comment was more of a "Taneb, you wrote this, dammit, don't be stupid"
21:50:40 <Ngevd> Hmm
21:51:20 <elliott> producing: eval a = maybe a eval (step a)
21:53:02 <Ngevd> Thanks!
21:53:51 <kallisti> Ngevd: this is what I ended up doing with my LC evaluator
21:53:58 <oerjan> Ngevd: i think A could do with being renamed to an infixl operator constructor
21:54:01 <kallisti> the Nothing case was when a beta reduction couldn't be performed.
21:54:06 <elliott> it's not exactly an uncommon technique :P
21:54:08 <elliott> oerjan: yes indeed
21:54:10 <elliott> :$ or similar
22:00:18 <oerjan> 10:31:48: <HackEgo> 617) <shachaf> elliott: GHC bug? Come on, it's the parentheses. <shachaf> The more parentheses you add, the closer it is to LISP, and therefore the more dynamically-typed. \ 663) <shachaf> Real Tar is GNU tar. <shachaf> You just ignore whichever features don't make you feel superior enough. \ 701) <shachaf> VMS Mosaic? <shachaf> I hope that's not Mosaic ported to VMS. <shachaf> Hmm. It's Mosaic ported to VMS.
22:00:25 <oerjan> 10:32:03: <shachaf> Those quotes are terrible.
22:00:28 <oerjan> I DISAGREE
22:00:32 <oerjan> hth
22:00:44 <shachaf> `quote oerjan
22:00:48 <HackEgo> 7) <oerjan> what, you mean that wasn't your real name? <Warrigal> Gosh, I guess it is. I never realized that. \ 17) <oerjan> ehird has gone insane, clearly. \ 19) <fungot> oerjan: are you a man, if there weren't evil in this kingdom to you! you shall find bekkler! executing program. please let me go... put me out! he's really a tricycle! pass him! \ 22) <oerjan> In an alternate universe, ehird has taste \ 23) IN AN
22:00:49 <oerjan> also that was longer than i thought
22:00:59 <shachaf> elliott: You're rank 31 on StackOverflow this month.
22:01:05 <Ngevd> `quote Ngevd
22:01:08 <HackEgo> 649) <Ngevd> Dammit, Gregor, this is not the time to fall in love \ 655) [in the context of Open University] <Ngevd> "Unlike other operating systems, Linux operating systems use Linux" \ 658) <fungot> Ngevd:. i'm so kind, even to assholes! anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov \ 660) <Phantom__Hoover> Also you steal Berwick from us and then
22:01:18 <shachaf> I'd like to point out how there are 30 numbers that are smaller than 31.
22:01:35 <shachaf> Where "number" means "integer greater than 0", of course.
22:01:42 <oerjan> shachaf: excuse me, are you trying to get elliott to kill himself? that's a bannable offense, you know.
22:02:07 <shachaf> elliott: Did you know StackOverflow has non-Haskell-related questions?
22:02:07 -!- coppro has quit (Ping timeout: 252 seconds).
22:02:14 <shachaf> Just imagine all those great C++ answers you could be writing!
22:02:34 <monqy> all the
22:02:35 <monqy> c++ rep
22:02:41 <monqy> you could be getting
22:03:20 <shachaf> monqy: REP IS REP.
22:03:30 <Gregor> But C++ rep is dirty rep.
22:03:34 <Gregor> It'll make you feel unclean.
22:03:44 <shachaf> Also, you have a bunch of badges, but not a single one of them is a gold badge.
22:03:55 <oerjan> maybe there's an agda or coq section
22:03:56 <monqy> just imagine
22:03:58 <monqy> all the c++ badges
22:04:15 <itidus21> if c++ was good enough on it's own i think i never would have ended up in here
22:05:01 <oerjan> so you are saying it's good that c++ is bad?
22:05:39 <oerjan> otoh if c++ was good enough on it's own, this channel might actually use it for more stuff
22:05:40 <itidus21> it is necessary to have a 4 between 3 and 5 to keep them in their place
22:06:28 * oerjan recalls that 4 is the only non-prime exponent you need to check to prove fermat's last theorem
22:07:04 <monqy> itidus21: true wisdom
22:07:06 <oerjan> fermat did prove that one, at least
22:07:27 <oerjan> i think he did write up 3 and 4
22:07:42 <shachaf> IF C++ WAS GOOD ENOUGH FOR FERMAT, IT'S GOOD ENOUGH FOR ME
22:07:42 <oerjan> *proofs for
22:07:49 <itidus21> monqy: such things depress me but oh well.. thats good too
22:07:56 -!- Phantom_Hoover has joined.
22:08:09 <oerjan> if c++ had been around when fermat lived, would civilization have prospered this far?
22:08:13 <itidus21> a bit of sad gives purpose to the blues
22:08:21 <monqy> itidus21: must there exist something between 3 and 4
22:08:25 <monqy> itidus21: and between 4 and 5
22:08:28 <monqy> ??
22:08:42 -!- coppro has joined.
22:08:43 <elliott> OK only two more required.
22:08:55 <elliott> One per hour, I'm counting on you imaginary, non-present guys.
22:08:58 <Ngevd> Aaaah
22:08:59 <Ngevd> Hahaha
22:09:03 <elliott> <shachaf> elliott: Did you know StackOverflow has non-Haskell-related questions?
22:09:08 <elliott> shachaf: I even answered one (1).
22:09:10 <Ngevd> Maybe being a Functor is probably of use to me!
22:09:13 <Ngevd> Hahahahahah!
22:09:16 <Ngevd> Hahahahahah!
22:09:19 <monqy> Ngevd: hi
22:09:24 <monqy> hi negvfd
22:09:25 <itidus21> monqy: that hurts my brai
22:09:26 <itidus21> n
22:09:46 <elliott> bran
22:09:47 <monqy> itidus21: the truth can be painful
22:09:49 <elliott> hurts bran flakes
22:09:53 <elliott> "apin"
22:09:54 <elliott> "pain"
22:09:58 <monqy> "ow"
22:09:59 <Ngevd> > "Ha" ++ concat $ repeat "ha"
22:10:00 <monqy> "ch"
22:10:00 <lambdabot> Couldn't match expected type `[GHC.Types.Char]'
22:10:00 <lambdabot> against inferred ty...
22:10:04 <oerjan> Ngevd: yep, it fits well in that last case
22:10:29 <Ngevd> > "Ha" ++ (concat $ repeat "ha")
22:10:31 <lambdabot> "Hahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaha...
22:10:36 <oerjan> er second last
22:10:37 <itidus21> 4 is necessary -> truth -> painful -> sad -> blues -> fulfilled musicians -> fulfilled sodder
22:10:37 <shachaf> > 'H':cycle"ah"
22:10:38 <lambdabot> "Hahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaha...
22:10:44 <monqy> > const "Ha" ++ concat $ repeat "ha"
22:10:46 <lambdabot> "Hahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaha...
22:11:03 <Phantom_Hoover> Oh god is iti trying to maths.
22:11:16 <itidus21> i accidently the maths
22:11:21 <monqy> "oops"
22:11:59 <Phantom_Hoover> oh no the maths
22:12:03 <Phantom_Hoover> it is all over the floor
22:12:04 <oerjan> maths is like the anti-itidus. which means if he actually learned it, he would become superhuman.
22:12:17 <monqy> or nothing
22:12:22 <Phantom_Hoover> More likely, he'd explode and take out half of Australasia.
22:12:22 <monqy> he would vanish or explode
22:12:41 <elliott> Phantom_Hoover: *Australia, assuming you're trying to refer to the continent.
22:12:41 <monqy> like a ghost or a nasty bomb
22:12:51 <elliott> (Australasia is still the general region, though.)
22:13:14 <monqy> itidus21: are you a ghost
22:13:22 <itidus21> now wheres my kim jong il style jacket
22:13:23 <Phantom_Hoover> I mean the general region
22:13:29 <elliott> Phantom_Hoover: You ruined my pedantry :'(
22:13:35 <Phantom_Hoover> It was vaporised.
22:14:14 <Ngevd> Oh god I'm actually laughing my head off in a figurative sense up
22:14:22 <Ngevd> It was literal until the word "off"
22:14:30 <elliott> hi
22:14:35 <monqy> I'm literally laughing my head
22:14:48 <elliott> im literally (in possession of a) head
22:14:59 <monqy> litteraly
22:15:01 <itidus21> i accidently my head
22:15:06 <monqy> oops
22:16:04 <itidus21> in A.D. 2101, war was beginning... unlike.. the other years when there wasn't a war beginning
22:16:39 <oerjan> 11:46:37: <elliott> -NickServ- Last failed attempt from: elliott_!~elliott@c-69-181-214-206.hsd1.ca.comcast.net on Jan 13 15:34:34 2012.
22:16:42 <oerjan> 11:46:40: <elliott> WHO THE FUCK ARE YOU
22:16:44 <oerjan> an oster imp
22:16:59 <itidus21> lol
22:17:26 <oerjan> which leads us to the question, is there any known year in which no war began
22:17:49 <itidus21> is there any known year in which no war began -> truth -> painful -> sad -> blues -> fulfilled musicians -> fulfilled sodder
22:17:58 <itidus21> hehe. see the math works
22:18:13 <Ngevd> http://hpaste.org/56456
22:18:22 <oerjan> i recall something anecdote about there being only 200 days or so when there wasn't a war, but there could still be a year in which wars only _continued_
22:18:23 <olsner> oerjan: presumably every year before 2mya or something
22:19:44 <zzo38> Even though my Internet Quiz Engine is gopher-based, uploading is done using sprunge.
22:20:17 <oerjan> Ngevd: i think you _can_ declare :$ in an infix manner as well, but what you wrote works fine
22:20:49 <oerjan> also i don't think you are using Control.Monad anywhere
22:20:52 <Ngevd> fmap
22:20:58 <oerjan> is in Prelude
22:21:04 <Ngevd> Ooh, even better
22:21:06 -!- ais523_ has joined.
22:21:06 <Ngevd> :D
22:21:17 <Ngevd> ais523_, join me in my happiness!
22:21:28 -!- ais523 has quit (Disconnected by services).
22:21:30 <ais523_> Ngevd: at what?
22:21:32 -!- ais523_ has changed nick to ais523.
22:21:39 <Ngevd> Haskell being magic!
22:21:45 <Ngevd> Hehehehe
22:22:07 <Ngevd> I'm probably sufficiently sane to live out my daily life!
22:22:24 * oerjan envious
22:23:10 -!- Taneb has joined.
22:23:11 <oerjan> :t maybe
22:23:12 <lambdabot> forall b a. b -> (a -> b) -> Maybe a -> b
22:23:24 * Taneb envious too
22:24:17 <monqy> hm, the language list bots got B
22:24:28 <Taneb> I'm just going to stay here for a bit
22:24:54 <tswett> oerjan: technically, you don't need to check anything to prove Fermat's last theorem.
22:25:13 <tswett> Fermat's last theorem follows trivially from the Fermat-Wiles theorem.
22:25:28 <Ngevd> Hmm, I'm on a different server to me.
22:25:29 <Taneb> This means I'm safer from netsplits?
22:25:42 <monqy> what's safer?
22:26:00 <Ngevd> Netsplits are less likely to significantly hinder me
22:26:01 <oerjan> tswett: oooooooooooooooooh
22:26:02 <monqy> you could exist on both sides at once, but is that really safe?
22:26:19 <Taneb> It's safe because my laptop probably won't itself split
22:26:24 <oerjan> oh no, the Ngevd's are budding
22:27:33 <elliott> Ngevd: very nice
22:27:35 -!- sebbu2 has joined.
22:27:36 -!- sebbu2 has quit (Changing host).
22:27:36 -!- sebbu2 has joined.
22:27:38 <oerjan> *-'
22:28:12 <elliott> <oerjan> which leads us to the question, is there any known year in which no war began
22:28:12 -!- iconmaster has joined.
22:28:23 <elliott> oerjan: presumably before civilisation is a safe bet
22:28:37 -!- iconmaster has quit (Client Quit).
22:28:38 <elliott> i guess you have to go back pretty far for the groups to be too small for it to be called war
22:28:46 <oerjan> Taneb: ah but it's safe only until you start noticing how the messages on each server are subtly different, at which time your curiosity will cause you to foolishly investigate...
22:29:15 <Taneb> oerjan: hmm... where's my Kindle?
22:29:19 <oerjan> elliott: i'm sorry, you have already been outsweded
22:29:30 <elliott> oerjan: waht
22:29:44 <oerjan> <olsner> oerjan: presumably every year before 2mya or something
22:29:48 <elliott> <olsner> oerjan: presumably every year before 2mya or something
22:29:49 <elliott> oh,e
22:29:54 <elliott> creys
22:30:02 <olsner> <oerjan> <olsner> oerjan: presumably every year before 2mya or something
22:30:08 <elliott> creys
22:30:09 <monqy> ;_---____;
22:30:11 <Ngevd> Outnorwegianed alsi
22:30:15 <Ngevd> s/i/o/
22:30:16 <oerjan> <olsner> <oerjan> <olsner> oerjan: presumably every year before 2mya or something
22:30:25 <olsner> <oerjan> <olsner> <oerjan> <olsner> oerjan: presumably every year before 2mya or something
22:30:26 <Ngevd> s/oa/ia/
22:30:54 <elliott> creys
22:31:25 <monqy> hello oelsnerjan, helloelsnerjan
22:31:35 <oerjan> hellonqy
22:32:03 <Taneb> Hello, Ngevd
22:32:08 <Ngevd> Hello, Taneb
22:33:05 <monqy> tangevd
22:33:25 <itidus21> so although it's not right for me to suggest something i will never do among the company of those who might, i just imagined a dictionary file full of the names of programming languages being fed through the random machine
22:34:39 <Ngevd> Well, I've added the code for the iota combinator
22:34:46 <Ngevd> step (U :$ a) = Just (a :$ S :$ K)
22:34:49 <oerjan> <elliott> oerjan logreading: i'm definitely leaning on the side of just really dumb <-- dammit
22:35:27 <oerjan> the theory that mine and elliott's ideas of what constitutes trolling has no overlap gains further evidence.
22:35:37 <monqy> itidus21: eh?
22:36:03 <itidus21> monqy: that bot which has lists of words and can emit made up words
22:36:32 <oerjan> *have
22:36:39 <monqy> only kallisti can make your dream come true
22:36:58 <itidus21> hmm..
22:37:02 <oerjan> kallisti: you don't want to crush itidus21's dreams do you?
22:37:15 <itidus21> i'll dig up some dirt on the matter at a later occasion
22:37:36 <kallisti> itidus21: hello
22:37:50 <kallisti> I am the official word generator technician.
22:37:52 <kallisti> how may I help you.
22:37:54 <kallisti> ?
22:37:59 <itidus21> kallisti: ok so i was thinking of a word list of programming languages
22:38:14 <kallisti> okay. give me one and I'll see what I can do!
22:38:23 <kallisti> I'll have to use very complex algorithms to add it to the existing word generator.
22:38:23 <itidus21> what sort of format?
22:38:24 <monqy> it generates the words from the programming languages themselves
22:38:28 <kallisti> itidus21: words. on lines.
22:38:31 -!- Phantom_Hoover has quit (*.net *.split).
22:38:32 -!- Madoka-Kaname has quit (*.net *.split).
22:38:32 -!- Sgeo has quit (*.net *.split).
22:38:32 -!- Nisstyre has quit (*.net *.split).
22:38:32 -!- sebbu has quit (*.net *.split).
22:38:46 <itidus21> \n or \r\n or its not too important eh
22:38:59 <elliott> back
22:39:02 <elliott> <oerjan> <elliott> oerjan logreading: i'm definitely leaning on the side of just really dumb <-- dammit
22:39:02 <elliott> <oerjan> the theory that mine and elliott's ideas of what constitutes trolling has no overlap gains further evidence.
22:39:13 <elliott> oerjan: well otoh i consider that level of idiocy just as disruptive
22:39:13 <itidus21> obviously you can handle that side of things
22:39:24 <monqy> Taneb, Ngevd: good job on the netsplit
22:39:42 <elliott> oerjan: it has, after all, been my long-standing position that the "true motives" behind actions don't matter from a moderation perspective, just the disruption caused
22:39:45 <Taneb> Well, we're on the bigger side
22:39:51 <itidus21> kallisti: so i meant the names of the languages and not their keywords
22:40:00 <itidus21> ^_^;;
22:40:14 <monqy> itidus21: may I ask why this idea interests you?
22:40:23 <zzo38> Maybe is a Functor, is of use, that it is MonadPlus: head x <$ guard (x /= []) is an example of its use
22:40:26 <itidus21> because i'm a sick son of a bitch
22:40:28 <kallisti> oerjan: this is why elliott should never be op because he'll just ban people on the grounds that "they're stupid"
22:40:32 <monqy> itidus21: oh
22:41:10 <kallisti> itidus21: the newline style does not matter as long as it conforms to perl's notion of what is a "line"
22:41:32 <elliott> kallisti: it sounds like you might be bitter
22:41:51 <kallisti> elliott: hmm? about what?
22:41:51 <elliott> kallisti: but to pre-empt what you're thinking, no, you're not quite as stupid as roper
22:42:06 <kallisti> elliott: you've gotta be careful with that preemption stuff, man
22:42:10 -!- Taneb has quit (Quit: Bye!).
22:42:11 <oerjan> <kallisti> I'll have to use very complex algorithms to add it to the existing word generator. <-- soon we will gain the supreme technologies of Forlang, Algoth and Hascal!
22:42:20 <Ngevd> His home planet needed him
22:42:25 <elliott> rip taneb
22:42:32 <elliott> killed by death
22:42:41 <monqy> bye :'(
22:42:46 <olsner> deathed all the way to killedness
22:43:01 -!- Sgeo has joined.
22:43:03 -!- Madoka-Kaname has joined.
22:43:33 -!- Nisstyre has joined.
22:43:53 <zzo38> Is the Internet Quiz Engine understandable to you? There were a few mistakes but I fixed them
22:44:17 <kallisti> elliott: being called an idiot does get tiresome, I guess. But I wasn't really referencing that.
22:44:27 <kallisti> elliott: I was just taking what you said literally.
22:44:48 <kallisti> that you would ban people on the grounds of "disruptive stupidity"
22:44:49 <Ngevd> The next challenge is of course try :: Expression -> Maybe Integer
22:45:50 <oerjan> Ngevd: wat
22:46:12 <Ngevd> What I like to call Secularization
22:46:17 <monqy> eh?
22:46:21 <oerjan> Ngevd: wat
22:46:26 <monqy> what would try do
22:46:30 <elliott> http://vimeo.com/34949864 THIS IS REALLY COOL (briefly nsfw)
22:46:34 <Ngevd> Turning a church numeral into a number
22:49:01 <elliott> I DON'T THINK ANYONE REALISES HOW COOL THAT IS
22:49:10 <kallisti> I'm not entirely sure what's going on
22:49:30 <kallisti> it made sense when it was going through galaxies and stars and stuff
22:49:46 <kallisti> but how does it decide where to go on all this other shit.
22:49:51 <elliott> kallisti: what?
22:49:58 <elliott> it's just using tineye or google similar-image search or whatever
22:50:00 <elliott> recursively
22:50:13 <kallisti> recursing on what?
22:50:20 <elliott> ...............
22:50:31 <elliott> im going to buy you a dictionary and point to the definition of recursion for you
22:50:44 <monqy> omg kallisti
22:50:54 <monqy> how
22:50:57 <kallisti> ??
22:51:01 <kallisti> there has to be a thing
22:51:03 <kallisti> it's recursively searching
22:51:04 <kallisti> what is it.
22:51:08 <elliott> dude
22:51:09 <kallisti> other text on the web page?
22:51:10 <elliott> it searches
22:51:11 <elliott> the last image
22:51:12 <elliott> you idiot
22:51:19 <elliott> that's
22:51:20 <monqy> it';s
22:51:21 <elliott> what recursion means
22:51:21 <kallisti> oh similar-image search
22:51:22 <monqy> search by image
22:51:24 <elliott> YES I SAID THAT
22:51:27 <elliott> <elliott> it's just using tineye or google similar-image search or whatever
22:51:28 <kallisti> YES YOU DID
22:51:29 <kallisti> I SEE
22:51:32 <kallisti> I WAS THINKING
22:51:32 <kallisti> TEXT
22:51:33 <kallisti> IMAGE
22:51:36 <kallisti> HAHAHAHAHA CAPS LOCK
22:51:38 <monqy> ha
22:51:39 <elliott> yeah that's why it says
22:51:41 <elliott> search by image
22:51:42 <elliott> in the title
22:51:44 <elliott> and at the start of the video
22:52:04 <kallisti> indeed
22:52:33 <itidus21> i stopped it so i don't scramble my brains
22:52:51 <monqy> what's so scrambling about it
22:53:43 <itidus21> im just in a mood for not thinking
22:54:00 <monqy> there's really not that much to think about
22:56:16 -!- itidus21 has left ("Leaving").
22:56:50 <monqy> :(
22:56:56 -!- kallisti_ has joined.
22:57:29 <oerjan> i don't see why should afraid brains srcamleb 'mi prctlefely nfie
22:58:02 <oerjan> l-*
22:58:22 <kallisti_> everything is related to something that's related to something that's related to something that's ....
22:58:28 <kallisti_> elliott: woah dude
22:58:32 <kallisti_> so deep
22:58:39 -!- kallisti has quit (Ping timeout: 244 seconds).
22:59:07 <oerjan> > var $ "everything i" ++ cycle "s related to something that'"
22:59:09 <lambdabot> everything is related to something that's related to something that's relat...
22:59:16 <kallisti_> so for example: the universe is indirectly related to tits.
22:59:27 <kallisti_> and then celebrities and stuff.
22:59:30 <kallisti_> and then knives and guns
22:59:43 <kallisti_> (or however the sequence went)
23:00:04 -!- kallisti_ has changed nick to kallisti.
23:00:13 -!- kallisti has quit (Changing host).
23:00:13 -!- kallisti has joined.
23:00:30 -!- Phantom_Hoover has joined.
23:00:59 <kallisti> Phantom_Hoover: hello unaffiliated/phantom-hoover/x-3377486
23:01:29 <Phantom_Hoover> Hello kallisti (also try my VERSION string!)
23:02:18 <monqy> good xchat reply
23:02:28 <kallisti> monqy: bad xchat everything
23:02:44 <oerjan> Phantom_Hoover: the linux in the VERSION reply ruins it a bit
23:02:53 <Phantom_Hoover> Yes, xchat is terrible.
23:02:58 <Phantom_Hoover> It was so perfect, too.
23:08:51 <Ngevd> Wolfram Alpha allows SI prefixes all over the place http://www.wolframalpha.com/input/?i=1+nano+light+year+in+megasmoots
23:11:05 <Phantom_Hoover> Whoa, YouTube sells film views now?
23:11:28 <Ngevd> Has done for a few months
23:11:46 <kallisti> wolfram alpha does not detect what "mega Burger King hamburger" means
23:12:18 <zzo38> There are a lot of things Wolfram Alpha does not understand
23:12:45 <kallisti> http://www.wolframalpha.com/input/?i=calories+in+1+million+solar+masses+of+burger+king+hamburgers
23:12:52 <kallisti> if I explicitly specify 1 million though it works.
23:15:23 <Gregor> OOOH OOOOH CHECK MY VERSION STRING
23:15:27 <Gregor> IT'S THE GREETEST
23:15:30 <elliott> Phantom_Hoover: I get no response :'(
23:15:44 <zzo38> There is three responses
23:15:57 <monqy> kallisti: http://www.wolframalpha.com/input/?i=burger+%28surname%29
23:16:14 <kallisti> monqy burger
23:18:39 <kallisti> !perl package Foo; use base 'List::Util'; print sum(1,2,3)
23:18:41 <EgoBot> Undefined subroutine &Foo::sum called at /tmp/input.23990 line 1.
23:18:46 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
23:18:51 <kallisti> !perl package Foo; use base 'List::Util'; print Foo->sum(1,2,3)
23:18:51 <EgoBot> 6
23:18:54 <kallisti> ha ha Perl OO
23:19:17 <monqy> perl......
23:20:16 <kallisti> !perl package 1;
23:20:17 <EgoBot> syntax error at /tmp/input.24083 line 1, near "package 1" \ Execution of /tmp/input.24083 aborted due to compilation errors.
23:20:21 <kallisti> !perl package Foo1;
23:20:21 <EgoBot> No output.
23:20:33 <kallisti> !perl "foo1" + 1
23:20:33 <EgoBot> No output.
23:20:34 -!- cheater has joined.
23:20:38 <kallisti> !perl "foo 1" + 1
23:20:38 <EgoBot> No output.
23:20:44 <kallisti> !perl print "foo1" + 1
23:20:45 <EgoBot> 1
23:21:00 <kallisti> !perl print "f_1" + 1
23:21:00 <EgoBot> 1
23:21:03 <kallisti> hm
23:21:05 <kallisti> oh well
23:21:18 -!- Ngevd has quit (Quit: Goodbye).
23:22:01 <kallisti> !perl print int {1,2,3}
23:22:01 <EgoBot> 139976956599624
23:22:18 <tswett> Hm. It wouldn't be too hard to create a model of a diode sort of like noit o' mnain worb.
23:23:05 <zzo38> One thing Wolfram|Alpha doesn't understand is ecliptic coordinates.
23:23:09 <tswett> Have a two-dimensional grid. Every point on the grid is one of four materials: rubber, metal, p-silicon, or n-silicon.
23:23:09 <kallisti> oh hi that means brow nianm 'o tion
23:23:18 <tswett> Yeah.
23:23:40 -!- primo has joined.
23:23:47 <oerjan> `addquote <kmc> has there been any work towards designing programming languages specifically for stoned people
23:23:52 <HackEgo> 804) <kmc> has there been any work towards designing programming languages specifically for stoned people
23:23:54 <tswett> There are two types of objects that are allowed to diffuse across the grid: electrons, and holes.
23:23:59 <zzo38> Maybe we can work together making a free and open source system with some similar to Wolfram|Alpha, possibly Haskell based but with macros and stuff
23:24:10 <tswett> Electrons can only diffuse through metal and n-silicon; holes can only diffuse through metal and p-silicon.
23:24:17 <tswett> If an electron and a hole are ever adjacent, they both disappear.
23:25:03 <primo> i should have paid more attention in particile physics o.O
23:25:23 <elliott> particile
23:25:36 <primo> s/cil/cl/
23:25:43 <kallisti> part pickle
23:26:31 <primo> at least kallisti confirms that i'm not the only one who has no idea what's being said :p
23:26:52 <oerjan> primo: these holes are not actually particles
23:27:13 <kallisti> primo: that's because you didn't catch my SUBTLE REFERENCE
23:27:14 <oerjan> they are rather a lack of an electron
23:27:31 <elliott> oerjan: but what is an electron
23:27:32 <tswett> They're particles in this model.
23:27:33 <elliott> but a lack of hole????
23:27:56 <oerjan> elliott: woooooooooooooooooooooow man
23:28:26 <elliott> i think we are proving that the design of programming languages specifically for stoned people is going on all day, in here
23:28:30 <elliott> and we just don't realise it
23:28:44 <kallisti> totally, dude.
23:29:00 <monqy> the universe is a programming language for stoned people
23:29:16 <elliott> monqy: whoOOOOOAoAOAOAAAAAAAAAAAAAAAAAAAAAAAAaao
23:29:28 <olsner> like wow
23:29:32 <kallisti> monqy: you're freakin' me out man
23:30:00 <elliott> wait
23:30:00 <elliott> wait
23:30:01 <elliott> guys
23:30:02 <monqy> i only wish mathnerd314 could teach me his ways
23:30:03 <elliott> what is a universe
23:30:07 <elliott> but a lack of a non-universe
23:30:13 * elliott STONED 420
23:30:45 <monqy> what is a non-universe but lack of a universe
23:31:00 <elliott> w
23:31:01 <elliott> hoaaaaa
23:31:27 <kallisti> what is a lack but a lack of non-lack
23:31:33 <elliott> what is what
23:31:37 <elliott> but the lack of a non-what
23:31:41 <kallisti> a lack of non-w--
23:31:45 <elliott> a lack
23:31:46 <elliott> of non-WHOAAAA
23:31:49 <elliott> because
23:31:51 <elliott> there is a whoaaa
23:31:52 <elliott> in response to this
23:31:54 <kallisti> totally dude
23:32:00 <monqy> what is a whoa
23:32:04 <elliott> whoa
23:32:07 <kallisti> what is not but a lack of a not-lack of not-not
23:32:08 <monqy> whoa
23:32:19 <primo> you guys were almost making sense for a while
23:32:34 <kallisti> er oops
23:32:42 <kallisti> what is not but a lack of a not-lack of a lack of not-not
23:32:45 <elliott> primo: you must have been imagining things
23:33:05 <elliott> kallisti: im stoned 421 after that :(
23:33:08 <oerjan> ^ul (WH)S((O)(A))(~:^:S*a~^~*a*~:^):^
23:33:08 <fungot> WHAAOAOOAAOOAOAAOAOOAOAAOOAAOAOOAAOOAOAAOOAAOAOOAOAAOAOOAAOOAOAAOAOOAOAAOOAAOAOOAOAAOAOOAAOOAOAAOOAAOAOOAAOOAOAAOAOOAOAAOOAAOAOOAAOOAOAAOOAAOAOOAOAAOAOOAAOOAOAAOOAAOAOOAAOOAOAAOAOOAOAAOOAAOAOOAOAAOAOOAAOOAOAAOAOOAOAAOOAAOAOOAAOOAOAAOOAAOAOOAOAAOAOOAAOOAOAAOAOOAOAAOOAAOAOOAOAAOAOOAAOOAOAAOOAAOAOOAAOOAOAAOAOOAOAAOOAAOAOOAOAA ...too much output!
23:33:14 <elliott> whsoa
23:33:25 <elliott> is that thue-morse
23:33:36 <oerjan> nah fibonacci
23:33:39 <elliott> whaaoaooaaooa
23:34:06 <oerjan> or wait hm
23:34:24 <primo> sad realization: the epiphanies one often has while stoned are merely the product of the dunning kruger effect :\
23:34:33 <oerjan> i think i somehow mixed them up
23:35:30 <elliott> primo: also the effect of: stoned
23:35:34 <elliott> *product of
23:35:43 <oerjan> which means it's thue-morse with one char missing
23:36:01 <elliott> oerjan: rip char
23:37:01 <tswett> So, about sequences such that for every factor F, there exists a length n such that every factor G whose length is at least n has F as a subfactor.
23:37:26 <tswett> Things like Sturmian words and the Thue-Morse sequence, that act a bit like aperiodic tilings.
23:37:33 <elliott> i think we are tswett's favourite rubber duck
23:37:55 -!- Patashu has joined.
23:38:33 <tswett> Definitely.
23:38:37 <oerjan> tswett: just the kind i investigated in my phd
23:38:49 <tswett> oerjan: is that so?
23:38:50 <elliott> oerjan: RUBBER DUCKS AREN'T MEANT TO TALK BACK
23:39:01 <elliott> OR HAVE RELEVANT PHDS
23:39:09 <tswett> oerjan: if so, I've love to... read your Ph.D.
23:39:18 <oerjan> tswett: yes, it's the criterion for the sequence generating a minimal shift system
23:39:31 <oerjan> argh
23:39:48 <elliott> argh :D
23:39:55 <elliott> "let me tell you about my phd; don't ask to read it"
23:40:14 <oerjan> well there are the three published papers from it
23:40:23 <tswett> Or your... Ph.D. thesis? Because a Ph.D. doesn't sound like the sort of thing that a person can actually read and get a lot of useful information.
23:40:31 <tswett> Ah, papers.
23:40:36 <tswett> GIVE ME PEPAR.
23:40:38 <oerjan> all joint with Richard Gjerde
23:40:40 <elliott> oerjan: Three! That's a bit BORGEOYSE of you.
23:41:05 <elliott> richard gjerde has a really good surname
23:41:15 <tswett> I think you mean "bergoisy".
23:41:26 <oerjan> can't you just google them? :(
23:41:26 <shachaf> BYORGEYSY?
23:41:34 <tswett> Yeah, I probably can.
23:42:35 <tswett> ...Is one of them called "Bratteli-Vershik models for Cantor minimal systems associated to interval exchange transformations"?
23:42:39 <oerjan> yes
23:42:56 <oerjan> and also one with Toeplitz systems
23:43:16 <tswett> "Bratteli-Vershik models for Cantor minimal systems: applications to Toeplitz flows"?
23:43:19 <oerjan> yes
23:43:59 <elliott> shachaf: yes
23:44:04 <oerjan> and the final one is something about non-homogeneous systems and k-theory, it's not quite the same stuff
23:44:09 * tswett nods.
23:44:17 <elliott> http://scholar.google.co.uk/scholar?q=oerjans+phd&hl=en&btnG=Search&as_sdt=1%2C5&as_sdtp=on help
23:44:17 <oerjan> (actually that's the first one)
23:44:18 <tswett> This site claims it's called "${C}\ sp\ ast $-algebras associated to non-homogeneous minimal systems and their ${K} $-theory".
23:44:31 <tswett> elliott: search for "johansen gjerde", bebna.
23:44:38 <elliott> [PDF] Upubmmz!! Ubf! Lxpo! Ep!
23:44:38 <elliott> [PDF] from bmsi.ru
23:44:38 <elliott> TTK Do - 2010 - bmsi.ru
23:44:38 <elliott> ... Contributors: Michael Munyon, GM Kim Soo, Robert McLain, Troy Trudeau, Paul O'Leary, Michael
23:44:38 <elliott> Carr, Oerjan Nilsen, Brian Crawley, Matthew Sylvester, Paul Mitchell, Earl Weiss, Glenn Smits,
23:44:38 <elliott> Chris Snow, Dan Davies, W. Rhee, Simon O'Neill, George Vitale & Stuart Anslow ...
23:44:40 <elliott> good paper
23:44:47 <tswett> elliott: stick a couple of first names in there, too.
23:46:00 -!- Nisstyre has quit (Remote host closed the connection).
23:47:11 <tswett> Are there any spoilers if I read them out of order?
23:47:18 <elliott> oerjan dies
23:47:22 <elliott> in paper 3
23:47:38 -!- Nisstyre has joined.
23:47:49 <tswett> elliott: hey, you're one of the characters.
23:47:53 <elliott> i die too
23:47:54 <elliott> everyone dies
23:48:00 <elliott> crushed by toeplitz flows
23:48:00 <oerjan> tswett: heh not really, and the first one about k-theory is rather further from sequences than the rest
23:48:16 <tswett> "Assuming the Elliott conjecture, namely that a complete isomorphism invariant for the associated (simple) C*-crossed products is of (ordered) K-theoretic nature . . ."
23:48:21 <tswett> elliott: I think this means your character is gay.
23:48:28 <oerjan> XD
23:48:40 <oerjan> that would be George Elliott iirc
23:48:52 <oerjan> he is/was quite a character
23:49:02 <tswett> Okay, so the thing it's really called is "C*-algebras associated to non-homogeneous minimal systems and their K-theory".
23:49:03 <oerjan> (worst lecturer _ever_)
23:49:14 <oerjan> yeah
23:49:45 <tswett> Next, "Bratteli-Vershik models for Cantor minimal systems: applications to Toeplitz flows".
23:50:07 <tswett> Finally, "Bratteli-Vershik models for Cantor minimal systems associated to interval exchange transformations".
23:50:13 <elliott> oerjan: i thought you were saying that's george elliott 'cuz of being gay
23:50:19 <oerjan> i think the toeplitz flow one is closest related to sequences
23:50:22 <elliott> and i was like "??? is this a famous bisexual i didn't know about"
23:50:27 <elliott> famous gaysexual i guess
23:50:38 <oerjan> since toeplitz sequences are the things they're based on, iirc
23:50:51 <tswett> Do these papers really form a trilogy, or is it more like a prequel and a... duology?
23:51:06 <oerjan> prequel and duology :P
23:51:07 <elliott> Bratteli&#8211;Vershik models for Cantor minimal systems ...
23:51:07 <elliott> journals.cambridge.org/production/action/cjoGetFulltext?fulltextid...
23:51:07 <elliott> by R GJERDE - Cited by 44 - Related articles
23:51:09 <elliott> 44 is a lot of peoples
23:51:23 <elliott> he;lp i cant find pdf
23:51:28 <tswett> Even if 44 were only one people, that would be a pretty tiny people.
23:51:32 <elliott> (pronounced ``pudduffe'')
23:51:35 <oerjan> the common part would be all using bratteli-vershik diagrams as their main new tool
23:51:39 <elliott> puddles
23:51:52 <tswett> elliott: http://journals.cambridge.org.ezproxy.gvsu.edu/action/displayAbstract;jsessionid=C98C693EB4FAA91F72F17DD2F6561AE0.journals?fromPage=online&aid=61853
23:52:05 <tswett> Simply enroll at GVSU and then click the link.
23:52:32 <elliott> :'(
23:52:35 <elliott> oerjan: can you pirate your paper for me
23:53:11 <elliott> i want to glaze my eyes over it
23:53:12 <elliott> and not read it
23:54:34 <oerjan> elliott: um the reason why i'm saying argh in the first place is that i don't have it in a convenient place _myself_
23:55:05 <tswett> I have the second paper on my hard drive.
23:55:33 <tswett> elliott: it's at http://Downloads/oerjanpaper2.pdf
23:55:36 <elliott> tswett: i have the second paper on your hard drive too
23:55:37 <tswett> That's how URLs work, right?
23:55:45 <tswett> elliott: excellent! There you go, then.
23:55:53 <elliott> unfortunately i don't have your hard drive
23:56:09 <tswett> Oh. Well, you have my permission to borrow my hard drive.
23:56:21 -!- Phantom_Hoover has joined.
23:56:26 <elliott> thanxe
2012-01-15
00:01:00 <tswett> Okay, I've got paper 3 as well.
00:01:07 <tswett> elliott: it's at http://www.mscand.dk/article.php?id=153
00:01:43 <elliott> oh man this is great for glazing
00:01:46 <oerjan> i thought i remembered someone found one of them publicly available before
00:02:10 <tswett> oerjan: it might have been do you think it might have been http://www.mscand.dk/article.php?id=153?
00:02:10 <elliott> oerjan: pls set future papers in computer modern for more effective gazing experience
00:02:14 <elliott> (the joke is "future papers")
00:02:28 <oerjan> tswett: QUITE POSSIBLE
00:03:00 <oerjan> elliott: i'm pretty sure the journals decide on fonts?
00:03:40 <elliott> oerjan: how coudl you publish in aj ournal using times :(
00:03:52 <elliott> "betrayed his responsibility to society" -ronald raegean
00:04:36 <tswett> A dynamical system is minimal if every point's orbit is dense? That sounds... like a strange thing to say.
00:05:19 <tswett> Oh shucks, I bet topological dynamical systems can generate these fancy-schmancy sequences. Take a point's orbit and apply some function to it elementwise.
00:05:20 <oerjan> tswett: it means there are no non-trivial closed subsystems
00:05:38 <elliott> *you're* a non-trivial closed subsystem, lol
00:05:47 <elliott> "oh snap" --bill clinton
00:06:23 <elliott> "oh crap" --bill
00:07:19 * oerjan notes there is no actual picture of a bratteli-vershik diagram in that one
00:07:47 <oerjan> there's a nice one in the toeplitz paper iirc
00:09:34 <tswett> This one is the Toeplitz one.
00:11:39 <oerjan> tswett: generally to get sequences you want to partition the space into clopen sets corresponding to your zero index value
00:12:03 <oerjan> and for the toeplitz case i recall this can be done iff you have the "expansive" criterion
00:12:54 <oerjan> actually that may be in general
00:23:29 <kmc> this is a weird channel
00:23:29 <lambdabot> kmc: You have 1 new message. '/msg lambdabot @messages' to read it.
00:24:38 <oerjan> kmc: AGAIN?
00:24:56 <zzo38> Of course is weird channel!!!!???????!!!!!!!!???!!!!?!?!?!!!!???!!!!!!!!????!!!?!?!!???!!!!!!?!?!!!???!!!!!!!!!!!!!!?!!!!!?!?!??!!!?!?!!!
00:25:29 <oerjan> > map length $ group "!!!!???????!!!!!!!!???!!!!?!?!?!!!!???!!!!!!!!????!!!?!?!!???!!!!!!?!?!!!???!!!!!!!!!!!!!!?!!!!!?!?!??!!!?!?!!!"
00:25:30 <lambdabot> [4,7,8,3,4,1,1,1,1,1,4,3,8,4,3,1,1,1,2,3,6,1,1,1,3,3,14,1,5,1,1,1,1,2,3,1,1...
00:25:32 <elliott> kmc: 18:43:11: <zzo38> But gopher://zzo38computer.foeug3g47fgeg34.ch3p-h4rbl-vjaagra.co.ng:22/../../warez2.php not only looks wrong, and uses . as the type, but doesn't even resolve. I am unsure why kmc posted this wrong URL, possibly to confuse you???
00:25:38 <elliott> did you do it to confuse you :(
00:25:43 <oerjan> @oeis 4,7,8,3,4,1,1,1,1,1
00:25:51 <lambdabot> Sequence not found.
00:25:56 <elliott> the zzo sequence
00:26:07 * oerjan is disappoint
00:26:14 -!- GreaseMonkey has joined.
00:26:14 -!- GreaseMonkey has quit (Changing host).
00:26:14 -!- GreaseMonkey has joined.
00:26:29 <oerjan> the triple kiwi entrance
00:27:55 <kmc> i did it to confuse you elliott
00:29:17 <elliott> :(
00:29:33 <kmc> i'm sure your confusion has been bothering you all day
00:29:39 <shachaf> elliott: Are you confused you now?
00:29:50 <monqy> im confuse
00:31:53 <kmc> zzo38, luite was working on something like Wolfram Alpha in Haskell
00:32:01 <kmc> called it Wolfgang Lambda
00:32:27 <elliott> that thing was cool i remember that hing
00:32:48 <kmc> i don't think "reimplement it in Haskell" is the way to make wolfram alpha better
00:32:57 <elliott> it wasn't really W|Ay was it
00:33:03 <elliott> at least i dont recall any free-text stuff
00:33:08 <elliott> it was more CASy
00:33:09 <shachaf> I don't think luite's thing was "reimplementing Wolfram Alpha".
00:33:09 <kmc> i mean i know all software is better if it's written in Haskell
00:33:13 <elliott> like mathematica notebooks
00:33:53 <coppro> not all software
00:34:04 <coppro> software written in agda does not get better by being rewritten in haskell
00:34:16 <elliott> yes it does
00:34:18 <elliott> significant unicode reduction
00:34:30 <kmc> and by reimplementing your software in haskell, you eliminate the need to test or document it
00:35:11 <shachaf> kmc: I thought the way it went was that all you need to do is talk about how the software would be easy to reimplement in Haskell.
00:35:16 <coppro> elliott: that is not a good thing
00:35:17 <shachaf> You need to actually do it?
00:35:58 <kmc> yeah, that's even better
00:36:05 <kmc> only haskell experts can do that though
00:36:10 <oerjan> the great unicode plague of december 2012
00:36:11 <elliott> wow it's almost as if i've heard this exact exchange five times in the past three days
00:36:26 <kmc> haha
00:36:57 <coppro> oerjan: oh that explains it
00:37:18 -!- CHeReP has joined.
00:37:31 <oerjan> `welcome CHeReP
00:37:38 <HackEgo> CHeReP:
00:37:46 <oerjan> >_<
00:37:49 <oerjan> `welcome CHeReP
00:37:53 <HackEgo> CHeReP:
00:37:54 <kmc> womp womp
00:38:04 <oerjan> AGAIN?
00:38:20 <oerjan> CHeReP: i'm afraid our bot refuses to tell you what we're doing here
00:38:31 <oerjan> `welcome CHeReP
00:38:33 <HackEgo> CHeReP:
00:38:39 <monqy> `welcome cherp
00:38:43 <HackEgo> cherp: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:38:43 <oerjan> hm...
00:38:47 <monqy> cherp cherp
00:38:59 <oerjan> O_o
00:39:16 <monqy> does welcome have caps problems
00:39:25 <oerjan> `@ CHeReP ? welcome
00:39:28 <HackEgo> CHeReP: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:39:32 <kmc> wtf
00:39:45 <oerjan> `welcome CHeReP
00:39:51 <HackEgo> CHeReP:
00:39:59 <oerjan> CHeReP: sorry about the debugging
00:40:04 <monqy> what's welcome
00:40:12 <oerjan> `welcome BaTMaN
00:40:16 <HackEgo> BaTMaN: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:40:24 <oerjan> `welcome BaTMaN
00:40:28 <HackEgo> BaTMaN: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:40:33 <Sgeo> `welcome BAtMaN
00:40:37 <HackEgo> BAtMaN: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:40:42 <Sgeo> !!
00:40:50 -!- myndzi has quit (Ping timeout: 268 seconds).
00:41:01 <Sgeo> `welcome DIfSfQ
00:41:05 <HackEgo> DIfSfQ: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:41:09 <Sgeo> ?!?
00:41:34 <tswett> `welcome CHeReP
00:41:37 <HackEgo> CHeReP: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:41:44 * tswett shrugs.
00:41:51 <monqy> oh i
00:41:52 <monqy> think i get it
00:41:53 <monqy> now
00:41:56 <monqy> `welcome monqy
00:42:00 <HackEgo> monqy:
00:42:01 <monqy> `welcome tswett
00:42:04 <monqy> `welcome oerjan
00:42:05 <HackEgo> tswett:
00:42:08 <HackEgo> oerjan:
00:42:16 <monqy> `welcome CHeReP
00:42:17 <oerjan> monqy: WHAT
00:42:20 <HackEgo> CHeReP: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:42:34 <monqy> its a magic
00:43:05 <oerjan> *sigh*
00:43:08 <monqy> `welcome monqy yqnom
00:43:12 <HackEgo> monqy: yqnom: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:43:38 <Sgeo> `welcome Blah
00:43:38 <elliott> `welcome oerjan
00:43:41 <monqy> `welcome monqy yqnom monquey
00:43:43 <HackEgo> Blah:
00:43:44 <oerjan> `welcome oerjan oerjan oerjan oerjan oerjan oerjan oerjan oerjan oerjan oerjan oerjan
00:43:46 <Sgeo> I get it
00:43:49 <HackEgo> monqy: yqnom: monquey: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:43:49 <monqy> sgeo gets it
00:43:50 <HackEgo> oerjan: oerjan: oerjan: oerjan: oerjan: oerjan: oerjan: oerjan: oerjan: oerjan: oerjan:
00:44:05 <elliott> how does it
00:44:06 <elliott> work
00:44:07 <elliott> i dont get it
00:44:08 <monqy> its a
00:44:10 <monqy> perle
00:44:14 <elliott> that
00:44:15 <elliott> doesnmt explain
00:44:20 <monqy> :0
00:44:21 <Sgeo> Shall I explain?
00:44:29 <monqy> `cat bin/welcome
00:44:31 <monqy> explained.
00:44:33 <HackEgo> ​#!/usr/bin/perl -w \ if (defined($_=shift)) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }
00:44:40 <HackEgo> oerjan: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:44:40 <Sgeo> It's a space
00:44:41 <Sgeo> At the end
00:44:49 <elliott> o k
00:44:54 <oerjan> argh
00:45:02 <oerjan> `welcome oerjan
00:45:06 <HackEgo> oerjan:
00:45:08 <oerjan> `welcome oerjan
00:45:12 <HackEgo> oerjan: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:45:20 * oerjan facepalm
00:46:05 <elliott> today we learned
00:46:10 <elliott> my hatred of perl rewrites of scripts
00:46:11 <elliott> is legitimate
00:47:32 <elliott> monqy: i want to pay a detective to find me the owner of sourcereal.com
00:47:38 <elliott> an internet detective
00:48:27 -!- myndzi has joined.
00:48:37 <zzo38> Can you use WHOIS service to try?
00:48:51 <monqy> i just tried; it was unhelphfuel
00:49:07 <oerjan> `run sed -i 's!{!{ s/ *$/; ' bin/welcome
00:49:11 <HackEgo> sed: -e expression #1, char 14: unterminated `s' command
00:49:15 <tswett> It was not healthfuel.
00:49:23 <oerjan> `run sed -i 's!{!{ s/ *$/; !' bin/welcome
00:49:26 <HackEgo> No output.
00:49:32 <oerjan> `cat bin/welcome
00:49:35 <HackEgo> ​#!/usr/bin/perl -w \ if (defined($_=shift)) { s/ *$/; s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }
00:49:44 <oerjan> oops
00:50:03 <elliott> i blame perl
00:50:12 <Phantom_Hoover> i blame knit
00:50:13 <oerjan> `run sed -i 's!;!/;!' bin/welcome
00:50:16 <HackEgo> No output.
00:50:22 <oerjan> `cat bin/welcome
00:50:25 <monqy> registrent was mysteries, registered domain by progxy
00:50:25 <HackEgo> ​#!/usr/bin/perl -w \ if (defined($_=shift)) { s/ *$//; s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }
00:50:36 <oerjan> `welcome oerjan
00:50:39 <HackEgo> oerjan: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:50:43 <oerjan> `welcome oerjan
00:50:47 <HackEgo> oerjan: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:50:50 <oerjan> `welcome oerjan oerjan
00:50:53 <shachaf> I never got welcomed in here. :-(
00:50:54 <HackEgo> oerjan: oerjan: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:51:00 <oerjan> `welcome shachaf
00:51:04 <HackEgo> shachaf: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:51:16 <shachaf> oerjan++ # has a heart. unlike some people in this channel
00:51:49 <elliott> `unwelcome shachaf
00:51:52 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: unwelcome: not found
00:52:45 <shachaf> elliott has a negative heart.
00:54:01 <elliott> kill the planet
00:56:00 <elliott> is the planet dead yet
00:56:04 <elliott> update on planet mortality???
00:56:55 <Phantom_Hoover> Sam Hughes probably isn't up at this hour.
00:56:56 <monqy> very dead
00:56:59 <oerjan> <kallisti> well, zzo38 and I are going to go invent a language with at least 20 pronouns <-- check out the bantu language family
00:57:10 <oerjan> not quite 20 maybe, but...
00:57:24 -!- zzo38 has quit (Quit: My internet will be down for a few hours today for maintenance. If that happen, try again in the next day.).
00:57:32 <shachaf> Phantom_Hoover: It depends on which one.
00:57:35 <kallisti> oerjan: 5 pronouns will be for the previously used pronouns
00:57:42 <kallisti> so as new things are reffered to by pronouns
00:57:47 <Phantom_Hoover> shachaf, the important one.
00:57:58 <kallisti> the old ones move further up in the pronoun queue
00:58:31 <oerjan> and also sign language iirc
01:00:49 <elliott> shachaf: Do you remember The Good Old Hpaste?
01:00:58 * elliott has decided to be nostalgic about hpaste tonight.
01:01:10 <shachaf> elliott: I remember that hpaste!
01:01:17 <shachaf> Didn't sorear write it?
01:01:25 <elliott> All I remember was it was hosted on moonpatio.
01:01:30 <shachaf> It had so many good pastes taht are now lost in the mists of time.
01:01:32 <elliott> Dot something (net?).
01:01:48 <elliott> I seem to remember it actually went through two incarnations, at least I remember it suddenly getting a fancier design at one point.
01:02:47 * elliott tries to remember the URL to Web Archiveify it.
01:03:06 <elliott> Ah, moonpatio.com:8080/fastcgi/hpaste.fcgi
01:03:27 <elliott> "We were unable to get the robots.txt document to display this page."
01:03:30 <shachaf> Wasn't that just an interim hpaste?
01:03:43 <elliott> I think archive.org have, at some point along the line, forgotten that they're meant to be archiving sites that might die.
01:04:01 <elliott> shachaf: Maybe?
01:05:59 -!- pikhq has joined.
01:06:04 <shachaf> shachaf : Maybe ?
01:06:38 <shachaf> I'm going to assume that's a combination of Haskell, Agda, and Miranda.
01:06:49 <elliott> Did Miranda have a ? type or something?
01:06:49 * Sgeo is tempted to use Data.Has
01:07:50 <monqy> what is has
01:08:14 <elliott> dont monqy dont
01:08:17 <elliott> you wont recover
01:08:20 <elliott> its not for human
01:08:28 <shachaf> elliott: Oops, I was confusing ? with *.
01:08:37 -!- pikhq_ has quit (Ping timeout: 252 seconds).
01:09:00 <shachaf> Miranda's *** notation was the best thing.
01:09:09 <shachaf> Did you hear my exciting proposal for type class polymorphism?
01:09:26 <shachaf> foo :: Num -> Num -> Num ==> foo :: Num a => a -> a -> a
01:09:48 <shachaf> foo :: Num -> NumNum -> Num ==> foo :: (Num a, Num b) => a -> b -> a
01:09:55 <elliott> <shachaf> Miranda's *** notation was the best thing.
01:09:59 <elliott> Elaborate so I don't have to Google.
01:10:14 <elliott> Also, you shouldn't have to specify NumNum like that.
01:10:19 <elliott> foo :: Num -> Num -> Num
01:10:20 <elliott> ==>
01:10:20 <shachaf> elliott: In Miranda, you'd say map :: (* -> **) -> [*] -> [**]
01:10:27 <elliott> foo :: (Num a, Num b, Num c) => a -> b -> c
01:10:34 <elliott> *except* that if two variables must be unified to make things work, they are, automatically.
01:11:00 <elliott> shachaf: Finally we're rid of the horrible impurity of the alphabet.
01:11:10 <monqy> finally in the past
01:11:15 <shachaf> elliott: Is this some competition for who can make the worst proposal?
01:11:47 <elliott> Yes.
01:12:13 <shachaf> elliott: To be fair, Haskell's solution of "uppercase/lowercase" is also kind of horrible.
01:12:32 <shachaf> Why does Haskell have implicit quantification, anyway? Implici quantification is the root of all evil.
01:12:48 -!- pir^2 has joined.
01:12:59 <shachaf> converse::(*->**->***)->**->*->***; converse f a b = f b a
01:13:10 <elliott> shachaf: Do you remember that guy on #haskell who claimed that leaving out the "forall"s made a huge difference because it's, like, so much easier to teach, and it has more meaning because you're talking directly about variables in the metalanguage, rather than reducing it to an internal abstraction, or something?
01:13:17 <elliott> That was WILD.
01:13:23 <pir^2> Does anyone here know what is supposed to happen if you < on the leftmost cell in BF?
01:13:33 <shachaf> elliott: No, I don't remember that.
01:13:37 <elliott> (They didn't actually say most of those things, but I can't remember what they actually said because it was too weird to remember.)
01:13:48 <elliott> pir^2: It's not standard.
01:14:00 <elliott> pir^2: A program that does that is broken.
01:14:04 <elliott> Generally.
01:14:12 <elliott> Most implementations only do a right-infinite tape (if that).
01:14:14 <pir^2> ok
01:14:29 <pir^2> So ignoring it is OK?
01:14:52 * Sgeo is tempted to use Data.Has to solve his problems
01:14:59 <monqy> again?
01:15:10 <elliott> pir^2: Sure.
01:15:10 -!- Nisstyre has quit (Ping timeout: 252 seconds).
01:15:19 <elliott> Hey guys, I think Sgeo is tempted to use Data.Has.
01:15:32 * shachaf Data.Has no idea what that is.
01:15:40 <elliott> I think Sgeo is also tempted to say that repeatedly in #esoteric until someone is sufficiently caught off-guard to be silly enough to try and talk him out of it.
01:15:51 <Sgeo> Oh, didn't remember that I said it before
01:15:54 <shachaf> module Data where data Has = Has `Has` Has
01:15:57 <shachaf> import Data (Has)
01:15:58 -!- MDude has quit (Ping timeout: 240 seconds).
01:16:07 <monqy> Sgeo: 17:06:47 * Sgeo is tempted to use Data.Has
01:16:08 * shachaf `Data.Has` no idea
01:16:50 <monqy> and mere minutes later
01:16:53 <monqy> 17:14:50 * Sgeo is tempted to use Data.Has to solve his problems
01:17:17 <monqy> I still don't even know what it is
01:17:26 <Sgeo> http://chrisdone.com/posts/2010-11-22-duck-typing-in-haskell.html
01:17:33 <monqy> no
01:17:34 <monqy> no
01:17:34 <monqy> no
01:17:38 <monqy> domnt
01:17:40 <monqy> duckt ype
01:17:47 * shachaf away
01:18:07 <monqy> im not even going to rtead that im just going to shout at y ou
01:18:10 <monqy> until you
01:18:11 <elliott> monqy: I suggest smiling and letting Sgeo dig himself into the hole that is http://hackage.haskell.org/packages/archive/has/0.5.0.1/doc/html/Data-Has.html rather than trying to prematurely explain to him why it's a terrible idea.
01:18:11 <monqy> make it stop
01:18:16 <elliott> (This is because he won't listen.)
01:18:23 <monqy> ok
01:18:24 <monqy> i;ll
01:18:27 <monqy> let sgeo holdeig
01:18:28 <Sgeo> I don't think it really is duck typing
01:18:35 <monqy> and then he;ll not notice the hole, amyBE?
01:18:42 <monqy> and
01:18:53 <Sgeo> What's the name for the thing that Scala has? I think it's like that
01:18:56 <Sgeo> structural typing?
01:18:59 <elliott> shit
01:20:07 <kmc> l o l s
01:21:23 <elliott> HEY GUYS DO YOU WANT TO HEAR A JOKE
01:21:24 <elliott> scala
01:21:32 <monqy> ha
01:21:32 <monqy> ha
01:21:33 <monqy> ha
01:21:59 <monqy> good thing i don't know scala so i don't get it (thumbs up)
01:22:02 <Sgeo> I just mention it because structural typing seems like a more accurate description for Data.Has than Duck typing
01:22:05 <kmc> Sgeo, "structural subtyping" is a thing
01:22:05 <kallisti> elliott: I think if given the opportunity I would elect to use Scala over Java
01:23:08 <kallisti> or maybe Clojure .
01:23:14 <elliott> https://github.com/ChickenProp/sysfuck hey someone reinvented psox except they actually wrote more than like ten lines of it and wrote a really irritating readme *thumbs up*
01:23:27 <elliott> oh it even involves nul bytes too
01:23:43 <monqy> I prefer the name psox over sysfuck
01:23:51 <kallisti> fuckfuck
01:23:54 <kallisti> good name
01:24:02 <monqy> fuckfuck is awful and whoever invented it is awful
01:24:11 <monqy> for inventing it
01:24:44 <elliott> what if its
01:24:44 <elliott> you
01:24:56 <monqy> but its not me,,,,,,,,,
01:24:58 <kallisti> but "knob arse cock knob butt" is such an endearing cat program
01:25:14 <oerjan> "Entiry based records. To use this module, you have to write LANGUGAGE pragma" <-- O KAY
01:25:48 <elliott> entiry
01:25:54 <elliott> langugage
01:26:04 <elliott> its entiry reasonable if you ask me
01:26:06 <elliott> ha ha ha ah ah
01:26:20 <Sgeo> sysfuck allows more access to stuff without having to write I-forget-what-I-called-them
01:26:51 <monqy> oh
01:26:58 <elliott> hyeres my "pee socks" extension language
01:27:00 <Sgeo> domains, I think
01:27:03 <elliott> you write a c program to stdout
01:27:05 <elliott> print a nul byte
01:27:10 <elliott> and its output gets connected to your stdin
01:27:13 <elliott> when it exits the whole thing loops
01:27:19 <elliott> completely extensible(tm)
01:27:24 <elliott> you can even write portable things
01:27:26 <CHeReP> monqy, hi
01:27:29 <elliott> by writing a program that figures out how to structure the program
01:27:30 <monqy> CHeReP: hi
01:27:32 <elliott> and using the result of that to write a new one
01:27:33 <CHeReP> i'am not a bot)
01:27:34 <elliott> magic(tm)
01:27:52 <kallisti> CHeReP: me too!
01:27:58 <CHeReP> cool)
01:28:01 <elliott> im ab ot
01:28:05 <elliott> fungot is bot
01:28:05 <fungot> elliott: trust me. this system is way cheaper. or that dirty dancing bad-apple my father forbids me to see. daily radar is on the same console, for the warrior? full.
01:28:11 <elliott> ^styl
01:28:12 <Sgeo> The Data.Has person at least got the LANGUAGE in the pragma right :/
01:28:12 <elliott> ^style
01:28:12 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa* qwantz sms speeches ss wp youtube
01:28:26 <monqy> what if i was a bot
01:28:28 <monqy> and claimed not to be a bot
01:28:31 <CHeReP> why you dont sleep ?
01:28:33 <monqy> and got upset when anyone called me a bot
01:28:33 <kallisti> what if I wasn't a bot?
01:28:45 <Sgeo> But what I need is something like Data.Has except ... more competent.
01:28:50 <kallisti> what if I asked a what if question
01:28:51 <kallisti> then what?
01:28:52 <kallisti> what happens?
01:28:53 <kallisti> explain
01:28:55 <monqy> help
01:29:15 <elliott> Sgeo: what you need is a better design
01:29:15 <Sgeo> Data.Records won't compile on 7.x due to a stupid contraint on base
01:29:26 <kallisti> elliott: unpossible such no thing
01:29:40 <monqy> Sgeo: what are you even trying to do
01:29:53 <elliott> no monqy
01:29:55 <elliott> don't
01:29:58 <elliott> you never
01:29:59 <elliott> learn
01:30:06 <Sgeo> Deal with the hundreds of named global ... values in the AW SDK.
01:30:08 <monqy> is this the activeworlds bot for which you wanted an awful TH
01:30:15 <monqy> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah
01:30:29 <elliott> monqy:
01:30:32 <Sgeo> Only some of which are initialized on any given event handler or callback
01:30:34 <elliott> you need to
01:30:36 <elliott> become more street-wise
01:30:46 <Sgeo> And only some of which need to be set when calling certain functions
01:30:47 <monqy> street wise killed my parents
01:31:11 <Sgeo> Suppose I have two events that set similar sets of attributes
01:31:26 <kallisti> I wonder how awkward talking about brianfuck in a job interview would be
01:31:34 <kallisti> because it requires you to use PROFANE LANGUAGE.
01:31:36 <Sgeo> And I want a function that takes some of those attributes and gives me a higher-level wrapper
01:31:43 <Sgeo> erm, just a record, whatever
01:31:57 <kmc> most jobs i've interviewed for, nobody would give a fuck
01:32:00 <Sgeo> But the events give slightly different data
01:32:09 <kallisti> kmc: well yeah
01:32:10 <elliott> nobody would give a
01:32:11 <elliott> ...
01:32:12 <elliott> ........
01:32:13 <elliott> .....................
01:32:15 <elliott> ............
01:32:15 <kallisti> brainfuck
01:32:16 <elliott> .......
01:32:16 <elliott> ...
01:32:18 <elliott> fuck
01:32:18 <elliott> you
01:32:31 <elliott> you ruined EVERYTHING
01:32:43 <kallisti> that's okay it's okay.
01:32:46 <elliott> no
01:33:03 <monqy> Sgeo: i have NO IDEA what you just said
01:33:20 <monqy> none 0
01:33:26 <Sgeo> In the AW SDK, there are a bunch of "attributes"
01:33:31 <monqy> ok
01:33:34 <elliott> stop stop ostooop
01:33:37 <Sgeo> Retrieved with functions like aw_int(SOME_ATTRIBUTE);
01:33:49 <monqy> ok
01:33:49 <Sgeo> And set with things like aw_int_set(SOMEATTRIBUTE, 0);
01:33:54 <monqy> ok
01:34:01 <elliott> creys
01:34:19 <elliott> (crey is like cray but british)
01:34:31 <elliott> http://upload.wikimedia.org/wikipedia/commons/f/f8/Color_icon_gray_v2.svg mmmm grey
01:34:33 <Sgeo> Some events will, when the event handler is run, give data to the event handler by setting attributes
01:34:39 <Sgeo> Same with callbacks.
01:34:56 <Sgeo> (That's the only way data gets to the event or callback)
01:35:01 <monqy> what is a
01:35:02 <monqy> data
01:35:03 <monqy> event
01:35:04 <monqy> handler
01:35:06 <monqy> callback
01:35:15 <kallisti> monqy is bad at programming.
01:35:15 <elliott> NO
01:35:15 <monqy> attributes
01:35:16 <elliott> I FORBID IT
01:35:20 <elliott> I FORBID
01:35:21 <elliott> THE QUESTIONING
01:35:30 <kmc> data event handler callback factory visitor
01:35:37 <Sgeo> attributes are the things retrieved with aw_int() and set with aw_int_set()
01:35:39 <kallisti> monqy: attributes are global variables in this case, pretty much.
01:35:43 * elliott slams channel into brick wall repeatedly
01:35:43 <Sgeo> (Or variations for different types)
01:35:59 * elliott douses channel in fire
01:36:25 <kallisti> an attribute in a Haskell wrapper of this would basically be like an IORef
01:36:42 * elliott throws channel into sea
01:36:47 <elliott> (the channel is still on fire)
01:36:57 <elliott> (fire remains even in sea)
01:37:00 <kallisti> ah help I am burning-drowning
01:37:15 <Sgeo> Event handlers can be set for events that occur in Active Worlds. The event handler is a function pointer. The function receives 0 arguments. When the event has data associated with it (say, the name of someone who is now nearby), that's retrieved from an attribute.
01:37:26 <elliott> kallisti: YOU ARE RESONPONSIBLE
01:37:28 <elliott> EVERYONE IS RESPONSIBLE
01:37:36 -!- Nisstyre has joined.
01:37:52 * elliott rescues fungot from burndrowning channel
01:37:53 <fungot> elliott: son, i did not drive three hundred miles and put on this fancy suit to listen to this, but just so we're clear, are we married in the real world. i can do for you.
01:37:56 <kallisti> Sgeo: this pretty much sounds like things that are already solved by the IO monad.
01:38:04 <kmc> haha
01:38:15 <elliott> yes fungot. we're married in the real world now
01:38:16 <fungot> elliott: and then say says, " well he's got dvd and backwards compatibility!"
01:38:16 <kmc> you forgot the word "trivial"
01:38:20 <Sgeo> kallisti, for some reason, I really, really, really, do not want to make a literal thin wrapping of this.
01:38:30 <elliott> really really really really
01:38:30 <kallisti> Sgeo: oh, well that will be difficult
01:38:32 <monqy> Sgeo: so what do you want?
01:38:32 <elliott> really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really re
01:38:33 <elliott> ally really really really really really really really really really really really really really really really
01:38:37 <elliott> really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really re
01:38:39 <elliott> ally really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really real
01:38:39 <Sgeo> monqy, something thread-safe
01:38:44 <elliott> ly really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really
01:38:46 <monqy> anything?
01:38:48 <kallisti> Sgeo: but you know there's probably not an easy way to make it pure right
01:38:49 <elliott> really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really
01:38:50 <kmc> global lock global lock global lock global lock global lock global lock global lock global lock
01:38:53 <elliott> wow pretty really patterns
01:38:55 <elliott> really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really re
01:39:00 <elliott> ally really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really real
01:39:05 <elliott> ly really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really
01:39:10 <elliott> really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really r
01:39:12 <kallisti> oerjan: hi new spam record soon
01:39:15 <elliott> eally really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really real
01:39:19 <elliott> wow
01:39:21 <elliott> ok that is enough really
01:39:23 <elliott> glock
01:39:25 <elliott> i hear that kmc guy has a great package for global locks
01:40:10 <Sgeo> I'm almost seriously considering passing an STM block to the thing that will set event handlers in my wrapper, and getting the values I want in there.. no, that's not really safe, might get values that the event doesn't set
01:40:28 <kallisti> Sgeo: you should make
01:40:29 <kallisti> thin
01:40:31 <kallisti> IO wrapper
01:40:39 <kallisti> papery wrapper over delicious candy mmmm
01:40:53 <kallisti> (except instead of delicious candy it's some shitty game)
01:40:55 <elliott> socrates was a real gangster. we need more role models like him in today's facebook 2.0 world
01:41:05 <kallisti> elliott: I'm agree.
01:41:08 <kmc> i have a bad package for global locks because I couldn't figure out a better way :/
01:41:10 <kallisti> not enough fly G's
01:41:33 <Sgeo> kmc, I am planning to use a global lock, but users of the library (probably just me) shouldn't have to worry about that
01:41:37 <elliott> i remember looking at kmc's package for global locks and going "ha ha ha it only supporst one global lock" and then putting on sunglasses and riding off into the sunset on my flying car
01:41:43 <elliott> well at least the laughing part
01:41:47 <kmc> haha
01:42:00 -!- ChanServ has set channel mode: +q *!*@unaffiliated/elliott.
01:42:01 <kallisti> elliott: socrates was all like "yo dawg I'ma make you question yo mothafuckin' belief structure." and people were all like "shiiiiiiiit"
01:42:09 <monqy> rip elitoe
01:42:18 -!- elliott has left.
01:42:19 <kmc> well yeah the library is kind of a template for copying into your own library that needs a global lock
01:42:20 -!- elliott has joined.
01:42:28 -!- elliott has left.
01:42:28 <kmc> (as it say in the docs)
01:42:29 -!- elliott has changed nick to eliyt.
01:42:31 -!- eliyt has joined.
01:42:41 <kallisti> hi eily
01:42:43 <kallisti> t
01:42:43 <kmc> i couldn't think of a good way to support several of them
01:42:55 <monqy> Sgeo: why do you want a global lcoke,,,whaymre,,,whey,,,,,,
01:43:09 -!- eliyt has left.
01:43:09 -!- eliyt has changed nick to FVCK_THE_POLICE.
01:43:11 -!- FVCK_THE_POLICE has joined.
01:43:14 <kmc> it's all really just a workaround for a bug that was fixed in GHC 7.4
01:43:19 -!- FVCK_THE_POLICE has left.
01:43:24 <Sgeo> monqy, to stop one thread setting attributes while another is trying to read them, and similar oddities
01:43:25 -!- FVCK_THE_POLICE has changed nick to OERJAN_IS_SUCK.
01:43:26 -!- OERJAN_IS_SUCK has joined.
01:43:34 -!- OERJAN_IS_SUCK has left.
01:43:38 -!- OERJAN_IS_SUCK has changed nick to UNQUIET_OR_DIE.
01:43:40 -!- UNQUIET_OR_DIE has joined.
01:43:49 -!- UNQUIET_OR_DIE has left.
01:43:55 -!- UNQUIET_OR_DIE has changed nick to OVERTHROW_FASCIS.
01:43:58 -!- OVERTHROW_FASCIS has changed nick to KILL_FASCIST_OPS.
01:44:00 -!- KILL_FASCIST_OPS has joined.
01:44:27 <monqy> and you can't do that in anay beter way than a global locckck
01:45:00 <kmc> yeah i spent a while on this
01:45:13 <Sgeo> monqy, I can, actually. Make a lock when I initialize the library, and have the user pass that around as needed, which shouldn't actually be that often
01:45:17 <kallisti> Sgeo: oh yeah you could maybe have the attributes as STRefs
01:45:24 <kmc> Sgeo, and then they initialize it twice?
01:45:46 <monqy> Sgeo: lock monad (no dont ((pelase)
01:45:55 <kmc> i would ask #haskell how to make a global lock, and they'd be horrified and tell me there must be a better way
01:45:55 <Sgeo> kallisti, wait what?
01:45:56 -!- reallyq has joined.
01:45:57 <reallyq> really really really really really really really really
01:45:57 <reallyq> really really really really really really really really
01:45:57 <reallyq> really really really really really really really really
01:45:57 <reallyq> really really really really really really really really
01:45:58 <reallyq> really really really really really really really really
01:45:59 <reallyq> really really really really really really really really
01:46:00 <reallyq> really really really really really really really really
01:46:01 <reallyq> really really really really really really really really
01:46:02 <reallyq> really really really really really really really really
01:46:03 <reallyq> really really really really really really really really
01:46:04 <reallyq> really really really really really really really really
01:46:05 <reallyq> really really really really really really really really
01:46:06 <reallyq> really really really really really really really really
01:46:06 <kallisti> Sgeo: >_> use STrefs
01:46:07 <reallyq> really really really really really really really really
01:46:08 <reallyq> really really really really really really really really
01:46:09 <reallyq> really really really really really really really really
01:46:10 <reallyq> really really really really really really really really
01:46:11 <reallyq> really really really really really really really really
01:46:11 <kmc> and then nobody could give me one
01:46:12 <reallyq> really really really really really really really really
01:46:13 <reallyq> really really really really really really really really
01:46:14 <reallyq> really really really really really really really really
01:46:15 <reallyq> really really really really really really really really
01:46:16 <reallyq> really really really really really really really really
01:46:17 <reallyq> really really really really really really really really
01:46:18 <reallyq> really really really really really really really really
01:46:19 <reallyq> really really really really really really really really
01:46:20 <reallyq> really really really really really really really really
01:46:20 <monqy> hi
01:46:21 <reallyq> really really really really really really really really
01:46:22 <Sgeo> kallisti, I didn't even know STRefs could be used like that
01:46:22 <reallyq> really really really really really really really really
01:46:22 <kallisti> reallyq: hi
01:46:23 <reallyq> really really really really really really really really
01:46:24 <reallyq> really really really really really really really really
01:46:24 <monqy> `welcome reallyq
01:46:25 <reallyq> really really really really really really really really
01:46:26 <reallyq> really really really really really really really really
01:46:27 <reallyq> really really really really really really really really
01:46:28 <reallyq> really really really really really really really really
01:46:28 <HackEgo> reallyq: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
01:46:29 <reallyq> really really really really really really really really
01:46:30 <reallyq> really really really really really really really really
01:46:31 <reallyq> really really really really really really really really
01:46:32 <reallyq> really really really really really really really really
01:46:33 <reallyq> really really really really really really really really
01:46:34 <reallyq> really really really really really really really really
01:46:35 <reallyq> really really really really really really really really
01:46:36 <reallyq> really really really really really really really really
01:46:37 <reallyq> really really really really really really really really
01:46:38 <reallyq> really really really really really really really really
01:46:39 <Sgeo> Can they be?
01:46:39 <kallisti> Sgeo: as global mutable variables accessible within the STM monad? sure.
01:46:39 <reallyq> really really really really really really really really
01:46:40 <reallyq> really really really really really really really really
01:46:41 <reallyq> really really really really really really really really
01:46:42 <reallyq> really really really really really really really really
01:46:43 <reallyq> really really really really really really really really
01:46:44 <Sgeo> kallisti, wrong monad
01:46:44 <reallyq> really really really really really really really really
01:46:45 <reallyq> really really really really really really really really
01:46:46 <reallyq> really really really really really really really really
01:46:47 <reallyq> really really really really really really really really
01:46:48 <reallyq> really really really really really really really really
01:46:49 <reallyq> really really really really really really really really
01:46:50 <reallyq> really really really really really really really really
01:46:50 <kallisti> Sgeo: oh rite
01:46:51 <reallyq> really really really really really really really really
01:46:52 <reallyq> really really really really really really really really
01:46:53 <reallyq> really really really really really really really really
01:46:54 <reallyq> really really really really really really really really
01:46:54 <kallisti> Sgeo: the STM one
01:46:55 <reallyq> really really really really really really really really
01:46:56 <reallyq> really really really really really really really really
01:46:57 <reallyq> really really really really really really really really
01:46:58 <reallyq> really really really really really really really really
01:46:59 -!- ChanServ has set channel mode: +o ais523.
01:46:59 <reallyq> really really really really really really really really
01:46:59 <kallisti> Sgeo: TVar or whatever
01:47:00 <reallyq> really really really really really really really really
01:47:00 -!- ais523 has kicked reallyq User terminated!.
01:47:03 <kmc> i was working around thread-unsafety of http://hackage.haskell.org/packages/archive/repa-devil/0.1.2/doc/html/Data-Array-Repa-IO-DevIL.html
01:47:34 <Sgeo> Sure, I could do that, but I can't just grab the values of the TVars in the event handler
01:47:38 <kmc> which already has a custom monad and a function «runIL :: IL a -> IO a» that "guarantees the DevIL library has been initialized before you run functions on it"
01:47:50 <kmc> but, nothing prevents you from calling runIL from multiple threads
01:47:52 <kallisti> Sgeo: why not?
01:47:53 <kmc> so it's not safe
01:48:32 <Sgeo> kallisti, event handler starts running. Some other event handler starts running. Other event handler's STM block to grab stuff from attributes runs first. First event handler's data is now obliterated
01:48:56 <Sgeo> I could pass an STM block to retrieve values when setting the event handler, but that's somewhat ugly, I think
01:49:04 <kallisti> >_> it is? maybe I don't understand what's going on.
01:49:29 <kmc> if you have a global invariant like "no two threads can be in the DevIL library at once" then you need some global state
01:50:34 <kmc> for even suggesting that global state is the best solution to any problem, people will try to bite your head off
01:50:50 -!- ais523 has set channel mode: -o ais523.
01:50:53 <monqy> if only elliott was here to tell sgeo why he's wrong
01:50:56 <kmc> but i did not hear any plausible alternatives
01:51:06 <Sgeo> addEventHandler eventAvatarAdd (do a <- attribA; b <- attribB; return (a,b)) myHandler
01:51:06 <monqy> alternatively
01:51:34 <kmc> personally I think it's much better to have some hidden hax in a library, rather than exposing a thread-unsafe interface to every user
01:51:37 <monqy> if only elliott was here to tell me and kallisti to stop making sgeo say wrong things
01:52:06 <kallisti> Sgeo: I don't really understand the problem with using STM as it seems well-suited to preventing these kind of race conditiony things.
01:52:30 <kmc> wait, you're going to read C library state from a STM transaction?
01:52:54 <kmc> that's not going to work
01:52:54 <Sgeo> kallisti, well, what I just wrote isn't entirely type-safe... what if attribA isn't applicable to eventAvatarAdd?
01:53:27 <Sgeo> It also looks ugly
01:53:44 <Sgeo> Although I recently saw some other way to write it
01:54:21 -!- KILL_FASCIST_OPS has quit (Quit: bored of waiting for power-tripping to stop).
01:54:32 -!- MDude has joined.
01:54:56 <Sgeo> addEventHandler eventAvatarAdd (liftA2 (,) attribA attribB) myHandler
01:54:57 <Sgeo> I guess
01:55:16 <kmc> GHC's STM will do exactly nothing to prevent race conditions if some C library is modifying those variables
01:55:32 <kmc> you can't even read a C variable from a STM action without hax
01:55:53 <Sgeo> In theory, when I have the lock, the values shouldn't change
01:56:01 <Sgeo> So I can lock before the STM, unlock after it
01:56:04 <kmc> oh, so you're using STM *and* a global lock?
01:56:07 <Sgeo> Makes the STM a bit pointless perhaps, but
01:56:14 -!- ChanServ has set channel mode: -q *!*@unaffiliated/elliott.
01:56:34 <ais523> )
01:56:40 <ais523> * whichever op that was, I was about to do that ;)
01:56:48 <ais523> I wonder what's up with elliott today
01:57:05 <oerjan> the guy _really_ doesn't have the right attitude for getting quiets/bans quickly undone...
01:57:12 <oerjan> (was me, both ways)
01:57:30 <Sgeo> Although if some idiot user tries to write to attribA in the grabber thing, all bets are off
01:58:57 <kallisti> Sgeo: just use whatever concurrency abstraction the AW library uses?
01:59:26 <Sgeo> The AW library is meant for single-threaded use.
01:59:42 <kmc> because threads are a super advanced feature for wizards only
02:00:01 <kallisti> so then using TVars to modify the global state of a C library should be fine, yes?
02:00:11 <kallisti> if all the threaded participants are STMified.
02:00:26 <kmc> "using TVars to modify the global state of a C library"
02:00:29 <kmc> how do you even do that
02:00:33 <kallisti> no idea.
02:00:33 <kallisti> :P
02:00:57 <kallisti> well....
02:01:04 <kallisti> yeah I don't know.
02:01:08 <kmc> i think the answer is "unsafeIOToSTM"
02:01:10 <oerjan> and half this mess just because i hate losing my place in the backscroll...
02:01:11 <kmc> and that's /not going to work/
02:01:34 <kmc> because with GHC's implementation, the STM actions actually run at the same time
02:02:16 * kallisti thinks +qing elliott was probably justified.
02:02:20 <kmc> the illusion created by "atomically" is critically dependent on the fact that you're only reading and writing state within the STM universe
02:02:46 <monqy> kallisti: have fun with future elliott "read the logs good"
02:02:54 <kallisti> monqy: don't care.
02:03:01 <monqy> i too love fun
02:03:16 <kmc> i can't believe you're even debating whether it was justified to kick someone who was crapflooding and evading bans
02:03:43 <kallisti> kmc: I'm guessing using functions that return STM a is also not a good idea (in other words, removing TVars from the picture)
02:04:01 <kmc> i don't understand what you mean
02:04:03 <kallisti> that seems to basically give you nothing unless you somehow implement STM at the C level.
02:04:14 <Sgeo> The basic idea, even removing STM from the picture, no matter how "workable" is still ugly
02:04:22 <Sgeo> And not type-safe
02:04:41 <kmc> what problem is STM solving here
02:04:54 <kmc> it's not solving "prevent two Haskell threads from interacting with the C variables at the same time"
02:05:10 <kmc> (except by preventing them from interacting at all)
02:05:28 <Sgeo> kmc, I don't think it is
02:05:35 <Sgeo> (solving a problem)
02:05:45 <Sgeo> I could make my own structure for reading from attributes, I guess
02:05:47 <kmc> i agree
02:05:48 <kallisti> locks are good, use those.
02:05:50 <Sgeo> Would make more sense
02:05:52 <oerjan> * kallisti thinks +qing elliott was probably justified. <-- i _guess_ i should have checked if he'd stopped first
02:05:59 <Sgeo> But there's still the type-safety issue
02:06:03 <kallisti> oerjan: eventually, I'm sure.
02:06:05 * oerjan whistles guiltily
02:06:36 <oerjan> well i _did_ eventually, by which point he was already lashing out
02:07:47 <Sgeo> Should I worry about the type-safety thing to this degree?
02:07:55 <kmc> what's the type-safety issue
02:08:02 <kallisti> oerjan: but the fact that he's a regular and might stop eventually doesn't really excuse spamming the channel. Also the fact that you didn't ban a new person once who was spamming does not magically make all future spam by anyone valid (or at least it shouldn't)
02:08:44 <Sgeo> AW_EVENT_AVATAR_ADD doesn't particularly define AW_OBJECT_TYPE, so why should I be able to attempt to access the AW_OBJECT_TYPE attribute when I get an AW_EVENT_AVATAR_ADD event?
02:09:46 <kmc> it's already too low-level if the user-specified callbacks have to explicitly "read attributes"
02:09:59 <kmc> the wrapper should read all the defined attributes and pass them as arguments or in a record
02:10:24 <Sgeo> Well, all the records defined for the event, right?
02:10:36 <kmc> ?
02:10:44 <Sgeo> err, all the attributes
02:10:48 <kmc> yes
02:11:04 <kmc> you make a record for each event type, with a field for each attribute defined by that event
02:11:27 <Sgeo> The set of attributes that AW_EVENT_OBJECT_ADD and AW_EVENT_OBJECT_CLICK define, for example, largely overlap.
02:11:43 <kmc> sure
02:11:46 <Sgeo> I want to make an AWObject data type, that can read these records
02:12:05 <Sgeo> But if I want it to be able to pull from both AW_EVENT_OBJECT_ADD and AW_EVENT_OBJECT_CLICk
02:12:08 <Sgeo> That's a bit difficult
02:12:23 <kmc> why
02:12:39 <kmc> the record for ObjectAdd and the record for ObjectClick can both have an Object field
02:12:56 <Sgeo> I guess doing it like that is more work for me, but I guess I can
02:13:04 <kmc> yeah
02:13:08 <Sgeo> Write a thing to determine overlaps
02:13:10 <kmc> you'll have to write a bunch of boilerplate
02:13:11 <Sgeo> Try to come up with names
02:13:23 <kmc> how many event types are there
02:13:30 <Sgeo> 53.
02:13:36 <kmc> yeah
02:13:38 <Sgeo> I also have to deal with "callbacks"
02:13:44 <kmc> haskell is pretty boilerplatey
02:13:55 <kmc> moreso when interacting with foreign libraries
02:14:02 <Sgeo> Of which there are 37.
02:14:24 <Sgeo> I'm going to be writing scripts to write Haskell code for me, that's a given
02:14:38 <monqy> what sort of
02:14:39 <monqy> scripts
02:14:42 <Gregor> "ALERT: Police investigate intimidation near campus. Purdue University police are investigating a report of
02:14:45 <Gregor> intimidation with a knife in the area of Beering and Tower
02:14:47 <Gregor> drives. Avoid the area.
02:14:49 <Gregor> The suspects are described as a white male, 5-7 inches tall,
02:14:53 <Gregor> wearing a brown coat, and a white male with blonde hair and red
02:14:55 <Gregor> coat."
02:14:56 <kallisti> lol
02:14:57 <Gregor> Must've been a big knife.
02:15:07 <Sgeo> Going to read text files and generate code based on them
02:15:08 <kallisti> Gregor: it's an angry gnome
02:15:31 <Gregor> kallisti: Gnomes CAN be pretty intimidating.
02:15:44 <kallisti> yeah dude they'll fuck your shit UP.
02:15:53 -!- Phantom_Hoover has quit (Quit: Leaving).
02:16:43 <kallisti> Sgeo: so wait if you pass every relevant attribute to the event handler doesn't that mean that you have to lock all of the attributes whenever any of them are being read/written?
02:16:59 <Sgeo> kallisti, I just lock the global lock
02:17:11 <kallisti> so, yes?
02:17:18 <Sgeo> Yes
02:17:24 <kallisti> I guess that's fine..
02:17:48 <kmc> "no global locks are bad, do it another way" "like what?" *crickets chirping*
02:18:15 <Sgeo> kmc, if someone initializes the library twice, who knows what would happen, even with a global lock
02:18:25 <Gregor> It's a good thing they weren't blue.
02:18:27 <Sgeo> Unless I specifically block that from happening
02:18:32 <Gregor> I don't think I can deal with smurfs on campus.
02:18:34 <kallisti> well global locks are fine, but it seems a bit "wasteful" to lock every attribute whenever only one or two are needed.
02:18:51 <Sgeo> kallisti, efficiency isn't my main goal here.
02:19:11 <kallisti> well it's not really efficiency...
02:19:20 <kallisti> it's more like... good concurrency, I guess.
02:19:46 <kallisti> but given the limitations
02:19:50 <kallisti> I see nothing wrong with locks.
02:19:52 <kmc> Sgeo, the global lock can prevent them from initializing twice, no?
02:20:11 <Sgeo> The global lock is going to be unlocked most of the time
02:20:30 <kmc> you can hold the lock during initialization
02:20:41 <kmc> and also have another bit of global state that says "was the library already initialized"
02:20:45 <kmc> (this can be just a C global variable)
02:21:01 <Sgeo> I'm not about to start writing C code for this.
02:21:08 <kmc> what
02:21:26 <kmc> a C global variable is one line of code
02:21:29 <kmc> come on
02:21:37 <kallisti> Sgeo: wait isn't AW like a networky thing or something?
02:21:38 <Sgeo> One line of code... where?
02:21:54 <kmc> Sgeo, you're building your library with Cabal, right?
02:22:12 <Sgeo> kallisti, yes. It's against the TOS to try to connect outside of the SDK. And I have no idea what the protocol is like anyway.
02:22:24 <Sgeo> kmc, I kind of figured I could deal with that later >.>
02:22:28 <kmc> ok
02:22:37 <kmc> well deal with it now, and including C code becomes very easy
02:22:41 <kmc> https://github.com/kmcallister/global-lock/blob/master/global-lock.cabal#L34
02:22:52 <Sgeo> kmc, why can't I just make the global variable in Haskell?
02:22:59 <kmc> how
02:22:59 <Sgeo> Like I currently am doing with the global lock?
02:23:03 <Sgeo> unsafePerformIO
02:23:07 <kallisti> IORef dawg
02:23:20 <kmc> Sgeo, are you planning to use it on GHC before 7.4?
02:23:27 <Sgeo> o.O yes why
02:23:29 <kmc> http://mainisusuallyafunction.blogspot.com/2011/10/thunks-and-lazy-blackholes-introduction.html
02:23:58 <kmc> tl;dr is "GHC < 7.4 has a bug where top-level unsafePerformIO will sometimes happen twice"
02:24:43 * Sgeo shoots self
02:24:51 <kmc> yeah that was basically my reaction
02:24:51 <oerjan> <Gregor> I don't think I can deal with smurfs on campus. <-- i bet their blue color contains chromium.
02:25:01 <kmc> shoots self, then writes long blog post
02:25:15 <Sgeo> Can I just include your global-lock thing?
02:25:49 <kmc> yes
02:26:11 <kmc> either just import the library, or copy the code in
02:26:26 <kmc> in the former case it's really a *global* lock; other libraries which use it will also be locked out
02:26:51 <kmc> the description of how it works is here: http://mainisusuallyafunction.blogspot.com/2011/11/global-locking-through-stableptr.html
02:27:41 <Sgeo> It works on Windows, right?
02:28:39 <kmc> i think so
02:28:44 <kmc> i haven't tested it on windows
02:29:08 <kmc> it requires that your C compiler is GCC 4.1 or newer
02:29:18 <kmc> which I think is true for Cabal builds on Windows, but I wouldn't know
02:34:00 <kallisti> oh so that's why GHC's C output has so many z's everywhere.
02:34:44 <kallisti> I thought GHC waz juzt trying to be cool
02:42:03 <oerjan> zat zoo
02:46:44 -!- sebbu2 has changed nick to sebbu.
02:58:11 -!- pikhq_ has joined.
02:58:42 <kmc> haha
02:58:49 <kmc> ghcizzle fo shizzle
02:59:27 -!- pikhq has quit (Ping timeout: 252 seconds).
03:19:25 -!- zzo38 has joined.
03:33:41 -!- MDude has quit (Ping timeout: 240 seconds).
03:41:56 <tswett> Lessee. Rubber will be #, metal will be space, copper and zinc will be + and -. Then I guess arsenic and boron can be , and ., and finally holes and electrons can be... ^ and *, why not.
03:42:46 <tswett> That is definitely something that makes sense without context.
03:48:42 * Sgeo is thinking game
03:54:57 <oerjan> space is a metal
04:05:55 <kmc> space is a metal *huge bongrip*
04:06:24 <kmc> sounds like an esolang based on (or themed around) an abstract simulation of semiconductors
04:06:39 <kmc> i suppose holes and electrons as + and - is too obvious?
04:11:05 <tswett> That's precisely what it is. An esolang based on an abstract simulation of semiconductors.
04:11:25 <tswett> I figured + and - should definitely be zinc and copper. Since, y'know, zinc and copper are terminals.
04:11:51 <tswett> Those symbols are usually written on the terminals, not on the particles themselves. }:)
04:14:11 -!- MDude has joined.
04:14:35 -!- primo_ has joined.
04:15:39 <tswett> http://pastebin.com/D0UyfE2F - I'm sort of ashamed to have written this.
04:16:01 -!- primo has quit (Ping timeout: 245 seconds).
04:22:11 <kmc> what role do zinc and copper play here
04:22:26 <kmc> i'm guessing As and B are dopants
04:28:02 <tswett> Yeah. Zinc and copper are electrodes; they carry a constant charge.
04:29:15 <tswett> To be precise, zinc and copper only admit electrons and holes, respectively, and when an electron moves off of zinc, it leaves a copy behind, and likewise for holes and copper.
04:30:06 -!- MDude has changed nick to MSleep.
05:24:44 -!- pir^2 has quit (Quit: I found a *real* proof, it's just too long to fit in the quit message. --Fermat).
05:43:29 <monqy> i like the new spambot
05:43:32 <monqy> [http://wikispambot.com best seo software]
06:35:29 -!- Patashu has quit (Ping timeout: 260 seconds).
06:49:20 -!- pikhq has joined.
06:49:41 -!- pikhq_ has quit (Ping timeout: 252 seconds).
06:54:30 -!- primo_ has quit (Read error: Connection reset by peer).
06:55:04 -!- GreaseMonkey has quit (Quit: The Other Game).
06:55:29 -!- primo has joined.
07:01:14 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
07:11:08 -!- Vorpal has joined.
07:24:56 -!- oerjan has quit (Quit: Good night).
07:38:43 -!- azaq23 has quit (Quit: Leaving.).
07:47:01 <zzo38> OK! No!
08:02:29 -!- itidus21 has joined.
08:03:22 <zzo38> How exactly does Eilenberg-Moore category work?
08:04:19 <kmc> tswett, huh, does that make sense physically?
08:04:28 <kmc> the idea is that each one is wired to one end of a battery?
08:09:04 -!- zzo38 has quit (Remote host closed the connection).
08:41:04 <augur> fizzie: ping
08:50:25 <ais523> sorry, mischan
08:57:36 -!- Phantom_Hoover has joined.
09:19:20 -!- Ngevd has joined.
09:20:10 <Ngevd> Hello!
09:22:22 <ais523> hi
09:23:25 -!- Taneb has joined.
09:27:00 -!- Ngevd has quit (Ping timeout: 248 seconds).
09:29:12 -!- Taneb has changed nick to Ngevd.
09:30:12 -!- Patashu has joined.
09:54:27 -!- Taneb has joined.
09:55:28 -!- Ngevd has quit (Ping timeout: 252 seconds).
10:00:00 -!- Taneb has quit (Ping timeout: 244 seconds).
10:00:53 -!- Taneb has joined.
10:06:27 -!- Taneb has quit (Read error: Connection reset by peer).
10:06:59 -!- Ngevd has joined.
10:26:08 <Sgeo> "Janeway: Sorry. I'm not a nerdy Trekkie like you."
10:26:11 <Sgeo> http://fiveminute.net/voyager/fiver.php?ep=yearofhell
10:32:15 <Phantom_Hoover> Have I mentioned how annoying it was when the very first 5-minute DS9 spoiled the finale of the 6th season and one of the subplots of the 7th.
10:33:16 <Sgeo> o.O
10:35:06 <Sgeo> They all reference future episodes
10:35:20 <Sgeo> The early TNG ones make constant reference to Yar dying
10:39:45 <Sgeo> http://www.fiveminute.net/voyager/fiver.php?ep=threshold
10:40:10 <kmc> http://twitter.com/tng_s8
10:43:09 <Sgeo> "Guinan invents an amazing new "single level" chess."
10:56:07 -!- ais523 has quit (Ping timeout: 240 seconds).
11:20:30 -!- monqy has quit (Quit: hello).
11:24:09 -!- pikhq_ has joined.
11:24:11 -!- pikhq has quit (Ping timeout: 240 seconds).
11:35:54 -!- zzo38 has joined.
11:36:11 <zzo38> When will they invent Vatican III?
11:46:32 -!- oklopol has quit (Ping timeout: 248 seconds).
11:55:16 <itidus21> Sgeo: i have imagined that you could fold a chessboard onto one long strip and make it function using strange adhoc rules much like ptolemy's astronomy manages to work
11:55:49 <itidus21> it would be awfully weird though
11:56:09 <Sgeo> As in functioning essentially identically to regular chess rules?
11:56:15 <Sgeo> Sounds interesting
11:56:32 <itidus21> exactly the same rules, just a different board presentation
11:57:10 <Sgeo> I thought you were thinking "A queen on square XYZ can move here, or here, or leap N amount" etc.
11:58:33 <itidus21> one long strip like RNBQKBNRPPPPPPPP????????????????????????????????PPPPPPPPRNBQKBNR
11:59:18 <itidus21> Sgeo: what you thought i was thinking was more inventive than what i was actually thinking. similar to misheard lyrics
11:59:41 <itidus21> in this way, knowing what i actually meant is detrimental
11:59:45 <zzo38> Actually, I managed to make a chess variant that functions on one strip but the same as normal chess
11:59:53 <zzo38> I did that many years ago
12:01:18 <zzo38> http://www.chessvariants.org/index/msdisplay.php?itemid=MSeeeeeeeeeeeeee ("This game is supposed to be as different from chess as possible while still being the same as chess.")
12:05:13 <zzo38> What was yours ideas?
12:05:46 <itidus21> lol.. my idea was to maintain the logic of 2d squares just shifting them into a line
12:06:12 <itidus21> as if to obfuscate the presentation of the state of the board
12:07:46 <zzo38> You could do something also making 3D board into 2D, which is then made into 1D, for example, too.
12:08:29 <zzo38> itidus21: I think I managed to do so, writing how they work in 1D in the article I linked. But there is fire in between each row
12:08:53 <zzo38> So, the fire will restrict some moves as they are supposed to be restrict
12:12:15 <itidus21> i see that 2d 64 square board could become a 4x4x4 3d board
12:12:45 <itidus21> that could be quite confusing
12:13:42 <itidus21> so in 4d it could be 4x4x2x2 eh
12:14:26 <Ngevd> 6d 2x2x2x2x2x2?
12:14:39 <itidus21> ya
12:14:56 <Phantom_Hoover> They're all just pale imitations of continuous chess.
12:15:04 <itidus21> king is at 1,1,1,1,1,1 moving to 1,1,1,0,1,1
12:15:21 <Ngevd> itidus21, that puts you into check
12:15:54 <itidus21> hmm i wonder if such a move is even valid
12:16:21 <itidus21> i see what i did there
12:16:27 <itidus21> i just counted the squares in binary :-s
12:18:11 <itidus21> zzo38: my idea has died. ill have a look at your chess variant
12:23:30 <itidus21> It's Wacky.
12:26:44 -!- Ngevd has quit (Ping timeout: 244 seconds).
12:26:47 <zzo38> Yes.
12:41:57 -!- Ngevd has joined.
13:01:54 <Ngevd> > flip id (join (.)) (ap (.) (flip id (ap (.) (join (.))) (join (.)))) (+1) 0
13:01:59 <lambdabot> mueval: ExitFailure 1
13:02:00 <lambdabot> mueval: Prelude.undefined
13:03:35 <Sgeo> itidus21, how has your idea died?
13:04:15 <itidus21> interest faded
13:11:38 -!- augur has changed nick to lagrangian.
13:11:59 -!- lagrangian has changed nick to augur.
13:17:05 <kallisti> what vcs do you guys use while programming your own stuff?
13:17:22 * kallisti has decided he needs to be using VCS while programming to avoid rewriting code all the time.
13:17:33 <Deewiant> git
13:18:20 <kmc> git
13:18:22 <Ngevd> VCS?
13:18:36 <kmc> using version control is incredibly important
13:18:50 <kmc> git will help your workflow in a hundred different ways
13:18:56 <kmc> it's not just for committing code to push upstream
13:19:15 <kmc> it's an integral part of development
13:19:30 -!- Ngevd has quit (Quit: Goodbye).
13:29:08 -!- kmc has quit (Quit: Leaving).
13:51:37 -!- kmc has joined.
13:54:25 <itidus21> zzo38: to get down to the guts of the matter i don't understand what activity one is supposed to engage in during chess
13:55:11 -!- primo has quit (Read error: Connection reset by peer).
13:55:36 -!- primo has joined.
13:55:49 <zzo38> itidus21: The activity of the chess is to play the game of chess. And then win or lose or draw.
13:56:13 <itidus21> is it related to the reason that runners in an olympic sprint all sprint at once? the same action can be done of course without any other runners
13:56:45 <itidus21> and, a car race doesn't need more than 1 car on the road at one time
13:58:01 <zzo38> itidus21: It depend on what kind of car race it is. You could do running race and car race separately or simultaneously. In chess, you have to take turn.
13:58:47 <itidus21> so in running and car racing it is acknowledged that doing the action with others present changes the action in some way
13:59:52 <itidus21> so what does it mean, is difficult to say
14:01:29 <zzo38> itidus21: It might.
14:02:40 <itidus21> taken to extremes, its related to the idea of would life be worth living if you were the last human on earth
14:03:19 <itidus21> would X be worth doing if you were doing it alone
14:03:40 <itidus21> hmm .. runners train alone in order to race together :-?
14:03:58 <itidus21> but they also know that they're not the only ones training
14:04:16 -!- ais523 has joined.
14:05:18 -!- primo has quit (Read error: Connection reset by peer).
14:05:28 <itidus21> blahh
14:05:41 -!- primo has joined.
14:09:07 -!- pikhq_ has quit (Ping timeout: 248 seconds).
14:09:07 -!- pikhq has joined.
14:12:05 <zzo38> You can play solitaire game too. Including running by yourself for exercise or to time yourself or just in case you like to run a lot
14:12:29 <itidus21> hmmmm
14:12:35 <itidus21> i guess its all a matter of balance
14:13:57 -!- primo_ has joined.
14:16:04 -!- primo has quit (Ping timeout: 268 seconds).
14:21:08 -!- primo_ has quit (Ping timeout: 252 seconds).
14:21:25 -!- primo_ has joined.
14:28:33 -!- primo_ has quit (Read error: Connection reset by peer).
14:28:59 -!- primo_ has joined.
14:44:00 -!- primo__ has joined.
14:46:56 -!- primo__ has quit (Read error: Connection reset by peer).
14:47:06 -!- primo_ has quit (Ping timeout: 252 seconds).
14:47:11 -!- primo__ has joined.
14:55:45 <tswett> kmc: yeah, the idea is that zinc and copper are both stuck into lemons.
14:56:24 <ais523> tswett: potatoes work too
14:57:10 <Phantom_Hoover> Anything electrolytic works.
14:57:16 <Phantom_Hoover> Blood too, I guess.
14:58:15 <Phantom_Hoover> Vomit?
15:00:18 -!- myndzi has quit (Ping timeout: 252 seconds).
15:02:06 <zzo38> On the CLC-INTERCAL phlog: "captcha = completely automatic system to determine that the webmaster is an arsehole."
15:05:34 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
15:10:19 -!- Ngevd has joined.
15:10:27 <Ngevd> Hello!
15:10:50 -!- myndzi has joined.
15:12:54 <ais523> hi¡
15:13:05 <tswett> hOLA,
15:13:32 <Ngevd> What's a [::]
15:13:39 <Ngevd> And who told tswett about Homestuck?
15:13:43 <tswett> Sgeo.
15:14:34 <Phantom_Hoover> Oh god, am I indirectly responsible for your Homestuck mania?
15:14:49 <Phantom_Hoover> @tell elliott THIS IS ALL YOUR THIRD-ORDER FAULT
15:14:49 <tswett> Phantom_Hoover: did you tell Sgeo about Homestuck?
15:14:49 <lambdabot> Consider it noted.
15:14:58 <tswett> And did elliott tell you about Homestuck?
15:15:09 <Phantom_Hoover> tswett, I said "Go read Homestuck." to him and he did
15:15:28 <tswett> If yes and yes, then... yes, elliott is responsible for the violent calamity that happened two minutes and twenty seconds ago.
15:15:30 <Ngevd> I found about Homestuck COMPLETELY INDEPENDANTLY
15:15:47 -!- Nisstyre has quit (Ping timeout: 240 seconds).
15:15:49 <Phantom_Hoover> And not so much that but I was really bored and I asked him if it was worth reading and he decided to read through again and get past the place he'd petered out around.
15:16:24 -!- primo_ has joined.
15:18:49 -!- primo__ has quit (Ping timeout: 248 seconds).
15:19:07 <zzo38> I made a gopher client for Windows (if you have UNIX, there is a lot of better programs you can use), there should be icon for the main window, I don't have any. Do you?
15:19:36 <olsner> a gopher, perhaps
15:19:52 <zzo38> olsner: Yes, but I don't have one
15:20:27 <Ngevd> Of course, my love of Homestuck and esoteric programming languages both go back to Murderous Maths books
15:20:47 <Phantom_Hoover> Ah, I remember those.
15:21:13 <Phantom_Hoover> I don't remember them having Homestuck or esolangs in them.
15:21:24 <Ngevd> Yes, but they have a website
15:21:39 <Phantom_Hoover> In fact, the former is chronologically impossible, unless Kjartan Poskitt is a time traveller.
15:21:39 <Phantom_Hoover> Ah, of course.
15:21:40 <Ngevd> Which contains a link to the Unnofficial Murderous Maths Forum
15:21:51 <Ngevd> Which contains a thread with a link to Irregular Webcomic
15:21:54 <Phantom_Hoover> I too have been induced to engage in things because both have a website.
15:21:57 <Ngevd> And here is where it diverges
15:22:22 <Ngevd> Irregular Webcomic leads to dangermouse.net and TVTropes
15:22:42 <Ngevd> Which lead to esoteric programming and Homestuck
15:23:10 <tswett> I guess I know Sgeo from here, so how do I know of the existence of here...
15:23:27 <tswett> Probably from Brainfuck's Wikipedia article.
15:23:32 <Phantom_Hoover> Oh my god Poskitt wrote the theme tune for SMart and Brum.
15:23:51 * Sgeo has no idea how he got here
15:24:01 <Phantom_Hoover> Oh my god I forgot how incredibly 90s the Murderous Maths website is.
15:24:32 <Ngevd> I remember SMart and Brum
15:25:25 <itidus21> quick question. is there a convention for implying subscript or superscript since it can't be typed here?
15:25:53 <tswett> Usually, we do what LaTeX does, and use ^ for supserscript and _ for subscript.
15:26:01 <itidus21> ah cool
15:26:31 -!- primo__ has joined.
15:26:31 -!- primo_ has quit (Read error: Connection reset by peer).
15:27:17 <itidus21> hmm... but what if a term has both a superscript and a subscript does superscript come first? like T^2_3
15:27:36 <itidus21> i guess it wouldn't be quite that easy
15:27:42 <tswett> Depends on what you're trying to say, I guess.
15:27:43 <zzo38> itidus21: At least in Plain TeX, it doesn't matter. I suggest writing it depending on what you meaning
15:27:58 <itidus21> if i want the 2 stacked on the 3
15:27:59 <zzo38> Such as, put the subscript first if the superscript is an exponent
15:28:16 <zzo38> But if the superscript is a component of the same thing, put superscript first.
15:28:21 <zzo38> Both ways result in same printout
15:28:30 <tswett> I'd usually interpret "T^2_3" as meaning something like "the third incarnation of the square of T", and "T_3^2" as "the square of the third incarnation of T".
15:28:42 <zzo38> LaTeX probably does the same
15:28:46 <itidus21> ah, at least it's not recursive :D
15:28:50 <itidus21> thats helpful
15:29:27 <itidus21> like at least it's not the subscript of the superscript
15:30:36 <tswett> Right.
15:30:37 <itidus21> i don't know math well enough so ill just stick with super first
15:31:00 <tswett> If you wanted that, I guess you could say something like T^{2_3}.
15:31:06 -!- azaq23 has joined.
15:31:14 -!- Nisstyre has joined.
15:31:53 <itidus21> ok .. good enugh. thanks
15:32:56 <itidus21> that allows me to cut and paste something like "The limit of a sequence (x_n) is, intuitively, the unique number or point L (if it exists) such that the terms of the sequence become arbitrarily close to L for "large" values of n."
15:33:27 <tswett> Aye.
15:46:53 -!- primo_ has joined.
15:47:27 -!- Nisstyre has quit (Ping timeout: 240 seconds).
15:49:07 -!- primo__ has quit (Ping timeout: 240 seconds).
15:49:56 -!- Taneb has joined.
15:50:03 -!- Ngevd has quit (Read error: Connection reset by peer).
15:52:04 <zzo38> Searching "gopher" on Wikimedia Commons results in many things, including gopher tortoise, gopher snake, and screenshots of Firefox and GopherVR. Nothing seem proper for use as a 32x32 icon, though.
15:53:31 <zzo38> There is also "gopher wood" mentioned in the Bible although its meaning is unclear.
15:53:31 <Sgeo> GopherVR?
15:54:25 <zzo38> GopherVR is a gopher client with 3D view.
15:54:30 -!- Taneb has changed nick to Ngevd.
15:54:54 <Ngevd> Anyone know what a Haskell [::] is
15:54:56 <Ngevd> ?
15:55:14 <tswett> [::] doesn't look like valid Haskell. Maybe it's some extension.
15:55:20 <tswett> Like Template Haskell or something.
15:55:27 <Ngevd> It's got a Monad instance
15:55:41 <tswett> As in "instance Monad [::] where"?
15:55:44 <zzo38> I don't think [::] is a valid Template Haskell code either
15:56:42 <Ngevd> It's listed in the Haskell documentation for Control.Monad as having an instance for Functor and Monad
15:57:05 <Ngevd> But not MonadPlus or Applicative
15:58:00 <tswett> Do you have a URL or something for this?
15:58:13 <Ngevd> http://www.haskell.org/ghc/docs/7.0-latest/html/libraries/base-4.3.1.0/Control-Monad.html
15:58:22 <zzo38> But all monads are supposed to be applicative (at least in cartesian closed categories, I think; or maybe not)
15:58:32 <Ngevd> They're supposed to be.
15:58:36 <Ngevd> Doesn't mean they are.
15:58:41 <Ngevd> It's not required (yet)
15:58:54 -!- primo_ has quit (Ping timeout: 252 seconds).
15:59:02 <zzo38> :: is also a reserved word, it cannot be the name of anything
15:59:20 <tswett> Maybe it's one of those type system extensions.
15:59:58 -!- primo_ has joined.
16:02:40 -!- Nisstyre has joined.
16:02:42 <zzo38> Does all monads being applicative have anything to do with cartesian closed categories?
16:02:57 <Ngevd> I have no idea
16:07:51 -!- primo_ has quit (Read error: Connection reset by peer).
16:08:18 -!- primo_ has joined.
16:10:32 <ais523> zzo38: it wouldn't surprise me
16:11:02 <ais523> if you're not in a cartesian closed category, you have to worry about the difference between a monad and a strong monad
16:11:12 <ais523> I can't remember where it goes from there, but I suspect it makes a difference
16:13:13 -!- CHeReP has quit (Quit: This computer has gone to sleep).
16:13:35 -!- Phantom__Hoover has joined.
16:15:27 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
16:15:50 <Sgeo> HList erases labels at runtime
16:16:04 <Sgeo> Yet I have ... data associated with each label
16:16:20 <Sgeo> I think the compile-time programming involved is going to break my brain
16:21:00 -!- primo has joined.
16:24:06 -!- primo_ has quit (Ping timeout: 260 seconds).
16:26:18 -!- primo_ has joined.
16:29:08 -!- primo has quit (Ping timeout: 255 seconds).
16:29:58 <kallisti> I wonder if perl has anything like an inverse strftime.
16:30:04 <kallisti> that isn't "just use regex"
16:30:48 <ais523> kallisti: it does, in CPAN somewhere
16:30:51 <ais523> I know because I've used it
16:31:14 <kallisti> ais523: turns out it was a dumb idea to store the time as its strftime string
16:31:18 <ais523> use DateTime::Format::Strptime qw/strptime/;
16:31:19 <kallisti> I should have just stored it as its time value
16:31:22 <kallisti> then stringified later
16:31:23 <ais523> it's the reverse of strftime
16:31:24 <kallisti> ah cool
16:31:41 <ais523> although you'll have to install it from CPAN
16:31:47 <kallisti> no problem
16:32:07 -!- primo_ has quit (Ping timeout: 240 seconds).
16:32:19 * Sgeo hits everyone with an HList
16:32:24 -!- primo_ has joined.
16:32:44 * ais523 notices that the HList is pure and refuses to allow it to do anything other than make a slightly wounded copy of me
16:32:46 <kallisti> Sgeo: I think you probably don't want HList
16:33:34 <kallisti> ais523: hmm there's also a Posix::strptime
16:33:38 <kallisti> *POSIX
16:33:40 <Sgeo> kallisti, it, or something similar, is the best way I can think of to stay somewhat close to just knowing the structure of my wrapper and being able to use the C docs for details, while being type-safe
16:33:45 <ais523> kallisti: that probably calls out to the libc version
16:33:49 <ais523> which probably isn't what you want
16:34:12 <kallisti> what's the difference?
16:34:20 -!- primo_ has quit (Read error: Connection reset by peer).
16:34:42 -!- primo_ has joined.
16:34:54 <kallisti> it certainly looks like what I want.
16:35:50 <kallisti> hmmm
16:36:07 <kallisti> I guess I could store my time values as a DateTime instead.
16:36:17 <kallisti> as I'll basically end up constructing one later.
16:36:43 -!- primo_ has quit (Read error: Connection reset by peer).
16:36:58 -!- primo_ has joined.
16:38:23 <ais523> kallisti: the difference is that POSIX::strptime is the reverse of C's strftime, not Perl's strftime
16:38:28 <ais523> I imagine Perl's probably has more features
16:38:42 <ais523> and fits better with Perl for other reasons
16:39:14 -!- primo_ has quit (Read error: Connection reset by peer).
16:39:30 <kallisti> ais523: it looks like it's pretty much the inverse of perls
16:39:32 -!- primo_ has joined.
16:39:39 <ais523> hmm, OK
16:39:47 <kallisti> but I think I actually will use this one.
16:40:16 <kallisti> since I need to use all of this DateTime stuff anyways to calculate date differences
16:42:52 * Sgeo just had a terrible yet fun idea about something to do with his wrapper
16:43:06 <Sgeo> Not even sure how to do it or if it's possible.
16:46:47 <kallisti> ais523: the only thing that really makes these functions more perly is that it uses a list of time units instead of the time_t struct.
16:47:06 <kallisti> it may have some more date specifiers that I'm unaware of.
16:47:21 <ais523> probably it handles timezones correctly
16:47:28 <ais523> time_t can't record a timezone
16:47:55 -!- primo__ has joined.
16:47:56 <kallisti> ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
16:48:00 <kallisti> nope
16:48:04 <kallisti> just localtime and gmtime
16:48:22 <ais523> ah, OK
16:48:40 <kallisti> strftime(fmt, sec, min, hour, mday, mon, year, wday = -1, yday = -1, isdst = -1)
16:48:43 <kallisti> same thing
16:49:01 <kallisti> DateTime handles timezones correctly though
16:49:38 -!- primo_ has quit (Ping timeout: 248 seconds).
16:50:21 <kallisti> ah actually I didn't see that there's a DateTime->from_epoch
16:50:29 <kallisti> so I'll just store the time values.
16:54:13 <ais523> help someone just emailed me asking me to explain the joke on http://esolangs.org/wiki/Java
16:54:50 <ais523> any advice on how I should reply?
16:56:21 <kallisti> "you best be trollin'"
16:59:30 <ais523> that's a bit out of character for me
17:02:08 <Ngevd> "I assume you are trolling."
17:02:48 <ais523> Ngevd: the thing is, I don't think he is
17:02:50 <ais523> or she
17:02:53 <ais523> based on past interactions
17:03:52 <kallisti> !perl my @x = 1..5; print "@x"
17:03:55 <EgoBot> 1 2 3 4 5
17:06:24 <Ngevd> Hang on...
17:06:31 <itidus21> just tell them that java's popularity, influence on (according to wiki) Ada 2005, BeanShell, C#, Clojure, D, ECMAScript, Groovy, J#, JavaScript, PHP, Python, Scala, Vala.. and cross-platform compatability all achieved in a short span of years
17:06:38 <itidus21> make calling it esoteric exceedingly ironic
17:06:52 <Ngevd> The only way for the cat to be both alive and dead is that if the cat is outside the universe
17:06:53 <itidus21> no wait..
17:07:08 <itidus21> mention the fact that java support is built into many operating systems
17:07:15 <kallisti> !perl my @x = map {$_ if $_ < 3} 1..5; print "@x"
17:07:15 <EgoBot> 1 2
17:07:21 <kallisti> !perl my @x = map {$_ if $_ < 3} 1..5; print "@x" . "stuff"
17:07:21 <itidus21> (i am not sure on this)
17:07:21 <EgoBot> 1 2 stuff
17:07:25 <kallisti> nooooooo
17:07:32 <kallisti> !perl my @x = map {$_ if $_ < 3;()} 1..5; print "@x" . "stuff"
17:07:32 <EgoBot> stuff
17:07:36 <kallisti> NOOOOOO
17:07:46 <Sgeo> Java support is built into operating systems these days?
17:07:52 <kallisti> !perl my @x = map {return $_ if $_ < 3;()} 1..5; print "@x" . "stuff"
17:07:53 <EgoBot> Can't return outside a subroutine at /tmp/input.2153 line 1.
17:07:53 <itidus21> i don't know
17:07:55 <itidus21> is it?
17:08:06 <itidus21> i mean........
17:08:12 <Sgeo> I didn't think so, but you said it was
17:08:13 <kallisti> !perl my @x = map {$_ < 3? $_ : ()} 1..5; print "@x" . "stuff"
17:08:13 <EgoBot> 1 2stuff
17:08:14 <itidus21> obviously i think i can assume solaris has it
17:08:32 <itidus21> but
17:08:38 * kallisti is kind of annoyed that perl5 does not have perl6s fun context stuff for || and friends
17:08:38 <itidus21> its more about windows that im concerned
17:09:18 <itidus21> well some phones come with java
17:09:27 <itidus21> but that isn't the same thing i know
17:09:41 <itidus21> very similar though :P
17:10:19 <itidus21> "Google and Android, Inc. have chosen to use Java as a key pillar in the creation of the Android operating system"
17:10:26 <kallisti> Android pretty much has built-in support -- yes
17:11:22 <itidus21> "There are 930 million Java Runtime Environment downloads each year and 3 billion mobile phones run Java."
17:11:36 <itidus21> its not esoteric :D
17:12:34 <itidus21> i think the essence of the joke though is the idea that it can seem as if whoever made it was pulling a practical joke on the world
17:13:57 <itidus21> also, having many syntax elements almost indistinguishable from c++ doesn't help towards being esoteric
17:14:02 <Sgeo> I thought the joke was that it's such an annoying language to use that it deserves to be shelved away as esoteric
17:15:18 <itidus21> such as { a = a + b; a += b; a++; }
17:16:07 <itidus21> the first one is stolen from algebra i admit
17:17:04 <itidus21> blah..
17:17:38 -!- Klisz has joined.
17:18:20 <itidus21> i'm not ready for etymology of syntax
17:44:19 <kallisti> return unless my $count = @{$state->{$nick} // []}
17:44:43 <kallisti> I still think perl resembles something like this: "hello my name is weoij!@;;!@$!@%%@!221;"
17:45:40 <Ngevd> :t (|>)
17:45:41 <lambdabot> Not in scope: `|>'
17:46:04 <ais523> I'm still amused that the actual reason that Perl doesn't require you to quote string literals in all contexts is to make it easier to write poetry that's also valid Perl
17:50:01 <Sgeo> o.O
17:51:55 * tswett suddenly realizes that his noit o' mnain gelb diode doesn't *actually* allow current to pass in only one direction.
17:52:05 <tswett> It doesn't admit electrons, nor holes, in either direction.
17:54:27 <tswett> The only thing you can do with it is feed in electrons one way and holes the other way.
17:54:29 <kallisti> figuring out how to arrange conditionals used to be difficult
17:54:34 <kallisti> then I learned DeMorgan's law.
17:54:38 <kallisti> fuck arrows
17:54:48 <kallisti> *laws
17:54:53 <kallisti> (??????)
17:55:18 <kallisti> I guess there are two of them, yes.
18:00:28 <zzo38> I think constellations really have two uses, one use is to identify stars you are viewing, and another use is for naming stars after the constellation they belong to.
18:00:50 -!- Phantom__Hoover has quit (Quit: Leaving).
18:01:01 -!- Phantom__Hoover has joined.
18:01:12 <zzo38> (The Sun doesn't count because it is too close to the Earth.)
18:01:33 <tswett> Do we say that the Sun moves between constellations?
18:02:57 <zzo38> tswett: Well, due to its movement (relative to the Earth), it will pass the thirteen constellations of the ecliptic.
18:03:32 * tswett nods.
18:04:15 <zzo38> I like that IAU has files to specify constellation boundaries for each one
18:05:16 <tswett> Where does Ophiuchus fall, anyway... between Vriska and Gamzee, it looks like.
18:05:50 <tswett> No, silly me. Equius, not Gamzee.
18:07:10 <Phantom__Hoover> what have i done
18:07:16 * Phantom__Hoover seppuku
18:07:31 <tswett> Phantom__Hoover: now you've got tiger! }:D
18:23:53 <tswett> There. Now noit o' mnain gelb is a thing.
18:24:05 <tswett> Like noit o' mnain worb, but you can make transistors.
18:24:21 <tswett> And a transistor's gain is probably less than 1.
18:25:26 <ais523> we really need transistors with gain greater than 1
18:25:30 <ais523> or less than -1, would work just as well
18:25:33 <ais523> probably better, actually
18:28:26 <tswett> I think the gain of a transistor could be made arbitrarily high by making electrons and holes refuse to cancel each other out most of the time.
18:38:07 <itidus21> so someone on wiki has said
18:38:33 <itidus21> "From a certain point of view, typed lambda calculi can be seen as refinements of the untyped lambda calculus but from another point of view, they can also be considered the more fundamental theory and untyped lambda calculus a special case with only one type." .. i imagine such situations lead to definitional tensions.
18:38:38 <ais523> tswett: but in noit, you don't have p-type and n-type materials
18:39:17 <itidus21> when the truth is dependant on your point of view, tension has to arise
18:43:47 <ais523> so, what is blegnian motion, anyway?
18:46:07 <ais523> ah, you added n-type and p-type materials
18:46:52 <zzo38> It is like Belgian motion, but different.
18:46:58 <ais523> tswett: if you're trying to find a large-gain transistor, I recommend experimenting with lightly doped n-type materials together with heavily-doped p-type materials, or vice versa
18:47:26 <ais523> that's how bipolar junction transistors are made in practice, and noit o' mnain gelb doesn't have a field effect to make a field effect transistor with
18:51:34 -!- primo__ has quit (Quit: Verlassend).
18:59:56 -!- DCliche has joined.
19:01:03 -!- Ngevd has quit (Ping timeout: 252 seconds).
19:03:21 -!- Klisz has quit (Ping timeout: 260 seconds).
19:09:51 <Sgeo> kallisti, Phantom__Hoover update
19:12:30 <kallisti> !perl defined "stuff" =~ /false/
19:12:31 <EgoBot> No output.
19:12:34 <kallisti> !perl defined ("stuff" =~ /false/)
19:12:35 <EgoBot> No output.
19:16:59 <ais523> kallisti: if you want output, you'll have to print it
19:21:29 <kallisti> !perl print defined ("stuff" =~ /false/)
19:21:30 <EgoBot> 1
19:22:57 -!- Ngevd has joined.
19:25:10 <Ngevd> Hello
19:32:21 <Sgeo> Ngevd, arupdoot
19:32:43 <Ngevd> Seen it
19:32:59 <quintopia> `run hatesgeo /var/irclogs/_esoteric/2012-01-??-raw.txt
19:33:11 <HackEgo> Jafet 2668;Ngevd 2629;ais523 1497;Phantom_Hoover 1474;Klisz 1427;elliott 1407;pikhq 1399;zzo38 1134;oerjan 1048;cheater 939;Patashu 912;Zuu 912;nooga 695;pikhq_ 668;Vorpal 667;atrapado 648;roper 646;azaq23 637;Nisstyre 618;MDude 603;augur 560;derdon 536;sebbu2 476;DCliche 472;NihilistDandy 458;monqy 457;boily 385;iamcal 383;itidus21 369;Frooxius 369;sebbu 353;saberman_1 346;cheater_ 344;GreaseMonkey 326;Sgeo 321;myndzi
19:33:21 <augur> fizzie!
19:33:33 <ais523> what does hatesgeo do?
19:33:41 <Sgeo> ais523, lists joins/parts I think
19:33:43 <ais523> `cat bin/hatesgeo
19:33:46 <HackEgo> ​#!/bin/sh \ perl -n -e '/:(.*?)!.*JOIN/; $j{$1}++; END {print "$_ $j{$_};" for sort {$j{$b} <=> $j{$a}} keys %j}' $@
19:33:47 <quintopia> counts them
19:33:53 -!- DCliche has changed nick to Klisz.
19:33:59 <ais523> just counts joins, it seems
19:34:02 <ais523> so what's up with the name?
19:34:03 <quintopia> joins only yeah
19:34:03 <Frooxius> WHATDIDIDO? Oo Sorry, it startled me a bit, because it highlighted me x3
19:34:07 <Ngevd> Oh dear, I'm second
19:34:17 <Sgeo> `welcome Frooxius
19:34:20 <HackEgo> Frooxius: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
19:34:35 <Sgeo> How many idlers do we have, anyway?
19:34:37 <quintopia> i am not even listed. that makes it a good month so far.
19:34:59 <Frooxius> Hellooo Oo Though I've been here for a short while already ^^'
19:34:59 <Sgeo> There definitely are people in here who I would not recognize if they talked
19:35:25 <Sgeo> Including you >.>
19:35:27 <Sgeo> No offense
19:35:49 <quintopia> i guess this place is getting SO POPULAR
19:36:00 <Frooxius> I don't talk here much really, sowiii
19:37:07 <quintopia> thats good
19:37:30 <ais523> I'd recognise Frooxius
19:37:31 <quintopia> the people who do talk a lot get boring
19:37:42 <quintopia> just talk a little bit
19:37:45 <quintopia> keep things fresh
19:39:11 <kallisti> my IRC bot is now infinitely better than lambdabot.
19:39:21 <kallisti> aside from the lack of Haskell-related features.
19:39:49 <kallisti> but, since its messaging system actually checks if the nick is registered, it's somewhat secure.
19:39:50 <Ngevd> fungot, comment?
19:39:50 <fungot> Ngevd: i'm jeff thomas, from visual concepts. i made this bear. he's got the plague.
19:40:08 -!- Phantom__Hoover has quit (Remote host closed the connection).
19:40:11 <Ngevd> fungot thinks your bot has the plague.
19:40:12 <fungot> Ngevd: it has been my life's dream to construct a lego replica of my dead wife. it was like some some fucked up escher painting, " the perfect eternal jackass." it's like a copyright infringement kit.
19:40:26 <Ngevd> ^style
19:40:26 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa* qwantz sms speeches ss wp youtube
19:40:43 <Ngevd> Fungot has dreams. Your bot is an eternal jackass
19:40:46 <Ngevd> ^style pa
19:40:46 <fungot> Selected style: pa (around 1200 transcribed Penny Arcade comics)
19:41:04 <itidus21> thats a really weird post
19:41:49 <itidus21> It has been my life's dream to construct a lego replica of my dead wife. It was like some some fucked up Escher painting, " the perfect eternal jackass."
19:42:27 <itidus21> what are you guys doing to fungot
19:42:27 <fungot> itidus21: help us! oh god! it's gotten ahold of me! verily did i download the detonator tnt drivers, and now compatibility problems! what's next, sony a little hand that flips you off?
19:45:25 <Ngevd> ^style homestuck
19:45:25 <fungot> Selected style: homestuck (Homestuck pages 1901-4673)
19:45:32 <Ngevd> fungot, feeling better?
19:45:32 <fungot> Ngevd: you you might be here too. but for trolls, the challenge is particularly tortuous for young trolls, who must reconcile the wide 0rbit 0f 0ur s00n
19:46:53 * sebbu slaps HackEgo around a bit with a very large trout
19:47:12 <Ngevd> kallisti, is your bot online?
19:48:43 <kallisti> Ngevd: it's not on freenode.
19:48:59 <kallisti> at the moment it's basically not very useful.
19:49:11 <Ngevd> Better than my bot
19:49:19 <Ngevd> Pietbot just joins and lurks for a bit
19:49:23 <Ngevd> Then I turn it off
19:49:24 <kallisti> good bot.
19:49:57 <quintopia> that is the best kind of bot
19:55:34 <Ngevd> Just made a Fractran interpreter
19:56:29 <quintopia> fractran is p cool
19:56:55 <Sgeo> kmc, you awake?
19:58:47 -!- Phantom_Hoover has joined.
19:59:06 <Sgeo> Phantom update
20:10:55 -!- MSleep has changed nick to MDude.
20:12:03 <Ngevd> :t flip (ap . ((.) flip . ((.) ((.) (.)) . (.)))) id
20:12:04 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> a -> b) -> f a -> f (f b)
20:13:15 <Ngevd> :t flip (ap . ((.) flip . ((.) ((.) (.)) . (.)))) id :: (b -> b -> c) -> (a -> b) -> a -> a -> c
20:13:16 <lambdabot> forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c
20:13:20 <Ngevd> :t on
20:13:22 <lambdabot> forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c
20:13:30 <Ngevd> @src on
20:13:30 <lambdabot> (*) `on` f = \x y -> f x * f y
20:14:07 <Ngevd> They clearly missed a big idea with my version
20:18:03 <Sgeo> Ngevd, Phantom_Hoover kallisti upasd
20:18:27 <Ngevd> Good name
20:20:27 <Ngevd> "You are however QUITE GREAT at the esoteric sciences", "Your coding cred is totes ridic"
20:20:33 <Ngevd> She's one of us!
20:20:59 <ais523> hmm, I'm a little concerned that elliott hasn't come back after yesterday
20:21:06 <Ngevd> What did he do yesterday?
20:21:10 <kallisti> ais523: I wouldn't worry about it.
20:21:27 <ais523> Ngevd: spamming repeatedly, then attempting to evade a +q on him
20:21:47 <kallisti> Ngevd: check out the logs. it's wonderful.
20:22:04 <kallisti> (I mean that sarcastically)
20:22:11 <Sgeo> My name prediction was wrong
20:23:15 -!- monqy has joined.
20:24:04 -!- Vorpal has quit (Ping timeout: 276 seconds).
20:24:39 -!- pikhq_ has joined.
20:24:49 -!- pikhq has quit (Ping timeout: 252 seconds).
20:28:04 <Ngevd> I reckon Di-Stri is called Dick
20:30:55 <Sgeo> A lot of people have been reckoning that
20:31:03 <Ngevd> Or maybe Dirk
20:31:28 <Ngevd> Dill?
20:32:00 <quintopia> dick strickland
20:32:24 <Sgeo> Ngevd, what do you think about the unusual properties of the session?
20:33:54 <Ngevd> Jack Noir seems even more ambitious?
20:34:09 <Sgeo> Nope
20:34:11 <Sgeo> Something else
20:34:20 <Sgeo> It's in the End of Act 6 Intermission 1
20:34:26 <Ngevd> Oh, that
20:34:27 <Sgeo> Hard to notice
20:35:30 <Sgeo> Are we certain we have the same that in mind?
20:35:44 <Ngevd> No
20:35:47 <Ngevd> Msg me
20:36:32 -!- oerjan has joined.
20:42:25 <oerjan> <ais523> sorry, mischan <-- is that recursive or not?
20:42:37 <oerjan> because i cannot see what it referenced
20:42:58 <ais523> I thought it'd be amusing to send it to a channel with no referent and see what people concluded
20:43:18 <oerjan> yay!
20:44:39 <oerjan> wait, if we treat it as recursive, then it's a mischan if and only if it isn't...
20:45:39 <pikhq_> You know you have a problem when you consider "watched several episodes of anime" an accomplishment.
20:45:42 <ais523> there's also the problem of establishing, if it's a mischan, what the /correct/ channel is
20:45:56 <ais523> clearly #esoteric is probably the most appropriate place for recursive mischans…
20:46:23 <oerjan> pikhq_: what if you are regretting wasting your time by not having watched much anime?
20:46:25 <pikhq_> ais523: :)
20:46:55 <pikhq_> oerjan: I was regretting sinking time in complete and utter time-wastes.
20:47:10 <pikhq_> At least watching things in a foreign language I'm learning aren't *complete* wastes of time.
20:47:27 <pikhq_> Yeaaaah, breaks are really effing bad for me.
20:47:29 <ais523> pikhq_: what if you're learning the foreign language just so you can watch things in it?
20:47:49 <ais523> and break from what?
20:47:56 <pikhq_> School.
20:48:16 <pikhq_> ais523: Still more productive than "why the fuck have I been on this site for several hours". :P
20:49:49 <pikhq_> Reddit is especially bad for me.
20:50:41 -!- zzo38 has quit (Quit: Of course, Baba, that's what constitutes a computer!!! How silly of me.).
20:51:48 <Jafet> I get the feeling that I've won something, though I'm not sure what.
20:52:23 <Ngevd> Jafet, check your lotto numbers? And the spam folder of you email?
20:52:27 <itidus21> so heres something i was just thinking... n = n | +(n) | -(n); n = 0; +(n) = 1; -(n) = -1; +(+(n)) = 2;
20:52:34 <oerjan> <itidus21> zzo38: my idea has died. ill have a look at your chess variant <-- hey i'm sure reinventing zzo38's ideas is a step up
20:52:43 <itidus21> i am not sure to what degree it is dumb
20:53:41 <oerjan> itidus21: needs more clarification
20:53:57 <itidus21> humm
20:54:14 <itidus21> i guess it wasnt as clear as it seemed in my head
20:54:39 <itidus21> n = n | increment(n) | decrement(n)
20:54:52 <itidus21> i am not good at defining these things
20:55:01 <oerjan> oh right
20:55:07 <Ngevd> Is increment(decrement(n)) legal?
20:55:10 <oerjan> so the n's after n = 0 are really 0's
20:55:13 <itidus21> yup
20:55:21 <itidus21> hmm
20:55:29 <itidus21> i mean, yup @ ngevd
20:55:41 * kallisti just got into a debate over whether typing /ns in an IRC client is expected behavior over all clients/servers
20:55:53 <itidus21> well.. uhhh those latter parts are how it can be mapped to numbers
20:56:08 <kallisti> or rather, typing /ns and getting nickserv
20:56:31 <itidus21> it doesnt mean much really..
20:56:34 <oerjan> itidus21: it resembles that data Nat = Zero | Succ Nat thing in haskell, but extended to integers
20:56:37 <ais523> kallisti: there are definitely client/server combos for which it doesn't work
20:56:51 <kallisti> ais523: yes irssi being one.
20:56:51 <ais523> this client, if given /ns, sends an NS command to the server
20:57:01 <Jafet> You expect any behaviour over all clients or servers?
20:57:02 <ais523> which Freenode interprets as PRIVMSG NickServ
20:57:07 <kallisti> ais523: I was told thatirssi "improperly handles" / commands
20:57:09 <kallisti> I said it does not. :P
20:57:10 <ais523> but not all servers do
20:57:21 <ais523> kallisti: I think you're right here
20:57:33 <itidus21> oerjan: what i had in mind was a unary string of 1's .. and i thought.. ok what can i do to a string of 1's.. i can either add a 1 or take a 1 away...
20:57:34 <kallisti> NS is nonstandard anyway isn't it?
20:57:44 <itidus21> but what happens if i reach zero 1's
20:57:44 <kallisti> the "expected behavior" is that if you privmsg a service you get a reply.
20:57:57 <oerjan> my irssi has alias ns msg nickserv
20:58:08 <kallisti> other problems with sending raw commands on / : you have to wait for some kind of reply
20:58:12 <kallisti> oerjan: also /quote
20:58:24 <itidus21> but if i don't actually specify how many 1's there are, then i can increment or decrement freely
20:59:05 <kallisti> so what happens in mIRC if you mistype a / command while you've just recently disconnect from a server? Does it wait for a reply until a timeout?
20:59:14 <kallisti> also it means your / commands are server-dependent.
20:59:20 <kallisti> which is gross.
21:01:53 <oerjan> itidus21: that's what's called a group action... any group (such as the integers) can be considered to act on itself, so the result of letting m act on n is m+n.
21:02:47 <itidus21> oerjan: it's abit ridiculous, but really it's intended for unary lambda calculus programming :D
21:02:49 <oerjan> the rest is just changing representation
21:03:47 <oerjan> mhm
21:03:49 <itidus21> the problem is it's even less efficient than the actual 1's
21:04:42 <Ngevd> > let getPowersOf n xs = filter (\x -> ((==) `on` ($ (logBase `on` fromIntegral) n x)) ceiling floor) xs in getPowersOf 2 [1..1000]
21:04:43 <lambdabot> [1,2,4,8,16,32,64,128,256,512]
21:05:13 <Ngevd> There's almost certainly an easier way of doing the getPowersOf function
21:05:21 <oerjan> you'd think
21:05:30 <oerjan> > iterate (*2) 1
21:05:31 <lambdabot> [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,...
21:05:45 <Ngevd> No, I want it as a filter
21:05:52 <Ngevd> So really I want isPowerOf
21:05:52 <oerjan> huh
21:05:59 <Ngevd> Actually
21:06:04 <Ngevd> Nah
21:06:29 <itidus21> yeah.. unary lambda programming is very useless
21:06:29 <Ngevd> isPowerOf :: Integer -> Integer -> Bool
21:06:34 <itidus21> i have decided
21:06:37 <Ngevd> itidus21, WRONG
21:08:25 <oerjan> Ngevd: i fear the logBase method might break on large numbers due to bad rounding at some point
21:08:31 <Ngevd> > let getPowersOf n xs = filter (\x -> ((==) `on` ($ (logBase `on` fromIntegral) n x)) ceiling floor) xs in getPowersOf 3 [1,6..1000]
21:08:32 <lambdabot> [1,81]
21:08:33 <itidus21> i am pretty silly..
21:08:45 <kallisti> ais523: what other servers do not send raw commands like irssi.
21:08:47 <kallisti> er
21:08:48 <kallisti> clients
21:08:50 <Ngevd> oerjan, can you suggest any alternatives that work better?
21:09:01 <ais523> kallisti: I think /most/ don't
21:09:06 <ais523> some translate /ns into /msg nickserv themselves
21:09:13 <kallisti> ais523: ah, this guy is saying most do.
21:09:15 <ais523> and others pass commands they don't know through literally and let the server translate them
21:09:19 <kallisti> ais523: he must be talking about mIRC
21:09:20 <ais523> like the one I use
21:09:26 <oerjan> well you _could_ do iterated division by 2, that should give a _correct_ result, but might be slower.
21:09:27 <Deewiant> a `isPowerOf` b = a `elem` iterate (*b) 1
21:10:06 <Ngevd> > let a `isPowerOf` b = a `elem` iterate (*b) 1 in 10 `isPowerOf` 3
21:10:10 <lambdabot> mueval-core: Time limit exceeded
21:10:20 <Ngevd> Deewiant, I already thought of that
21:10:35 <Deewiant> a `isPowerOf` b = a `elem` takeWhile (<=a) (iterate (*b) 1)
21:10:48 <Ngevd> Hmm...
21:11:12 <Ngevd> > let a `isPowerOf` b = a `elem` takeWhile (<=a) (iterate (*b) 1) in 10 `isPowerOf` 3
21:11:13 <lambdabot> False
21:11:16 <Ngevd> :D
21:11:21 <Ngevd> I'll take 12!
21:11:38 <oerjan> the logBase method would probably be particularly bad for powers _other_ than 2
21:11:43 <oerjan> er
21:11:44 <kallisti> @src isPowerOf
21:11:45 <lambdabot> Source not found. You untyped fool!
21:11:47 <oerjan> bases
21:12:17 <Ngevd> I'd have thought it would be e rather that 2
21:13:16 <Deewiant> (Note: that takeWhile fails when a is negative, e.g. (-27) `isPowerOf` (-3))
21:13:47 <Ngevd> Deewiant, it's just really for personal use
21:15:36 <oerjan> Ngevd: um the point is Double is in practice base 2 based
21:15:56 -!- zzo38 has joined.
21:15:59 <oerjan> so powers of 2 have a good chance of being exactly represented
21:16:53 <Ngevd> logBase is defined in terms of log, which is base e
21:17:13 <oerjan> @src logBase
21:17:14 <lambdabot> Source not found. Are you on drugs?
21:17:24 <oerjan> @src RealFloat
21:17:25 <lambdabot> Source not found.
21:17:31 <Ngevd> @src Floating
21:17:31 <lambdabot> class (Fractional a) => Floating a where
21:17:31 <lambdabot> pi :: a
21:17:31 <lambdabot> exp, log, sqrt, sin, cos, tan :: a -> a
21:17:31 <lambdabot> asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh :: a -> a
21:17:31 <lambdabot> (**), logBase :: a -> a -> a
21:17:59 <oerjan> Ngevd: it's a method, so it's likely to be specially treated
21:19:09 <oerjan> > map (logBase 2) [2^200 - 1 .. 2^200 + 1]
21:19:09 <lambdabot> [200.0,200.0,200.0,200.0,200.0,200.0,200.0,200.0,200.0,200.0,200.0,200.0,20...
21:19:19 <oerjan> not _overly_ promising :P
21:19:37 <Ngevd> It isn't, I'm looking at the source
21:19:49 <oerjan> the source where?
21:19:54 <Ngevd> http://www.haskell.org/ghc/docs/7.0-latest/html/libraries/base-4.3.1.0/src/GHC-Float.html#logBase
21:20:13 <Ngevd> For both Float and Double, no special-casing in logBase
21:20:28 <oerjan> ok
21:24:44 <Ngevd> a `isPowerOf` b = a == head (dropWhile (< a) (iterate (*b) 1))
21:26:38 <Ngevd> getPowersOf = filter . (flip isPowerOf)
21:28:17 <tswett> So, I guess gelb is thermodynamically inaccurate. Electron-hole pairs can spontaneously vanish everywhere, but they can only spontaneously generate in specific places.
21:34:08 -!- CHeReP has joined.
21:37:14 -!- oerjan has set topic: No topic today | http://codu.org/logs/_esoteric/.
21:43:17 -!- Gregor has set topic: No topic Tuesday! | Wait, it's not Tuesday? Damn it! | http://codu.org/logs/_esoteric/.
21:45:20 <oerjan> :k [::]
21:45:21 <lambdabot> parse error on input `::'
21:45:26 <oerjan> hmph
21:45:40 -!- jix has quit (Remote host closed the connection).
21:45:48 <Ngevd> Have I stumbled upon a mystery?
21:46:16 <oerjan> i am thinking something like one of the parallelizable list extensions
21:46:58 <monqy> that's what I was told
21:47:44 <oerjan> yes, it's parallel arrays http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell
21:50:51 <Ngevd> Well, mystery solved
21:51:17 <Ngevd> :k [:Int:]
21:51:18 <lambdabot> parse error on input `:'
21:51:25 * kallisti should learn prolog one of these days.
21:51:47 <oerjan> i think it's still very experimental
21:51:55 <oerjan> lambdabot won't have it
21:51:57 <Ngevd> Well, it's time for sleeps
21:52:00 -!- Ngevd has quit (Quit: Goodbye).
21:52:05 <zzo38> What would it do if you have negative types in Haskell, that work inside-out and have a set of prohibited values instead of allowed, so it prohibit value of other type, somehow?
21:52:31 <kallisti> zzo38: it would be difficult to know what operations are available to those types.
21:52:49 <zzo38> kallisti: Yes I know it is difficult
21:53:33 * kallisti has thought about having essentially a type-level logic programming language to allow things like unions, differences, intersections, etc.
21:54:22 <kallisti> prohibiting things at the value-level would mostly be a runtime check I would think.
21:54:33 -!- Jafet has quit (Quit: Leaving.).
21:54:48 <zzo38> No, I was thinking of doing something that makes it a compile error not a runtime check
21:58:22 -!- ais523 has quit (Remote host closed the connection).
21:58:48 <zzo38> But I am unsure how.
22:00:47 <kallisti> zzo38: you would need the set of values to be described by a type
22:00:48 <kallisti> I think
22:01:03 <kallisti> also
22:01:17 <kallisti> you would need to know the "smallest subset" that a value occupies.
22:01:41 <kallisti> for example, if you know a value is an integer you can't determine that it's a natural, but you can go the other direction.
22:03:24 -!- oerjan has set topic: No topic Tuesday! | Wait, it's not Tuesday? Damn it! | So, what is blegnian motion, anyway? | http://codu.org/logs/_esoteric/.
22:05:56 <zzo38> Just because it is not Tuesday, does not mean it is Wednesday!
22:06:15 <oerjan> ain't that the truth!
22:06:18 -!- zzo38 has quit (Remote host closed the connection).
22:09:47 <kallisti> `words --norwegian 25
22:09:53 <HackEgo> forbund arbeidelse seformelshopparas verkningens gasjone hausenta mengene braktstyrelsertikasse besken straktskingen opernessevnt smårste bedrapen immereningsgivelse botste ølbarnes inner biledienestenttig fløtning petalandskat spennstene bedtype kvadragsblansmotie hornattere ene
22:13:32 <oerjan> forbund, bedtype (probably) and ene are real words. fløtning _may_ be, i'm not sure. and botste _could_ mean penance tea
22:13:59 <kallisti> ..
22:14:00 <oerjan> Ølbarnes probably isn't, but it _should_ be a place name.
22:14:42 -!- _Slereah has quit (Ping timeout: 240 seconds).
22:17:05 <oerjan> there are hits for fløtning but i think they're misspellings of fløting (timber floating, mainly)
22:17:32 <oerjan> oh it's an alternative spelling.
22:22:22 -!- _Slereah has joined.
22:25:22 <itidus21> kallisti: this is the list of languages so far taken just now from the esolang wiki .. http://hpaste.org/56483 would it work better with unusual character words excluded and spaces excluded?
22:25:46 <itidus21> i heard theres 8000+ actual languages..
22:25:59 <kallisti> no need to remove non-alphanumeric characters
22:26:05 <itidus21> hmm
22:26:09 <kallisti> spaces are an issue though
22:26:16 <itidus21> ok cool
22:27:02 <oerjan> Hascalgorth, here we come!
22:27:21 <oerjan> oh wait only esolangs
22:27:33 <kallisti> not sure how to handle spaces actually.
22:27:43 <oerjan> Befuck already exists, i think
22:27:52 <itidus21> heres an updated version without spaces http://hpaste.org/56483
22:28:13 <kallisti> well removing spaces isn't really all that "accurate" either.
22:28:16 <kallisti> but it would work.
22:28:28 <itidus21> its better than dropping them out altogether :D
22:28:28 <kallisti> could just substitute all the spaces with something else.
22:28:40 <kallisti> I wonder if my code splits by non-breaking space.
22:30:25 <itidus21> i could just remove the ones with spaces
22:30:29 <kallisti> nope
22:30:40 <kallisti> !perl print "\x{C2A0}"
22:30:41 <EgoBot> Wide character in print at /tmp/input.10429 line 1. \ 슠
22:30:53 <kallisti> !perl use v5.10; print "\x{C2A0}"
22:30:54 <EgoBot> Wide character in print at /tmp/input.10474 line 1. \ 슠
22:31:12 <kallisti> !perl use v5.10; use open qw (:encoding(UTF-8) :std); print chr "\x{C2A0}"
22:31:13 <EgoBot> No output.
22:31:20 <kallisti> !perl use v5.10; use open qw (:encoding(UTF-8) :std); print ord "\x{C2A0}"
22:31:21 <EgoBot> 49824
22:31:32 <kallisti> uh.....
22:31:48 <itidus21> the problem is that spaces do actually delimit actual words
22:31:56 <kallisti> they do?
22:32:04 <kallisti> oh
22:32:05 <kallisti> yes they do
22:32:07 <kallisti> I misread
22:32:29 <itidus21> could split those ones with spaces into several lines
22:33:26 <kallisti> hm it would seem that my code does split by non-breaking space as well.
22:33:27 -!- Sgeo has quit (Quit: Leaving).
22:33:42 <itidus21> well it does work on words :P
22:33:57 -!- Sgeo has joined.
22:35:23 <kallisti> I'm not entirely sure how to write a non-breaking space in perl
22:35:44 <itidus21> so ill try this and you can look at the list and see what you think
22:35:47 <kallisti> !perl use HTML::Entities;
22:35:47 <EgoBot> Can't locate HTML/Entities.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /tmp/input.10614 line 1. \ BEGIN failed--compilation aborted at /tmp/input.10614 line 1.
22:35:50 <kallisti> baaah
22:36:13 <kallisti> itidus21: what are you trying.
22:36:28 <itidus21> oh i forgot.. if it delimits with spaces i don't need to replace the spaces with newlines
22:37:16 <itidus21> but i will anyway
22:38:17 <kallisti> ah \240
22:38:18 <kallisti> apparently
22:38:29 <kallisti> I'm guessing that's octal or something
22:38:58 <kallisti> > ord '\240'
22:38:59 <lambdabot> 240
22:39:02 <kallisti> hm
22:39:40 <kallisti> Haskell does not use octal, I guess.
22:40:50 <kallisti> so instead of splitting by \s
22:41:02 <kallisti> I can just split by [^\S\240]
22:41:15 <kallisti> and that will allow non-breaking space to stand in for a space.
22:41:28 <kallisti> !perl print "\240"
22:41:29 <EgoBot>
22:41:33 <kallisti> >_>
22:41:46 <kallisti> !perl use open qw(encoding(UTF-8) :std); print "\240"
22:41:47 <EgoBot> ​ 
22:41:50 <kallisti> yep
22:42:28 <itidus21> heres the list with spaces anyway http://hpaste.org/56487
22:43:32 <kallisti> one problem with the symbolically named languages is that
22:43:40 <kallisti> if the algorithm picks their starting character
22:43:45 <kallisti> it will pretty much match the entire string
22:43:49 <kallisti> because nothing else uses it.
22:43:57 <kallisti> but... oh well.
22:44:45 <itidus21> its a very small sample of actual programming languages of course
22:44:54 <kallisti> er, does hpaste have a raw link?
22:45:05 <itidus21> yup, on annotate
22:45:33 <itidus21> i could have linked directly to that but eh
22:47:07 <oerjan> kallisti: clearly you need a "fnord" character. hth.
22:48:12 <kallisti> nonsense
22:48:36 <kallisti> my existing algorithm is applicable to all possible datasets
22:48:40 <kallisti> no exceptions.
22:54:15 <kallisti> `fetch http://dl.dropbox.com/u/16495819/construct_grams.pl
22:54:19 <HackEgo> 2012-01-15 22:54:18 URL:http://dl.dropbox.com/u/16495819/construct_grams.pl [1289/1289] -> "construct_grams.pl" [1]
22:54:23 <kallisti> `fetch http://dl.dropbox.com/u/16495819/esolangs.txt
22:54:27 <HackEgo> 2012-01-15 22:54:26 URL:http://dl.dropbox.com/u/16495819/esolangs.txt [5810/5810] -> "esolangs.txt" [1]
22:54:55 <kallisti> `run chmod +x construct_grams.pl; mv construct_grams.pl share
22:54:58 <HackEgo> No output.
22:56:25 <kallisti> `run share/construct_grams.pl -m share/WordData/Esolangs -f '.' esolangs.txt
22:56:28 <HackEgo> utf8 "\xB0" does not map to Unicode at share/construct_grams.pl line 19. \ utf8 "\xB0" does not map to Unicode at share/construct_grams.pl line 19. \ utf8 "\xB0" does not map to Unicode at share/construct_grams.pl line 19. \ utf8 "\xB0" does not map to Unicode at share/construct_grams.pl line 19. \ utf8 "\xB0" does not map to Unicode at share/construct_grams.pl line 19. \ utf8 "\xB0" does not map to Unicode at
22:56:52 <kallisti> !perl print ord "\xB0"
22:56:53 <EgoBot> 176
22:57:03 <kallisti> erm
22:58:52 <kallisti> !perl use Encode; @list = Encode->encodings(); print "@list"
22:58:53 <EgoBot> ascii ascii-ctrl iso-8859-1 null utf-8-strict utf8
22:59:05 <kallisti> `run share/construct_grams.pl -e 'ascii' -m share/WordData/Esolangs -f '.' esolangs.txt
22:59:10 <HackEgo> ascii "\xE2" does not map to Unicode at share/construct_grams.pl line 19. \ ascii "\x89" does not map to Unicode at share/construct_grams.pl line 19. \ ascii "\xA0" does not map to Unicode at share/construct_grams.pl line 19. \ ascii "\xB0" does not map to Unicode at share/construct_grams.pl line 19. \ ascii "\xB0" does not map to Unicode at share/construct_grams.pl line 19. \ ascii "\xB0" does not map to Unicode at
22:59:11 -!- Phantom_Hoover has quit (Quit: Leaving).
22:59:27 <kallisti> oh right
22:59:37 <kallisti> `run file esolangs.txt
22:59:41 <HackEgo> esolangs.txt: Non-ISO extended-ASCII text
23:00:19 <kallisti> um...
23:01:44 <kallisti> I'm not entirely sure which encoding I want.
23:03:29 <kallisti> `run share/construct_grams.pl -e 'ascii-ctrl' -m share/WordData/Esolangs -f '.' esolangs.txt
23:03:33 <HackEgo> ascii-ctrl "\x30" does not map to Unicode at share/construct_grams.pl line 19. \ ascii-ctrl "\x31" does not map to Unicode at share/construct_grams.pl line 19. \ ascii-ctrl "\x5F" does not map to Unicode at share/construct_grams.pl line 19. \ ascii-ctrl "\x30" does not map to Unicode at share/construct_grams.pl line 19. \ ascii-ctrl "\x78" does not map to Unicode at share/construct_grams.pl line 19. \ ascii-ctrl "\x32"
23:04:05 <kallisti> ...why is this not utf-8
23:04:46 <itidus21> because its not
23:05:20 <itidus21> its ANSI :-s
23:05:32 <itidus21> i dunno if hpaste changes it or anything
23:05:41 <kallisti> uh
23:05:50 <kallisti> what is ANSI
23:05:54 <itidus21> i dont know
23:05:56 <itidus21> hmmm
23:06:07 <itidus21> maybe i should try and fix it
23:06:10 <Sgeo> kallisti, update
23:06:14 <kallisti> hpaste most likely changes it to utf-8...
23:06:26 <kallisti> or, well... HTML
23:06:27 <kallisti> entities
23:06:32 <kallisti> which chrome then probably
23:06:33 <kallisti> converts to utf-8
23:06:53 <Sgeo> KILL ALL PONIES
23:08:00 <kallisti> hmmm
23:08:08 <kallisti> okay so I think I'm using the wrong character for non-breaking space.
23:08:32 <itidus21> i used notepad in the first place
23:08:39 <itidus21> so the troubles may have started there
23:08:39 <kallisti> itidus21: what you used is irrelevant
23:09:26 <itidus21> ok
23:11:57 <kallisti> this should not be this difficult...
23:13:35 -!- GreaseMonkey has joined.
23:13:35 -!- GreaseMonkey has quit (Changing host).
23:13:36 -!- GreaseMonkey has joined.
23:14:42 <kallisti> `fetch http://dl.dropbox.com/u/16495819/esolangs.txt
23:14:45 <HackEgo> 2012-01-15 23:14:44 URL:http://dl.dropbox.com/u/16495819/esolangs.txt [5811/5811] -> "esolangs.txt.1" [1]
23:14:51 <kallisti> `run file esolangs.txt
23:14:55 <HackEgo> esolangs.txt: Non-ISO extended-ASCII text
23:16:56 <itidus21> life is difficult
23:17:00 <itidus21> problems are merely the proof
23:17:05 * oerjan swats itidus21 -----###
23:17:09 <oerjan> DON'T REMIND ME
23:17:31 <itidus21> life is easy :-D
23:17:37 <oerjan> yay
23:18:01 <itidus21> you can get hot food and cold drinks without wasting your leisure and academic work hours
23:18:26 <oerjan> kallisti: er note the .1 at end of downloaded filename
23:18:36 <oerjan> `run file esolangs.txt.1
23:18:39 <HackEgo> esolangs.txt.1: Non-ISO extended-ASCII text
23:18:46 <oerjan> as if that helped
23:18:51 -!- jix has joined.
23:21:06 <kallisti> oerjan: yeah it's still an issue
23:21:09 <kallisti> may be a perl problem
23:21:26 <kallisti> `run rm esolangs.txt*
23:21:30 <HackEgo> No output.
23:22:16 <itidus21> afk
23:27:10 <kmc> Sgeo, i'm awake now
23:32:56 <Sgeo> kmc, the thing about organizing each subset of attributes is that it adds stuff that the person using my wrapper needs to know beyond knowledge of the C SDK and how to translate that to the wrapper
23:33:15 <Sgeo> Is an HList record really that bad?
23:34:18 <kallisti> `fetch http://dl.dropbox.com/u/16495819/esolangs.txt
23:34:21 <HackEgo> 2012-01-15 23:34:21 URL:http://dl.dropbox.com/u/16495819/esolangs.txt [5939/5939] -> "esolangs.txt" [1]
23:34:35 <kmc> Sgeo, the thing they need to know is the definition of that record, which is in the docs for your library?
23:35:04 <Sgeo> It wouldn't be better if they just needed to know the C attributes?
23:35:17 <kallisti> `run share/construct_grams.pl -m share/WordData/Esolangs -f '.' esolangs.txt
23:35:21 <HackEgo> can't create Data/Share/WordData/Esolangs: No such file or directory at share/construct_grams.pl line 49 \ Constructing Share/WordData/Esolangs dataset from UTF-8 \ Filter: (?i-xsm:.) \ Reading esolangs.txt...
23:35:24 <kmc> Sgeo, I'm not sure
23:35:52 <kmc> Sgeo, when I've written FFI bindings I usually don't assume the user knows the corresponding C library
23:36:02 <kmc> i want to provide an idiomatic Haskell interface
23:37:09 <kmc> we've already established that the C library is terrible
23:37:12 <Sgeo> That sounds like more work... although I wonder if there is a way I can automate such things
23:37:25 <kmc> yeah it's more work to write good software
23:37:37 <kallisti> `fetch http://dl.dropbox.com/u/16495819/construct_grams.pl
23:37:40 <HackEgo> 2012-01-15 23:37:40 URL:http://dl.dropbox.com/u/16495819/construct_grams.pl [1284/1284] -> "construct_grams.pl" [1]
23:37:54 <kallisti> `run chmod +x construct_grams.pl
23:37:57 <HackEgo> No output.
23:38:02 <kmc> i mean it's ok to do a low-level binding to the C functions, and leave the "idiomatic haskell interface" part to someone else
23:38:05 <kmc> it's obviously not as good
23:38:09 <kallisti> `run ./construct_grams.pl -m share/WordData/Esolangs -f '.' esolangs.txt
23:38:13 <kmc> but in that case you wouldn't use HList either
23:38:13 <HackEgo> can't create Share/WordData/Esolangs: No such file or directory at ./construct_grams.pl line 49 \ Constructing Share/WordData/Esolangs dataset from UTF-8 \ Filter: (?i-xsm:.) \ Reading esolangs.txt...
23:38:19 <kallisti> oh
23:38:25 <kallisti> right my script is dumb
23:38:32 <kallisti> `run ./construct_grams.pl -m Esolangs -f '.' esolangs.txt
23:38:36 <HackEgo> Constructing Esolangs dataset from UTF-8 \ Filter: (?i-xsm:.) \ Reading esolangs.txt...
23:38:44 <kallisti> `ls
23:38:47 <HackEgo> Esolangs \ bin \ canary \ construct_grams.pl \ esolangs.txt \ karma \ lib \ main \ paste \ quotes \ searchlog.hi \ searchlog.hs \ searchlog.o \ share \ test.pl \ wisdom
23:38:53 <Sgeo> kmc, is there a way for me to define a structure while giving extra data to Template Haskell code that might read it?
23:38:56 <kallisti> `run mv Esolangs share/WordData
23:39:00 <HackEgo> No output.
23:39:14 <kallisti> `paste bin/words
23:39:17 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.18049
23:39:55 <kmc> Sgeo, I haven't used HList, I think it's not terrible, but it is messy and complicated
23:40:11 <kallisti> `fetch http://dl.dropbox.com/u/16495819/words.pl
23:40:14 <HackEgo> 2012-01-15 23:40:14 URL:http://dl.dropbox.com/u/16495819/words.pl [4608/4608] -> "words.pl" [1]
23:40:15 <kmc> http://hackage.haskell.org/package/records might be a better choice
23:40:27 <kmc> but really, it sounds like you're trying to make this fancier than it needs to be
23:40:32 <kallisti> `run head -n 2 words.pl
23:40:35 <HackEgo> ​#!/usr/bin/perl \ use strict; use warnings;
23:40:45 <kallisti> `run chmod +x words.pl mv words.pl bin/words
23:40:48 <HackEgo> chmod: cannot access `mv': No such file or directory
23:40:54 <kallisti> `run chmod +x words.pl; mv words.pl bin/words
23:40:57 <HackEgo> No output.
23:40:58 <kmc> i don't know
23:41:08 <kallisti> `words --esolangs 25
23:41:10 <kmc> imagine the API someone would expect, without knowing anything about the C library
23:41:12 <HackEgo> emorscript youarel sceql java2k plato trits jump q-ballmachip wtfzomfg excon 0x29c hat2.0 automouse q-bal bytebytejump epl smillii bitran ora quating thrat suble automouflabtized arrow stree
23:41:26 -!- pikhq has joined.
23:41:35 <Sgeo> kmc, that's trickier than it sounds, there are some really, really stupid bits
23:41:43 <kmc> would they expect a fancy record system that requires 12 GHC extensions
23:41:52 <kmc> or would they expect an ordinary haskell record for each event type
23:41:54 <kallisti> most of those are just esolang names....
23:42:33 <kallisti> automouflabtized is not
23:42:40 <Sgeo> In order to receive events about objects being added or deleted, I need to query all objects in the area first. Querying elsewhere will destroy my ability to retrieve updates in the original area
23:43:02 <kallisti> yeah I think 3-grams is just a bit too good at reproducing actual elements of a small dataset like this.
23:43:11 <kallisti> actually 4-grams
23:43:34 <kallisti> `words --esolangs 25
23:43:38 <HackEgo> braint epoaq smurin parnand twimp 1cnisc skul wikicyclic infche uncomb ook object barint th rube vela cupid chanique bub unis ~ unreall befal attoasm devil
23:43:57 <kallisti> I am completely unable to distinguish made-up esolang names from real esolang names
23:44:00 <kallisti> help.
23:44:15 <Sgeo> There should be an esolang named unamb
23:44:17 -!- pikhq_ has quit (Ping timeout: 252 seconds).
23:44:20 <kmc> Sgeo, :(
23:44:29 <kallisti> itidus21: ^
23:44:40 <kallisti> `ls
23:44:43 <HackEgo> bin \ canary \ construct_grams.pl \ esolangs.txt \ karma \ lib \ main \ paste \ quotes \ searchlog.hi \ searchlog.hs \ searchlog.o \ share \ test.pl \ wisdom
23:44:46 <kallisti> `ls share
23:44:49 <HackEgo> WordData \ awesome \ construct_grams.pl \ units.dat
23:44:50 <Sgeo> Previous statement not to be construed as a slur against unamb.
23:45:31 <kallisti> `run mv construct_grams.pl share; mv esolangs.txt share;
23:45:35 <HackEgo> No output.
23:45:48 <kallisti> `rm *.hs *.hi *.o *.pl
23:45:51 <HackEgo> rm: cannot remove `*.hs *.hi *.o *.pl': No such file or directory
23:45:57 <kallisti> `run rm *.hs *.hi *.o *.pl
23:46:00 <HackEgo> No output.
23:46:00 <kallisti> `ls
23:46:04 <HackEgo> bin \ canary \ karma \ lib \ main \ paste \ quotes \ share \ wisdom
23:46:48 <kallisti> unfortunately I still have to modify the script everytime I add a dataset
23:51:40 <oerjan> `run sort share/esolangs.txt | diff - share/esolangs.txt
23:51:43 <HackEgo> 1,8d0 \ < \ < (()) \ < () \ < *W \ < .Gertrude \ < .box \ < .yacuabll \ < /// \ 13d4 \ < 1L \ 14a6 \ > 1L \ 16d7 \ < 2-ill \ 19d9 \ < 2D-Reverse \ 21c11,12 \ < 2L \ --- \ > 2D-Reverse \ > 2-ill \ 23c14 \ < 3D \ --- \ > 2L \ 24a16 \ > 3D \ 29c21,24 \ < :≠ \ --- \ > *W \ > .box \ > .Gertrude \ > .yacuabll \ 30a26,32 \ > /// \ > () \ > (()) \ > [] \ > ] \ > ~ \ > :≠ \ 32a35 \ > Aargh! \ 36a40 \ > Addleq \ 39,44d42
23:51:49 <oerjan> grmbl
23:51:58 <oerjan> hm i guess
23:54:16 <oerjan> `run sort share/esolangs.txt >ess
23:54:19 <HackEgo> No output.
23:55:15 <oerjan> `run echo 'braint epoaq smurin parnand twimp 1cnisc skul wikicyclic infche uncomb ook object barint th rube vela cupid chanique bub unis ~ unreall befal attoasm devil' | xargs -1 echo | sort | diff - ess
23:55:19 <HackEgo> xargs: invalid option -- '1' \ Usage: xargs [-0prtx] [--interactive] [--null] [-d|--delimiter=delim] \ [-E eof-str] [-e[eof-str]] [--eof[=eof-str]] \ [-L max-lines] [-l[max-lines]] [--max-lines[=max-lines]] \ [-I replace-str] [-i[replace-str]] [--replace[=replace-str]] \ [-n max-args] [--max-args=max-args] \ [-s max-chars] [--max-chars=max-chars] \ [-P max-procs]
23:55:35 <oerjan> :(
23:56:04 <oerjan> `run echo 'braint epoaq smurin parnand twimp 1cnisc skul wikicyclic infche uncomb ook object barint th rube vela cupid chanique bub unis ~ unreall befal attoasm devil' | xargs -n1 echo | sort | diff - ess
23:56:08 <HackEgo> 1,24c1,694 \ < 1cnisc \ < attoasm \ < barint \ < befal \ < braint \ < bub \ < chanique \ < cupid \ < devil \ < epoaq \ < infche \ < object \ < ook \ < parnand \ < rube \ < skul \ < smurin \ < th \ < twimp \ < uncomb \ < unis \ < unreall \ < vela \ < wikicyclic \ --- \ > \ > (()) \ > () \ > *W \ > .Gertrude \ > .box \ > .yacuabll \ > /// \ > 01_ \ > 0x29A \ > 0x29C \ > 1337 \ > 1L \ > 1cnis \ > 1mpr0mp2 \ > 2-ill \ >
23:56:12 <Sgeo> kmc, is it sufficiently Haskelly to return a tuple like (IO Something, IO ()) where the first one keeps retrieving things and the second closes it?
23:56:17 <oerjan> erp
23:56:31 <Sgeo> Or could I do that better
23:57:21 <kallisti> Sgeo: slightly resembles conduit
23:57:41 <kallisti> except the Something is a bit more complex
23:57:45 <kallisti> also a function
23:57:51 <kallisti> instead of IO Something
23:57:54 <oerjan> oh hm
23:58:34 <kallisti> note that this isn't really an advocation of doing such. just an observation. :P
23:58:35 <Sgeo> Well, I'm just taking what would be an event-based API and turning it into something like polling
23:58:54 <Sgeo> Which I think is easier to write combinators to turn that back into something with events if that's really needed
23:59:32 <oerjan> this _should_ be simpler to achieve than this :(
2012-01-16
00:02:37 <oerjan> `run echo 'braint epoaq smurin parnand twimp 1cnisc skul wikicyclic infche uncomb ook object barint th rube vela cupid chanique bub unis ~ unreall befal attoasm devil' | xargs -n1 echo | join -i - share/esolangs.txt
00:02:42 <HackEgo> join: file 2 is not in sorted order \ join: file 1 is not in sorted order \ ~
00:02:46 <oerjan> dammit
00:02:57 <oerjan> `run echo 'braint epoaq smurin parnand twimp 1cnisc skul wikicyclic infche uncomb ook object barint th rube vela cupid chanique bub unis ~ unreall befal attoasm devil' | xargs -n1 echo | sort | join -i - ess
00:03:02 <HackEgo> join: file 2 is not in sorted order \ attoasm \ bub \ epoaq \ rube \ ~
00:04:09 <kallisti> oerjan: um what are you doing.
00:04:18 <oerjan> `run sort -f share/esolangs.txt >ess
00:04:22 <HackEgo> No output.
00:04:27 <oerjan> `run echo 'braint epoaq smurin parnand twimp 1cnisc skul wikicyclic infche uncomb ook object barint th rube vela cupid chanique bub unis ~ unreall befal attoasm devil' | xargs -n1 echo | sort -f | join -i - ess
00:04:31 <HackEgo> attoasm \ bub \ cupid \ epoaq \ object \ rube \ th \ twimp \ ~
00:04:50 <oerjan> kallisti: making a command to tell which are actual esolangs :P
00:05:10 <kallisti> use perl. problem solved.
00:05:35 <oerjan> i'm not sure how to do it in perl.
00:05:55 <oerjan> at least not simpler than this
00:06:12 <oerjan> ok there
00:06:21 <oerjan> 's something wrong because ook isn't listed
00:06:25 <oerjan> hm
00:06:43 <kallisti> `run perl -n -e 'print 'Yep! it's an esolang!" if $ARGV[0] eq $_;'" share/esolangs.txt
00:06:44 <oerjan> `run grep -i ook share/esolangs.txt
00:06:46 <HackEgo> bash: -c: line 0: unexpected EOF while looking for matching `"' \ bash: -c: line 1: syntax error: unexpected end of file
00:06:53 <kallisti> oh hmmm
00:07:05 <kallisti> -n kind of eats my command line args.
00:07:40 <HackEgo> Brook \ Ook!
00:07:40 <oerjan> hm, does this mean your generator produced ook _even though it wasn't there_? :P
00:07:48 <oerjan> oh it was just slow
00:07:58 <kallisti> `run perl -n -e 'print 'Yep! it's an esolang!" if $ARGV[0] eq $_;'" share/esolangs.txt ook
00:08:01 <HackEgo> bash: -c: line 0: unexpected EOF while looking for matching `"' \ bash: -c: line 1: syntax error: unexpected end of file
00:08:12 <kallisti> `run perl -n -e 'print 'Yep! it's an esolang!" if $ARGV[0] eq $_;' share/esolangs.txt ook
00:08:15 <HackEgo> syntax error at -e line 1, at EOF \ Execution of -e aborted due to compilation errors.
00:08:19 <oerjan> oh and it wasn't an exact match, it probably actually combines ook! with brook
00:08:31 <kmc> Sgeo, that seems weird to me, but i don't really have the context
00:08:35 <kmc> you could also ask #haskell
00:08:36 <kmc> for more opinions
00:08:46 <kallisti> `run perl -n -e 'print "Yep! it's an esolang!" if $ARGV[0] eq $_;' share/esolangs.txt ook
00:08:49 <HackEgo> bash: -c: line 0: unexpected EOF while looking for matching `"' \ bash: -c: line 1: syntax error: unexpected end of file
00:08:52 <kallisti> llekkweroijweoitjwoiejr
00:08:53 <oerjan> kallisti: also i was trying to feed in a whole line of generated esolangs, duh
00:13:16 <kallisti> `run perl -n -e 'print "Yep! its an esolang!" if $ARGV[1] eq $_;' share/esolangs.txt ook
00:13:19 <HackEgo> Can't open ook: No such file or directory at -e line 1, <> line 695.
00:13:23 <kallisti> yeah
00:13:23 <oerjan> `run mv ess share/esolangs.txt.sorted
00:13:25 <kallisti> can't work like that.
00:13:26 <HackEgo> No output.
00:14:32 -!- Patashu has joined.
00:17:38 -!- Nisstyre has quit (Quit: Leaving).
00:38:52 -!- itidus21 has quit (Ping timeout: 244 seconds).
01:24:11 -!- itidus21 has joined.
01:32:01 <itidus21> i have been afk. i like the generated names :P
01:32:53 <itidus21> but yeah might be better if i hunt down a more elaborate prog language list i guess
01:46:41 -!- Nisstyre has joined.
01:59:02 -!- pikhq_ has joined.
01:59:08 -!- pikhq has quit (Ping timeout: 252 seconds).
02:04:23 -!- pikhq_ has quit (Ping timeout: 245 seconds).
02:04:25 -!- pikhq has joined.
02:06:35 -!- DCliche has joined.
02:09:53 -!- Klisz has quit (Ping timeout: 276 seconds).
02:27:21 <Sgeo> kallisti, you saw update?
02:30:13 <itidus21> heres a more extensive language list: http://pastebin.com/Kc6N7KnZ
02:30:58 <kallisti> Sgeo: not yet.
02:31:17 <kallisti> itidus21: challenge: add it yourself
02:31:22 <itidus21> oro
02:31:49 <kallisti> `run source/construct_grams.pl --hepl
02:31:53 <kallisti> `run source/construct_grams.pl --help
02:31:53 <HackEgo> bash: source/construct_grams.pl: No such file or directory
02:31:57 <HackEgo> bash: source/construct_grams.pl: No such file or directory
02:31:59 <kallisti> oh
02:32:05 <kallisti> `run share/construct_grams.pl --help
02:32:08 <HackEgo> Unknown option: help
02:32:14 <kallisti> okay so there isn't actually any help...
02:33:12 <kallisti> construct_grams.pl -m OutputFileName -e OptionalEncoding -f OptionalFilterRegex Inputfile1 Inputfile2 ...
02:33:34 <kallisti> for the -f option I recommend using '.' which will match any line.
02:33:48 <itidus21> i think you vastly overestimate my knowledge
02:33:54 <kallisti> you can probably leave -e out because it defaults to utf-8
02:34:13 <kallisti> the only slightly difficult part is actually converting the spaces to non-breaking spaces.
02:34:24 <kallisti> itidus21: it's never too late to learn! :>
02:34:45 <kallisti> do you see how I'm transforming what is actually my laziness into A POSITIVE MOTIVATIONAL CHALLENGE.
02:35:12 <itidus21> it is indeed my responsibility since it was my idea
02:35:59 <itidus21> i think my first act will be to combine both files on my pc
02:36:58 <kallisti> itidus21: do you have linux?
02:37:03 <itidus21> lol. no
02:37:04 <kallisti> this will make things approx. 1000000000000000000 times easier
02:37:17 <kallisti> combining the two files in Linux is
02:37:25 <kallisti> cat file1 file2 > file3
02:37:32 <itidus21> well i just GUI'd it
02:37:53 <kallisti> it will not be very easy to convert the spaces to non-breaking spaces.
02:38:10 <oerjan> itidus21: hm maybe better to keep them separate, `words allows combining two languages
02:38:21 <itidus21> ive got 3
02:38:31 <itidus21> a, b, and a + b
02:39:08 <kallisti> oerjan: well the result of the combined dataset will be different from combining it beforehand
02:39:11 <kallisti> unless you use -N
02:39:18 <oerjan> hm
02:39:20 <itidus21> oh and this link is curious! http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm
02:39:27 <kallisti> oerjan: because of normalization
02:39:31 <kallisti> the esolang list will become more important
02:39:37 <kallisti> than it would
02:39:40 <kallisti> if you just cat'd them together.
02:39:40 <oerjan> ok
02:39:57 <itidus21> the source of the second list (but i had to do a bit of editing)
02:40:01 <kallisti> and I'm not too satisfied with the --esolang output
02:40:04 <kallisti> because the dataset is so small
02:40:22 <itidus21> thats why i came up with a dataset of 2785 lines :P
02:41:38 <itidus21> i felt so insignifigant as i scrolled through the list removing identical duplicates
02:41:45 <itidus21> so many languages
02:42:44 <kallisti> you should really
02:42:45 <kallisti> reall
02:42:46 <kallisti> y
02:42:47 <kallisti> really
02:42:52 <kallisti> learn how to use sh
02:43:10 <kallisti> you will be able to do these kinds of data processing things so much faster.
02:43:16 <itidus21> steve ballmer didn't include sh with win xp ;_;
02:45:45 <itidus21> its probably not the best time.. ill be busy eventually here
02:46:35 <itidus21> what about a hex editor though? :D
02:53:44 <oerjan> just download vim *cackles evilly*
02:54:45 <oerjan> (it almost certainly _would_ be easy in vim, if you already knew it)
02:55:36 <itidus21> getting the file in the right format would just be the start of my troubles
03:00:41 <kallisti> ?????????????????????????/
03:00:44 <kallisti> text file?
03:00:46 <kallisti> that's not hard to accomplish
03:01:04 <kallisti> you would have to try really hard to get it in the wrong format.
03:01:14 <kallisti> unless you mean encoding.
03:01:26 <kallisti> even then most things use UTF-8
03:07:37 <itidus21> uploading it to the right place and setting up your bot would be not so easy
03:19:54 -!- pikhq has quit (Ping timeout: 252 seconds).
03:19:56 -!- pikhq_ has joined.
04:00:31 -!- zzo38 has joined.
04:25:18 -!- Jafet has joined.
04:35:57 -!- azaq23 has quit (Quit: Leaving.).
05:07:20 -!- zzo38 has set topic: No topic Tuesday! | Wait, it's not Friday?? Damn it! | So, what is blegnian motion, anyway? | http://codu.org/logs/_esoteric/.
05:24:17 -!- pikhq has joined.
05:24:23 -!- pikhq_ has quit (Ping timeout: 245 seconds).
06:01:02 -!- Lymee has joined.
06:02:07 -!- Lymee has changed nick to Lymia.
06:04:42 -!- Madoka-Kaname has quit (Ping timeout: 240 seconds).
06:06:56 -!- Lymee has joined.
06:07:00 -!- Lymee has changed nick to Madoka-Kaname.
06:10:13 -!- Lymia has quit (Ping timeout: 245 seconds).
06:43:08 -!- Klisz has joined.
06:45:13 -!- DCliche has quit (Ping timeout: 245 seconds).
06:46:20 <Sgeo> kallisti, did you see the Strider update?
07:00:13 -!- pikhq_ has joined.
07:00:36 -!- pikhq has quit (Ping timeout: 252 seconds).
07:04:55 <zzo38> At FreeGeek they have Ubuntu, why doesn't it work to double-click the control menu of a window?
07:04:56 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
07:08:27 -!- zzo38 has quit (Remote host closed the connection).
07:09:39 -!- pikhq has joined.
07:09:57 -!- pikhq_ has quit (Ping timeout: 252 seconds).
07:29:17 <Sgeo> ais.... is not here
07:29:17 <Sgeo> :/
08:04:17 -!- oerjan has quit (Quit: Good night).
08:36:48 -!- monqy has quit (Quit: hello).
08:37:20 -!- Jafet1 has joined.
08:38:33 -!- Jafet has quit (Ping timeout: 252 seconds).
08:41:52 -!- CHeReP has quit (Quit: This computer has gone to sleep).
08:58:17 * Sgeo wonders what elliott thinks about Pipes other than the licensing issue
09:06:51 <myndzi> so like, i got all excited yesterday because i found that 7!*13 was real close to a binary border, but it turns out i should have been using ^ not *
09:06:52 <myndzi> :P
09:07:26 <myndzi> anybody got an idea how i might discern some combination / cycle of multiplying 7-2 that will align closely?
09:08:01 <myndzi> i guess if i want to encompass them it doesn't matter what order i go in, i just want log(7!^x)/log(2) is close to an integer, hmm
09:08:22 <myndzi> need to stick some modulo in there to try and find out how far out it might go
09:08:46 * kmc wonders what the hell myndzi is talking about
09:08:47 * myndzi wonders what the hell kmc is talking about
09:08:53 <myndzi> just rambling about math stuff
09:08:53 <myndzi> :P
09:09:00 <kmc> you typed that impossibly fast
09:09:09 <myndzi> imagine for a moment that 7! came out to 4096 or something
09:09:11 <myndzi> that would be ideal
09:09:14 <myndzi> but instead it comes out to 5040
09:09:28 <myndzi> which is only about $calc4096/5040)
09:09:33 <myndzi> which is only about 0.812698 <-
09:09:39 <myndzi> enter != shift
09:10:01 <kmc> i'm clearly missing the context for what you're trying to do
09:10:31 <myndzi> i'm trying to see if there is some N for 5040^n where 5040^n-floor(5040^n) is extremely low
09:10:33 <myndzi> maybe that helps describe it
09:11:28 <kmc> if n is an integer, 5040^n an integer, and therefore equal to its floor
09:11:42 <myndzi> scuse me, i meant
09:11:48 <myndzi> log(5040^n)/log(2)
09:11:54 <myndzi> - floor of same
09:12:00 <myndzi> i.e. is extremely close to an integer
09:12:06 <kmc> ah
09:12:25 <myndzi> obviously 5040^n gets large quickly, i'm not sure how i might work modulo in there in a mathematically sound way :P
09:12:51 <myndzi> though if i was it seems like i should be able to find the value of n that comes closest even if i don't know what 5040^n is, which is fine
09:13:04 <fizzie> log(5040^n) = n*log(5040).
09:13:12 <kmc> times something else for change of base
09:13:17 <myndzi> there's something useful that i forgot about :)
09:14:03 <fizzie> Well, log_any(5040^n)/log_any(2) = log_2(5040^n) = n*log_2(5040).
09:15:36 <myndzi> 60 log (5040) is 511.5
09:15:41 <kmc> there is no log but the natural log, and e is its base
09:16:00 <myndzi> i'm not sure if i'm doing this right now lol
09:16:24 <myndzi> yeah i guess so
09:16:29 <myndzi> 738 bits
09:16:30 <myndzi> haha
09:17:19 <fizzie> (5040^10)/(2^123)
09:17:19 <fizzie> .99452544209083507734
09:17:24 <fizzie> That's relatively speaking reasonably close.
09:18:18 <myndzi> ya, i was just eyeballing the graph
09:18:22 <myndzi> i think i found 10 earlier, lemme see
09:19:26 <myndzi> .03% miss chance not terrible
09:19:50 <myndzi> no closer than 60 either
09:20:21 <fizzie> (5040^60)/(2^738)
09:20:21 <fizzie> .96759894621787824480
09:20:38 <fizzie> log_2(5040) = 12.299208..., so it's reasonably easy to see that *10 that is close to 123, and that you will probably need to go rather large multiplies to be closer than that.
09:20:57 <myndzi> yeap
09:21:08 <myndzi> 2^128 is the closest byte border
09:21:24 <myndzi> so (5040^10)/(2^128) comes pretty close
09:24:04 <Deewiant> > [ (n,y) | n <- [0..], let y = logBase 2 (5040^n); z = 100 * (y - fromIntegral (floor y)), z >= 95 ]
09:24:08 <lambdabot> mueval-core: Time limit exceeded
09:24:11 <Deewiant> Bah.
09:24:18 <Deewiant> > take 5 [ (n,y) | n <- [0..], let y = logBase 2 (5040^n); z = 100 * (y - fromIntegral (floor y)), z >= 95 ]
09:24:19 <lambdabot> [(10,122.9920801838728),(20,245.9841603677456),(30,368.9762405516184),(40,4...
09:24:33 <Deewiant> > take 5 [ (n,round y) | n <- [0..], let y = logBase 2 (5040^n); z = 100 * (y - fromIntegral (floor y)), z >= 95 ]
09:24:34 <lambdabot> [(10,123),(20,246),(30,369),(40,492),(50,615)]
09:25:14 <myndzi> oh wait, of course; i don't need byte borders
09:25:23 <myndzi> i can mask off a couple bits without affecting random probabilities
09:25:36 <Deewiant> > take 5 [ (n,round y) | n <- [0..], let y = logBase 2 (5040^n); z = 100 * (y - fromIntegral (floor y)), z >= 95 || z <= 5 ]
09:25:37 <lambdabot> [(0,0),(10,123),(20,246),(30,369),(40,492)]
09:25:48 <Deewiant> > take 5 [ (n,round y) | n <- [1..], let y = logBase 2 (5040^n); z = 100 * (y - fromIntegral (floor y)), z >= 95 || z <= 5 ]
09:25:49 <lambdabot> [(10,123),(20,246),(30,369),(40,492),(50,615)]
09:25:51 <myndzi> and 2^123 is > 5040^10
09:25:57 <kmc> are you designing a hash table or such-type contraption?
09:26:06 <myndzi> so if i generate 123 random bits, i should be able to divide by 7, 6, 5, 4, 3, and 2 10 times
09:26:19 <myndzi> and the chance of a miss only needs one byte to be rerolled really
09:26:35 <Deewiant> > take 8 [ (n,round y) | n <- [1..], let y = logBase 2 (5040^n); z = 100 * (y - fromIntegral (floor y)), z >= 95 || z <= 5 ]
09:26:36 <lambdabot> [(10,123),(20,246),(30,369),(40,492),(50,615),(60,738),(67,824),(77,947)]
09:26:42 <myndzi> meaning that it has to fall under some set number of values
09:26:45 <myndzi> that's pretty good
09:26:52 <myndzi> also, i'm just doing retarded math things
09:27:05 <myndzi> i was seeing if there was a quick way to generate 7-bags of tetris pieces
09:27:15 <myndzi> rather than shuffling lists in place
09:27:28 <myndzi> i realized that if the numbers were right, i could just pick a single random number and "shave off" values as i go
09:27:41 <myndzi> the only thing is it'd be a really long division, but iirc there may be a way to take care of that too
09:27:59 <myndzi> where i can carry the necessary math over to the next digit only when i need to
09:28:13 <myndzi> sort of a prolonged long division
09:31:14 <myndzi> (2^123-5040^10)/2^123 = 0.5475%
09:31:26 <myndzi> .5% miss chance = one reroll out of 200 rolls
09:31:32 <myndzi> 10 bags a roll = one reroll in 2000 bags
09:31:34 <myndzi> pretty good!
09:33:58 -!- sebbu2 has joined.
09:33:58 -!- sebbu2 has quit (Changing host).
09:33:58 -!- sebbu2 has joined.
09:35:08 -!- sebbu has quit (Ping timeout: 240 seconds).
09:54:06 -!- ais523 has joined.
09:55:39 -!- GreaseMonkey has quit (Quit: The Other Game).
10:06:55 -!- comex` has joined.
10:07:02 -!- shachaf_ has joined.
10:07:08 -!- jix_ has joined.
10:07:46 -!- jix has quit (*.net *.split).
10:07:46 -!- FireFly has quit (*.net *.split).
10:07:47 -!- shachaf has quit (*.net *.split).
10:07:48 -!- const has quit (*.net *.split).
10:07:48 -!- comex has quit (*.net *.split).
10:11:46 -!- variable has joined.
10:13:06 -!- Vorpal has joined.
10:14:10 -!- shachaf_ has changed nick to shachaf.
10:35:48 -!- Jafet1 has changed nick to Jafet.
11:58:47 -!- CHeReP has joined.
11:58:51 <CHeReP> hi
12:02:22 <ais523> hi
12:11:59 -!- hagb4rd has joined.
12:23:56 -!- ais523_ has joined.
12:24:26 -!- ais523 has quit (Ping timeout: 248 seconds).
12:25:05 -!- ais523_ has changed nick to ais523.
12:25:16 -!- CHeReP has quit (Quit: This computer has gone to sleep).
12:45:46 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:49:33 -!- Systemzwang has quit (Ping timeout: 255 seconds).
12:54:44 -!- pikhq_ has joined.
12:54:52 -!- pikhq has quit (Ping timeout: 252 seconds).
13:10:17 -!- pikhq has joined.
13:10:18 -!- pikhq_ has quit (Ping timeout: 248 seconds).
14:09:33 -!- pikhq_ has joined.
14:09:39 -!- pikhq has quit (Ping timeout: 255 seconds).
14:12:53 -!- augur has quit (Read error: Connection reset by peer).
14:13:15 -!- augur has joined.
14:14:48 -!- hagb4rd has quit (Ping timeout: 240 seconds).
14:40:01 -!- ais523 has quit (Ping timeout: 260 seconds).
16:01:03 -!- Phantom_Hoover has joined.
16:07:37 -!- Ngevd has joined.
16:07:40 <Ngevd> Hello!
16:07:52 <Phantom_Hoover> Oh no, it's Ngevd!
16:07:58 <Phantom_Hoover> Quick, hide the orgies!
16:09:11 <kmc> plural?
16:09:13 <kmc> why not just merge them
16:09:16 * kallisti immediately stops gesticulating wildly.
16:11:16 <Phantom_Hoover> kmc, because it'd be harder to hide.
16:13:25 <kallisti> mon god b
16:17:41 -!- ais523 has joined.
16:18:57 <Ngevd> Prior to PietBot, my largest Piet program is my IWC forums profile picture
16:19:25 <Ngevd> http://irregularwebcomic.net/draakslair/images/avatars/5162745984c0a0f091ab68.gif
16:32:08 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
16:33:29 <ais523> does it do anything useful?
16:33:36 <Ngevd> Not really
16:33:38 <ais523> it doesn't seem to have a whole bunch of constants in
16:33:54 <Ngevd> I think it prints "TANEBS_PROFILE_PIC" or something
16:35:54 <fizzie> $ ./npiet 5162745984c0a0f091ab68.gif ; echo
16:35:54 <fizzie> TANEB'S_PIET_PIC
16:36:12 <ais523> missing a newline?
16:36:29 <fizzie> "Missing" is arguable, but it does not have one.
16:38:32 <lifthrasiir> uhm, Hong Kong here. it is quite irritating that the AP here blocks https entirely.
16:39:03 <lifthrasiir> i have heard of sslstrip, but i haven't heard of no https at all.. :S
16:41:31 <ais523> lifthrasiir: assume that it's spying on you
16:41:58 <lifthrasiir> ais523: so i'm using TorButton for now
16:42:02 <lifthrasiir> TorBrowser*
16:42:13 <ais523> just like I know that my wired work connection, when inside the firewall, MitMs SSL (it needs a specific nonstandard root certificate to be able to do https connections)
16:42:15 <lifthrasiir> at least https works...
16:42:55 <lifthrasiir> i'd like to use ssh tunneling if possible (ssh still works) but for now i don't have any ssh-enabled personal server
16:44:54 <kallisti> > let derivs f = takeWhile (/=0) . map val . iterate df . f . dVar in derivs exp (var "x")
16:44:55 <lambdabot> [exp x,exp x,exp x,exp x,exp x,exp x,exp x,exp x,exp x,exp x,exp x,exp x,ex...
16:45:32 <kallisti> > let derivs f = takeWhile (/=0) . map val . iterate df . f . dVar in derivs (cos.sin) (var "x")
16:45:34 <lambdabot> [cos (sin x),cos x*(-sin (sin x)),(-sin x)*(-sin (sin x))+cos x*cos x*(-cos...
17:10:54 <kallisti> @src sequence
17:10:54 <lambdabot> sequence [] = return []
17:10:54 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
17:10:54 <lambdabot> -- OR: sequence = foldr (liftM2 (:)) (return [])
17:13:26 <Sgeo> No one wants to hear about my pathetic life right
17:15:21 -!- Phantom_Hoover has joined.
17:15:56 <kallisti> Sgeo: is it okay if I'm ambivalent?
17:19:28 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
17:29:19 <ais523> hmm, in Microsoft vs. Novell, they're doing a retrial because the jury couldn't agree unanimously; it was 11-1 in Novell's favour
17:29:35 <ais523> and Microsoft have asked for judgement, as a matter of law, that no reasonable jury would find for Novell
17:29:45 <ais523> err, Novell vs. Microsoft, not the other way round
17:29:58 <Ngevd> Silly Bill Gates getting on Juries
17:30:39 -!- kallisti has quit (Quit: Changing server).
17:31:12 -!- kallisti has joined.
17:31:13 -!- kallisti has quit (Changing host).
17:31:13 -!- kallisti has joined.
17:32:09 <ais523> Ngevd: well, even the holdout juror thought that Microsoft had done what was alleged, just wasn't certain it had harmed Novell
17:32:21 <ais523> and Microsoft are claiming that no reasonable jury could find that they'd done it
17:37:29 -!- ais523 has quit (Ping timeout: 240 seconds).
17:39:05 <kallisti> :)
17:40:14 <Gregor> Tomorrow I will have gone a month without using the tongue-face smiley.
17:40:16 <Gregor> I'll get a pin.
17:40:23 <Gregor> It'll be shaped like this: :|
17:40:36 <kallisti> +_+ use this instead
17:40:37 <kallisti> much better
17:40:38 <kallisti> or
17:40:38 <kallisti> :>
17:40:50 <kallisti> `? CakeProphet
17:41:01 <HackEgo> ​:>
17:41:02 <Gregor> I'm trying to get off the drug, not switch to a new one!
17:41:06 <Ngevd> `? Ngevd
17:41:09 <HackEgo> ​>aX37ʧ1".F`{rMDe$$į`.A3jS.0+60zBNp.P n~j..Z/FɃ \ `..WsCRe.5.. \ .Ŕi(.5...Ҍ-.x...1azj勵..?Gs=C..,AnCi]'5iY!(.D4.sʲ/.N{WcEe/".V..aAΑ.n1}ȸ.q.wnN..ApBT.a9̀=..L_xHr<.~^in.g$OgS..ˈ..K,Qh.WÚsc..˫.h[. ڙ.,KfV.O^L+x.
17:41:20 <Ngevd>
17:41:41 <kallisti> `words --esolangs 25
17:41:45 <HackEgo> finius suble-2d trude gibberwang ortuna gecho and pointer bitz inter mallmachip topline negapos snusp cutlass bitchip verseme work .box super commentrov reversig mine 3d skul
17:42:03 <Sgeo> suble-2d?
17:42:07 <Sgeo> Hmm
17:42:13 <kallisti> the first part is subleq of some kind
17:42:31 <kallisti> unfortunately because this dataset contains actual spaces
17:42:35 <Sgeo> subtle-2d, where it's hard to realize that the language behaves 2 dimensionally
17:42:37 <kallisti> I have no way to differentiate spaces from non-spaces
17:42:48 <kallisti> er
17:42:51 <kallisti> spaces from word breaks
17:42:52 <kallisti> rather
17:43:18 <Ngevd> "gibberwang"
17:43:23 <kallisti> `words -d --esolangs 25
17:43:27 <HackEgo> ook! (L-T: 1) bf-sc (L-T: 4) con (L-T: 2) zt (L-T: -4) lazy (L-T: 1) alpl (L-T: 4) interb (L-T: 5) bloop (L-T: 3) wiki (L-T: 2) ork (L-T: 1) sqrt (L-T: 1) timefuck (L-T: 4) gritespaca (L-T: 4) rube (L-T: 5) polynome (L-T: 3) dup (L-T: 4) malbox (L-T: 2) lola (L-T: -1) aubert (L-T: 2) chinter (L-T: 1) entropy (L-T: 2) anypl (L-T: 3) jug (L-T: -10) nhohnhehr (L-T: -4) grain (L-T: 5)
17:43:53 <kallisti> `words -ddup --esolangs 25
17:43:55 <kallisti> oopse
17:43:56 <kallisti> dup
17:43:56 <HackEgo> Unknown option: u \ Unknown option: p
17:44:00 <kallisti> is dupdog
17:44:24 <kallisti> anypl is probably a program that randomly downloads a .pl file from CPAN and executes it.
18:00:45 -!- Phantom_Hoover has joined.
18:05:48 -!- Klisz has joined.
18:06:08 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
18:06:51 -!- Ngevd has quit (Ping timeout: 247 seconds).
18:18:25 -!- Ngevd has joined.
18:18:30 <Ngevd> Hello!
18:18:37 <kallisti> welcome back
18:22:55 -!- Phantom_Hoover has joined.
18:37:19 <Ngevd> Goodbye!
18:37:21 -!- Ngevd has quit (Quit: Goodbye).
18:53:30 -!- atrapado has joined.
18:54:20 -!- atrapado has left.
19:01:24 * Phantom_Hoover wonders where elliott's off to.
19:04:40 <kallisti> uh is there a libc function that turns a time_t back into an epoch time?
19:08:33 -!- sebbu2 has changed nick to sebbu.
19:08:37 <kallisti> !perl use POSIX; $t=time; print "$t ", mktime(localtime($t))
19:08:40 <EgoBot> 1326740919 1326740919
19:09:31 <kallisti> oh I meant tm
19:09:33 <kallisti> not time_t
19:09:38 -!- indeks has joined.
19:09:49 -!- indeks has left.
19:14:12 -!- Mathnerd314 has joined.
19:21:53 <fizzie> kallisti: mktime(), if your struct tm is in local time.
19:22:27 <fizzie> Oh, I see you located it.
19:23:56 <fizzie> A GNU extension adds timelocal() equal to mktime(), and timegm() equal to inverse-of-gmtime().
19:26:46 -!- Ngevd has joined.
19:26:48 <Ngevd> Hello!
19:38:51 -!- zzo38 has joined.
19:39:25 -!- Patashu has joined.
19:40:47 -!- augur has quit (Read error: Connection reset by peer).
19:41:00 -!- augur has joined.
19:42:32 -!- DCliche has joined.
19:44:42 -!- Klisz has quit (Ping timeout: 252 seconds).
19:49:45 -!- ais523 has joined.
19:50:04 <ais523> <DanielT> The basic scheme is an indent of 4 spaces, with tabs replacing 8 spaces in many places. I set my editor to that in order to be able to read the existing code and now my new files have the same quirk :-(
19:50:27 <ais523> elliott, for when you come back and logread, I am going to keep bashing these examples over your head forever, there's no escaping it
19:50:59 <zzo38> Someone made the esolang wiki article for Pure BF. Their type is ((Tape, World) -> (Tape, World)
19:51:51 <zzo38> But the type (Sum Integer -> Word8) can be used as monad and comonad, as a infinite tape of octets.
19:52:40 <zzo38> So that can be used as the type to represent the (Tape)
19:54:11 <ais523> zzo38: what are the comonad operations on that?
19:54:22 <ais523> it doesn't seem to take a type argument…
19:56:49 <zzo38> The comonad operations are next cell and previous cell
19:57:07 -!- Mathnerd314 has quit (*.net *.split).
19:57:07 -!- variable has quit (*.net *.split).
19:57:07 -!- FireFly has quit (*.net *.split).
19:57:08 -!- coppro has quit (*.net *.split).
19:57:08 -!- Deewiant has quit (*.net *.split).
19:57:08 -!- TeruFSX has quit (*.net *.split).
19:57:09 -!- olsner has quit (*.net *.split).
19:57:09 -!- yorick has quit (*.net *.split).
19:57:11 <zzo38> The monad operations are increment value of current cell and decrement value of current cell
19:57:12 -!- Deewiant has joined.
19:57:13 -!- coppro has joined.
19:57:23 -!- yorick has joined.
19:57:31 -!- olsner has joined.
19:57:36 -!- Mathnerd314 has joined.
19:58:18 <Mathnerd314> where is oerjan? he's supposed to be here, so I can show him the heart of gold I found
19:58:19 -!- TeruFSX has joined.
19:58:47 -!- variable has joined.
19:58:48 <zzo38> ais523: See? It is a comonad operations on that.
19:58:57 <ais523> wow, Wikipedia vote on whether to do a blackout in protest at SOPA: currently 718 for 100 against
19:59:07 <Phantom_Hoover> OK quick, institute the Mathnerd314 protocol.
19:59:10 <ais523> 718? seriously? that is one big set of people voting
20:00:11 -!- Vorpal has quit (Ping timeout: 260 seconds).
20:01:22 -!- comex` has changed nick to comex.
20:01:28 <Mathnerd314> 52
20:02:25 <Mathnerd314> <3
20:02:46 <Mathnerd314> hmm... this is harder than expected
20:02:54 <Mathnerd314> 8<3
20:03:30 <Mathnerd314> excuse me for a moment
20:03:47 -!- Mathnerd314 has quit (Quit: ChatZilla 0.9.88 [Firefox 12.0a1/20120115031052]).
20:06:29 -!- ais523 has quit (Ping timeout: 240 seconds).
20:06:59 -!- ais523 has joined.
20:07:11 <Sgeo> ais523, I think Reddit linked to it
20:07:20 <ais523> wouldn't surprise me
20:07:51 <Ngevd> I have a Wikipedia account! I can vote!
20:08:03 <Ngevd> Strictly speaking I have two, but that second one is permabanned
20:08:26 <Sgeo> o.O
20:09:00 <Ngevd> I was seeing how quick the Wiki admins are.
20:09:03 <Ngevd> 17 minutes.
20:09:20 <zzo38> ais523: Could you read my reply to your question to me? Or did split damage it?
20:09:36 <ais523> zzo38: I think it was lost in the netsplit
20:09:45 <ais523> I didn't see an answer
20:09:51 <zzo38> The comonad operations are next cell and previous cell
20:09:55 <zzo38> The monad operations are increment value of current cell and decrement value of current cell
20:10:53 -!- sebbu2 has joined.
20:10:53 -!- sebbu2 has quit (Changing host).
20:10:53 -!- sebbu2 has joined.
20:11:04 <zzo38> Now can you understand it?
20:11:18 <ais523> zzo38: I'm not sure that types correctly
20:11:29 -!- sebbu has quit (Ping timeout: 240 seconds).
20:11:53 <zzo38> ais523: It does; I try it and it work (Sum Integer -> Word8)
20:12:09 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:16:27 -!- Phantom_Hoover has joined.
20:16:29 <zzo38> ais523: Did you try?
20:16:47 <ais523> no
20:17:01 <ais523> but I'm pretty sure that comonads have one operation of type T x -> x, and one of type T x -> T T x
20:17:05 <ais523> and the operations you described don't have those types
20:17:53 <zzo38> The type (Sum Integer -> Word8) is the type (T x) here and yes it does have Kleisli and coKleisli morphisms operations
20:18:37 <ais523> err, so what's x?
20:19:11 <zzo38> Word8
20:19:33 <ais523> ah, OK
20:21:09 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:21:43 -!- sebbu3 has joined.
20:23:16 -!- sebbu3 has changed nick to sebbu.
20:23:36 -!- Phantom_Hoover has joined.
20:24:24 -!- sebbu2 has quit (Ping timeout: 245 seconds).
20:27:00 -!- Mathnerd314 has joined.
20:28:09 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:29:26 -!- Phantom_Hoover has joined.
20:30:30 <Mathnerd314> a heart of gold --> <3
20:30:50 <Ngevd> Looks like a block of green
20:31:44 <Mathnerd314> you have to look closely to see it
20:33:58 <ais523> "1,41<3"?
20:34:12 <Ngevd> 1,41<3
20:35:09 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:45:17 <fizzie> Our locale-specific decimal separator is ',', so that makes sense.
20:45:23 <fizzie> > 1.41 < 3
20:45:24 <lambdabot> True
20:52:39 -!- Phantom_Hoover has quit (Changing host).
20:52:39 -!- Phantom_Hoover has joined.
20:57:29 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:59:29 <zzo38> I have a book titled "Pope-Pourri"
20:59:30 -!- Phantom_Hoover has joined.
20:59:38 <zzo38> Someone was made saint because she hung her clothes on sunbeams
21:04:50 <zzo38> But that was a long time ago, and people were more superstitious they would have believed it without checking more carefully as much as people can do so today
21:05:09 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:05:12 -!- GreaseMonkey has joined.
21:05:34 <Ngevd> Now I'm just imagining some mediaeval peasants on IRC saying "pix plz"
21:07:49 -!- Mathnerd314 has quit (Ping timeout: 240 seconds).
21:11:11 <zzo38> This book even includes Latin words for new things, such as photocopy, pinball, television, and so on.
21:16:14 -!- monqy has joined.
21:17:18 -!- Phantom_Hoover has joined.
21:22:09 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:22:24 -!- Phantom_Hoover has joined.
21:22:41 <Ngevd> Well, goodnight
21:22:48 -!- Ngevd has quit (Quit: Goodbye).
21:24:08 -!- hagb4rd has joined.
21:30:01 -!- Mathnerd314 has joined.
21:30:14 -!- Mathnerd314 has changed nick to tricstmr.
21:33:25 <tricstmr> fizzie: can you make me an op of #esoteric?
21:33:50 -!- tricstmr has changed nick to Mathnerd314.
21:33:57 <Mathnerd314> "me" being Mathnerd314
21:35:06 -!- Mathnerd314 has changed nick to Mathnerd3141.
21:38:29 <ais523> weird request
21:38:53 <Mathnerd3141> how so?
21:40:08 <Mathnerd3141> I just want to prove that I'm awesome :-/
21:41:53 <zzo38> Does the run rotate?
21:42:18 <zzo38> Mathnerd3141: I would not think you need that to prove it
21:43:12 -!- oerjan has joined.
21:43:59 <Phantom_Hoover> oerjan, kick mathnerd plx
21:44:23 <Mathnerd3141> a heart of gold --> <3
21:44:36 <zzo38> It should be possible to compute houses for any solar system object that rotates (Astrolog only computes houses for the Earth, however). Of course you also need to decide where 0 longitude is on a planet, in order to know what position you want
21:45:55 <oerjan> Mathnerd3141: looks rather green from here
21:46:06 <Mathnerd3141> you have to look closely
21:47:09 <hagb4rd> green? copper acetate?
21:47:28 -!- oerjan has set topic: No topic Wednesday! | Wait, it's not Friday?? Damn it! | So, what is blegnian motion, anyway? | http://codu.org/logs/_esoteric/.
21:48:08 <Phantom_Hoover> Madoka-Kaname, please go back to the annoying pills rather than the crazy pills.
21:48:10 <Phantom_Hoover> Erm.
21:48:17 <Phantom_Hoover> *Mathnerd3141
21:48:18 <zzo38> When computing coordinates relative to a sun/moon/planet, when you specify coordinates, whether ecliptic or equatorial, you also need to specify if the coordinates are geocentric or local coordinates. (The sun would have no local ecliptic coordinates because it is a star. But any rotating object should have local equatorial coordinates)
21:48:26 <Phantom_Hoover> Madoka-Kaname could do with a shot of crazy pills, frankly.
21:48:52 <Mathnerd3141> Phantom_Hoover: you're right, I lied, it's only a heart of silver
21:49:18 <zzo38> And then binary star systems might confuse it even more
21:49:33 -!- Mathnerd3141 has changed nick to Mathnerd314.
21:49:48 <hagb4rd> zzo38 the sun is rotating around the blackhole too.. so you need another to add another dimension: time
21:50:26 <hagb4rd> aw you already had this
21:50:56 <zzo38> On my computer, <3 is blue like all message after : in IRC
21:51:11 <zzo38> hagb4rd: O, I didn't know that. Thanks for telling me
21:51:12 <oerjan> zzo38: for gas objects the rotation depends on where you define the surface to be...
21:51:32 * hagb4rd is now known as captain obvious
21:51:55 <zzo38> oerjan: O, yes... but are there any standard definitions for their surfaces?
21:52:03 <oerjan> and might perhaps not even be stable at a given altitude, i don't know
21:52:24 <oerjan> zzo38: i don't know, for the sun there's the photosphere
21:52:40 <oerjan> which is however rather deep by earth standards
21:53:00 <zzo38> Equatorial coordinates and houses do not depend on altitudes, so just use the stable one
21:57:25 <oerjan> <myndzi> i guess if i want to encompass them it doesn't matter what order i go in, i just want log(7!^x)/log(2) is close to an integer, hmm
21:57:41 <oerjan> myndzi: look at the continued fraction of log (7!)/log (2)
21:57:49 <zzo38> Ecliptic coordinates do not depend on altitudes either
21:59:11 <oerjan> it tells you which rationals p/q are closest, then set x = q
21:59:42 <oerjan> hm
22:00:00 <oerjan> @tell myndzi look at the continued fraction of log (7!)/log (2); it tells you which rationals p/q are closest, then set x = q
22:00:00 <lambdabot> Consider it noted.
22:03:45 -!- DCliche has changed nick to Klisz.
22:14:20 -!- Systemzwang has joined.
22:19:09 -!- cheater has quit (Ping timeout: 240 seconds).
22:30:34 <oerjan> see the Zwang inherent in the System
22:37:07 <Phantom_Hoover> <oerjan> and might perhaps not even be stable at a given altitude, i don't know
22:37:18 <Phantom_Hoover> The banding is caused by differences in rotation speed in the top clouds.
22:38:09 <oerjan> figures.
22:44:04 -!- oerjan has quit (Quit: leaving).
22:44:39 -!- centrinia has joined.
22:45:39 -!- Mathnerd314 has quit (Ping timeout: 245 seconds).
22:47:48 -!- oerjan has joined.
22:48:47 * pikhq_ would like to beat ffmpeg a bit
22:50:20 <pikhq_> Do you have any idea how utterly infeasible it is to make it take potentially anamorphic video, and scale it down to fit a 400x320 screen, without including black bars (and thus 400x320 is the *max* size it can scale to), and output non-anamorphic video?
22:50:36 <Phantom_Hoover> The gall of it!
22:51:15 <pikhq_> -vf scale='min(400\,400*a):min(320\,ow/a)' *almost* works. Except that the variable "a" there, which is defined to be the aspect ratio, is not actually the aspect ratio.
22:51:24 <pikhq_> It is, instead, the ratio of width and height in the input.
22:51:34 <pikhq_> Which, in anamorphic video != aspect ratio.
22:53:51 <Phantom_Hoover> pikhq_
22:53:53 <Phantom_Hoover> Breathe.
22:54:20 <pikhq_> I'm merely slightly upset at particularly stupid design.
22:57:25 <zzo38> Make more quiz file for Internet Quiz Engine
22:57:38 <zzo38> So far it only has two files, one of which is not very good because it is only example file
22:57:49 -!- Sgeo has quit (Ping timeout: 240 seconds).
22:58:00 * Phantom_Hoover -> OH GOD I HAVEN'T SET COMPOSE YET
22:58:24 -!- Sgeo has joined.
22:59:27 <zzo38> Read instructions, and then please tell me, can you understand it?
23:03:17 <pikhq_> Also, before you ask, I'm using ffmpeg because Debian doesn't package libav's command line tools yet.
23:03:26 -!- Phantom_Hoover has quit (Quit: Leaving).
23:04:31 <pikhq_> Well, rather, they do, but it's only in sid.
23:05:18 <pikhq_> (they're in the middle of a complete switch, it seems)
23:07:13 -!- centrinia has quit (Quit: centrinia).
23:13:28 -!- ais523 has quit (Remote host closed the connection).
23:14:49 -!- itidus20 has joined.
23:17:09 -!- itidus21 has quit (Ping timeout: 240 seconds).
23:21:42 <kallisti> why is object-oriented programming so obnoxious
23:23:05 <kallisti> perl OO is even more obnoxious.
23:23:07 <kallisti> than regular OO
23:24:03 <pikhq_> Because org.sun.java.lawl.what.do.you.mean.names.should.be.short.standard.input_and_output.output.print.string("Hello, world!\n")
23:24:12 <kallisti> seriously
23:24:30 <kallisti> DateTime::Format::Human::Duration is not easy to type.
23:34:18 -!- itidus20 has quit (Read error: Connection timed out).
23:48:36 -!- Mathnerd314 has joined.
23:49:06 -!- Frooxius has quit (Quit: ChatZilla 0.9.88-rdmsoft [XULRunner 1.9.0.17/2009122204]).
23:50:53 -!- cheater has joined.
23:54:51 -!- Frooxius has joined.
23:58:59 <zzo38> Write some quiz file for Internet Quiz Engine! So far is only 2 files and they aren't very good
23:59:38 <zzo38> You need sprunge to send a quiz file, though.
2012-01-17
00:26:42 <zzo38> I found something called "The Online Book Initiative". It seem pretty good. It is at gopher://gopher.std.com
00:44:06 -!- itidus21 has joined.
00:44:56 -!- SteppenwolfVM has joined.
00:45:06 -!- SteppenwolfVM has left ("Oh look.... it's a part!").
00:54:41 -!- SteppenwolfVM has joined.
00:55:31 -!- SteppenwolfVM has left ("Oh look.... it's a part!").
01:00:57 -!- GreaseMonkey has quit (Read error: Connection reset by peer).
01:01:41 -!- GreaseMonkey has joined.
01:25:29 -!- Sgeo has quit (Ping timeout: 240 seconds).
01:39:56 -!- Sgeo has joined.
02:10:09 -!- Sgeo has quit (Quit: Leaving).
02:11:58 <kallisti> @hoogle [a] -> ([a], [a])
02:11:58 <lambdabot> Prelude break :: (a -> Bool) -> [a] -> ([a], [a])
02:11:58 <lambdabot> Data.List break :: (a -> Bool) -> [a] -> ([a], [a])
02:11:58 <lambdabot> Prelude span :: (a -> Bool) -> [a] -> ([a], [a])
02:12:14 <oerjan> also partition
02:12:32 <oerjan> @hoogle+
02:12:33 <lambdabot> Data.List span :: (a -> Bool) -> [a] -> ([a], [a])
02:12:33 <lambdabot> Data.List partition :: (a -> Bool) -> [a] -> ([a], [a])
02:12:33 <lambdabot> Prelude splitAt :: Int -> [a] -> ([a], [a])
02:12:37 <oerjan> @hoogle+
02:12:37 <lambdabot> Data.List splitAt :: Int -> [a] -> ([a], [a])
02:12:38 <lambdabot> Data.List genericSplitAt :: Integral i => i -> [b] -> ([b], [b])
02:12:38 <lambdabot> System.FilePath.Windows splitDrive :: FilePath -> (FilePath, FilePath)
02:13:05 -!- Sgeo has joined.
02:13:19 * Sgeo decides to use Conduit Sources as his primary model of events
02:13:55 <oerjan> lucky for you elliott is not around, eh?
02:15:46 * oerjan checks in the obvious place to see if he's alive
02:17:43 <monqy> so?
02:18:09 <oerjan> seen 4 hours ago
02:24:28 -!- zzo38 has left.
02:24:31 -!- zzo38 has joined.
02:27:43 <oerjan> although his rep was a lot lower yesterday than "usual"
02:28:03 <itidus21> type the devil's nick and his taskbar will alert him
02:28:15 <monqy> hi
02:28:42 <oerjan> itidus21: i did that 14 minutes ago, didn't i
02:29:31 <oerjan> i suspect he's asleep now, anyway
02:29:56 <itidus21> ahh.. hexham sleeps
02:30:52 <oerjan> i'm not sure whether the rest of hexham sleeps has much to do with it.
02:31:12 <oerjan> *whether whether
02:31:22 <kallisti> > break isSpace ""
02:31:23 <lambdabot> ("","")
02:31:46 <oerjan> > break undefined ""
02:31:47 <lambdabot> ("","")
02:32:36 <kallisti> oerjan: I'm trying to do something really simple
02:32:46 <kallisti> namely, remove all consecutive whitespace
02:32:47 <kallisti> and also
02:32:53 <kallisti> remove whitespace from both ends of the list
02:32:56 <kallisti> at the same time
02:33:02 <oerjan> kallisti: unwords . words hth
02:33:03 <monqy> unwords . words
02:33:05 <monqy> yes
02:33:05 <kallisti> while preserving the kind of whitespace (no unwords . words)
02:33:14 <oerjan> bah :D
02:33:27 <monqy> \v\t: which gets preserved???
02:33:35 <kallisti> neither
02:33:38 <monqy> :o
02:33:40 <kallisti> oh
02:33:41 <kallisti> yes
02:33:42 <kallisti> good question
02:33:50 <oerjan> and what about in \r\n
02:33:54 <monqy> ssshh
02:34:24 <monqy> worrying about \r\n is too sensible
02:34:46 <monqy> does anyone even use \v\t?
02:35:11 <augur> ok wheres my finnish speakers
02:35:22 <oerjan> sleeping
02:35:35 <augur> :(
02:35:44 <hagb4rd> päimavaar
02:35:50 <augur> fizzie! D:
02:35:54 <oerjan> you know perfectly well fizzie is the only op with a sane sleep schedule :P
02:35:59 <augur> @tell fizzie msg me plz
02:35:59 <lambdabot> Consider it noted.
02:36:19 <oerjan> although ais523's occasionally is
02:36:23 <augur> hagb4rd: you speak finnish?
02:36:26 <hagb4rd> no
02:36:30 <augur> o :(
02:36:37 <oerjan> `words --finnish 50
02:36:41 <HackEgo> astannettäviltämin eettamatto pallisilmällä autuvautuvistansa paimpänne havoliita kepeimuttelemme sfäärittämä kuolisimpana löyläpikalve takoskivamme uintaanne mustamme vaileviltanne aggressäästä nihatekemistä ryhmimpaa uneen lensa joutumastipa ologisempääsi samistanne tyyliltaan hämälleni soittu
02:36:49 <hagb4rd> the only word i knew was date
02:36:49 <oerjan> augur: HackEgo can help
02:36:56 <augur> no it cant :(
02:37:06 <oerjan> *gasp*
02:37:23 <oerjan> hagb4rd: i suspect you broke vowel harmony by using both ä and a
02:37:34 -!- yiyus has quit (Ping timeout: 255 seconds).
02:37:36 <hagb4rd> only once?
02:37:41 <hagb4rd> *phew
02:37:51 <hagb4rd> yea
02:37:52 <oerjan> also -r is probably not a common word ending in finnish
02:38:29 <hagb4rd> not common, but right
02:38:33 <hagb4rd> not?
02:39:02 <hagb4rd> you know a good dictionary?
02:39:04 -!- yiyus has joined.
02:39:10 <hagb4rd> for finnish
02:39:35 <oerjan> hagb4rd: you will note that every word HackEgo generated ends with a vowel or -n. i think -t also happens in some case.
02:39:50 <oerjan> no. i don't _actually_ know finnish.
02:40:07 <oerjan> tswett might know.
02:40:11 <hagb4rd> aw..bad luck then :Pp
02:40:26 <oerjan> (and be awake, unlike the finns)
02:40:29 <hagb4rd> i thought you were norwegian?
02:40:54 <hagb4rd> i must have been wrong
02:40:59 <oerjan> i am. norwegian is not related to finnish.
02:41:19 <hagb4rd> yes, thats y i wonder
02:41:30 <augur> wheres oklopol :(
02:41:34 -!- pir^2 has joined.
02:41:37 <oerjan> i'm just somewhat generally interested in linguistics
02:41:49 <augur> oerjan: well you're in luck! i'm a linguist!
02:41:56 <oerjan> there's also Deewiant
02:41:58 <pir^2> w00t
02:42:01 <pir^2> a linguist!
02:42:02 <oerjan> i said _somewhat_
02:42:03 <augur> Deewiant isnt a linguist
02:42:11 <oerjan> no, he's finnish
02:42:26 <oerjan> and atehwa
02:43:04 <oerjan> and ineiros
02:43:48 <oerjan> just to nickping all the ones i remember :P
02:44:57 <pir^2> Is there a word for people from Finnmark?
02:45:01 <pir^2> Finnmarkish?
02:45:05 <oerjan> finnmarking
02:45:11 <oerjan> (noun)
02:46:36 <oerjan> normally we'd make the adjective by adding -sk, but that gets awkward when the word already ends in -rk...
02:47:38 <pir^2> Do you live in Finnmark?
02:48:00 <pir^2> (no need to answer...)
02:48:05 <tswett> I might know!
02:48:29 <hagb4rd> paimaväär?
02:48:37 <oerjan> like "trøndersk" has 445000 google hits while "finnmarksk" only has 700 or so
02:48:45 <oerjan> no, i live in Trøndelag
02:48:52 <oerjan> (Trondheim)
02:49:22 <tswett> paimaväär looks like a plausible Finnish word, though, as has been said, I don't think Finnish words commonly end in r.
02:49:58 <tswett> On the other hand, the Finnish Wikipedia article "Koira" has no words at all ending in r, apart from words in other languages.
02:50:06 <tswett> So... no.
02:50:14 <oerjan> hm actually checking a couple other counties implies "trøndersk" might be the odd one out
02:50:15 <tswett> `words 50
02:50:20 <ineiros> Hilighting in the middle of the night.
02:50:21 <HackEgo> gen fnh ovepo ffervedransag aga isperi writtr ipnley sual late kossen dia copin lley camatt capple hysia care hem oile pitia ress cour whiteropolle come
02:50:38 <tswett> Are those supposed to be plausible English words, because... because...
02:50:54 <oerjan> tswett: yep.
02:50:56 <pir^2> umm
02:50:59 <oerjan> english is _weird_, man
02:51:00 <pir^2> `words 50
02:51:06 <HackEgo> pard mvl supe frenoy elmakener crealtic yrity seruntla tszew mastop nobwer whltcherline ret sphill ghen geffe coated smatrik orditry toight forgnific ath caffe minaniflb homodynin
02:51:11 <tswett> What languages can it do?
02:51:13 <tswett> All of them?
02:51:16 <tswett> `words --spanish 50
02:51:21 <HackEgo> molizaglia yntesione estron debíalen tentrotaliza penio náis jinéis alleión tkopiesestraguay consen cermi fcpcct her bastonj desma plictoria morizacionas evolu hoolimporte prado kosorbelila indisti antate retambell
02:51:32 <oerjan> *+s
02:51:44 <hagb4rd> `words -- sindarin 50
02:51:44 <pir^2> `words --french 50
02:51:53 <hagb4rd> `words --sindarin 50
02:51:57 <HackEgo> Unknown option: sindarin
02:51:59 <HackEgo> Argument "sindarin" isn't numeric in int at /hackenv/bin/words line 147. \
02:52:08 <pir^2> `words --french 50
02:52:09 -!- Mathnerd314 has quit (Ping timeout: 248 seconds).
02:52:12 <pir^2> ...
02:52:13 <HackEgo> burg concart traient albaction lutionstassi eluy massoix fufiel macation abinum aflad dof einetés logîa letaçoo trandas procb voh chus nac frigius trani fbcf mouchi ben
02:52:23 <pir^2> lulz
02:52:29 <pir^2> fbcf?
02:52:48 <HackEgo> crock suddi agustympos hydrio rodults shimi agolge appel orèze morosco milauto hidussor perfè charging sitibus aliti tima guère ebate aniershaneguyeri incripteradjes gnatter nappé confeld éluct
02:52:58 <tswett> Whelp. Some of those Spanish words are more likely than others.
02:53:23 <tswett> "morizacionas"? Yes, definitely. "fcpcct"? No.
02:54:08 <pir^2> éluct la plè des agustympos
02:54:11 <tswett> `words --german 50
02:54:15 <HackEgo> beschauf eriknm bewer spcne eleidiskaufbauer weibweizki geschachepur megassung folgepube erbaziffenerescher moden zuwachfarbe vollendessfei metaktorschi umredgingenblutur lottelle derin rollia krokalkonverhalthe pres stoff betheitsgestris drowerke türzeugeueren durcenssyrit
02:55:04 <hagb4rd> it might be improvable
02:56:03 <tswett> `words --scots 10
02:56:06 <HackEgo> Unknown option: scots
02:56:10 <tswett> }:(
02:58:02 <Sgeo> concart? Anything like concat?
02:58:38 <pir^2> `? concart
02:58:41 <HackEgo> concart? ¯\(°_o)/¯
02:59:53 <tswett> Let's see. Part, supe, mastop, nobwer, ret, sphill, coated, smatrik, orditry, forgnific, ath, late, capple, care, hem, ress, come...
03:00:27 <tswett> I just asked it for words and it said "guraul gei spokesfo pitte lausgen tbutylike unmiflex guan affympan cereaco vauli consalpa injr fair macaller sumab thrifog petero ghert wholog graz 942124.25 viilplant plum avelli"
03:00:32 <tswett> One of those words is not like the others.
03:00:43 <pir^2> Please note: In less than 27 hours,
03:00:44 <pir^2> the English Wikipedia will be blacked out globally in protest of SOPA and PIPA.
03:00:46 <pir^2> Learn more
03:01:06 <pir^2> tswett: 942124.25
03:01:18 <pir^2> XD
03:01:24 <tswett> That is correct!
03:01:44 <pir^2> unmiflex!
03:03:28 <hagb4rd> im sure there is no words in german ending with -knm or -ki.. there is also no german word with a 'standalone' c (only ck, or ch)
03:03:34 <hagb4rd> this tool is crap
03:04:38 <pir^2> no
03:04:52 <pir^2> In my opinion it's very traeusal
03:04:59 <hagb4rd> lol
03:05:32 <pir^2> It's also very imisreent
03:05:44 <pir^2> ...or is that a noun?
03:06:02 <tswett> Oh my god best word ever: "wapellessly"
03:06:15 <pir^2> :D
03:06:30 <tswett> It's an O:B-quality word.
03:06:47 <oerjan> hagb4rd: i won't be on the -ki, germans have some fearsome diminutives
03:06:51 <oerjan> *bet
03:07:50 <hagb4rd> its mostly -ei -er -ig -en
03:08:13 <hagb4rd> +ending with
03:09:08 <tswett> "mcgockeleof". That makes me imagine some guy named George McGockelEOF.
03:09:23 <oerjan> (see: Schnappi)
03:09:34 <hagb4rd> you know schnappi? :)
03:09:41 <hagb4rd> the crocodile?
03:09:56 <oerjan> and Heidi. i cannot actually recall any german name in -ki, though
03:10:03 <hagb4rd> oh yes and i
03:10:14 <oerjan> hagb4rd: how could i possibly have avoided Schnappi
03:10:28 <hagb4rd> hehe
03:10:36 <hagb4rd> amazing facts
03:11:15 <oerjan> there was a norwegian actor with nickname "Henki" though, is that a german name?
03:11:54 <oerjan> i guess it was short for henrik, though
03:11:59 <hagb4rd> the i ending is used in cases of belittlement
03:12:03 <hagb4rd> exactly
03:12:15 <hagb4rd> its like tom and tommy
03:12:30 <hagb4rd> know what i mean?
03:12:58 <oerjan> well in english i think tommy is short (um...) for tom, which is short for thomas.
03:13:16 * oerjan recalls there was a hilarious blackadder sketch about this
03:13:24 <hagb4rd> see also jennifer -> jenny
03:13:42 <hagb4rd> bob - > bobby
03:13:57 <hagb4rd> and so on
03:14:58 <oerjan> bob is short for robert
03:15:18 <hagb4rd> yea.. but you agree that tommy is not "short" for tom
03:15:19 <pir^2> bobby is long for bob
03:15:29 <pir^2> well
03:15:30 <hagb4rd> won't ya
03:17:20 <hagb4rd> i'm not sure 'belittlement' is the right translation.. my dict also says: minimization
03:19:49 <hagb4rd> schnappi would be the minimized form of 'schnapper'
03:20:16 <hagb4rd> schnappen means to snap
03:20:31 <kmc> the usual word in english for this sort of construct is "diminutive"
03:20:39 <hagb4rd> thx
03:20:48 <hagb4rd> consider it noted :)
03:21:30 <Sgeo> kmc, what do you think about exposing events as Sources?
03:21:36 <oerjan> hey i already said that :(
03:21:37 <kmc> what's a Source
03:21:59 <Sgeo> kmc, the Conduit equiv. of Enumerators
03:22:00 <oerjan> source of all evil
03:22:10 <hagb4rd> oh sorry oerjan
03:22:40 <kmc> i don't know much about Conduit yet
03:22:43 <kmc> did you ask #haskell
03:23:04 <oerjan> hask and you shall ell
03:23:13 <Sgeo> Yeah, but maybe too casually for anyone to take note?
03:23:46 <kmc> you have to start out by saying "HASKELL SUX CUZ I CANT IO Int -> Int"
03:23:57 <kmc> once you have their attention you can tell them what you're really trying to do
03:27:22 <hagb4rd> yep oerjan..in hindsight everything you said is right
03:29:32 <oerjan> AS ALWAYS
03:30:45 <oerjan> which can get quite embarassing. like that time i foolishly said that Stockholm is the capital of Sweden.
03:32:13 * Sgeo doesn't get it
03:32:32 <hagb4rd> its not?
03:32:40 <oerjan> hagb4rd: well _now_ it is.
03:33:09 <shachaf> ESOTERIC SUX CUZ I CANT IO Int -> Void
03:33:49 <pir^2> ...
03:39:47 <pir^2> BRAINFUCK SUX CUZ I CANT SOLVE THE HALTING PROBLEM
03:39:48 <zzo38> What do you mean by those things?
03:40:23 <pir^2> zzo38: what?
03:40:35 <zzo38> There is (IO Int -> Int) using unsafePerformIO but you shouldn't use that usually
03:40:53 <zzo38> pir^2: I was mentioning "ESOTERIC SUX CUZ I CANT IO Int -> Void"
03:41:26 <pir^2> http://i.imgur.com/YY3LI.png
03:41:28 <itidus21> if the halting problem is solved it might coincide with the end of the universe
03:41:42 <pir^2> yay
03:42:00 <itidus21> if the universe can end then the halting problem is solved :-?
03:42:40 <pir^2> only practically
03:42:50 <pir^2> Turing machines are theoretical
03:42:52 <itidus21> oh
03:42:56 <itidus21> bummer
03:43:00 <pir^2> well
03:43:03 <itidus21> :P
03:43:05 <pir^2> nobody will care
03:43:16 <pir^2> (unless they're from another universe)
03:43:44 <hagb4rd> singularity goes a long way
03:43:48 <itidus21> so what is the halting problem again? whether a program will halt?
03:44:33 <pir^2> Write a program to determine whether arbitrary Turing machines halt?
03:46:06 <pir^2> http://esoteric.voxelperfect.net/wiki/Weight_Loss_Clinic_Calgary ...
03:46:30 <pir^2> For more information, please follow me.. Lefebre Calgary Clinics - Medical Diet since 1998.. Welcome to the Lefebre clinic.. Call today.. The clinic is available ZERONA Dr.. Lefebre! .
03:46:30 -!- Zuu has quit (Ping timeout: 252 seconds).
03:46:33 <itidus21> the probelm of course is that if you could do that then you never needed the turing machine
03:46:46 -!- Zuu has joined.
03:48:00 <kmc> what
03:48:02 <itidus21> hmm
03:48:06 <itidus21> nevermind
03:48:24 <pir^2> ...
03:48:26 <pir^2> ????????????
03:48:36 <pir^2> "you never needed the turing machine"
03:48:38 <hagb4rd> finally im confused
03:48:54 <pir^2> lol
03:48:56 <itidus21> so, when programming a turing machine, does the programmer tend to know whether it will halt?
03:49:01 * pir^2 is laughing at "you never needed the turing machine"
03:49:04 <kmc> yes
03:49:16 <pir^2> XD
03:49:16 <itidus21> kmc: and so, how does he know?
03:49:28 <kmc> by writing a proof, in some sense
03:49:37 <kmc> you're asking "when you write a program, how do you know what it does"
03:49:47 <itidus21> yeah
03:49:47 <Sgeo> For some turing machines, it's possible for a turing machine to determine whether or not it halts. But no turing machine can say perfectly 100% of the time
03:49:49 <itidus21> i guess so
03:49:57 <itidus21> i am
03:50:03 <kmc> humans have some capacity to generate proofs
03:50:04 <Sgeo> Either it fails to answer sometimes, or gives false positives, or false negatives, or 2 or more of the above
03:50:05 <kmc> so do computers
03:50:27 <pir^2> all computer programs halt
03:50:36 <pir^2> *in practice
03:51:21 <kmc> "does it halt" is just one example of the general problem of predicting program behavior
03:51:55 <Sgeo> There exist programs for which humans are uncertain about whether they will halt
03:52:26 <kmc> yeah, like the program that finds counterexamples to <your favorite unsolved conjecture in mathematics>
03:53:06 <pir^2> Collatz conjecture? Goldbach conjecture? P vs NP? True?
03:53:18 <pir^2> I just solved True
03:53:28 <kmc> yeah collatz is a good example
03:54:55 * pir^2 -> HOTPO -> 1 -> 2 -> 1 -> 2...
03:57:45 <kmc> itidus21, it's easy to generate a proof that some machine halts on some specific input
03:57:52 <kmc> it's just a trace of the execution of that machine
03:58:09 <kmc> but if the machine doesn't halt, it's hard to prove that
03:58:54 <kmc> though in some cases it's easy, for example if it enters the exact same state twice
03:58:58 <kmc> it may also be hard to prove that a machine halts for *all* inputs
04:00:58 <pir^2> !finnmark bye
04:02:01 -!- pir^2 has quit (Quit: I have discovered a truly marvelous demonstration of this proposition that this quit message is too narrow to contain).
04:02:19 -!- MDude has changed nick to MSleep.
04:02:27 <pikhq_> All computer programs halt if your notion of "halting" includes heat death. :P
04:03:04 <kallisti> pikhq_: NOT IN THEORETICAL LAND DAWG
04:04:51 <pikhq_> itidus21: You seem utterly confused about the halting problem. :)
04:05:20 <hagb4rd> hm, so 4,2,1 would make an endless loop?
04:05:37 <hagb4rd> if not catched?
04:06:27 <hagb4rd> okay.
04:21:55 <hagb4rd> the 500 bucks are already mine..muahrhr
04:37:26 <itidus21> seems to me that several guys will solve the halting problem without knowing each other and be super famous for it 50 years later
04:44:43 <pikhq_> itidus21: Turing already proved it was impossible.
04:44:56 <pikhq_> Unless there's a glaring flaw in his proof, done.
04:45:13 <itidus21> i got confused by "<pir^2> BRAINFUCK SUX CUZ I CANT SOLVE THE HALTING PROBLEM"
04:45:21 <kmc> or unless we change to different definitions
04:45:26 <kmc> itidus21, it was an intentionally dumb statement
04:45:57 <itidus21> d'oh
04:46:09 <kmc> all caps, bad grammar and spelling
04:47:05 <itidus21> i understood that it was a mockery, but i didn't realize that the meaning of it was also wrong
04:47:49 <kmc> it's very easy to prove the halting problem is impossible
04:48:27 <kmc> suppose (by contradiction) that you have a function halts(f) = true if f(x) halts for all x, halts(f) = false if f(x) loops for some x
04:49:00 * oerjan swats kmc for misrepresenting the problem -----###
04:49:02 <kmc> now define the function g(x): if (halts(g)) then { loop forever } else { return }
04:49:13 <kmc> oh misrepresenting how?
04:49:15 <itidus21> all that matters to me is that it's solved :D
04:49:26 <oerjan> x is supposed to be an argument to halts as well
04:49:49 <itidus21> x is a free variable :P
04:49:58 <kmc> aren't both problems unsolvable, though
04:50:03 <oerjan> probably.
04:50:27 <kmc> anyway the only subtlety is that g needs a copy of its own description
04:50:36 <itidus21> by solved i probably mean that we realize it's unsolved
04:50:48 <kmc> and it's not obvious that you can do this
04:50:50 <itidus21> s/unsolved/unsolvable
04:50:53 <kmc> but you can
04:51:19 <kmc> in mathematics this is known as Kleene's recursion theorem
04:51:25 <kmc> in esoteric programming it is known as writing quines :)
04:51:52 <zzo38> If there are an infinite number of possible inputs, can you make a function that stops if and only if the program you are testing will stop for all inputs?
04:52:01 <oerjan> g(x) = if halts(x,x) then { loop forever } else { return }
04:52:39 <zzo38> Those g(x) stuff have been described in book Godel, Escher, Bach, although using Godel numbering instead of like that.
04:53:34 <oerjan> then ask if halts(g,g) is true or not
04:57:19 <kmc> yeah, that's better
05:00:22 <oerjan> your version can be reduced to this by defining myhalts(g,x) = yourhalts(\y -> g(x)), i think
05:01:31 <oerjan> (and of course if you want to be really precise, you should not confuse the notation for functions and the strings representing them)
05:02:37 <kmc> yeah
05:02:58 <kmc> that reminds me of C#, where lambda is also a quote
05:03:53 <Sgeo> "lambda is also a quote"?
05:05:40 <oerjan> istr old lisps also confused lambdas and their list representation; of course lisp is designed to make that almost harmless
05:06:01 <kmc> Sgeo, if you have a function value that came from a lambda, you can also inspect the syntax tree of its definition
05:06:11 <kmc> it should be noted that I haven't used C# and just read about this once
05:06:21 <oerjan> (the "almost" is because afaiu it essentially forces dynamical scoping)
05:07:01 <kmc> similarly if f is a function in CPython, you can use f.func_code to get its bytecode
05:07:02 <oerjan> or well, non-lexical
05:07:53 <kmc> i think there is other harm
05:08:02 <kmc> you lose the ability to treat functions as black boxes
05:08:18 <kmc> you lose abstraction
05:08:40 <kmc> if i pass a function to some library, that library can care about the implementation details of my function
05:09:06 <Sgeo> Picolisp has very not-black-box functions
05:09:10 <zzo38> If you have a newspaper, tell me what the "horoscope" section says (including the dates) and tell me your timezone. I wish to try an experiment with them
05:09:25 <kmc> "news... paper"?
05:09:40 <zzo38> Yes, a newspaper. Do you have one?
05:33:48 <zzo38> If the newspaper was published in a different timezone as your own, I would like their timezone as well as yours.
05:54:31 -!- NicePants has joined.
06:40:05 <zzo38> Are there any quad precision floating point in Haskell?
06:43:44 <hagb4rd> http://hackage.haskell.org/packages/archive/Decimal/0.1.0/doc/html/Data-Decimal.html
06:43:45 <hagb4rd> öfde
06:43:59 <hagb4rd> precise enough?
06:45:44 <kmc> that's... not floating point
06:45:52 <hagb4rd> nope
06:46:09 <kmc> there's a binding to mpfr but it has hella caveats
06:46:12 <kmc> http://hackage.haskell.org/package/hmpfr
06:46:16 <zzo38> No; I need logarithms and trigonometry
06:48:42 <zzo38> O, OK, yes hmpfr includes trigonometry. But it says there is errors on it
07:00:44 <zzo38> Do you know if there is any ephemeris softwares for Haskell, or how to make such a things?
07:00:47 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
07:04:09 <shachaf> kmc: Sorry. :-(
07:04:18 <kmc> what did you do?
07:04:30 <kmc> or, is that the other kind of "sorry"
07:04:48 <zzo38> Not speaking English to the President.
07:05:02 <shachaf> Oh, I thought you left because of my kmc-blood-pressure joke.
07:05:20 <shachaf> Which I'll admit wasn't a particularly good one.
07:05:39 <kmc> no, i left because people were saying dumb things and I did not feel like correcting them
07:05:47 <kmc> which was also probably why you made the joke
07:05:49 <hagb4rd> i just wonder why there is such a discrepance in the terminology of quad precision between german and english sources. in german quad precision describes any format using 4 'units' of memory, while the english ones determines it to floats..strange
07:07:29 <shachaf> Ah. Fair enough.
07:07:31 <zzo38> bagb4rd: I did specify floating point, at least.
07:07:39 <hagb4rd> yes
07:14:29 -!- pikhq_ has quit (Ping timeout: 240 seconds).
07:14:31 -!- pikhq has joined.
07:24:06 <zzo38> Is there a way in Haskell to make a Double value with is large or infinite?
07:26:04 <kmc> > 1 / 0
07:26:04 <lambdabot> Infinity
07:28:50 <kallisti> wow SPJ's article on the STG is insane.
07:28:58 <kallisti> I'm afraid I only understand bits and pieces of it.
07:29:18 <kmc> which one?
07:29:31 <kallisti> the one that someone linked me.
07:29:48 <kallisti> Implementing lazy functional languages on stock hardware: the spineless tagless g-machine
07:29:53 <kmc> that's a cool paper
07:29:58 <kallisti> yes
07:30:11 <kmc> if you read that one and also "Typing Haskell in Haskell" then you will have most of the specific knowledge to write a decent Haskell compiler
07:30:22 <kallisti> I understand the general points, some of the implementation bits so far, and the actual STG language itself.
07:30:40 <kallisti> I don't fully understand the in-memory representation
07:30:51 <kmc> "How to make a fast curry" is another good paper that picks up from where the STG one ends
07:31:06 <kallisti> just that it's always a closure with free variables.
07:31:53 <kallisti> this is mainly because, as of late, my short term memory has been getting even worse than previously. :P
07:32:13 <kmc> the in-memory representation of closures (including data and thunks) is in "Figure 4: The layout of a closure" on page 46 in my copy
07:32:45 <kallisti> oh I haven't gotten there
07:32:48 <kallisti> I am all the way on page 29
07:33:04 <kmc> there's a pointer to an "info table", followed by whatever data fields (for constructors) or free variables (for thunks and function closures)
07:33:24 <kallisti> right
07:33:27 <kallisti> yes that's what I meant
07:33:29 <kmc> the info table is static data; roughly speaking there's one for each lambda in the source, and one for each ADT constructor
07:33:53 <kallisti> yes I was reading about how closures can be reused and such.
07:34:12 <kmc> and i guess one for each let binding, to implement that thunk
07:34:18 <kallisti> yes
07:34:30 <kallisti> it treats all the lets as "lambda forms" even if they have zero arguments
07:34:55 <kallisti> (which kind of brings some truth to the "zero argument function" claim... I guess at an operational level)
07:35:00 <kmc> heh
07:35:03 <kallisti> of course mathematically a zero-argument function is meaningless.
07:35:42 <kallisti> looool I love taking the easy way out on easy math homework.
07:36:16 <kmc> right, it's also meaningless at the level of haskell semantics
07:36:21 <kallisti> kmc: yes
07:36:31 <kmc> it might be a reasonable way to understand the implementation details of certain haskell compilers
07:36:33 <kallisti> not that I actually know anything about haskell semantics
07:36:41 <kallisti> I just... know that it wouldn't make any sense. intuitively.
07:37:00 <kallisti> we're starting the course with some set theory. One of the questions asks for a subset of the powerset of the integers. I answer with the empty set. :P
07:37:11 <kmc> likewise GHC implements multi-argument functions as multi-argument functions, even where the semantics say they are curried single-argument functions
07:37:24 <kmc> haha
07:37:26 <oerjan> of course those "zero argument functions", being thunks, will be overwritten after evaluation
07:37:32 <kmc> best subset ever
07:37:49 <kallisti> the subsetiest of all
07:37:54 <oerjan> hm i guess that's true of non-zero ones too
07:38:16 <kmc> a thunk wouldn't ever have arguments
07:38:22 <kallisti> now it wants an element from the powerset of integers
07:38:25 <kallisti> I think I'm gonna have to go with...
07:38:26 <kallisti> empty set.
07:38:28 <kmc> haha
07:39:00 <kallisti> AAAAAAUGH NOW THERE'S A CARDINALITY RESTRAINT?
07:39:02 <kallisti> WHAT IS THIS SHIT.
07:39:07 <kallisti> I HAVE TO ENUMERATE THINGS?
07:39:08 <kallisti> FUCK THIS
07:39:08 <oerjan> kmc: but if it closes over variables, those will be effectively the arguments to whatever function implements the thunk
07:39:09 * kallisti quites.
07:39:30 <kmc> oerjan, i guess you can look at it that way
07:39:43 <kmc> STG makes a distinction between free variables and arguments
07:39:56 <kallisti> ugh so many squiggly brackets on paper, and I'm so bad at writing them.
07:40:01 <kmc> the code finds them in different places, iirc
07:40:01 <kallisti> kmc: indeed
07:40:31 <kallisti> I found using the closures of data values to implement optimizations an interesting idea.
07:40:36 <kallisti> I'm guessing there's more detail later.
07:40:42 <kmc> what idea is that?
07:40:44 <kallisti> the paper covers quite a bit of the top-level in the first few pages.
07:41:18 <kallisti> kmc: the paper mentions that you could do things like copy values to registers in a value's closure.
07:41:21 <zzo38> In my program, the types used for floating point are given using type synonyms, so they can be changed later if necessary.
07:41:28 <kmc> mm
07:41:36 <kmc> an ADT value?
07:41:46 <kallisti> it didn't really specify very much.
07:42:00 <kmc> in current GHC you don't enter values in the fast case
07:42:15 <kallisti> oh I see.
07:42:34 <kallisti> I guess it could have just been an idea and not something that GHC actually attempts.
07:42:43 <kmc> ghc might also do that
07:43:12 <kallisti> in general, you could add any kind of code that you want to be associated with forcing that value, I believe.
07:43:23 <kmc> then you're not entering a value though
07:43:25 <kmc> you're entering a thunk
07:43:27 <kallisti> or well, not even forcing it right? just evaluating it.
07:43:41 <kallisti> er... entering it
07:43:41 <kallisti> yes.
07:43:44 <kmc> what's the distinction between "force" and "evaluate"
07:43:50 <kallisti> I meant enter
07:43:53 <kallisti> that's the terminology used in the paper.
07:44:15 <kallisti> I used "evaluate" incorrectly. :P
07:45:05 <kmc> i guess if you don't load the fields into registers, then you just return to the caller and they get the values at an offset from the original closure
07:45:12 <kmc> except they might have to follow an indirection too
07:45:52 <kmc> anyway current GHC uses the least significant bits to tag a pointer to a closure which is known to be in whnf
07:45:58 <kmc> so in the best case you don't have to enter it at all
07:45:58 <kallisti> yes it mentions that function arguments are accessed as offsets from the "environment register" which is the pointer to the closure code I believe.
07:46:05 <kmc> *nod*
07:46:08 <kallisti> I assume the same is true of ADTs?
07:46:18 <kmc> guess so
07:46:28 <kallisti> it wouldn't make sense for them to be free variables I think.
07:46:34 <kallisti> the fields, I mean.
07:46:45 <kallisti> I GUESS
07:46:45 <kmc> wait, no
07:46:46 <kallisti> I SHOULD LIKE
07:46:49 <kallisti> READ THIS PAPER
07:46:56 <kallisti> since it starts explaining the ADT part, exactly where I left off.
07:47:00 <kmc> i'm pretty sure the fields of an ADT value are like free variables
07:47:01 <kallisti> well actually it's explaining unboxed stuff.
07:47:08 <kmc> they are closed over when the ADT value is construcetd
07:47:16 <kmc> haha very well
07:47:37 <kallisti> but actually I'm going to write more squiggly brackets for my math class.
07:47:40 <kallisti> they demand more from me.
07:48:02 <kmc> haha
07:48:06 <kmc> these ones? {}
07:48:25 <kallisti> yes those are the ones
07:48:28 <kallisti> except mine never look like that.
07:48:39 <kmc> moustaches
07:48:39 <kallisti> I just make squiggly lines
07:48:54 <kmc> i had to learn how to write '&' for AP CS back in the day
07:48:55 <kmc> that was hard
07:49:09 <kallisti> oh yes
07:49:12 <kallisti> I never get that right.
07:49:22 <kallisti> writing Java with a pencil is so..... weird.
07:49:39 <kallisti> it's even more tedious than usual.
07:49:50 <kmc> hehe
07:49:52 * pikhq mutters
07:50:00 <pikhq> I'm having to take an intro to CS course.
07:50:10 <pikhq> I had somehow gotten exempted from it at a previous university.
07:50:13 <pikhq> Not so here.
07:50:17 <zzo38> I sometimes write computer codes by hand too; I often write Haskell codes by hand.
07:50:17 <kmc> :/
07:50:23 <kallisti> kmc: so the update flag has nothing to do with strictness right?
07:50:25 <pikhq> Guess I'm learning Java.
07:50:32 <kallisti> kmc: or do I misunderstand?
07:50:42 <kmc> kallisti, iirc only thunks are updatable
07:50:45 <kallisti> kmc: it seems like an optimization of lazy evaluation where sharing isn't required.
07:50:47 <kmc> so it has to do with non-strictness ;P
07:50:52 <kmc> hmm?
07:50:56 <kmc> you mean that sharing is not always required?
07:51:03 <kallisti> kmc: yes I haven't gotten to how it implements strict values yet.
07:51:13 <kmc> i'm not sure what you mean by "strict value"
07:51:25 <kallisti> not thunks.
07:51:27 <kallisti> >_>
07:51:35 <kmc> meaning algebraic data and functions in whnf?
07:51:42 <kmc> anyway you'd set the update flag to "no" if you can prove a given thunk is only entered once
07:51:48 <kallisti> yes
07:51:52 <kmc> that saves you the trouble of updating it
07:51:52 <kallisti> and you do this because
07:51:57 <kallisti> that value isn't being shared.
07:51:58 <kallisti> right?
07:52:03 <kmc> right
07:52:13 <kallisti> cool
07:52:20 * kallisti is understanding some things.
07:52:29 <kmc> well the /value/ might subsequently get shared
07:52:37 <kmc> value = a thing which has been evaluated
07:52:47 <kallisti> that particular lambda is not shared though
07:52:49 <kmc> but you use it if the thunk /before evaluation/ can't get to multiple places
07:52:55 <kallisti> ah
07:53:04 <kallisti> I see
07:53:52 <kallisti> the update flag is "part" of the sharing
07:53:56 <kallisti> er
07:53:57 <kallisti> I mean
07:54:02 <kallisti> updating the thunk is part of the sharing implementation
07:54:06 <kmc> yes
07:54:07 <kallisti> and turning it off is an optimization
07:54:37 <kallisti> but the value itself can still be shared by virtue of being a value addressed in memory. :P
07:54:43 <kallisti> >_>?
07:55:51 -!- augur has quit (Read error: Connection reset by peer).
07:56:06 <kallisti> hm
07:56:10 -!- augur has joined.
07:56:12 <kallisti> that's really rather vague though
07:56:27 <kmc> if you're at a point where you know something is a value (not a thunk), then you are free to duplicate pointers to it, regardless of what the update flag says
07:56:35 <kallisti> yes
07:56:50 <kallisti> is the update flag still there, even?
07:57:02 <kmc> in GHC i think it's implicit in the closure type
07:57:18 <kallisti> oh right everything has the same representation
07:57:22 <kmc> http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/HeapObjects
07:57:24 <kallisti> or, so far... that's what I've learned.
07:58:45 <kmc> note that GHC these days is eval/apply rather than push/enter
07:58:49 <kallisti> oh I see.
07:58:59 <kmc> some of these closure types don't make sense in the context of the original STG paper you're reading
07:59:15 <kallisti> yes there's some new things.
07:59:29 <kmc> see "How to make a fast curry"
08:00:03 <kallisti> yes the paper was discussing that the advantages and disadvantages of eval/apply vs. push/enter, so I'm guessing eval/apply wins?
08:00:09 <kallisti> -that
08:00:32 <kmc> pretty much
08:02:07 <kallisti> so does the "tagless" qualifier also mean that sum types do not have tags on them? or is this simply referring to not having tags on the heap objects.
08:04:06 <kallisti> I'm not sure I can see how you would select on multiple constructors without some kind of tagged union representation.
08:06:12 <kallisti> yeah I guess it obviously does still retain that kind of "tag"
08:06:25 <kallisti> (apologies if I'm not making any sense I'm pretty tired I should probably sleep)
08:07:05 <oerjan> i think one would need to look at what the earlier G-machines were like to understand what that means. unless the paper does a comparison, i don't recall.
08:08:07 <kallisti> oh it explains it
08:08:20 <kallisti> I was asking if it has additional meaning beyond that.... but I guess not. silly question.
08:09:16 <oerjan> a have this vague idea that the spine and tag may have been connected to when these things were thought of as doing explicit reduction on graphs...
08:10:02 <kallisti> it's tagless in that it doesn't branch of a tag to determine what kind of memory representation is being used.
08:10:14 <oerjan> aha
08:10:35 <kallisti> at least in this paper it has a uniform layout. you access values by "entering" them (jumping to their closure code)
08:11:19 <kallisti> but apparently GHC does eval-apply now, not sure how that works in relation to entering date/code.
08:11:23 <oerjan> i think some things in ghc were later changed to _not_ use indirect jumps because it ruins branch prediction
08:11:52 <oerjan> or something like that
08:12:10 <kallisti> branch prediction sounds kind of magical.
08:12:53 <oerjan> well afaik it's something the CPU does
08:13:53 <kmc> right, i think the "tags" refers to using some bits of a pointer to tell you what's pointed to
08:13:55 <oerjan> guessing which way a branch will go so it can run the pipeline that way - but if it guesses wrong, it has to stop the pipeline
08:14:17 <kmc> which is something GHC does do now
08:14:22 <oerjan> (and i vaguely recall the guess is mainly "same as last time")
08:14:23 <kmc> but something they avoid in the original STG paper
08:14:47 <kmc> oerjan, another common heuristic is that forwards branches are not taken, and backwards branches are taken
08:14:52 <oerjan> aha
08:15:08 <kmc> the latter often represent loops, which run many times before exiting
08:15:21 <oerjan> makes sense
08:15:24 <kmc> it's said that common x86 chips correctly predict 99%+ of branches
08:15:29 <kmc> i don't have a reference on that number though
08:15:53 <oerjan> presumably common compilers do their best to assure they do that :P
08:16:06 <kmc> yeah
08:16:22 <kmc> also you can embed hints in the code
08:16:28 <kmc> and GCC supports this at source level
08:16:40 <kmc> Linux kernel code is full of stuff like if(unlikely(monkeys_have_escaped)) { ... }
08:17:40 <kmc> kallisti, for an example of a system using tag bits, see http://repetae.net/computer/jhc/manual.html#the-run-time-system
08:17:46 <oerjan> <kmc> right, i think the "tags" refers to using some bits of a pointer to tell you what's pointed to <-- um that's about ghc's modern tags, i wasn't sure the "tags" that indirectly named the STG were the same kind
08:17:55 <kmc> yeah i am not sure either
08:17:57 <kmc> but i think so
08:18:11 <kmc> the STG paper goes into some detail about how they know whether a given word is a pointer to a garbage collected object
08:18:18 <kallisti> kmc: so at this point GHC's STG is a bit of a misnomer.
08:18:29 -!- zzo38 has quit (Remote host closed the connection).
08:18:34 <oerjan> it would be ironic if ghc's STG has ended up being neither spineless nor tagless :D
08:18:53 <kmc> closures and update frames have a layout known from the info table, and the stack is split between a pointer stack and a primitive stack
08:18:56 <kallisti> fortunately the acronym is the same.
08:19:00 <kallisti> spined tagged g-machine
08:19:04 <kmc> this is all to avoid tagging gc pointers vs. primitives
08:19:06 <oerjan> yay
08:19:06 <pikhq> #define unlikely(x) __builtin_expect(x, 0)
08:19:07 <pikhq> BTW
08:19:11 -!- FireFly has quit (Changing host).
08:19:19 <oerjan> *...* i
08:19:21 <kmc> right so there are at least two things you can use pointer tagging for
08:19:32 <kmc> (a) to distinguish pointers the gc must follow from other values
08:19:41 <kmc> (b) to mark which things are already in whnf
08:19:47 <kmc> GHC does (b) now but still does not do (a)
08:20:36 <kmc> aiui, one of the innovations of the STG paper is the idea that even Int should be an algebraic type, with an unboxed value inside
08:20:42 <kmc> the latter being not a first-class Haskell value
08:21:14 <fizzie> BTW^2, __builtin_expect docs have a nice dig against programmers in general: "In general, you should prefer to use actual profile feedback for this (-fprofile-arcs), as programmers are notoriously bad at predicting how their programs actually perform."
08:21:14 <lambdabot> fizzie: You have 1 new message. '/msg lambdabot @messages' to read it.
08:21:15 <kmc> you push the burden of distinguishing heap pointers into the closure layout and calling convention
08:21:23 <kmc> haha
08:21:26 <kmc> it's true
08:22:17 <kmc> kallisti, this is why the Haskell Report only requires that Int support the range [-2^29 .. 2^29-1]
08:22:25 <kmc> to allow for 2 tag bits even on 32-bit machines
08:22:39 <kmc> in GHC this is not an issue because you can always tell Int from Int# statically
08:23:49 <pikhq> fizzie: So, "unless you're a Linux or x264 dev, don't". :P
08:24:37 <fizzie> GCC also has __attribute__ ((hot)) and s/hot/cold/ function attributes, which are completely ignored if you -fprofile-use like you should.
08:24:38 <oerjan> i don't see how they are exempted.
08:25:08 <pikhq> oerjan: They spend a lot of time measuring performance.
08:25:11 <pikhq> Especially x264.
08:27:13 <kmc> linux also moves supposedly cold functions into separate linker sections
08:28:15 <fizzie> Industry tip: a function flagged as 'cold' which actually is called often, and therefore should be warmer, is called 'hypothermic'. (Not true.)
08:28:31 <kmc> true facts
08:32:30 <monqy> is it true that it's true or is it true that it's untrue
08:32:30 <monqy> help
08:33:00 -!- augur has quit (Read error: Connection reset by peer).
08:33:17 <kallisti> monqy: is it true that help
08:33:27 -!- augur has joined.
08:33:36 <monqy> always and forever
08:34:13 <kmc>
08:34:40 <kallisti> > sequence . concatMap (\x -> if x `elem` "aeiou" then "aeiou" else [x]) $ "is it true that help"
08:34:41 <lambdabot> Couldn't match expected type `m a'
08:34:42 <lambdabot> against inferred type `GHC.Types...
08:35:12 <kallisti> > sequence . map (\x -> if x `elem` "aeiou" then "aeiou" else [x]) $ "is it true that help"
08:35:14 <lambdabot> ["as at traa that halp","as at traa that help","as at traa that hilp","as a...
08:35:33 <kallisti> > sequence . map (\x -> if x `elem` "aeiou" then "aeiou" else [x]) $ "help"
08:35:34 <lambdabot> ["halp","help","hilp","holp","hulp"]
08:35:46 <kmc> > mapM (\x -> if x `elem` "aeiou" then "aeiou" else [x]) $ "help"
08:35:47 <lambdabot> ["halp","help","hilp","holp","hulp"]
08:35:52 <kallisti> monqy: hulp
08:35:54 <kallisti> kmc: oh right
08:36:01 <monqy> you forgot hlep
08:36:01 <kallisti> that's the thing that M means
08:36:08 <monqy> , hepl
08:36:15 <kallisti> monqy: no wrong
08:36:16 <monqy> , ehlp
08:36:18 <kallisti> not forgotten
08:36:22 <kmc> (++"M") = (sequence .)
08:36:34 <kmc> i remember when somebody asked for a list function on haskell-cafe
08:36:38 <kmc> and they golfed it for a while
08:36:44 <kmc> and then someone realized it was just 'sequence'
08:36:47 <kmc> hole in one
08:36:53 <kallisti> sequence is the best always.
08:38:18 <oerjan> :t flip
08:38:18 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b
08:38:19 <shachaf> (++"M") = ("(sequence.)"++) only in the boring case.
08:38:31 <kallisti> sequence flips your ordered sequence of possibilities turnways.
08:38:32 <shachaf> Usually M functions have more information than the non-M functions.
08:38:39 <oerjan> sometimes lambdabot's flip is the same as sequence
08:39:13 <shachaf> > flip [succ,pred] 1
08:39:15 <lambdabot> [2,0]
08:39:16 <shachaf> > sequence [succ,pred] 1
08:39:17 <lambdabot> [2,0]
08:40:11 <oerjan> and that case is frequently useful in golfing
08:40:18 <monqy> > let (++"M") = (sequence.) in map (\ x -> if x `elem` "aeiou" then "aeiou" else [x]) ++ "M" $ "help"
08:40:19 <lambdabot> <no location info>: Parse error in pattern
08:40:27 <monqy> cries
08:40:52 <oerjan> kallisti: hint, sequence . map f = mapM f
08:41:16 <kmc> "Say, do you fellows enjoy the particular game of golf? I've got three lids out in the Hudson and enough Zig-Zag to wipe God's ass and the devil too."
08:41:31 <oerjan> oh wait
08:41:37 <shachaf> @ty sequence . filter ?f
08:41:38 <lambdabot> forall (m :: * -> *) a. (Monad m, ?f::m a -> Bool) => [m a] -> m [a]
08:41:39 * oerjan is so late
08:41:58 <kmc> maybe #esoteric is secretly the real #haskell-in-depth
08:41:59 <kallisti> oerjan: I... yes you're very late
08:42:03 <kallisti> oerjan: you're several months late.
08:42:15 <shachaf> Half the time #esoteric is #haskell-in-shallow
08:42:27 <kmc> that too
08:42:38 <monqy> #esoteric is really the secret #haskell-in-depth
08:42:38 <shachaf> And of course, there's @
08:42:45 <shachaf> But only when elliott is around.
08:42:52 <kmc> @-in-width
08:42:53 <lambdabot> Unknown command, try @list
08:42:55 <kallisti> no it's #haskell-not-lame-totally-awesome
08:43:01 <kmc> isn't there some way to have an IRC chan that starts with @
08:43:15 <monqy> be on a server that supports it
08:43:19 <shachaf> Yes, for values of "@" equal to "#@"
08:43:22 <kallisti> or #haskell-in-breadth
08:43:33 <monqy> I think I remember what + channels do
08:43:37 <monqy> but I forget what & channels do
08:43:45 <shachaf> #haskell-in-bread
08:43:46 <monqy> or did I get those confused
08:43:56 <shachaf> Mmm. Bread.
08:44:01 * shachaf should eat more regularly.
08:44:04 <monqy> breaded #haskell
08:44:37 <shachaf> https://plus.google.com/103943309878727777440/posts/DCdBqZX3bvQ
08:46:19 <kallisti> no I'd say #esoteric is more like #sometimes-haskell-and-without-human-tutorials
08:47:17 <kmc> cool now i know how to use google as a qr code generator
08:47:18 <monqy> what does the tutorialing then
08:47:19 <kmc> https://www.google.com/chart?cht=qr&chs=276x276&chl=http://example.com&chld=L%7C0
08:48:10 <shachaf> "While we have concluded this particular experiment, we constantly experiment with new and more secure authentication mechanisms."
08:48:14 <shachaf> It was working when I tried it before.
08:48:50 <kallisti> monqy: `?
08:48:58 <monqy> `? monad
08:49:03 <Patashu> Hahahahaha have you guys seen Colbert's Super PAC's videos http://www.colbertsuperpac.com/episodeiv-anewhope/
08:49:09 <HackEgo> Monads are just monoids in the category of endofunctors.
08:49:09 <Patashu> They're such hilarious parodies of the current primary/political state
08:49:09 <monqy> `? what is a monads
08:49:13 <monqy> `? help
08:49:14 <HackEgo> what is a monads? ¯\(°_o)/¯
08:49:25 <kallisti> Patashu: are you suddenly a spam bot?
08:49:27 <kmc> `? hjälp
08:49:31 <HackEgo> hjälp? ¯\(°_o)/¯
08:49:32 <shachaf> \m/ \m/
08:49:32 <myndzi> `\o/´
08:49:33 <lambdabot> myndzi: You have 1 new message. '/msg lambdabot @messages' to read it.
08:49:33 <myndzi> |
08:49:33 <myndzi> (_|¯'¯|_)
08:49:40 <shachaf> \m/ \m/ \m/ \m/
08:49:43 <monqy> `? \m/ \m/
08:49:44 <myndzi> `\o/´
08:49:44 <myndzi> |
08:49:44 <myndzi> /´\
08:49:44 <myndzi> (_| |_)
08:49:45 <kmc> 8===D
08:49:47 <HackEgo> ​\m/ \m/? ¯\(°_o)/¯
08:50:13 <HackEgo> help? ¯\(°_o)/¯
08:50:20 <Patashu> yeah I'm a spam bot WHAT UP
08:50:24 <Patashu> look at the videos I post :(
08:50:50 <shachaf> "episode IV" sounds like an unpleasant drug-related thing.
08:51:25 <kmc> achewood claims Hi-Five is slang for HIV
08:59:08 <myndzi> i have a message what
08:59:23 <myndzi> o nice
08:59:25 <oerjan> shachaf: erm it's the official title of a star wars movie
08:59:48 <oerjan> (namely the original one)
09:00:48 <kmc> i'm guessing shachaf knows that
09:00:59 <oerjan> POSBBILE
09:01:12 <kmc> also ahem it was originally released as just _Star Wars_
09:01:22 <oerjan> ASOL POBSSILE
09:02:16 <pikhq> Yeah, calling it Episode IV was the first of many edits.
09:02:47 <oerjan> the _first_?
09:05:49 -!- NicePants has quit (Ping timeout: 240 seconds).
09:06:16 <oerjan> "The opening crawl of the sequels disclosed that they were numbered as "Episode V" and "Episode VI" respectively, though the films were generally advertised solely under their subtitles."
09:06:20 <oerjan> huh.
09:06:36 -!- Zuu has quit (Ping timeout: 252 seconds).
09:06:42 <pikhq> Let me put it this way: the only way to get something even *approximating* the original theatrical release is a Laserdisc rip.
09:07:26 <oerjan> pikhq: yeah i just wasn't aware the prequels were included in the numbering before they were released
09:07:27 <pikhq> (approximating because it uses the somewhat strange stereo mix, not the original mono mix. Just like everything else.)
09:07:45 <pikhq> Ah. Yeah, the prequels were decades in the making.
09:07:53 <pikhq> Thus the disappointment from everyone.
09:08:56 <kmc> also means people who saw the original trilogy as children were seeing the prequels as jaded adults
09:09:29 <pikhq> I saw the prequels as a child, and even then they were kinda lame.
09:09:48 <pikhq> Much of the annoyance with it came only later, but even then "... Eh."
09:09:56 <kmc> i found them all to be entertaining enough
09:10:04 <kmc> but kinda pointless filler
09:10:12 <kmc> same for the matrix sequels
09:10:34 <pikhq> Yeah, that's just it. Essentially all they were was a couple of plot points, spread out between 3 films.
09:10:49 <kmc> like if you wanna have fun watching an action movie, you can do a lot worse than _The Matrix Reloaded_
09:11:02 <kmc> but it's not special the way the first one was
09:11:10 <shachaf> Why is the first one special?
09:11:30 <pikhq> shachaf: Much less detail gone into the psuedophilosophicalness.
09:11:36 <shachaf> Really?
09:11:49 <pikhq> It sets up an atmosphere very well.
09:11:52 <shachaf> "pseudophilosophy" is the word I was about to use to describe it.
09:11:53 <kmc> the plot was both more interesting and more sensical
09:12:13 <pikhq> shachaf: The whole series does pseudophilosphy.
09:12:15 <kmc> it's more fun to watch the scrawny hacker guy become a superhero
09:12:17 <pikhq> Just to varying extents.
09:12:23 <kmc> less fun to watch him flying around as a superhero
09:12:26 <shachaf> It seemed like it was primarily about violence/action/whatever, and not very interesting from most other perspectives I could think of.
09:12:49 <pikhq> Yeah, it was using that as a neat atmosphere for the fun violence/action.
09:13:15 <kmc> the philosophy in the first movie was pretty shallow but they didn't try to overextend it
09:13:19 <kmc> not nearly like the others
09:13:28 -!- Zuu has joined.
09:14:41 <pikhq> I'd say it's a little bit like Valve games. They're not usually huge on plot. (seriously, you can cover the plot of all of their games in 10 minutes, tops)
09:14:50 <kmc> i generally thought the first half of the movie was more interesting than the second
09:14:56 <pikhq> But they've got setting polished to a mirror shine.
09:15:49 * shachaf wonders what a good movie is.
09:16:05 <kmc> you want some recommendations for good movies?
09:16:29 <fizzie> "The only good movie is a dead movie." (Old saying of the jungle.)
09:16:29 <shachaf> I was wondering specifically among movies I've seen, but sure. :-)
09:16:45 <shachaf> I saw _Casablanca_ a few days ago. That was pretty well-done.
09:16:49 <kmc> i don't see enough movies these days
09:16:52 <pikhq> Shame the medium's considered so utterly important.
09:16:59 <pikhq> Honestly, the form is incredibly limited.
09:17:13 -!- myndzi\ has joined.
09:17:20 <kmc> i definitely have more opinions on which TV shows are good than which films
09:17:24 <pikhq> ~2 hours max? That's more analogous to a freaking short story or a novella.
09:17:38 <kmc> yeah
09:17:51 <shachaf> I have _Brazil_ on my list of movies to watch.
09:18:29 <kmc> _The Wire_ tells a novel-size story in about 13 hours
09:18:38 <kmc> even there, you could probably put multiple seasons into one novel
09:19:41 -!- myndzi has quit (Ping timeout: 240 seconds).
09:19:51 <kmc> i can't really imagine watching that show one episode per week
09:19:57 <kmc> but i don't really do that for any shows
09:36:47 -!- zzo38 has joined.
09:36:54 <zzo38> No!
09:37:01 <zzo38> Red!
09:37:21 <shachaf> Black!
09:37:51 <zzo38> Hay! That's *my* name!
09:38:18 -!- oerjan has set topic: No topic Wednesday! | Wait, it's not Friday?? Damn it! | Now in colors! | So, what is blegnian motion, anyway? | http://codu.org/logs/_esoteric/.
09:38:44 <shachaf> zzo38: What's your last name?
09:38:57 <zzo38> Black
09:39:06 <shachaf> Oh. I thought it was your first name.
09:39:12 <shachaf> What's your first name?
09:40:03 <zzo38> Will you figure it out if you look at my Haskell packages? They have my name on it because I uploaded them, and it always has the name of whoever uploaded them
09:41:16 <zzo38> But I don't really like the terms "first name" and "last name", because they are racist; and I don't like "Christian name" either because that is even more racist.
09:42:14 -!- GreaseMonkey has quit (Quit: The Other Game).
09:42:25 <shachaf> kmc: I think zzo38 just outdid you.
09:42:28 <oerjan> you shouldn't care about racism in name order unless you're a hung arian
09:42:52 <shachaf> How about "personal name" and "family name"?
09:43:15 <zzo38> shachaf: Yes I do prefer those.
09:43:35 <shachaf> I can't find any packages of yours on Hackage.
09:44:14 <zzo38> oerjan: I don't really care much; I still prefer freedom of speech. But I still generally prefer to be not racist
09:44:22 <zzo38> shachaf: My name is AaronBlack. Now can you find it?
09:44:42 <shachaf> Ah, yes.
09:45:12 -!- oerjan has quit (Quit: WHEEEEEEEEEEEEEEEEE).
09:46:43 <pikhq> shachaf: Not very culturally universal, sadly.
09:46:54 <pikhq> Not all cultures give surnames.
09:51:12 <shachaf> pikhq: Yes, I know.
09:53:05 -!- monqy has quit (Quit: hello).
09:55:09 <shachaf> Also, "family name" is ambiguous; it might refer to a "generation name".
10:12:29 -!- augur has quit (Ping timeout: 240 seconds).
10:14:29 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
10:44:07 <itidus21> one might also say, group name vs individual name >:-)
10:45:14 -!- pikhq has quit (Ping timeout: 240 seconds).
10:45:19 -!- pikhq has joined.
11:29:02 -!- myndzi\ has quit (Ping timeout: 255 seconds).
11:33:53 -!- ais523 has joined.
11:36:55 -!- aloril has quit (Ping timeout: 248 seconds).
11:40:26 -!- aloril has joined.
11:43:22 -!- _Slereah has changed nick to Slereah.
11:45:26 -!- Frooxius_ has joined.
11:48:59 -!- Frooxius has quit (Ping timeout: 252 seconds).
11:49:08 -!- Frooxius_ has changed nick to Frooxius.
11:55:27 -!- myndzi has joined.
12:18:07 -!- Vorpal has joined.
12:20:57 -!- zzo38 has quit (Remote host closed the connection).
12:49:28 -!- Phantom_Hoover has joined.
12:54:27 <Phantom_Hoover> `? monoid
12:54:33 <HackEgo> Monoids are just categories with a single object.
12:54:58 <Phantom_Hoover> `? category
12:55:02 <HackEgo> Categories are just categories.
12:55:40 <fizzie> `? monad
12:55:44 <HackEgo> Monads are just monoids in the category of endofunctors.
12:55:45 <fizzie> `? endofunctor
12:55:49 <HackEgo> endofunctor? ¯\(°_o)/¯
12:55:51 <fizzie> ^ omission.
12:56:47 <Phantom_Hoover> Endofunctors are just arrows in the monoidal category?
12:56:55 <fizzie> `? arrow
12:56:58 <HackEgo> arrow? ¯\(°_o)/¯
12:57:34 <Phantom_Hoover> Arrows are just members of homsets.
12:57:48 <fizzie> Arrows are just bad hombres.
13:01:07 -!- Phantom_Hoover has left ("Leaving").
13:01:13 -!- Phantom_Hoover has joined.
13:01:22 <Phantom_Hoover> Wait why did nobody tell me elliott went nuts.
13:04:21 <fizzie> Also paimaväär sounds vaguely Estonian to me.
13:06:53 <fizzie> They tend to do that thing, where Finnish would have a wovel at the end. en:leg = fi:sääri = et:säär, en:ash (tree) = fi:saarni = et:saar.
13:09:09 <fizzie> Päivämäärä, though, is a Finnish word. (Date. As in, "time and date".)
13:09:28 <fizzie> `words --finnish 20
13:09:33 <HackEgo> mallenne elpoistäsi saansa urasvat autoviulosaansa lohdistelevaltani ilmästä luonipahoisti vaististamme ruoinne tartisuulet uusistasiatyynimista enneettävinansa epäislaista astaan taisemmalta uuvutta kouluminä ohjakinkö jahtavanisimeroksen
13:25:39 <ais523> Phantom_Hoover: weren't you there at the time?
13:25:47 <Phantom_Hoover> ais523, nope.
13:25:57 <ais523> I'm actually kind-of worried he hasn't returned since
13:26:57 <Phantom_Hoover> 1:38 on Monday morning. I definitely wasn't there.
13:28:42 <fizzie> Translated from your sillytimes, 3:38 on Monday morning; no wonder I wasn't there.
13:29:02 <Phantom_Hoover> Presumably this is why nobody mentioned it when I asked where he'd gone.
13:32:32 <fizzie> Also isn't that a Sunday?
13:33:13 <Phantom_Hoover> It... yes.
13:33:38 -!- Phantom__Hoover has joined.
13:39:20 -!- Phantom_Hoover has quit (Remote host closed the connection).
13:46:00 <hagb4rd> ah thats it fizzie..Päivämäärä
13:48:13 <hagb4rd> now tell me where is the relation to any other language spoken on this planet
13:48:24 <hagb4rd> if there is any
13:49:47 <fizzie> Estonian is a relative; "kuupäev" ('moon-day') is their corresponding word, I think.
13:49:51 <hagb4rd> hard to explain how language developes in such a different way..isnt it?
13:50:27 -!- Frooxius_ has joined.
13:51:24 <fizzie> Language people also always say Hungarian is related, but that's farther away.
13:52:44 -!- Frooxius has quit (Ping timeout: 272 seconds).
13:52:54 -!- Frooxius_ has changed nick to Frooxius.
13:54:54 <ais523> fizzie: I was in Hungary and they were talking about Hungarian a bit for the benefit of the large contingent of Brits there at the time, then they put a Finnish sentence on the board to see if any of the Hungarians there understood it
13:55:06 <ais523> and the answer was, no, but they all had "oh, right" moments when it was explained
13:55:19 <ais523> apparently Hungarian isn't really like any other language, except for Finnish
13:55:30 <ais523> vocab-wise
13:55:46 <hagb4rd> is there any historical relation between these counties?
13:56:13 <fizzie> "Linguistic roots common to both branches of the traditional Finno-Ugric language tree (Finno-Permic [i.e. Finnish, Estonian] and Ugric [i.e. Hungarian]) are extremely distant. -- According to philologist Mall Hellam there's only one mutual sentence: “the living fish swims in water.” (Finnish: Elävä kala ui veden alla), (Estonian: Elav kala ujub vee all), (Hungarian: az élő hal vízben úszik)."
13:57:21 <ais523> heh, the Hungarian only vaguely resembles the other two
13:58:06 <kmc> wikipedia has "Eleven hal úszik a víz alatt."
13:58:22 <hagb4rd> sounds like the linguists stuck there too
13:58:35 <kmc> http://en.wikipedia.org/wiki/Uralic_languages#Example_sentence
13:58:44 <fizzie> Yeah, "they" always mention the relatedness, but it's not really obvious to a "language muggle" (am I using this term right?).
13:59:19 <fizzie> kmc: Heh, the other Hungarian example was also from Wikipedia: http://en.wikipedia.org/wiki/Finno-Ugric (second paragraph).
13:59:27 <fizzie> Inconsistencies? In my Wikipedia?
13:59:50 <fizzie> I suppose it could be just an alternative way of saying it.
14:00:06 <fizzie> One that arranges the words more in the same order.
14:00:14 <fizzie> (I don't know anything about Hungarian at all.)
14:00:44 <hagb4rd> i wonder y the language did not mix up with the languages in the skandinavian neighbourhood in any way
14:01:02 <fizzie> Calling "Eleven hal úszik a víz alatt" "mutually intelligible" is going a bit far, though.
14:01:29 <hagb4rd> these people seem to prefer to be on their own in some way
14:01:42 <hagb4rd> do we have any finnish people here?
14:01:47 <hagb4rd> btw
14:01:48 <kmc> hagb4rd, what makes you think it didn't?
14:01:57 <kmc> "Over the course of many centuries, the Finnish language has borrowed many words from a wide variety of languages, most from neighboring Indo-European languages. Indeed, some estimates put the core Proto-Uralic vocabulary surviving in Finnish at only around 300 word roots."
14:02:23 <fizzie> We've got quite a few loans also from Russian.
14:02:52 <fizzie> Not sure if "borrow" is the right word, we're certainly not going to give any of them back.
14:03:07 <hagb4rd> <kmc>hagb4rd, what makes you think it didn't? <- obviously the language
14:03:30 <hagb4rd> hehe
14:04:30 <hagb4rd> so you
14:04:36 <hagb4rd> are a fin fizzieß
14:05:14 <hagb4rd> ?
14:08:52 <fizzie> Yes.
14:09:01 <fizzie> I am finished.
14:09:42 -!- ais523 has quit (Remote host closed the connection).
14:11:31 <hagb4rd> fizzie: okay.. one last question: what does this humppa mean? is just like unz unz unz unz? fun?
14:12:01 <fizzie> It's a genre of music.
14:12:11 <fizzie> And I guess also the associated dance.
14:12:19 <fizzie> But informally could be used to refer to any number of things.
14:12:51 <hagb4rd> like 'jump' ..maybe?
14:13:02 <fizzie> Well, any sort of bouncing around, maybe.
14:13:27 <hagb4rd> k.. thanks for the infos :)
14:13:53 <fizzie> Also see http://en.wikipedia.org/wiki/Humppa -- that looks to be more or less correct, except it only talks of the official meanings.
14:17:05 <hagb4rd> bounce? official meanings.. i see :P
14:17:52 <hagb4rd> do not bounce with my woman dude!
14:20:01 <Sgeo> @hoogle Chan a -> Chan a -> Chan a
14:20:02 <lambdabot> Control.Applicative (<|>) :: Alternative f => f a -> f a -> f a
14:20:02 <lambdabot> Language.Haskell.TH.Syntax qRecover :: Quasi m => m a -> m a -> m a
14:20:02 <lambdabot> Control.Monad mplus :: MonadPlus m => m a -> m a -> m a
14:53:36 -!- Phantom___Hoover has joined.
14:54:58 -!- Phantom__Hoover has quit (Ping timeout: 244 seconds).
14:58:00 -!- ais523 has joined.
15:41:30 -!- Phantom___Hoover has quit (Ping timeout: 240 seconds).
15:41:51 -!- Phantom___Hoover has joined.
15:57:11 -!- augur_ has joined.
16:05:06 -!- Mathnerd314 has joined.
16:08:34 -!- MSleep has changed nick to MDude.
16:11:50 -!- hagb4rd has quit (Ping timeout: 240 seconds).
16:22:44 -!- Ngevd has joined.
16:29:29 <Ngevd> Hello
16:32:25 <Ngevd> What is a comonad?
16:34:02 <Phantom___Hoover> The categorical dual of a monad.
16:34:13 <Phantom___Hoover> i.e. a monad with all the ->s swapped.
16:35:04 <Ngevd> (>>=) :: m a -> m b ->(a -> m b)?
16:35:22 -!- pikhq_ has joined.
16:35:44 -!- pikhq has quit (Ping timeout: 252 seconds).
16:35:45 <Phantom___Hoover> It's not that.
16:38:46 <Ngevd> Could you explain it better? I really have no idea, I'm afraid
16:40:54 <Phantom___Hoover> I'm not so hot on them myself.
16:41:02 <Ngevd> Hmm...
16:42:26 <Phantom___Hoover> Ngevd,
16:42:27 <Phantom___Hoover> http://hackage.haskell.org/package/comonad
16:44:09 -!- Gregor has changed nick to WhatsTheNickLeng.
16:44:27 -!- WhatsTheNickLeng has changed nick to Gregor.
16:44:31 <Gregor> Phantom___Hoover: Wow, you are actually at the limit.
16:44:41 <Phantom___Hoover> Yes.
16:45:14 <Ngevd> Ngevd___________
16:45:32 <Phantom___Hoover> Ngevd, extend (dual of bind) :: (w a -> b) -> w a -> b.
16:45:33 -!- Ngevd has changed nick to Ngevd___________.
16:45:39 <Gregor> I hate you all
16:45:40 <Ngevd___________> Hmm
16:45:42 <Phantom___Hoover> Erm, *w b for that last noe.
16:45:44 <Phantom___Hoover> *one
16:46:11 <Gregor> Hmmmmmmmmm, the nick 'Gr' hasn't been used in two years.
16:46:17 <Gregor> I could PROBABLY pick it up if I asked nice.
16:46:37 <Gregor> The only caveat being that I don't actually want it.
16:46:41 -!- Ngevd___________ has changed nick to __N__g__e__v__d_.
16:47:04 -!- __N__g__e__v__d_ has changed nick to Ngevdtanebngevd_.
16:51:14 -!- cheater has quit (Ping timeout: 240 seconds).
17:07:00 -!- augur_ has quit (Read error: Connection reset by peer).
17:07:18 -!- augur has joined.
17:26:20 -!- Mathnerd314 has quit (Ping timeout: 252 seconds).
17:42:50 -!- Phantom___Hoover has quit (Ping timeout: 240 seconds).
17:46:24 -!- Ngevdtanebngevd_ has changed nick to Ngevd.
17:55:57 -!- Phantom_Hoover has joined.
17:56:29 -!- Klisz has joined.
17:59:02 -!- Phantom___Hoover has joined.
18:01:13 -!- Phantom_Hoover has quit (Remote host closed the connection).
18:11:07 -!- Mathnerd314 has joined.
18:18:10 -!- Ngevd has quit (Ping timeout: 276 seconds).
18:29:16 <kallisti> C#++'s lambda syntax is strangely similar to STG's
18:29:48 <kallisti> [list of free variables](list of arguments) -> { expression }
18:30:31 -!- Ngevd has joined.
18:36:10 <Ngevd> Hello!
18:36:16 <ais523> hi
18:38:01 <Ngevd> @oeis 1, 5, 14, 30, 55
18:38:03 <lambdabot> Square pyramidal numbers: 0^2 + 1^2 + 2^2 +...+ n^2 = n*(n+1)*(2*n+1)/6.
18:38:03 <lambdabot> [0,1,5,14,30,55,91,140,204,285,385,506,650,819,1015,1240,1496,1785,2109,2470...
18:38:49 <ais523> kallisti: "C#++"?
18:38:58 <Ngevd> > map (sum . concat . tails . enumFromTo) [1..]
18:38:58 <lambdabot> Couldn't match expected type `[a]'
18:38:59 <lambdabot> against inferred type `a1 -> [a1]'
18:38:59 -!- monqy has joined.
18:39:06 <Ngevd> > map (sum . concat . tails . enumFromTo 1) [1..]
18:39:08 <lambdabot> [1,5,14,30,55,91,140,204,285,385,506,650,819,1015,1240,1496,1785,2109,2470,...
18:39:51 <Ngevd> What would be fun but doable for me to write a program for?
18:40:24 <kallisti> ais523: C++11 :P
18:40:38 <kallisti> I'm even more scatterbrained than usual when I've just woken up.
18:41:00 <Phantom___Hoover> Ngevd, of what
18:41:01 <Phantom___Hoover> *?
18:41:15 <Ngevd> ...
18:41:23 <Ngevd> I'll try rephrasing my question
18:41:32 <Ngevd> That was not a response I can parse
18:42:10 <Ngevd> Can anyone give me an idea for a program that is fun but doable for me to write?
18:43:23 <kallisti> portal chess server implemenetation
18:43:43 <Ngevd> Could you tell me the rules of portal chess?
18:43:49 <Ngevd> I assume it is a chess variatio
18:43:50 <Ngevd> n
18:43:51 <kallisti> not at the moment.
18:43:53 <kallisti> and yes.
18:43:57 <kallisti> just think of chess but awesome.
18:43:59 <kallisti> should be simple.
18:44:01 <kallisti> to figure out the rest.
18:44:02 <kallisti> :P
18:44:15 <kallisti> but seriously I do need to actually write down the rules
18:45:17 <kallisti> basically the objective is the same and the pieces are in the same positions
18:45:20 <kallisti> but they do different things
18:46:30 <kallisti> another difference is that the primary capturing pieces fire projectiles, that travel in one direction across the board.
18:47:43 <kallisti> another is that some pieces have a component of directionality. your portals for example, are the two bishops, who are facing a particular direction. During each move of a directional piece can choose to move both its direction and its position (either both or just one)
18:47:55 <kallisti> +you
18:48:28 <kallisti> oh look Wikipedia is going down in 11 hours.
18:48:48 <kallisti> I should probably mass-read everything I might want to know for that period of time.
18:49:22 <kallisti> Ngevd: but yeah enumerating all of the pieces will take some time... which I don't have at the moment
18:49:39 <kallisti> as soon as I finish my drink I'm going to be afk.
18:52:36 <kallisti> but to give you the rules for the eponymous piece: the portal has an opening that corresponds to the direction its facing. Any moving pieces or projectiles that attempt to occupy the same square as the portal from that direction will be relocated to the opening of the player's other portal, and will continue traveling as expected.
18:53:07 <kallisti> therefore, it's impossible to capture a portal from the direction it's facing.
18:53:43 <Ngevd> Do they face orthagonally or diagonally?
18:53:47 <kallisti> either.
18:53:51 <Ngevd> Okay
18:53:54 <Ngevd> And projectiles?
18:56:25 <kallisti> projectiles are made by the two rooks. One is called the D-cannon, and is the upside-down rook on the king's side, which can, as its full move, fire a projectile in any diagonal direction. The C-cannon, the normally oriented rook on the queen's side, can fire in cardinal directions.
18:57:49 <kallisti> once a projectile captures a piece it stops traveling forward.
18:57:57 <kallisti> (or once it reaches the end of the board, obviously)
18:58:41 <Ngevd> Is castling still possible?
18:58:52 <kallisti> it's not something I've considered. so no
18:58:59 <kallisti> really I haven't play tested it yet. :P
18:59:07 <kallisti> and yet I'm making the implementation.
18:59:15 <kallisti> I'll likely tweak rules as I go
19:00:05 <kallisti> one thing I have noticed
19:00:19 <kallisti> is that white can basically force black's first move
19:00:27 <kallisti> so I'm not sure how balanced it is in that regard.
19:00:34 <kallisti> but chess isn't balanced either.
19:00:42 <Ngevd> Hang on
19:00:50 <Ngevd> If a portal moves to a piece
19:01:01 <Ngevd> ...Nevermind
19:01:05 <kallisti> yes that's a thing
19:01:35 <kallisti> it will appear next to the other portal, on the one square adjacent to the direction it's facing.
19:01:49 <kallisti> portals cannot capture normally.
19:04:12 <kallisti> the portal itself can move to any space within a chebyshev distance of 3, ignoring pieces within its path ("hopping" like a knight)
19:04:30 <Ngevd> Which direction are the portals initially facing
19:04:37 <kallisti> I should probably draw a pretty little giagram like this one http://en.wikipedia.org/wiki/File:Chess_x4t45.svg
19:05:02 <kallisti> the opponent. assuming white is on the south side of the board, and black is on the north side.
19:05:08 <kallisti> as in a standard chess diagram.
19:05:37 <kallisti> but the starting direction isn't very important I think.
19:05:44 <kallisti> you'll likely move portals as one of your first moves
19:05:46 <kallisti> and thus reorient it.
19:05:57 <kallisti> oh
19:05:59 <kallisti> that
19:06:02 <kallisti> is a picture of a four
19:06:09 <kallisti> http://en.wikipedia.org/wiki/Chebyshev_distance
19:06:12 <Ngevd> Yes, I was wondering about that
19:06:55 <Ngevd> Can they move to a distance of three or less, or is it precisely 3?
19:07:16 <kallisti> 3 or less
19:07:22 <Ngevd> Okay
19:07:27 <kallisti> may adjust it to 2 dunno
19:07:31 <kallisti> that is quite ridiculously mobile.
19:07:47 <kallisti> but then, they need to be able to respond quickly to things that can capture all the way across the board without moving at all.
19:07:48 <Ngevd> Hmm
19:08:11 <kallisti> the cannons themselves move slowly however. one square in any direction per turn.
19:08:22 <Ngevd> Like Kings?
19:08:24 <kallisti> yes
19:08:32 <kallisti> kings are exactly the same in this game.
19:08:34 <kallisti> in every way.
19:08:45 <Ngevd> Except for castling
19:08:48 <kallisti> er, yes.
19:09:05 <kallisti> but I might have an optional castling rule. I want to try out many rule variations
19:09:11 <kallisti> I might tweak individual movement and capturing rules and stuff like that.
19:10:15 <kallisti> chebyshev distance of 3 movement will be interesting
19:10:37 <kallisti> but I think it fits the game well. everything is very extreme.
19:10:55 <kallisti> as far as I can tell the purpose of pawns (which are currently unchanged) is to be meatshields.
19:11:12 <Ngevd> What happens if a pawn is promoted to a portal
19:11:19 <kallisti> oh, hmmm.
19:11:28 <kallisti> well....
19:11:33 <kallisti> uh.....
19:11:37 <kallisti> uh.........
19:12:10 <kallisti> I hadn't really thought about promotion. which means IT'S NOT IN THE GAME YET.
19:12:19 <kallisti> also how the hell are you going to get to the other side of the board.
19:12:27 <Ngevd> Carefully placed portals
19:12:28 <kallisti> I guess it's pretty difficult in normal chess too...
19:12:32 <kallisti> oh, yes.
19:12:32 <kallisti> see
19:12:33 <kallisti> hmm
19:12:49 <kallisti> I don't know what effects that have.
19:12:52 <kallisti> *has
19:12:54 <kallisti> erjwejriwjiojweroijweiojtowiejr
19:13:01 <kallisti> currently the rule is
19:13:05 <kallisti> if you capture a portal
19:13:21 <kallisti> the other portal explodes and captures everything adjacent to it and itself.
19:13:33 <kallisti> which is kind of a shitty way to account for the fact that a portal doesn't really do anything if the other one is missing
19:13:36 <kallisti> however
19:13:39 <kallisti> with promotion rules you could get new portals.
19:13:41 <Ngevd> That makes saying "check" quite interesting
19:13:46 <kallisti> Ngevd: oh yes.
19:13:50 <Ngevd> ::::D
19:13:54 <kallisti> check is kind of ridiculous
19:13:56 <kallisti> in this game.
19:14:12 <kallisti> the same explosion rule exists if the two portals attempt to travel through each other.
19:14:16 <kallisti> which means
19:14:46 <kallisti> if two portals of the same color are within movement distance of one another, the opponents king cannot be adjacent to them
19:15:04 <Ngevd> This is crazy!
19:15:06 <kallisti> lol
19:15:25 <kallisti> considering that a portal can more or less move across the whole board in a minimum of 3 turns, and more than likely just 2
19:15:32 <kallisti> this is a pretty frequent state to be in.
19:16:06 <kallisti> but I feel the piece promotion thing would be kind of ridiculous and weird
19:16:15 <kallisti> because you would just shuttle pawns to the other side in the late game.
19:16:21 <kallisti> which I guess makes them more valuable.
19:16:42 <kallisti> that could be an interesting thing...
19:17:01 <kallisti> Ngevd: I suspect the rules as they stand are highly broken.
19:17:08 <Ngevd> Wow, you could get the enemy king into checkmate by putting a portal either side of it, both pointing towards it
19:17:10 <kallisti> I just took some elements are thought were interesting
19:17:12 <kallisti> and stuck them together
19:17:17 <kallisti> and then made rules for the consequences.
19:17:40 <kallisti> yes I may very well restrict the movement of portals somehow
19:17:44 <kallisti> perhaps no hopping like knights
19:18:03 <kallisti> still that doesn't change much
19:18:10 <kallisti> there are a shit ton of ways to get to the same square
19:18:14 <kallisti> when going by chevyshev distance
19:18:21 <kallisti> *cheby
19:19:25 <kallisti> Ngevd: you just made me realize another strange corner case.....
19:19:40 <kallisti> which makes me think
19:19:44 <kallisti> perhaps portals should be unable to capture
19:19:49 <kallisti> or rather
19:19:52 <kallisti> transport things by stepping on them.
19:20:12 <kallisti> as interesting as it would be
19:20:14 <Ngevd> Hmm, my checkmate scenario is rather a stalemate
19:20:30 <kallisti> imagine you have that same scenario
19:20:31 <kallisti> but with
19:20:32 <kallisti> a pawn
19:20:34 <kallisti> in the middle
19:20:49 <kallisti> now what happens when one of the portals attempts to capture the pawn, and thus transport it
19:20:57 <kallisti> when two portals are adjacent to each other, facing the same direction
19:21:11 <kallisti> it... kind of just disappears
19:21:19 <kallisti> in an infinite loop of rulez
19:21:43 <kallisti> PROBLEM SOLVED
19:21:47 <kallisti> this is how portals capture. :>
19:21:56 <kallisti> THIS VERY UNLIKELY SITUATION
19:21:59 <kallisti> IS HOW YOU CAPTURE THINGS WITH PORTALS.
19:22:02 <kallisti> done.
19:22:03 <kallisti> problem solved.
19:22:52 <Ngevd> Perhaps the pawn remains in the portal loop until it can exit the portal safely, at which point you flip a coin and it gets fired out of one of the portals at high speed?
19:23:05 <kallisti> lol
19:23:12 <kallisti> I'm trying to remove any element of chance as much as I can
19:23:19 <kallisti> though there is an existing rule variant that allows chance.
19:23:24 <kallisti> but I don't really like it.
19:24:00 <kallisti> it involves PROJECTILE LOOPS
19:24:06 <kallisti> THAT ARE /BIDIRECTIONAL/
19:24:07 <kallisti> yes
19:24:14 <kallisti> I've just dropped some Official Portal Chess Terminology.
19:25:23 <Ngevd> Possibly the player who controls the portals the piece is trapped in chooses which way the piece gets fired?
19:25:31 <kallisti> yes that's interesting
19:25:33 <kallisti> I may in fact
19:25:35 <kallisti> make this another case
19:25:38 <kallisti> where a number of rule variations can exist.
19:25:53 <kallisti> the other case is the bidirectional projectile loop thing, which I haven't really explained very well
19:26:04 <kallisti> man... this ruleset is going to need several helpful diagrams.
19:26:08 <Ngevd> And if one of the portals is destroyed, the piece is obviously destroyed
19:26:57 <kallisti> hm, yes you could go by:
19:27:25 <kallisti> a) chance b) portalling player's choice c) capturing portal ejects always d) moving portal ejects always
19:28:03 <kallisti> e) actually there's about 3 more I can think
19:28:05 <kallisti> of
19:28:07 <kallisti> TOO MANY
19:28:08 <kallisti> RULE
19:28:09 <kallisti> VARIATIONS
19:28:44 <kallisti> the rule variations are basically me not deciding what can happen here, and just picking one I like the best as the "standard" but allowing the other possibilities
19:29:04 <kallisti> I'm afraid by the end there will be so many strange rules that no one will want to play. :P
19:29:05 <Ngevd> You could do one by how many turns have taken place?
19:29:15 <kallisti> oh yes that's one
19:29:18 <kallisti> the oscillating rule
19:29:22 <kallisti> like the projectile loop one
19:29:23 <kallisti> that works like that.
19:29:32 <kallisti> that is one of the "3 more I can think of"
19:29:39 <Ngevd> The oscillating rule family- you can do many timings
19:29:45 <kallisti> lol, yes.
19:29:50 <kallisti> RULE FAMILIES
19:29:58 <kallisti> "chance" "oscillation" "meh fuck it"
19:30:06 <kallisti> the three rule families
19:30:15 <Ngevd> And choice
19:30:30 <kallisti> for those who like gambling, those who like strategic timing, and those who really don't give a fuck.
19:30:37 <kallisti> well the choice one is a bit difficult to work out
19:31:14 <kallisti> in projectile loops the choice for the looping player is, obviously, to capture an opponent's piece, but to allow friendly pieces to interact with the projectile in a way that prevents them from being captured
19:31:33 <kallisti> note that this is only bidirectional loops
19:32:02 <kallisti> for a projectile loop that travels in only one direction there is no ambiguity that needs to be settle by explicit rules.
19:32:40 <Ngevd> > let PortalChess == Weird in PortalChess == Weird
19:32:41 <lambdabot> <no location info>: parse error on input `in'
19:32:52 <Ngevd> > let "Portal Chess" == "Weird" in PortalChess == Weird
19:32:53 <lambdabot> <no location info>: parse error on input `in'
19:33:01 <Ngevd> > let "Portal Chess" == "Weird" = True in PortalChess == Weird
19:33:02 <lambdabot> Not in scope: data constructor `PortalChess'Not in scope: data constructor ...
19:33:12 <Ngevd> > let "Portal Chess" == "Weird" = True in "PortalChess" == "Weird"
19:33:13 <lambdabot> *Exception: <interactive>:3:4-35: Non-exhaustive patterns in function ==
19:33:17 <Ngevd> > let "Portal Chess" == "Weird" = True in "Portal Chess" == "Weird"
19:33:18 <lambdabot> True
19:33:18 <kallisti> yo dawg I heard you like pattern matching
19:33:23 <Ngevd> ...
19:34:08 <Ngevd> My Portal Chess program has 15 lines of code, not one of which contains pattern matching
19:34:09 <kallisti> http://sprunge.us/WdIC
19:34:13 <Ngevd> It doesn't do much, though
19:34:18 <kallisti> Ngevd: hm?
19:34:29 <kallisti> you've been writing portal chess code?
19:34:34 <Ngevd> Yes
19:34:38 <Ngevd> While you've been talking
19:34:40 <kallisti> oh
19:34:41 <kallisti> well
19:34:44 <kallisti> you should work on mine instead. :P
19:34:50 -!- jix_ has changed nick to jix.
19:35:29 <Ngevd> I'm doing mine a little different
19:35:39 <Ngevd> Yours is probably better
19:35:46 <Mathnerd314> Ngevd: I like yours better
19:35:47 <lifthrasiir> > let { infixr 3 <=>; "foo" <=> "bar" = "bar" <=> "foo" } in "foo" <=> "bar"
19:35:47 <lambdabot> *Exception: <interactive>:3:20-52: Non-exhaustive patterns in function <=>
19:35:53 <lifthrasiir> uhm. yeah.
19:36:29 <Mathnerd314> lifthrasiir: write a programming language where this works:
19:36:54 <Mathnerd314> > let { infixr 3 <=>; "foo" <=> "bar" = "bar" <=> "foo"; a <=> b = b <=> a } in "foo" <=> "bar"
19:36:58 <lambdabot> mueval-core: Time limit exceeded
19:37:24 <Sgeo> Uh, what were you expecting that to do?
19:37:35 <lifthrasiir> > let { infixr 3 <=>; "foo" <=> "bar" = True; a <=> b = b <=> a } in "bar" <=> "foo"
19:37:36 <lambdabot> True
19:37:36 <Sgeo> Print an error saying <<loop>>?
19:37:38 <Sgeo> Oh
19:37:49 <Sgeo> Wait, why am I saying oh?
19:38:00 <lifthrasiir> abuse of local fixity declaration?
19:38:23 <kallisti> Ngevd: what are you doing differently? :P
19:38:45 <Ngevd> I'm doing the board is an Array (Int, Char) Piece
19:38:50 <kallisti> oh
19:38:56 <Ngevd> Rather than a list of pieces with coords?
19:39:04 <kallisti> I'm using a Vector.
19:39:23 <kallisti> and I have a Storable instance that converts board squares to 16-bit unsigned integers.
19:41:20 <Ngevd> This took me a while:
19:41:23 <Ngevd> freshBoard = array ((1,'a')(8,'h')) [((1,'a'), CCannon White),((1,'b'), Knight White),((1,'c'), Portal White North),((1,'d'), King White),((1,'e'), Queen White),((1,'f'), Portal White North),((1,'g'), ((1,'h'), DCannon White)
19:41:23 <Ngevd> ,((2,'a'), Pawn White True),((2,'b'), Pawn White True),((2,'c'), Pawn White True),((2,'d'),Pawn White True),((2,'e'),Pawn White True),((2,'f'),Pawn White True),((2,'g'),Pawn White True),((2,'h'),Pawn White True)
19:41:23 <Ngevd> ,((3,'a'), Empty),((3,'b'), Empty),((3,'c'), Empty),((3,'d'), Empty),((3,'e'), Empty),((3,'f'), Empty),((3,'g'), Empty),((3,'h'),Empty)
19:41:24 <Ngevd> ,((4,'a'), Empty),((3,'b'), Empty),((4,'c'), Empty),((4,'d'), Empty),((4,'e'), Empty),((4,'f'), Empty),((4,'g'), Empty),((4,'h'),Empty)
19:41:26 <kallisti> lol
19:41:29 <Ngevd> ,((5,'a'), Empty),((5,'b'), Empty),((5,'c'), Empty),((5,'d'), Empty),((5,'e'), Empty),((5,'f'), Empty),((5,'g'), Empty),((5,'h'),Empty)
19:41:31 <Ngevd> ,((6,'a'), Empty),((6,'b'), Empty),((6,'c'), Empty),((6,'d'), Empty),((6,'e'), Empty),((6,'f'), Empty),((6,'g'), Empty),((6,'h'),Empty)
19:41:34 <Ngevd> ,((7,'a'), Pawn Black True),((7,'b'), Pawn Black True),((7,'c'), Pawn Black True),((7,'d'),Pawn Black True),((7,'e'),Pawn Black True),((7,'f'),Pawn Black True),((7,'g'),Pawn Black True),((7,'h'),Pawn Black True)
19:41:41 <kallisti> I wrote mine a bit less... tediously.
19:41:43 <Ngevd> ,((8,'a'), DCannon Black),((8,'b'), Knight Black),((8,'c'), Portal Black South),((8,'d'), Queen Black),((8,'e'), King Black),((8,'f'), Portal Black South),((8,'g'), ((8,'h'), CCannon Black)
19:41:46 <Ngevd> ]
19:41:50 <Ngevd> Almost certainly
19:42:10 <Mathnerd314> Sgeo: I was expecting it to change the universe in very subtle ways :p
19:42:22 <kallisti> http://sprunge.us/DfHI
19:42:30 <kallisti> storable instance and some basic functions
19:46:57 <kallisti> hmmm if I took loops out of the board representation I could knock it down to a Word8 representation.
19:47:01 <Mathnerd314> my desktop: http://min.us/mvFG2GySl#1o
19:47:24 <kallisti> since loops are expected to be not very common anyway.
19:47:34 <kallisti> I dunno I'll see how the algorithms work.
19:47:42 <kallisti> and change accordingly
19:47:47 <Ngevd> Mathnerd314, you can delete the install file for Skype
19:49:30 -!- Phantom___Hoover has quit (Ping timeout: 240 seconds).
19:50:04 <Mathnerd314> yeah...
19:50:06 <kallisti> Ngevd: so are you ready to implement the most exciting chess variant ever created? :P
19:50:20 <Ngevd> Probably not!
19:50:25 <Ngevd> But I'll give it a go
19:51:17 -!- Vorpal has quit (Ping timeout: 248 seconds).
19:52:59 -!- Phantom___Hoover has joined.
19:53:30 <kallisti> Ngevd: I think I did a pretty good job structure the "new board" code.
19:53:39 <kallisti> but maybe there's a way to make it better.
19:58:17 <kallisti> kmc: hmm, so as a general, when micro-optimizing, is it better to have many function arguments or many free variables?
19:58:35 <kallisti> when I was optimizing a (rather dumb) factoring algorithm I noticed that arguments seemed to be faster.
20:01:43 <kallisti> based on the way the STG presents its memory model I think function arguments would have slightly faster access times, which could be important for arguments that are accessed rapidly in a tight loop.
20:02:08 <kallisti> but it's likely a minor difference.
20:03:20 <Ngevd> Hmm
20:03:37 <Ngevd> Would it be possible to do the board as Coord -> Maybe Piece?
20:07:07 <kallisti> I think it would still have to look something up within an array or other structure
20:07:21 <kallisti> hm, well maybe not
20:07:33 -!- Labbekak has joined.
20:08:15 <kallisti> Ngevd: yes that would be possible but probably not very efficient.
20:08:57 <kallisti> each modification of the board would add an additional branch point that has to be executed in order to access anything on the board.
20:09:18 <kallisti> as you continue to layer either guards pattern matches
20:09:40 <kallisti> +or
20:11:35 <kallisti> essentially my at function produces a Coord -> Maybe Piece sort of function
20:11:43 <kallisti> at :: Board -> (File, Rank) -> Square
20:11:47 <kallisti> given the board it produces such a function
20:11:57 <kallisti> where data Square = Square (Maybe Piece) (Maybe Loop)
20:12:43 -!- MDude has quit (Ping timeout: 244 seconds).
20:26:53 <Ngevd> kallisti, what are Arrows and Prisms?
20:32:40 <Phantom___Hoover> Arrows are just members of homsets.
20:33:01 <Ngevd> In the context of Portal Chess
20:34:03 <kallisti> Ngevd: arrows are the pieces symbolized by the knight. They have a direction. they're immune to normal projectiles and will redirect the path of a projectile that comes into contact with them, regardless of which player initiated the projectile.
20:34:36 <kallisti> they move like bishops but are unable to capture like bishops, and may also move one space and capture one space in any cardinal direction
20:34:51 <kallisti> (I think. maybe. we'll see)
20:34:52 <Ngevd> And how do projectiles work?
20:35:06 <kallisti> well I kind of already explained most of it...
20:35:15 <kallisti> they just travel in the direction they're fired.
20:35:21 <Ngevd> Are they coloured?
20:35:24 <kallisti> hm
20:35:28 <kallisti> well, no.
20:35:38 <kallisti> they can capture any piece.
20:35:52 <kallisti> this makes arrows rather valuable defensively.
20:36:09 <kallisti> to block and redirect projectile paths, thus preventing cannons from firing
20:36:25 <kallisti> and also offensively
20:36:42 <kallisti> as an extension to the slow-moving cannons offensive capability.
20:36:47 <Ngevd> And how quickly do projectiles move
20:36:52 <kallisti> erm, instantly.
20:37:15 <kallisti> they go away when they've either captured a piece or touch the edge of the board.
20:37:15 <Ngevd> If they're slower, you can do taking the bullet?
20:37:27 <kallisti> I have no idea what that mean-- oh yes you could do that.
20:37:32 <kallisti> if they were slower
20:37:38 <kallisti> it would also make them kind of pointless I think
20:37:52 <Ngevd> Hmm, yeah
20:37:59 <kallisti> the fact that you can capture things from across the board without moving is kind of what makes portal chess interesting. :P
20:38:21 <Ngevd> Can cannons fire through portals?
20:38:23 <kallisti> yes.
20:38:27 <kallisti> they can also capture portals.
20:38:33 <kallisti> based on the rules of how capturing portals works.
20:38:53 <kallisti> cannons cannot capture arrows
20:38:57 <kallisti> however, with the help of a prism, they can.
20:39:17 <ais523> is anyone actually going to /play/ this
20:39:25 <kallisti> who knows.
20:39:28 <ais523> also, what if an arrow gets into an infinite loop through portals
20:39:29 <Ngevd> Probably just me and kallisti
20:39:36 <kallisti> ais523: yes this is a thing.
20:39:45 <kallisti> I have rules for it. they're slightly complicated. :P
20:40:06 <kallisti> but the basic idea is that it produces a loop, which is a persistent element of the board.
20:40:24 <kallisti> it's just a consequence of the "projectiles disappear when they leave the edge of the board or capture a piece" a rule.
20:40:37 <Ngevd> How can a projectile get stuck in a portal?
20:40:48 <kallisti> well, it doesn't get stuck /in/ the portal
20:40:52 <kallisti> it gets stuck in an infinite loop
20:40:55 <Ngevd> How?
20:40:56 <kallisti> either by arrows or portals.
20:41:02 <kallisti> so the simplest one is
20:41:04 <kallisti> two arrows facing each other
20:41:13 <kallisti> a cannon fires and the projectile touches one of the arrows
20:41:23 <Ngevd> Oooh
20:41:24 <Ngevd> I see
20:41:30 <quintopia> then any piece that ever moves through that zone dies?
20:41:34 <kallisti> this is a bidirectional loop. it's not entirely clear which direction the projectile is going. intuitively it goes back and forth between the two arrows.
20:41:39 <kallisti> quintopia: yes, and the projectile goes away.
20:41:48 <kallisti> also
20:42:24 <kallisti> if one of the components of the loop breaks the loop, the projectile will either a) fly off the board b) capture something c) get stuck in a different loop
20:42:25 <Ngevd> I was imagining it bouncing off the arrow rather than turning
20:42:35 <kallisti> Ngevd: it just goes in whatever direction the arrow is pointing
20:42:39 <Ngevd> Yeah
20:42:55 <quintopia> meh, i think projectiles should move at a finite speed. say eight squares a turn. then the prjectile can cover that area without preventing motion through it
20:43:33 <kallisti> that's difficult to represent on a chess board. admittedly so are several other things (loops, and a specific variation of the loop rules where bidirectional loops oscillate each round of turns)
20:43:34 <quintopia> and bullet dodging is possible
20:43:38 <quintopia> which could be fun
20:43:47 <kallisti> quintopia: eh.
20:43:55 <quintopia> its easy to represent...bullets become pieces
20:44:14 <kallisti> yes that's possible, but the idea was to require only a chess board and a little bit of imagination (in regard to keeping track of loops)
20:44:26 <kallisti> however, I guess a coin or something could be used
20:44:28 <kallisti> something easy to find.
20:44:32 <Ngevd> A loop can be: Data Loop = Directedloop [Coord] | Bidirectedloop [Coord]?
20:44:34 <quintopia> already requires too much imagination
20:44:44 <kallisti> Ngevd: I just use a direction
20:44:52 <kallisti> Ngevd: data Loop = Loop LoopKind Direction
20:45:02 <kallisti> data LoopKind = Unidirectional | Bidirectional
20:45:06 <kallisti> but I like your names better
20:45:16 <Ngevd> You could use strings if you want to play for real
20:46:13 <Ngevd> I don't see how your kind of loop actually represent loops
20:46:25 <Ngevd> Unless it's on the board?
20:46:32 <Ngevd> Ah yes
20:48:20 <quintopia> kallisti: if you want to make this even more complicated, you could have both cannons and laser cannons. the laser cannons are instantaneous, but arrows act as mirrors for them rather than "go this way"
20:48:37 <quintopia> let the arrow point in the directionof the normal vector to the mirror plane
20:49:10 <kallisti> quintopia: nah my pieces are already pretty filled.
20:49:21 <quintopia> ah well
20:49:58 <quintopia> i was just thinking how amusing itd be if you could reflect a shot straight back at its source. "i will die if i fire right now"
20:50:02 <kallisti> the rules are probably broken anyway
20:50:09 <kallisti> quintopia: yes that's possible.
20:50:10 <quintopia> but i guess its still possible with arrows
20:50:13 <quintopia> so
20:50:16 <quintopia> whaev
20:50:29 <kallisti> one of the possible opening moves involves such a scenario in fact.
20:50:35 <kallisti> which is what I was saying earlier
20:50:41 <kallisti> that white can easily force blacks first move
20:50:52 <kallisti> because white's first move can put black's pieces in danger
20:51:01 <quintopia> that sounds annoying
20:51:03 <kallisti> yes
20:51:07 <kallisti> these are things that need to be fixed.
20:51:19 <kallisti> or not fixed, but improved.
20:51:39 <kallisti> perhaps by giving cannons a finite range.
20:51:48 <kallisti> but this leads to other problems.
20:52:05 <shachaf> Has elliott given up on IRC?
20:52:18 <Ngevd> He may be blocked
20:52:23 <Ngevd> Banned
20:52:38 <Ngevd> Of course, now I've said that, he's going to join and say "No I'm not!"
20:52:46 <shachaf> Oh, huh, he's online.
20:52:52 <Ngevd> Or, more likely, "Yes I am"
20:53:12 <Ngevd> shachaf, which channels?
20:53:18 <shachaf> No idea.
20:53:54 <kallisti> rearranging the starting positions of pieces could possibly improve the game.
20:55:43 <kallisti> or hmmm
20:56:32 <kallisti> I think the situation could be amended by giving black an extra turn at the beginning of the game.
20:57:31 <Ngevd> Just seen an ad for "Megashark vs Crocasaurus"
20:58:43 <kallisti> http://gameknot.com/img/cd/Hs4OjMqrdSD_Tek0dz6AGg.gif
20:58:44 <kallisti> okay so
20:59:11 <kallisti> the best opening move for white is to move g2 to g3
20:59:17 <kallisti> because next turn he would be guaranteed a free capture
20:59:25 -!- Phantom___Hoover has quit (Quit: Leaving).
20:59:48 <kallisti> however, if black is given two moves after white's first move
20:59:56 <kallisti> this negates that opening for white.
21:00:25 <kallisti> however, it's likely just an indication that the game is fundamentally flawed in some way and needs to be revised. :P
21:00:48 <Ngevd> Love it for its flaws
21:01:31 <kallisti> but no that doesn't fix anything. :P
21:02:12 <kallisti> it just gives black that opportunity
21:02:14 <kallisti> to take a free piece
21:02:25 <kallisti> aha, I know.
21:02:29 <Ngevd> That's what they said to Raul Gomila!
21:02:38 <kallisti> you can give arrows an additional rule
21:02:50 <kallisti> they may push friendly pieces with them, in the direction they're facing.
21:03:20 <kallisti> this gives black the potential to defend white's opening by simply pushing his pawn out of the way and putting his arrow in position to block the projectile.
21:03:50 <kallisti> and also means that if black does the same sort of manuever
21:03:55 <kallisti> white can reply the same way.
21:04:03 <kallisti> and now the beginning of the game is somewhat sane.
21:04:12 <kallisti> can't say that about the rest of the game. :P
21:05:13 <Sgeo> kallisti, Ngevd update
21:05:28 <kallisti> Ngevd: could you make sense of my solution?
21:05:41 <kallisti> or even the initial problem?
21:08:03 <kallisti> so in fact a potential opening scenario is this.
21:09:16 <kallisti> white moves g1 to g2, thereby pushing g2 to g3. black can respond by mirroring the move on his side.
21:10:15 <kallisti> and... immediately there's a stripe of "do not enter" going across the main diagonal of the board. :P
21:10:19 <Ngevd> Sgeo, ooh
21:11:41 <Ngevd> I still think Roxy is an esoteric programmer
21:12:51 <kallisti> this game is so wonky. :P
21:13:20 <Sgeo> Is ~ATH an esolang?
21:13:22 <kallisti> I think just having the first move gives you a ridicuous edge over your opponent
21:13:24 <Sgeo> Is ^CAKE?
21:13:38 <Ngevd> They are fictional languages
21:13:55 <Ngevd> ~ATH could make a good esolang
21:13:55 <Sgeo> We should unfictionalize them
21:14:05 <Ngevd> We haven't seen enough of ^CAKE or DIS*
21:14:16 <Sgeo> I forgot about DIS*
21:14:38 <kallisti> for example in the diagonal stripe of death scenario, with the new rules I just creating, white can move b1 to the center of the board, pushing the pawn along with him, and cut the diagonal stripe in half and thereby gain control of it
21:14:44 <kallisti> black can then respond by doing the exact same thing
21:14:55 <kallisti> so I think.... in this scenario, stalemate is very possible
21:15:04 <kallisti> if black just mirrors white.
21:25:05 <kallisti> well, maybe not
21:25:12 <kallisti> there's no way to know except by playing a bunch of games. :P
21:26:59 -!- Labbekak has quit (Quit: Page closed).
21:27:30 <kallisti> does GHC do something more efficient than branch a lot when it encountered a case statement?
21:27:42 <kallisti> eh, premature optimization
21:28:03 <kallisti> basically I've got backward :: Direction -> Direction
21:28:20 <kallisti> and I was wondering if an explicit case statement would be slower or faster than using (to|from)Enum tricks.
21:29:03 <Ngevd> Couldn't you do pattern matching? I don't know how that compiles, though
21:29:10 <kallisti> as a case statement
21:29:21 <kallisti> case statements are the pattern matching primitive in Haskell
21:29:32 <kallisti> all the other pattern matching syntax translates to cases.
21:30:16 <kallisti> I'll use Enum tricks for now because it's less tedious
21:32:22 <kallisti> backward d = toEnum . condApp even succ pred . fromEnum $ d
21:32:22 <kallisti> where
21:32:23 <kallisti> condApp p t f x = if p x then t x else f x
21:32:31 <kallisti> condApp seems like it should be something that already exists
21:34:00 <Ngevd> @hoogle (a -> Bool) -> (a -> b) -> (a -> b) -> a ->b
21:34:00 <lambdabot> No results found
21:34:22 <kallisti> really there's no need for special syntax for if
21:34:28 <kallisti> I think an if function would look better.
21:35:00 -!- Ngevd has quit (Quit: goodnight).
21:38:22 -!- Phantom_Hoover has joined.
21:46:14 <kallisti> presumably GHC has some kind of special case for enumeration types to make them faster.
21:46:59 -!- Patashu has joined.
21:50:38 * kallisti is experimenting with the hundreds of ways to write the same thing. :P
21:52:26 <kallisti> backward :: Direction -> Direction
21:52:26 <kallisti> backward d = let i = fromEnum d
21:52:26 <kallisti> in toEnum $ if even i
21:52:26 <kallisti> then i+1
21:52:27 <kallisti> else i-1
21:52:36 <kallisti> I think I prefer this one over the equivalent where/guard version
21:56:25 <kallisti> I think where is better when longer descriptive names are used
21:57:02 <kallisti> if you've got a long where clause that assigns a bunch of single-letter variable names then you benefit very much from the top-to-bottom presentation
21:57:09 <kallisti> *don't benefit
21:59:18 <kallisti> newBoard = imapBoard fillBoard emptyBoard
21:59:21 <kallisti> where
21:59:23 <kallisti> ...
21:59:39 <kallisti> compare with this: you have long descriptive names, which gives you an idea of the structure of the function beforehand
22:01:33 -!- azaq23 has joined.
22:01:49 -!- azaq23 has quit (Client Quit).
22:07:37 -!- MDude has joined.
22:07:53 -!- Jafet has quit (Quit: Leaving.).
22:25:38 -!- Jafet has joined.
22:28:32 -!- CHeReP has joined.
22:45:07 -!- Mathnerd314_ has joined.
22:49:13 -!- Mathnerd314 has quit (Ping timeout: 276 seconds).
22:50:50 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
22:51:30 -!- Mathnerd314_ has quit (Ping timeout: 240 seconds).
22:56:08 <Sgeo> kallisti, Nisstyre update
23:03:06 <Nisstyre> Sgeo: hi
23:03:20 <Sgeo> Hi, that was a misupdate
23:03:26 <Nisstyre> ok
23:03:45 <Nisstyre> kallisti: I dislike if...else in Haskell
23:03:50 <Nisstyre> feels all wrong
23:04:49 <kallisti> Nisstyre: eh
23:04:55 <kallisti> I'd prefer an if function, yes.
23:05:42 <Nisstyre> kallisti: I just use guards or case expressions
23:05:53 <Nisstyre> or pattern matching when it applies
23:12:03 <kallisti> Nisstyre: I use guards sometimes.
23:12:22 <kallisti> but in this case I thought the usage was clearer than the equivalent guard/where notation
23:52:24 -!- pikhq has joined.
23:54:51 -!- pikhq_ has quit (Ping timeout: 245 seconds).
23:56:45 -!- ais523 has quit (Remote host closed the connection).
2012-01-18
00:35:29 * Sgeo is losing it
00:35:30 <Sgeo> http://hpaste.org/56573
00:35:47 <Sgeo> (54's join should read joinEvent, which is fixed on my local copy)
00:53:35 <kallisti> Sgeo: isn't mconcat optional?
00:53:48 <kallisti> why not just write mappend?
00:54:28 <Sgeo> kallisti, because the default mconcat would be horribly inefficient
00:54:43 -!- CHeReP has quit (Quit: This computer has gone to sleep).
00:54:55 <kallisti> Sgeo: ah okay. yeah I kind of figured that may be way.
00:55:23 <kallisti> *why
00:55:24 <kallisti> jesus
00:55:26 <kallisti> I'm just typoing
00:55:27 <kallisti> everything
01:00:15 <Sgeo> elliott is alive
01:00:38 <kallisti> well... duh. :P
01:01:10 * kallisti needed a break from elliott, to be honest.
01:01:16 <kallisti> unfortunately now the channel is less alive.
01:01:21 <kallisti> at least for now.
01:01:25 <monqy> it's so lonely
01:01:31 <kallisti> monqy: it's okay I'm here it's okay.
01:15:10 -!- augur has quit (Ping timeout: 240 seconds).
01:15:25 -!- itidus20 has joined.
01:17:26 -!- augur has joined.
01:19:44 -!- itidus20 has quit (Client Quit).
01:20:02 -!- itidus21 has quit (Ping timeout: 276 seconds).
01:26:15 -!- Frooxius has quit (Ping timeout: 240 seconds).
01:33:00 -!- sebbu has quit (Read error: Connection reset by peer).
01:33:27 -!- sebbu has joined.
01:33:28 -!- sebbu has quit (Changing host).
01:33:28 -!- sebbu has joined.
01:40:55 -!- Jafet has quit (Read error: Connection reset by peer).
01:41:20 -!- Jafet has joined.
01:42:14 -!- Jafet has quit (Client Quit).
01:42:58 -!- Jafet has joined.
01:47:34 -!- Jafet has quit (Ping timeout: 252 seconds).
02:04:10 <augur> fizzie: ping
02:27:34 <tswett> > length ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
02:27:35 <lambdabot> 33
02:27:45 <tswett> Huh.
02:27:56 <tswett> I was expecting that number to have more significance.
02:33:40 -!- pikhq_ has joined.
02:35:50 -!- pikhq has quit (Ping timeout: 252 seconds).
02:44:14 * Sgeo reads the Idris tutorial
02:44:23 <Sgeo> tswett, :33
02:44:33 <Sgeo> (Note: Probably not actual significance)
02:45:11 <monqy> hi
02:45:12 <tswett> That... I'll take whatever you can give, I guess.
02:46:14 * Sgeo meows
02:46:55 <monqy> hi
03:17:14 <Sgeo> kallisti, tswett update
03:17:41 <tswett> I congratulate myself on checking MSPA right before you tell me of this.
03:27:36 -!- GreaseMonkey has joined.
03:27:39 -!- GreaseMonkey has quit (Changing host).
03:27:39 -!- GreaseMonkey has joined.
03:44:16 -!- GreaseMonkey has quit (Quit: The Other Game).
03:54:12 <kallisti> @hoogle chr
03:54:12 <lambdabot> Data.Char chr :: Int -> Char
03:54:12 <lambdabot> Text.PrettyPrint.HughesPJ Chr :: Char -> TextDetails
03:54:12 <lambdabot> Text.PrettyPrint Chr :: Char -> TextDetails
03:54:25 <kallisti> @hoogle inRange
03:54:25 <lambdabot> Data.Ix inRange :: Ix a => (a, a) -> a -> Bool
03:54:37 <kallisti> @hoogle Char -> Int -> Char
03:54:37 <lambdabot> Data.Generics.Aliases extB :: (Typeable a, Typeable b) => a -> b -> a
03:54:37 <lambdabot> Prelude const :: a -> b -> a
03:54:37 <lambdabot> Data.Function const :: a -> b -> a
03:56:14 <Sgeo> Why am I so giddiy right bnow
04:03:14 -!- FireFly has quit (Ping timeout: 252 seconds).
04:33:47 -!- variable has quit (Excess Flood).
04:35:22 -!- variable has joined.
04:46:42 <Sgeo> kallisti, tswett update
04:59:26 -!- oerjan has joined.
05:10:31 -!- pikhq has joined.
05:10:45 -!- pikhq_ has quit (Ping timeout: 240 seconds).
05:40:41 <oerjan> `? endofunctor
05:40:44 <HackEgo> endofunctor? ¯\(°_o)/¯
05:41:24 <oerjan> `run echo "Endofunctor are just endomorphisms in the category of categories." > wisdom/endofunctor
05:41:28 <HackEgo> No output.
05:41:30 <oerjan> `? endofunctor
05:41:34 <HackEgo> Endofunctor are just endomorphisms in the category of categories.
05:41:38 <oerjan> eek
05:41:43 <oerjan> `run echo "Endofunctors are just endomorphisms in the category of categories." > wisdom/endofunctor
05:41:43 <kmc> i heard you like category theory
05:41:46 <HackEgo> No output.
05:41:47 <oerjan> `? endofunctor
05:41:51 <HackEgo> Endofunctor are just endomorphisms in the category of categories.
05:41:55 <oerjan> `? endofunctor
05:41:58 <HackEgo> Endofunctors are just endomorphisms in the category of categories.
05:45:45 -!- oerjan has set topic: This topic is no fun any more. | Now in colors! | So, what is blegnian motion, anyway? | http://codu.org/logs/_esoteric/.
05:47:34 -!- Madoka-Kaname has set topic: This topic is no fun any more. | Now in colors! | So, what is blegnian motion, anyway? | | http://codu.org/logs/_esoteric/.
05:47:40 <Madoka-Kaname> No colors? :(
05:47:47 -!- Madoka-Kaname has set topic: This topic is no fun any more. | Now in colors! | So, what is blegnian motion, anyway? | http://codu.org/logs/_esoteric/.
05:48:20 <oerjan> it's the channel which is colors, not the topic.
05:48:23 <oerjan> *in
05:49:04 <oerjan> i would assume they don't want /list to give colors.
05:49:13 <oerjan> even if the channel itself has them.
05:55:08 <oerjan> 18:29:16: <kallisti> C#++'s lambda syntax is strangely similar to STG's
05:55:09 <oerjan> 18:29:48: <kallisti> [list of free variables](list of arguments) -> { expression }
05:55:27 <oerjan> i guess it's due to not doing closure implicitly in either case?
05:56:15 <kallisti> oerjan: yes
05:56:41 <pikhq> Mmm, hot sauce.
05:56:46 <kmc> C#++ o_O?
05:56:55 <oerjan> kmc: IT WAS INEVITABLE
05:56:55 <kmc> is that like Objective C++
05:57:20 <kmc> iirc in C++11 you can ask for implicit closure
05:57:21 <oerjan> yeah, now for objective D#++
05:57:25 <shachaf> kmc: What do you get when you press <Compose> + + on your keyboard?
05:57:32 <kmc> Visual Objective D#++.NET
05:57:35 <kmc> #
05:57:39 <kmc> shachaf, I get #
05:57:41 <shachaf> See? It's an omen.
05:57:44 <kmc> O_O
05:58:08 <oerjan> more proof it's the end times
05:58:34 <oerjan> > chr 666
05:58:35 <lambdabot> '\666'
05:58:40 <oerjan> > var $ chr 666
05:58:41 <lambdabot> Couldn't match expected type `GHC.Base.String'
05:58:42 <lambdabot> against inferred typ...
05:58:50 <oerjan> > var [chr 6669
05:58:52 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
05:58:53 <oerjan> > var [chr 666]
05:58:54 <lambdabot> mueval-core: <stdout>: hPutChar: invalid argument (Invalid or incomplete mu...
05:59:12 <oerjan> clearly the universe tries to censor that.
05:59:34 <kmc> > text $ chr 666
05:59:35 <lambdabot> Couldn't match expected type `GHC.Base.String'
05:59:35 <lambdabot> against inferred typ...
05:59:38 <kmc> > text [chr 666]
05:59:39 <lambdabot> mueval-core: <stdout>: hPutChar: invalid argument (Invalid or incomplete mu...
06:00:03 <kmc> yeah lambdabot's unicode support is broken
06:00:47 <kmc> > generalCategory 'ʚ'
06:00:48 <lambdabot> LowercaseLetter
06:00:50 <oerjan> <kmc> iirc in C++11 you can ask for implicit closure <-- explicitly implicit, check
06:00:53 <kmc> > let ʚ = 3 in ʚ
06:00:54 <lambdabot> 3
06:01:06 <kmc> oerjan, yep
06:04:28 <kmc> std::function<int (int)> add2(int x) { return [&] (y) -> { return x+y; }; }
06:04:33 <kmc> or something like that
06:04:50 <kmc> [&] says "capture everything by reference" which ends up capturing x, but you don't need to name x again
06:04:54 <shachaf> [&] will take a reference, won't it?
06:04:59 <shachaf> You probably want [=] in this case.
06:05:10 <kmc> yeah, I guess that code will not really work
06:05:28 <kmc> i was thinking about the syntactic point and not about whether it actually works :)
06:05:56 <kmc> you can also say like [=, &foo] to mean "capture by value, except foo by reference"
06:06:03 <kallisti> > fmap (\x tail x) [2,3,4]
06:06:04 <lambdabot> <no location info>: parse error on input `)'
06:06:08 <kallisti> oh
06:06:09 <kmc> it's pretty nutso but does make sense with the rest of C++
06:06:35 <shachaf> But why do any of this when you can boost::bind and boost::lambda?!
06:06:59 <kmc> because Real Programmers don't use libraries?
06:07:23 <oerjan> > let x x = x in x 2
06:07:24 <lambdabot> 2
06:07:32 <kmc> there was an IAP course about what's new in C++11 but I already missed it :/
06:11:00 <oerjan> <kallisti> oh look Wikipedia is going down in 11 hours. <-- average geek IQ now temporarily down by 20 points
06:11:26 <shachaf> Easiest way to bypass the Wikipedia blackout: Press Esc before the page is finished loading.
06:11:29 <shachaf> I guess that's only easy if you're using a slow Internet connection like me.
06:11:34 <kmc> wikipedia isn't a "geek" site, it's used by p. much everyone
06:11:53 <oerjan> shachaf: wut that's ridiculous
06:11:56 <kallisti> oerjan: I have a question
06:12:10 <kallisti> newtype T = T [T]
06:12:15 <oerjan> kmc: ok then, average IQ of _everyone_ down by 25 points
06:12:20 <kallisti> why was I laughed at for calling this an ordered multiset. what is a better name for it?
06:12:32 <oerjan> you were laughed at?
06:12:38 <kallisti> yes. ;_;
06:12:47 <kallisti> or well
06:12:49 <kallisti> uh
06:12:54 <oerjan> well, "list"?
06:12:55 <kallisti> ridiculed. there we go.
06:13:07 <pikhq> Yeah, Wikipedia's about as used as Google.
06:13:11 <pikhq> i.e. ubiquitous.
06:13:12 <kallisti> oerjan: yes but it's like how you can construct set theory from just sets
06:13:22 <kallisti> but now it's with lists
06:13:26 <kallisti> which are ordered... and multi. :P
06:13:30 * kallisti is making perfect sense.
06:13:53 <oerjan> kallisti: sure but the difference is in the recursive part, which the terms don't really change
06:14:08 <pikhq> BTW, http://www.google.com
06:14:39 <kmc> looks like google is celebrating the 139th birthday of the guy who invented tape
06:15:54 <shachaf> Brown paper, white paper, sticking together...
06:16:30 <oerjan> shachaf: that's racist!
06:17:16 <shachaf> oerjan: :-(
06:17:23 -!- itidus21 has joined.
06:17:24 <shachaf> Can I compensate for it by typing random Unicode characters?
06:17:42 * oerjan notes that political correctness means you can call someone racist even if they meant the exact opposite
06:18:14 <oerjan> because, NOT SENSITIVE ENOUGH
06:18:57 <oerjan> shachaf: sure as long as they're not _racist_ unicode characters.
06:19:19 <shachaf> 263A WHITE SMILING FACE [☺]
06:19:19 <shachaf> 263B BLACK SMILING FACE [☻]
06:19:21 <oerjan> also don't mix traditional and simplified chinese, that's insensitive
06:19:35 <shachaf> oerjan: How did I do?
06:19:47 <oerjan> shachaf: horrible, yw.
06:20:45 <pikhq> oerjan: Not so much "insensitive" as it is "illegal in the People's Republic of China"
06:21:15 <oerjan> pikhq: in the PRC those are synonyms, hth
06:22:30 <kallisti> oh help wikipedia is down
06:22:31 <kallisti> how speak
06:22:35 <kallisti> what computer is?
06:22:46 <pikhq> Wakaran
06:22:50 <pikhq> Eigo nikui
06:22:53 <kallisti> what wakaran is?
06:22:58 <pikhq> asdf
06:23:03 <pikhq> wakaran asdf be
06:23:21 <kallisti> shachaf: in gnome-terminal the colors are inverted
06:23:26 <kallisti> from what they should be.
06:23:44 <shachaf> kallisti: Nah, it's just that the colours refer to the outlines rather than the filling.
06:23:56 <shachaf> Also it has nothing to do with gnome-terminal specifically, just your color scheme.
06:24:11 <oerjan> kallisti: try conservapedia instead
06:24:22 <oerjan> should be interesting.
06:25:05 <shachaf> Or just press Esc before the blackout overlay loads.
06:26:55 <kallisti> shachaf: hax
06:27:19 <pikhq> Or use https:
06:27:27 * kallisti edits talkpage while wiki is in blackout
06:27:54 <kallisti> oh
06:27:58 <kallisti> no edits
06:27:59 <kmc> shinkansen
06:35:12 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
06:44:14 <oerjan> <kallisti> this is a bidirectional loop. it's not entirely clear which direction the projectile is going. intuitively it goes back and forth between the two arrows.
06:44:28 <oerjan> so if a portal moves between the arrows facing one of them, what then
06:44:47 <kallisti> oerjan: there are currently... 4 different rule variations I've come up with.
06:45:07 <kallisti> either the portal is captured, the portal isn't captured (as long as it faces one of the two directions of the loop)
06:45:12 <kallisti> you flip a coin to decide (gross)
06:45:13 <kallisti> or
06:45:24 <kallisti> the direction oscillates between each round of turns
06:45:35 <kallisti> so every set of turns (one for black and one for white) it changes direction
06:45:40 <kallisti> I think I like this one the best.
06:45:50 <oerjan> ök
06:46:08 <kallisti> though it does make it a bit more complicated to keep track of
06:46:16 <kallisti> THAT'S WHY PORTAL CHESS IS ONLY FOR EXTREME STRATEGISTS.
06:47:09 <kallisti> strategists who like insane rules.
06:48:43 <kallisti> oerjan: also later I fix a particularly bad opening scenario with MORE INSANE RULES
06:48:49 <kallisti> now arrows have a pushy effect(tm)
06:51:54 <oerjan> mhm
06:59:53 <kallisti> oerjan: so you see, by piling on more insane rules, you fix the brokenness of existing insane rules
06:59:56 <kallisti> because everything is insane
07:00:00 <kallisti> it counteracts the insanity.
07:00:11 <kmc> that's the first rule of programming language design
07:00:30 <kmc> <kallisti> now arrows have a pushy effect(tm)
07:00:44 <kmc> i choose to willfully misinterpret all of what you said as an analogy about Haskell Arrows
07:00:58 <shachaf> kmc needs his fix of #haskell
07:07:45 -!- sebbu has quit (Read error: Connection reset by peer).
07:08:06 -!- sebbu has joined.
07:08:06 -!- sebbu has quit (Changing host).
07:08:06 -!- sebbu has joined.
07:13:00 <coppro> nooooooo wikpedia
07:17:00 -!- oerjan has quit (*.net *.split).
07:18:04 -!- oerjan has joined.
07:18:38 <oerjan> splat
07:19:44 <kallisti> > round 22.5
07:19:45 <lambdabot> 22
07:19:48 <kallisti> > round 23.5
07:19:49 <lambdabot> 24
07:19:56 <kallisti> ah. banker's rounding.
07:27:58 <kallisti> hm
07:28:06 <kallisti> I wonder how you would do rounding that is not dependent on base.
07:28:43 <kallisti> I guess you could just do the same thing actually.
07:28:51 <oerjan> banker's rounding isnt'...
07:29:00 <oerjan> *'t
07:29:27 <kallisti> odd based would have the nice property of not having to worry about a midpoint value, I think.
07:29:33 <kallisti> *bases
07:30:17 <kallisti> so you could convert to, say, base 5
07:30:19 <kallisti> round that
07:30:24 <kallisti> and then convert to base 10. :>
07:31:16 <kallisti> ...which is equivalent to banker's rounding, actually.
07:31:29 <oerjan> um that would just mean the real decision happens when you convert to base 5 with limited precision
07:31:52 <oerjan> (.5)_10 = (.2222222222222222...)_5, after all
07:33:32 <kallisti> oh, well you could convert to... base 19
07:33:41 <oerjan> funny guy
07:33:59 <kallisti> it has twice as many digits
07:34:11 <oerjan> obviously it's repeating floor(b/2) for any odd b
07:35:36 <fizzie> augur: I don't see why you're always all "ping"y at 4am or so.
07:59:39 -!- Jafet has joined.
08:07:54 -!- oerjan has quit (Quit: leaving).
08:57:32 -!- monqy has quit (Quit: hello).
10:32:07 -!- ais523 has joined.
10:33:44 -!- ais523 has quit (Remote host closed the connection).
10:34:44 <augur> fizzie: lol
10:35:06 <augur> actually the last two times its 9pm!
11:37:50 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:34:57 -!- myndzi has quit (Read error: Connection reset by peer).
12:38:01 -!- myndzi has joined.
12:40:18 -!- pikhq_ has joined.
12:40:45 -!- pikhq has quit (Ping timeout: 272 seconds).
12:43:04 -!- Phantom_Hoover has joined.
12:43:59 <Phantom_Hoover> Heh, looked at Reddit, was surprised it was still up, realised that I had connected nineteen minutes before the blackout.
12:58:36 -!- roper has joined.
13:03:31 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
13:19:00 -!- Phantom_Hoover has joined.
13:40:31 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
13:45:27 <kallisti> huh so they're apparently considering the removal of leap seconds.
13:50:59 <roper> unix was not wrong
13:52:00 <kallisti> ?
13:53:24 <roper> unix has not leap seconds in time_t
13:55:38 <kallisti> well it has seconds, it's just that the leap seconds are unambiguous.
13:55:42 <kallisti> -un
13:59:12 <roper> ambiguous?
13:59:39 <roper> does not consider them when converting to things like 20120118135900
14:01:23 <kmc> which "they"?
14:02:36 <kmc> also, link?
14:04:42 <kmc> they have to do something, they can do bigger corrections less often
14:04:57 <kmc> if you have leap hours then there's time to get a proper party going
14:05:14 <kmc> on the other hand people might find it disconcerting to existing outside the space-time continuum for a full hour
14:08:43 <roper> it is not leap hours , it is daily savings time
14:08:53 <roper> or something
14:18:17 -!- kallisti has quit (Ping timeout: 272 seconds).
14:22:27 <kmc> ?
14:32:11 <roper> well, time still exists. UTC has not that hours, it is a political measure, they say "to save energy"
14:40:08 <kmc> i don't understand
14:40:19 <kmc> DST and leap seconds are completely different; they serve entirely different purposes
14:42:09 <roper> yes. i mean that
14:45:41 -!- Klisz has joined.
15:01:45 -!- Madoka-Kaname has quit (Quit: Hug~♪).
16:04:42 -!- kallisti has joined.
16:04:42 -!- kallisti has quit (Changing host).
16:04:42 -!- kallisti has joined.
16:05:03 <kallisti> what things can const repsent besides a constant function and church encoded true.
16:05:08 <kallisti> *represent
16:15:56 <kallisti> :t intersect
16:15:56 <lambdabot> forall a. (Eq a) => [a] -> [a] -> [a]
16:17:21 <kallisti> > let ls = [[1,2,3],[4,5,6],[7,8,9]]; pairwiseDisjoint = all null $ intersect <$> ls <*> ls
16:17:21 <lambdabot> not an expression: `let ls = [[1,2,3],[4,5,6],[7,8,9]]; pairwiseDisjoint = ...
16:17:39 <kallisti> > let ls = [[1,2,3],[4,5,6],[7,8,9]]; pairwiseDisjoint ls = all null $ intersect <$> ls <*> ls in pairwiseDisjoint ls
16:17:39 <lambdabot> False
16:18:51 <kallisti> > let ls = [[1,2,3],[4,5,6],[7,8,9]]; pairwiseDisjoint ls = intersect <$> ls <*> ls in pairwiseDisjoint ls
16:18:52 <lambdabot> [[1,2,3],[],[],[],[4,5,6],[],[],[],[7,8,9]]
16:18:55 <kallisti> ah
16:20:34 <kallisti> > let ls = [[1,2,3],[4,5,6],[7,8,9]]; pairwiseDisjoint ls = (== ls) . filter (not.null) $ intersect <$> ls <*> ls in pairwiseDisjoint ls
16:20:36 <lambdabot> True
16:20:53 <kallisti> that's probably not correct.
16:26:23 <Sgeo> kallisti, note that there has been an update
16:26:26 <Sgeo> A while ago
16:29:25 <kallisti> Sgeo: yes always updates
16:29:27 <kallisti> section headings for this chapter: 2.1 statements 2.2 the negation of statements 2.3 the disjunction and conjunction of statements 2.4 the implication 2.5 more on implications 2.6 tautologies and contradictions 2.8 logical equivalence 2.9 Quantification
16:29:39 <kallisti> so... not going to learn anything this chapter.
16:31:03 <kallisti> > 11*11
16:31:03 <lambdabot> 121
16:31:26 <kallisti> > 11*12
16:31:27 <lambdabot> 132
16:33:54 <kallisti> :t minus
16:33:55 <lambdabot> Not in scope: `minus'
16:33:59 <kallisti> :t Mminus
16:33:59 <lambdabot> Not in scope: data constructor `Mminus'
16:34:01 <kallisti> :t M.minus
16:34:02 <lambdabot> Couldn't find qualified module.
16:34:05 <kallisti> @hoogle minus
16:34:05 <lambdabot> Foreign.Ptr minusPtr :: Ptr a -> Ptr b -> Int
16:34:05 <lambdabot> Foreign.C.Error throwErrnoIfMinus1 :: Num a => String -> IO a -> IO a
16:34:05 <lambdabot> Foreign.C.Error throwErrnoIfMinus1_ :: Num a => String -> IO a -> IO ()
16:34:39 <kallisti> @hoogle prime
16:34:39 <lambdabot> Data.HashTable prime :: Int32
16:34:40 <lambdabot> package primes
16:34:40 <lambdabot> package optimusprime
16:34:49 <kallisti> lol
16:36:11 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
16:37:23 -!- werni has joined.
16:40:58 <werni> hi everyone
16:43:44 <Sgeo> `welcome werni
16:43:50 <Sgeo> ?`welcome werni
16:43:51 <lambdabot> Unknown command, try @list
16:43:56 <HackEgo> werni: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
16:44:52 <kallisti> :t scanl
16:44:52 <lambdabot> forall a b. (a -> b -> a) -> a -> [b] -> [a]
16:45:01 <kallisti> > fix ((0:) . scanl (:) 1)
16:45:02 <lambdabot> Occurs check: cannot construct the infinite type: t = [t]
16:45:30 <Deewiant> s/(:)/(+)/
16:45:40 <kallisti> > fix ((0:) . scanl (+) 1)
16:45:41 <lambdabot> [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946...
16:45:44 <kallisti> Deewiant: I always forget that one
16:51:18 <kallisti> :t elem
16:51:19 <lambdabot> forall a. (Eq a) => a -> [a] -> Bool
16:54:46 -!- Ngevd has joined.
16:54:48 <Ngevd> Hello!
16:56:56 <kallisti> hi
16:57:09 <Ngevd> How are you?
16:57:41 * kallisti thinks the trick to artificial intelligence is to not determine what's true from a learned set of information, but to approximate what is true based on it.
16:57:47 <kallisti> Ngevd: good.
16:57:49 <kallisti> doing math homework.
16:58:09 <Ngevd> :)
16:58:30 <kallisti> prime numbers and powersets and subsets and bleh
16:58:43 -!- KingOfKarlsruhe has joined.
16:58:46 <Ngevd> I'm still on matrices...
16:59:11 <kallisti> never took linear algebra
16:59:24 <kallisti> I went Calc 1 -> Calc 2 -> discrete math -> intro to advanced math
16:59:31 <kallisti> I don't have to take Calc 3 or linear algebra to satisfy my major.
16:59:40 <kallisti> just need those first three classes then any other math elective.
16:59:44 <Ngevd> School chooses modules...
17:00:01 <kallisti> so, realizing that I suck at continuous math, decided to go toward the discrete proofy stuff.
17:00:07 <kallisti> +I
17:00:38 <kallisti> though
17:00:50 <kallisti> I am considering majoring in math as well as CS.
17:00:55 <kallisti> so I may end up taking calc 3.
17:01:16 <Ngevd> What with me being a) British and b) still in High School
17:01:18 <itidus21> to be honest most CS classes are a bit of a waste
17:01:25 <kallisti> itidus21: some of them yes
17:01:28 <kallisti> especially software engineering
17:01:30 <kallisti> uuuuugh.
17:01:37 <kallisti> I am literally learning nothing
17:01:38 <kallisti> and then
17:01:41 <itidus21> i would focus on math
17:01:45 <kallisti> I have to pretend I know things about the nothing that I just learned.
17:01:45 <Ngevd> itidus21 has been in all of them, and look at his knowledge of lambda calculus
17:01:57 <itidus21> i don't have a degree :-s
17:02:07 <itidus21> im complicated
17:02:12 <Ngevd> I don't even have an A-level
17:02:17 <itidus21> maybe my country has a bad educational system
17:02:22 <kallisti> help what does that mean Ngevd.
17:02:33 <Ngevd> We get them aged 16-18
17:02:43 <Ngevd> itidus21, Australia, right?
17:02:48 <itidus21> i would recommend to take the good CS subjects.. the ones which everyone fails :P
17:02:53 <Ngevd> That's where my dad got educated
17:03:01 <Ngevd> I think he did one of those
17:03:02 <kallisti> ...I failed a software engineering class
17:03:08 <itidus21> operating systems and that other one
17:03:09 <itidus21> computer organization
17:03:16 <kallisti> which was probably one of the easier classes I can take
17:03:20 <kallisti> it's just a lot of stupid mindless work
17:03:45 <kallisti> however I got an A in data structures
17:03:51 <kallisti> and every other actual programming class I've taken.
17:03:54 <kallisti> so...
17:04:01 <itidus21> but... i am not a good reference model of a student
17:04:25 <kallisti> I suspect I'll also ace the fuck out of databases
17:04:41 <itidus21> going to a class you know you'll ace won't help you grow, thats the problme
17:04:59 <kallisti> learning about software engineering does not help you grow. it helps you maintain jobs or become a manager.
17:05:03 <kallisti> however
17:05:06 <kallisti> if I take math classes
17:05:10 <kallisti> I will learn things.
17:05:39 <kallisti> I guess learning SWE could be helpful in structuring the /way/ you code. like, time management stuff.
17:05:47 <kallisti> how to be more productive and all that.
17:06:09 <kallisti> but... it's really not a very good field at the moment. it's basically like an extension to management that's focused on technology.
17:06:25 <itidus21> some subjects just don't get taught well
17:06:32 <kallisti> yes.
17:06:41 <kallisti> teaching is difficult
17:06:49 <itidus21> you could learn them outside of university if you really wanted... but you would never get that motivation.. thats the catch
17:07:13 <itidus21> what kind of masochist for example would study data flow diagrams in private
17:07:25 <kallisti> eh those are easy.
17:07:30 <kallisti> even kind of resemble algorithms almost.
17:07:35 <kallisti> the lower level ones
17:07:44 <kallisti> and the structural ones help you visualize a large project.
17:07:53 <kallisti> that's one thing that's not really too objectionable.
17:07:54 <itidus21> hmm
17:08:01 <kallisti> but yes
17:08:05 <kallisti> I wouldn't study them in private. :P
17:08:13 <itidus21> noone would :))
17:08:19 <itidus21> only really twisted sick people
17:09:37 <itidus21> and I still don't understand them
17:10:05 <itidus21> i guess that its one of those things you have to use in practice to figure out
17:11:46 <itidus21> hmmm.... also they often focus on imperative languages in classes
17:12:09 <itidus21> i think its uncommon for CS to teach undergrad functional programming
17:12:40 <itidus21> but this may depend on the school and country
17:13:09 -!- sebbu has quit (Quit: Quitte).
17:14:21 <itidus21> its hard to explain educational systems country to country
17:15:08 <Ngevd> I think my cousin is an Australian primary school teacher, maybe?
17:16:15 <itidus21> in australia it works like this. -1 = kindergarten. 0 = prep(atory) grade. 1 through 6 = primary school. 7 through 12 is secondary college/high school. 11 through 12 is HighSchoolCertificate/VictorianCertificateofEducation
17:16:30 <Ngevd> In the UK it varies place to place
17:16:34 <itidus21> something like that.. i dunno all the state by state differences
17:16:40 <Ngevd> The system I used (which is one of the least common) is:
17:16:48 <Ngevd> R + 1-4 = First School
17:16:57 <Ngevd> 5-8 = middle school
17:17:03 <itidus21> next what happens is people either go on to a degree at a University, or a diploma at a TAFE
17:17:05 <Ngevd> 9 - 11 = High school
17:17:18 <Ngevd> 12 - 13 = 6th form college / high school
17:17:21 <itidus21> and from the diploma it can sometimes lead into a degree at a university
17:17:39 <itidus21> tafe is more hands on, much cheaper
17:17:39 <Ngevd> Beyond, uni
17:18:35 <itidus21> although its cheaper, tafe can sometimes provide a richer education :D
17:18:54 <itidus21> its very cool really
17:19:05 -!- Klisz has joined.
17:19:27 <itidus21> its sort of the left-wing side of tertiary
17:20:57 -!- Gregor has set topic: #esoteric is closed to Americans for SOPA blackout day | Hey, American, I saw you talking, SHUT UP | http://codu.org/logs/_esoteric/.
17:21:09 -!- Taneb has joined.
17:21:47 <itidus21> i learned data structures at tafe.. and then when i went to uni i got hd cos my first teacher was really good
17:22:29 <itidus21> he drew it all on the whiteboard as boxes and arrows
17:22:42 -!- werni has left ("Verlassend").
17:23:41 <itidus21> and at uni, my teacher of computer organization and operating systems was cool but those classes were too tough for me.
17:24:06 <itidus21> could be that i was very distracted in life at the time
17:25:04 <itidus21> those were the only 2 classes which felt like serious CS.. in comp org we had to write an assembler or a linker for one assignment
17:25:22 -!- Ngevd has quit (Ping timeout: 252 seconds).
17:25:31 <itidus21> my thing wouldn't compile for him.. was kinda distressing
17:26:03 <itidus21> and i remember caches were too much for me
17:26:47 <itidus21> how complex could a cache possibly be. i would have thought beforehand
17:29:18 <Taneb> I think I have shape-taste synesthasia
17:29:56 <itidus21> wow!
17:30:00 <itidus21> really?
17:30:29 <Taneb> Maybe
17:30:31 <Taneb> I can't be sure
17:30:39 <Taneb> But fizzy water tastes round
17:30:40 <itidus21> heh
17:30:51 <Taneb> Strawberries taste like stars
17:32:20 <itidus21> if you mix them do you get rounded stars?
17:32:28 <Taneb> Never tried
17:32:45 <Taneb> I think I would get a circle and a star on-top of eachother
17:32:51 <Taneb> Like captain America's shield?
17:32:56 <Gregor> I think if you mix strawberries and sparkling water you're most likely to get another taste of your last meal.
17:33:11 <itidus21> Taneb: ah i get it :)
17:33:21 <itidus21> a star enclosed by a circle
17:33:39 <Taneb> But yeah, different brands of fizzy water taste different
17:33:54 <Taneb> Tesco Value is more... flat? than Buxton's
17:34:08 <itidus21> oh they're 3d?
17:34:12 <Taneb> I think they're 3D for some things
17:34:32 <itidus21> ahh
17:34:46 <itidus21> variable d
17:34:57 <kallisti> Taneb: what does bacon taste like
17:35:08 <Taneb> Don't really eat much bacon
17:36:07 <kallisti> I bet it tastes like a Great rhombidodecahedron
17:37:56 <kallisti> or maybe a nonconvex great rhombicosidodecahedron
17:38:22 <Taneb> I also get headaches when I see sine curves
17:38:33 <kallisti> wat
17:38:48 <kallisti> http://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Sine_and_Cosine.svg/400px-Sine_and_Cosine.svg.png
17:39:07 <kallisti> Taneb: click it. do it.
17:39:31 <Taneb> The background helps prevent them
17:39:47 <Taneb> I don't really get serious headaches at all
17:44:10 -!- erkin has joined.
17:53:36 -!- sebbu has joined.
17:53:37 -!- sebbu has quit (Changing host).
17:53:37 -!- sebbu has joined.
17:54:40 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.88 [Firefox 9.0.1/20111220165912]).
17:57:05 -!- Vorpal has joined.
18:07:16 -!- ais523 has joined.
18:10:16 -!- erkin has left ("May your dreams last longer than your night.").
18:14:16 -!- Taneb has quit (Ping timeout: 240 seconds).
18:30:03 -!- Ngevd has joined.
18:32:40 -!- azaq23 has joined.
18:32:51 -!- azaq23 has quit (Max SendQ exceeded).
18:33:28 -!- azaq23 has joined.
18:41:59 <Ngevd> I think Bit is a LBA
18:42:34 -!- Phantom_Hoover has joined.
18:42:39 -!- Phantom_Hoover has quit (Changing host).
18:42:39 -!- Phantom_Hoover has joined.
18:50:04 -!- kallisti has quit (Ping timeout: 255 seconds).
19:12:11 <fizzie> Hey, it's the snowtree season here finally. It's been really unsnowtreey so far.
19:17:45 -!- cheater has quit (Ping timeout: 276 seconds).
19:25:57 <ais523> <kerio> ais523: btw, i found another two ssh fanboys :D
19:26:38 <ais523> oh dear
19:32:59 <fizzie> http://users.ics.tkk.fi/htkallas/snowtree.jpg <- snowtree season.
19:33:52 -!- Ngevd has quit (Ping timeout: 252 seconds).
19:38:20 <fizzie> What's an "ssh fanboy" like? And is it related to the protocol, or the company, or some implementation?
19:39:50 <ais523> fizzie: the entire ssh-related ecosystem, I think
19:40:10 <ais523> and people who, say, remove all methods but ssh of accessing a public AceHack server
19:40:39 <fizzie> Ah.
19:41:02 <fizzie> Well, it's important that nethack sessions stay safe from prying eyes.
19:41:24 <fizzie> Does it do support SSH? I didn't think e.g. NAO did.
19:41:29 <ais523> NAO doesn't
19:41:40 <ais523> acehack.eu (the server in question) supports only ssh; acehack.us supports both ssh and telnet
19:42:55 <fizzie> It is not a bad idea to do both, I've been in places with outgoing telnet blocked.
19:46:16 <ais523> indeed
19:46:30 <ais523> but having telnet on your server and then removing it because you're an ssh fanboy is a symptom of ssh fanboyism
19:47:26 <ais523> suggesting that every program that defines a network access protocol should base it on ssh is an even stronger one
19:48:33 <fizzie> I was imagining people camped outside SSH Communications's office on the off chance they might get to see a glance of Tatu Ylönen.
19:49:53 <ais523> heh
19:51:10 -!- FireFly has quit (Changing host).
19:52:55 <itidus21> pondering about I/O. it is perhaps about inter-system communication. . o O ( must system a must modify itself to handle input from system b? ) or perhaps special systems exist to provide a common interface between systems
19:53:10 <itidus21> i think i overused the word systems
19:54:34 <itidus21> im super confused. back to SSH
19:58:30 -!- FireFly has quit (Quit: ZNC - http://znc.in).
20:44:41 -!- monqy has joined.
20:50:21 -!- quintopia has quit (Remote host closed the connection).
21:07:09 -!- kallisti has joined.
21:07:09 -!- kallisti has quit (Changing host).
21:07:09 -!- kallisti has joined.
21:11:01 -!- kallisti_ has joined.
21:13:56 -!- kallisti_ has quit (Client Quit).
21:22:40 -!- GreaseMonkey has joined.
21:31:06 <kallisti> Forth is a structured, imperative, reflective, concatenative, extensible, stack-based computer programming language and programming environment.
21:31:14 <kallisti> concatenative, eh?
21:31:51 <kallisti> I wonder if Haskell is listed as concatenative.
21:31:59 <kallisti> it seems to fit the definition
21:34:53 -!- Frooxius has joined.
21:49:12 -!- augur has quit (Ping timeout: 240 seconds).
21:52:12 <Sgeo> I can't tell if this is part of the SOPA blackout or not
21:52:12 <Sgeo> http://www.stationv3.com/d/20120118.html
21:52:39 <Sgeo> I can only assume so
21:52:43 <Sgeo> Although not much of a blackout
21:53:59 -!- augur has joined.
21:58:58 -!- Jafet has quit (Quit: Leaving.).
22:06:37 <fizzie> Silence in the Darkness of.
22:14:06 -!- GreaseMonkey has quit (Remote host closed the connection).
22:15:51 -!- cswords__ has joined.
22:17:01 -!- GreaseMonkey has joined.
22:17:01 -!- GreaseMonkey has quit (Changing host).
22:17:01 -!- GreaseMonkey has joined.
22:18:45 -!- Phantom_Hoover has quit (Quit: Leaving).
22:19:35 -!- cswords_ has quit (Ping timeout: 252 seconds).
22:21:21 -!- aloril has quit (Ping timeout: 244 seconds).
22:26:10 -!- Vorpal has quit (Read error: Operation timed out).
22:29:35 <kallisti> it would be cool if you could overwrite free variables in Haskell.
22:29:51 <kallisti> so then a closure basically becomes a kind of record structure.
22:29:58 <Sgeo> > let a = 5 in let a = 6 in a
22:29:59 <lambdabot> 6
22:30:15 <kallisti> that's not quite what I meant
22:30:37 <kallisti> basically something like implicit parameters.
22:31:58 -!- Phantom_Hoover has joined.
22:33:35 -!- aloril has joined.
22:38:41 -!- roper has quit (Quit: Abandonando).
22:39:53 -!- oerjan has joined.
22:44:23 -!- Patashu has joined.
22:47:44 <oerjan> <kallisti> what things can const repsent besides a constant function and church encoded true.
22:48:06 <oerjan> church encoded any argumentless first constructor of two...
22:48:09 <oerjan> e.g. Nothing
22:48:29 <oerjan> or []
22:49:28 <kallisti> oerjan: makes sense.
22:52:42 <olsner> neither the question or the answer makes sense to me, but whatever floats your respective boats
22:53:19 <oerjan> olsner: when representing algebraic datatypes in pure lambda calculus, you use church encoding
22:53:48 <olsner> yes, I'm with you thus far
22:54:10 -!- Phantom_Hoover has quit (Quit: Leaving).
22:54:12 * oerjan suddenly realizes he cannot lookup which variant is which on wikipedia
22:54:54 <itidus21> it's best if you don't cheat and look up a wiki mirror
22:55:01 <itidus21> :P
22:55:12 <itidus21> you will have more fun that way
22:55:32 <olsner> haven't you already disabled javascript in wikipedia's site-specific preferences in your browser?
22:56:12 <oerjan> well there are two variants, one which implements constructors shallowly and one which does a full deep fold over the entire data structure. i think church is the latter. (only that makes sense for church numerals, anyway)
22:56:17 <olsner> you're, like... SOPA blackout noobs :)
22:56:57 <oerjan> but for argumentless constructors there is no difference.
22:56:59 <ais523> olsner: I have JS disabled for most sites but enabled for Wikipedia
22:57:06 <ais523> but then, I haven't needed to look something up there today
22:58:02 <Sgeo> ?banner=none
22:58:03 <lambdabot> Unknown command, try @list
22:58:05 <Sgeo> At the end of any URL
22:58:08 <Sgeo> (almost)
22:58:25 <oerjan> in any case a data structure with n constructors is implemented as a function taking n arguments, one for each constructor. and if the constructor no. i to be used itself takes no arguments, the function just returns the ith argument.
22:59:10 <olsner> hmm, doesn't look like the difference has a specific name ... wikipedia just give the example of coding a list as a church pair or as a right fold
22:59:26 <oerjan> which means that all of True (well assuming that's first, which isn't the case in haskell but makes sense for if-then-else), Nothing and [] get implemented as \x y -> y, i.e. const
22:59:57 <oerjan> olsner: hm i thought i saw a different name once
23:00:38 <olsner> http://en.wikipedia.org/wiki/Mogensen–Scott_encoding perhaps?
23:01:32 <oerjan> with full folding, a list l becomes implemented as \nil cons -> foldr cons nil l, but shallowly (x:xs) instead becomes \nil cons -> cons x xs
23:01:42 <oerjan> olsner: rings a bell
23:02:37 <olsner> too tired/lazy to figure out if that page describes something like a generalization of folds or is just a different church(ish) encoding
23:04:17 <oerjan> wut
23:05:32 <oerjan> (that was to ?banner=none)
23:06:45 -!- Ngevd has joined.
23:07:20 <Ngevd> Hello!
23:07:20 <Ngevd> kallisti, I've been thinking about Portal Chess
23:07:32 * oerjan decides to use the cheat so he can see today's page
23:07:33 <Ngevd> White's DCannon opening isn't worth it
23:08:17 <oerjan> i suppose a blackout which geeks can avoid still hits basically all _intended_ targets :P
23:08:48 <ais523> oerjan: indeed
23:08:52 <Ngevd> oerjan, is there an easier way to do it than blocking Javascript for the site?
23:09:14 <oerjan> Ngevd: <Sgeo> ?banner=none <Sgeo> At the end of any URL <Sgeo> (almost)
23:09:24 -!- aloril has quit (Ping timeout: 244 seconds).
23:09:24 <Ngevd> Hmm
23:10:14 <fizzie> Or the mobile site.
23:10:34 <fizzie> It's got a 'm.' somewhere in the URL.
23:11:05 <fizzie> en.m.wikipedia.org, I think.
23:11:12 <kallisti> Ngevd: yes indeed I realized that as well.
23:11:15 <fizzie> Of course it looks a bit different.
23:11:35 <kallisti> Ngevd: well
23:11:38 <kallisti> Ngevd: kind of
23:11:42 <kallisti> it's not worth it to capture the pawn
23:11:43 <kallisti> however
23:11:48 <kallisti> it blocks in the arrow
23:11:54 <kallisti> unless you move the pawn in front of the portal
23:11:57 <kallisti> which I guess is fine.
23:12:14 -!- Madoka-Kaname has joined.
23:16:08 <Ngevd> What do Prisms do?
23:17:01 -!- ais523 has quit (Remote host closed the connection).
23:18:54 <Ngevd> kallisti: ^^^
23:21:16 -!- kallisti has quit (Read error: Connection reset by peer).
23:21:53 -!- aloril has joined.
23:21:57 -!- kallisti has joined.
23:25:26 <Ngevd> kallisti, what do prisms do?
23:25:56 <Ngevd> @ping
23:25:57 <lambdabot> pong
23:27:17 <kallisti> Ngevd: they're directionless arrows. when a /friendly/ projectile comes into contact with a prism the owner can choose which direction the projectile redirects.
23:27:23 <kallisti> from that point the projectile is "focused"
23:27:35 <kallisti> and will capture any arrows it crosses.
23:28:01 <kallisti> however, enemy projectiles will capture prisms. so I did lie previously, there is a concept of ownership of projectiles.
23:28:04 <kallisti> but only for prisms.
23:28:16 <kallisti> currently that's the... best idea I have for a queen piece. I don't know how I feel about it.
23:30:06 <Ngevd> Here's a quick, dodgily timed animation about my thoughts of the DCannon headshot-across-the-map gambit: http://i1239.photobucket.com/albums/ff508/Taneb/pchesslhcgambit-1.gif
23:30:43 <kallisti> Ngevd: yes
23:30:45 <kallisti> that's what would happen
23:30:48 -!- Ngevd has quit (Read error: Connection reset by peer).
23:31:16 -!- Ngevd has joined.
23:31:30 <kallisti> I didn't think it through earlier. however that's a good opening move for other reasons. it gives you a fair degree of map control. you can place an arrow within the cannons path and gain a better angle
23:31:52 <kallisti> just don't capture the pawn. and be ready to defend against your opponent mirroring you
23:32:13 <Ngevd> Here's a quick, dodgily timed animation about my thoughts of the DCannon headshot-across-the-map gambit: http://i1239.photobucket.com/albums/ff508/Taneb/pchesslhcgambit-1.gif
23:33:32 <Sgeo> DCannon?
23:33:37 <oerjan> best gambit name
23:33:39 <Sgeo> Oh, mixed up where I was
23:33:46 <Sgeo> Thought I was in #MSPA
23:34:03 <Ngevd> I think Portal Chess is quite balanced
23:34:03 <Ngevd> The Prisms need work, though
23:34:03 <Ngevd> Perhaps they split projectiles?
23:35:59 <Ngevd> An easy mistake to make, Sgeo
23:36:02 <kallisti> 18:29 < Ngevd> Here's a quick, dodgily timed animation about my thoughts of the DCannon headshot-across-the-map gambit:
23:36:05 <kallisti> http://i1239.photobucket.com/albums/ff508/Taneb/pchesslhcgambit-1.gif
23:36:08 <kallisti> 18:30 < kallisti> Ngevd: yes
23:36:10 <kallisti> 18:30 < kallisti> that's what would happen
23:36:26 <kallisti> Ngevd: split them how?
23:36:26 <Ngevd> I lagged out, didn't know what I had sent
23:36:37 <kallisti> Ngevd: you mean give them a direction and then have them split at an angle of some kind?
23:36:53 <kallisti> well
23:36:54 <Ngevd> Yes?
23:37:05 <kallisti> the main reason I made prisms kind of gross in terms of rules is because
23:37:06 <kallisti> currently
23:37:11 <kallisti> projectiles cannot kill arrows.
23:37:25 <kallisti> without that prism rule.
23:37:36 <kallisti> this makes prisms an important piece... at the same time
23:37:42 -!- Ngevd has quit (Read error: Connection reset by peer).
23:37:51 <kallisti> being vulnerable to enemy projectiles makes it easy and costly to lose
23:37:52 -!- Ngevd has joined.
23:37:58 <kallisti> it very much works like a queen.
23:38:06 <kallisti> er..... see logs. :P
23:38:15 <kallisti> you just pull up stalker mode since you're dc'ing so much.
23:38:18 <kallisti> +should
23:38:40 -!- Ngevd has quit (Read error: Connection reset by peer).
23:46:43 * kallisti thinks Data.List should have a withWords that preserves whitespace.
23:47:23 <kallisti> rip Ngevd
23:51:13 <oerjan> groupBy ((==)`on`isSPace) "testing \t\n1 2 \n3\n"
23:51:19 <oerjan> > groupBy ((==)`on`isSPace) "testing \t\n1 2 \n3\n"
23:51:20 <lambdabot> Not in scope: `isSPace'
23:51:24 <oerjan> eep
23:51:28 <oerjan> > groupBy ((==)`on`isSpace) "testing \t\n1 2 \n3\n"
23:51:29 <lambdabot> ["testing"," \t\n","1"," ","2"," \n","3","\n"]
23:51:59 <kallisti> oerjan: oooooh groupBy
23:52:03 <kallisti> I don't think much about that.
23:52:09 <kallisti> forgot about it.
23:52:26 <kallisti> oerjan: yes that's a possibility, what I was considering though
23:52:36 <kallisti> is that withWords f = unwords . f . words
23:52:36 <kallisti> except
23:52:40 <oerjan> it's a little tricky since you can have space first or not
23:52:42 <kallisti> it preserves whitespace, which unwords does not.
23:52:55 <kallisti> because usually you want to ignore the space
23:53:00 <kallisti> and process the words
23:53:01 <oerjan> kallisti: hm that would require it to preserve each word
23:53:09 <oerjan> that is, total length
23:53:17 <kallisti> it would?
23:53:35 <oerjan> if f changes the length of the list, what then?
23:53:49 <kallisti> er I mean
23:53:56 <kallisti> withWords f = unwords . map f . words
23:53:58 <kallisti> that's better
23:54:02 <oerjan> right
23:54:25 <kallisti> which is a bit more limited
23:54:28 <kallisti> can't do things like:
23:54:34 <kallisti> > unwords . reverse . words $ "what is this I don't even"
23:54:35 <lambdabot> "even don't I this is what"
23:55:22 <kallisti> in that case groupby is probably a better solution. you could add some kind of rule so that you can always determine which elements are spaces and which aren't
23:55:31 <kallisti> by adding an empty string at the beginning on one of the cases.
2012-01-19
00:01:37 <oerjan> <Taneb> I also get headaches when I see sine curves <-- needs an experiment to see if he sees sine curves when hungover
00:05:36 <oerjan> <kallisti> I wonder if Haskell is listed as concatenative.
00:05:39 <oerjan> wat.
00:06:04 <kallisti> ?
00:06:25 <kallisti> A concatenative programming language is a point-free programming language in which all expressions denote functions and the juxtaposition of expressions denotes function composition.[1] The combination of a compositional semantics with a syntax that mirrors such a semantics makes concatenative languages highly amenable to algebraic manipulation.[2]
00:06:40 <kallisti> it's at least partially concatenative
00:06:46 <kallisti> or allows the style naturally.
00:06:48 <oerjan> juxtaposition does _not_ denote function composition in haskell.
00:06:56 <kallisti> well, yes.
00:07:03 <monqy> what does partially concatenative mean
00:07:12 <kallisti> monqy: ...
00:07:15 <kallisti> you are bad at these
00:07:17 <kallisti> human terms
00:07:20 <monqy> hi
00:07:28 <kallisti> monqy: are you a robot?
00:07:29 <oerjan> admittedly . chains are common, but still.
00:07:33 <monqy> yes totally
00:07:40 <monqy> but if you're just going to make up what partially concatenative means
00:07:50 <monqy> then yes haskell is so partially concatenative it blows my mind
00:07:53 <monqy> my
00:07:54 <monqy> robot
00:07:54 <monqy> mind
00:08:36 <kallisti> monqy: meaning that it doesn't fit the definition exactly but the definition describes a natural capability of the language.
00:09:03 <kallisti> in any case juxtaposition is a weird requirement. what makes . different from juxtaposition?
00:09:12 <monqy> the .
00:09:12 <kallisti> concrete syntax
00:09:20 <kallisti> is the only difference
00:29:45 <kallisti> .....dude
00:29:47 <kallisti> Diablo 3
00:29:49 <kallisti> is going to be so good.
00:29:50 <oerjan> reinforced concrete syntax
00:32:36 -!- cheater has joined.
00:33:29 -!- azaq23 has quit (Read error: Connection reset by peer).
01:11:32 <itidus21> diablo is a bit of fun
01:11:53 <itidus21> i think when it comes down to it it's all about fun
01:22:07 <kallisti> itidus21: depends on what you're looking for
01:22:11 <kallisti> there are several things to find in games.
01:22:50 <itidus21> my brother and i got a wii about a week ago
01:22:51 <kallisti> socializing, a waste of time, this amorphous "fun" thing you describe, or challenge.
01:23:20 <kallisti> certainly fun is an important aspect.
01:23:41 <itidus21> it was his idea.. one night "hey ive got this crazy idea.. do you wanna put in some money and we'll get a wii?"
01:23:45 <kallisti> though what makes something fun isn't quite clear and varies by person and what they're looking for.
01:23:58 <kallisti> itidus21: his?
01:24:15 <monqy> 17:22:42 < itidus21> my brother and i got a wii about a week ago
01:24:27 <kallisti> oh
01:24:35 * kallisti Vorpal.
01:24:42 <itidus21> the honeymoon period of owning a wii is pretty special i admit
01:24:51 <itidus21> my first ever motion controller
01:24:52 <kallisti> you know what's the best?
01:24:59 <kallisti> desktop gaming.
01:25:11 <monqy> wahts game
01:25:12 <itidus21> ahhh
01:25:29 <kallisti> it's like.... you could buy this specialize piece of computer equipment with arbitrary limits and a non-general-purpose operating system.
01:25:32 <kallisti> or
01:25:40 <kallisti> you could just buy that thing that you were going to get anyway, and just put some better stuff in it.
01:25:50 <itidus21> monqy: good question.. may the SOPA leave you in peace
01:26:19 <itidus21> kallisti: ah he hacked it too and got a usb loader
01:26:28 <kallisti> monqy: hi monqy invent a portal chess piece I want to change the queen piece.
01:27:42 <kallisti> oh and: while changing the queen piece, also counterbalance the affect that without the previous queen piece there is no way to capture the arrows.
01:27:46 <itidus21> the sad truth i discovered is that most games according to the reviews have poor control
01:28:07 <kallisti> the only reason I'd want a wii is to own super smash bros. brawl
01:28:17 <itidus21> so its a matter of finding the cream of the crop
01:28:47 <kallisti> no one in there right mind plays brawl with a wiimote
01:28:57 <kallisti> *their
01:29:35 <itidus21> but.. nintendo peripherals are expensive :-s
01:29:54 * kallisti owns a wireless gamecube controller
01:30:01 <kallisti> but no wii
01:30:13 <itidus21> it was $138 AUD with mario kart
01:30:49 <itidus21> with 1 wiimote/nunchaku
01:32:19 <kallisti> one net thing about the wiimote is that it doubles as a traditional old school controller
01:32:24 <kallisti> *neatt
01:33:48 <itidus21> anyway.. im sidetracking
01:34:04 <kallisti> monqy: what is partially monqy
01:34:07 <monqy> me
01:34:16 <itidus21> i think good thing about diablo 2 (only one ive played) is the fun of tapping a button and watching your character bash someone
01:34:33 <kallisti> um
01:34:44 <kallisti> isn't that a pretty common feature of games?
01:35:19 <itidus21> what would gaming be without it
01:35:43 <itidus21> hmm
01:35:50 <itidus21> but thats where you guys come in...
01:36:02 <itidus21> you can make games more interesting through use of mathematics
01:36:08 <kallisti> nah
01:36:10 <kallisti> just add portals
01:36:12 <kallisti> everything is better
01:36:19 <itidus21> portals requires maths
01:36:22 <kallisti> nah
01:36:26 <kallisti> just portals man
01:36:29 <kallisti> portals need portals
01:36:38 <itidus21> ohh
01:36:42 <itidus21> i get ya nopw
01:36:43 <itidus21> now
01:36:52 * kallisti would probably be a pretty decent game designer.
01:37:47 <itidus21> basically, the " tapping a button and watching your character bash someone" mechanic is understandable in mathematical ways
01:38:03 <kallisti> yes
01:38:12 <kallisti> but no one cares enough to bother.
01:38:17 <itidus21> at that point it is possible to break it down and do magic
01:38:30 <kallisti> itidus21: you should watch pro gamers play starcraft2
01:40:35 <itidus21> i uhhh
01:40:37 <itidus21> i uhhh
01:40:51 <kallisti> itidus21: http://www.youtube.com/watch?v=Ncb7lHNWbnU
01:41:36 <itidus21> in this case i meant that the design of the game can be changed through analysis
01:41:52 <itidus21> but i suppose that a player can strategize around a simple button press through analysis also
01:42:57 <itidus21> ill look at it soon.. just gonna let some torrents finish first since i have firefox shut
01:44:07 <itidus21> i don't really understand stuff as well as i would like to
01:44:41 <itidus21> like the point where a game ceases to be an exercize in probability or algebra, and becomes fun
01:44:50 <itidus21> it baffles me
01:45:39 <kallisti> ?
01:45:58 <kallisti> it starts as fun
01:46:08 <kallisti> and then you overthink it into an exercise of probability or algebra.
01:46:22 <monqy> you've clearly been playing the wrong games, kallisti
01:46:54 <kallisti> itidus21: I wasn't even saying "hey dude analyze the shit out of starcraft 2 with maths"
01:47:08 <kallisti> I was saying: hey dude, watch this, it's exciting and entertaining.
01:56:41 <itidus21> back
01:56:45 <itidus21> i see.. my words didn't make sense
01:56:50 <itidus21> i mean...
01:57:10 <itidus21> if you begin with a piece of paper and start writing down probabilities and algebras
01:57:26 <itidus21> at what point does that become a fun game, i wonder
01:57:32 -!- Sgeo has quit (Ping timeout: 240 seconds).
01:57:45 <monqy> have you tried
01:58:04 <itidus21> i don't suppose game design actually works that way
01:58:22 <itidus21> no i havent tried :P
01:59:06 <itidus21> are games rules?
01:59:19 <itidus21> perhaps what i should say then is at what point does a set of rules become fun
01:59:34 -!- Sgeo has joined.
02:00:45 <itidus21> hmm definition of fun is slippery
02:01:05 <kallisti> most games have rules, yes.
02:01:07 <kallisti> that's part of it.
02:01:40 <itidus21> one could go so far as to say that maybe games are not actually fun but players only pretend they are fun
02:02:22 <kallisti> no
02:02:27 <kallisti> why would they pretend to be having fun?
02:02:46 <monqy> to look cool
02:02:46 <kallisti> I guess people are complicated.
02:03:42 <itidus21> i guess what i am saying is that i am interested in real fun
02:04:00 <itidus21> not a contrived thing
02:04:40 <itidus21> another question is whether games are fun at first, and then an annoying addiction
02:07:05 * oerjan has been playing tatham's lightup puzzle for months
02:07:32 <itidus21> i am projecting really
02:07:43 <kallisti> itidus21: that is how WoW works
02:08:35 <oerjan> like every similar kind of puzzle it is pretty easy to rethink as a special case of NP-complete graph problems.
02:09:55 <oerjan> usually you can get a long way by just looking at local conditions, but occasionally you get implications going around a large part of the board.
02:10:12 -!- Sgeo has quit (Ping timeout: 240 seconds).
02:10:18 <itidus21> when i was growing up i was kind of naive about how games actually operated
02:10:31 <itidus21> in hindsight i think i overestimated how deep they are
02:11:35 <itidus21> i suppose that everyone must have an idealized view of the field they go into before they get there
02:11:52 <monqy> oh?
02:11:59 <oerjan> which i think means it's sort of related to Sat(2) clauses. and then there are the particularly hard ones, where not even following a chain of implications gives you the answer, which is suppose corresponds to at least SAT(3).
02:12:23 <oerjan> *i
02:13:00 * kallisti had no idea what computer science was like
02:13:14 -!- Sgeo has joined.
02:13:37 <monqy> whats a computer
02:13:51 <itidus21> someone who computes
02:14:05 <itidus21> just kidding
02:14:11 <oerjan> monqy: just add ?banner=none hth
02:14:27 <itidus21> a computer is an abacus
02:14:44 <itidus21> :-??
02:14:53 <itidus21> an abacus will soon attain sentience
02:15:04 <itidus21> it just has to have a power source
02:15:27 <itidus21> just like a car will soon attain sentience
02:15:28 <oerjan> in _principle_ you can make a purely mechanical computer.
02:16:05 <oerjan> there's this tic-tac-toe solver made by tinkertoy parts somewhere
02:16:53 <oerjan> but without electronical communication it becomes horribly slow
02:17:35 <oerjan> even the brain uses electricity, i think
02:17:48 <oerjan> (although chemistry as well)
02:18:48 <kmc> neural signaling is much slower than electronic computers, though
02:19:03 <itidus21> my first big let down in gaming was discovering that a combo in street fighter 2 was nothing more than a set of keypresses which temporarily froze the opponent
02:19:13 <kallisti> monqy: you seem to be very confused by simple words.
02:19:23 <oerjan> and because electronics is so much more efficient, anything else becomes a novelty show.
02:19:25 <kmc> something like 100 m/s
02:19:35 <oerjan> kmc: yes but still much faster than rolling balls :P
02:20:03 <monqy> kallisti: what's a simple
02:20:03 <kmc> and they fire at less than 1 KHz rate
02:20:10 <itidus21> but it's not clear why the speed of computation should bring about conciousness
02:20:34 <oerjan> <kallisti> why would they pretend to be having fun? <-- because they cannot find a way to do what they _really_ want to be doing. at least that's my excuse. perhaps itidus21's as well.
02:21:15 <itidus21> i have heard that complaint against hypnosis states that it may be just a sense of social obligation to act hypnotized
02:22:10 * oerjan should probably mention babbage lest someone thinks i'm forgetting him
02:22:56 <itidus21> tv is non interactive, and yet people like to watch games
02:22:57 <oerjan> if electronics had been impossible, then perhaps babbage's computer would eventually have made economic sense
02:23:10 <itidus21> having said this, colliseum is not particularly interactive
02:23:14 <kmc> i like http://www.blikstein.com/paulo/projects/project_water.html
02:23:15 <itidus21> people like to attend
02:23:59 <itidus21> now what i am talking about is whether spectating a game can be as fun as playing
02:24:41 <oerjan> <kallisti> monqy: you seem to be very confused by simple words. <-- he's been disconnected from half his brain and cannot understand our instructions for getting back to it.
02:24:56 <kmc> "The Water Integrator was an early analog computer built in the Soviet Union in 1928.[citation needed] It functioned by careful manipulation of water through a room full of interconnected pipes and pumps. The water level in various chambers (with precision to fractions of a millimeter) represented stored numbers, and the rate of flow between them represented mathematical operations. This machine was capable of solving non-homogeneous dif
02:24:56 <kmc> ferential equations."
02:25:05 <kmc> also http://en.wikipedia.org/wiki/MONIAC_Computer
02:25:17 <kmc> models the national economy of the UK by pumping water around
02:25:45 <itidus21> lol kmc...
02:25:52 <itidus21> and I get reminded of SOPA
02:25:59 <monqy> thanks wikiped
02:26:02 <itidus21> i know theres workarounds
02:26:08 <itidus21> but.. i like the blackout
02:26:18 <monqy> it's comforting
02:26:26 <oerjan> <itidus21> but it's not clear why the speed of computation should bring about conciousness <-- maybe not, but imagine if humans thought a million times slower, they wouldn't get anything done and would be sitting ducks for predators
02:26:55 <itidus21> oerjan: maybe there is some other level to matter we are not really thinking about
02:26:55 <oerjan> so they wouldn't live long enough to develop it
02:27:13 <itidus21> oerjan: like we think about it as parts and wholes..
02:27:18 <itidus21> always with the parts and wholes
02:27:32 <itidus21> and we're never going to find conciousness amid parts and wholes
02:27:59 <oerjan> itidus21: i saw on wikipedia this scifi novel "The Dragon's Egg" about a life form on a neutron star, based on nuclear physics rather than chemistry. and _they_ thought a million times _faster_ than humans.
02:28:13 <oerjan> *about this
02:28:14 <kmc> that's pretty cool
02:28:15 <itidus21> also i should mention.... conciousness would come under threat if we ever figured it out
02:28:26 <itidus21> we don't WANT to figure it out...it .. would be very BAD
02:28:29 <itidus21> :D
02:28:36 <kallisti> I think it would be good
02:29:02 <kallisti> or... different
02:29:11 <oerjan> so the human explorers saw them develop civilization to a level past their own in a matter of days
02:29:44 <itidus21> what exactly do you think the military would do with this knowledge?
02:29:59 <oerjan> NB: SPOILER ABOVE XD
02:30:10 <itidus21> it would be exceedingly bad if science ever figured out conciousness
02:30:44 <itidus21> depends i guess
02:30:49 <kallisti> oerjan: they would still be fundamentally constrained by limited resources
02:30:55 <kallisti> even if they could perhaps operate more efficiently
02:30:56 <itidus21> nuclear bombs are great so long as noone uses them
02:31:06 <kallisti> and even that is an open question. consciousness is a lot of work.
02:31:12 <kmc> yeah the CIA tried to figure out mind control
02:31:19 <kmc> by kidnapping people and experimenting on them
02:31:42 <kmc> but they probably didn't have the technology to do anything useful
02:31:50 <itidus21> ah yes MKULTRA
02:31:52 <itidus21> and such
02:32:27 <itidus21> i actually have a book on cia mind control stuff that i haven't read
02:32:33 <kallisti> I think in order to be conscious, computers would have to employ many of the tricks we do. approximations on input data and pre-existing assumptions.
02:32:42 <itidus21> but i think its probably written to sell books
02:32:46 <itidus21> not to spread truths
02:33:19 <oerjan> kallisti: well they were also just about a millimeter big :P
02:33:37 <kallisti> oh I missed a reference apparently
02:35:34 <oerjan> and then there is eliezer yudkowski's story where humanity happens to find themselves living inside a simulation made by beings _several_ million times slower than humans
02:37:12 -!- Sgeo has quit (Ping timeout: 240 seconds).
02:37:44 * kallisti has been teaching someone Haskell.
02:37:47 <kallisti> it's been going pretty well
02:37:55 <kallisti> this is the fourth person now.
02:38:11 <oerjan> i can hear elliott screaming in my mind
02:38:17 <monqy> me too
02:38:22 <kmc> how do you teach them
02:38:34 -!- Sgeo has joined.
02:39:24 <oerjan> itidus21: that's what THEY have programmed you to think
02:39:27 <kallisti> the first one went well, the second one kind of stopped happening, the third one didn't work at ALL (guy was basically too thick-headed to get anywhere), and the fourth one is going pretty well.
02:39:33 * oerjan crawls back under rock
02:39:39 <kallisti> kmc: I bombard them with information for hours, repeatedly until it makes sense.
02:39:48 <kallisti> kmc: I'm a bad teacher.
02:40:00 <kmc> do you make them read anything?
02:40:08 <kallisti> I suggest things to read.
02:40:14 <kmc> do they read them?
02:40:24 <kallisti> the guy I'm helping right now has not, I think.
02:40:36 <kallisti> he's just been fucking around with list functions and stuff and learning that way.
02:40:40 <kmc> my experience in #haskell is that a decent fraction of people will never read anything unless you refuse to help them otherwise
02:41:01 -!- Frooxius has quit (Quit: ChatZilla 0.9.88-rdmsoft [XULRunner 1.9.0.17/2009122204]).
02:41:13 <kallisti> he gets partial application now. I explained algebraic data types a bit. I think he understands pattern matching but he appears to be unable to write the code for map so....
02:41:16 <kallisti> something must not be understood
02:43:20 <kallisti> anyway learning Haskell is something you have to do slowly. and teaching it has to be done patiently
02:43:26 <kallisti> so I assume gradually over time things will sink in.
02:43:39 <kallisti> simple things like precedence of operators and function application seems to throw him off, no matter how many times I explain how it works.
02:44:25 <kallisti> third attempt at teaching was TERRIBLE
02:44:29 <kallisti> that guy is basically lost to C++
02:46:22 <itidus21> the trick with haskell is that mathematics has to be learned simultaneously
02:46:31 <kallisti> eh, not really.
02:46:38 * kallisti hasn't learned much math at all while learning Haskell.
02:46:52 <itidus21> but did you go in knowing much?
02:46:57 <kallisti> just recently some very basic category theory.
02:47:02 <kallisti> itidus21: eh, no. :P
02:47:14 <kallisti> unless you count college-level math.
02:47:19 <kallisti> undergraduate stuff.
02:47:33 <itidus21> in imperative languages all you need to know is sequence, selection, iteration
02:47:34 <monqy> the 1 2 3s
02:47:45 <itidus21> no wonder haskell is trouble
02:47:58 <monqy> itidus no............................................
02:48:19 <kmc> itidus21, i think everything I have seen you say about Haskell is 100% wrong
02:48:46 <itidus21> im not here for the same reasons as anyone else in here
02:48:53 <itidus21> im sort of a misfit
02:49:01 <itidus21> its ok.. not claiming im about to run away, just saying
02:49:21 <itidus21> i came here expecting to find BASIC clones :P
02:49:40 <kmc> i'm not saying you don't belong
02:49:55 <kmc> just wondering why you continue to make claims about Haskell in particular
02:50:07 <kmc> plenty of other stuff to talk about
02:50:07 <itidus21> haskell is esoteric
02:50:19 <monqy> itidus can only make claims about things he both knows the existence of and doesn't know anything about
02:50:34 <kmc> i think there should be an esolang called Haskell
02:50:36 <monqy> he knows haskell exists but he doesn't know anything about it. perfect
02:50:42 <kmc> which has all the properties uninformed people think Haskell has
02:50:56 <itidus21> it is the primary topic of esolangs so one can safely assume it is esoteric >:)
02:51:22 <itidus21> it is the staple language perhaps
02:51:39 <kmc> to do any IO in my Haskell you are required to type in a proof of the Yoneda Lemma
02:51:49 <kmc> also it will memoize all functions
02:52:13 <itidus21> ok i admit its not esoteric, but it is the non-esoteric home base of esoteric languages
02:52:23 <oerjan> to make your haskell, first you must invent a topos in which nothing ever needs to be recalculated
02:52:50 <itidus21> i dont know what happens in your minds when you hear function
02:52:54 <itidus21> that seems to be the key word
02:53:02 <itidus21> whatever happens does not happen for me
02:53:14 <oerjan> itidus21: they're still small bell sound and then we start salivating. or was that with monad.
02:53:20 <kallisti> itidus21: although I am prone to this myself, it is oftentimes better to not make claims about things you don't understand in the slightest degree.
02:53:30 <itidus21> for me i see 2 things..... i see (+ 2 3) ... i see add(2,3)
02:54:02 <oerjan> <itidus21> i came here expecting to find BASIC clones :P <-- have you looked at FORTE? :D
02:54:05 <itidus21> i can also vaguely concieve that addition function is a manifold
02:54:39 <itidus21> but, as function means in lambda calculus.. it doesn't seem to fit any of my existing concepts of function
02:54:46 <itidus21> i can see
02:54:55 <kallisti> monqy: the course number for my discrete math class was 1234.
02:55:14 <oerjan> s/they're still/there's this/
02:55:21 <itidus21> (+ (+ 2)) and add(add(2) .. the second one doesn't work at all :-s
02:55:22 <oerjan> how the heck did i mistype that bad
02:55:35 <itidus21> ok they both don't work
02:55:38 <kmc> that's because you have the wrong number of arguments
02:55:47 <monqy> :t (+ (+ 2))
02:55:48 <lambdabot> forall a. (Num a) => (a -> a) -> a -> a
02:55:50 <kallisti> itidus21: unless you have a Num instance for functions of course. :>
02:55:51 <monqy> what now???
02:55:58 <kmc> which lambdabot does
02:55:59 <itidus21> so how to curry 2 + 3
02:56:00 <itidus21> hmm
02:56:03 <itidus21> i got lost
02:56:10 <kallisti> you don't curry 2 + 3
02:56:11 <kmc> itidus21, as ((add 2) 3)
02:56:12 <kallisti> you curry +
02:56:15 <kallisti> oh
02:56:15 <itidus21> ( (+2) 3)
02:56:16 <kallisti> yes, that too :P
02:56:35 <itidus21> i made a mistake .. imaginig it as (+ (+ 2))
02:56:38 <kmc> itidus21, assuming that's Haskell syntax, you're using some special Haskell features there
02:56:53 <kmc> it's easier to understand if you stick to a more regular syntax like scheme
02:57:20 <kmc> (define add (lambda (x) (lambda (y) (+ x y))))
02:57:22 <kmc> ((add 2) 3)
02:57:46 <itidus21> but i get it insisted that lambda has no types
02:57:55 <monqy> e?H
02:58:07 <kmc> there are typed lambda calculi and untyped lambda calculi
02:58:09 <itidus21> the important lambda
02:58:16 <itidus21> the one with the paradox
02:58:17 <monqy> which important lambda
02:58:21 <monqy> which paradox
02:58:33 <kallisti> monqy: pearadox
02:58:36 <itidus21> not really sure
02:58:39 <kmc> pair of docs
02:58:41 <kallisti> pair'a'dox
02:58:46 <kallisti> *docks
02:58:46 <monqy> pear pear pear pear pear
02:58:58 <itidus21> i get told its invalid to use analogies on untyped lambda calc
02:59:18 <kmc> by whom
02:59:27 <itidus21> i dunno.. noone :D
02:59:32 <itidus21> me
02:59:35 -!- kallisti has changed nick to noone.
02:59:36 <kmc> you're not making any sense at all
02:59:36 <noone> sup
02:59:37 <kmc> just so you know
03:00:04 -!- noone has changed nick to Guest70053.
03:00:04 <Guest70053> kmc: itidus21 berates himself with his Haskell wisdom
03:00:09 -!- Guest70053 has changed nick to kallisti.
03:01:29 <itidus21> is it something which just magically makes sense one day like a foreign language?
03:01:38 <kallisti> not magically
03:01:45 <kmc> that's not how foreign languages work either
03:02:05 <kallisti> but it can be difficult to explain how learning works, though it typically happens gradually as you understand small pieces of the whole thing
03:02:11 <itidus21> magic is a troublesome word
03:02:25 <itidus21> lets say, unconciously :D
03:02:33 <kallisti> it's certainly directed effort
03:02:36 <kallisti> to understand something.
03:03:16 <kallisti> but not much
03:03:21 <kallisti> ...or rather
03:03:26 <kallisti> it doesn't necessarily have to be a lot of effort
03:03:33 <itidus21> but some
03:03:33 <kallisti> depending on what you're learning
03:03:35 <itidus21> some :P
03:03:41 <oerjan> itidus21: http://esoteric.voxelperfect.net/wiki/Forte
03:03:51 <Sgeo> Leksah is taking forever to to find out information about packages
03:03:59 <kallisti> learning the basics of Haskell for example was fairly simple. I just leisurely read some material about it and it all pretty much made sense
03:04:05 <kallisti> I did struggle with monads for a bit however.
03:04:10 <Sgeo> Awesome, it's taking over an hour
03:04:31 <itidus21> i remember when i was young the first time i could read a page in a book. it was a sesame street book, something about grover
03:04:42 <kallisti> I honestly don't even know how I learned perl...
03:04:44 <kallisti> osmosis.
03:05:19 <kallisti> I think I just massread documentation and then attempted to write some simple programs.
03:05:34 <kallisti> then referred to documentation when something unexpected happened, repeat.
03:05:37 <kallisti> perl has great documentation.
03:05:37 <itidus21> i think part of learning language is like solving a jigsaw puzzle
03:05:46 <itidus21> s/jigsaw/crossword
03:06:09 <itidus21> one efficiency of language is that one can presume each statement is correct.
03:06:17 <kallisti> whut
03:06:21 <itidus21> and one can infer from this that each word usage in language is correct
03:06:40 <itidus21> like if you are reading a book.. you can infer that the grammar is more or less perfect
03:06:46 <itidus21> that the word usage is more or less perfect
03:06:46 <kallisti> heh
03:06:56 <kallisti> yes if you're new to these things that's a decent approximation
03:06:56 <itidus21> and you just have to figure out why
03:07:13 <kallisti> and certainly program examples in textbooks are most likely going to be correct
03:07:17 <kallisti> though not necessarily optimal
03:07:34 <kallisti> in one sense
03:07:38 <kallisti> there are many senses of optimal.
03:07:43 <kallisti> :>
03:08:08 <kallisti> performance, clarity, elegance, ease of writing, ease of understanding.
03:08:12 <kallisti> for examples
03:08:23 <kallisti> I guess ease of understanding could be clarity actually
03:09:02 <itidus21> in the world there is information.... so there is a challenge of mapping a language to a piece of information
03:09:17 <kallisti> I....
03:09:30 <itidus21> in some cases it is necessary to invent words
03:09:35 <itidus21> or loan them
03:09:48 <kallisti> itidus21: yes I am having trouble mapping your words to pieces of information
03:09:54 <kallisti> they often appear meaningless.
03:10:05 <kallisti> this is indeed a problem I face. :P
03:10:10 <itidus21> like apples exist in the universe as information
03:10:23 <kallisti> deliciousness information.
03:10:37 <itidus21> the burden is on language to find a way to explain them
03:10:55 <itidus21> this world view i am describing i know it isn't a proper one though
03:11:45 <kallisti> yes, improper indeed! obscene displays for scoundrels.
03:12:07 <itidus21> now, that means that someone who is learning a language can assume that the words refer to some information the reader intuitively would understand
03:12:16 <itidus21> at least for non technical writing
03:13:19 <itidus21> like.. The color of the apple is %$%$%.
03:13:44 <itidus21> The color of the grass is %$%$%.
03:14:02 * kallisti sidles on over that way... ---->
03:14:12 <itidus21> so we know that %$%$%. means green
03:14:49 <kallisti> itidus21: what if information is light
03:14:51 <kallisti> and words are like
03:14:52 <kallisti> prisms
03:15:05 <itidus21> anyway i have heard it said that all things are temporary
03:15:11 <oerjan> apple
03:15:17 <oerjan> or not
03:15:23 <oerjan> apple
03:15:24 <kallisti> 3
03:15:25 <kallisti> yes
03:15:45 <itidus21> but, we are guaranteed to be more temporary than the world :D
03:15:50 <kallisti> oerjan: hi fix portal chess
03:16:00 <kallisti> I don't like prisms.
03:16:20 <kallisti> (you should at this point be well-versed in all the rules)
03:16:26 <oerjan> itidus21: hey there are some singularitarians who want to argue that
03:16:34 <oerjan> kallisti: try flexihexadodecahylomorphisms instead, hth
03:16:39 <kallisti> no
03:16:40 <kallisti> nope
03:16:43 <kallisti> nopeah
03:16:52 <kallisti> nople
03:16:53 <itidus21> oerjan: ahhh shit... i think you mentioned this to me.. deja vu
03:16:53 <kallisti> nop
03:17:03 <itidus21> my unconcious plagiarism
03:17:11 <oerjan> best plagiarism
03:17:28 <kallisti> oerjan: what is a better queen unit
03:17:30 <kallisti> for my gam
03:17:45 <kallisti> keeping in mind that, if prisms are removed, there is no way to capture arrows via projectiles.
03:19:06 <oerjan> kallisti: a time fly
03:19:15 <oerjan> it's well known to like arrows
03:19:58 <itidus21> kallisti: i worry you indulge my rants too much
03:20:08 <oerjan> it could, like, stop time in some direction, making arrows vulnerable in the _next_ round
03:20:19 <oerjan> and prevent anything else from moving
03:20:45 <kallisti> ........
03:20:46 <kallisti> I
03:20:48 <kallisti> that
03:20:50 <kallisti> I can't do that.
03:21:00 <itidus21> to put things in perspective.. my doctor today says to me.. isn't it difficult with no income? and.. as you probably heard your mom saw a psychiatrist.. if you want i can get him to see you "i'll definitely think about it"
03:21:03 <kallisti> I do not need to add an entirely new mindfuck element to the game
03:21:34 <oerjan> ok then, another suggestion is the Bore.
03:21:37 <kallisti> I'm looking less for pieces that do cool tricks, and more for pieces that balance out the game as a whole.
03:21:53 <kallisti> the game is somewhat balanced, but I feel something is missing.
03:22:09 <oerjan> if a Bore is next to a piece for two rounds, that piece dies. because it's that boring.
03:22:11 <itidus21> oh i just got another idea
03:22:15 <itidus21> youtube chess
03:22:22 <kallisti> lol
03:22:25 <itidus21> each move... is represented by a video submission
03:22:28 <oerjan> it mustn't move between the rounds, though.
03:22:55 <kallisti> in the first workings of the game I had a piece that could swap places with any other piece
03:22:58 <kallisti> this is probably not very good though
03:24:15 <itidus21> where does the game take place?
03:24:21 <kallisti> on a chess board
03:24:23 <itidus21> like i know chess takes place on a grassy field
03:24:25 <kallisti> the starting configuration is the same as in chess.
03:24:30 <kallisti> ..........
03:24:32 <kallisti> it does?
03:24:36 <itidus21> ya.. definitely grass
03:24:45 <kallisti> uh this game is purely abstract
03:24:46 <kallisti> (like chess)
03:24:49 <itidus21> it couldn't be a desert
03:24:58 <oerjan> the green green grass of doom
03:25:22 <kallisti> oerjan: how much do you know about portal chess, and how interested are you in suggesting new ideas? :?
03:25:54 <kallisti> you must certainly be totally interested
03:26:03 <oerjan> no.
03:26:06 <itidus21> im not good at abstract
03:26:16 <kallisti> oerjan: I'm shocked and offended
03:26:17 <itidus21> my brain just doesn't work that way
03:26:48 <Sgeo> http://z7.comicostrich.com/ Z7 is broken
03:27:00 <itidus21> is it broken in protest?
03:27:00 <oerjan> kallisti: i'm sorry, i'm trying to preserve the little personal space i have left in this world.
03:28:02 <oerjan> which i have discovered, means _not_ letting other people define what i'm supposed to do, and _especially_ not if they're taking it for granted.
03:28:18 <kallisti> ah, I see.
03:28:25 <kallisti> sorry for the intrusion then.
03:28:57 <oerjan> and _especially_ not if they're about to get diagnosed cancer. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
03:29:05 <itidus21> lol
03:29:07 <kallisti> who me?
03:29:11 <oerjan> (the last part hopefully doesn't apply to you.)
03:29:13 * kallisti am great confused.
03:29:27 <itidus21> the cancer thing is how it would lead to guilty obligation to you
03:29:42 <oerjan> itidus21: precisely. which is what happened to me, last friday.
03:29:52 <kallisti> one possible solution to the arrow problem is to make pawns more effective at... normal capture
03:29:56 <itidus21> oh no
03:30:12 <kallisti> so far the only normally capturing units are pawns and kings. :P
03:30:13 <oerjan> and now i cannot bear to see the person again.
03:30:46 <itidus21> oerjan: the ideal solution is email them a screenshot of your desktop
03:30:57 <kallisti> ...
03:31:00 <oerjan> they don't have email.
03:31:01 <itidus21> but theres probably unforseen downsides
03:31:31 <itidus21> ive never actually used the email a chat screenshot solution
03:32:44 <itidus21> but i have thought about it
03:33:08 <itidus21> its a really bad idea
03:33:51 <kallisti> man the bishop is such a good piece in chess.
03:33:56 <kallisti> one of my favorites.
03:34:07 <kallisti> strong piece early and mid game for board control.
03:34:57 <oerjan> kallisti: you know one way would be to make the queen completely like in chess, but somehow ironically the weakest piece.
03:35:17 <kallisti> that would be impressively difficult to accomplish
03:35:23 <kallisti> a regular queen would be excellent in this game.
03:35:37 <kallisti> actually my current prism idea mimics the queen strategically.
03:36:10 <kallisti> in that it's a very powerful piece with an important purpose, but is incredibly useless until the later game.
03:36:13 <kallisti> or well...
03:36:18 <kallisti> I can't predict strategy but
03:36:32 <kallisti> it's more vulnerable to attack than other pieces.
03:37:04 <kallisti> arrows disregard who initiated a projectile. they are completely immune to the effects
03:37:07 <kallisti> UNLESS
03:37:25 <kallisti> a prism is inbetween the arrow and the cannon along the projectile's path
03:37:58 <kallisti> however, in exchange
03:38:13 <kallisti> the prism does not have the same immunity. it can be captured by enemy projectiles.
03:38:45 <kallisti> but I feel it's fundamentally broken in some way... which will probably be revealed through actual gameplay.
03:39:08 <kallisti> however the arrow, portal, cannon pieces are pretty solid I feel. they don't need too much tweaking.
03:39:20 <oerjan> well one obvious brokenness is that if you lose your prism, your opponent's arrows become invincible...
03:39:31 <kallisti> by the most effective means of capture, yes.
03:39:37 <kallisti> oh wait
03:39:50 <kallisti> I forgot I gave arrows the ability to capture as well. :> maybe I should have that.
03:40:03 <kallisti> they can move like bishops, but cannot capture like bishops
03:40:14 <kallisti> and they may move or capture one space in any cardinal direction
03:40:20 <kallisti> but I may s/or capture//
03:41:09 <kallisti> the cardinal movement rule is added to facillitate loop shenanigans. :>
03:41:22 <kallisti> so that both of your arrows can be on the same grid color.
03:41:29 <kallisti> they can "sidestep" over into the other color.
03:42:05 <oerjan> kallisti: oh so there is ordinary capture in addition to projectiles, and arrows are not immune to that?
03:45:03 <kallisti> nope
03:45:10 <kallisti> but there's not any really strong normal capturing pieces.
03:45:19 <kallisti> pawns. kings. maybe arrows but I think that will be broken.
03:45:44 <kallisti> I'm not sure how a strong capturing piece would change the dynamic of the game.
03:46:28 <kallisti> ha
03:46:31 <kallisti> an interesting thought
03:46:35 <kallisti> the queen pieces
03:46:37 <kallisti> could be portals
03:46:38 <oerjan> prism - queen, portal - bishop, knight/rook - arrow/what?
03:46:43 <kallisti> connected to your opponents queen piece.
03:46:45 <kallisti> :>
03:47:05 <oerjan> oh cannon
03:47:07 <kallisti> there are two rooks. upside down rook is DCannon and normal rook is CCannon
03:47:16 <kallisti> they're both cannons pieces but one fires diagonally and one fires cardinally
03:47:28 <oerjan> huh
03:47:30 <kallisti> the DCannons start along the main diagonal of the board.
03:47:33 <kallisti> so
03:47:35 <kallisti> on opposite ends
03:48:26 <oerjan> ah so that first move you've been discussing is one DCannon projectiling the other?
03:49:07 <kallisti> yes I realized it was not a viable move though
03:49:14 <kallisti> though the opening is still viable
03:49:25 <kallisti> the subsequent capture that becomes available is ultimately not a good tradeoff by any means
03:50:17 <kallisti> perhaps to maintain the diagonal symmetry I should swap the king-queen pair of one side of the
03:50:22 <kallisti> board
03:51:09 <oerjan> actually, _either_ cannon can capture the opponent's DCannon, i assume
03:51:26 <kallisti> yes
03:51:29 <oerjan> but since they don't move, there's no difference in result
03:51:42 <kallisti> well they can move, but movement isn't really their thing. :P
03:51:53 <kallisti> they move as kings.
03:52:21 <kallisti> I feel this is pretty balanced.
03:52:22 <kmc> sweep enemies down like fist of drunken god
03:52:32 <kallisti> otherwise they would become major offensive pieces
03:52:44 <kallisti> instead the idea is to have arrows act indirectly through cannons
03:53:06 <kallisti> while the cannon remains tucked away. though reposition could be a smart tactical choice
03:55:15 <kallisti> oerjan: I have been focusing on that opening quite a bit in my reasoning about how the game will play out
03:55:23 <kallisti> it seems prone to mirroring on both sides.
03:56:00 <kallisti> perhaps the dcannons should not be diagonally across the board from each other. :P
03:57:02 <kallisti> and instead white could have his dcannon on the major diagonal, and black's could be on the minor diagonal.
03:57:37 <kallisti> establishing normal chess-like symmetry
03:59:06 <kallisti> I'm currently thinking about how insane the arrow-push rule would be
03:59:21 <kallisti> where a moving array is allowed to "push" friendly pieces in front of it when moving.
03:59:31 <kallisti> ....if I extended the rule to arbitrary chains of pieces in front of the arrow
03:59:37 <kallisti> then you could, instead of having a castling rule
04:00:00 <kallisti> shift your entire row of pieces over by one square, provided you moved something else out of the way.
04:01:26 <kallisti> but I think the arrow already has a pretty good purpose.
04:01:34 <kallisti> he doesn't need more things he can do. :P
04:03:26 <kallisti> I think having the queen be a portal that corresponds to the opponent's queen would be awesome.
04:03:50 <kallisti> but then there is still a fairly unstoppable arrow. the only real counter to an arrow is another arrow, which encourages more mirroring.
04:08:44 -!- Jafet has joined.
04:18:37 <kallisti> one possibility
04:19:22 <kallisti> is that the c-cannon could be able to capture arrows
04:19:26 <kallisti> while the d-cannon is not
04:19:59 <MDude> The d-cannon can only dapture.
04:20:08 <kallisti> .....yes
04:20:11 <kallisti> exactly
04:20:17 <kallisti> where dapture means "not capture"
04:21:21 -!- MDude has changed nick to MSleep.
04:21:29 <oerjan> it's such a daptable
04:22:46 <kallisti> god damnit arrows
04:22:52 <kallisti> stop being so difficult to remove from the board.
04:34:50 -!- kwertii has joined.
04:35:06 <kallisti> I think instead of having portals explode when there sister portal is captured
04:35:13 <kallisti> I'll just have them become... normal capturing pieces.
04:35:37 <kallisti> if a pawn reaches the other end of the board it can then be promoted into a portal, and reactivate the other one if it's still present.
04:36:02 <kallisti> (...I have no clue what happens when you promote a portal with two portals already)
04:36:32 <kallisti> but I pretty tempted to say no promotion rule.
04:36:37 <kallisti> I'm
04:37:13 <kallisti> oerjan: ah I see the flaw I've been making
04:37:32 <kallisti> I have been thinking that arrows are these unstoppable brutes
04:37:35 <kallisti> however
04:37:50 <kallisti> I didn't consider creative usage of portals.
04:37:59 <kallisti> which has many possible creative usages.
04:38:22 * kallisti should be thinking more in terms of how portals affect strategy, and focusing less on arrows.
04:40:47 <kallisti> @tell zzo38 do you think it's a good idea to use Unicode when displaying the text board for my portal chess server? I think it would be helpful for indicating things like piece directions.
04:40:47 <lambdabot> Consider it noted.
04:46:07 <oerjan> 'monochrom: at a crossroad you meet an angel (always tells the truth) or demon (always lies). the crossroad gives you two choices of roads, one to heaven, one to hell, and only the angel or demon knows which is which. if you ask "how would you answer if I asked 'what is a monad?'", what will happen?'
04:46:23 <oerjan> http://contemplatecode.blogspot.com/2012/01/haskell-weekly-news-issue-211.html is back.
04:58:44 <kallisti> oerjan: .........wow
04:58:53 <kallisti> that is a complicated fucking question
04:59:00 <oerjan> yes.
04:59:57 <kallisti> the demon will start talking about burritos, and the angel will talk about monoids in the category of endofunctors.
05:00:27 <oerjan> hm i doubt your demon conclusion.
05:00:42 <oerjan> looks too plausibly truthful.
05:01:21 <oerjan> i guess it's possible it would answer with a _different_ lie if asked 'what is a monad?'
05:03:11 <kallisti> the premise seems unrelated to the question.
05:03:25 <kallisti> you're not being asked to deduct which road is the correct one
05:03:32 <kallisti> this doesn't even seem to be a riddle
05:03:33 <kallisti> what is this
05:03:34 <kallisti> help
05:04:01 <oerjan> maybe zen
05:07:35 <kallisti> the angel would answer: truthfully
05:07:39 <kallisti> the demon would answer: truthfully
05:07:47 <kallisti> the end
05:09:09 <oerjan> you appear to be having trouble with nested hypotheticals.
05:10:18 <kallisti> not at all
05:10:48 <oerjan> ...ah.
05:10:52 <kallisti> lol
05:11:03 <kallisti> you are asking them what would happen if you asked that
05:11:21 <kallisti> so they would be describe things about what they would say
05:11:27 <kallisti> not specifically what they would say to the hypothetical question
05:11:39 <kallisti> ...?
05:12:19 <oerjan> that "...ah." meant i got it, btw.
05:12:30 <kallisti> oh
05:12:37 <kallisti> s/oh/...ah/
05:13:05 -!- zzo38 has joined.
05:13:05 <kallisti> I guess I should interpret things more literally.
05:13:09 <kallisti> zzo38: hi friend
05:13:15 <kallisti> I am question asked.
05:13:20 <kallisti> asked when speak
05:13:29 <zzo38> kallisti: Hello. What question?
05:13:30 <lambdabot> zzo38: You have 1 new message. '/msg lambdabot @messages' to read it.
05:13:34 <kallisti> that one
05:13:44 <zzo38> Which one?
05:13:52 <kallisti> the one that the lambdabot is have
05:14:03 <zzo38> ?messages
05:14:04 <lambdabot> kallisti said 33m 16s ago: do you think it's a good idea to use Unicode when displaying the text board for my portal chess server? I think it would be helpful for indicating things like piece
05:14:04 <lambdabot> directions.
05:14:28 <zzo38> I would say no.
05:15:07 <kallisti> then devising a visually helpful ASCII board will be pretty challenging
05:15:23 <kallisti> as there are multiple pieces with directionality
05:15:34 <zzo38> You still could put directions, using < > ^ v if those are the only ones
05:15:45 <kallisti> I believe I counted 21 distinct piece states
05:15:51 <kallisti> zzo38: diagonal is needed as well
05:15:52 <zzo38> Or you could use compass direction, numbers, etc
05:15:55 <kallisti> and multiple pieces use directions
05:16:06 <kallisti> compass direction names could be good, yes.
05:16:25 <zzo38> Can you make a list of all the states of all pieces please? I would like to see it
05:17:14 <zzo38> What symmetry do you use, mirror (as in chess) or rotation (as in shogi)?
05:17:27 <kallisti> I don't know what you mean by that.
05:17:38 <kallisti> http://sprunge.us/NPPG
05:17:44 <kallisti> see the Direction and PieceInfo data types
05:18:00 <kallisti> note that the Prism piece is subject to change, it may also have a direction
05:19:18 <kallisti> > 1 + 8 + 8 + 1 + 1 + 1 + 1
05:19:19 <lambdabot> 21
05:19:24 <zzo38> Because, you could either use absolute directions, or directions relative to the player.
05:19:50 <zzo38> If you use directions relative to the player, you need to know what symmetry you use.
05:19:56 <zzo38> But probably absolute directions would be better here
05:19:58 <kallisti> so far I've used absolute directions, with the board oriented as in a standard chess diagram
05:20:04 <kallisti> black is on the north side, white is on the south side.
05:20:43 <zzo38> kallisti: Yes. What I mean, is that, in chess, the queens are on the same file, the kings are on the same file. In shogi, the flying chariot is in the file of the opponent's angled mover, and vice versa.
05:21:17 <kallisti> ah yes
05:21:21 <kallisti> I was thinking about that actually
05:21:34 <kallisti> I may do rotation like shogi then
05:21:59 <kallisti> the difference would be in opening moves.
05:22:19 <kallisti> with rotation as in shogi, the d-cannons of both players start on the major diagonal
05:22:32 <kallisti> with mirror symmetry white would have the major diagonal, and black would have the minor.
05:22:43 <zzo38> dirNotation North = "N"; dirNotation Northeast = "NE"; ... notation Pawn = "P"; notation (Arrow x) = dirNotation x; notation (Portal x) = 'X' : dirNotation x; notation Prism = "PR"; notation DCannon = "DC"; notation CCannon = "CC"; notation King = "K";
05:22:46 <zzo38> Will that work?
05:23:15 <kallisti> should be fine, though annoying to read
05:23:21 <kallisti> I think a UTF-8 option would be good.
05:23:33 <zzo38> (And then change to lowercase for second player)
05:23:58 <zzo38> kallisti: Yes, you could have an option, for clients supporting UTF-8 (and having the relevant fonts installed), but allow plain ASCII as well
05:24:07 <kallisti> sounds good
05:26:06 <kallisti> zzo38: I was also thinking ANSI color would be good, though having all of these options will quickly become tiresome to implement
05:26:58 <zzo38> I say, just implement plain ASCII mode, and then implement a graphical interface separately.
05:27:20 <zzo38> Other things can be added later if wanted (someone could send patches if they want, or whatever it is)
05:27:36 <kallisti> zzo38: do you mean ASCII line mode/
05:27:45 <kallisti> that's what I was envisioning
05:27:59 <zzo38> Yes, just ASCII line mode will do
05:29:32 <kallisti> zzo38: I think having a nice terminal interface would be good too.
05:30:06 <kallisti> this could be implemented as a second program however.
05:30:13 <zzo38> OK
05:54:03 <kallisti> zzo38: I may also look into generalizing some of the code to work with many different kinds of pieces
05:54:22 <kallisti> but I won't really make use of that.
06:22:01 <zzo38> OK.
06:27:50 <zzo38> I do not think Pure BF is really equivalent to brainfuck, because Pure BF is not interactive
06:28:09 <zzo38> http://esolangs.org/wiki/Pure_BF/Implementation
06:32:48 <zzo38> (The download is at the bottom of the article.)
06:58:13 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
07:04:26 -!- sebbu2 has joined.
07:04:26 -!- sebbu2 has quit (Changing host).
07:04:26 -!- sebbu2 has joined.
07:06:37 -!- kwertii has quit (Quit: bye).
07:07:12 -!- sebbu has quit (Ping timeout: 240 seconds).
07:32:13 <Jafet> kallisti: ♖♘♗♕♔♗♘♖
07:50:34 <zzo38> Someone made up a joke about naming the Chinese children: The parents throw all of their cutlery down the stairs, and however noise it makes is the name of their children.
08:03:29 <kmc> anyone know why my apparently very simple libbfd example isn't working? http://hpaste.org/56653
08:06:34 -!- MDude has joined.
08:09:57 -!- MSleep has quit (Ping timeout: 252 seconds).
08:10:47 -!- oerjan has set topic: now open for Americans to liberate | Get your esoil and esoline here! | http://codu.org/logs/_esoteric/.
08:11:05 -!- oerjan has set topic: #esoteric now open for Americans to liberate | Get your esoil and esoline here! | http://codu.org/logs/_esoteric/.
08:12:05 -!- oerjan has set topic: #esoteric now open for Americans to liberate | Get your esoil and esoline here! | Bow to the glorious optators! | http://codu.org/logs/_esoteric/.
08:12:25 <zzo38> Do you think Pure BF is different than brainfuck because Pure BF is not interactive?
08:12:52 <oerjan> well you can make it interactive enough if you assume laziness
08:13:52 <oerjan> like lazy-k's bf interpreter presumably does
08:13:54 <zzo38> oerjan: Yes, you can fake it, and have Lazy I/O;
08:14:17 <zzo38> Still, Pure BF is not really interactive, even if you can make it so, doing somehow.
08:14:59 <oerjan> ok
08:15:00 <zzo38> I wrote an implementation (it is on the wiki) so you can see how it worked
08:15:18 <zzo38> I used: type Tape = Sum Integer -> Word8;
08:15:22 <zzo38> type World = ([Word8], [Word8]);
08:17:33 <zzo38> Does it look like correctly to you? It has "interpret" function which is based on lazy I/O
08:17:49 <zzo38> So it is not necessarily the same as brianfuck.
08:17:57 <zzo38> s/brianfuck/brainfuck/
08:19:28 <zzo38> The action=raw function in MediaWiki, and the way that <pre> works in MediaWiki, you can make a wiki article which is also a valid Haskell program.
08:19:46 <kmc> solution: one must call bfd_check_format after opening the bfd
08:19:56 <oerjan> > succ 255 :: Word8
08:19:57 <lambdabot> *Exception: Enum.succ{Word8}: tried to take `succ' of maxBound
08:20:05 <oerjan> > 255 + 1 :: Word8
08:20:06 <lambdabot> 0
08:20:25 <oerjan> zzo38: i believe Word8 is defined to do arithmetic (mod 256)
08:20:36 <zzo38> Feel free to change the program then
08:21:09 <zzo38> The download link just downloads the raw copy of the wiki page
08:22:46 <zzo38> Which happens to be a valid literate Haskell program.
08:24:40 <Sgeo> happens to be?
08:24:57 <zzo38> Because I wrote it that way.
08:30:05 -!- zzo38 has quit (Remote host closed the connection).
08:58:14 -!- ais523 has joined.
09:35:31 -!- oerjan has quit (Quit: leaving).
09:56:11 -!- GreaseMonkey has quit (Quit: The Other Game).
10:29:14 -!- myndzi has quit (Ping timeout: 272 seconds).
10:46:32 -!- monqy has quit (Quit: hello).
10:55:59 -!- ais523 has quit (Read error: Operation timed out).
11:20:40 -!- ais523 has joined.
11:24:11 -!- Frooxius has joined.
11:26:23 -!- Phantom_Hoover has joined.
11:46:45 -!- Phantom_Hoover has quit (Remote host closed the connection).
12:02:28 -!- myndzi has joined.
12:11:42 -!- Frooxius has quit (Ping timeout: 248 seconds).
12:17:13 -!- Frooxius has joined.
12:22:16 -!- roper has joined.
12:48:24 -!- aloril has quit (Read error: Operation timed out).
12:50:39 -!- Ben__ has joined.
12:51:11 <Ben__> anyone there?
12:51:55 <ais523> yes
12:52:12 <ais523> quite a lot of people, but most of them are probably not paying attention
12:53:10 <Ben__> Anyone here knows Lament or his/her language Prelude?
12:54:32 <Ben__> I am looking for the Draft specification of prelude, but the link on http://esolangs.org/wiki/Prelude leads to a server that is down.
12:54:41 <ais523> Ben__: hmm, interesting
12:54:51 <ais523> lament is a regular here, but hasn't actually spoken for ages
12:55:38 <ais523> sadly, I don't have a copy of that file saved; someone else might
12:55:48 <Ben__> Thanks anyways :)
12:56:27 <ais523> aha, found an archived copy: http://web.archive.org/web/20060504072859/http://z3.ca/~lament/prelude.txt
12:56:28 <Deewiant> http://wayback.archive.org/web/*/http://z3.ca/~lament/prelude.txt
12:56:44 <Deewiant> It's not the newest version though
12:57:50 <Ben__> that version says basically the same as the wiki page at esolangs.org
12:58:02 <ais523> yep
12:58:34 <Deewiant> http://esolangs.org/w/index.php?title=Prelude&diff=7938&oldid=6758 and this diff suggests that the newest prelude.txt would be pretty much identical
12:58:34 <Ben__> and... some statements are really ambiguous
12:58:37 <ais523> esolangs.org is typically the best place to find links to esolang information
12:58:48 <ais523> Ben__: you can look at an interpreter to figure out what the statemetns should mean
13:00:00 <Ben__> we did; it took us quite a while to refactor it into a readable format... but the implementation makes a number of assumptions that aren't in the language specification itself and we're trying to find out if those were intended
13:00:22 <ais523> ah, I see
13:00:27 <ais523> it can be hard to know what's intended in a specification
13:00:40 <ais523> especially where esolangs are concerned, the author's answer is often "I didn't think of that"
13:00:50 <Ben__> I see
13:01:37 <Ben__> would you happen to know if Lament was the one who wrote the interpreter?
13:01:46 <Ben__> because then we can just assume that's what he meant :)
13:02:00 <ais523> I don't know, although it seems possible
13:02:07 <ais523> is there a name in the interpreter? often there is
13:02:07 -!- aloril has joined.
13:02:12 <ais523> e.g. I'm Alex Smith, and wrote bf2pre, the compiler
13:02:17 <ais523> for BF into Prelude
13:02:22 <ais523> and my name's on it to make that clear
13:04:05 <Ben__> apparently you're the one who wrote the interpreter (prelude.c) we're looking at
13:04:45 <ais523> aha, the Python interp was written by lament
13:04:51 <ais523> yep, seems I wrote the C interp
13:05:20 <ais523> here you go, if you want author's intent: http://web.archive.org/web/20060504072747/http://z3.ca/~lament/prelude.py
13:05:41 <ais523> not sure if the two interps are identical, I based mine on the spec
13:06:02 <Ben__> :) thanks
13:06:32 <Ben__> too bad the original server seems to have disappeared; quite a few pages on esolangs.org link to it
13:06:49 <ais523> it has a tendency to happen with esolangs
13:07:01 <ais523> that's what the Esolang fileserver was for, but it's also disappeared in the sense that nobody writes to it any more
13:07:04 <ais523> (it can still be read just fine)
13:07:27 <Ben__> too bad, these languages are quite interesting
13:07:40 <ais523> well, the languages are mostly documented on the wiki
13:08:46 <Ben__> I'm currently working on a case study in a class on languages and automatons(/automata?) for which everyone uses esolangs.org pretty much exclusively
13:30:05 <fizzie> Deewiant: Hoy I just saw your name.
13:30:13 -!- augur has quit (Ping timeout: 240 seconds).
13:30:26 <Deewiant> fizzie: ... okay?
13:30:34 <fizzie> Deewiant: Keijo Heljanko is presenting some genome data visualization thing.
13:31:01 <Deewiant> fizzie: Right now, and you're IRC'ing from there or something? :-D
13:31:08 <fizzie> Apparently you've done some programmering there. Unless you have a same-named person.
13:31:11 <fizzie> Yes.
13:31:18 <fizzie> Still speaking, in fact.
13:31:31 <fizzie> I didn't want to forget to mention it.
13:31:52 <Deewiant> Yes, I've programmered the Aalto parts of it.
13:32:07 <Deewiant> And am in the process of programmering related things.
13:33:05 <fizzie> It's this "TIK-päivä". Our speech recog demo is here, and techically one conference poster of mine was supposed to also, but I think they ran out of poster boards.
13:33:45 <Deewiant> I was just about to say that it's that Day thing.
13:34:12 <Deewiant> And I think I recall him mentioning that he was going to talk about it.
13:36:30 <fizzie> He's also advertising his cloud computing course and summer trainee positions. :p
13:36:48 <fizzie> All this during a ten-minute thing.
13:36:48 <Deewiant> As is typical. :-P
13:37:01 <fizzie> Also there was a photo of Triton.
13:39:07 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:39:37 -!- Ngevd has joined.
13:39:40 <Ngevd> Hello!
13:41:58 <fizzie> Next: Tomi Janhunen and the classroom schedule automation thing that I almost was involved in. (Back in 2007 I applied to both CIS and TCS lab summer trainee programs; both said yes; that would've been the TCS option.)
13:43:19 <Deewiant> I might've applied to that one too, can't remember how it worked.
13:43:25 <Deewiant> Ended up under Keijo anyway.
13:44:24 <fizzie> I'm not sure if TCS asked what I wanted, at least back then, I think they just told me "this is what we'd have for you".
13:44:56 <Deewiant> I recall the topics were all visible beforehand, at least.
13:45:04 <Deewiant> Not sure if one had to be picked on the application.
13:45:38 <fizzie> Yes, there was a list.
13:46:07 <fizzie> This year's topics for ICS should be out any day now, or so I've heard.
13:55:29 -!- augur has joined.
13:58:49 -!- Taneb has joined.
13:58:49 -!- Ngevd has quit (Read error: Connection reset by peer).
14:05:14 -!- Ben__ has quit (Quit: Page closed).
14:05:14 <Taneb> I'm going to play dwarf fortress until my power goes out, then do homework
14:16:58 -!- Taneb has quit (Ping timeout: 245 seconds).
14:17:07 -!- Ngevd has joined.
14:18:46 -!- Ngevd has quit (Client Quit).
14:25:48 -!- myndzi\ has joined.
14:28:55 -!- myndzi has quit (Ping timeout: 276 seconds).
14:29:38 -!- roper has quit (Read error: Connection reset by peer).
14:44:51 <Slereah> Man
14:45:16 <Slereah> A professor proposing a thesis is asking me to explain my python programming that I claim on my resume
14:45:23 <Slereah> But all my python programming is esolangs!
14:45:27 <Slereah> Aaaah!
14:49:05 <fizzie> Deewiant: Hey here's also a poster with your name on it.
14:49:11 <fizzie> Deewiant: You is famous.
14:50:17 -!- myndzi\ has quit (Ping timeout: 240 seconds).
14:50:45 <fizzie> (For some values of.)
14:57:28 <Deewiant> It's probably the one that's typically hanging outside my office. :-P
14:58:02 <Deewiant> Unless it also says Siert on it in which case it's the one from the second floor.
14:58:33 <Deewiant> I'm quite the poster boy.
15:01:26 -!- Phantom_Hoover has joined.
15:19:31 <fizzie> I'm inside the speaking place now so can't check.
15:19:51 <fizzie> It had 2+3 people from Aalto+CSC unless I misremember.
15:20:27 <fizzie> I should plant *my* poster on top of yours, for revenge, I think.
15:21:29 <fizzie> A bit late now that all the "look at posters" breaks are over, except the one before sauna, and I don't think people will be too interested at posters at that time.
15:21:56 <fizzie> Oh well, at least I get to go home in an hour.
15:52:02 -!- Ngevd has joined.
15:52:17 <Ngevd> Hello
15:53:35 <ais523> so, what's this channel's take on achievements being added to Visual Studio?
15:53:44 <ais523> originally it was a joke at Reddit, but Microsoft decided to run with it
15:53:50 <Ngevd> !?
15:54:13 <ais523> good reaction
15:54:26 <Ngevd> Like, "Global Greeter: you have made a 'Hello, World!' program!"
15:54:51 <ais523> Ngevd: it's along the lines of "create a class with a ten-level-deep inheritance hierarchy"
15:55:03 <ais523> or "build a project that takes over 10 minutes to build"
15:56:29 <Ngevd> Well, it'd just get in the way of people who actually have a need to use Visual Studio
15:56:41 <ais523> it's optional
15:56:43 <ais523> an extension
15:57:07 <Ngevd> And be boring to the people who like achievements?
15:57:11 <ais523> besides, people who have a need to use Visual Studio, they have /Visual Studio/ to get in their way
15:57:16 <ais523> Ngevd: who knows
15:57:50 <Ngevd> Visual Studio has one of the best XSLT editors I've come across, and I've came across around three.
16:01:04 -!- ais523 has quit (Remote host closed the connection).
16:01:32 <Ngevd> My comment has disgusted ais523 so much his host closed the connection.
16:20:15 <Ngevd> Wow, there isn't a Nandypants implementation
16:24:15 -!- sebbu2 has changed nick to sebbu.
16:25:34 <Phantom_Hoover> f
16:25:34 <lambdabot> Phantom_Hoover: You have 4 new messages. '/msg lambdabot @messages' to read them.
16:32:47 -!- Ngevd has quit (Read error: Connection reset by peer).
16:33:39 -!- Ngevd has joined.
16:38:19 -!- Ngevd has quit (Client Quit).
16:51:05 -!- Phantom_Hoover has quit (Remote host closed the connection).
16:57:02 -!- ais523 has joined.
17:01:08 <fizzie> If what I saw on another channel is right, there's also a "Go To Hell" achievement for using 'goto', and something for putting more than five curse words in the same source file.
17:02:11 <ais523> indeed
17:04:59 <ais523> oh, Symantec were hacked and the source code to Norton was leaked
17:05:17 <ais523> could be a good way to make the computers of a bunch of hackers unusable
17:06:02 <fizzie> I think Schneier blogged about this.
17:06:12 <ais523> it wouldn't surprise me
17:06:16 <fizzie> Yes.
17:06:44 <ais523> fizzie: I don't think it massively affects Symantec customers directly, but it does rather embarrass the company
17:07:20 <fizzie> Yes, due to line length worries I omitted the third sentence, which ends "-- but most likely Symantec's biggest problem is public embarrassment."
17:20:40 -!- Klisz has joined.
17:31:54 <Sgeo> elliott still hasn't come back here
17:31:59 <ais523> right
17:32:03 <ais523> I've seen him post elsewhere, though
17:32:05 <ais523> so I think he's OK
17:32:21 <ais523> and he was on StackOverflow 10 minutes ago
17:32:37 <ais523> if you read this, elliott, best of luck in your new addiction ;)
17:32:37 <Sgeo> He's in #haskell
17:33:27 -!- HalfTauRSquared has joined.
17:37:23 <HalfTauRSquared> wtf is http://esoteric.voxelperfect.net/wiki/Category_talk:Languages
17:37:41 <Sgeo> Probably spam
17:38:04 <ais523> HalfTauRSquared: a blank page ;)
17:44:50 * HalfTauRSquared sees http://esoteric.voxelperfect.net/wiki/Template:K
17:44:59 <HalfTauRSquared> lol
17:45:04 <HalfTauRSquared> Did it work?
17:45:17 -!- BlackCherry has joined.
17:47:26 <fizzie> ais523: Reputation-hunting leaves no time for #esoteric shenanigans, I suppose.
17:47:31 -!- BlackCherry has left.
17:47:44 <ais523> right
17:48:19 <fizzie> What, 8372! It was something like six-seven thousand a while ago.
17:50:08 * kallisti likes the elliottlessness
17:50:19 <kallisti> elliottllessnness
17:50:24 <kallisti> need to double every consonant
17:50:39 <HalfTauRSquared> (cur) (last) 23:56, 7 March 2008 Elliott (Talk | contribs) (Apologies for polluting the global namespace. I think I can embed the SKI calculus into MediaWiki.)
17:51:05 <ais523> HalfTauRSquared: no, it didn't
17:51:12 <HalfTauRSquared> lol
17:51:15 <ais523> MediaWiki dislikes recursive templates
17:51:38 <HalfTauRSquared> what's the max recursion limit?
17:53:01 <kallisti> 0 I think?
17:53:54 * kallisti has attempted similar things and discovered that it's not possible without recursion.
17:55:00 <HalfTauRSquared> XD
17:59:06 <Sgeo> kallisti, you didn't double the s's
17:59:11 <Sgeo> elliottllessssnnessss
17:59:20 <kallisti> they were already doubled
17:59:22 <kallisti> >_>
17:59:26 <kallisti> I doubled the undoubled ones.
17:59:26 <Sgeo> So double them again
17:59:30 <kallisti> NOPE
17:59:36 <kallisti> not what I was trying to do
17:59:39 <kallisti> I wanted event doubleness
17:59:46 <kallisti> only two consonants away.
18:00:00 <Sgeo> elllliottttlllllessssnnnnessss
18:00:47 <kallisti> eelllliioottttlllleessssnnnneessss
18:01:05 <kallisti> !swedish eelllliioottttlllleessssnnnneessss
18:01:08 <EgoBot> eelllleeiuuttttlllleessssnnnneessss
18:01:20 <ais523> ^bf ,[..,]!elliottlessness
18:01:21 <fungot> eelllliioottttlleessssnneessss
18:01:23 <HalfTauRSquared> !swedish what is this?
18:01:24 <EgoBot> vhet is thees? Bork Bork Bork!
18:01:30 <HalfTauRSquared> ...
18:01:45 <kallisti> Vorpal imitator.
18:01:50 <HalfTauRSquared> Bork Bork Bork!
18:02:03 <kallisti> 1
18:02:06 <kallisti> !swedish swedish
18:02:06 <EgoBot> svedeesh
18:02:11 <kallisti> !svedeesh svedeesh
18:02:12 <EgoBot> sffedeesh
18:02:23 <kallisti> !sffedeesh sfedeesh
18:02:23 <EgoBot> sffffffffffffffffedeesh
18:02:37 <kallisti> !sffedeesh what is this I don't even?
18:02:38 <EgoBot> fhet is zeees I doooon't iffffffffee-a-a-a? Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork!
18:02:42 <HalfTauRSquared> !svedeesh eelllleeiuuttttlllleessssnnnneessss
18:02:43 <EgoBot> eelllleeeeuuuuttttlllleessssnnnneessss
18:03:21 <HalfTauRSquared> eelllleeiuuttttlllleessssnnnneessss is the same?
18:03:25 <HalfTauRSquared> no
18:03:44 <kallisti> !sffedeesh ????????????????????????????//
18:03:45 <EgoBot> ​????????????????????????????//
18:03:52 <kallisti> !sffedeesh whar????????????????????????????
18:03:53 <EgoBot> fher???????????????????????????? Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork!
18:04:33 <HalfTauRSquared> http://www.google.com/search?q=svedeesh
18:05:30 <HalfTauRSquared> ^bf +[.++++.-]
18:05:30 <fungot> <CTCP>.. #"&%)(,+/.215487;:>=A@DCGFJIMLPOSRVUYX\[_^baedhgkjnmqptswvzy}|<CTCP>
18:05:40 <HalfTauRSquared> Unknown CTCP...
18:08:47 <HalfTauRSquared> fungot: hi
18:08:47 <fungot> HalfTauRSquared: a not boring way, build a way up the echeladder a while. don't give a shit in the veil.
18:08:55 <HalfTauRSquared> wtf
18:09:03 <HalfTauRSquared> fungot: ???
18:09:03 <fungot> HalfTauRSquared: but it is your journey i am a fucking veteran of the game in the first place. you wonder what it does?"
18:10:20 <ais523> ^bf +.,[.,]+.!ACTION hasn't been insulated against being asked to do CTCPs yet
18:10:21 * fungot hasn't been insulated against being asked to do CTCPs yet
18:12:02 <HalfTauRSquared> what other ctcps are there?
18:12:23 <ais523> HalfTauRSquared: you're in a UTC-5 timezone
18:12:29 <ais523> (I figured that out via CTCP)
18:12:36 <ais523> and you're using ChatZilla
18:12:48 <ais523> those are the main ones that clients actually respond to
18:12:54 <HalfTauRSquared> CTCP time reply “Thu Jan 19 18:12:36 2012” from ais523
18:13:00 <ais523> there are a few that are defined but nobody cares about
18:13:07 <HalfTauRSquared> like... ?
18:17:30 <ais523> CTCP SOURCE, I think
18:21:56 * Sgeo assumes that fungot is talking in MSPA style
18:21:56 <fungot> Sgeo: a not boring way, build a way up the echeladder a while. it should be hours before you have to connect to the internet and lead him, rose, did you just make your room lousy wise, a distinction in men that would forever.
18:22:14 <Sgeo> Or just Homestuck style
18:22:16 <Sgeo> ^style
18:22:16 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck* ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
18:23:20 <ais523> ^style europarl
18:23:21 <fungot> Selected style: europarl (European Parliament speeches during approx. 1996-2006)
18:23:25 <ais523> fungot: I like this one
18:23:25 <fungot> ais523: mr president, ever since the treaty of amsterdam, and contrary to the commitments set out in the maastricht treaty.
18:29:00 -!- rod_ has joined.
18:29:06 -!- rod_ has changed nick to roper.
18:29:47 -!- Slereah has quit (Ping timeout: 240 seconds).
18:32:22 -!- _Slereah has joined.
18:32:36 -!- monqy has joined.
18:41:42 <ais523> @unpl you $ (just . (.)) $ use . (point free) $ (. style)
18:41:42 <lambdabot> (you (just (\ b c -> use (point free (b c)))) (\ d s -> d (style s)))
18:56:19 <Sgeo> Were you just randomly throwing things like that in?
18:56:24 <Sgeo> To see what would happen?
18:56:53 <ais523> someone said it in another channel as a joke
18:57:06 <ais523> so I decided to unpl it to show that the alternative was not much better ;)
18:57:12 -!- Ngevd has joined.
19:00:22 <Ngevd> Hello!
19:07:48 <fizzie> CTCP CLIENTINFO will tell what other things the client will answer for.
19:08:06 <fizzie> At least sometimes.
19:08:10 <fizzie> 21:07 [ircnet] CTCP CLIENTINFO reply from fizzie: PING VERSION TIME USERINFO CLIENTINFO
19:09:03 <ais523> [CTCP] Received CTCP-CLIENTINFO reply from ais523: ACTION CLIENTINFO DCC PING TIME VERSION.
19:09:22 <ais523> heh at ACTION being there
19:09:37 <fizzie> DCC is also something whatever answered for me seemed to omit.
19:10:32 <Deewiant> irssi gives me the same as fizzie's reply, so presumably it was that
19:10:40 <fizzie> Oh, I've only got irssi connected at the moment; was wondering why no XChat reply.
19:12:01 <fizzie> Not that XChat seems to be answering now either. Oh well.
19:32:18 <Gregor> wtf, Facebook breakage.
19:32:37 <Gregor> It's telling me that two people I don't know like my wall post, and when I click that link, it brings me to a message that says "This content is currently unavailable"
19:33:20 -!- GreaseMonkey has joined.
19:54:06 <Sgeo> Gregor, maybe they blocked you or deleted their accounts?
19:54:12 <Sgeo> How long ago was the wall post?
19:54:38 <Gregor> There /is/ no wall post.
19:55:16 <Sgeo> o.O I thought you were saying clicking the users said that they were unavailable
19:55:36 <Gregor> No, clicking the notification, which should go to the wall post (so I can know what wall post it refers to) goes to that.
19:55:56 <Sgeo> Clearly you sleep-delete stuff
20:03:33 -!- zzo38 has joined.
20:07:08 <Gregor> And before that, I share it with people I don't know? Somehow?
20:07:15 <Gregor> And then they like it AFTER I deleted it?
20:14:32 <zzo38> Like what? Delete what?
20:17:25 -!- HalfTauRSquared has changed nick to pir^2.
20:41:24 <Gregor> WTF TWO MORE PEOPLE LIKED THE PHANTOM POST
20:47:10 <kallisti> "To promote prosperity, creativity, entrepreneurship, and innovation by combating the theft of U.S. property, and for other purposes."
20:47:13 <kallisti> other purposes, eh?
21:19:40 -!- pir^2 has changed nick to PiRSquared17|afk.
21:36:10 -!- Phantom_Hoover has joined.
21:39:16 <zzo38> I doubt that combating the theft of U.S. property will promote prosperity, creativity, entrepreneurship, and innovation
21:40:20 <itidus21> basically it concerns the creation and distribution of bitstreams
21:40:25 <Ngevd> kallisti, is the point of Portal Chess to be COMPLETELY AMAZING?
21:41:51 <itidus21> what makes matters worse is the use of computer data to control those without computers
21:42:28 <itidus21> basically i think i can assume the laws are biased towards anyone who owns computer hardware
21:42:32 <Ngevd> kallisti, because I want to sign up to playtest
21:42:37 <itidus21> fsvo laws
21:42:52 <itidus21> not just sopa and pipa but all modern laws
21:43:14 <Ngevd> itidus21, did you learn Law from the same place you learnt Lambda Calculus?
21:43:27 <Phantom_Hoover> itidus21, if you don't own computer hardware, SOPA... doesn't affect you, at least directly.
21:43:56 <Phantom_Hoover> Ngevd, please stop I have a friend that does that and my ability to not punch him in the face is worn thin.
21:44:26 <Ngevd> Playtest Portal Chess?
21:44:58 <itidus21> what will happen is society will transform more and more so that people need computers
21:44:59 <kallisti> Ngevd: yes that is the goal.
21:45:09 <itidus21> whereas once upon a time people didn't need computers
21:45:35 <kallisti> Ngevd: I still feels that the prism unit is kind of bad.
21:45:43 <itidus21> one interesting way this happens is more and more marketplaces exist only on the internet
21:46:22 <Ngevd> kallisti, I think the prism should be undirected and should split projectiles in a Y shape
21:46:56 <itidus21> they want you "to need to be" connected to the internet.. "to need to have" credit cards
21:47:04 <Phantom_Hoover> I think you guys should understand that chess only works because it's extremely minimalistic.
21:47:05 <kallisti> as far as arrows being immune to projectiles I think this can be combatted by effective use of portals to relocate them, still it's difficult to actually capture them.
21:47:22 <kallisti> Phantom_Hoover: yes that is part of the appeal to its strategy.
21:47:26 <Ngevd> Phantom_Hoover, chess is a lot less minimalistic than draughts
21:47:29 <zzo38> itidus21: I have ideas partially fixing some of these problems, making my own business when I am able to do so. Everything work with postal mail, payment in cash, no internet require, and so on. Everything non-DRM, etc
21:47:58 <Ngevd> Phantom_Hoover, and yet is much more successful
21:48:41 <zzo38> So that everyone that pays by credit card and so on has to pay extra service fee
21:48:44 <kallisti> Phantom_Hoover: chess is nice because each of the pieces complement and each other nicely. They each serve a specific role and must work within those constraints. I'm trying to emulate that to an extent. I don't think I've designed portal chess with the notion that, if I add as much wacky shit as possible, I'll have a fun game.
21:48:49 <itidus21> zzo38: i just label myself insane and call it a day
21:48:49 <itidus21> hoohoo
21:49:23 <kallisti> which is why I don't think I really like the idea of splitting projectiles into two paths.
21:49:38 <kallisti> it simply becomes too complex when you consider the possibilities of loops.
21:49:49 <zzo38> itidus21: Labeling yourself insane is not sufficient (nor is it necessary; but that isn't the point).
21:49:55 <Ngevd> Then I would suggest a different name for the piece
21:49:58 -!- ais523 has quit (Remote host closed the connection).
21:50:25 <itidus21> its getting ((& more) more) difficult to explain to older adults why i don't need a job or an income
21:51:11 <monqy> whats a ((& more) more)
21:51:16 <kallisti> lisp english
21:51:26 <itidus21> supposedly the buddha suggests to not try to delianate the self
21:51:28 <kallisti> curried lisp english....
21:51:29 <monqy> what did you do
21:51:30 <kallisti> or something
21:51:45 <itidus21> more and more
21:51:47 <kallisti> itidus21: delineate? the buddha suggests there is no such thing as self.
21:52:19 <zzo38> The self is really just a part of the universe as a whole and is of no use otherwise. Same with everything else.
21:52:24 <kallisti> Ngevd: I was considering augmenting the pawns perhaps, but perhaps they're still useful as it stands
21:52:36 <itidus21> ok now im trolling..
21:52:47 -!- oklopol has joined.
21:52:58 <kallisti> itidus21 says something stupid, people call him out on it, itidus21 claims he is trolling. classic.
21:53:05 <oklopol> fenzeta manziemonda
21:53:15 <Phantom_Hoover> <itidus21> its getting ((& more) more) difficult to explain to older adults why i don't need a job or an income
21:53:19 <oklopol> faziccio permandonza
21:53:23 <itidus21> kallisti, on account of how you pay far too much attention to my posts it would be very bad for you to hear much more of my comments on that
21:53:26 <Ngevd> kallisti, the pawns are good as it stands
21:53:26 <Phantom_Hoover> I am rather curious as to why you don't need a job or an income.
21:53:31 <itidus21> since i am not sane, i cannot possibly inspire sanity
21:53:38 <Phantom_Hoover> I've been lead to believe that money is quite useful.
21:53:41 <kallisti> Phantom_Hoover: disability, I would imagine.
21:54:04 <kallisti> he probably doesn't like to explain that he's on disability funds, or something. that was my guess.
21:54:13 <kallisti> otherwise, yes, it makes no sense.
21:54:26 <oklopol> itidus21: if you don't need money yourself, you could work and give *me* money
21:54:29 <itidus21> funds = income
21:54:32 <Phantom_Hoover> So you have an income of disability support?
21:54:32 <Ngevd> Maybe he's a hermit with no worldly possessions?
21:54:43 <Phantom_Hoover> Ngevd, and a computer with an internet connection?
21:54:44 <itidus21> my family covers me
21:54:48 <kallisti> Ngevd: pawns could perhaps move like kings??
21:55:02 <Ngevd> Phantom_Hoover, nah, a rock
21:55:03 <Ngevd> That he borrows
21:55:04 <monqy> itidus21: your family dies. now what.
21:55:05 <itidus21> Phantom_Hoover: my brother shares his connection with me, and gives me hand me down pc parts
21:55:09 <monqy> itidus21: or do you plan to die first
21:55:20 <Ngevd> kallisti, pawns are good!
21:55:31 <Ngevd> Perhaps keep prisms as queense?
21:56:12 <itidus21> i am not in want
21:56:34 <itidus21> all i lack is an offline social life or money to afford a social life
21:56:55 <kallisti> Ngevd: I was also thinking queens could be portals that connect to the opposing player's queen.
21:57:11 <Ngevd> kallisti, checks at start of game, not good
21:57:19 <itidus21> suffice to say that my irc experience is as good as anyone who is funded :D
21:57:33 <kallisti> Ngevd: also not likely
21:57:40 <kallisti> portals have directions remember?
21:57:45 <Ngevd> Ah yes
21:57:48 <kallisti> why would you point your queen at your king?
21:58:18 <Ngevd> Hehe I just thought of a potential play
21:58:20 <kallisti> but yes it's likely not a good idea.
21:58:22 <Ngevd> Now my head hurts
21:58:33 <kallisti> too complicated I think
21:59:01 <kallisti> I thought about leaving queens alone. not sure what ramifications that would have.
21:59:09 <oklopol> money to afford a social life? :D
21:59:33 <kallisti> Ngevd: for the original idea I could rename them as "lenses", also I was considering giving them a direction rather than being directionless, as it simplified interface requirements.
21:59:34 <monqy> buying friends
21:59:42 <monqy> that's how friendship works right
22:00:10 <itidus21> i remember in school people used to joke about the word pay-friend
22:00:57 <itidus21> oklopol: well something as simple as a restaurant visit, bowling alley, cinema, pub.. none is free
22:01:05 <zzo38> I have to (truthfully, of course) convince the people that my ways of doing business are save energy and stuff a lot more. In addition to respecting your privacy, etc
22:01:11 <Phantom_Hoover> monqy, no you catch them when they forage in your bin
22:01:34 <monqy> the money is for populating the bin
22:02:04 <Phantom_Hoover> oh
22:02:06 <zzo38> There is an article in some issue of 2600 called "Smart Regression". There are a lot of informative articles in any issue
22:02:10 <kallisti> Ngevd: dunno I think lenses are pretty solid (and you seem to mainly object the name, which was poorly chosen)
22:02:11 <Phantom_Hoover> also the blanket i suppose
22:02:50 <Ngevd> kallisti, hmm
22:02:54 <Ngevd> This needs testing
22:03:10 <kallisti> Ngevd: they could move as queens, have a direction, and have some kind of capture movement that is more limited than their normal movement
22:03:28 <kallisti> Ngevd: and yes I am agre
22:03:40 <Ngevd> I have an idea for capturing
22:03:54 <Ngevd> Nevermind, it's kinda lame
22:04:19 <kallisti> yes the idea is to not make yet another lame chess variant. :P
22:04:28 <kallisti> the game Ultima for example is basically just a bunch of random ideas thrown together.
22:04:47 <kallisti> there's a piece that captures by moving away from a piece adjacent to it....
22:04:57 <kallisti> and another that captures a piece in the same way that the piece captures others.
22:05:03 <kallisti> these aren't very good pieces.
22:05:31 <Phantom_Hoover> Meanwhile you have a bunch of pieces based around the "OMG wouldn't it be cool if..." principle.
22:05:38 <kallisti> Phantom_Hoover: I do not.
22:05:42 <kallisti> Phantom_Hoover: I have one of those. the portal.
22:05:51 <kallisti> the rest is based on that.
22:05:56 <Phantom_Hoover> At least continuous chess was based around a single "OMG wouldn't it be cool if...".
22:06:23 <kallisti> Phantom_Hoover: bawwwwwwwwwwww
22:06:39 <kallisti> go cry about it somewhere else kthx.
22:07:03 <Phantom_Hoover> I love the part where you confuse that for bitterness as if continuous chess was my precious result of years of work.
22:07:33 <kallisti> not really.
22:07:36 <kallisti> you're just not being very helpful
22:07:50 <kallisti> for some reason.
22:08:18 <Phantom_Hoover> Yes, because you've been talking non-stop about this godawful chess variant for nearly a fortnight.
22:08:48 <Ngevd> I suggest the creation of #esoteric-chess-variants
22:08:58 <Phantom_Hoover> As do I.
22:08:59 <monqy> then what will happen here
22:09:11 <Ngevd> Esoteric programming languages
22:09:17 <Ngevd> #esoteric-chess-variants
22:09:20 <Phantom_Hoover> We will all be happy and ncie
22:09:23 <Ngevd> I meant to type join
22:09:23 -!- quintopi1 has joined.
22:09:24 -!- quintopia has joined.
22:09:33 <kallisti> Phantom_Hoover: sorry I'll try to have conversations somewhere else. resume your on-topic banter.
22:09:34 <Ngevd> But I forgot
22:09:35 <quintopi1> i's back
22:09:36 <zzo38> I also have a channel called +CHESS in my IRC server. It is already there, for discussing chess and variants.
22:09:46 <Sgeo> Why + and not # ?
22:09:53 <Sgeo> Is + the "no operators" thing?
22:10:14 <zzo38> Sgeo: Modeless (which implies no operators)
22:10:33 <Sgeo> Clearly, we should all go spam the channel
22:10:38 <monqy> clearly
22:10:46 <Phantom_Hoover> Clearly.
22:10:48 <kallisti> also, has it really been 2 weeks?
22:11:03 * kallisti loses track of time.
22:11:04 <monqy> since what
22:11:06 -!- quintopi1 has quit (Client Quit).
22:11:07 <Phantom_Hoover> Alternately, kallisti could go and discuss Portal Chess-- wait they're isomorphic.
22:11:12 <Phantom_Hoover> monqy, since portal chess.
22:11:18 <quintopia> whoops
22:11:27 <zzo38> If you do you will be forcibly disconnected from the server... even if they are channels you make up yourself
22:12:04 <Sgeo> oubliette?
22:12:12 <kallisti> Phantom_Hoover: no have I been talking about portal chess for two weeks
22:12:19 <kallisti> the idea has been around for at least a few months now.
22:12:27 <kallisti> I am just working on it again.
22:12:28 <zzo38> But small spam might not be considered spam
22:12:30 <Phantom_Hoover> Anyway.
22:12:34 * Phantom_Hoover -> Skyrim
22:12:35 -!- Phantom_Hoover has quit (Quit: Leaving).
22:12:45 <kallisti> spam = anything Phantom_Hoover doesn't like
22:12:46 <kallisti> apparently
22:12:59 <monqy> ok
22:13:31 <Sgeo> Portal time travel chess!
22:13:39 <Sgeo> (I remember seeing a time travel chess variant)
22:14:05 <monqy> chess variant where the pieces are really really heavy
22:14:05 <Sgeo> Hmm, there may be several
22:14:07 <zzo38> Sgeo: There are more than one.
22:14:48 <Sgeo> http://www.wgosa.org/ttchsrules.htm this is probably the one I was thinking of
22:39:47 -!- zzo38 has quit (Remote host closed the connection).
22:41:43 -!- PiRSquared17|afk has quit (Quit: Lorem ipsum dolor sit amet, consectetur adipisicing elit).
22:44:49 -!- Patashu has joined.
22:54:13 -!- kwertii has joined.
23:02:41 -!- somethingorother has joined.
23:07:54 -!- Jafet has quit (Quit: Leaving.).
23:14:47 -!- somethingorother has left.
23:16:06 -!- Frooxius_ has joined.
23:16:28 -!- Frooxius_ has quit (Client Quit).
23:16:42 -!- Frooxius_ has joined.
23:17:15 -!- Frooxius_ has quit (Client Quit).
23:18:24 -!- Frooxius_ has joined.
23:18:44 -!- Frooxius has quit (Ping timeout: 252 seconds).
23:18:51 -!- Frooxius_ has changed nick to Frooxius.
23:23:21 <Ngevd> I've just realised how join works with functions
23:23:33 <Ngevd> (->) r is a monad, right?
23:24:00 <monqy> isomorphic to Reader yes
23:24:09 <Ngevd> And join :: m (m a) -> m a
23:24:17 <kallisti> Ngevd: join f x = f x x
23:24:32 <monqy> spoilers
23:24:34 <Ngevd> I knew that, I mean I've just realised /why/ it works
23:25:10 <Ngevd> If we consider m to be (->) r, that gives us (->) r ((->) r a) -> (->) r a
23:25:35 <Ngevd> Or, in infix form, (r -> r -> a) -> r -> a
23:25:36 <monqy> it's easier to use sections even if it's not Real Haskell
23:25:42 <monqy> infix and sections
23:26:19 <Ngevd> And that is how it makes sense for me
23:27:42 <Ngevd> Now for a
23:27:43 <Ngevd> p
23:28:21 <Ngevd> Now, ap :: m (a -> b) -> m a -> m b
23:28:47 <Ngevd> So, if m = (->) r
23:28:51 <Ngevd> ap :: (r -> a -> b) -> (r -> a) -> r -> b
23:29:20 <Ngevd> This is everything much clearer
23:29:32 <Ngevd> Okay, if m = []:
23:29:39 <Ngevd> join :: [[a]] -> a
23:29:49 <Ngevd> ap :: [a -> b] -> [a] -> [b]
23:30:52 <Ngevd> If m = Maybe
23:31:00 <Ngevd> join :: Maybe (Maybe a) -> a
23:31:05 <Ngevd> * Maybe a
23:31:05 <Sgeo> Nope
23:31:17 <Ngevd> ^^^^ [a]
23:31:21 <Ngevd> Somewhere back there
23:31:46 <Ngevd> ap :: Maybe (a -> b) -> Maybe a -> Maybe b
23:33:09 <Ngevd> Now, with (->) r being a monad, that gives const, id, (.), flip, join, and ap as MIBBLII's combinators
23:35:16 <Ngevd> > ap (.) (join (.)) succ (ord '\NUL')
23:35:18 <lambdabot> 3
23:35:21 <Sgeo> MIBBLII?
23:35:28 <Ngevd> One of my esolangs
23:36:09 <monqy> bonus: const is return: if you're feeleng that way
23:44:10 <kallisti> I like how all the complexity theory articles on Wikipedia have to account for the fact that P = NP is not proven or disproven.
23:59:20 -!- augur has quit (Read error: Connection reset by peer).
23:59:21 -!- augur_ has joined.
2012-01-20
00:02:01 -!- augur_ has changed nick to augur.
00:14:25 -!- GreaseMonkey has quit (Quit: The Other Game).
00:21:40 -!- Ngevd has quit (Ping timeout: 260 seconds).
00:23:45 <kallisti> @src concat
00:23:45 <lambdabot> concat = foldr (++) []
00:26:02 <Sgeo> :t iterate
00:26:03 <lambdabot> forall a. (a -> a) -> a -> [a]
00:26:39 <Sgeo> > (!! 200) $ iterate id 5
00:26:40 <lambdabot> 5
00:26:45 <Sgeo> > (!! 2000) $ iterate id 5
00:26:46 <lambdabot> 5
00:26:51 <Sgeo> > (!! 2000000000000) $ iterate id 5
00:26:57 <lambdabot> mueval: Prelude.undefined
00:26:57 <lambdabot> mueval: ExitFailure 1
00:27:28 <Sgeo> > (!! 20000000) $ iterate id 5
00:27:34 <lambdabot> mueval-core: Time limit exceeded
00:27:42 <Sgeo> > (!! 20000) $ iterate id 5
00:27:45 <lambdabot> 5
00:27:49 <Sgeo> > (!! 200000) $ iterate id 5
00:27:50 <lambdabot> 5
00:27:54 <Sgeo> > (!! 2000000) $ iterate id 5
00:27:56 <lambdabot> 5
00:45:05 -!- roper has quit (Quit: Abandonando).
00:51:10 <itidus21> would it be possible to just diverge science into 2 schools?
00:51:23 <itidus21> the P = NP school and the P != NP school?
00:55:34 <kallisti> um
00:55:49 <kallisti> P = NP is a complexity theory thing, so I can't see there being much difference in those 2 schools of science.
00:56:29 <kallisti> but, for example:
00:56:30 <kallisti> http://en.wikipedia.org/wiki/NP-hard
00:56:46 <kallisti> this article has two diagrams. one where P = NP, and one where it does not.
00:58:47 <kallisti> it seems that complexity theory, rather than uselessly dividing itself into two schools of thought, instead just considers both possibilities.
01:16:25 -!- GreaseMonkey has joined.
01:16:25 -!- GreaseMonkey has quit (Changing host).
01:16:25 -!- GreaseMonkey has joined.
01:17:02 -!- pikhq has joined.
01:20:17 -!- pikhq_ has quit (Ping timeout: 252 seconds).
02:05:05 -!- kwertii has quit (Quit: bye).
02:15:13 -!- augur has quit (Ping timeout: 240 seconds).
02:15:49 -!- augur has joined.
02:19:10 <kallisti> how are lists defined in the Prelude?
02:19:28 <kallisti> can't seem to find them
02:19:32 <kallisti> are they special?
02:21:24 <pikhq> They're special, due to the type being [a]
02:21:33 <pikhq> Which isn't otherwise legal.
02:21:34 <kallisti> (meaning, do they not have a data declaration since their syntax is a special case)
02:21:37 <kallisti> ah okay
02:21:48 <kallisti> same with tuples then as well I guess.
02:22:19 * kallisti demands -XcircumfixOperators
02:22:23 <kallisti> *C
02:22:56 * kallisti notes how difficult that would be to actually implement and design in a sane manner.
02:31:57 <kallisti> the numeric patterns are interesting in that they seem to be the only overloaded patterns...
02:32:07 <kallisti> or do they only match on Int and Integer?
02:32:27 <kallisti> > let f 0 = 0 :: Sym Int in f 0
02:32:28 <lambdabot> 0
02:32:53 <kallisti> nothing else pattern matches on an entire typeclass.
02:33:01 <kallisti> except I guess maybe OverloadedStrings?
02:33:24 <kallisti> I wouldn't be surprised if it doesn't overload string patterns.
02:33:56 <kallisti> oh wait
02:34:03 <kallisti> > let f 0 = 0 :: Sym Int in f (0 :: Sym Int)
02:34:04 <lambdabot> 0
02:34:06 <kallisti> oh okay.
02:59:09 -!- _Slereah has changed nick to Slereah.
04:26:04 -!- MDude has changed nick to MSleep.
04:42:46 -!- kwertii has joined.
04:53:32 <Deewiant> ?src []
04:53:33 <lambdabot> data [] a = [] | a : [a]
05:11:01 <kallisti> lies
05:16:32 -!- oerjan has joined.
05:18:59 <oerjan> 00:51:10: <itidus21> would it be possible to just diverge science into 2 schools?
05:19:02 <oerjan> 00:51:23: <itidus21> the P = NP school and the P != NP school?
05:19:59 <oerjan> the problem is that the P=NP school is nearly useless without finding the actual P-algorithm for SAT (or any other NP-complete problem), at which point the P != NP school will promptly collapse.
05:21:30 <kallisti> oerjan: most people are pretty convinced that P != NP right?
05:21:34 <oerjan> otoh there has been some discussion on the godel's lost letter blog that the P=NP possibility gets underinvestigated. (Prof. Lipton himself is one of the few who think it might be the true case)
05:21:54 <oerjan> *thinks
05:22:57 <oerjan> 02:19:10: <kallisti> how are lists defined in the Prelude?
05:23:05 <kallisti> oerjan: intuitively it certainly doesn't seem very possible, but that's not a good basis for research direction.
05:23:12 <oerjan> with a comment to the effect that the syntax would be illegal, i think
05:23:46 <oerjan> data [a] = [] | a:[a] deriving BucketsOfClasses
05:23:58 <oerjan> or something like that ;P
05:24:13 <kallisti> it would be nice if Haskell had a better precedence system.
05:24:43 <kallisti> you could define them in relation to one another, in essence.
05:25:22 <oerjan> kallisti: well the blog is also full of cranks who think one side is obviously true, and get angry when no actual mathematician thinks their argument is convincing.
05:25:42 <oerjan> (or more often, thinks their argument is worth reading at all)
05:26:15 <kallisti> precedencegroup Arithmetic = (+), (-) < (*), (/), `div`, `mod`, `divMod` < (^), (^^), (**)
05:26:23 <kallisti> you could also refer to other groups relationally.
05:26:35 <kallisti> the group simply exists for ease of referral in other precedence relations
05:28:55 <kallisti> the only problem is that it says nothing about the associativivity
05:28:58 <kallisti> I'm sure there's a better notation
05:29:00 <oerjan> i think the groups should also include associativity. it's annoying that you can have two operators on the same level which cannot be combined because their associativities clash.
05:29:09 <oerjan> e.g. $ and parsec's <?>
05:29:12 <kallisti> yes
05:29:14 <kallisti> $ and $!
05:29:28 <oerjan> um they _do_ have the same don't they?
05:29:33 <oerjan> > (0$0$!)
05:29:34 <lambdabot> The operator `Prelude.$!' [infixr 0] of a section
05:29:34 <lambdabot> must have lower prec...
05:29:36 <oerjan> yep
05:30:02 <oerjan> but some think they should have been left instead
05:30:07 <oerjan> (i.e. Cale)
05:30:46 <kallisti> I think that makes sense, but at the same time I don't really think f x y $ g z $ h a b $ i c
05:30:49 <kallisti> looks very good
05:31:08 <kallisti> assuming left associativity
05:31:38 <kallisti> not sure how to cleanly encode associativity in precedence groups though
05:31:47 <kallisti> "opgroup" is probably a better name.
05:31:49 <kallisti> shorter
05:32:05 <kallisti> or maybe opset
05:32:31 <kallisti> also I'm not sure how you'd do things like $
05:32:54 <kallisti> and specify that it's either "lower than everything" or "lower than some other really low thing"
05:32:59 <oerjan> <kallisti> precedencegroup Arithmetic = (+), (-) < (*), (/), `div`, `mod`, `divMod` < (^), (^^), (**) <-- rather silly use of `` and () there :P
05:33:06 <kallisti> oh, yes.
05:33:16 <kallisti> well I thought the `` was required?
05:33:30 <oerjan> yes, but the () is prohibited in fixity declarations
05:33:37 <kallisti> right I forgot about that.
05:34:47 <kallisti> it would probably be a good idea to define one level at a time with different associativities
05:34:54 <kallisti> so that other operators could be put inbetween those.
05:35:12 <kallisti> the relations would be <, =, and >
05:35:52 <kallisti> anyway I just think it adds more flexibility than the fixed set of integer levels.
05:36:03 <kallisti> which are all completely filled by Prelude operators.
05:36:39 <oerjan> hm easy solution to the $ and . problem - require all new groups to be defined _between_ two existing ones.
05:36:39 <kallisti> I'm not sure how intuitive it would be either. in simple cases it would be more intuitive I think
05:37:12 <kallisti> other problems: no default precedence
05:37:16 <kallisti> unless...
05:37:19 <kallisti> you have a special Default grou[
05:37:23 <kallisti> p
05:38:02 <oerjan> you could just make it the . group, and change that to infixl - the operator's bloody associative, after all!
05:38:18 <oerjan> although it would break old sections.
05:38:49 <oerjan> of the (. f . g) form
05:38:54 <kallisti> I thought the default was like 4 or something?
05:39:02 <oerjan> no, default is infixl 9
05:39:06 <kallisti> oh
05:39:07 <kallisti> okay.
05:39:49 <oerjan> although equally obviously, (f . g .) is much more useful than (. f . g) so the latter probably should just be left to break.
05:40:10 <oerjan> (i think.)
05:40:21 <oerjan> :t (?f . ?g .)
05:40:22 <kallisti> I didn't know changing the associativity would break sections like that
05:40:22 <lambdabot> The operator `.' [infixr 9] of a section
05:40:22 <lambdabot> must have lower precedence than that of the operand,
05:40:22 <lambdabot> namely `.' [infixr 9]
05:40:28 <oerjan> :t (. ?f . ?g)
05:40:28 <kallisti> I figured it would just parse it as (. (f . g))
05:40:29 <lambdabot> forall a b a1 (f :: * -> *). (?f::a1 -> a, ?g::f a1, Functor f) => (a -> b) -> f b
05:41:36 <oerjan> nope, the rule is that it's only legal if \x -> x . f . g parses like \x -> x . (f . g)
05:42:18 <oerjan> of course it's been discussed whether it should always mean the former
05:42:24 <kallisti> I think having a Default group makes sense, then just structure the Prelude operators around the Default in some sensible way (I think . should probably be higher precedence than default), and then have special values for lowest precedence and highest precedence.
05:45:02 <kallisti> it could even be a "None" group... so...
05:46:01 <kallisti> opgroup App = $, $!, `seq` where App > None
05:46:11 <kallisti> (improved the syntax a bit, not sure how to do associativity cleanly)
05:46:23 <oerjan> :t (0$0 `seq`)
05:46:24 <lambdabot> The operator `seq' [infixr 0] of a section
05:46:24 <lambdabot> must have lower precedence than that of the operand,
05:46:24 <lambdabot> namely `$' [infixr 0]
05:46:42 <kallisti> oerjan: I recently took a look at the Reports operator table so this shit's still fresh in memory. :P
05:48:10 <kallisti> the rule on the where part would be that the groupname has to be mentioned, and that it can't create a logical contradiction (no clue how to make that efficient at compile-time or what that even entails)
05:48:23 <kallisti> elliott linked me to a paper on this style of precedence handling, but I never read it. :P
05:48:35 <kallisti> well
05:48:38 <kallisti> I read part of it.
05:48:42 <kallisti> just not the implementation details.
05:49:09 <kallisti> oh it was Agda mixfix .
05:49:14 <kallisti> that it was describing
05:55:58 <kallisti> I wonder what's the longest period of time a written language standard has been the same as the de facto standard.
06:11:08 -!- oerjan has quit (Quit: leaving).
07:01:11 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
07:02:18 -!- aloril has quit (Ping timeout: 240 seconds).
07:17:47 -!- aloril has joined.
07:25:23 -!- kwertii has quit (Quit: bye).
07:34:37 -!- azaq23 has joined.
07:34:46 -!- azaq23 has quit (Max SendQ exceeded).
08:10:19 -!- GreaseMonkey has quit (Quit: The Other Game).
08:17:51 -!- kallisti has quit (Quit: Lost terminal).
08:45:29 -!- Jafet has joined.
09:08:15 <Deewiant> fizzie: You're more face-hairy than when I last saw you.
09:21:45 <fizzie> It keeps happening.
09:22:03 <fizzie> Also I didn't notice anyone noticing me.
09:27:24 <kmc> http://www.haskell.org/wikiupload/2/23/Monad-tutorials-chart.png
09:27:45 -!- roper has joined.
09:28:52 -!- pikhq has quit (Read error: Operation timed out).
09:29:36 -!- pikhq has joined.
09:49:58 <Madoka-Kaname> kmc, graph it agienst the number of Java reflection tutorials
09:50:51 -!- kallisti has joined.
09:50:51 -!- kallisti has quit (Changing host).
09:50:51 -!- kallisti has joined.
09:53:56 <fizzie> And global warming.
10:01:51 <Madoka-Kaname> fizzie, I'm trying to make kmc feel crushing despair!
10:03:58 <kmc> the difference is that "reflection tutorial" is not sought out as the solution to each and every Java question
10:04:40 <Madoka-Kaname> Okey
10:04:48 <Madoka-Kaname> "Object Oriented Design tutorial"
10:04:59 <kmc> anyway why is this supposed to make me feel crushing despair
10:08:42 <kmc> i'll bet the average java reflection tutorial imparts more knowledge than the average monad tutorial
10:08:48 <kmc> since the average monad tutorial imparts negative knowledge
10:54:31 * kallisti eats a burrito quietly in the background.
10:55:11 <kallisti> kmc: what knowlege are you looking for a monad tutorial to impart?
10:56:10 <kallisti> teaching someone how to use monads is probably the easiest to do, and the most relevant to Haskell programming.
10:56:31 <kallisti> I don't need to know everything about real categorical theoretical monads to write programs.
10:58:03 <kallisti> I recall wikibooks had a pretty good tutorial for monads, but only if you already had a slight understanding of them previously.
11:04:55 <kallisti> so, if you're not actually stuck in the questions of why like many do
11:05:07 <kallisti> it's a good learning resource.
11:10:22 <kmc> i'm not looking for a monad tutorial to impart any knowledge
11:10:32 <kmc> but apparently lots of other people are
11:40:50 <Deewiant> fizzie: I exited T1 and walked past you downstairs
11:42:44 -!- Phantom_Hoover has joined.
11:54:50 -!- ais523 has joined.
12:04:53 <Phantom_Hoover> 09:49:58: <Madoka-Kaname> kmc, graph it agienst the number of Java reflection tutorials
12:04:54 <lambdabot> Phantom_Hoover: You have 3 new messages. '/msg lambdabot @messages' to read them.
12:05:02 <Phantom_Hoover> Java reflection sounds unpleasant.
12:05:22 <kmc> it sounds better than not having it
12:05:45 <Phantom_Hoover> I don't know what it /is/.
12:05:52 <Phantom_Hoover> It just sounds unpleasant.
12:06:35 <kmc> heh
12:10:36 <kmc> it gives you Java classes named Class, Method, Constructor, etc.
12:11:01 <kmc> you can get the Class for any object, enumerate its Methods (and their names as strings, and their types), call a Method, etc
12:15:19 <kmc> there are also related APIs (don't know if it's technically part of reflection) for dynamically loading .class files, or for loading JVM bytecode you've generated on the fly
12:21:32 -!- ais523 has quit (Ping timeout: 252 seconds).
12:26:03 -!- ais523 has joined.
12:30:06 -!- Ngevd has joined.
12:30:15 <fizzie> Deewiant: Hokay. I recall vaguely that some people came out of there. Maybe.
12:30:19 <Ngevd> Hello
12:33:05 <Deewiant> Well, they did.
12:37:36 <kmc> hi Ngevd
12:39:46 <ais523> Phantom_Hoover: reflection in OO languages is when the language constructs themselves are represented by objects
12:39:59 <ais523> so, e.g., you can have a Class object and get a list of Method objects corresponding to it
12:40:12 <Phantom_Hoover> ais523, that sounds like the kind of thing which puts Feather beyond the reach of man.
12:40:29 <ais523> typically, you can also use these things indirectly, e.g. you can do something like Class.callStaticMethod(Method x)
12:40:34 <ais523> probably named differently
12:40:54 <ais523> and actually, Feather doesn't have reflection by default, but it's possible to retroactively add it onto the language after you've already created a bunch of objects
12:44:42 -!- Ngevd has quit (Ping timeout: 255 seconds).
12:46:27 <fizzie> java.lang.System.class.getMethod("exit", int.class).invoke(null, 42); + catch a dozen checked exceptions.
12:47:07 <fizzie> Static methods are just Methods, and their .invoke() ignores the first parameter.
12:48:56 <fizzie> The above can apparently throw NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException or InvocationTargetException, so maybe "dozen" was a bit of an exaggeration. (Or NullPointerException or ExceptionInInitializerError, but those aren't checked.)
12:49:11 <kmc> how is it determined whether a particular exeception is checked?
12:50:01 <fizzie> If it derives from a Throwable that's not a descendant of Error or RuntimeException, it's checked, IIRC.
12:51:11 <fizzie> "The unchecked exceptions classes are the class RuntimeException and its subclasses, and the class Error and its subclasses."
12:52:04 <kmc> ah
12:52:54 <kmc> is that equivalent to saying that "throws RuntimeException, Error" is implicit on every method?
12:55:09 <kmc> put another way, can i throw a subclass of something in the "throws" clause without putting the exact type in the "throws" clause?
12:55:21 <ais523> kmc: right
12:55:29 <fizzie> Yes.
12:55:36 <kmc> cool
12:56:32 <ais523> fizzie: ExceptionInitializerError?
12:56:33 <fizzie> You could put a "throws Throwable" in and throw anything, but then all your callers would also need to "throws Throwable", or catch (at least as a fallback) Throwable.
12:57:05 -!- Phantom_Hoover has quit (Remote host closed the connection).
12:57:27 <fizzie> ais523: "ExceptionInInitializerError - if the initialization provoked by [Method.invoke] fails".
12:58:00 <ais523> oh, Exception In Initializer
12:58:06 <ais523> not Exception Initializer
12:58:08 <ais523> I see
12:58:28 <ais523> I thought it was something like an exception trying to create an exception, and became an error to stop recursion
12:58:42 <kmc> i heard you like exceptions
12:59:58 <fizzie> I'm sure C++ programmers think Java's exceptions are pretty lame, since you always have to subclass Throwable. At least C++ lets you throw whatever you want, like integers, or std::map<std::string,std::ifstream*>s, or other sane things.
13:00:14 <kmc> :D
13:02:06 <kmc> "if the initialization provoked by [Method.invoke] fails"
13:02:10 <kmc> i like the use of the word "provoked" here
13:09:51 <kmc> in C++ if you throw an object by value (and catch it by const reference, say), where will compilers tend to allocate it?
13:18:18 <fizzie> I'm not sure if there even is a convention. It could even be somewhere on the stack, depending on how unwinding gets done, since all it needs to do is to last until the last relevant handler exits.
13:24:16 -!- ais523 has quit (Ping timeout: 272 seconds).
13:25:09 <fizzie> http://www.fifi.org/doc/g++-3.0/libstdc++/html_user/eh__alloc_8cc-source.html#l00097 -- in this version of G++, apparently on the heap as seen by std::malloc, except there's also an emergency_buffer which is used if it's out of memory.
13:25:44 <fizzie> Though that only works for exception objects that are 1024 bytes or less.
13:35:14 -!- sebbu2 has joined.
13:35:14 -!- sebbu2 has quit (Changing host).
13:35:15 -!- sebbu2 has joined.
13:38:20 -!- sebbu has quit (Ping timeout: 252 seconds).
13:42:17 <kmc> heh
13:44:18 <kmc> that's entertaining
13:49:15 <fizzie> if (++which >= EMERGENCY_OBJ_COUNT) goto failed;
13:49:39 <fizzie> It's very bitmasky.
13:50:44 <fizzie> There's also some sort of a emergency_mutex to avoid multiple threads messing the emergency_buffer at the same time.
13:51:18 <fizzie> Ah, so there's space for 64 of those at-most-a-kilobyte emergency objects.
13:53:17 <roper> too much arbitrary numbers
14:07:02 <Gregor> <fizzie> I'm not sure if there even is a convention. It could even be somewhere on the stack, depending on how unwinding gets done, since all it needs to do is to last until the last relevant handler exits. // the only way I can think of that it could be on the stack is if the code that entered the try block allocated the space, and the code that threw put the object there, but that would be hyper-awkward for subtypes ...
14:07:40 <kmc> i was thinking it would be in the thrower's stack frame
14:07:49 <Gregor> That could get overwritten.
14:07:56 <Gregor> I suppose it could leave it high in the stack with the implied agreement that the handler copies it if it's executed.
14:07:57 <kmc> you wouldn't actually free the stack until exception handling is complete
14:08:09 <Gregor> But the handler can call functions.
14:08:16 <Gregor> And hence extend its stack back over the thrower's.
14:08:17 <kmc> you'd run exn handling code on a separate stack
14:08:20 <kmc> i think that's pretty common
14:08:21 <Gregor> Ohhhhhhhhhhhh
14:08:28 <Gregor> Idonno if it is *shrugs*
14:08:56 <kmc> but you're still unwinding those original stack frames and executing destructors
14:09:02 <kmc> even if you're not freeing the memory
14:09:07 <kmc> and so I think it's still problematic
14:09:23 <Gregor> Ohyeah :)
14:09:43 <kmc> hmm, but a temporary can outlive the auto variables of the activation where it was created, right?
14:10:17 <Gregor> "Can" in what sense? Technically or spectically?
14:10:26 <kmc> that the spec allows it
14:10:42 <Gregor> I don't think so. But C++ ain't my bag.
14:27:35 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
14:30:04 -!- ais523 has joined.
14:30:37 <ais523> hmm, the theoretical computer scientists here were trying to figure out how to persuade a grant applications board that their theoretical computer science would help the UK in particular
14:36:24 <oklopol> so i think from a zero entropy SFT, ultimate sets of CA can be RE^RE^RE-complete
14:36:35 <oklopol> what do *you* think?
14:36:45 <oklopol> i think this result will help finland.
14:38:46 <ais523> but will it help finland /more/ than it helps other countries?
14:39:43 <oklopol> hmm
14:40:03 <oklopol> i don't know which turing degrees each country prefers
14:41:30 <oklopol> today, i was trying to decide whether ultimate sets can be RE-hard or co-RE-hard, and turned out both. so i figured wow, do they capture RE^RE. and then i was like MIND FUCKING BLOWN when i realized we can't even prove they *are* in RE^RE.
14:42:15 <oklopol> the funny part is they are in some sense just as natural as limit sets (which obviously capture co-RE)
14:42:39 <oklopol> you just take the f-orbit closure of each point and take their union (where f is the CA)
14:42:51 <oklopol> the limit set is the set of points with an infinite preimage chain
14:43:39 <kmc> is their research useful for breaking nazi codes
14:43:59 <oklopol> RE^RE^RE-complete sets can break quite a few codes at least
14:44:06 <kmc> it's true
14:44:12 <kmc> i heard you like oracles
14:44:17 <oklopol> :D
14:44:40 <oklopol> fuck you, now we have to name our article "so i heard u like oracles..."
14:45:02 <ais523> *liek
14:45:06 <kmc> get xzibit as a co-author
14:45:09 <ais523> also, IIRC *herd, but I'm less sure on that one
14:45:10 <oklopol> :DD
14:45:33 <oklopol> that would be fucking awesome
14:46:11 <kmc> there's some crossover between "i herd u liek mudkips" and "we heard you like cars so we put a car in yo’ car so you can drive while you drive"
14:46:19 <kmc> they're having meme-babies
14:46:50 <ais523> kmc: indeed, I noticed that a while ago
14:47:11 <oklopol> i wonder if we'd have to pay xzibit to be allowed to use his name
14:47:32 <oklopol> his real name obviously, i doubt it's that
14:47:45 <oklopol> well i guess you can just change your name whenever you like in the us
14:48:20 <kmc> (that's RE^(RE^RE) right? i guess (RE^RE)^RE = RE^RE)
14:48:55 <oklopol> yes
14:49:27 <oklopol> ^ is usually right-associative because of reasons
14:52:04 -!- MSleep has changed nick to MDude.
14:53:04 <oklopol> how do i contact xzibit, seriously this has to happen
14:57:00 -!- oerjan has joined.
14:58:21 -!- oerjan has set topic: now open for Americans to liberate | Get your esoil and esoline here! | Bow to the glorious optators! | Weapons of mass banning suspected | http://codu.org/logs/_esoteric/.
14:58:51 <oerjan> wat
14:59:05 -!- oerjan has set topic: #esoteric now open for Americans to liberate | Get your esoil and esoline here! | Bow to the glorious optators! | Weapons of mass banning suspected | http://codu.org/logs/_esoteric/.
14:59:40 <oerjan> it appears /topic removes the #esoteric as a channel argument
15:01:57 <oerjan> <fizzie> And global warming. <-- and pirates. or is that redundant?
15:05:25 -!- oerjan has set topic: #esoteric now open for Americans to liberate | Get your esoil and esoline here! | Bow to the glorious optators! | "Proof" of weapons of mass banning | Spotted marsh elliott suspected extinct from channel | http://codu.org/logs/_esoteric/.
15:06:30 <oklopol> elliott is gone? :o
15:06:43 <Sgeo> He's active in #haskell
15:06:55 <oerjan> i haven't seen him since he ragepatted
15:07:20 <oerjan> (here, that is.)
15:07:48 <oklopol> what is ragepatting
15:08:09 <oerjan> like rageparting, but more hands-on, i think
15:10:53 <oklopol> why did he ragepat?
15:11:44 <oerjan> mainly because i quieted him after spamming
15:11:56 <oklopol> how much did he spam
15:12:10 <oklopol> o
15:12:11 <oklopol> o
15:12:11 <oklopol> o
15:12:11 <oklopol> o
15:12:11 <oklopol> o
15:12:11 <oklopol> o
15:12:11 <oklopol> o
15:12:12 <oklopol> o
15:12:12 <oklopol> oo
15:12:13 <oklopol> o
15:12:13 <oklopol> o
15:12:14 <oklopol> o
15:12:20 <oerjan> a couple screenfuls?
15:12:20 <oklopol> okokokokokokokokokokokokokokokokokokokokoko
15:12:24 <oklopol> :P
15:12:37 <oklopol> was the channel active
15:12:56 <oerjan> not that much
15:14:03 <oerjan> ok he also went ballistic with another nick after being quieted
15:14:10 <oerjan> which ais523 kicked
15:15:30 <oerjan> and i was reading backscroll so not responding promptly...
15:16:36 <oerjan> and saying something ironic in privmsg about eventually unquieting him if i found he had behaved when i finished reading the backscroll (which he hadn't, and which i knew)
15:16:58 <oerjan> and then finally i took 2 minutes longer to unquiet him than he had patience for.
15:17:24 <oerjan> *sarcastic
15:17:56 <oerjan> so now he has probably written us all off as evil oppressive dictators.
15:22:04 <oerjan> <Deewiant> fizzie: I exited T1 and walked past you downstairs <-- i am sorry but esolangers are only permitted to live in the same town if they never meet in person. hth.
15:22:42 <Deewiant> We don't live in the same town, AIUI.
15:23:15 <oerjan> details.
15:23:29 <Deewiant> And he doesn't know what I look like so it's all good.
15:23:36 <oerjan> aha
15:24:08 <oerjan> i guess that's acceptable.
15:26:19 <ais523> Deewiant: but you do know what /he/ looks like?
15:26:26 <Deewiant> Yep
15:26:46 * oerjan knows what ais523 looks like. In theory.
15:27:03 <ais523> if you ever happen to meet me, say hi
15:27:48 <oerjan> assuming i remember what you look like. i _said_ it was in theory.
15:28:46 <Sgeo> I know what Gregor looks like, but that's it
15:29:37 <oerjan> ardent channel regulars may know what i looked like 15 years ago or so.
15:36:19 <ais523> I think I saw a photo of oklopol once, not sure though
15:36:28 <ais523> (I still look much like the photo of me that most of #esoteric saw)
15:36:41 * Sgeo doesn't remember that photo
15:40:41 <oerjan> <ais523> also, IIRC *herd, but I'm less sure on that one <-- how does one herd mudkips, anyway.
15:41:18 <ais523> oerjan: drawing circles around them very quickly
15:41:21 * ais523 is a Pokémon expert
15:41:39 <ais523> amazingly, this is apparently canon by now
15:41:41 <ais523> not sure though
15:45:20 <oerjan> http://www.haskell.org/wikiupload/2/23/Monad-tutorials-chart.png <-- hm i think we've found the burst bubble which was the _real_ cause of the financial crisis.
15:45:47 <kmc> i don't see a burst bubble
15:45:50 <kmc> it's still trending up
15:45:52 <kmc> buy buy buy
15:46:28 <oerjan> kmc: tutorials don't usually stop existing, you know.
15:46:41 <kmc> ah, so you're saying we should consider the derivative
15:46:47 <oerjan> yeah
15:48:19 <monqy> in an ideal world: exponential rate of monad tutorial growth
15:48:41 <monqy> in an ideal world: monad tutorials can reproduce
15:48:55 <oerjan> monqy: insufficiently singularitarian, we need an asymptote!
15:49:14 <monqy> monad tutorials for everyone, and then some
15:49:45 <oerjan> clearly it's just a matter of first inventing the AI monad, then that AI monad transformer, then applying the latter to the former.
15:49:50 <oerjan> *the
15:52:16 <Sgeo> Why do I listen to The Onion radio stuff?
15:52:28 <Sgeo> I like the Onion, except for that, which is usually garbage
15:54:57 <oerjan> i think an article about Sgeo saying the onion radio is crap would be about average onion fare, no?
16:03:11 -!- augur has quit (Remote host closed the connection).
16:08:19 -!- Ngevd has joined.
16:08:45 -!- Klisz has joined.
16:12:49 -!- zzo38 has joined.
16:14:36 -!- Ngevd has quit (Read error: Connection reset by peer).
16:29:40 -!- sebbu2 has changed nick to sebbu.
16:38:03 -!- FishNot has joined.
16:43:28 -!- Gregor has set topic: #esoteric now open for Americans to liberate | Get your esoil and esoline here! | Bow to the glorious optators! | "Proof" of weapons of mass banning | Spotted marsh elliott suspected extinct from channel | Natives beware of Gregor: Do not let his name deceive, he is as American as apple pie isn't | http://codu.org/logs/_esoteric/.
16:48:09 <oerjan> shocking
16:50:58 <oerjan> hm, something is fishy
16:51:44 * Gregor hides the trout.
16:51:51 -!- Ngevd has joined.
16:52:20 <oerjan> nah, the trout is a red herring
16:53:24 <Gregor> FishNot, WantNot.
16:56:59 -!- Ngevd has quit (Ping timeout: 245 seconds).
17:01:56 -!- Ngevd has joined.
17:08:19 -!- Taneb has joined.
17:08:39 -!- Ngevd has quit (Ping timeout: 245 seconds).
17:12:20 -!- Taneb has quit (Read error: Connection reset by peer).
17:13:41 -!- Phantom_Hoover has joined.
17:14:55 <Gregor> Y'know what I love and think is the greatest technological achievement of our era?
17:14:56 <fizzie> oerjan: Regarding your tl;dr description of the drrrrama, you could've just admitted you were being on a POWER TRIP, I think that was the description of the whole thing that I got from the final /quit message.
17:15:01 <Gregor> SSH (<-- ais523 looky)
17:15:11 <ais523> heh
17:17:43 <Phantom_Hoover> 15:17:56: <oerjan> so now he has probably written us all off as evil oppressive dictators.
17:18:05 <Phantom_Hoover> You *did* refuse outright to ban Mathnerd when he was spamming even more heavily.
17:18:21 -!- oerjan has set topic: #esoteric now open for Americans to liberate | Get your esoil and esoline here! | Glorious optator in hospital after tripping over power line | "Proof" of weapons of mass banning | Spotted marsh elliott suspected extinct from channel | Natives beware of Gregor: Do not let his name deceive, he is as American as apple pie isn't | http://codu.org/logs/_esoteric/.
17:19:23 <oerjan> Phantom_Hoover: that was also compounded by backscrolling, which is precisely why i tried _not_ waiting until i'd read everything before acting the last time.
17:19:46 <Phantom_Hoover> oerjan, even when you were /asked/ to do something about it?
17:20:05 <Phantom_Hoover> Do you really need to read through backscroll to see that the channel is being spammed?
17:20:29 <oerjan> Phantom_Hoover: um reading backscroll means i don't see what's _new_
17:20:38 <Phantom_Hoover> ...
17:21:03 <zzo38> Have you ever tried the Internet Quiz Engine?
17:21:07 <oerjan> irssi only tells me there is more in the window, not how much.
17:21:09 <Gregor> Hm, so I'm guessing by context that there was some spammy incident, oerjan didn't ban, and elliott left in a huff?
17:21:50 <oerjan> Gregor: um no, there was some spammy incident, i didn't ban, elliott complained, then weeks later _elliott_ spammed, i banned, and elliott left in a huff.
17:21:59 <Gregor> Mmmmmmmmmmm
17:22:04 <oerjan> s/banned/quieted/
17:22:07 <Phantom_Hoover> No; Mathnerd spammed the channel a while back, and oerjan refused to ban him. elliott spammed the channel, then after he'd stopped oerjan +qed him and elliott flipped his lid.
17:22:24 <Gregor> Oh, people who take things seriously.
17:22:25 <Gregor> So adorable.
17:22:29 <oerjan> i didn't know he had stopped when +q'ing him.
17:23:24 <oerjan> and then he went ballistic before i reached the end of backscroll and could make a proper decision.
17:25:58 <oerjan> i wish irssi had a way to split a channel window like vim does :(
17:26:39 <oerjan> at least i couldn't find one last i checked
17:27:39 <oerjan> (by which i mean two subwindows with different views of the same channel)
17:31:03 <FishNot> Hm, who is using my nick?
17:31:51 <FishNot> >.> Fishbot imposter
17:33:27 <oerjan> eek, the bot speaks!
17:34:05 <fizzie> fungot: Speak!
17:34:06 <fungot> fizzie: mr president, the pensioners' party and all pensioners, including italian pensioners, to whom we have a situation which completely changes the last 50 years, we have a problem with bringing forward the national contributions. in addition, we have not progressed towards real, practical proposals which promote global co-operation instead of commercial competition, especially to the rapporteur, mr koch, for his report.
17:35:02 <oerjan> italian pensioners overturning europe, check
17:39:23 -!- _Slereah has joined.
17:39:34 -!- Slereah has quit (Ping timeout: 240 seconds).
17:42:12 <fizzie> oerjan: Anyhoo: "/window new split" + "/lastlog -window #esoteric" almost gives you split two views of a channel. Only the old window is actually showing the channel, but the lastlog'd version does sort-of work for scrollback browsing.
17:42:43 <fizzie> (/lastlog always outputs to the active window.)
17:44:12 <oerjan> i'd switch that around if i used it, i think
17:45:41 <oerjan> ...i guess i could just use the logs.
18:15:58 <oklopol> did you know that ice is made of water?
18:18:12 <oerjan> i heard rumors.
18:30:02 -!- Vorpal has joined.
18:30:57 <fizzie> Ice XV, the best sort of ice. (The different forms of ice are weird.)
18:43:57 -!- oerjan has quit (Quit: leaving).
18:50:33 -!- ais523 has quit (Remote host closed the connection).
19:03:07 -!- kmc has quit (Quit: Leaving).
19:32:53 <kallisti> why are macros called macros?
19:34:32 <Deewiant> Short for macroinstruction, which is essentially "an instruction that does many things".
19:34:55 <fizzie> Aw. :/ My invented etymology was that you get a big ("macro") thing (the expansion) out of a small thing (the invocation).
19:35:02 <kallisti> macroinstruction literally means "big instruction"
19:35:12 <kallisti> yes
19:35:51 <fizzie> I fully support the campaign for renaming all macros "biggies".
19:35:54 <Deewiant> The "big" can mean "big in effect" or something like that, which is why I preferred "does many things".
19:36:06 <Deewiant> It's not big in itself, IMO.
19:36:11 <fizzie> "So what's this C++ template?" "Oh, it's no biggie."
19:37:30 <zzo38> http://esolangs.org/wiki/User_talk:User450 This is the only contribution by this user.
19:38:56 -!- Ngevd has joined.
19:39:22 <Ngevd> Hello!
19:40:02 -!- kmc has joined.
19:40:28 -!- kmc has quit (Read error: Connection reset by peer).
19:40:28 <Ngevd> I've written te start of an Underload interpreter in Haskell
19:41:45 -!- kmc has joined.
19:45:09 <fizzie> ^ul ((15a)(14s)(1k)(2e)(12l)(11l)(10 )(3H)(9a)(8s)(7k)(5e)(4l)(13l)(6 )(0H))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~:^):^
19:45:10 <fungot> Haskell Haskell Haskell Haskell Haskell Haskell Haskell Haskell Haskell Haskell Haskell Haskell ...too much output!
19:45:19 <Gregor> MUSHROOM MUSHROOM
19:45:44 <kallisti> YESSSSSSSS
19:46:02 <quintopia> fizzie :D
19:46:20 -!- kmc has quit (Remote host closed the connection).
19:46:46 -!- kmc has joined.
19:48:13 <fizzie> Actually I sorta screwed up in that two colors were wasted for spaces. I will do it once more, with feeling. Sorry for the rainbowness to all non-color-filtery folks.
19:48:16 <fizzie> ^ul ((15a)(14s)(1k)(2e)(12l)(11l)(10!)(0 )(3H)(9a)(8s)(7k)(5e)(4l)(13l)(6?)(0 )(0H))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~:^):^
19:48:17 <fungot> Haskell! Haskell? Haskell! Haskell? Haskell! Haskell? Haskell! Haskell? Haskell! Haskell? Haskel ...too much output!
19:49:01 <fizzie> (Now it utilimazes all 16 collurs.)
19:50:44 <zzo38> Why are movies only shown in 3D today? I tried to purchase non-3D ticket but they didn't have one.
19:50:45 <olsner> good utilimazation
19:51:10 <Ngevd> zzo38, because your cinema is FUTURISTIC
19:51:24 <Ngevd> Even Hexham's cinema has 3D now
19:51:46 <olsner> so what happened to elliott?
19:51:57 <Ngevd> I think he's banned from this channel
19:52:15 <fizzie> The rumours are going wild!
19:52:23 <fizzie> (No, he's not.)
19:52:26 <Ngevd> Okay
19:52:28 <zzo38> If elliott is banned then you should make then unbanned
19:52:37 <kallisti> lol
19:52:54 <kallisti> he just ragequit.
19:53:09 <fizzie> Anyway, it was discussed (again) today, you do not need to look very far back.
19:53:37 -!- kmc has quit (Quit: Leaving).
19:53:59 <Sgeo> He's very much talking in #haskell
19:54:03 <Sgeo> I wonder if I should ask
19:54:12 <kallisti> Sgeo: ask what?
19:54:20 <Sgeo> Why he hasn't come back
19:54:34 <Ngevd> I'm scared of #haskell
19:54:38 <Ngevd> It's big and scary
19:54:43 <kallisti> should be pretty clear why he hasn't come back, I would think.
19:55:06 <fizzie> It's in the topic and all; we're all bunch of power-mad optators.
19:55:11 <quintopia> i missed all the drama
19:55:20 -!- Gregor has left ("Leaving").
19:55:24 -!- Gregor has joined.
19:55:29 <quintopia> i am glad to have done
19:55:35 <Gregor> Reminder: Ctrl+W is leave channel, ctrl+Q is quit.
19:55:52 <fizzie> See, now Gregor has ragepa.. oh, never mind.
19:56:48 * kallisti was resent during the drama. there wasn't very much of it, at least on channel.
19:56:58 <Ngevd> I AM RESENT!!!
19:57:02 <kallisti> lol
19:57:10 <Sgeo> Hmm
19:57:20 <Sgeo> Should I bother updating elliott when there's an update?
19:57:27 <Vorpal> Phantom_Hoover, there?
19:57:40 <kallisti> Sgeo: these are questions you must ask yourself. deep soul-searching questions that define who you are.
19:58:11 <fizzie> Sgeo: Why not, maybe the updated versions will get new features or something?
20:04:04 <Phantom_Hoover> helo
20:04:50 <kallisti> gretins
20:04:54 <Ngevd> ih
20:04:56 <Phantom_Hoover> <Sgeo> Should I bother updating elliott when there's an update?
20:05:01 <Phantom_Hoover> Yes.
20:05:04 <Phantom_Hoover> <Sgeo> Why he hasn't come back
20:05:06 <Vorpal> Phantom_Hoover, I know you are a big fan of space games, and I found what looks like a quite interesting one.
20:05:19 <Phantom_Hoover> He hates everyone.
20:05:24 <Phantom_Hoover> Vorpal, oh dear.
20:05:54 <Vorpal> I'm both interested in if you heard about it (and have opinions on it), because it looks quite fun from watching some videos. And if not it might be of interest to you.
20:05:58 -!- Ngevd has quit (Quit: brb).
20:06:12 <Phantom_Hoover> What is it?
20:06:14 <Vorpal> Phantom_Hoover, called Evochron Mercenary. Saw it on the front page of steam.
20:06:25 <Phantom_Hoover> Oh no does it cost MONEYS
20:06:30 <Vorpal> well yes
20:06:36 <Vorpal> Phantom_Hoover, quite a bit in fact
20:06:40 <Vorpal> looks like a free-form open world space simulator.
20:06:40 <Phantom_Hoover> space is supposed to be freeeeeeeeeee
20:06:50 <Vorpal> with trading and battles and what not
20:07:08 <Phantom_Hoover> Also I got Skyrim like 4 days ago so other games are kind of pushed aside.
20:07:41 <Vorpal> oh and apparently there are no enforced jump gates or such, you can fly from the surface of one planet in one solar system to the surface of another in another solar system if you have the time and fuel to do so
20:07:56 <Vorpal> (though it does seem to have both jump drives and jump gate thingies)
20:08:05 <kallisti> Phantom_Hoover: let me know when you realize how unexciting the actual gameplay is. also when you discover a game-breaking bug.
20:08:38 <kallisti> (by game-breaking I mean your save file, not the entire game. :P )
20:08:43 <Phantom_Hoover> kallisti, d'aaaaaaw.
20:08:52 <Vorpal> Phantom_Hoover, anyway it looks kind of cool. I'm currently trying to find reviews of it. It seems to be indie. But it looks very complex and also graphically quite advanced
20:09:11 <Vorpal> Anyway I guess you got your new computer working then Phantom_Hoover?
20:09:14 <Vorpal> what was the issue?
20:09:26 <Phantom_Hoover> The issue was the graphics card not working.
20:09:32 <Vorpal> yes but why?
20:09:37 <Vorpal> fabrication issue?
20:09:40 <Vorpal> handling issue?
20:10:10 <Phantom_Hoover> We Just Don't Know(TM).
20:10:18 <Vorpal> hm okay
20:10:47 <Vorpal> the game cost 18.39€ btw
20:10:54 <Vorpal> quite a bit outside my current budget
20:11:20 -!- kmc has joined.
20:11:32 <Vorpal> anyway it has good a reasonable metacritic score (not that that means much)
20:12:02 <kallisti> Phantom_Hoover: isn't that the expression people make when something is really cute or adorable?
20:12:14 <Phantom_Hoover> kallisti, indeed.
20:12:24 <Vorpal> also it seem to have a shipyard system comparable to the character creation in skyrim XD
20:13:12 <kallisti> Phantom_Hoover: then I don't understand that reaction. :P
20:13:22 <Phantom_Hoover> kallisti, I know. d'aaaaaaaaw.
20:13:52 -!- Ngevd has joined.
20:13:57 <Ngevd> Hello!
20:14:32 <Phantom_Hoover> Hello.
20:15:18 -!- kmc has quit (Client Quit).
20:18:06 <Ngevd> There are a few small bugs in my code
20:21:16 <Phantom_Hoover> Oi, Ngevd, are matrices a further maths thing
20:21:34 <Ngevd> Yes
20:21:40 <quintopia> what
20:21:45 <quintopia> further than what
20:21:52 <Ngevd> Normal maths
20:21:55 <Ngevd> Of course
20:22:02 -!- kmc has joined.
20:22:03 <quintopia> i consider linear algebra normal maths
20:22:19 <Ngevd> There's also Even Further maths and Too Far You've Passed It maths
20:22:28 <quintopia> normal maths is everything up to calc 3
20:22:36 <quintopia> after that you're specializing :)
20:32:07 -!- Ngevd has quit (Read error: Connection reset by peer).
20:32:23 -!- Ngevd has joined.
20:37:07 <Vorpal> Phantom_Hoover, ooh you can build new stations and such, and AI ships and so on will begin use them.
20:37:12 <Vorpal> that seems pretty cool
20:38:29 <Phantom_Hoover> quintopia, linear algebra linear algebra or matrices but a bit harder linear algebra?
20:39:45 <quintopia> Phantom_Hoover: say that again but differently
20:40:20 <Phantom_Hoover> quintopia, do you write, at any point, a double-struck K?
20:41:03 <quintopia> uh
20:41:04 -!- Ngevd has quit (Ping timeout: 248 seconds).
20:41:13 <quintopia> no?
20:42:01 <Phantom_Hoover> Then it's matrices but a bit harder linear algebra, qed
20:43:13 <quintopia> what is a double-struck k for?
20:43:26 <Phantom_Hoover> Any field.
20:48:53 <Vorpal> Phantom_Hoover, btw it seems there is a free demo of that game, available from the official website, though not available through steam heh
20:49:06 <Vorpal> might try it out tomorrow :)
20:52:19 <quintopia> oh i did that stuff in abstract algebra :)
20:53:17 <Phantom_Hoover> But if you were just doing linear algebra with C or R...
20:56:45 <quintopia> we differentiate between abstract algebra and linear algebra
20:56:53 <quintopia> linear algebra doesnt leave C
20:57:07 <quintopia> abstract algebra is not normal math...its a specialization
20:57:18 <Phantom_Hoover> ...
20:57:46 <Vorpal> quintopia, which country is that?
20:58:10 <quintopia> at least georgia, probably most of the u.s.
20:58:34 <Vorpal> ah
20:58:51 <quintopia> an easy way to distinguish is that in normal math you do problems and projects for hw, and in the rest of math, hw is all proofs.
20:59:44 <Vorpal> Phantom_Hoover, btw several reviews of this game compares it to Elite. And I know you played oolite a lot so...
21:00:00 <Vorpal> might be worth looking at, I'm definitely going to look at the demo at least
21:00:20 <Phantom_Hoover> Vorpal, did you get hired by a marketing agency or something?
21:01:14 <Vorpal> Phantom_Hoover, no, but I'm really amazed by this game, I love space trade & combat simulators, and that this franchise just passed me by saddens me.
21:06:47 -!- Ngevd has joined.
21:06:52 <Ngevd> Hello
21:07:04 <Ngevd> @ping
21:07:04 <lambdabot> pong
21:07:44 <kallisti> Ngevd: hey
21:07:59 <Ngevd> Well, my Underload interpreter is nearing completion
21:08:08 <FishNot> Underload?
21:08:13 * FishNot esolangs it
21:08:50 <Ngevd> Also, my family computer has a virus on it
21:09:06 <Ngevd> And my internet is ridiculously slow, except for IRC?
21:09:36 <FishNot> IRC doesn't take a lot of bandwidth. Your internet might just be slow
21:09:54 <FishNot> I've run IRC on 1kb/s without a problem.
21:10:30 <Ngevd> http://hpaste.org/56751
21:16:30 <Ngevd> Ooh, just thought of something
21:18:19 <kallisti> so uh....
21:18:22 <kallisti> if I'm writing an instance
21:18:28 <kallisti> where I've defined some typeclass constraints
21:18:45 <kallisti> are those variables visible in the scope of type annotations within the methods....?
21:19:11 <kallisti> I'm guessing no.
21:20:10 <kallisti> oh nevermind GHC already has a bounded instance for (Bounded a, Bounded b) => Bounded (a,b)
21:20:20 <kallisti> (but no Enum instance interestingly, I had to write that one myself)
21:20:37 <fizzie> Ngevd: What's the W and F stand for?
21:20:42 <Ngevd> Wrap and Flip
21:20:48 <fizzie> Ah.
21:21:43 <Ngevd> Also, I've changed the run and run' functions to make them more usable and less stupid
21:27:44 <fizzie> (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j, Bounded k, Bounded l, Bounded m, Bounded n, Bounded o) => Bounded (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -- my god it's full of Bounded.
21:28:30 <kallisti> instance (Enum a, Enum b, Bounded a) => Enum (a,b) where
21:28:35 <kallisti> imagine this one, at that size of tuple.
21:30:04 <Ngevd> http://en.wikipedia.org/wiki/Pairing_function
21:30:15 <Ngevd> Although that makes it less obvious
21:31:00 <fizzie> Oh, you didn't go for plain (Enum a, Enum b) => Enum (a,b).
21:33:14 -!- FishNot has quit (Ping timeout: 252 seconds).
21:36:27 <kallisti> fizzie: I'm not really sure how I would do that.
21:36:39 <Ngevd> <Ngevd> http://en.wikipedia.org/wiki/Pairing_function
21:37:15 <kallisti> > 1 + (2 * 28)
21:37:16 <lambdabot> 57
21:37:31 <kallisti> as it turns out, this is much less than 255.
21:37:34 <kallisti> *256
21:37:56 * kallisti decided to take the loop info off of the board and instead just use a set or something
21:38:05 <kallisti> a list of sets actually.
21:38:15 <fizzie> ^chr 57
21:38:16 <fungot> 9
21:38:34 <fizzie> Yay, it did have that.
21:38:41 <fizzie> (Wasn't sure.)
21:38:52 <Ngevd> ^chr 100
21:38:52 <fungot> d
21:39:15 <fizzie> > 256 + 65
21:39:16 <lambdabot> 321
21:39:24 <fizzie> ^chr 321
21:39:24 <fungot> A
21:39:34 <fizzie> Now with wraparound.
21:39:38 <Ngevd> ^ord t
21:39:38 <fungot> 116
21:39:46 <fizzie> (Well, and before, too.)
21:39:53 <fizzie> ^show chr
21:39:53 <fungot> ,[>[->+10<]>[-<+>]<2-48[>+<-],]>.
21:39:59 <fizzie> ^show ord
21:40:00 <fungot> >>,[[-<+2>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[<[-]+>->+<[<-]]]]]]]]]]>]<2[>+6[<+8>-]<-.[-]<]+32.[-]>>,]
21:40:21 <fizzie> Much ado about decimals.
21:42:03 <fizzie> ^chr 10@
21:42:04 <fungot> t
21:42:20 <fizzie> Doesn't also much care about digits, exactly.
21:52:15 <zzo38> If they wanted to change the Easter calculation (although there is really no need to do so), I have suggestion as follows: Use the Vatican's timezone to determine the date when the Sun's tropical ecliptic longitude is zero (a.k.a. Aries). Find the nearest full moon (Moon opposite Sun) afterward, again using Vatican's timezone. And then find the next Sunday.
21:53:52 <quintopia> so, you came up with a method for calculating a day that no one really cares when it happens that no one is going to ever use and you know this? why?
21:54:08 <zzo38> (Alternatively, use the closest aspect according to when the full moon is visible from the Vatican; because it won't be visible during the day time)
21:54:41 <zzo38> quintopia: There are some people who wanted it adjusted in various ways, and the Roman Catholic Easter is different from Orthodox Easter even now.
21:54:53 <quintopia> why the vatican? noncatholics practice easter too...
21:55:05 <quintopia> oh
21:55:05 <zzo38> So, even now, the Orthodox Easter is different. Is that a problem?
21:55:12 <quintopia> nope
21:55:18 <Ngevd> I would suggest Jerusalem rather than Rome
21:55:25 <quintopia> you're only suggesting a time for the catholics to have easter
21:55:33 <quintopia> makes sense
21:56:05 <zzo38> quintopia: It is the Vatican's job to set the date of Easter. That is why. And even if it isn't only Catholics.
21:56:26 <zzo38> (If it is not agreed by the Catholics, then Jerusalem might be usable instead of Rome)
21:56:32 <quintopia> its their job only because they say it is
22:01:05 <fizzie> Stupid W|A doesn't even understand "Vatican papal density". (As far as countries go, they've got a quite high one.)
22:01:53 <pikhq> Another factor in it is that Orthodox churches generally use the Julian calendar for holidy dates, not the Gregorian.
22:02:33 <quintopia> `addquote <fizzie> Stupid W|A doesn't even understand "Vatican papal density". (As far as countries go, they've got a quite high one.)
22:02:38 <pikhq> Which effects the calculation subtly.
22:02:44 <HackEgo> 805) <fizzie> Stupid W|A doesn't even understand "Vatican papal density". (As far as countries go, they've got a quite high one.)
22:06:03 <zzo38> pikhq: Yes, I know that too.
22:06:34 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
22:07:19 <zzo38> fizzie: There are a lot of things that Wolfram|Alpha doesn't understand. I suggest we make up a new similar program based on Haskell. Which can still connect to internet when required but can also use local data.
22:07:29 <zzo38> And free-software/open-source.
22:08:47 <Ngevd> We should call it Askell
22:09:04 <zzo38> OK
22:10:31 <quintopia> haha
22:10:49 <quintopia> i think we should have such a system based on the watson algorithms
22:12:03 <zzo38> Whatever it is, you can have it entered using Haskell codes in GHCi as well as using ordinary English text, or any combination of the two
22:21:17 -!- Patashu has joined.
22:22:19 -!- Phantom_Hoover has joined.
22:28:10 <Ngevd> So, thoughts on my Underload interpreter?
22:41:20 -!- augur_ has joined.
22:42:55 <Ngevd> Oh god I just managed to reference Lightning Made of Owls
22:45:15 <kallisti> oh, hmmm, I just found the core of my portal chess implementation.
22:45:30 <kallisti> it's, the code that provides a list of all the possible moves for a given piece.
22:45:36 <kallisti> pretty much handles all the logic.
22:45:40 <kallisti> except capturing.
22:45:42 <kallisti> which is handled by...
22:45:52 <kallisti> the code that provides a list of all the possible captures for a given piece. :P
22:56:15 <Sgeo> elliott is turning #haskell into a place for esolang discussion.
22:57:04 <Ngevd> Oh no
22:57:21 <Ngevd> Is #haskell logged?
22:57:33 <Sgeo> Yes
22:57:40 <Ngevd> Where?
22:57:51 <Sgeo> http://bit.ly/5mwtRQ
22:58:04 <Sgeo> More conveniently, http://tunes.org/~nef/logs/haskell/?C=M;O=D
22:59:37 -!- Vorpal has quit (Read error: Operation timed out).
23:00:03 <Ngevd> What time zones are the logs in?
23:00:24 <Ngevd> Hang on7
23:00:32 <Phantom_Hoover> The Tunes ones?
23:00:34 <Phantom_Hoover> Tunes time.
23:00:44 <Phantom_Hoover> It corresponds to no known timezone of any channel regular.
23:01:04 <zzo38> I think they are Pacific timezone because it is the same as my timezone
23:01:38 <Ngevd> They appear to be 7 hours and 49 minutes behind GMT?
23:02:07 <Phantom_Hoover> See what I mean?
23:03:25 <Ngevd> Personally, I think something like cascade :: (a -> a) -> Int -> a -> a should be in prelude
23:03:33 <Ngevd> cascade _ 0 a = id
23:03:47 <Ngevd> cascade f n a = cascade f (n-1) (f a)
23:03:53 <Ngevd> s/id/a/
23:03:54 <Phantom_Hoover> That's churchify, isn't it?
23:03:56 <Phantom_Hoover> Yes, it is.
23:04:12 <Phantom_Hoover> You mean cascade f n = f^n?
23:04:31 <Ngevd> Prossibly?
23:05:27 <Phantom_Hoover> @hoogle (a->a)->Int->a->a
23:05:27 <lambdabot> Data.Sequence iterateN :: Int -> (a -> a) -> a -> Seq a
23:05:28 <lambdabot> Data.Sequence adjust :: (a -> a) -> Int -> Seq a -> Seq a
23:05:28 <lambdabot> Data.IntMap adjust :: (a -> a) -> Key -> IntMap a -> IntMap a
23:05:47 <Phantom_Hoover> I guess it's just not all that useful?
23:06:10 <Ngevd> I use it surprisingly frequently
23:06:36 <Ngevd> :t \f n a -> iterate f a !! n
23:06:37 <lambdabot> forall a. (a -> a) -> Int -> a -> a
23:06:54 <Phantom_Hoover> :t iterate
23:06:55 <lambdabot> forall a. (a -> a) -> a -> [a]
23:07:23 <Phantom_Hoover> > iterate (++"a") ""
23:07:24 <lambdabot> ["","a","aa","aaa","aaaa","aaaaa","aaaaaa","aaaaaaa","aaaaaaaa","aaaaaaaaa"...
23:07:28 <monqy> a
23:07:59 <Phantom_Hoover> http://www.reddit.com/r/math/comments/opb83/programming_for_mathematicians/
23:08:09 <Phantom_Hoover> /r/math's top suggestion: Javascript.
23:08:24 <kallisti> writing the move set is less tedious than I thought: http://hpaste.org/56754
23:08:36 <Ngevd> @ask elliott How goes Rosyarrow?
23:08:36 <lambdabot> Consider it noted.
23:09:11 <monqy> :t \ f n -> foldr (.) id (replicate n f)
23:09:12 <lambdabot> forall b. (b -> b) -> Int -> b -> b
23:09:48 <Phantom_Hoover> Ngevd, you know he's online, right?
23:09:51 <Ngevd> Yes
23:09:52 <lambdabot> Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it.
23:09:58 <Ngevd> I'm just scared of #haskell
23:10:03 <Ngevd> And don't like /msg
23:10:07 <Ngevd> @messages
23:10:07 <lambdabot> elliott said 50s ago: Guess!
23:10:17 <Phantom_Hoover> You... don't... like... /msg...
23:10:17 <fizzie> Useful!
23:10:58 <fizzie> PRIVMSG allergy is a real disease! (Shush about the real nature of channel messages.)
23:11:06 <Ngevd> @tell elliott ...being invaded by hoards of goblins, out of coal, and burning in lava?
23:11:06 <lambdabot> Consider it noted.
23:11:25 <Phantom_Hoover> Ngevd, hey, at least the third problem obviates the second.
23:11:53 <monqy> NOTICE "the only way"
23:12:01 <Ngevd> So...
23:12:02 <lambdabot> Ngevd: You have 2 new messages. '/msg lambdabot @messages' to read them.
23:12:03 <fizzie> What's this now, #esoteric-dorkfortress suddenly?
23:12:07 <Ngevd> @messages
23:12:07 <lambdabot> elliott said 34s ago: Exactly the same as it was the last time you asked.
23:12:07 <lambdabot> elliott said 22s ago: Also, you used @tell when you meant @ask; die.
23:12:46 <monqy> it's like elliott is right here with us
23:12:49 <Ngevd> @tell elliott I thought they were synonymous!
23:12:49 <lambdabot> Consider it noted.
23:13:14 -!- hanzifey9 has joined.
23:13:20 <Ngevd> @messages
23:13:20 <lambdabot> You don't have any new messages.
23:13:42 <Ngevd> Aww
23:13:42 <lambdabot> Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it.
23:13:48 <Ngevd> @messages
23:13:48 <lambdabot> elliott said 27s ago: One produces "Ngevd said", the other produces "Ngevd asked". You are a bad person.
23:14:18 -!- parabellum has joined.
23:14:28 <Ngevd> @tell elliott also, why are you not in #esoteric?
23:14:28 <lambdabot> Consider it noted.
23:14:40 <monqy> what if he is in #esoteric
23:14:41 <monqy> secretly
23:14:46 <Ngevd> So, I've got to keep talking so I know when there is a response
23:14:54 <monqy> alternatively: he's in our hearts
23:14:58 <monqy> and our hearts are in #esoteric
23:14:59 <monqy> so
23:15:11 -!- FishNot has joined.
23:15:17 <Ngevd> He called me a bad person. He is not in my heart.
23:15:50 <Ngevd> And I suspect he may be not talking to me for using @tell again
23:15:51 <lambdabot> Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it.
23:15:54 <Ngevd> @messages
23:15:54 <lambdabot> elliott asked 29s ago: Why are you not in #haskell?
23:16:07 <Ngevd> @ask elliott because it is big and scary and big.
23:16:07 <lambdabot> Consider it noted.
23:16:17 <Ngevd> Okay, he is talking to me
23:16:19 <Ngevd> Ish
23:16:23 <Ngevd> By proxy
23:16:36 <Ngevd> Hmm
23:17:02 -!- Sgeo has quit (Read error: Connection reset by peer).
23:17:11 <Ngevd> Favourite esolang, everybody
23:17:11 <lambdabot> Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it.
23:17:14 <Ngevd> @message
23:17:14 <lambdabot> Maybe you meant: messages messages?
23:17:20 <Ngevd> @messages
23:17:20 <lambdabot> elliott said 38s ago: That's not a question.
23:17:48 <Ngevd> @tell elliott How is it not a question?
23:17:48 <lambdabot> Consider it noted.
23:18:21 <Ngevd> My favourite esolang is Piet, because it was the first esolang I was really interested in.
23:18:26 <kallisti> > 1 + 2 * (8*2+8*8*8+4)
23:18:27 <lambdabot> 1065
23:18:29 <Ngevd> Also, the pictures are pretty
23:18:31 <kallisti> damn
23:19:16 -!- Sgeo has joined.
23:19:18 <monqy> whats esolang
23:20:10 <kallisti> monqy: describe to me the list of words that you have an objective definition for.
23:20:20 <monqy> help
23:21:19 <Ngevd> <monqy> whats esolang <-- Why... it is man's endevour to become God!
23:21:20 <lambdabot> Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it.
23:21:23 <Ngevd> @messages
23:21:23 <lambdabot> elliott said 1m 24s ago: Because it ended with a "." and didn't ask me anything and yet you sent it with @ask anyway, probably because you hate kittens.
23:22:01 <Ngevd> @ask elliott Kittens are mean and scary and I got scratched by a kitten when I was 3.
23:22:01 <lambdabot> Consider it noted.
23:22:11 <Ngevd> True story
23:22:58 <zzo38> Yes that is possible to be scratched by a kitten, or bitten by a dog, or shot by a human.
23:23:10 <Phantom_Hoover> Ngevd, DIE YOU BASTARD
23:23:31 <Ngevd> Phantom_Hoover, you already want me dead for at least 2 reasons
23:23:40 <Phantom_Hoover> I forget the second.
23:23:47 <kallisti> should I: a) change the board so that it's easier to do portal logic without relying on a seperate game state structure b) maintain a single byte representation for each possible square state (as opposed to a 2 byte representation)
23:24:03 <kallisti> I think I'm going to go with a
23:24:09 <Ngevd> My desire to play Portal Chess, and expressions of its awesomeness
23:24:31 <Ngevd> kallisti, a. That's thinking with portals
23:24:36 <Phantom_Hoover> If you need someone to /tell/ you that chess variants should have as little hidden state as possible...
23:24:57 <kallisti> what makes state "hidden" in an implementation
23:25:16 <Ngevd> I don't know of any hidden states in Portal Chess
23:26:05 <zzo38> Even in FIDE chess, there is castling. Which cannot always be known just by viewing the board if castling is permitted or not.
23:26:25 <kallisti> ha! portal chess doesn't even have that. therefore less hidden state than FIDE chess.
23:26:35 <kallisti> provided you have like...
23:26:39 <kallisti> some string
23:26:43 -!- Phantom_Hoover has quit (Quit: Leaving).
23:27:06 <Ngevd> kallisti, define queen movement etc and I'll give you a game of Portal Chess tomorrow
23:27:21 <kallisti> ....but I'm currently working on it.
23:27:31 <kallisti> DUPLICATION OF EFFORT IS NO GOOD
23:27:46 <kallisti> instead you should work on a graphical client, uh, with the network protocol I haven't designed yet.
23:28:01 <kallisti> or a CLI client if you prefer.
23:28:07 <kallisti> I want one of those too.
23:28:46 <kallisti> zzo38: other hidden state: whose turn it is!!!
23:29:13 <kallisti> man chess is the worst chess variant.
23:30:24 <zzo38> kallisti: Whose turn it is, as well as en passant, is only requiring recent information. But it is still true, you don't know just by looking at the board.
23:31:32 <kallisti> Ngevd: but currently the lens (aka the queen piece) moves like a queen, and has a direction, but I haven't decided on any specific capture rules besides its lensy behavior
23:31:44 <kallisti> which is the same as my original prism concept, except directed.
23:31:56 <quintopia> you should be able to tell if en passant is allowed just by looking at the board...
23:32:07 <kallisti> the turn too
23:32:21 <quintopia> nah
23:32:23 <kallisti> white should always be the current turn. each turn you should switch out every black piece with every white piece
23:32:34 <quintopia> lol
23:33:13 <quintopia> that works well on a computer where people are looking at two different screens, but it would just confuse people irl
23:33:45 <kallisti> > 8^3
23:33:46 <lambdabot> 512
23:33:54 <MDude> White always moves first, so you could tell by looking if it wans't possible to enter the same state via multiple means.
23:34:44 <MDude> Maybe have the last peice moved be upside down.
23:35:27 <Ngevd> But unless it's a rook or a Knight, it'd fall over!
23:35:27 <lambdabot> Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it.
23:35:30 <Ngevd> @messages
23:35:31 <lambdabot> elliott said 7m 27s ago: I told you you were a bad person.
23:37:09 -!- hanzifey9 has quit (Remote host closed the connection).
23:37:17 <quintopia> MDude: it is possible though. hence the rule where looping moves become stalemates?
23:37:56 <Ngevd> @tell elliott I will attempt to reform myself. Also I will sleep. Goodnight.
23:37:56 <lambdabot> Consider it noted.
23:37:58 <Ngevd> Goodnight
23:38:00 <kallisti> > (8*2+8*8*8+4)
23:38:01 <lambdabot> 532
23:38:04 -!- Ngevd has quit (Quit: Goodbye).
23:38:19 <zzo38> Another rule used in some variants, any player causing a repeated position loses
23:38:21 <MDude> I tihnk so, though I don't remember any particular loop.
23:38:22 <quintopia> @tell elliott don't come back anytime; you've already run me dry! this is your payback...moneygrabber!
23:38:22 <lambdabot> Consider it noted.
23:39:11 <zzo38> Do we like Pokemon Card????? http://zzo38computer.cjb.net/img_14/pokemon_card_01.png
23:39:31 <quintopia> zzo38: but it was once proven that there are repeated positions that lead to the person doing the repeating being able to force a win
23:39:50 <quintopia> (yes those rules are common though)
23:40:10 <zzo38> quintopia: Still, it depends on the variant. In FIDE chess, repetition is a draw.
23:40:47 <zzo38> In games with random card/dice there needs no rule for repetition, just continue the game in case of repetition.
23:42:28 <quintopia> it makes sense not to let someone ever start their turn with the same board they started with before, all things deterministic, but the same board position on a different playerms turn should be allowed.
23:42:35 <zzo38> Once in playing Pokemon Card, I was losing but realized I just needed to defend for eight turns and then I won. I managed to defend for seven turns, and then lost on the final turn.
23:42:54 <quintopia> wow
23:42:55 <zzo38> quintopia: Yes, same board position on different player's turn should still be permitted.
23:42:56 <quintopia> lucky
23:44:20 <zzo38> I usually win at Pokemon Card due to the opponent's PROFESSOR OAK card. They think they can win with that card but actually it is the quickest way to lose.
23:50:44 <zzo38> There are other situations, the opponent has a lot of evolved cards and a lot of things, but by guessing what card is in their hand, I could defend for twenty turns until they ran out of cards and won, even though they picked up five side cards already (with only one remaining) and I have not knocked out any of their pokemons.
23:51:04 <quintopia> is it the card that lets you replace your hand?
23:51:06 <zzo38> Bluffing was an important aspect in this duel.
23:51:23 <zzo38> quintopia: PROFESSOR OAK card means "Discard your hand and then draw seven cards."
23:51:35 <quintopia> yeah that was my thought
23:53:46 <zzo38> (This one with bluffing, I did manage to win. Not only by bluffing but by defending timing the cards correctly including GUST OF WIND and ENERGY REMOVAL (and of course to know what targets to select). Such is the disadvantage of evolution cards.)
23:55:29 <zzo38> Once I won a game of Pokemon Card only because I had an evolution card which I played for the sole purpose of increasing my own retreat cost. The card could attack, and had a retreat cost of zero so could also retreat; but I evolved it so that it could not attack (not even with energy in my hand) and increased its retreat cost to one. And that is how I won.
23:59:11 <kallisti> > succ (maxBound :: Bool)
23:59:12 <lambdabot> *Exception: Prelude.Enum.Bool.succ: bad argument
23:59:14 <quintopia> i dont know anything about pokemon card
23:59:15 <zzo38> I have also invented an "overmate" rule for Pokemon Card, and have occasionally attempted to win with overmate and even succeeded.
23:59:20 * quintopia wanders off
23:59:35 <monqy> > maxBound
23:59:36 <lambdabot> ()
23:59:37 <kallisti> is there anything that catches exceptions and returns a Maybe without wrapping IO?
2012-01-21
00:03:09 <zzo38> quintopia: O, you don't know? You probably won't know overmate even if you do know about Pokemon Card, because overmate is a rule I have invented.
00:04:49 <Sgeo> wrapMaybeHalts :: a -> Maybe a
00:04:55 <kallisti> @hoogle Bool -> a -> Maybe a
00:04:56 <lambdabot> Control.Exception.Base assert :: Bool -> a -> a
00:04:56 <lambdabot> Control.Exception assert :: Bool -> a -> a
00:04:56 <lambdabot> Control.OldException assert :: Bool -> a -> a
00:05:02 <zzo38> The theoretical maximum overmate is 8 (knock out 5 opponent's pokemons beyond your last side card, leave opponent with no cards in play, and both players have no cards in draw pile)
00:05:03 <Sgeo> wrapMaybeHalts = -- todo: Solve the halting problem
00:05:15 <kallisti> Sgeo: note that error catching has nothing to do with the halting problem.
00:05:24 <parabellum> which environment you use for brainfuck?
00:05:44 <Sgeo> Errors and infinite loops are semantically equivalent outside of IO
00:05:49 <zzo38> The highest overmate I have ever made, though, is four points.
00:05:58 -!- FishNot has quit (Ping timeout: 252 seconds).
00:06:02 <Sgeo> Maybe you could do something with unsafePerformIO?
00:06:07 <kallisti> Sgeo: and therefore it's impossible to catch errors
00:06:08 <kallisti> ?
00:06:14 <quintopia> zzo38: you have explained overmate before. it's in my logs and the channel logs
00:06:28 <kallisti> Sgeo: no, no need. but it is something that should be possible I think. I don't know what it would break though.
00:06:28 <quintopia> in any case, i am not interested in pokemon card
00:06:29 <zzo38> Sgeo: Yes. However, you can still use Either monad to make up a kind of way of functions that can have errors values
00:06:48 <Sgeo> zzo38, I think kallisti intends to catch bottoms
00:06:52 <kallisti> no
00:07:00 <Sgeo> Some bottoms
00:07:03 <kallisti> you are confusing /error handling/ with /bottom/
00:07:04 <kallisti> yes
00:07:15 <zzo38> What bottom?
00:07:29 <Sgeo> The bottoms that are not infinite loops
00:07:35 <kallisti> the kind that otherwise halts the runtime unless caught
00:08:12 <Sgeo> I'd think it's impossible without IO. Semantically, a bottom is a bottom
00:08:25 <Sgeo> You seem to want an f such that f _|_ = might be _|_
00:08:37 <kallisti> Sgeo: yes you would need to use unsafePerformIO
00:09:00 <zzo38> I don't like that way. You should use a macro instead.
00:09:09 <kallisti> it's for things like
00:09:15 <kallisti> > succ (maxBound :: Bool)
00:09:16 <lambdabot> *Exception: Prelude.Enum.Bool.succ: bad argument
00:09:23 -!- roper has quit (Quit: Abandonando).
00:09:24 <kallisti> things that Prelude triggers runtime errors for
00:09:30 <kallisti> but you want to be in a Maybe instead.
00:09:33 <kallisti> or Either
00:09:47 <zzo38> You could just write new function that checks the error at first.
00:09:53 <kallisti> yes that's what I'm doing.
00:10:01 <zzo38> And then works in the Kleisli categories for Either or Maybe monads
00:11:35 <zzo38> (Such as, the Kleisli category for Maybe monad would be the category of partial functions, and the Kleisli category for IO monad being the category of functions with side effects.)
00:14:02 <zzo38> Is that how you do Kleisli category?
00:19:37 <Sgeo> kallisti, update
00:20:14 -!- kmc has quit (Quit: Leaving).
00:59:20 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
01:14:04 -!- parabellum has left.
01:17:38 <zzo38> I made a list of some differences and similarities from Icosahedral RPG to D&D 3.5e
01:18:09 <zzo38> gopher://zzo38computer.cjb.net/0phlog*c_dnd.icosahedral-rpg-i
01:50:45 <Sgeo> kallisti, flash edited
02:36:01 <zzo38> Mostly using Linux at FreeGeek (they use Ubuntu there), I am using the command-line virtual console mode. But when I do use the Windows-like GUI, I sometimes get annoyed that various obscure features of Windows fail to work on the Ubuntu GUI (which is designed to be like Windows).
02:36:16 <kallisti> *PortalChess> moveSet newBoard (R7, B)
02:36:16 <kallisti> [(R6,B)]
02:36:16 <kallisti> *PortalChess> moveSet newBoard (R2, B)
02:36:16 <kallisti> [(R3,B)]
02:36:18 <kallisti> awwwww yeah
02:36:43 <kallisti> one piece down, six to go.
02:38:28 <zzo38> For example: * Double-clicking the control box will not close the window. * Dragging the scrollbar and then moving the mouse pointer away from the scrollbar before releasing the mouse button will not snap back. * At one time, double-clicking the title-bar did not maximize the window, although they fixed that, so it works now.
02:39:12 <zzo38> Do you know what ReactOS does in these cases?
02:42:42 <zzo38> It doesn't really matter if Ubuntu does differently, but ReactOS should do the same things as Windows
02:54:50 -!- zzo38 has quit (Remote host closed the connection).
02:55:27 -!- FishNot has joined.
02:56:23 <kallisti> holy monads batman.
02:57:45 <Sgeo> Someone should totally write a game that breaks if the behavior of double-clicking the title is different
03:09:32 <kallisti> @hoogle (a, b) -> (b, a)
03:09:33 <lambdabot> Data.Tuple swap :: (a, b) -> (b, a)
03:09:33 <lambdabot> Data.Graph.Inductive.Query.Monad (><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d)
03:09:33 <lambdabot> Data.Graph.Inductive.Query.Monad mapSnd :: (a -> b) -> (c, a) -> (c, b)
04:06:48 <FishNot> Whoo, monads
04:07:03 <FishNot> The ultimate in unnecessary abstractions.
04:07:51 -!- FishNot has quit (Quit: A fishbot swims away).
04:34:00 <kallisti> linearMoves m cs ps = case step board m of
04:34:00 <kallisti> Just m'@(Move c' d')
04:34:00 <kallisti> | d /= d' ->
04:34:00 <kallisti> case step' m `member` ps of
04:34:00 <kallisti> True -> (cs, ps)
04:34:02 <kallisti> False -> linearMoves m' (c':cs) (insert m' ps)
04:34:05 <kallisti> | otherwise -> linearMoves m' (c':cs) ps
04:34:07 <kallisti> Nothing -> (cs, ps
04:34:10 <kallisti> help.
04:40:13 <kallisti> @hoogle unfoldr
04:40:13 <lambdabot> Data.List unfoldr :: (b -> Maybe (a, b)) -> b -> [a]
04:40:14 <lambdabot> Data.ByteString.Lazy.Char8 unfoldr :: (a -> Maybe (Char, a)) -> a -> ByteString
04:40:14 <lambdabot> Data.ByteString.Char8 unfoldr :: (a -> Maybe (Char, a)) -> a -> ByteString
04:40:34 <kallisti> ah yes this is what I'm looking for
04:40:38 <kallisti> er wait
04:40:42 <kallisti> yes.
04:41:19 <kallisti> @hoogle unfold
04:41:20 <lambdabot> Data.List unfoldr :: (b -> Maybe (a, b)) -> b -> [a]
04:41:20 <lambdabot> Data.Tree unfoldForest :: (b -> (a, [b])) -> [b] -> Forest a
04:41:20 <lambdabot> Data.Tree unfoldForestM :: Monad m => (b -> m (a, [b])) -> [b] -> m (Forest a)
04:41:33 <kallisti> hmmm no list unfold I guess.
04:41:40 <kallisti> er
04:41:42 <kallisti> set unfold I mean
04:46:57 -!- cheater has quit (Ping timeout: 248 seconds).
04:49:32 <kallisti> wow everything was relatively clean until I got here... :P
04:50:26 <kallisti> I think it would be cleaner if I used State here.
04:52:57 <itidus21> if you have escaped the State then you can't sell out to it now
04:53:45 <itidus21> just kidding
05:04:07 <kallisti> @src sequence
05:04:07 <lambdabot> sequence [] = return []
05:04:08 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
05:04:08 <lambdabot> -- OR: sequence = foldr (liftM2 (:)) (return [])
05:14:16 <kallisti> :t unions
05:14:17 <lambdabot> Not in scope: `unions'
05:21:22 -!- cheater has joined.
05:46:54 <kallisti> @src liftM2
05:46:54 <lambdabot> liftM2 f m1 m2 = do { x1 <- m1; x2 <- m2; return (f x1 x2) }
05:47:02 <kallisti> :t liftM2
05:47:03 <lambdabot> forall a1 a2 r (m :: * -> *). (Monad m) => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
06:03:29 -!- TeruFSX has quit (Read error: Connection reset by peer).
06:04:09 -!- TeruFSX has joined.
06:04:30 -!- MDude has changed nick to MSleep.
06:26:09 <kallisti> http://hpaste.org/56781 this must be what crazy people write on walls.
06:28:32 <kallisti> I wonder what other ways I could do this.
06:28:40 <kallisti> instead of defining what the entire moveset is.
06:32:11 <itidus21> i think that state is wysiwig
06:32:28 <kallisti> lol
06:32:41 <itidus21> ^wyg
06:32:51 <kallisti> oh..
06:33:33 * kallisti can't figure out what abstraction I should be using to make this better.
06:35:37 <itidus21> http://www.haskell.org/haskellwiki/Applications_and_libraries/Games
06:36:21 <kallisti> no.
06:36:54 <kallisti> I'm writing server code, not graphical stuff.
06:37:21 <kallisti> and uh.... none of those are abstractions
06:37:22 <kallisti> just games.
06:39:57 <itidus21> i am dearly attached to state
06:40:24 <Sgeo> @unmtl State
06:40:24 <lambdabot> Plugin `unmtl' failed with: `State' is not applied to enough arguments, giving `/\A B. A -> (B, A)'
06:40:30 <Sgeo> @unmtl State s
06:40:31 <lambdabot> Plugin `unmtl' failed with: `State s' is not applied to enough arguments, giving `/\A. s -> (A, s)'
06:40:33 <Sgeo> @unmtl State s a
06:40:33 <lambdabot> s -> (a, s)
06:40:34 <itidus21> i also don't see that as a fault but merely as trying to solve a different problem
06:41:33 <Sgeo> The notion of a thing that "changes state" and gives back a value is just a thing that takes in a current state, and returns a value, and a different state
06:44:11 <itidus21> a notion is a concept defined in the terms the definer best understands :>
06:44:55 <Sgeo> Take the universe.
06:45:11 <Sgeo> When you do something, you change the universe.
06:45:22 <itidus21> "fsvo universe" :P
06:45:54 <Sgeo> But another way to look at it is that you accept an unchanging universe as input, and give an unchanging universe as output.
06:45:55 <itidus21> i think the universe in this case means anything which can be changed
06:47:08 <itidus21> hmmmm
06:47:53 <Sgeo> You have a variable, some_var
06:47:57 <Sgeo> It stores 0
06:48:08 <Sgeo> You increment some_var like this: some_var++
06:48:11 <itidus21> which idiot invented variables i wonder
06:48:13 <Sgeo> some_var now stores 1
06:48:14 <itidus21> he should be shot
06:48:25 <variable> itidus21: agreed
06:48:29 <itidus21> eek
06:48:35 <kallisti> ......lolwat
06:48:38 <kallisti> yeah stupid variables.
06:48:43 <kallisti> everything should be pointfree.
06:48:45 <itidus21> that was unexpected
06:48:46 <variable> kallisti: itidus21 there is only one of me
06:48:57 <Sgeo> But, you could say that incrementing is just taking a number, adding 1 to it, and giving that
06:49:01 <variable> and whomever invented me deserves to get shot !
06:49:33 <kallisti> Sgeo: I believe I figured out my abstraction.
06:49:35 <Sgeo> kallisti, in \x -> x, does x count as a variable? It can't be altered within the function
06:49:45 <Sgeo> kallisti, yay!
06:49:52 <Sgeo> Not sure why you're telling me, but yay
06:50:05 <kallisti> I should first generate the empty list I want to avoid, then define a higher-order function that allows me to plug in specific code to detect the infinite loop.
06:50:24 <kallisti> s/empty list/possibly infinite list/
06:50:26 <kallisti> weird typo thing.
06:50:56 <kallisti> similar to an unfold, in that a Nothing result will terminate the list.
06:51:56 * Sgeo is falling asleep at the switch
06:52:03 <kallisti> Sgeo: DON'T DO IT
06:52:06 <kallisti> REVIEW MY CODE PLZ
06:52:07 <kallisti> KTHX
06:52:16 <Sgeo> You really want me reviewing Haskell code?
06:52:19 <Sgeo> Sure, but..
06:52:20 <kallisti> yes
06:53:25 <itidus21> if i understood functions, which i don't, im still not convinced that i would be impressed by function notation
06:54:01 <kallisti> code: http://sprunge.us/EXMN associative data types: http://sprunge.us/BSDF some things are pretty some things are not.
06:54:14 <itidus21> i think des cartes made progress by his whatever he contributed to drawing functions
06:54:19 <Sgeo> itidus21, ... have you never touched a non-esoteric programming language?
06:54:23 <kallisti> itidus21: cartesian plane?
06:54:43 <Sgeo> Or do you mean pure functions?
06:54:48 <kallisti> Sgeo: he has supposedly programmed in C++ but I am skeptical. :P
06:55:20 <itidus21> what is the point of this channel if not to explain the value of pure functions?
06:55:39 <kallisti> to discuss esoteric programming languages
06:56:11 <kallisti> or whatever we feel like discussing, with a general relevance to computer science
06:56:47 <Sgeo> itidus21, name a C++ function you have written that had a non-void return type and at least one argument.
06:56:48 <itidus21> perhaps it is the similarity between a given language and pure functions which determines how esoteric it is
06:56:53 <kallisti> Sgeo: is this code legible at all. :P
06:57:04 <Sgeo> kallisti, eek, I didn't even notice the links
06:57:09 <itidus21> int add(int a, int b) { return a + b; }
06:57:16 <Sgeo> itidus21, there we go
06:57:41 <Sgeo> itidus21, that function is pure. In order to do its thing, it only relies on its arguments.
06:57:51 <kallisti> itidus21: you seem to be under the mistaken impression that since we talk about Haskell a lot, it must be heavily on topic.
06:58:07 <itidus21> i have to infer the meaning of most words by context in here such as pure
06:58:12 <Sgeo> Oh, sorry
06:58:19 <itidus21> its ok.. i like to do so
06:58:37 <Sgeo> A pure function is a function that only looks at its arguments and returns a value based on its arguments.
06:58:40 <itidus21> but it gives a false impression i am familiar with some terms
06:59:01 <Sgeo> It doesn't set global variables, it doesn't read from a file, etc. etc.
06:59:14 <itidus21> so untyped lambda calc is not the same thing as pure
06:59:20 <kallisti> Sgeo: s/arguments/arguments and free variables/
06:59:37 <Sgeo> kallisti, good point
06:59:37 <kallisti> but that's close enough
07:00:05 <Sgeo> kallisti, Loop?
07:00:16 <itidus21> i mean, if i had to explain the relationship between "int add(int a, int b) { return a + b; }" and "untyped lambda calculus"
07:00:21 <itidus21> would i get anywhere?
07:00:24 <kallisti> Sgeo: it's complicated. :P
07:00:35 <kallisti> Sgeo: I think I've explained how loops work in portal chess?
07:00:36 <itidus21> both phrases relate to functions in some way
07:00:37 <Sgeo> kallisti, what's with the Storable stuff?
07:00:51 <Sgeo> kallisti, I haven't been paying any attention whatsoever to the portal chess stuff, sorry
07:01:05 <kallisti> Sgeo: some thing elliott convinced me to do when he was helping me get started. essentially it allows me to store my board state as a contiguous Word16 array.
07:01:32 <Sgeo> imap?
07:01:44 <kallisti> yes similar to imap from Data.Vector
07:01:54 <kallisti> it's map but with Index -> Element -> Element
07:01:57 <kallisti> instead of Element -> Element
07:02:17 <Sgeo> naming fillSquare isn't really needed there, but I can't tell if doing so helps readability
07:02:23 <kallisti> I have another module called PortalChess.Util.Enums which allows me to generate Enum instances for any 2-element product types, which I use to define the Storable instance
07:02:31 <kallisti> Sgeo: yes that's the idea.
07:02:44 <kallisti> I might rename it.
07:02:59 <itidus21> what if i said int zero(int a, int b) { return a; }
07:03:04 <kallisti> Sgeo: oh yes I could remove that
07:03:06 <kallisti> it used to be a function
07:03:18 <itidus21> as a way to understand 0 := λf.λx.x
07:03:33 <kallisti> Sgeo: edited
07:04:03 <Sgeo> o.O at if/then/else all being at the same indentation
07:04:04 <itidus21> i just don't have a clue what im saying
07:04:18 <kallisti> Sgeo: is that not normal?
07:04:28 <Sgeo> (No, I'm not saying that's bad, I'm saying I wasn't aware that that worked)
07:04:29 <kallisti> that's how haskell-mode indents it. -shrug-
07:04:59 <Sgeo> I guess I thought DoAndIfThenElse only worked in do blocks
07:05:00 <kallisti> Sgeo: if then else doesn't rely on layout as far as I know
07:05:24 <Sgeo> itidus21, it would be return b, not return a
07:05:38 <kallisti> Sgeo: in that particular function I found the let / if syntax clearer than the equivalent guard/where syntax
07:05:40 <Sgeo> But that's currying stuff you're doing, which is a bit ahead of understanding purity
07:06:13 <Sgeo> step' (Move (r, f) d) = Move <$> ((,) <$> r' <*> f') <*> pure d
07:06:16 <kallisti> :)
07:06:31 <kallisti> could <$> that
07:06:36 <kallisti> instead of using applicative
07:06:44 <kallisti> or assign some names maybe
07:07:09 <Sgeo> Assigning names never killed anyone, except for all the people it killed.
07:07:14 <kallisti> step' does a basic increment on the board. so if you give a coordinate and North, it moves one space north.
07:07:27 <kallisti> step does that but also follows portals on the board.
07:07:30 -!- jix has quit (Ping timeout: 252 seconds).
07:08:07 <kallisti> I use step' in followPortal because if I used step then I could easily get in recursive loops.
07:08:10 <kallisti> for some board states.
07:08:21 <kallisti> later I intend to do some manual checking for that case.
07:08:55 <kallisti> Sgeo: but really if you're familiar with the f <$> x <*> y idiom that's not terribly illegible.
07:09:31 <Sgeo> Sure
07:09:42 * Sgeo may be a bit tired right now
07:09:56 <kallisti> w/e total nub lulz
07:10:21 * kallisti says the person asking for help.
07:10:24 <kallisti> er
07:10:34 <kallisti> (says the person asking for help. also a person who is totally not tired also)
07:11:09 <itidus21> int zero(int f, int x) { return x; } int succ(int n, int f, int x) { return f; } int one(int f, int x) { return succ(n, zero(f, x), x); } -- this should give insight to anyone who wonders why i don't just magically "get" LC
07:11:10 <kallisti> Sgeo: the main thing I want to work on is linearMoves
07:11:29 <kallisti> which describes the movesets of pieces like bishops, rooks, and queens
07:11:46 <kallisti> but.... I have to take into account portals
07:11:50 <kallisti> and avoid infinite loops
07:11:57 <Sgeo> I note your use of State internally
07:12:02 <itidus21> i dont even care where its right or wrong
07:12:07 <kallisti> yes it made the algorithm somewhat clearer.
07:12:49 <kallisti> I'm keeping a set of portals I've encountered along the path, and I want to pass that bit of state on to other invocations of the function
07:12:54 <kallisti> so State seemed well-suited
07:12:58 <Sgeo> Ah, ok
07:13:26 * Sgeo needs to force himself to think more in terms of "yes, functions can locally use a monad then run the monad and expose something without it
07:13:27 <kallisti> if, at any point, I end up back at the same portal, then I've found a loop, at which point I terminate the walk.
07:14:02 <Sgeo> (e.g. I should probably be using ReaderT for stuff in my library which is not going to expose the fact that it's using ReaderT)
07:14:44 <kallisti> yes most monad instances have some other non-monad abstraction that defines some kind of m a -> a
07:15:38 <Sgeo> Besides IO, which ones don't?
07:16:23 <kallisti> none that I can think of off the top of my head.
07:16:47 <kallisti> mapM linearMoves is where the state threading happens.
07:17:13 <kallisti> it's not strictly necessary but in some cases it will result in a faster short-circuit
07:17:17 <Sgeo> :t cont
07:17:18 <lambdabot> forall a r. ((a -> r) -> r) -> Cont r a
07:17:20 <Sgeo> :t runCont
07:17:21 <lambdabot> forall r a. Cont r a -> (a -> r) -> r
07:17:43 <Sgeo> :t (`runCont` id)
07:17:44 <lambdabot> forall a. Cont a a -> a
07:18:03 <kallisti> I think what I'll do is use the stepLines function I just wrote, and then have an onPortal function, which takes another function to apply whenever a portal is encountered along the walk
07:18:14 <kallisti> as there will be other situations where I want to do special when I encounter a portal.
07:18:21 <kallisti> *something special
07:19:07 <itidus21> looking at wiki i see it says "The second observation is that the specific choice of name for a function's arguments is largely irrelevant."
07:19:09 <kallisti> stepLines is like linearMoves except without all the short-circuiting logic. it will walk infinitely in some cases.
07:19:23 <itidus21> i guess this is like saying each scope has an alphabet
07:20:07 <kallisti> itidus21: it's saying that you could use any set of distinct symbols, the specific symbol doesn't matter so long as distinct variables are annotated by distinct symbols
07:20:35 <kallisti> De Bruijn indices make things easier by assigning numbers instead of arbitrary symbols to variable names
07:20:38 <itidus21> an alphabet could also be defined as "any set of distinct symbols" >:-)
07:21:23 <kallisti> yes, indeed, but you said something unrelated to the distinctness
07:22:12 <kallisti> in De Bruijn indices, the number indicates how many lambda abstractions upward you would travel in order to find the lambda abstraction that bound the variable
07:22:14 <itidus21> thats why i am not allowed in the jedi council
07:22:29 <kallisti> so 0 refers to the most deeply bound variable in that expression, 1 is the level above, 2 is the level above that, etc.
07:22:53 <kallisti> 0 is the "local" variable.
07:24:04 <itidus21> and global is infinite debrujin index then i guess
07:24:05 <itidus21> :P
07:24:30 <kallisti> Sgeo: do you think resourceT could be useful in your AW library?
07:25:00 <Sgeo> kallisti, yes
07:25:08 <Sgeo> Still not sure I want to expose that though
07:27:08 <kallisti> well, you can runResourceT
07:27:12 <kallisti> dunno if that helps though..
07:30:25 * kallisti would one day like to find a use for Cont
07:30:34 <kallisti> as it seems to just sit around being powerful and unused.
07:31:26 <Sgeo> delcont or whatever is supposed to be more powerful
07:31:40 <Sgeo> Or, well, I guess Cont is delimited too
07:32:46 <kallisti> haven't heard of that.
07:33:23 <Sgeo> http://hackage.haskell.org/package/CC-delcont
07:33:30 <Sgeo> It's an Oleg thing, of course
07:33:45 <Sgeo> Well, at least partially Oleg
07:34:30 <kallisti> dynamically scoped variables? whut?
07:34:57 <kallisti> Oleg, why so magical?
07:37:55 <itidus21> 1) int add(int a, int b) { return a + b; } 2) int (int a, int b) { return a + b; } 3) int (int foo, int bar) { return foo + bar; } 4) int (int foo) { return {int (int bar} { return foo + bar;}}; }
07:38:20 <kallisti> um
07:39:12 <kallisti> itidus21: well, at least you seem to understand currying
07:39:20 <kallisti> I don't know what you're trying to do though.
07:40:03 <itidus21> http://en.wikipedia.org/wiki/Lambda_calculus#Motivation
07:40:22 <itidus21> if only it could all be that easy
07:40:29 <kallisti> Sgeo: this delimited cont stuff reminds me of a menu system I wrote for a MUD codebase in Python.
07:40:35 <kallisti> that used coroutines.
07:40:55 <kallisti> but this is better.
07:44:14 <itidus21> basically, that motivation section makes perfect sense to me
07:44:33 <itidus21> but once it departs from that its like chinese
07:45:21 <kallisti> it's the same stuff just different notation
07:45:25 <kallisti> and more explanation
07:46:08 * Sgeo needs sleep
07:46:17 <itidus21> i think they could make an untyped lambda calculus written in a way imperatve programmers could understand if they really wanted
07:46:34 <kallisti> itidus21: yes, they have. it's called the untyped lambda calculus. :P
07:47:34 <itidus21> well.. imperative programmers don't tend to use the phrase function application
07:47:41 <kallisti> "function call"
07:48:36 <kallisti> though in this case the semantics are a bit different. function call usually involves a specific calling convention.
07:48:43 <kallisti> itidus21: but if you need silly pictoral representations check this out: http://worrydream.com/AlligatorEggs/
07:49:32 <itidus21> well heres what i would do to C to make it more in line with untyped lambda calc
07:49:47 <itidus21> first of all, since there is only 1 type, there is no need for type differntiating keywords
07:50:03 <kallisti> .
07:50:23 <kallisti> instead of going off on that tangent
07:50:24 <itidus21> so something like int add(int a, int b) { return a + b; } would become... add(a, b) {return a + b;}
07:50:27 <kallisti> you should read that link
07:50:31 <kallisti> that I linked you.
07:50:34 <kallisti> actually
07:50:39 <kallisti> not only should you read the actual link text
07:50:50 <itidus21> i already know the alligators don't help my particular gripe
07:50:52 <kallisti> but you should link on it and read the information displayed in your browser,, as well.
07:51:01 <kallisti> ah
07:52:25 <itidus21> now i think what actually happens is that anonymous functions simply have a placeholder name
07:52:52 <kallisti> ???
07:53:01 <kallisti> yes if you
07:53:13 <itidus21> something like: 1) int add(int a, int b) { return a + b; } 2) add(a, b) {return a + b;} 3) *(a, b) { a + b}
07:53:14 <kallisti> assign an anonymous function a name it becomes a nonymous function. :P
07:53:28 <kallisti> itidus21: C++11 has lambda functions
07:53:38 <itidus21> ok here what i have also done is remove the return keyword since the only thing which happens in the body of sucha function is a return
07:53:54 <kallisti> itidus21: note necessarily a requirement in C
07:53:58 <kallisti> it could easily have multiple lines and a return
07:54:07 <kallisti> C++11 makes no requirements
07:54:30 <itidus21> well
07:57:58 <itidus21> regular C function: int add(int a, int b) { return a + b; } types stripped away: add(a, b) {return a + b;} return keyword stripped away: add(a, b) {a + b} anonymous: (a, b) {a + b} curried: (a) { (b) {a+b} }
07:58:25 <kallisti> itidus21: I don't really see what you're trying to accomplish
07:58:31 <itidus21> neither do i
07:59:14 <kallisti> are you trying to make lambda calculus look more like C?
07:59:17 <itidus21> ok i see i can go deeper here
07:59:33 <kallisti> making C look like untyped lambda calculus won't work because it has a static type system.
07:59:48 <kallisti> it's not really going to be C anymore.
08:00:28 * Sgeo goes to execute a few hours in the Zzz monad
08:00:42 <itidus21> the + operator seems to break this task i am trying
08:00:51 <Sgeo> No, that doesn't entirely make sens,e in case itidus21 was wondering, fucb i don't care.
08:00:54 <Sgeo> *but
08:00:58 <kallisti> many things break the task you're trying.
08:01:05 <Sgeo> Nogh
08:01:06 <Sgeo> Night
08:01:14 <itidus21> night
08:01:27 <itidus21> for instance, if + = add
08:01:40 <kallisti> for someone who doesn't know what they're trying to do, you seem to be saying things that suggest you know what you're trying to do:
08:01:43 <itidus21> it is pointless to define an add function through calling +
08:01:49 <kallisti> for example, mentioned the "task you're trying"
08:02:07 <kallisti> itidus21: not to mention that in lambda calculus variables always refer to other functions
08:03:59 <itidus21> i guess im curious how to go from "(a) { (b) {a+b} }" to "λmnfx.m f (n f x)"
08:04:20 <kallisti> church encoding
08:04:23 <kallisti> read about that.
08:04:29 <itidus21> ya i copied the later off wiki
08:04:30 <kallisti> but first understand lambda calculus if you haven't yet.
08:06:06 <kallisti> essentially the idea is that you can define data by an operation that you can perform with it.
08:06:43 <kallisti> the act of executing the operation is equivalent to having the data to perform it. The operation is the data itself.
08:06:52 <kallisti> do you understand church booleans?
08:07:00 -!- zzo38 has joined.
08:09:03 <itidus21> so, putting it another way, you can define an answer by the questions you can solve with it
08:09:18 <kallisti> I guess
08:09:22 <kallisti> it helps to look at specific examples.
08:09:25 <kallisti> like church booleans
08:09:30 <itidus21> im weird
08:09:38 <kallisti> unicorns.
08:10:58 <kallisti> \x.\y. x
08:11:01 <kallisti> is true
08:11:05 <kallisti> \x.\y. y
08:11:06 <kallisti> is false
08:11:32 <kallisti> the first one, given two arguments, returns the first one. the second one, when given the same two arguments, returns the second one.
08:11:42 <kallisti> if you look at how a conditional branch works, this is basically the same idea.
08:11:57 <itidus21> see, i personally find the syntax "(x,y) x" makes more sense than "\x.\y. x" ... my troubles begin there
08:12:02 <kallisti> stop
08:12:03 <kallisti> fucking
08:12:04 <kallisti> focusing
08:12:05 <kallisti> on
08:12:06 <kallisti> the
08:12:09 <kallisti> syntax
08:12:11 <kallisti> :)
08:12:14 <itidus21> what else is there?
08:12:35 <kallisti> the core idea? the syntax is completely irrelevant.
08:12:38 -!- Ngevd has joined.
08:13:07 <itidus21> its meant to be a tree, right?
08:13:19 <itidus21> im supposed to look at \x.\y. x and see a tree :P
08:13:23 <Ngevd> Hello
08:13:32 <kallisti> the syntax is just the notation. learn the notation, and it no longer becomes a hinderance. the fact that it doesn't look like something you're not familiar with doesn't mean it's impenetrable suddenly.
08:14:18 <kallisti> if you have this mindset, you're not going to learn anything ever. you will be stuck with whatever superficial layer of syntax you prefer and not learn about anything else.
08:14:32 <itidus21> it is the only time i have ever encountered something i couldn't intuit
08:14:51 <itidus21> oops.. tat is true for all of math
08:14:52 <kallisti> itidus21: yes you can construct a lambda expression as a tree
08:15:03 <kallisti> most expression syntaxes can be viewed as trees
08:15:06 <itidus21> i just don't get math at all
08:15:42 <kallisti> but you don't have to think of it as a tree
08:15:48 <kallisti> just think of it however you normally think of expressions
08:15:49 <itidus21> kind of like a chessboard makes most sense as a 2d grid
08:15:57 <itidus21> instead of a 1d strip
08:16:34 <kallisti> I'm quite familiar with thinking of expressions without visualizing the entire syntax tree. the latter would be pretty taxing
08:16:54 <kallisti> I do this all the time when I program. I just think of it in terms of symbols
08:17:25 <kallisti> lambda calculus is a computation model focused on symbolic reasoning.
08:18:51 <Ngevd> itidus21, what does \x.x do? (hint, this is an easy one)
08:19:58 <kallisti> Ngevd: so I'm guessing you've already implemented portal chess?
08:19:59 <kallisti> :>
08:20:10 <kallisti> I've made some progress since last we spoke.
08:20:31 <Ngevd> kallisti, nah, I was just planning to get a chessboard, some matches, some string, and a webcam
08:21:01 <kallisti> code: http://sprunge.us/EXMN associative data types: http://sprunge.us/BSDF some things are pretty some things are not.
08:21:06 <itidus21> ok that is the identity expression.. .. in C terms i would see it as: type_t identity(type_t a1) { return a1; }
08:21:25 <Ngevd> itidus21, How about \x y . x y?
08:22:14 <kallisti> uh oh you're going to get him to start using function pointers.
08:22:25 <itidus21> i just like to use analogies
08:22:39 <itidus21> i believe it is a healthy way to operate ones brain
08:22:57 <Ngevd> Not analogies to C!
08:23:32 <itidus21> the neurons in ones brain which understand untyped lambda calculus can communicate with the neurons which understand apples and oranges
08:23:40 <itidus21> there isn't a wall
08:24:21 <kallisti> wow you know the secrets of the brain but can't understand lambda calculus? interesting.
08:24:38 <itidus21> i know...
08:25:03 <itidus21> (in other words.. i see notational ambiguity when i read \x y . x y
08:25:16 <itidus21> and.. i give up before i even begin :P
08:25:42 <kallisti> I don't see any notational ambiguity. what ambiguities do you see?
08:26:04 <itidus21> i don't know
08:26:28 <kallisti> \x y . x y is a short hand for the curried syntax, which is how lambda calculus actually works, and looks like:
08:26:36 <kallisti> \x. \y. x y
08:26:40 <kallisti> this means:
08:26:44 <itidus21> expression body vs application
08:26:45 <kallisti> \x. (\y. x y)
08:26:53 <itidus21> what if it was
08:26:58 <kallisti> itidus21: there is no application in this example
08:27:01 <itidus21> \x. (\y. x) y
08:27:05 <kallisti> it's one function body.
08:27:26 <itidus21> the whole notation is so weird >:-)
08:28:14 <itidus21> if everything is explicit then its unwieldly, if it's implicit then lots of bracketing rules.. all because its expressed as a line and not a tree
08:28:38 <itidus21> but i guess that overhead must pay off eventually
08:30:53 <kallisti> typically the lambda extends to the end of the line or until the end of the parenthetical expression it's in
08:30:53 <Ngevd> Well, I'm starting to make placeholder piece graphics for portalchess
08:31:29 <Ngevd> Being a poet/mathematician, not an artist, means they sorta scuk
08:31:35 <Ngevd> *suck
08:32:24 <kallisti> it's okay Ngevd it's okay.
08:32:47 <Ngevd> What does the C stand for in CCannon?
08:32:52 <kallisti> cardinal
08:32:55 <Ngevd> Ah
08:33:12 <Ngevd> I would have used O for Orthangonal, but that's probably wrong
08:33:19 <Ngevd> *orthagonal
08:33:22 <Ngevd> Can't type
08:33:32 <kallisti> I think that would work too
08:33:38 <kallisti> OCannon is kind of weird though.
08:34:16 <kallisti> I am mixing up my terms a bit actually
08:34:28 <kallisti> for compose points I should use cardinal and intercardinal
08:34:41 <kallisti> or ordinal
08:34:45 <kallisti> or intermediate
08:34:59 <Ngevd> What format should I save the graphics?
08:35:23 <kallisti> uh......
08:35:29 <Ngevd> .png?
08:35:33 <kallisti> yes that's good
08:35:41 <kallisti> .svg would be good too if they're vector graphics.
08:35:59 <Ngevd> Nah, pixel graphics.
08:36:06 <Ngevd> I'm not good at vector graphics
08:36:25 <kallisti> I imagine arrows as little >>'s
08:36:38 <zzo38> Other way is use METAFONT?
08:37:12 -!- jix has joined.
08:37:23 <zzo38> METAFONT is also scalable although the output will be raster graphics
08:38:19 <Ngevd> Hmm
08:40:57 <zzo38> Now you have Portal Direction (Maybe Coord)
08:41:05 <kallisti> yes
08:41:06 <zzo38> Are you going to display that too?
08:41:10 <kallisti> no
08:41:16 <kallisti> the reason for that
08:41:28 <kallisti> is that players can now have only one portal on the field
08:41:51 <zzo38> OK
08:44:43 -!- Vorpal has joined.
08:45:34 <itidus21> it could be argued (by me) that a lambda calculus expression is of the type text-string .. "λf.λx.x\0" for example is char expression[8];
08:45:51 <kallisti> ugh
08:46:39 <Ngevd> That's a representation of a lambda expression, not a lambda expression
08:47:57 <Ngevd> That's me trying to make sense
08:48:22 <kallisti> itidus21: the wikipedia tells you what constitutes a lambda calculus expression
08:48:36 <itidus21> i have no allegiance to sense
08:49:03 <kallisti> a string is a representation of that, and a shitty one at that. it's an unparsed lambda expression in much the same way that a text-string can also represent a "C expression"
08:49:35 <itidus21> i have to wonder if familiarity with mathematical functions is a useful prerequistite to LC
08:49:39 <itidus21> just maybe
08:50:07 <kallisti> not really
08:50:16 <itidus21> after all, some seem to dislike the disparity between an imperative language "function" and a math function
08:50:24 <kallisti> you may be getting confused because lambda calculus isn't "call by value".
08:50:59 <Ngevd> kallisti, strictly speaking, lambda no wait I don't want to confuse itidus
08:51:02 <kallisti> so when you apply a lambda abstraction to a lambda term, it substitutes the expression itself into the body of the lambda.
08:51:08 <zzo38> It is two different things meaning by "function"
08:51:10 <kallisti> Ngevd: yes I know.
08:51:20 <itidus21> when church came up with this stuff, he hadn't seen imperative languages i think
08:51:26 <itidus21> i am not sure about this though
08:52:01 <itidus21> it doesn't make sense without computers to run them on
08:52:09 <kallisti> computers weren't really a thing in 1936
08:52:30 <kallisti> at least not as we know them.
08:53:16 <zzo38> Is this correct? ("delimit", Right $ \p @ ProgramState { psTokens = h : t } -> uncurry (:) . (Block *** tail) $ break (== h) t)
08:53:29 <zzo38> Or is there other function for such things?
08:54:07 <itidus21> i think it may help those who are in the itidus tarpit.. to know that i actually get this much confusion every single time i read a wiki math page
08:54:13 <itidus21> its not really limited to LC math
08:54:29 <itidus21> i like to hide or deny this, but it is the truth
08:55:49 <itidus21> my (limited) knowledge of programming is too large out of proportion of my math knowledge
08:56:43 <itidus21> like, i see a little letter above a sigma and think.. ahh here we go.. and i say it in irc like this in an anecdote and i know everyone here could tell me what it meant :P but its just an example
08:57:11 <itidus21> and the same is true for the little "i=1" under something
08:59:17 <kallisti> I think this is your problem... you probably do something like this:
08:59:47 <kallisti> a) open wikipedia article b) start reading c) see big scary maths symbols d) freak out e) go do something else
09:00:14 -!- oerjan has joined.
09:00:59 <itidus21> the main trouble with it is that math words are all nearly defined in terms of each other
09:01:44 * oerjan gets this urge to berate itidus21 for nonsense, then realizes it's actually true
09:02:02 <itidus21> but thats how dictionarys work too
09:02:28 <itidus21> maybe its for the best
09:02:48 <oerjan> although that should be "nearly all defined exactly in terms of each other"
09:03:08 <itidus21> yeah
09:03:39 <oerjan> the original fits better for dictionaries though
09:04:02 <itidus21> its probably for the best to keep me out like a shibbaleth
09:04:16 <itidus21> for i don't have the responsibility appropriate for knowledge
09:04:27 <oerjan> especially as one who cannot spell shibboleth ;P
09:04:40 <Ngevd> kallisti, what should lenses/prisms look like?
09:05:33 <kallisti> dunno, symbolically I imagine them similarly to portals.
09:05:37 <kallisti> some kind of circular shape.
09:05:43 <kallisti> but that's no good.
09:05:56 -!- hagb4rd has joined.
09:08:02 <itidus21> i am artistic which really means i am keen to create representations of things lacking in utility, as contrasted with being someone who creates useful things which may or may not be representations of other things
09:09:04 -!- zzo38 has quit (Remote host closed the connection).
09:09:17 <itidus21> but i end up doing neither
09:11:28 <itidus21> uhhh
09:11:52 -!- monqy has quit (Quit: hello).
09:12:02 <itidus21> so my goal is to make games, that is the end, everything else, including eating breakfast, watching tv, showering, is just the means
09:12:22 <itidus21> cos i figure it's good to have a goal like that
09:13:01 <Ngevd> kallisti, there's my placeholder graphics for pieces not in real chess
09:13:40 <oerjan> <fizzie> ^ul ((15a)(14s)(1k)(2e)(12l)(11l)(10 )(3H)(9a)(8s)(7k)(5e)(4l)(13l)(6 )(0H))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~:^):^
09:14:00 <oerjan> Gregor: MAKE THE LOGS SHOW COLORS, STAT
09:14:07 * oerjan is not entirely serious
09:14:22 <itidus21> i'm sure babbage would be happy to know his ideas end up being more useful for kids entertainment than war machines
09:14:41 <hagb4rd> Ngevd: you have programmed a chess game?
09:14:43 <oerjan> ^ul ((15a)(14s)(1k)(2e)(12l)(11l)(10 )(3H)(9a)(8s)(7k)(5e)(4l)(13l)(6 )(0H))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~:^):^
09:14:43 <fungot> Haskell Haskell Haskell Haskell Haskell Haskell Haskell Haskell Haskell Haskell Haskell Haskell ...too much output!
09:14:53 <Ngevd> hagb4rd, nowhere near
09:15:06 <Ngevd> kallisti has made a chess variant and I'm doing what I can to help
09:15:40 <hagb4rd> cool.. i always wanted to make a chess variant for icq
09:15:47 * kallisti appreciates the help, by the way. o_o
09:16:04 <kallisti> I haven't really thought about graphics yet.
09:16:20 <itidus21> so, i think about games by imagining scenes in my head
09:16:42 <itidus21> like a character moving about some environment
09:16:57 <Ngevd> http://s1239.photobucket.com/albums/ff508/Taneb/Portal%20chess/
09:17:00 <itidus21> and i think about what logic he is moving by
09:17:07 <hagb4rd> it would be kool to have a server to for chess board generation
09:17:29 <hagb4rd> posting a link to a graphic in the end
09:17:42 <kallisti> my plan is something like: a) the game itself b) network protocol c) simple text-based client for playtesting e) multi-threading / handle multiple games at once f) graphical client
09:17:44 <hagb4rd> on demand
09:17:44 <itidus21> and i think about how can art assets in a game be more utilized
09:18:40 <itidus21> like by using skeletal animation one drawing or model of a skeleton can be extended into animations
09:18:59 <hagb4rd> aw 3d chhess?
09:19:06 <itidus21> or.. pallette swapping, or texture swapping is another way to utilize art assets
09:20:22 <hagb4rd> it would be nice to use it like: a4-a5
09:20:27 <hagb4rd> or sth
09:22:05 <hagb4rd> mostly text based
09:22:12 <itidus21> and if i make my own language, the more i know about odd languages the more i am likely to think up something noone else thought of
09:24:40 <itidus21> my thought can be written like: language CreateLanguage(boolean knowslambdacalc) { if (knowslambdacalc) return good_language; else return bad_language; }
09:25:03 <kallisti> ...................................................................................................................................................................................................................................................................................................
09:25:31 <itidus21> i figure its probably true
09:26:09 <hagb4rd> kallisti: why not use irc as network protocol?
09:26:11 <itidus21> LC or at least one model of computation
09:26:36 <kallisti> hagb4rd: what would I gain from that?
09:26:45 <itidus21> i don't think it's possible to make best possible language if i don't know any models of computation
09:26:50 <hagb4rd> kallisti: time
09:27:34 <kallisti> eh I don't know that I save any time
09:27:37 <hagb4rd> but if you want some insight into network protocols, i guess you better make it your own
09:27:47 <kallisti> on top of dealing with my own protocol I now have to deal with IRC. :P
09:28:16 <kallisti> hagb4rd: I would say I'm pretty familiar with network protocols already. there's no much too them.
09:29:04 -!- kmc has joined.
09:30:52 <Ngevd> I think the protocol should go Send move -> wait -> get response -> if ("invalid) goto "Send move" -> check validity -> if invalid send reject then goto "get response" -> go to "send move"
09:31:03 <Ngevd> Not knowing much about network protocols
09:32:57 <itidus21> !(x) Not x. (λpab.p b a) x ~x
09:33:05 <kallisti> is that client side? what validity checking must the client do?
09:33:13 <hagb4rd> for real one can seperate the complete game logic from the network protocol
09:33:17 <Ngevd> kallisti, I was imagining peer to peer
09:33:25 <Ngevd> Checking if the other client is cheating
09:33:28 <kallisti> ..oh
09:33:30 <kallisti> no
09:33:36 <kallisti> I'm doing client-server. :)
09:33:46 <kallisti> simplifies the client programs
09:33:48 <hagb4rd> its even easier in turn based games like chess
09:34:11 <Ngevd> Hmm... client-server also makes doing rankings easier?
09:35:00 <kallisti> well, I don't know if I'll do rankings but I do want to have a multi-user game matchup system.
09:36:16 <kallisti> because I need to support the thriving portal chess community that will soon follow from its swell in popularity.
09:36:19 <kallisti> :>
09:36:35 <Ngevd> :> indeed
09:37:16 <Ngevd> Is there any GL you want me to strive for?
09:37:22 -!- Phantom_Hoover has joined.
09:37:31 <kallisti> not really
09:38:41 <hagb4rd> and you want to use the standard 8x8 fields chessboard
09:38:50 <kallisti> yep
09:39:23 <oerjan> > 71/26*366
09:39:24 <lambdabot> 999.4615384615385
09:40:21 <hagb4rd> iv'seen variations to that.. a chess board for 4 players.. but never played it
09:40:51 <kallisti> ......4 player portal chess.
09:40:52 <Ngevd> Threechess is fun
09:40:54 <itidus21> 4 player chess is very old
09:41:04 <hagb4rd> http://www.quadibloc.com/chess/images/fpc.gif
09:51:59 <Ngevd> kallisti, what's fromEnumProd?
09:53:49 <Ngevd> It's used 4 times in PortalChess.Types, but I can't find the definition
09:54:35 * oerjan takes a stab at product . map fromEnum
09:55:38 <Ngevd> it seems to be :: (Enum a, Enum b) => a -> b -> Int
09:56:04 <oerjan> aha. \x y -> fromEnum x * fromEnum y then
09:57:17 <Phantom_Hoover> I think I had a dream wherein Gregor had a child and was dressing it up in a range of suits.
09:59:03 <oerjan> then child protection services arrived, i can only assume.
10:02:11 <Ngevd> Also, brb
10:06:15 -!- Ngevd has quit (Ping timeout: 240 seconds).
10:40:58 -!- Ngevd has joined.
10:42:55 -!- oerjan has set topic: now open for Americans to liberate | Get your esoil and esoline here! | Glorious optator institutes permanent ban penalty for power tripping | Weapons of mass banning "just monoids in the category of endomorphisms, what's the problem?" | Spotted marsh elliott suspected extinct from channel | Gregorian chants outlawed, "American" | http://codu.org/logs/_esoteric/.
10:43:09 -!- oerjan has set topic: Now open for Americans to liberate | Get your esoil and esoline here! | Glorious optator institutes permanent ban penalty for power tripping | Weapons of mass banning "just monoids in the category of endomorphisms, what's the problem?" | Spotted marsh elliott suspected extinct from channel | Gregorian chants outlawed, "American" | http://codu.org/logs/_esoteric/.
10:43:48 <oerjan> oops
10:44:04 -!- oerjan has set topic: Now open for Americans to liberate | Get your esoil and esoline here! | Glorious optator institutes permanent ban penalty for power tripping | Weapons of mass banning "just monoids in the category of endofunctors, what's the problem?" | Spotted marsh elliott suspected extinct from channel | Gregorian chants outlawed, "American" | http://codu.org/logs/_esoteric/.
10:44:11 <Ngevd> Hello
10:44:14 <oerjan> hi
10:52:19 -!- KingOfKarlsruhe has joined.
11:14:16 -!- Ngevd has quit (Quit: Goodbye).
11:14:28 -!- KingOfKarlsruhe has quit (Remote host closed the connection).
11:35:59 <fizzie> freenode is so very generous when it comes to topic length.
11:37:54 <fizzie> 390 bytes.
12:52:24 <hagb4rd> have you found elliott at last?
12:53:26 <oerjan> oh he's never been _far_ away
12:53:53 <hagb4rd> i hope he has not decided to stop the war in afghanistan by himself
12:54:35 <oerjan> i somehow don't see that as his kind of thing. i don't think afghanistan is sufficiently computerized for his methods to work.
12:55:05 <hagb4rd> true
13:01:51 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:03:47 -!- hagb4rd has quit (Ping timeout: 240 seconds).
13:04:01 -!- hagb4rd has joined.
13:06:43 -!- oerjan has quit (Quit: Later).
13:33:23 -!- sebbu has quit (Read error: Connection reset by peer).
13:33:49 -!- sebbu has joined.
13:41:08 -!- Phantom_Hoover has quit (Remote host closed the connection).
14:14:01 -!- augur_ has changed nick to augur.
14:16:13 -!- Ngevd has joined.
14:17:34 <Ngevd> Hmm
14:17:36 <Ngevd> Hello
14:41:51 -!- Ngevd has quit (Read error: Connection reset by peer).
14:41:52 -!- Taneb has joined.
14:46:28 <Taneb> Well, the cloning project went wrong again
14:52:11 <Taneb> Universities in Scandinavia.
14:54:51 -!- Ngevd has joined.
14:55:18 -!- Taneb has quit (Read error: Connection reset by peer).
15:12:37 -!- kallisti has quit (Ping timeout: 252 seconds).
15:14:34 -!- kallisti has joined.
15:14:35 -!- kallisti has quit (Changing host).
15:14:35 -!- kallisti has joined.
15:23:05 -!- Taneb has joined.
15:23:44 -!- Ngevd has quit (Read error: Connection reset by peer).
15:23:49 <Gregor> <Phantom_Hoover> I think I had a dream wherein Gregor had a child and was dressing it up in a range of suits. // I hereby forbid you from using my name, ever.
15:48:28 -!- Taneb has changed nick to Ngevd.
15:50:20 <Ngevd> I break pastewisdom
15:50:23 <Ngevd> `? Ngevd
15:50:26 <HackEgo> ​.6M?X$UE0X.\>..of[N..qBO{\ \ .'-p)Q4XDe/u#u.Ooʷಞ@\);Ԅ@'ʣӂ.dD\v}ISk53.7HE?.ЪLR':.S*]YD>i2<N.a1UA.8Љ+w.4..v|P7c.v_`b.$>AR%.Q.*.+,c3,H.CDF·-xv'do#|F|Gpr^n%٠`EiLBC.<../K36.|.t&}..؀6x~.׶...zs1(..i=.W.09..tXh.z.҅=Y-+aEЬ.lқbo
16:11:50 -!- azaq23 has joined.
16:42:07 -!- MSleep has changed nick to MDude.
16:50:36 -!- Ngevd has quit (Ping timeout: 244 seconds).
16:53:11 -!- Ngevd has joined.
16:56:41 <Ngevd> Hello!
17:15:59 <Ngevd> > 600 `div` 64
17:16:00 <lambdabot> 9
17:16:12 <Ngevd> > 600 / 64
17:16:13 <lambdabot> 9.375
17:16:18 <Ngevd> > 600 / 8
17:16:19 <lambdabot> 75.0
17:16:35 <Ngevd> > 50 * 8
17:16:36 <lambdabot> 400
17:24:35 <Ngevd> Aaargh
17:24:40 <Ngevd> I can't picture this
17:26:17 <Ngevd> Aaargh
17:26:19 <Ngevd> Aaargh
17:26:55 <Ngevd> > repeat "Aaargh\n"
17:26:56 <lambdabot> ["Aaargh\n","Aaargh\n","Aaargh\n","Aaargh\n","Aaargh\n","Aaargh\n","Aaargh\...
17:27:04 <Ngevd> > concat (repeat "Aaargh\n")
17:27:04 <lambdabot> "Aaargh\nAaargh\nAaargh\nAaargh\nAaargh\nAaargh\nAaargh\nAaargh\nAaargh\nAa...
17:27:10 <Ngevd> > concat (repeat "Aaargh")
17:27:10 <lambdabot> "AaarghAaarghAaarghAaarghAaarghAaarghAaarghAaarghAaarghAaarghAaarghAaarghAa...
17:29:32 -!- NihilistDandy has joined.
17:43:32 <Ngevd> kallisti, I now can display an empty chessboard
17:49:54 <Ngevd> `? kallisti
17:49:58 <HackEgo> kallisti is a former prophet swearing off his pastry deity
17:50:06 <Ngevd> `? CakeProphet
17:50:09 <HackEgo> ​:>
17:50:18 <Ngevd> `? Taneb
17:50:23 <HackEgo> Taneb is not actually Ngevd, no matter what you may have heard.
17:50:57 <Ngevd> brb, head
17:52:33 <Ngevd> Back
17:52:37 <Ngevd> fungot, I'm back
17:52:38 <fungot> Ngevd: mr president, commissioner, ladies and gentlemen, first of all, to resume the debate on the commission and that these are going to consult parliament before the presidential elections in kazakhstan on 10 january were a slap in the face of the violations of human rights perpetrated by both sides, the candidate for the presidency in its contacts with the chinese about how the accord could represent an fnord end to our inte
17:52:43 <Ngevd> ^style
17:52:43 <fungot> Available: agora alice c64 ct darwin discworld europarl* ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
17:52:48 <Ngevd> ^style iwcs
17:52:48 <fungot> Selected style: iwcs (Irregular Webcomic scripts)
17:52:58 <Ngevd> fungot, allosaurus?
17:52:59 <fungot> Ngevd: what, the ability to be captured a spanish galleon! arrr!! you two had an affair?
17:53:55 <Ngevd> ^style irc
17:53:55 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
17:54:01 <Ngevd> fungot, hello
17:54:01 <fungot> Ngevd: rather, i suggested for a moment. let me find another way to write that way
17:54:41 <Ngevd> Is any other human here?
17:58:31 <Ngevd> @ask kallisti why is the (Maybe coord) in Portal there? If it's where the other portal is, it a) restricts promotion of pawns and b) can be found by searching the map. If b) is stupid but a) is not, replace it with [coord], perhaps?
17:58:31 <lambdabot> Consider it noted.
18:00:16 <Ngevd> Now is a silly time
18:00:16 <lambdabot> Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it.
18:04:55 -!- Ngevd has quit (Quit: dog).
18:26:24 <kallisti> @ask Ngevd can you think of a sane method by which pawns may be promoted to portals when 2+ portals are already on the field? Also, how do you propose that portal link to multiple portals (which is what you're describing)
18:26:24 <lambdabot> Consider it noted.
18:28:36 <kallisti> @tell Ngevd searching the field is an option but it seemed like a more cumbersome solution. Also, it prevents the situation you describe because without that data I can't determine which portal out of 3 or more portals corresponds to another.
18:28:37 <lambdabot> Consider it noted.
18:33:39 <kallisti> lambdabot: hi
18:33:56 <kallisti> fungot: hi
18:33:57 <fungot> kallisti: hm... /me should really start complaining about that i'm unable to take advantage of
18:34:03 * kallisti agrees.
18:40:46 -!- Ngevd has joined.
18:41:17 <Ngevd> Hello
18:41:18 <lambdabot> Ngevd: You have 3 new messages. '/msg lambdabot @messages' to read them.
18:42:00 <Ngevd> kallisti, hello
18:44:46 <kallisti> hello
18:45:19 <Ngevd> 3+ portals: thing going through the portals' choice
18:48:16 -!- ais523 has joined.
18:48:19 <Ngevd> This allows for players to promote a pawn to portal, and for both sides to use the portal effectively
18:55:10 -!- KingOfKarlsruhe has joined.
19:10:37 -!- zzo38 has joined.
19:24:41 <kallisti> Ngevd: I don't really like that. it works okay for simple moves but with projetiles you have to pick a specific route to take which makes the interface more complicated for a special case of the rules.
19:28:05 -!- oerjan has joined.
19:30:05 <oerjan> <Ngevd> I can't picture this
19:30:07 <oerjan> wat
19:30:19 <Ngevd> A chessboard, but magic
19:31:13 <oerjan> <Ngevd> > concat (repeat "Aaargh\n") <-- cycle
19:33:28 <Ngevd> I had a headache, I couldn't think
19:34:44 <oerjan> I'M SORRY, HASKELL GOLFING MUST BE PERFECT
19:35:06 <Ngevd> It almost wants to to say...
19:35:18 <Ngevd> > concat (repeat "Aaargh")
19:35:19 <lambdabot> "AaarghAaarghAaarghAaarghAaarghAaarghAaarghAaarghAaarghAaarghAaarghAaarghAa...
19:37:01 <Ngevd> AAAAH ME ENGLAND FAILING AM
19:37:15 <Ngevd> * It almost makes you want to say...
19:40:19 <Ngevd> Back
19:40:24 <Ngevd> Forgot how to unaway
19:40:45 <oerjan> try /away without argument
19:40:54 <Ngevd> Already did
19:41:02 <Ngevd> Already marked away: brb
19:41:02 <Ngevd> Usage: AWAY [<reason>], sets you away
19:42:29 <oerjan> and /unaway, then?
19:42:41 <Ngevd> Nothing
19:43:24 <zzo38> AWAY with no argument sets you unaway
19:43:27 <oerjan> in xchat, once you go away, you cannot return.
19:43:41 <zzo38> Maybe you need to enter /RAW AWAY
19:43:46 <oerjan> heh
19:43:50 <Ngevd> That worked!
19:43:59 <Ngevd> Thanks zzo38, oerjan
19:43:59 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.88 [Firefox 9.0.1/20111220165912]).
19:44:10 <oerjan> i have this strange doubt that's xchat's intended method
19:44:32 <Sgeo> /away and /back
19:44:39 <Sgeo> I use /allserv away Whatever
19:44:42 <Sgeo> And /allserv back
19:44:55 <Sgeo> Ngevd, ^
19:44:57 <Ngevd> Oooh
19:59:49 <Ngevd> kallisti, I'm doing the very beginnings of a Portal Chess graphical client
20:02:55 <kallisti> the protocol will be pretty straight forward.
20:03:01 <kallisti> human-readable format
20:03:17 <kallisti> moving pieces is liking just move rf rf
20:03:24 <kallisti> where rf is row file in algebraic chess notation
20:03:32 <kallisti> er.... file row I think
20:03:33 <kallisti> is how it goes.
20:07:05 <Ngevd> Also, is the Loop type used?
20:07:22 <kallisti> yes
20:07:25 <kallisti> it's in the Game type
20:07:48 <kallisti> I decided incorporating loops onto the board was too complicated.
20:07:53 <Ngevd> No it isn't, that's Game Board [Set Coord]
20:07:59 <kallisti> oh..
20:08:42 <kallisti> uh....... should be something else.
20:08:52 <Ngevd> Nothing in either of your files I've seen
20:08:58 <Ngevd> It's got a few instances
20:08:59 <kallisti> right it's not used currently
20:09:17 <kallisti> hm
20:09:50 -!- NihilistDandy has quit (Ping timeout: 272 seconds).
20:11:16 <Sgeo> Clearly, this should become part of FICS
20:11:23 <kallisti> Ngevd: Coord needs to go into Loop
20:11:26 <Sgeo> Hmm, it's been a while
20:11:27 <kallisti> and then it should be [Set Loop]
20:11:49 <kallisti> or......
20:12:05 <kallisti> [Set Coord] and then have a Map Coord Loop.... I don't know yet.
20:12:14 <kallisti> I'll see what works best, I haven't got any loop code yhet.
20:12:24 <kallisti> working on the piece move sets whenever I have time. (today I'm focusing on school)
20:15:14 <kallisti> hm
20:15:26 <kallisti> I wonder if switching to Set for the actual move sets is better than using linked lists.
20:16:28 <kallisti> my reasoning was that it probably takes more time to construct the data set than it does to perform the lookup, and with set I have to construct the entire thing
20:16:36 <kallisti> with list I can short-circuit on some cases.
20:16:45 <kallisti> (successful cases)
20:17:14 <zzo38> Can you make up a chess variant which is combined with mahjong?
20:17:24 -!- oerjan has quit (Quit: Good night).
20:17:27 <kallisti> I don't know mahjong very well, so no.
20:18:02 <kallisti> (I do have to construct the entire set to perform a lookup right? sets aren't lazy right?)
20:18:23 <zzo38> I prefer chess variants played with flat pieces, like how Shogi and Xiangqi are designed.
20:53:25 <Ngevd> flip divMod 8
20:53:41 <Ngevd> ^^^ sample of the graphical client for PortalChess
20:53:41 <kallisti> Ngevd: hm?
20:53:44 <kallisti> lol
20:53:47 <kallisti> yes.
20:53:59 <kallisti> that's a useful function for 2D grids represented by 1D grids.
20:54:24 <Ngevd> Wait, I can replace it with (`divMod` 8)
20:54:30 <Ngevd> I think
20:54:48 <kallisti> yes
20:54:54 <kallisti> I prefer that syntax to using flip
20:55:06 <Ngevd> So do I, I just keep forgetting it
21:05:56 -!- comex has quit (Quit: Coyote finally caught me).
21:07:00 <Ngevd> I am writing a complicated Haskell program which I have no way to test
21:09:12 <Ngevd> kallisti, what format will loops be in
21:09:59 <kallisti> format?
21:10:23 <Ngevd> I'm assuming not Set [Coord] or whatever
21:10:36 <kallisti> for now I'm just going to add a Coord field to Loop
21:10:39 <kallisti> and have [Set Loop]
21:10:56 <kallisti> I'll probably send a response to clients when a loop is formed from a cannon firing
21:10:59 <kallisti> with all the points.
21:11:36 -!- comex has joined.
21:11:50 <Ngevd> Points as in where it turns, or points as in everywhere the projectile is
21:13:05 <Ngevd> kallisti, ^^^?
21:14:19 <kallisti> everywhere it is.
21:14:26 <Ngevd> Okay
21:14:51 <kallisti> also directions.
21:15:03 <kallisti> the direction of the projectile at each point. or maybe only the changes I don't know.
21:16:38 <kallisti> Ngevd: ah wait I know.
21:16:53 <kallisti> Loop will contain a set of Moves
21:17:01 <kallisti> which are Coord/Direction pairs
21:17:40 <kallisti> data Loop = Loop {loopOwner :: Player
21:17:40 <kallisti> loopSet :: Set Move
21:17:40 <kallisti> ,loopKind :: LoopKind
21:17:41 <kallisti> }
21:17:52 <kallisti> and then I just have [Loop] in Game
21:19:31 <Ngevd> Hmm
21:19:38 <Ngevd> I can work with that
21:19:44 -!- monqy has joined.
21:19:48 <kallisti> well... you're not being exposed to any of this anyway
21:19:50 <kallisti> just the protocol
21:20:26 <Ngevd> I'm basing it on your PortalChess.Types
21:21:42 <Ngevd> For reasons that make sense
21:22:20 <kallisti> the idea is that the client basically needs to do very little besides display what the server tells it to display
21:22:23 <kallisti> no need to duplicate work.
21:22:40 <Ngevd> If the server sends the board, I can display it easy
21:22:49 <Ngevd> Well, my future program can
21:23:08 <kallisti> yes I suppose that's an option
21:23:15 <kallisti> just send the entire board on each turn.
21:24:12 <Ngevd> For display purpouses I can ignore loopOwner, right?
21:24:38 <kallisti> hm
21:24:40 <kallisti> you could
21:24:44 <kallisti> but it could be useful to know.
21:25:23 <kallisti> heh, if I wanted to be lazy I could, as my response, just show Game
21:25:25 <kallisti> and send that :P
21:25:32 <kallisti> makes Haskell clients easy to write.
21:25:52 <Ngevd> You'd need Read Game as well
21:25:56 <kallisti> yes.
21:27:30 <Ngevd> I'm going to ramble incoherently so I don't forget what I think for a bit
21:27:35 <Ngevd> Circular lists?
21:27:36 <kallisti> sure.
21:27:36 <Ngevd> Hmm
21:27:45 <Ngevd> There's a prelude function for that, I think
21:27:49 <kallisti> as far as I can tell there are no infinite structures in Game.
21:27:53 <kallisti> > cycle [1,2,3]
21:27:54 <lambdabot> [1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,...
21:27:59 <Ngevd> That's the one
21:28:29 <Ngevd> Wait, I really just need \x:xs -> x:xs ++ [x]
21:28:49 <Ngevd> Except for sets?
21:28:54 <kallisti> lol?
21:29:03 <kallisti> sets don't have an order
21:29:24 <kallisti> what on earth are you trying to do?
21:29:26 <Ngevd> Oh no
21:29:30 <Ngevd> Display loops
21:29:37 <kallisti> uh
21:29:43 <kallisti> the loop is a finite set of things.
21:29:54 <Ngevd> But they're circular!
21:29:59 <kallisti> yes.
21:30:10 <kallisti> you mean you want to display a circular animation?
21:30:18 <kallisti> that would be some kind of recursive IO action.
21:30:21 <Ngevd> No, I want to know what the one after each one is
21:30:29 <kallisti> oh
21:30:33 <Ngevd> Or before
21:30:34 <kallisti> then yes just cycle it...
21:30:45 <kallisti> but I'll send the loop as a finite list of points obviously.
21:31:05 <kallisti> and currently since I represent them as sets there's no ordering to that information.
21:31:23 <Ngevd> Will the loop definition's direction be coming into the square or going?
21:31:44 <kallisti> it would have to be going, I believe.
21:31:57 <kallisti> notice I use the going operator to write Moves
21:32:01 <kallisti> coordinate `going` direction
21:32:06 <kallisti> m = coordinate `going` direction;
21:32:20 <kallisti> then step' m returns the move where that move is performed.
21:32:39 <kallisti> or Nothing if it can't be performed.
21:32:48 <Ngevd> So I'd need to know the previous bit of the loop
21:32:55 <kallisti> I'm still not really sure why you need a cyclic list
21:33:01 <kallisti> you just want to display the finite set of points right?
21:33:18 <Ngevd> How do you imagine the projectiles as being displayed?
21:33:26 <kallisti> -shrug- client dependent. :P
21:33:31 <kallisti> a fancy client could do a nice cyclic animation
21:33:42 <kallisti> a simple one could just color the squares a shade.
21:33:43 <Ngevd> I was imagining it as a sort of laser hang on that's an idea
21:33:57 <kallisti> I think it should be transparent though
21:34:02 <kallisti> so that you can see pieces in the loop
21:34:07 <kallisti> it should just overlay onto the square
21:35:19 * kallisti is not particularly interested in fancy graphics.
21:35:25 <kallisti> to visualize what's going on.
21:35:53 <kallisti> for example most computer chess games don't represent the pieces as like heroic action figures dueling each other or whatever.
21:36:16 <kallisti> it's just a symbolic representation
21:36:33 <Ngevd> I'm just struggling to imagine the projectile loops
21:36:50 <kallisti> what would probably make it easier
21:36:52 <Ngevd> As anything other than a length of coloured string
21:36:58 <kallisti> is if instead of Black and White the players were red and blue
21:37:16 <kallisti> then the projectile loop could just be red or blue squares
21:37:24 <kallisti> or red or blue squares going around in a animated loop
21:37:29 <kallisti> though that could be very distracting.
21:37:46 <kallisti> it does however
21:37:51 <kallisti> give you an idea of the directionality.
21:37:53 <kallisti> by animating it.
21:37:54 <Ngevd> What if two differently coloured projectiles are occupying the same square?
21:37:58 <kallisti> can't
21:38:02 <Ngevd> Why not?
21:38:14 <kallisti> projectiles cancel each other out, basically.
21:38:21 <kallisti> that's one of the rules of loops that I forgot to mention.
21:38:36 <Ngevd> That makes things simpler...
21:38:40 <kallisti> yes it does.
21:38:55 <kallisti> it also makes a fair amount of intuitive sense.
21:39:06 <Ngevd> Not if you imagine lasers!
21:39:10 <kallisti> true.
21:39:17 <kallisti> I might change that rule I dunno.
21:39:30 <kallisti> but two differently coloured projectiles could just turn purple on intersections, lol. -shrug-
21:39:37 <kallisti> but then
21:39:40 <kallisti> ownership rules are confusing.
21:39:45 <kallisti> on those squares.
21:39:56 <kallisti> which is only relevant for lenses
21:40:04 <kallisti> nothing else cares about the notion of projectile ownership.
21:42:37 * kallisti imagines changing the lens to a reflector piece.
21:42:45 <kallisti> directionless and just reversed the flow of a projectile
21:43:12 <kallisti> has the interesting property that if you place it in a loop it will ambiguously cut a bidirected loop in half to one of the sides
21:43:26 <kallisti> and would turn a unidirected loop into a bidirected one. :P
21:43:28 <kallisti> but.... no.
21:43:46 <kallisti> Ngevd: I think a triangle could be a good piece for a lens.
21:43:51 <kallisti> as that imparts a direction.
21:43:58 <kallisti> visually
21:44:13 -!- Vorpal has quit (Ping timeout: 252 seconds).
21:44:32 <Ngevd> At the moment I'm using a sort of magnifying glass
21:44:46 <kallisti> ah yes
21:44:57 <Ngevd> That looks a bit like the portal
21:44:57 <kallisti> not really sure how to represent portals.
21:45:11 <kallisti> I should really change the queen. :P
21:45:18 <kallisti> it would simplify some rules if I could make it a different kind of piece.
21:45:37 <Ngevd> http://i1239.photobucket.com/albums/ff508/Taneb/Portal%20chess/portal_n_w.png
21:45:44 <Ngevd> http://i1239.photobucket.com/albums/ff508/Taneb/Portal%20chess/lens_n_w.png
21:45:44 <kallisti> and I could remove the projectile cancelling rule and just make projectiles pass through loops
21:46:01 <kallisti> lol
21:46:04 <kallisti> top notch art dude.
21:46:30 <kallisti> yes it looks somewhat like a telescope eyepiece or something
21:46:31 <Ngevd> I'm a poet mathematician, not a pixel artist
21:46:40 <kallisti> I think vector graphics would be easier for this.
21:46:52 <kallisti> also you get all the benefits of vectorized graphics.
21:46:59 <Ngevd> I'm the one doing the client.
21:47:07 <Ngevd> I call the graphics shots.
21:47:49 <Ngevd> Also, it'd be hard for me to change it to Vectors, and I'm friends with a fair few pixel artists
21:47:59 <kallisti> lol okay.
21:48:27 * kallisti has final say on the Official Graphical Representation of Portal Chess Pieces.
21:48:44 <kallisti> but currently I don't see a need to have one, except for the purposes of writing nice diagrams in the rules.
21:49:06 <kallisti> ...I was just going to use normal chess piece icons for that, actually.
21:49:25 <kallisti> with some kind of thing for direction
21:49:30 <kallisti> but maybe having FANCY NEW SYMBOLS is better.
21:49:33 <zzo38> kallisti: Well, yes. I made TeX chess program which can be used with many variants, in case it help. It include normal chess icons. I can also make up METAFONT files and macros for Portal Chess if you wanted to
21:50:08 <kallisti> zzo38: I'm not entirely sure what I could do with that, but if you want to that would be fine.
21:50:30 <zzo38> kallisti: I am guessing, make rules with diagrams.
21:51:03 <Ngevd> When we have a) an official, final ruleset and b) semi-official piece representations
21:51:24 <zzo38> (If you are using HTML to write the rules, you can still use it I wrote a program to combine METAFONT with ImageMagick so that you can make PNG file)
21:51:49 <kallisti> Ngevd: yeah I'll get around to that eventually. :P
21:52:02 <Ngevd> I don't want to be the person who creates the de facto representation of pieces by virtue of being the first person to create a graphical client
21:52:19 <kallisti> honestly I think that's some months away. I need to build up some savings so I can afford a webserver. (not just for portal chess, but for other things)
21:52:41 -!- Ngevd has left ("Goodbye").
21:52:45 <kallisti> bye
21:52:48 -!- Ngevd has quit (Quit: Goodbye).
21:52:55 <zzo38> But my TeX chess program does allow making diagrams of chessboards, with or without checkerboard, and writing move notations too.
21:53:00 -!- Ngevd has joined.
21:53:07 <zzo38> Including different sizes of boards, using different fonts for piece icons, etc
21:53:10 <Ngevd> Not sure what happened there
21:53:12 <kallisti> zzo38: can it show piece movesets?
21:53:27 <kallisti> to highlight all the locations a piece can move.
21:53:49 <zzo38> kallisti: Yes; you simply need to use one icon to represent the locations you can mov eto
21:55:14 -!- Phantom_Hoover has joined.
21:55:42 <kallisti> zzo38: can you render this in HTML?
21:55:51 * kallisti is a noob at TeX
21:56:05 <zzo38> kallisti: No. It is only for TeX.
21:56:25 <kallisti> seems like you should be able to render it and then take an image or something.
21:56:33 <zzo38> kallisti: You can do that, yes.
21:57:00 <zzo38> The program "dvipng" might help if you want to render it and then take an image
21:57:23 <Ngevd> PDF?
21:57:56 * kallisti is equally clueless about PDF as he is TeX
21:58:07 <kallisti> I don't spend a lot of time rendering written documents in things. :P
21:58:19 <ais523> does anyone actually write PDF by hand?
21:58:22 <zzo38> I think if you have the correct addons you can use ImageMagick to convert PDF to other formats, but there is no need to do that. You can use TeX to create a DVI file and then convert it to PNG if you want to include the image in a HTML file
21:58:23 <ais523> PostScript, yes, but PDF?
21:58:32 <Ngevd> Probably not
21:59:05 <zzo38> PDF is a dumb format full of dumb things, and so is PostScript
21:59:27 <ais523> wow, that's an unusually strong opinion for you
21:59:28 <Ngevd> PDF has the advantage of commonplace web browser support
22:00:38 <zzo38> Ngevd: Yes, it does have that. Still, I suggest not using PDF, or at least offering other formats too (such as plain text, DVI etc; plain text also has commonplace web browser support)
22:01:03 <Ngevd> But lacks the graphics capabilities of PDF
22:01:08 <Ngevd> Or we could just use HTML
22:01:14 <zzo38> Plain text support is common everywhere, including gopher
22:01:17 <Ngevd> Which has ubiquitious browser support
22:01:33 <Ngevd> But a range is probably best
22:01:39 <zzo38> Ngevd: Yes you can use HTML too, if you prefer.
22:01:43 <kallisti> zzo38: couldn't I just write the rules in LaTeX and then translate that to basically any other document format?
22:02:15 <zzo38> kallisti: I don't think so because the program TeX chess is only for Plain TeX.
22:02:35 <kallisti> but you can embed images in LaTeX right? I really just need the output image from such a program.
22:03:02 <zzo38> (There are also other problems, with both Plain TeX and LaTeX, that prevents proper conversion to other formats, other than output-only formats (such as DVI, PostScript, and PDF))
22:03:39 <zzo38> TeX chess can be used to create the diagrams, and then if you need the output image you can use dvipng now you have the PNG file usable in HTML and so on
22:04:38 <zzo38> There are also other programs for chess diagrams specifically in HTML, although some of them might not have as many features as TeX chess
22:05:40 <zzo38> http://zzo38computer.cjb.net/tex/texchess.zip
22:05:51 <zzo38> It includes a documentation.
22:08:00 <Ngevd> I still don't know how to draw projectile loops...
22:09:18 -!- Ngevd has quit (Quit: Goodnight).
22:45:49 <zzo38> Please tell me if this program has a thing missing or wrong that you think it is: http://sprunge.us/WQKG
22:48:23 -!- Klisz has joined.
22:50:09 <ais523> <frymaster> you're unlikely to find sourced assertions of "there was absolutely nothing out of the ordinary about geiger counter availability in the USSR"
23:15:11 -!- Patashu has joined.
2012-01-22
00:15:12 -!- itidus21 has left ("Leaving").
00:20:34 -!- Frooxius has quit (Quit: ChatZilla 0.9.88-rdmsoft [XULRunner 1.9.0.17/2009122204]).
00:20:55 -!- Frooxius has joined.
00:28:16 <zzo38> Some games have Vancian casting. So now, make up the game with Vatican casting.
00:30:44 -!- Phantom_Hoover has quit (Quit: Leaving).
00:40:36 -!- ais523 has quit (Remote host closed the connection).
00:43:16 -!- DCliche has joined.
00:47:16 -!- Klisz has quit (Ping timeout: 276 seconds).
00:56:03 <kallisti> > ((+1) &&& (*2)) 4
00:56:04 <lambdabot> (5,8)
00:57:10 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)).
00:57:28 -!- rodgort has joined.
01:00:44 <tswett> "An important limitation upon programming is that the machine must adhere to a prescribed linear course of operation. It cannot at any point choose between two subsequent programs on the basis of results already obtained."
01:00:49 <tswett> I guess programming has changed since 1947.
01:01:02 <kallisti> lol
01:01:25 <kallisti> a bit
01:13:54 <pikhq> I guess if was invented later.
01:19:31 <kallisti> :t unfoldr
01:19:33 <lambdabot> forall b a. (b -> Maybe (a, b)) -> b -> [a]
01:19:40 <kallisti> hm
01:19:58 <kallisti> ah
01:30:22 <zzo38> A Black Sheep is still a Sheep.
01:33:10 <Sgeo> http://sigcis.org/pipermail/members/2009-February/191226.html
01:33:35 <Sgeo> I think that ... the discovery of "if"?
01:35:23 <kallisti> @undo do { x <- m; y <- m2; f x y }
01:35:23 <lambdabot> m >>= \ x -> m2 >>= \ y -> f x y
01:35:41 <kallisti> erm
01:36:00 <kallisti> @@ @pl @do { x <- m; y <- m2; f x y }
01:36:00 <lambdabot> Parse error at "{" (column 1)
01:36:22 <kallisti> @. pl do { x <- m; y <- m2; f x y }
01:36:23 <lambdabot> Parse error at "{" (column 1)
01:36:25 <kallisti> erm
01:36:27 <kallisti> @help @@
01:36:28 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
01:36:37 -!- coppro has changed nick to coppro_.
01:36:38 <kallisti> @help @
01:36:38 <lambdabot> @ [args].
01:36:38 <lambdabot> @ executes plugin invocations in its arguments, parentheses can be used.
01:36:38 <lambdabot> The commands are right associative.
01:36:38 <lambdabot> For example: @ @pl @undo code
01:36:38 <lambdabot> is the same as: @ (@pl (@undo code))
01:36:57 -!- coppro_ has changed nick to coppro.
01:37:01 <kallisti> @@ @pl @undo { x <- m; y <- m2; f x y }
01:37:01 <lambdabot> Parse error at "{" (column 1)
01:37:06 <kallisti> @@ @pl @undo do { x <- m; y <- m2; f x y }
01:37:07 <lambdabot> (m2 >>=) . f =<< m
01:37:08 <kallisti> lol
01:38:20 <kallisti> :t liftM
01:38:21 <lambdabot> forall a1 r (m :: * -> *). (Monad m) => (a1 -> r) -> m a1 -> m r
01:38:22 <kallisti> :t liftM2
01:38:23 <lambdabot> forall a1 a2 r (m :: * -> *). (Monad m) => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
01:38:42 <kallisti> :t join . liftM2
01:38:43 <lambdabot> forall a2 r (m :: * -> *). (Monad m) => (a2 -> a2 -> r) -> m a2 -> m r
01:39:14 <kallisti> :t join .: liftM2 undefined
01:39:15 <lambdabot> forall (m :: * -> *) a a1 a2. (Monad m) => m a1 -> m a2 -> m a
02:21:54 -!- myndzi has joined.
02:24:38 -!- DCliche has quit (Quit: SLEEP, GLORIOUS SLEEP).
02:27:45 <variable> just a though for a new esolang
02:28:11 <variable> a language which has data disappear if you don't access it after some amount of time
02:36:08 <zzo38> variable: Yes I have thought of something similar too; see "Silly Emplosions"
02:36:39 -!- pikhq_ has joined.
02:36:46 -!- pikhq has quit (Ping timeout: 252 seconds).
02:37:24 <zzo38> "If you leave a variable for too long without assigning a value, the variable will lose its value."
02:37:40 <variable> ya
02:38:54 -!- myndzi has quit.
02:39:02 -!- myndzi has joined.
02:42:28 <zzo38> I realized now, in the Pure BF implementation, there is things such as (t $ Sum 0) but I think it is really same as (extract t)
02:44:06 <zzo38> For the (->) comonad, extract = ($ mempty)
02:54:43 <Sgeo> -> is a comonad?
03:03:57 <zzo38> Yes, but it require the input type to be monoid
03:04:46 <zzo38> You can also make an indexed comonad which is similar but has the input type being a category instead
03:06:56 <zzo38> This is such a program using -> comonad: http://esolangs.org/wiki/Pure_BF/Implementation
03:08:34 -!- azaq23 has quit (Quit: Leaving.).
03:14:30 <kallisti> :t uncurry
03:14:31 <lambdabot> forall a b c. (a -> b -> c) -> (a, b) -> c
03:30:57 <kallisti> http://hpaste.org/56825
03:31:02 <kallisti> anyway I can make this slightly less terrible?
03:34:50 <Sgeo> kallisti, update
03:35:41 <zzo38> kallisti: I don't know
03:35:52 <kallisti> zzo38: it may be hard to discern what it does.
03:36:31 <kallisti> the idea is that I have a function called stepLine, which generates a walk on the board starting from some coordinate and direction (the Move type is a Coord Direction pair)
03:36:55 <kallisti> it walks forward and if it ends when it runs into a piece or when it reaches the edge of the board.
03:37:10 <kallisti> if it encounters a portal that's facing the opposite direction of the direction of travel
03:37:13 <kallisti> it goes through the portal
03:37:19 <kallisti> so it can possibly be an infinite walk.
03:37:39 <kallisti> s/if it ends/it ends/
03:39:12 <kallisti> so this function extends that simple walk by applying a function whenever a portal is encountered
03:39:39 <kallisti> the function receives the location of the portal (as a Move) and the location of where the portal takes it.
03:40:19 <kallisti> whenever it returns Nothing wrapped in a monad, the walk halts
03:40:45 <kallisti> otherwise it returns Just the value to append to the walk list.
03:41:08 <kallisti> I use the State monad, but I generalized the type signature to any Monad/Functor
03:41:33 <zzo38> Can it work with any applicative functor?
03:41:55 <kallisti> hm
03:42:01 <kallisti> I think so?
03:42:07 <kallisti> maybe if I change the returns to pures
03:42:59 <kallisti> the point is that I want to keep track of every portal I've visited, and then halt the walk when I've reached the same portal again.
03:43:07 <kallisti> to avoid an infinite loop.
03:43:30 <kallisti> State seemed like the easiest way to not only keep track of the portals, but to keep track of them between multiple walks from a given starting point.
03:43:53 <kallisti> but... I'm wondering if there's a better way.
03:45:01 <kallisti> walkWithPortals will be used to: a) figure out the valid moveset for a given piece b) detect loops when a projectile is fired
03:45:35 <kallisti> possibly other things I haven't considered. it's a useful bit of code that removes some ugly, duplicate code.
03:46:31 <kallisti> a small change I was wondering about:
03:46:34 <kallisti> maybe (return Nothing) (uncurry portalF) mTuple
03:46:40 <kallisti> can I avoid this?
03:48:16 <kallisti> step' returns a single step, ignoring portals, step returns a single step forward and follows portals
03:48:28 <kallisti> so to detect portals I check the result of both against each other... if they're different then we've hit a portal.
03:49:23 <kallisti> but they both return Maybes... because their may be no step to take (you're in front of a piece or at the edge of the board)
03:49:32 <kallisti> *there
03:51:57 <kallisti> it's probably better if I just paste the whole code
03:51:58 <kallisti> http://hpaste.org/56828
03:57:54 <kallisti> zzo38: what's the term in chess for pieces that move in cardinal directions?
03:57:59 <kallisti> do they use orthogonal?
04:38:07 <kallisti> @pl (\x -> map (f x))
04:38:07 <lambdabot> map . f
04:38:16 <kallisti> @pl (\x y -> map (f x) y)
04:38:16 <lambdabot> map . f
04:38:23 <kallisti> hm
04:38:50 <kallisti> @pl (\x y -> f . g . h $ map (f x) y)
04:38:50 <lambdabot> ((f . g . h) .) . map . f
04:39:45 <kallisti> @pl (\x -> f . g . h . map (f x))
04:39:45 <lambdabot> ((f . g . h) .) . map . f
04:44:06 <kallisti> Haskell kind of forces you to get good at naming things. :P
04:44:43 <monqy> nope
04:47:55 <kallisti> either that or use a lot of letters.
04:48:18 <kallisti> or just be really bad at naming things still
04:48:19 <kallisti> I guess
04:48:39 <monqy> all of my names are just lots of apastrafes
04:48:46 <kallisti> bad
04:48:59 <kallisti> m'''
04:49:08 <kallisti> not to be confused with m''
04:49:11 <kallisti> and m'
04:49:12 <kallisti> or...
04:49:15 <kallisti> do you actually just use '?
04:49:16 <kallisti> '''
04:49:22 <kallisti> oh wait can't
04:49:51 <monqy> i put an underscore before it
04:50:28 <kallisti> > _' = 2 in _'
04:50:29 <lambdabot> <no location info>: parse error on input `='
04:50:32 <kallisti> > let _' = 2 in _'
04:50:33 <lambdabot> 2
04:51:19 * kallisti takes note of that one for a future Haskell obfuscator
04:51:28 <kallisti> though the ideal obfuscator just applies @pl to everything
04:51:36 <kallisti> so there won't be any variables
04:53:20 <Jafet> let _'_ = '_'
04:54:32 <kallisti> @hoogle (<|>)
04:54:33 <lambdabot> Control.Applicative (<|>) :: Alternative f => f a -> f a -> f a
04:54:33 <lambdabot> Text.Parsec.Prim (<|>) :: (ParsecT s u m a) -> (ParsecT s u m a) -> (ParsecT s u m a)
04:54:33 <lambdabot> Text.ParserCombinators.Parsec.Prim (<|>) :: (ParsecT s u m a) -> (ParsecT s u m a) -> (ParsecT s u m a)
04:55:52 <kallisti> @unpl (\(a,b) -> (f a, f b))
04:55:53 <lambdabot> (\ (a, b) -> (f a, f b))
04:55:56 <kallisti> @pl (\(a,b) -> (f a, f b))
04:55:57 <lambdabot> f *** f
04:56:32 <kallisti> @pl (\a b -> (f a, f b))
04:56:32 <lambdabot> (. f) . (,) . f
04:57:56 <kallisti> is there anything dangerous about FlexibleContexts?
04:58:45 <Jafet> It's a gateway to IncoherentInstances
04:59:35 <kallisti> ...so
04:59:39 <kallisti> not dangerous?
05:00:06 <kallisti> I basically want to generalize my State code to MonadState, despite the fact that it uses a specific state type...
05:00:22 <Jafet> Not by itself. But you often don't use it by itself.
05:14:20 -!- oerjan has joined.
05:15:32 -!- MDude has changed nick to MSleep.
05:22:18 <kallisti> @hoogle (Maybe a, Maybe b) -> Maybe (a,b)
05:22:18 <lambdabot> No results found
05:22:27 <kallisti> heh
05:22:57 <oerjan> uncurry (liftM2 (,))
05:23:00 <oerjan> :t uncurry (liftM2 (,))
05:23:01 <lambdabot> forall a1 a2 (m :: * -> *). (Monad m) => (m a1, m a2) -> m (a1, a2)
05:23:45 <kallisti> walkWithPortals :: (Functor m, Monad m) => Board -> (Move -> Move -> m (Maybe Move)) -> Move -> m [Move]
05:23:51 <kallisti> oerjan: do you walk with portals?
05:23:59 <oerjan> sadly, no
05:24:15 <kallisti> also, how obscene is that type?
05:24:22 <kallisti> it looks pretty obscene to me.
05:24:49 <oerjan> well Functor _should_ be implied by Monad. if you replace fmap by liftM, it might do.
05:24:59 <oerjan> *_should_ have been
05:25:11 <kallisti> no it wasn't implied because I'm using fmap
05:25:23 <kallisti> I don't really like the liftM family but... I'll try it.
05:25:49 <oerjan> i mean, in a general why the heck doesn't haskell do it, oh you mean it's been discussed a googol times before, ok...
05:25:56 <oerjan> *+sense
05:26:20 <kallisti> linearWalk :: (MonadState (S.Set Move) m) => Board -> Move -> m [Move]
05:26:22 <kallisti> FLEXIBLECONTEXTS OSHI
05:26:33 <oerjan> while raisins are dancing around you, hysterically.
05:26:48 <kallisti> I like how linearWalk actually isn't really very linear at all.
05:26:53 <kallisti> depending on what you mean by linear...
05:27:12 <oerjan> flexiblecontexts is trivial, another thing that should have been in haskell by default.
05:27:18 <kallisti> in an absolute sense it is not a continuous line. however, when thinking with portals, it's perfectly linear.
05:27:42 <oerjan> curvaceousWalk?
05:28:01 <kallisti> I guess I should call it like linearWalkButCatchesInfiniteLoops
05:28:11 <kallisti> and then call stepLine linearWalk
05:29:10 <kallisti> concatLinearWalks :: Board -> [Move] -> [Move]
05:29:12 <kallisti> concatLinearWalks = ((join . (`evalState` S.empty)) .) . mapM . linearWalk
05:29:16 <kallisti> BOOM PUNCHLINE
05:33:51 <oerjan> um the join there is actually concat, no? it's outside the monad after all.
05:33:56 <kallisti> yes
05:34:06 <kallisti> is that confusing?
05:34:09 <oerjan> might be clearer to use concat, then
05:34:39 <kallisti> done. :)
05:35:14 <kallisti> can you tell what it does by chance? :P
05:35:37 <kallisti> data Move = Move Coord Direction
05:36:19 <kallisti> linearWalk (Move c d) starts its walk from point c traveling in direction d
05:36:29 <kallisti> *linearWalk board (Move c d)
05:38:05 <kallisti> hmmm wait is State a monoid?
05:38:07 <oerjan> well it concatenates results of linearWalk, each linearWalk starting with the end state of the previous one
05:38:19 <kallisti> yes
05:38:26 <oerjan> i don't know why that is an interesting operation.
05:38:50 <kallisti> it probably isn't. it's just the first time I've actually used State for anything useful. :P
05:39:13 <kallisti> in this case the state is a set of every portal we've encountered along the walk
05:39:20 <oerjan> oh wait hm
05:39:20 <oerjan> linearWalk actually just takes one step, right
05:39:20 <kallisti> the walks short circuit when they encounter the same portal again.
05:39:24 <kallisti> no
05:39:35 <kallisti> zero or more
05:39:45 <oerjan> more than one?
05:39:58 <kallisti> well it could take zero if it attempts to walk into another piece
05:40:10 <kallisti> or off the edge of the board.
05:40:25 <kallisti> but otherwise takes one or more.
05:40:30 <oerjan> the zero is obvious. what i don't understand is why you'd want more than one.
05:40:51 <kallisti> to define movesets for each piece.
05:41:31 <oerjan> oh. so it's not some walk a piece would actually try to take, now it makes more sense
05:41:41 <kallisti> yes it's a list of possible moves.
05:41:43 <oerjan> (the concatenated one)
05:42:01 <kallisti> which can be a tricky thing to figure out on a board with four portals on it.
05:43:18 <oerjan> heh
05:43:31 <kallisti> there may be a more efficient way to calculate that I don't know
05:43:45 <kallisti> but it seemed easiest to just define what the set of moves is and then traverse it to see if the attempted move is valid.
05:44:05 <oerjan> do you exit a portal in the same direction, or rotated
05:44:09 <kallisti> maybe use a set instead of a list? I don't know, that's a lot of inserts for basically only probably one lookup.
05:44:21 <kallisti> oerjan: the portal forces your new direction
05:44:26 <kallisti> so... whatever that means
05:44:30 <kallisti> phrased in those terms that you just said. :P
05:44:42 <kallisti> rotated I guess.
05:44:42 <oerjan> which means loops need to take into account what direction you are traveling
05:45:00 <kallisti> believe so yes.
05:45:09 <kallisti> I'm not entirely sure about that
05:45:15 <kallisti> but it currently does take that into account.
05:45:22 <kallisti> there's only one direction from which you can enter a given portal
05:45:28 <kallisti> so... just keeping track of the coordinate should be enough
05:45:56 <oerjan> ok
05:46:27 <kallisti> unfortunately I'll probably need to rewrite some of this code or generalize it even further in order to get it to work with projectiles....
05:47:17 <kallisti> oh hmmm
05:47:19 <kallisti> just got an idea
05:47:58 <kallisti> oerjan: http://hpaste.org/56830 hi can you make walkWithPortals less ugly?
05:48:03 <kallisti> actually I might be doing that soon.
05:48:15 <kallisti> I think I'm going to make walkWithPortals a special case of a more general function
05:49:01 <oerjan> ok
05:49:23 <kallisti> basically walkWithPortals applies the function you supply it whenever it encounters a portal on a walk (note that this kind of walk can possibly be infinite -- this is before the short-circuiting happens)
05:49:29 <kallisti> but
05:49:48 <kallisti> I can just generalize that to "apply a function when you land on any piece"
05:49:54 <kallisti> and that basically lets me do all the other things I want to do.
05:51:14 * kallisti is not sure if he's going about it the right way.
05:51:27 <kallisti> this is the first large Haskell program I've written. :)
05:52:39 * oerjan has never written a large haskell program, he thinks
05:54:00 <kallisti> hmmm I should test the code I currently have.
05:54:05 <kallisti> that's going to be annoying...
05:54:48 <kallisti> the Maybe monad has been my favorite for this section of code.
05:58:01 <kallisti> is there anything that short circuits on Just instead of Nothing?
05:58:14 <kallisti> > Just 2 <|> Nothing
05:58:15 <lambdabot> Just 2
05:58:22 <kallisti> > Nothing <|> Just 2
05:58:23 <lambdabot> Just 2
05:58:27 <kallisti> awwwwwwwww yeah
05:58:36 <kallisti> that's excellent
05:59:11 <kallisti> this means I can write "piece handlers"
05:59:17 <kallisti> and then just piece them together
05:59:18 <kallisti> with that.
05:59:36 <kallisti> or, well, something similar.
05:59:50 -!- itidus21 has joined.
05:59:55 <kallisti> itidus21: SUP DAWG
06:00:04 <oerjan> the soup dog
06:00:09 <kallisti> dup dog
06:00:12 <oerjan> bringing soup to everyone
06:00:38 <itidus21> i see in topic they think spotted marsh elliott extinct :-s
06:00:46 <oerjan> just don't be too picky on the hygiene.
06:01:06 <oerjan> itidus21: in this channel yes. it's been spotted in neighboring ones.
06:01:37 <kallisti> IRC is a weird place
06:01:54 -!- Phantom_Hoover has joined.
06:01:56 <kallisti> you can be in multiple locations at once, and your neighbors are defined by similarity in what they talk about.
06:02:04 -!- oerjan has set topic: Now open for Americans to liberate | Get your esoil and esoline here! | Glorious optator institutes permanent ban penalty for power tripping | Weapons of mass banning "just monoids in the category of endofunctors, what's the problem?" | Spotted marsh elliott still unspotted | Gregorian chants outlawed, "American" | http://codu.org/logs/_esoteric/.
06:02:50 <kallisti> there are so many... jokes
06:03:02 <oerjan> what, in the topic?
06:03:07 <kallisti> yes
06:04:42 -!- oerjan has set topic: Now open for Americans to liberate | Get your esoil and esoline here! | Production of tripless power cables start, "mandatory security change" | Weapons of mass banning "just monoids in the category of endofunctors, what's the problem?" | Spotted marsh elliott still unspotted | Gregorian chants outlawed, "American" | http://codu.org/logs/_esoteric/.
06:05:56 <kallisti> oerjan: I wouldn't be surprised if there's some kind of "GENERALIZE GRAPH WALK COMBINATOR" that could result from this stuff....
06:05:59 <kallisti> yes
06:06:01 <kallisti> GGWC
06:06:08 -!- oerjan has set topic: Now open for Americans to liberate | Get your esoil and esoline here! | Production of tripless power cables start, "mandatory security change" | Glorious optator briefly unmentioned in topic, editor exiled | Spotted marsh elliott still unspotted | Gregorian chants outlawed, "American" | http://codu.org/logs/_esoteric/.
06:06:42 <kallisti> how do you pronounce "esoil?
06:06:50 <kallisti> s/\?/"?/
06:07:03 <kallisti> s oil?
06:07:05 <oerjan> straight forward duh
06:07:22 <kallisti> at first sight I thought it was e soil.
06:08:09 * oerjan finds out he's not quite got the right pronunciation of "esoteric"
06:08:30 <kallisti> I remember when I discovered that. :P
06:09:13 * itidus21 suddenly realizes i have wrong pronunciation also
06:09:19 <kallisti> lol
06:09:46 <itidus21> i have been subverbalizing it as E-so-teric all along
06:09:57 <itidus21> but reading this its obviously S-O-teric
06:10:30 <itidus21> or it could be
06:10:35 <kallisti> at first I pronounced it as eh-SAW-teric, and still think that sounds good. :P
06:10:46 <itidus21> maybe it is
06:10:51 <itidus21> im just guessing
06:11:02 <kallisti> no it's S-O-teric as you say.
06:11:10 <kallisti> though the O coulkd be a schwa as well.
06:12:28 <oerjan> (UK) IPA: /ˌɛs.əʊˈtɛɹ.ɪk/, SAMPA: /%Es.@U"tEr.Ik/; (US) IPA: /ˌɛs.əˈtɛɹ.ɪk/
06:12:50 <oerjan> someone here might even be able to see all the symbols
06:13:00 * kallisti can see them!
06:13:08 <oerjan> (it's fine in my browser, just not in putty)
06:13:20 <itidus21> "In words attributed to Art Babbitt, an animator with the Walt Disney Studios: "Animation follows the laws of physics unless it is funnier otherwise." "
06:14:07 <kallisti> itidus21: it could also be more fantastic
06:14:09 <kallisti> instead of funny
06:14:14 <kallisti> for example, Dragonball Z.
06:14:26 <kallisti> so realistic or funny or BADASS
06:14:30 <kallisti> are the options. :P
06:14:30 <itidus21> yeah im pretty fixated on dragonball z physics
06:14:33 <kallisti> lol
06:14:39 <kallisti> I KNOW THAT'S WHY IT'S A PERFECT EXAMPLE.
06:15:13 <kallisti> hm
06:15:23 <kallisti> these explicit board parameters are getting in my way.
06:15:43 <itidus21> *small grin* but up until now i have focused too much on japanese comical physics
06:16:12 <kallisti> maybe I should combine Move and Board into something....
06:16:12 <itidus21> the article heer reminds me that teh west did their own innovations too
06:17:37 <oerjan> <zzo38> I realized now, in the Pure BF implementation, there is things such as (t $ Sum 0) but I think it is really same as (extract t)
06:17:41 <oerjan> ah right
06:18:46 <oerjan> > (Sum 1, Product 5) `mappend` (Sum 2, Product 3)
06:18:46 <lambdabot> (Sum {getSum = 3},Product {getProduct = 15})
06:18:50 <oerjan> yay
06:19:27 <oerjan> zzo38: you could make a paintfuck implementation with the (Sum Int, Sum Int) monoid :P
06:19:32 <oerjan> i think
06:21:11 <oerjan> @tell zzo38 Sounds like you could generalize the monoid for your pure BF implementation, e.g. make a paintfuck implementation with the (Sum Int, Sum Int) monoid :P
06:21:12 <lambdabot> Consider it noted.
06:21:23 <kallisti> I wonder just how good GHC is at common subexpression elimination.
06:22:10 <oerjan> kallisti: afair it tries not to be smarter than the programmer, since that can cause space leaks
06:22:50 <oerjan> so if you want something elimated, give it a name
06:22:50 <oerjan> *-in-
06:23:17 <kallisti> I was referring to common subexpression elimination after inlining.
06:23:26 <kallisti> which I can't do myself.
06:23:31 <oerjan> oh.
06:24:17 <oerjan> maybe you can use {-# NOINLINE #-} somehow (i've never optimized much)
06:24:28 <kallisti> er, no that's the opposite of what I want.
06:24:35 <kallisti> I want it to inline and CSE :P
06:24:58 <kallisti> I suppose I could just find... a better way to write my code. INSTEAD
06:24:59 <kallisti> sheesh
06:25:14 <monqy> premature optimisation premature optimisation
06:25:26 <monqy> unless
06:25:32 <monqy> your code is awful?? and rewriting it would be good??
06:25:33 <monqy> help
06:25:38 <kallisti> probably.
06:26:22 <oerjan> you might also ask someone who actually knows the answer, i guess.
06:29:40 <kallisti> > many 1
06:29:41 <lambdabot> No instance for (GHC.Show.Show (f [a]))
06:29:41 <lambdabot> arising from a use of `M36260297...
06:29:57 <kallisti> > many 1 :: Maybe Int
06:29:58 <lambdabot> Couldn't match expected type `GHC.Types.Int'
06:29:58 <lambdabot> against inferred type ...
06:30:38 <kallisti> > const Just 2 <|> const Just 3 $ 5
06:30:39 <lambdabot> No instance for (Control.Applicative.Alternative ((->) a))
06:30:40 <lambdabot> arising from ...
06:30:46 <kallisti> this should totally be a thing.
06:32:26 <kallisti> oh wait
06:32:36 <kallisti> > const (Just 2) <|> const (Just 3) $ 5
06:32:37 <lambdabot> No instance for (Control.Applicative.Alternative ((->) a))
06:32:38 <lambdabot> arising from ...
06:32:40 <kallisti> actually this should be a thing.
06:32:43 <oerjan> i understand many and some are useless for monads which are not essentially parser monads
06:33:05 <oerjan> you need a monad in which the _same_ action can succeed or fail at different times.
06:33:39 <oerjan> ok State can do that. but not Maybe, [], Reader or Writer.
06:33:39 <kallisti> hi what does <|> on functions look like.
06:33:48 <zzo38> oerjan: Maybe you could make a paintfuck implementation too, if you like to do so. I have no intention to do so at this time
06:33:49 <lambdabot> zzo38: You have 1 new message. '/msg lambdabot @messages' to read it.
06:34:07 <oerjan> zzo38: nah i'm just pointing out the connection
06:34:41 <oerjan> :t sin <|> cos
06:34:42 <lambdabot> forall a. (Floating a, Alternative ((->) a)) => a -> a
06:35:01 <zzo38> You cannot use <|> on functions
06:35:21 <oerjan> :t Just <|> const Nothing
06:35:21 <oerjan> now what
06:35:21 <oerjan> :t Just <|> const Nothing
06:35:22 <lambdabot> forall a. (Alternative ((->) a)) => a -> Maybe a
06:35:22 <lambdabot> forall a. (Alternative ((->) a)) => a -> Maybe a
06:35:26 <kallisti> well I was thinking if its return value was <|>
06:35:30 <kallisti> er
06:35:32 <kallisti> was Alternative
06:35:33 <oerjan> kallisti: seems there is no instance defined
06:35:44 <kallisti> ....I'm having trouble figuring out what the instance looks like. :P
06:36:02 <kallisti> because how do you refer to the return value of the function?
06:36:08 <oerjan> kallisti: probably the same as most of the weird Num etc. instances
06:36:29 <oerjan> (f <|> g) x = f x <|> g x
06:36:31 <zzo38> If there is <|> then there must be empty as well, where the type signature for empty implies that it cannot be the same as any pure and that (<$> empty) = const empty due to the law fmap id = id
06:36:50 <oerjan> empty x = empty
06:37:07 <kallisti> I mean what does the instance header look like
06:37:13 <kallisti> that's... what I can't figure out. :P
06:37:30 <oerjan> oh duh right
06:38:12 <oerjan> a -> f b doesn't have the b in the right position to make an Applicative instance.
06:38:35 <kallisti> so I guess I'll just....
06:38:40 <kallisti> write my own function. what should I call it?
06:38:49 <oerjan> newtype wrapper can do it :P
06:38:55 <kallisti> gross.
06:38:57 <oerjan> which is actually what ReaderT is, i think
06:39:23 <oerjan> :t ReaderT
06:39:24 <lambdabot> forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
06:40:16 <oerjan> > runReaderT (ReaderT Just <|> ReaderT (const Nothing)) 5
06:40:17 <lambdabot> Just 5
06:40:52 <kallisti> eh that kind of defeats the purpose for me
06:40:55 <kallisti> I'll just write my own function.
06:42:18 <zzo38> The type signature of empty (and mzero) also implies the left zero law (mzero >> x = mzero) due to the (>>= return) law that (join . return = join . fmap return = id)
06:42:49 <oerjan> what's your f in this, anyway? if the f x monoid instance fits that f alternative instance, you could use a monoid instance for -> instead
06:43:01 <zzo38> It is not necessary to make the left zero law explicit in the definition
06:43:02 <oerjan> alas, Maybe is well known _not_ to match them
06:43:07 <kallisti> Maybe
06:43:19 <kallisti> it's okay I'm doing something else. :>
06:43:26 <zzo38> Not to match what?
06:43:45 <oerjan> zzo38: mappend and <|> don't do the same thing for Maybe
06:43:54 <kallisti> actually I could make an alternative instance for a very very specific function. :P
06:44:27 <zzo38> oerjan: Yes. That is so that they can make a different thing for mappend
06:44:38 <oerjan> > Just "test" <|> Just "so"
06:44:39 <lambdabot> Just "test"
06:44:45 <oerjan> > Just "test" `mappend` Just "so"
06:44:45 <zzo38> But you could make a wrapper that makes mappend do the <|>
06:44:46 <lambdabot> Just "testso"
06:45:10 <zzo38> Another wrapper could make mappend to do the (liftA2 mappend)
06:45:15 <oerjan> zzo38: well but a newtype wrapper defeats kallisti's purpose of getting something elegant
06:45:25 <kallisti> YEP
06:45:49 <zzo38> oerjan: Then, implement the InstanceDisambiguation extension proposal that I have written
06:45:50 <oerjan> there are already _several_ Monoid wrappers for Maybe
06:46:43 <zzo38> oerjan: I don't mean only for Maybe. I meant a wrapper making mappend do the <|> or the (liftA2 mappend) etc for any general Alternative or Applicative of monoid
06:48:49 <zzo38> Although I think, as well as making join a class method of Monad, make liftPair :: (f x, f y) -> f (x, y) a class method of Applicative since it is sometimes very useful, and you could have <*> and liftPair default methods defined in terms of each other
06:49:58 <zzo38> And then I try to think, if you can somehow make a Coapplicative with a kind of liftPair other way
06:50:26 <oerjan> zzo38: i am not sure how useful liftPair as a method is, since i think usually a liftPair implementation would just be putting (,) in the <*> definition
06:50:53 <oerjan> and then, why not make it general in the first place
06:52:05 <zzo38> Also see this: http://en.wikipedia.org/wiki/Monoidal_monad It seems similar to my "liftPair" idea but describes how a monad can be applicative functor as well, as far as I can tell
06:52:14 <kallisti> walkWith board (followPortal `orRule` stopOnPiece) startMove
06:52:18 <kallisti> holy crap that's awesome.
06:53:28 <zzo38> oerjan: There is the reason not make it general; you can define <*> too; the liftPair would just be another way that describes it without function (putting the use of function in fmap instead)
06:53:57 <zzo38> Like how, join also doesn't require the function as a parameter
06:54:05 <kallisti> I wonder if orRule should be left associative or right associative.
06:54:28 <kallisti> same associative as <|> I think
06:54:30 <kallisti> which is.... left?
06:54:51 <zzo38> If you type :info <|> in GHCi then they will tell you the fixity
06:55:02 <kallisti> pretty sure it's left based on its short circuting behavior with Maybe
06:55:18 <zzo38> It doesn't matter because it is associative
06:55:21 <kallisti> > Nothing <|> Just 2 <|> Nothing
06:55:22 <lambdabot> Just 2
06:55:26 <kallisti> oh right
06:55:37 <oerjan> zzo38: the difference is that i find it hard to think of a liftPair definition which doesn't use (,) somewhere, possibly hidden in something like curry, but still. while a join definition does not have to contain any obvious correspondence to >>='s function argument.
06:55:39 <kallisti> > Just 3 <|> Just 2 <|> Nothing
06:55:40 <lambdabot> Just 3
06:56:00 <kallisti> yeah should be left associative in this case.
06:56:48 <zzo38> kallisti: But <|> is associative by law, so (Just 3 <|> Just 2) <|> Nothing = Just 3 <|> (Just 2 <|> Nothing)
06:57:07 <kallisti> ah, indeed.
06:57:37 <oerjan> :t (0$0 <|>)
06:57:38 <lambdabot> The operator `<|>' [infixl 3] of a section
06:57:38 <lambdabot> must have lower precedence than that of the operand,
06:57:38 <lambdabot> namely `$' [infixr 0]
06:57:38 <zzo38> oerjan: That is true, that is a difference. But at least "monoidal monad" in mathematics (described by the Wikipedia article) seem to be similar to liftPair
06:58:19 <oerjan> zzo38: yes, but in mathematical category theory, products are much more fundamental than in haskell
07:00:38 <oerjan> <kallisti> pretty sure it's left based on its short circuting behavior with Maybe <-- huh, that actually seems stupid. right would short circuit better.
07:01:04 <oerjan> just like with || and &&
07:01:06 <oerjan> hm...
07:01:13 <oerjan> > (0$0 ||)
07:01:14 <lambdabot> The operator `GHC.Classes.||' [infixr 2] of a section
07:01:14 <lambdabot> must have lower ...
07:01:17 <oerjan> > (0$0 &&)
07:01:18 <lambdabot> The operator `GHC.Classes.&&' [infixr 3] of a section
07:01:18 <lambdabot> must have lower ...
07:01:38 <kallisti> infixl 3 <|>
07:02:04 <oerjan> i have had a hunch for a while that the Applicative operator fixities are not well thought out. (for one thing, they're _different_ from the corresponding Monad ones)
07:02:30 <oerjan> > (0$0 `mplus`)
07:02:31 <lambdabot> The operator `Control.Monad.mplus' [infixl 9] of a section
07:02:31 <lambdabot> must have l...
07:02:41 <oerjan> ok that one doesn't actually _have_ one.
07:02:42 <zzo38> oerjan: Yes they are different, and sometimes it is useful that they are difference. But yes it still does seem mixed up you are correct about that
07:04:13 <oerjan> <zzo38> If you type :info <|> in GHCi then they will tell you the fixity <-- also my (0$0 `op`) trick for lambdabot
07:04:30 <zzo38> O, yes, that too.
07:05:18 <kallisti> mmmm this is so good
07:05:20 <kallisti> this fixes so many things.
07:11:05 <kallisti> oerjan: what do you mean that right associative would short circuit better?
07:11:21 -!- pikhq_ has quit (Ping timeout: 240 seconds).
07:11:36 -!- pikhq has joined.
07:11:53 <oerjan> kallisti: if a <|> b <|> c is parsed as a <|> (b <|> c), you just need to evaluate the a to know if it causes a short circuit
07:12:10 <kallisti> oh right
07:12:23 <kallisti> I'm bad at associativity. :P
07:13:10 <kallisti> wow, I've written a lot of code.
07:13:23 <kallisti> this is the most Haskell I've written.
07:13:34 <zzo38> How does "in mathematical category theory, products are much more fundamental than in haskell"? Product type are useful in Haskell programming too (since really, you can do many the same as mathematics)
07:13:53 <oerjan> and even if <|> _doesn't_ shortcut ... for [], (<|>) = (++) and ++ has better complexity when right associated
07:17:25 <oerjan> zzo38: useful, sure, but in category theory products are a limit construction, and afaict used to _define_ two-argument morphisms. and you don't get currying unless your category is cartesian closed.
07:17:46 <oerjan> so you _need_ products in a more fundamental way.
07:18:22 <zzo38> oerjan: Yes, I suppose that is why some monad are "monoidal monads"; when I read that I thought, is all monads applicative functors as long as it is a cartesian closed category? Or is there something else?
07:19:08 <oerjan> zzo38: i don't know, monoidal monads reaches the part of category theory that is a bit too heavy for my brain nowadays.
07:20:23 <oerjan> zzo38: i recall some people mentioned recently, maybe here, that without cartesian closed category there is a distinction between monads and _strong_ monads. i don't know what that is though.
07:20:47 <zzo38> Because, I know in Haskell, all monads can be applicative functors. I would like to know if that applies to all cartesian closed categories, or if it is a weaker or a stronger requirement than this.
07:21:15 <zzo38> oerjan: Yes I have read some things about strong monads, and that in Haskell, all functors are strong
07:21:16 <oerjan> argh that requires monoidal category too. there's no escape :P
07:21:40 <kallisti> linearWalker :: WalkRule
07:21:40 <kallisti> linearWalker = followPortal `orRule` stopAtPiece
07:21:47 <kallisti> the terminology is just getting more ridiculous as we speak.
07:23:32 <zzo38> And anyways, the Arrow class in Haskell is defined using product types.
07:24:18 <oerjan> zzo38: hm, cartesian closed categories allow you to define monads in terms of >>= don't they, and doesn't the rest of applicative follow from that?
07:24:43 <oerjan> zzo38: yes, but i think that's considered a somewhat ugly fact about arrows.
07:25:28 <kallisti> hm
07:25:37 <oerjan> although some consider the rampant use of arr also an ugly fact, and i've read some suggesting a weaker arrow class without it, and _just_ product plumbing, which would be useful for circuit-like things
07:25:51 <oerjan> *weaker variant of
07:26:12 <kallisti> what would happen if.....
07:26:23 <kallisti> I passed these walk rules, the rule that they're a part of?
07:26:42 <kallisti> so that they can advance forward using all the rules.
07:26:54 <kallisti> hm that sounds like a continuation actually.
07:27:19 <oerjan> kallisti: sounds like how you do recursion in lambda calculus
07:27:31 <zzo38> I think arr ought to be a different class. I did write a module (not yet published) that puts arr in a different class and can use any type instead of (,) as another class parameter (which means no separate class in needed for ArrowChoice since you can use the dual category)
07:27:46 <kallisti> oerjan: I want to define a rule called walkAroundPiece
07:28:09 <kallisti> which will, if it encounters a piece, step forward beyond it.
07:28:19 <kallisti> but it has to know what the walk rule is
07:28:23 <kallisti> which is information it currently doesn't have.
07:28:35 <oerjan> i think i need to finish reading this website which keeps leaking memory ->
07:28:36 <zzo38> I put arr in a different class called CatFunctor from any one category to another, and a different name. The class methods for CatArrow are also given different names and has two parameters instead of just one
07:29:53 <kallisti> hmmm I think I could better structure this is a Cont maybe?
07:33:52 <kallisti> ....
07:33:53 <kallisti> I
07:34:03 <kallisti> I want to, so badly, name this constructor field
07:34:04 <kallisti> boardWalk
07:34:14 <kallisti> but that actually doesn't make any sense.
07:44:32 <Sgeo> Apparently, Notch is a fan of Order of the Stick
07:44:39 <kallisti> RecordPuns is a weird name for RecordPuns
07:47:04 <zzo38> class Category c => CatArrow c p where { arr1 :: c x y -> c (p x z) (p y z); arr2 :: c x y -> c (p z x) (p z y); mirror :: c (p x y) (p y x); (*+*) :: c x y -> c x' y' -> c (p x x') (p y y'); (&|&) :: c x y -> c x y' -> c x (p y y'); } It can define arr1 in terms of arr2 and mirror, arr2 in terms of arr1 and mirror, *+* in terms of arr1 and arr2; can it define mirror in terms of &|& and arr1 and arr2?
07:47:21 <oerjan> argh IE will let me turn off scripts on the site but _not_ enable them on a subpage which i want them on (you _cannot_ put anything explicitly into the default region, only the restricted and cleared ones)
07:47:41 <oerjan> (yeah i know you'll just laugh at me using IE)
07:47:57 <kallisti> haha IE great funny
07:48:03 -!- ChanServ has set channel mode: +o oerjan.
07:48:15 <zzo38> I think you can add one more zone using the registry editor
07:48:16 -!- oerjan has kicked kallisti Just remember, there are consequences!.
07:48:22 -!- kallisti has joined.
07:48:24 <kallisti> egads!
07:48:29 -!- oerjan has set channel mode: -o oerjan.
07:48:46 <kallisti> stupid optators tripping on the power
07:48:59 <oerjan> i didn't trip, i was pushing you
07:49:19 <kallisti> am I a bad person for using record puns?
07:49:28 <oerjan> no, puns are always good
07:49:49 <kallisti> I think at this point I'm probably overcomplicating things.
07:50:07 <kallisti> but I can't think of a more general way to do it...
07:50:50 <oerjan> wait, more general implies _less_ complicated, in haskell?
07:51:08 <kallisti> no
07:51:12 <kallisti> and I think no for any language. :P
07:51:21 <kallisti> well...
07:51:30 <kallisti> I don't know this is easier than rewriting a bunch of code.
07:51:48 <kallisti> and in the likely event that I change some rules this will be pretty easy to modify.
07:55:09 <kallisti> oh wait I don't even need this rule...
07:55:17 <kallisti> or wait, yes I do...
08:14:50 -!- Vorpal has joined.
08:15:47 <zzo38> f :: Natural -> Natural -> Natural; f 0 0 = 0; f x 0 = x ^ church x (f $ pred x) (x ^ x); f x y = join (^) $ f x (pred y); z :: Natural; z = join (^) $ f 3 0;
08:18:03 <kallisti> uh oh....
08:19:02 <oerjan> zzo38: primitive recursive, i suspect
08:19:17 <zzo38> Questions: [1] How large is z compared to other large numbers? [2] How much memory do you need to calculate it? [3] How long will it take for the program to complete? [4] What properties can be figured out? [5] What is the point of doing such things?
08:19:20 <oerjan> oh hm or
08:19:48 <oerjan> maybe not...
08:21:02 <zzo38> (By "church" I mean that the function (f $ pred x) should be applied x times)
08:21:34 <zzo38> oerjan: Why not?
08:21:35 <oerjan> i think the last f equation is equivalent to f x y = church y (join (^)) (f x 0)
08:21:35 <oerjan> zzo38: i guessed that much
08:21:43 <oerjan> why not what
08:22:34 <oerjan> i am not sure whether combining church with (f $ pred x) can get you out of primitive recursive or not; nothing else there does
08:22:37 <zzo38> oerjan: O, yes, you are probably correct about the last f equation. I meant why not primitive recursive
08:23:38 <kallisti> oh....
08:23:41 <kallisti> I figured out what I want.
08:23:43 <kallisti> I think.
08:23:51 <kallisti> I think I want the StateT instance for MonadLogic?
08:24:09 <kallisti> assuming it works as I expect it to.
08:25:01 <kallisti> if I have StateT s [] a
08:25:10 <oerjan> ok so f x 0 = x ^ church x (\y -> church y (join (^)) (f (pred x) 0)) (x ^ x)
08:25:25 <oerjan> which is primitive recursive, i believe
08:25:27 <kallisti> then it should create a new state for each branch point, right?
08:25:33 <zzo38> oerjan: Yes which mean you don't really need the second argument
08:26:16 <oerjan> yep
08:26:31 <kallisti> :t runStateT
08:26:32 <lambdabot> forall s (m :: * -> *) a. StateT s m a -> s -> m (a, s)
08:27:07 <oerjan> zzo38: so, as usual this would be smaller than ackermann stuff
08:27:12 <zzo38> Now what happen if the first argument to church is also decided using f?
08:28:35 <oerjan> zzo38: i doubt that helps; the problem is that it's too easy to split the part where y varies by itself, so you are really only recursing on one argument at a time
08:28:46 * kallisti is bad at monad transformers...
08:28:47 <oerjan> *split out
08:29:13 <zzo38> By using mostly only the f, church, join, exponent, and predecessor of its argument; possibly in a small way that still has a large effect
08:30:04 <zzo38> oerjan: Even if y is ignored though; and there is one argument x only; if you did that what happen?
08:30:51 <kallisti> > do { x <- get; lift [x+1,x-1] } >>- iterate succ
08:30:52 <lambdabot> Couldn't match expected type `t [] b' against inferred type `[s]'
08:31:29 <kallisti> halp
08:32:31 <kallisti> > evalStateT $ do { x <- get; lift [x+1,x-1] } >>- iterate succ
08:32:32 <lambdabot> Couldn't match expected type `Control.Monad.Trans.State.Lazy.StateT
08:32:32 <lambdabot> ...
08:34:22 <oerjan> zzo38: what would you use for church's second argument then? if you put f i don't think the recursion terminates.
08:36:10 <zzo38> oerjan: I know you can't put f... oops... maybe you need to use exponents and number by the predecessor of argument, too
08:38:47 <kallisti> > flip evalStateT 5 $ do { x <- get; lift [x+1,x-1] >>- (lift . iterate succ)}
08:38:51 <lambdabot> [6,4,7,5,8,6,9,7,10,8,11,9,12,10,13,11,14,12,15,13,16,14,17,15,18,16,19,17,...
08:38:58 <kallisti> I have no idea if this is doing what I want it to do.
08:39:24 <oerjan> i suspect ackermann's two arguments with f nested in the recursive rule is about the simplest you can do to get something out of primitive recursive territory
08:40:09 <kallisti> but it would seem reasonable that each alternative branch point in the [] instance of MonadLogic would have a distinct state...
08:40:16 <kallisti> rather than running the state linearly through the resulting list.
08:43:27 <kallisti> > interleave [1,2,3] [4,5,6]
08:43:28 <lambdabot> [1,4,2,5,3,6]
08:43:49 <oerjan> oh hm ack x y = ack (pred x) (ack x (pred y)) = church y (ack $ pred x) (ack x 0)
08:43:50 <kmc> it's a fun exercise to write "interleave" which works for an infinite number of infinite lists
08:43:57 <kallisti> > [1,2,3] >>- const [4,5,6]
08:43:58 <lambdabot> [4,4,5,4,6,5,5,6,6]
08:44:02 <kmc> or i guess it's 'transpose'
08:44:13 <oerjan> kmc: um isn't that what >>- does
08:44:30 <oerjan> well, (>>- id)
08:44:35 <kmc> likely
08:44:39 <kmc> is that from LogicT?
08:44:45 <kallisti> I've actually used (>>- id)
08:44:47 <oerjan> i think so
08:44:58 <kallisti> it's from the MonadLogic class specifically
08:45:03 <kmc> it's also what Control.Monad.Omega.diagonal does iirc
08:45:16 <kmc> but anyway you don't need to "um" me as I said it was an exercise
08:45:18 <zzo38> I did think of some variant of Ackermann-Peter function which include multiple application (by church) as well, such as: a 0 n = succ n; a m 0 = church (a (pred m) 1) (a $ pred m) 1; a m n = church (a (pred m) $ a m (pred n)) (a $ pred m) (a m $ pred n);
08:46:10 -!- Ngevd has joined.
08:46:17 <Ngevd> Hello!
08:46:33 <kallisti> > if [1,2,3] (\x -> [x,x,x]) undefined
08:46:34 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
08:46:36 <kallisti> > ifte [1,2,3] (\x -> [x,x,x]) undefined
08:46:37 <lambdabot> [1,1,1,2,2,2,3,3,3]
08:46:49 <kallisti> > ifte [] (\x -> [x,x,x]) undefined
08:46:51 <lambdabot> *Exception: Prelude.undefined
08:47:00 <Ngevd> :t ifte
08:47:00 <lambdabot> forall (m :: * -> *) a b. (MonadLogic m) => m a -> (a -> m b) -> m b -> m b
08:47:59 <kallisti> Ngevd: I've been doing a lot of fancy magic since you left. :P
08:48:05 <Ngevd> Yay
08:48:09 <Ngevd> Magic that is fancy!
08:50:50 -!- _Slereah has quit (Ping timeout: 260 seconds).
08:53:02 <oerjan> so much better than boring magic!
08:55:06 <Ngevd> Also, kallisti, how do pawns behave with portals?
08:55:22 <oerjan> oh i think a category can be monoidal in more than one way, with product being one of them. makes more sense now.
08:56:13 <oerjan> i suppose the product is used for haskell, then
08:56:30 <oerjan> although you could also use Either instead...
08:56:43 <oerjan> (for the coproduct version)
08:56:45 <kallisti> Ngevd: as expected?
08:57:11 <zzo38> oerjan: Does that have anything to do with ArrowChoice?
08:57:18 <oerjan> zzo38: i expect so
08:57:43 <Ngevd> So, if there's a portal in front of them so they can go through it, and the matching portal is facing East, and they can move double, and move double through the portal, what happens?
08:58:37 <kallisti> the portal changes the direction of travel.
08:58:40 <kallisti> as though...
08:58:43 <kallisti> it were the same
08:58:44 <kallisti> >_>
08:58:49 <kallisti> as the original direction
08:58:51 <kallisti> or whatever.
08:58:54 <kallisti> this makes total sense.
08:58:55 <kallisti> :P
08:59:21 <zzo38> I did notice that how I have defined CatArrow, that ArrowChoice stuff is just done by CatArrow in a dual category with Either instead of (,)
09:00:51 <kallisti> Ngevd: think of it this way: portals just relocate points in a pieces moveset
09:01:06 <oerjan> hm that smash product example listed looks like what you would get if haskell's products were unlifted and you used bottoms as the identity. i think.
09:01:14 <kallisti> so that they continue in the direction forced by the out portal
09:01:33 <Ngevd> Hmm
09:01:36 <oerjan> (unlifted = (_|_, y) = (x, _|_) = _|_)
09:01:53 <oerjan> *unlifted means
09:02:00 <kallisti> Ngevd: this is a good way to think about it, because it's currently the way I'm implementing it. :>
09:03:55 <kallisti> Ngevd: btw I'll allow clients to request movesets
09:04:02 <kallisti> so a client can highlight possible moves for a piece
09:04:16 <kallisti> this should make reasoning about portals easier.
09:04:54 -!- _Slereah has joined.
09:09:08 <oerjan> zzo38: afaiu comonads are just monads in the dual category, so shouldn't coapplicatives be similarly related to applicatives? although i don't know the categorical definition of applicative.
09:10:30 <oerjan> `run echo "Comonads are just monads in the dual category." >wisdom/comonad
09:10:43 <HackEgo> No output.
09:10:53 <Ngevd> `? comonad
09:10:57 <HackEgo> Comonads are just monads in the dual category.
09:11:04 <Ngevd> Wow!
09:11:16 <Ngevd> Also, isn't that what `learn is for?
09:11:35 <oerjan> Ngevd: learn doesn't support pluralizing words afaik
09:11:54 <kallisti> > msplit [1,2,3,4]
09:11:55 <lambdabot> [Just (1,[2,3,4])]
09:12:01 <kallisti> ah
09:12:16 <oerjan> it does at least convert to lowercase.
09:12:30 <oerjan> `cat bin/learn
09:12:33 <HackEgo> ​#!/bin/sh \ topic=$(echo "$1" | sed 's/ .*//' | tr A-Z a-z) \ info=$(echo "$1" | sed 's/[^ ]* //') \ echo "$1" >"wisdom/$topic" \ echo "I knew that." \
09:14:12 <oerjan> msplit looks like it would be useful for pointlessing
09:14:27 <oerjan> oh wait it has a surrounding []
09:14:31 <oerjan> :t msplit
09:14:32 <lambdabot> forall (m :: * -> *) a. (MonadLogic m) => m a -> m (Maybe (a, m a))
09:14:43 <kallisti> > iterate (>>- iterate succ) 0
09:14:44 <lambdabot> No instance for (GHC.Num.Num [a])
09:14:44 <lambdabot> arising from a use of `e_10' at <inter...
09:14:48 <kallisti> > iterate (>>- iterate succ) [0]
09:14:49 <lambdabot> [[0],[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,2...
09:28:42 -!- Ngevd has quit (Ping timeout: 245 seconds).
09:31:24 <kallisti> > sequence [[1..], [0..]]
09:31:25 <lambdabot> [[1,0],[1,1],[1,2],[1,3],[1,4],[1,5],[1,6],[1,7],[1,8],[1,9],[1,10],[1,11],...
09:31:54 <kallisti> :t iterate
09:31:55 <lambdabot> forall a. (a -> a) -> a -> [a]
09:32:03 <kallisti> @hoogle (a -> a) -> a -> m a
09:32:04 <lambdabot> Prelude iterate :: (a -> a) -> a -> [a]
09:32:04 <lambdabot> Data.List iterate :: (a -> a) -> a -> [a]
09:32:04 <lambdabot> Data.Generics.Schemes everywhere :: (forall a. Data a => a -> a) -> (forall a. Data a => a -> a)
09:32:15 <kallisti> @hoogle (Monad m) => (a -> a) -> a -> m a
09:32:16 <lambdabot> Prelude iterate :: (a -> a) -> a -> [a]
09:32:16 <lambdabot> Data.List iterate :: (a -> a) -> a -> [a]
09:32:16 <lambdabot> Data.Generics.Schemes everywhere :: (forall a. Data a => a -> a) -> (forall a. Data a => a -> a)
09:38:57 -!- Ngevd has joined.
09:46:13 <zzo38> oerjan: I know comonads are just monads in the dual category. But I don't know of coapplicatives
09:46:23 -!- zzo38 has quit (Remote host closed the connection).
10:03:48 <oerjan> :t \(x,y) -> (,) x `liftM` y
10:03:49 <lambdabot> forall t a1 (m :: * -> *). (Monad m) => (t, m a1) -> m (t, a1)
10:04:15 <oerjan> i assume that's the strong monad strength function
10:05:43 <oerjan> :t either (return.Left) (liftM Right)
10:05:44 <lambdabot> forall (m :: * -> *) a a1. (Monad m) => Either a (m a1) -> m (Either a a1)
10:06:02 <oerjan> and that would be another candidate for the coproduct monoid
10:21:37 <kallisti> @hoogle (MonadPlus m) => m a -> Bool
10:21:38 <lambdabot> Data.IntMap null :: IntMap a -> Bool
10:21:38 <lambdabot> Data.Maybe isJust :: Maybe a -> Bool
10:21:38 <lambdabot> Data.Maybe isNothing :: Maybe a -> Bool
10:22:14 <kallisti> @hoogle mconcat
10:22:15 <lambdabot> Data.Monoid mconcat :: Monoid a => [a] -> a
10:22:26 -!- myndzi has quit (Ping timeout: 248 seconds).
10:22:35 <Ngevd> :t (== mzero)
10:22:35 <lambdabot> forall (m :: * -> *) a. (MonadPlus m, Eq (m a)) => m a -> Bool
10:23:47 <kallisti> > [1,2,3] >> []
10:23:48 <lambdabot> []
10:25:56 <kallisti> > msum (repeat [])
10:26:00 <lambdabot> mueval-core: Time limit exceeded
10:28:36 <oerjan> > msum []
10:28:37 <lambdabot> No instance for (GHC.Show.Show (m a))
10:28:37 <lambdabot> arising from a use of `M6822796534...
10:30:37 <kallisti> > Nothing `mplus` Just 2
10:30:38 <lambdabot> Just 2
10:31:14 <Ngevd> > Just 1 `mplus` Just 2
10:31:15 <lambdabot> Just 1
10:32:54 -!- sebbu has quit (Ping timeout: 255 seconds).
10:39:47 -!- monqy has quit (Quit: hello).
10:47:52 -!- Frooxius has quit (Ping timeout: 245 seconds).
10:57:12 -!- KingOfKarlsruhe has joined.
11:09:33 -!- Frooxius has joined.
11:10:04 -!- Frooxius has quit (Read error: Connection reset by peer).
11:11:22 -!- Frooxius has joined.
11:12:15 -!- Frooxius has quit (Client Quit).
11:14:55 -!- Frooxius has joined.
11:18:21 -!- Frooxius has quit (Read error: Connection reset by peer).
11:20:24 -!- Frooxius has joined.
11:20:39 <oerjan> spaamius
11:41:37 -!- Frooxius has quit (Ping timeout: 240 seconds).
11:49:54 -!- kallisti has quit (Ping timeout: 248 seconds).
11:51:07 -!- Ngevd has quit (Ping timeout: 252 seconds).
11:54:57 -!- Ngevd has joined.
11:56:07 <Ngevd> I reckon DMM is dying
11:56:12 -!- Frooxius has joined.
11:56:25 <Ngevd> And wants to pass all his knowledge onto the next generation
11:58:13 -!- Ngevd has quit (Client Quit).
12:09:53 -!- Ngevd has joined.
12:09:59 -!- Frooxius has quit (Read error: Connection reset by peer).
12:11:06 -!- Frooxius has joined.
12:14:26 -!- leonid[sunp] has joined.
12:14:31 <leonid[sunp]> helo
12:15:34 <Ngevd> Hello
12:15:37 <Ngevd> `welcome
12:15:40 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
12:15:50 <leonid[sunp]> i've been looking at fernando language
12:16:08 <leonid[sunp]> and wondered if it is possible to build a program that outputs the shortest possible fernando code that outputs any given string
12:16:38 <Ngevd> Definitely
12:17:44 <Ngevd> Efficiently is another challenge altogether
12:21:16 <oerjan> excuse me, but if fernando is turing-complete, that is impossible.
12:21:50 <oerjan> see kolmogorov complexity.
12:22:13 <leonid[sunp]> i see.
12:22:34 <fizzie> oerjan: How so? Enumerate through programs in shortlex order, for each program: ask your neighbourhood Turing oracle whether it halts, if it doesn't run it, if it outputted the string you wanted, well, there it is.
12:22:51 <leonid[sunp]> iirc, fernando doesn't have input function.
12:23:00 * oerjan swats fizzie -----###
12:23:28 <fizzie> oerjan: I don't think FerNANDo has any sort of unbounded storage, though.
12:23:59 <Ngevd> FerNANDo is linear bounded
12:25:51 <leonid[sunp]> it's basically a matter of detecting a pattern from the desired output
12:26:23 <oerjan> ah, maybe so then.
12:27:13 <oerjan> yes, then just simulate and check for repetition to throw out non-halting programs.
12:33:00 <leonid[sunp]> not sure how to approach this
12:33:17 <oerjan> it's still not efficient though.
12:33:32 <leonid[sunp]> i gave up getting the optimal code
12:33:46 <leonid[sunp]> 'fairly good' ones will satisfy me
12:36:10 <oerjan> well it's easy to make one which uses 3+8*n commands where n is the number of bits in the string.
12:36:43 <leonid[sunp]> haha yeah
12:36:51 <leonid[sunp]> i'd say that one is the upper bound
12:37:51 <oerjan> and loops are hard to use. especially since you can only jump backwards.
12:39:15 <leonid[sunp]> also wondering if it's possible to make fernando quine
12:41:09 <leonid[sunp]> (except for the trivial 0b solution of course)
12:41:29 <leonid[sunp]> actually nevermind. an empty code will cause an error
12:42:00 <Ngevd> I don't see anything stopping it
12:43:05 <oerjan> i don't know why it would be an error.
12:43:42 <leonid[sunp]> i thought the only valid lines of codes are those that consist of 1, 3, or 8 variables
12:43:50 <leonid[sunp]> looks like i'm wrong
12:44:22 <oerjan> yes, what does that have to do with having _no_ lines?
12:45:47 <leonid[sunp]> i see
12:46:38 <leonid[sunp]> forget the part where i said 'nevermind'
12:46:48 <oerjan> forget what?
12:46:59 <leonid[sunp]> forget this line [07:41:15] <leonid[sunp]> actually nevermind. an empty code will cause an error
12:47:12 <oerjan> oh, thanks for reminding me.
12:47:38 <oerjan> i'm not sure how you'd organize a quine in this.
12:49:32 <oerjan> for the main reason that i'm not sure how do structured data of comparable size to the program itself.
12:50:22 <oerjan> *to do
13:04:48 -!- hagb4rd has quit (Read error: Connection reset by peer).
13:05:42 -!- hagb4rd has joined.
13:12:16 -!- Frooxius has quit (Ping timeout: 252 seconds).
13:14:49 <Ngevd> I'm worried.
13:14:56 <Ngevd> My dog just threw me a ball
13:16:53 -!- Frooxius has joined.
13:17:36 <oerjan> well did you fetch properly?
13:21:45 <oklopol> i saw a cat throw a ball at another cat's face yesterday
13:22:07 <olsner> Ngevd: you're the dog now man
13:22:47 -!- oerjan has quit (Quit: Good boy!).
13:33:25 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:34:57 -!- Ngevd has quit (Ping timeout: 245 seconds).
13:37:44 -!- Ngevd has joined.
13:37:52 -!- Frooxius has quit (Ping timeout: 252 seconds).
13:38:12 -!- Ngevd has quit (Client Quit).
14:02:46 -!- sebbu has joined.
14:02:47 -!- sebbu has quit (Changing host).
14:02:47 -!- sebbu has joined.
14:14:20 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.88 [Firefox 9.0.1/20111220165912]).
14:33:24 -!- sebbu has quit (Read error: Connection reset by peer).
14:33:49 -!- sebbu has joined.
14:33:49 -!- sebbu has quit (Changing host).
14:33:49 -!- sebbu has joined.
14:48:23 -!- MSleep has changed nick to MDude.
14:58:20 -!- Ngevd has joined.
14:58:25 <Ngevd> Hello
15:13:30 <kmc> hi Ngevd
15:15:23 <Ngevd> We're in the future
15:16:21 <fizzie> How did you get there?
15:17:03 <Ngevd> By waiting
15:17:13 <Ngevd> But now we're in the past...
15:17:15 <fizzie> Sounds complicated.
15:28:07 -!- Frooxius has joined.
15:39:51 -!- Ngevd has quit (Quit: Goodbye).
15:44:39 -!- primo has joined.
15:47:12 -!- azaq23 has joined.
15:47:21 -!- azaq23 has quit (Max SendQ exceeded).
15:48:02 -!- azaq23 has joined.
16:13:06 -!- MDude has quit (Ping timeout: 255 seconds).
16:34:18 <Phantom_Hoover> @tell elliott Oh god why are rabbits so tasty im crisis
16:34:18 <lambdabot> Consider it noted.
16:48:18 <Sgeo> Phantom_Hoover, what makes you think elliott is coming back?
16:48:27 <Sgeo> Oh, I guess he can receive the message in #haksell
16:48:29 <Sgeo> #haskell
16:49:08 <fizzie> #haxhell.
16:52:29 -!- primo has quit (Ping timeout: 240 seconds).
16:54:25 -!- Phantom_Hoover has quit (Remote host closed the connection).
17:18:39 -!- ais523 has joined.
17:40:10 <fizzie> Just a heads-up, but the robotic uprising has started: http://users.ics.tkk.fi/htkallas/roombastruction.jpg
17:40:51 <fizzie> First they cut the cellphone chargers; next, our necks.
17:41:17 <fizzie> (Even the microUSB connector has been sliced, not just the cable.)
17:54:32 -!- Ngevd has joined.
17:55:04 <Ngevd> Hello
17:58:11 <Ngevd> fwehfiuwehfui
17:58:14 <Ngevd> fungot
17:58:14 <fungot> Ngevd: i could point you in the us a jelly donut. i am sure it can
17:58:21 <Ngevd> ^style
17:58:21 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
17:58:31 <Ngevd> ^style ss
17:58:31 <fungot> Selected style: ss (Shakespeare's writings)
17:58:41 <Ngevd> fungot, fwehfiuwehfui
17:58:41 <fungot> Ngevd: pro. as manie as you please.
17:58:52 <Ngevd> What a dude.
17:59:48 <fizzie> fungot: Are you in league with the Roombalords?
17:59:49 <fungot> fizzie: widdow. it quakes me too, now i understand ye very well: could he say lesse
18:00:17 <fizzie> I'm not sure if that's a yes or a no.
18:00:46 <Ngevd> Truly, fungot is a master of trickery.
18:00:46 <fungot> Ngevd: gon. let your study be to content your lord, that fault is none of my lords meat? then they could smile and fawn upon his debts, and take leaue. i am
18:01:01 <Ngevd> fizzie, how hard is it to add a style?
18:01:13 <fizzie> Ngevd: It's not entirely automated, but not very hard.
18:01:49 <fizzie> You basically need a datafile of what you want it to say in "one sentence per line" plaintext format.
18:03:27 <fizzie> Then it's just a matter of some ./preprocess.pl sed -e 's#.*#<s> & </s>#' varikn-1.0.2/varigram_kn -o .. -D .. -E .. -C -3 -n .. .. -a .. ./arpa2fungot.pl and there it is.
18:03:28 <fungot> fizzie: first lord. go, comfort your bed, with hey the sweet birds throte: come hither
18:03:52 <fizzie> With suitable ..s.
18:06:10 <Ngevd> I am writing a program and have no way to check it for errors
18:06:27 <fizzie> So you thought a new fungot style might help? Makes sense.
18:06:27 <fungot> fizzie: she fals the sword. send succours ( lords) to let you enter his vnpeopled house. enter. mes. so like you, sir. nicholas and frailty, as men you are in hast: and speed must answer it
18:06:37 <Ngevd> Take my mind of things
18:06:46 <Ngevd> With a bit of automated Oscar Wilde
18:09:00 <fizzie> I've got 14322 sentences of that stuff at the moment, it seems.
18:09:20 <fizzie> I suppose it would be possible to stylify that. It's just a bit of a bother.
18:14:16 -!- cheater has quit (Ping timeout: 244 seconds).
18:19:55 -!- MDude has joined.
18:23:05 <Sgeo> Is fungot's source available? I want to try running fungot in another channel.
18:23:06 <fungot> Sgeo: fra. you louing men of angiers open wide your gates and let young arthur, duke of clarence daughter, did he tempt thee so? her. they give their greeting to the senators let me desire to know wherefore i sent, and your fnord, your ques, and your increasing in love leonatus posthumus.'
18:29:05 <ais523> ^source
18:29:05 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
18:29:07 <ais523> Sgeo: ^
18:29:26 <fizzie> That's actually slightly misleading.
18:29:44 <Sgeo> What about all the styles? Are they available somewhere?
18:29:58 <fizzie> But you can find all the necessary bits from behind that link, you just need more than just fungot.b98.
18:29:59 <fungot> fizzie: mon. how? bribe me? is it? cel. i warrant you
18:30:02 <Ngevd> Or could we just get a multichannel fungot
18:30:03 <fungot> Ngevd: captain. pray, at whose suit is this? ham. to be hang'd that wilt not stay her tongue. the fnord
18:30:25 <Ngevd> It works for msg
18:30:32 <fizzie> The current fungot works well enough multichannel, yes.
18:30:33 <fungot> fizzie: gloster. now, sirs, be careful of your own will. is he not with the dolphins grace, his new-come champion, vertuous ioane of acre, nor any man of qualitie: i hope this reason stands for my bountie: but who is here?
18:30:39 <fizzie> And the styles aren't anywhere.
18:30:43 <fizzie> They're quite big, anyway.
18:30:59 <fizzie> My fungot directory is ~630M.
18:31:00 <Sgeo> Aww, ok
18:31:00 <fungot> fizzie: sil. what sai'st thou boy? i loue, and thou, and nature must obey necessitie, which we, on like conditions, will have it so, to great and high estate. is left to tyrannize upon my breast; and, when your owne percy, when my father dyed within's two houres
18:31:05 <Ngevd> Sgeo, tell fizzie what channels you wanted
18:31:11 <Ngevd> fizzie, work magic for Sgeo
18:31:23 <fizzie> Most of them are from public sources, anyway, so you can build them.
18:31:38 <fizzie> And the ones that aren't I probably couldn't share either.
18:31:40 <fizzie> ^style fisher
18:31:40 <fungot> Selected style: fisher (Fisher corpus of transcribed telephone conversations)
18:31:42 <fizzie> Like this one.
18:31:48 <fizzie> I think it's got some copyrights on it.
18:31:59 <Sgeo> o.O how did you get it?
18:32:11 <Sgeo> fungot, then who was phone?
18:32:11 <fungot> Sgeo: so you know getting your opinion on that how can anything that)) i've ( ( wanted to go to florida for the summer
18:32:12 <fizzie> You can buy it with $1000 from LDC, apparently.
18:32:23 <fizzie> Well, "Part 1" transcripts, anyway.
18:32:28 <fizzie> I'm not quite sure what I used.
18:32:52 <fizzie> The extra ()s are something I forgot to clean up, it's got this annotation thing going on.
18:34:08 <fizzie> Also I got it since we have that sort of stuff at work, and I thought building a model and spewing some output now and then will fall under the "negligible amounts" rules, or whatever.
18:37:04 -!- kallisti has joined.
18:37:04 -!- kallisti has quit (Client Quit).
18:37:15 -!- kallisti has joined.
18:39:10 -!- Ngevd has quit (Quit: Goodbye).
18:45:57 -!- zzo38 has joined.
18:50:58 <Sgeo> annotation thing?
18:52:04 <Sgeo> ^styles
18:52:08 <Sgeo> ^style
18:52:08 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher* fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
18:52:16 <Sgeo> ss?
18:52:20 <Sgeo> ct?
18:52:27 <Sgeo> ic?
18:52:30 <Sgeo> pa?
18:52:50 <fizzie> Shapespeare, Chrono Trigger, INTERCAL, Penny Arcade. (From memory.)
18:52:56 <Sgeo> Ah
18:52:56 <fizzie> Just try them and look at the descriptions.
18:52:58 <fizzie> ^style ss
18:52:58 <fungot> Selected style: ss (Shakespeare's writings)
18:53:00 <fizzie> ^style ct
18:53:01 <fungot> Selected style: ct (Chrono Trigger game script)
18:53:02 <fizzie> ^style ic
18:53:03 <fungot> Selected style: ic (INTERCAL manual)
18:53:04 <fizzie> ^style pa
18:53:04 <fungot> Selected style: pa (around 1200 transcribed Penny Arcade comics)
18:53:04 <Sgeo> Oh, ok
18:53:14 <Sgeo> ^style sms
18:53:14 <fungot> Selected style: sms (National University of Singapore SMS corpus, 2011-08-20)
18:53:25 <fizzie> fungot: What's bubbling, mon?
18:53:26 <fungot> fizzie: wat.? abt the imp. at one? if dun go dunno. i generally free since school holiday. are u okay with any guy...after u told to give xerox wen vil u cum? on you or in you. psalm.. ezek.. 2peter decimal. 1peter 5
18:53:36 <Sgeo> Why does the National University of Singapore have an SMS corpus?
18:53:42 <Sgeo> ^style c64
18:53:42 <fungot> Selected style: c64 (C64 programming material)
18:53:48 <Sgeo> ^style irc
18:53:48 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
18:53:49 <fizzie> Why does the National University of Singapore do anything, really?
18:54:11 <Sgeo> I mean, how does a university get access to SMS messages like that?
18:54:36 <fizzie> They asked people.
18:54:45 <fizzie> That one was more explicit than they usually are, though.
18:54:57 <zzo38> In my opinion, the many-worlds interpretation of quantum mechanics is as good as any other. So you might need different interpretation for different purposes
18:55:29 <Sgeo> purposes?
18:55:35 <fizzie> "These messages were collected from volunteers who were made aware that their contributions were going to be made publicly available."
18:56:00 <fizzie> They're still collecting it, incidentally.
18:56:25 <fizzie> "As of January 2012 , we have collected 41208 English SMS messages (exclusive the old corpus) and 29381 Chinese SMS messages ."
18:56:35 <fizzie> They also put spaces in front of commas and periods, I see.
18:56:49 <fizzie> Anyway, the 2011-08-20 copy had... maybe 20-30k messages?
19:03:42 -!- Klisz has joined.
19:04:34 -!- Ngevd has joined.
19:04:52 <Ngevd> Hello
19:05:14 <Ngevd> fizzie, I've began formatting OW's plays into fungot-format
19:05:15 <fungot> Ngevd: the vm or elsewhere. then just ( set! stream... oh well. if it does it's what littledan asked about.
19:05:34 <fizzie> Ngevd: I've got them in sort-of the right format already.
19:05:54 <Ngevd> Oh, cool
19:06:03 <fizzie> http://p.zem.fi/vz5c -- well, these ones, anyway.
19:07:12 <Ngevd> Shall I do Salome?
19:07:38 <zzo38> Add the style for Super ASCII MZX Town (probably too small data for a meaningful program, however)
19:08:07 <zzo38> So add other stuff such as the wiki article for the game
19:08:22 <zzo38> And other people comments if they complained and so on
19:08:34 <zzo38> Is probably still too small data
19:13:38 <fizzie> The smallest styles which I have in there are probably around 2000-3000 lines. The YouTube one might've been smaller than that. Anyway, I'm remarkably lazy when it comes to actually adding new styles.
19:18:50 <zzo38> I have only 813 lines (31126 bytes) so it is insufficient
19:19:22 <Ngevd> ASCII MZX Town?
19:20:21 <zzo38> It is a computer game series that I have made. Part I is already complete. Part II is not complete so you cannot play the Part II game yet.
19:22:20 -!- oerjan has joined.
19:29:34 <kallisti> walk :: (MonadLogic m) => WalkRule m -> Board -> Move -> m Move
19:29:34 <kallisti> walk rule b = msum . iterate (>>- step rule b) . step rule b
19:29:39 <kallisti> if I understand this correctly
19:29:47 <kallisti> this won't terminate
19:30:00 <kallisti> because eventually it will begin iterating an infinite list of []'s
19:30:10 <kallisti> or
19:30:12 <kallisti> mzeros actually
19:30:57 <kallisti> > iterate (>>- const []) []
19:30:58 <lambdabot> [[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]...
19:30:59 <oerjan> iterate always gives an infinite list
19:31:01 <kallisti> yes like that
19:31:07 <kallisti> > msum $ iterate (>>- const []) []
19:31:09 <kallisti> :(
19:31:11 <lambdabot> mueval-core: Time limit exceeded
19:31:16 <kallisti> > msum $ iterate (>>- const []) [1]
19:31:19 <lambdabot> mueval-core: Time limit exceeded
19:31:20 <kallisti> :(((((((((((((((((((((((
19:31:24 <kallisti> damn you halting problem.
19:31:34 <kallisti> so the question is: how many MonadPlus instances are always Eq instances?
19:31:42 <kallisti> because I need to check for mzero
19:32:10 <oerjan> very few, i should imagine
19:32:17 <kallisti> hm
19:32:36 <oerjan> since you'd usually need Eq x for Eq (m x)
19:33:09 <oerjan> :t ifte
19:33:10 <lambdabot> forall (m :: * -> *) a b. (MonadLogic m) => m a -> (a -> m b) -> m b -> m b
19:33:18 <oerjan> isn't that what this does?
19:33:24 <kallisti> oh
19:33:33 <kallisti> well......
19:33:54 <kallisti> yes
19:33:59 <oerjan> > ifte [1,2] return [3,4]
19:34:00 <lambdabot> [1,2]
19:34:17 <kallisti> I could recursively call that I think
19:34:22 <kallisti> but I always want to accumulate a list.
19:35:04 <kallisti> hm
19:35:42 <kallisti> so I'll just wrap it in a Maybe
19:35:45 <kallisti> and check for Nothing
19:35:50 <kallisti> perhaps
19:35:54 <kallisti> I'll see if there's a better way.
19:36:15 <kallisti> oh I can't wrap it in Maybe
19:37:04 <kallisti> oh... I know
19:38:20 <kallisti> walk :: (MonadLogic m) => WalkRule m -> Board -> Move -> m Move
19:38:21 <kallisti> walk rule b m = ifte (step rule b m) (walk rule b) (return m)
19:38:31 <kallisti> I think.
19:40:16 <kallisti> so now I can use StateT [] or just [] or any other MonadLogic
19:40:19 <kallisti> which is excellent.
19:43:04 <kallisti> I'm kind of surprised that Maybe isn't a MonadLogic.
19:43:10 <kallisti> maybe it doesn't satisfy some law.
19:44:24 <zzo38> There is no definition for msplit for Maybe
19:44:26 <Vorpal> hi
19:44:36 <zzo38> That is why it doesn't work
19:44:39 <kallisti> zzo38: ah indeed
19:44:55 <oerjan> :t msplit
19:44:56 <lambdabot> forall (m :: * -> *) a. (MonadLogic m) => m a -> m (Maybe (a, m a))
19:46:00 <oerjan> :t let msplit x = flip (,) Nothing <$> x in msplit
19:46:02 <lambdabot> forall (f :: * -> *) a a1. (Functor f) => f a -> f (a, Maybe a1)
19:46:16 <oerjan> um hm
19:46:55 <kallisti> I believe it has to satisfy some laws as well. :P
19:47:09 <kallisti> I wonder if at patterns work with record puns....
19:47:17 <kallisti> pun@(Con a b c)
19:48:06 <kallisti> I don't think it would
19:48:12 -!- monqy has joined.
19:48:16 <Ngevd> :t Con
19:48:17 <lambdabot> Not in scope: data constructor `Con'
19:48:32 <oerjan> msplit mzero == return Nothing msplit (return a `mplus` m) == return (Just (a, m))
19:49:32 <oerjan> msplit Nothing = Just Nothing; msplit (Just a) = Just (Just (a, ...))
19:50:01 <oerjan> i see, the problem is that m is discarded
19:52:38 <fizzie> Ooh, the progressivest: we just (very likely) voted a gay man to the second round (top two candidates) of the Finnish presidential elections. Though I really don't think the gayness had much to do with it. Still, one could have thought that would have been off-putting to some.
19:53:14 <Deewiant> You'll see just how off-putting it is when he gets around 30% of the votes in the second round.
19:53:30 <fizzie> There is that.
19:54:37 <fizzie> I'm not so sure Paavo #1 would do *that* much better, though who knows.
19:55:04 <fizzie> There are altogether too many Paavos in this election.
19:55:11 <Deewiant> Heh, true.
19:55:55 <oerjan> hm has anyone gay been directly voted to a top position anywhere in the world - the icelandic prime minister was presumably selected by parliament, not directly
19:56:17 <fizzie> (37.5% of the candidates have the given name Paavo, for the non-.fi followers.)
19:56:28 <Deewiant> But I guess the Soini + Essayah votes will probably all go to Niinistö directly, whereas with Väyrynen that'd be different
19:57:05 <oerjan> and she was supposedly the first to reach that point
20:00:43 <fizzie> oerjan: There's the prime minister of Belgium, presumably with the same caveats. And I think there was an almost-President somewhere, was #2 in an election with a not too large gap.
20:00:54 <oerjan> oh right
20:04:54 <fizzie> http://en.wikipedia.org/wiki/David_Norris_(politician) is probably what I was thinking of, except seems it was more complicated than that.
20:13:01 <Ngevd> Hmm
20:13:38 <Ngevd> A Piet program could be represented as a graph where nodes have two values: colour and size
20:13:50 <Ngevd> It would be directed and non-simple
20:13:56 <Ngevd> But continuous?
20:14:41 <Ngevd> Each node would have an outdegree of 8
20:15:54 <Ngevd> Blocked outs would go to itself?
20:16:47 <fizzie> Given that blocked outs just twiddle those pointer things, they might also go wherever they go.
20:16:58 -!- Phantom_Hoover has joined.
20:17:02 <Ngevd> Of course, this assumes the out-arcs are ordered
20:17:11 <fizzie> Some Piet compilers probably produce a graph representation. I think my halfway-done llpiet did.
20:17:27 -!- MDude has quit (Ping timeout: 255 seconds).
20:17:41 <fizzie> If I'm not mistaken, it could also write it out as a dot file.
20:18:55 <zzo38> I made up a list of monster age category for D&D 3.5e game; it is incomplete but is good enough to make up the age of my and my brother's character
20:20:05 <zzo38> And possibly even a few non-player characters we might find, if necessary to figure out their age
20:20:26 -!- oerjan has quit (Quit: Good night).
20:20:44 -!- MDude has joined.
20:20:56 -!- TeruFSX has quit (Disconnected by services).
20:22:12 -!- TeruFSX_ has joined.
20:22:56 -!- oklopol has quit (Ping timeout: 244 seconds).
20:29:52 <kallisti> walk rule b m = ifte (step rule b m) (walk rule b) (return m)
20:29:56 <kallisti> I don't think this is what I want actually
20:30:56 <kallisti> :t reflect
20:30:57 <lambdabot> forall a (m :: * -> *). (MonadLogic m) => Maybe (a, m a) -> m a
20:31:13 <kallisti> I think I need to use this to "accumulate" a "list"
20:31:31 <Sgeo> :t ifte
20:31:32 <lambdabot> forall (m :: * -> *) a b. (MonadLogic m) => m a -> (a -> m b) -> m b -> m b
20:31:34 <kallisti> > reflect Nothing :: [Int[
20:31:35 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
20:31:36 <kallisti> > reflect Nothing :: [Int]
20:31:36 <lambdabot> []
20:31:44 <kallisti> yeah
20:32:06 <kallisti> not sure why it's called reflect though
20:32:25 -!- Taneb has joined.
20:32:31 <Sgeo> What is reflect? Something with LogicT?
20:33:04 <kallisti> something with MonadLogic yes.
20:33:08 <kallisti> it's the inverse of msplit
20:33:16 <kallisti> > msplit [1,2,3]
20:33:16 <lambdabot> [Just (1,[2,3])]
20:33:39 <kallisti> > reflect (Just (1, [2,3]))
20:33:40 <lambdabot> [1,2,3]
20:33:43 <kallisti> well, almost inverse
20:36:08 -!- Ngevd has quit (Ping timeout: 276 seconds).
20:36:09 <kallisti> walk :: (MonadLogic m) => WalkRule m -> Board -> Move -> m Move
20:36:09 <kallisti> walk rule b m = ifte (step' m) iterateSteps (return m)
20:36:09 <kallisti> where
20:36:09 <kallisti> iterateSteps m' = reflect $ Just (oneStep, walk rule b m')
20:36:13 <kallisti> ....I think this is it.
20:36:23 <Taneb> Hang on
20:36:26 <Taneb> When did I lag out
20:36:46 <kallisti> ?
20:36:54 <Taneb> Between "I think I need to use this to "accumulate" a "list"" and "What is reflect? Something with LogicT?"
20:37:24 <kallisti> Taneb: http://codu.org/logs/log/_esoteric/s
20:37:53 <monqy> logreading in stalker mode "a good idea"
20:38:07 <kallisti> monqy: yes to figure out what happened in a disconnect it's pretty ideal.
20:38:12 <Taneb> Ah, I didn't miss much
20:41:06 -!- DCliche has joined.
20:42:30 -!- Darth_Cliche has joined.
20:43:12 <Taneb> So...
20:44:33 -!- Klisz has quit (Ping timeout: 245 seconds).
20:45:43 <Taneb> Esolang idea!
20:45:48 <Taneb> brb
20:45:49 <lambdabot> Taneb: You have 1 new message. '/msg lambdabot @messages' to read it.
20:46:09 -!- DCliche has quit (Ping timeout: 252 seconds).
20:52:06 <kallisti> walk :: (MonadLogic m) => WalkRule m -> Board -> Move -> m Move
20:52:06 <kallisti> walk rule b m = oneStep `mplus` ifte oneStep (walk rule b) mzero where oneStep = step' m
20:52:10 <kallisti> ....I know I've said this a lot
20:52:13 <Taneb> back
20:52:14 <kallisti> but I think this is the one I want.
20:52:26 <Taneb> So, esolang idea!
20:52:35 <Taneb> Continuous liquid automaton!
20:52:41 <kallisti> oh my
20:53:04 <kallisti> sounds interesting
20:53:41 <kallisti> > [1,2,3] `mplus` [4,5,6]
20:53:42 <lambdabot> [1,2,3,4,5,6]
20:53:47 <kallisti> shocking
20:53:53 <kallisti> all the list monoids do the same thing
20:55:33 <zzo38> That is really the only thing for Alternative and MonadPlus to do; Monoid could have been designed to do something different but instead it doesn't different, but concatenation is probably a useful way anyways so they don't need to change that
20:56:26 <kallisti> oh I just realized that ifte m f mzero
20:56:28 <kallisti> is just....
20:56:31 <kallisti> m >>- f
20:56:36 <kallisti> I believe
21:00:28 <monqy> > [1, 2, 3] >>- replicate 2
21:00:28 <lambdabot> [1,2,1,3,2,3]
21:00:34 <monqy> > ifte [1, 2, 3] (replicate 2) mzero
21:00:34 <lambdabot> [1,1,2,2,3,3]
21:00:46 <kallisti> oh
21:01:03 <kallisti> so.... >>- is better? :
21:01:08 <kallisti> for infiniteness
21:01:10 <kallisti> as usual.
21:01:32 <Sgeo> :t (>>-)
21:01:33 <lambdabot> forall (m :: * -> *) a b. (MonadLogic m) => m a -> (a -> m b) -> m b
21:01:53 <kallisti> > Just 2 `mplus` Nothing
21:01:54 <lambdabot> Just 2
21:02:03 <kallisti> > Just 2 `mplus` Just 3 `mplus` Nothing
21:02:04 <lambdabot> Just 2
21:02:04 <Sgeo> > Just 2 `mplus` Just 3
21:02:05 <lambdabot> Just 2
21:02:08 <kallisti> > Nothing `mplus` Just 3 `mplus` Nothing
21:02:09 <Sgeo> > Just 2 `mappend` Just 3
21:02:09 <lambdabot> Just 3
21:02:10 <lambdabot> Ambiguous type variable `t' in the constraints:
21:02:10 <lambdabot> `Data.Monoid.Monoid t'
21:02:10 <lambdabot> ...
21:02:12 <kallisti> okay same as <|>
21:02:13 <Sgeo> ...?
21:03:10 <kallisti> hm
21:03:35 <Taneb> Time to watch Megashark vs Crocosaurus
21:07:36 -!- ion has joined.
21:08:09 -!- Scriptor has joined.
21:22:57 -!- Darth_Cliche has quit (Read error: Connection reset by peer).
21:23:23 -!- Darth_Cliche has joined.
21:28:35 <kallisti> bah, using liftM instead of <$> to remove a Functor dependency feels....
21:28:37 <kallisti> wrong
21:29:03 <zzo38> kallisti: I agree. Monad should always have a Functor dependency
21:29:25 <Deewiant> Let (<#>) = liftM
21:30:19 <Taneb> Phantom_Hoover, guess what!
21:30:38 <kallisti> Taneb: http://sprunge.us/dZbj
21:30:51 <kallisti> everything in comments is currently broken, everything else at least compiles
21:31:29 <kallisti> types: http://sprunge.us/hFcT
21:31:30 <Phantom_Hoover> Taneb, OH GOD IS EVERYONE DEAD
21:31:38 <Phantom_Hoover> AM I IN HEXHAM
21:31:39 <Taneb> Phantom_Hoover, even worse!
21:31:41 <Phantom_Hoover> IS HEXHAM EDINBURGH
21:31:55 <Taneb> Your Pixelquest suggestion will be in the next update
21:31:55 <Taneb> !
21:32:06 <Phantom_Hoover> nooooooooooooo
21:33:43 <Taneb> Goodnight
21:33:45 -!- Taneb has quit (Quit: Goodbye).
21:34:03 <kallisti> Taneb: what's awesome about MonadLogic is that it has an instance for both lists and (MonadLogic m) StateT s m
21:34:13 <kallisti> so... I can write walk rules that keep track of state.
21:34:48 <kallisti> as well as walkrules that require no state but will still work if state is used.
21:36:03 <kallisti> walkWith forwardStep (followPortals `orRule` stopAtPiece)
21:36:10 -!- Darth_Cliche has changed nick to Klisz.
21:36:11 <kallisti> walk = walkWith forwardStep
21:36:44 <kallisti> what's good about all of this
21:36:52 <kallisti> is that changing the rules in the future /should/ be easier.
21:38:07 <kallisti> > [1,2,3] <*> []
21:38:08 <lambdabot> []
21:38:17 <kallisti> hm
21:38:32 <kallisti> > [1,2,3] <*> [1]
21:38:33 <lambdabot> [1,2,3]
21:38:35 <kallisti> ah
21:39:12 <kallisti> @src (<*>)
21:39:12 <lambdabot> Source not found. Sorry.
21:39:32 <Deewiant> @src [] (<*>)
21:39:33 <lambdabot> (<*>) = ap
21:39:42 <kallisti> right right
21:39:52 <kallisti> :t ap
21:39:53 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m (a -> b) -> m a -> m b
21:40:12 <kallisti> except...
21:40:13 <kallisti> oh
21:40:16 <kallisti> caleskell
21:40:30 <kallisti> > [1,2,3] >> []
21:40:30 <lambdabot> []
21:40:32 <kallisti> > [1,2,3] >> [1]
21:40:33 <lambdabot> [1,1,1]
21:40:42 <kallisti> hm no not quite
21:40:54 <kallisti> yes that's what I want actually.
21:42:45 <kallisti> > [1] >> [1,2,3]
21:42:45 <lambdabot> [1,2,3]
21:42:47 <kallisti> yes
21:48:09 <kallisti> >> is like product, `mplus` is like sum. :>
21:51:44 -!- Patashu has joined.
21:53:05 -!- Vorpal has quit (Ping timeout: 260 seconds).
21:57:02 <zzo38> kallisti: Yes it is the length of the list will be the product and sum!
21:58:48 <kallisti> zzo38: you can also use it to do and/or behavior
21:58:51 <kallisti> which is what I'm currently doing
21:59:08 <kallisti> though neither are commutative.
22:00:46 <zzo38> Astrology normally splits the ecliptic into twelve sections. For some purposes you might want an eight-section ecliptic instead. I think in some places they have some holidays on the 45 degrees and so on
22:05:40 <zzo38> How do you use it to do and/or behavior?
22:06:14 <kallisti> well list concatenation is essentially an or of two multi-valued logical assertions
22:07:37 <kallisti> and >>, though not really quite the same as and, will produce mzero when either of its terms does so.
22:09:59 <zzo38> Yes, it is the case for list monad. Not all monads follow the right zero law, however. But left zero law is implied by the type signatures and monad laws
22:10:01 -!- zzo38 has quit (Remote host closed the connection).
22:13:19 -!- oklopol has joined.
22:14:28 -!- Klisz has quit (Read error: Connection reset by peer).
22:14:56 -!- Klisz has joined.
22:18:47 <kallisti> hm
22:18:49 <kallisti> so
22:19:07 <kallisti> if I have a point+direction pair
22:19:45 <kallisti> what's the best way to compute a list of the chessboard squares that are a chebyshev distance of N away?
22:23:23 <kallisti> oh wait nevermind this should be pretty easy.
22:27:58 -!- Klisz has quit (Read error: Connection reset by peer).
22:28:26 -!- Klisz has joined.
22:30:13 -!- aloril has quit (Ping timeout: 255 seconds).
22:30:50 -!- aloril has joined.
22:32:15 <kallisti> :t Logic
22:32:15 <lambdabot> Not in scope: data constructor `Logic'
22:32:47 <kallisti> uh how do you mean Logics
22:32:50 <kallisti> *make
22:33:05 <kallisti> I guess with return.....
22:33:07 <kallisti> .
22:33:16 -!- augur has quit (Remote host closed the connection).
22:33:30 <kallisti> :t observeMany
22:33:30 <lambdabot> forall a. Int -> Logic a -> [a]
22:33:45 <kallisti> > observeMany $ msum . map return [1,2,3,4,5]
22:33:46 <lambdabot> Couldn't match expected type `GHC.Types.Int'
22:33:46 <lambdabot> against inferred type ...
22:33:53 <kallisti> > observeMany . msum . map return $ [1,2,3,4,5]
22:33:53 <lambdabot> Couldn't match expected type `GHC.Types.Int'
22:33:53 <lambdabot> against inferred type ...
22:33:57 <kallisti> > observeAll . msum . map return $ [1,2,3,4,5]
22:33:59 <lambdabot> [1,2,3,4,5]
22:34:36 <kallisti> I'm not entirely sure I understand the purpose of LogicT as it appears to just use lists...
22:34:57 -!- augur has joined.
22:35:09 <Sgeo> kallisti, multiple infinite lists don't play nicely
22:35:19 <kallisti> .. I'm aware
22:35:20 <kallisti> but
22:35:25 <kallisti> MonadLogic has a list instance.
22:35:26 <kallisti> so........
22:36:35 <kallisti> > runLogic (msum . map return $ [1,2,3,4,5]) (,) True
22:36:36 <lambdabot> Occurs check: cannot construct the infinite type: r = (a, r)
22:36:50 <kallisti> > runLogic (msum . map return $ [1,2,3,4,5]) (\a r -> r) True
22:36:51 <lambdabot> True
22:36:54 <kallisti> > runLogic (msum . map return $ [1,2,3,4,5]) (\a r -> r) False
22:36:55 <lambdabot> False
22:37:36 <kallisti> > runLogic (msum . map return $ [1,2,3,4,5]) (\a r -> a == 0) False
22:37:38 <lambdabot> False
22:39:25 <kallisti> maybe it's more efficient.
22:43:52 <kallisti> or.... perhaps it's just an abstraction.
22:46:03 -!- Phantom_Hoover has quit (Quit: Leaving).
22:50:33 <kallisti> > runLogic (msum . map return $ [1,2,3,4,5]) (\a r -> a) []
22:50:34 <lambdabot> No instance for (GHC.Num.Num [a])
22:50:34 <lambdabot> arising from a use of `e_112345' at <i...
22:50:39 <kallisti> > runLogic (msum . map return $ [1,2,3,4,5]) (\a r -> a) 0
22:50:40 <lambdabot> 1
22:51:28 <kallisti> > runLogic (msum . map return $ [1,2,3,4,5]) (\a r -> a:r) 0
22:51:29 <lambdabot> No instance for (GHC.Num.Num [a])
22:51:29 <lambdabot> arising from a use of `e_1123450' at <...
22:51:35 <kallisti> > runLogic (msum . map return $ [1,2,3,4,5]) (\a r -> a:r) []
22:51:36 <lambdabot> [1,2,3,4,5]
22:53:14 -!- DCliche has joined.
22:56:38 -!- Klisz has quit (Ping timeout: 245 seconds).
23:42:57 -!- Nisstyre has quit (Ping timeout: 240 seconds).
23:45:16 -!- Nisstyre has joined.
23:45:56 <kallisti> linearWalker :: (MonadState (S.Set Move) m, MonadPlus m) => WalkRule m
23:45:56 <kallisti> linearWalker = stopAtPiece `orRule` followPortal `andRule` unlessVisited
23:46:01 <kallisti> so good.
2012-01-23
00:13:14 -!- ais523 has quit (Remote host closed the connection).
00:21:45 -!- zzo38 has joined.
00:31:35 -!- cheater has joined.
00:41:50 -!- DCliche has quit (Quit: SLEEP, GLORIOUS SLEEP).
01:19:26 <Sgeo> @tell elliott update
01:19:26 <lambdabot> Consider it noted.
01:19:32 <Sgeo> @tell kallisti update
01:19:32 <lambdabot> Consider it noted.
01:32:34 <kallisti> @tell Sgeo thanks
01:32:34 <lambdabot> Consider it noted.
01:32:50 <zzo38> Finally, I figured out, and wrote down, my and my brother's character's age.
01:33:27 <zzo38> They said, you are enslaved a while and didn't keep track; but I could use the Object Reading spell to figure out the age of anyone if I have an object they own.
01:33:40 <zzo38> But even then, we couldn't do it until we know the age categories for the creatures, which I have done.
01:34:23 <zzo38> The dungeons master told me to calculate 60% of middle age, so I did that.
02:08:10 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
02:20:44 <kallisti> > replicateM 3 (Just 2)
02:20:44 <lambdabot> Just [2,2,2]
02:21:07 <kallisti> :t replicateM
02:21:08 <lambdabot> forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a]
02:21:31 <kallisti> @hoogle Int -> (a -> m a) -> m [a]
02:21:31 <lambdabot> Test.QuickCheck.Arbitrary shrinkList :: (a -> [a]) -> [a] -> [[a]]
02:21:31 <lambdabot> Control.Monad forM :: Monad m => [a] -> (a -> m b) -> m [b]
02:21:31 <lambdabot> Prelude mapM :: Monad m => (a -> m b) -> [a] -> m [b]
02:23:22 <kallisti> > iterate (>>= (+1)) Just 2
02:23:23 <lambdabot> Occurs check: cannot construct the infinite type: b = m b
02:23:24 <kallisti> > iterate (>>= (+1)) (Just 2)
02:23:25 <lambdabot> Occurs check: cannot construct the infinite type: b = m b
02:23:35 <kallisti> > iterate (>>= (return.(+1))) (Just 2)
02:23:37 <lambdabot> [Just 2,Just 3,Just 4,Just 5,Just 6,Just 7,Just 8,Just 9,Just 10,Just 11,Ju...
02:35:41 -!- Klisz has joined.
02:43:07 -!- itidus21 has quit (Quit: Leaving).
02:45:24 <kallisti> :t on
02:45:25 <lambdabot> forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c
03:13:25 -!- Scriptor has quit (Ping timeout: 248 seconds).
03:13:40 -!- Scriptor has joined.
03:16:41 <zzo38> Should there be a command-line option for FerNANDo to change the PRNG bit to always 1?
03:17:26 <zzo38> (As well as another option to make it always 0)
03:19:30 <kallisti> @hoogle uncurry
03:19:30 <lambdabot> Prelude uncurry :: (a -> b -> c) -> ((a, b) -> c)
03:19:30 <lambdabot> Data.Tuple uncurry :: (a -> b -> c) -> ((a, b) -> c)
03:26:51 -!- kallisti has quit (Quit: leaving).
03:53:16 -!- Klisz has quit (Ping timeout: 252 seconds).
04:31:19 -!- Klisz has joined.
04:35:46 -!- Jafet has quit (Quit: Leaving.).
04:39:29 -!- kallisti has joined.
04:39:30 -!- kallisti has quit (Changing host).
04:39:30 -!- kallisti has joined.
05:07:41 -!- azaq23 has quit (Quit: Leaving.).
05:08:02 <zzo38> Creatures with larva you need to keep the components separately, but you can still add them to make the total, and age categories can still work
05:33:13 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
05:52:04 <kallisti> I hope LogicT is more efficient on mplus than list is.
05:52:11 <kallisti> because I do a lot of that.
05:52:55 <kallisti> I think by deferring construction of the list it reduces the need for multiple concatenations.
05:53:01 <kallisti> if I understand it correctly.
06:00:17 -!- Klisz has joined.
06:13:09 -!- zzo38 has quit (Remote host closed the connection).
06:22:35 <kallisti> > 2 + 2 `mod` 5
06:22:36 <lambdabot> 4
06:22:49 <kallisti> > 4 + 2 `mod` 5
06:22:50 <lambdabot> 6
06:22:59 <kallisti> > (4 + 2) `mod` 5
06:23:00 <lambdabot> 1
06:38:19 <kallisti> :t arr
06:38:20 <lambdabot> forall b c (a :: * -> * -> *). (Arrow a) => (b -> c) -> a b c
06:38:31 <kallisti> > arr (+1) (1,2)
06:38:32 <lambdabot> (2,3)
06:38:40 <kallisti> > arr (+1) (9000,9000)
06:38:41 <lambdabot> (9001,9001)
06:42:31 <kallisti> > arr id (9000,9000)
06:42:32 <lambdabot> (9000,9000)
06:53:37 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
06:58:56 <Sgeo> Substitute (->) for a, (b -> c) -> ((->) b c) = (b -> c) -> (b -> c) = ($)
06:59:16 <Sgeo> (I was thinking id, but id and ($) are the same anyway except $ is type-restricted)
06:59:42 <Sgeo> > (+1) `id` 5
06:59:43 <lambdabot> 6
07:04:00 <kallisti> ever get that feeling
07:04:04 <kallisti> that what you're describing
07:04:07 <kallisti> is a monad.
07:04:11 <kallisti> when programming in Haskell? :P
07:05:12 -!- itidus21 has joined.
07:05:37 <Sgeo> Why?
07:05:47 <kallisti> because I am right now.
07:09:04 <kallisti> I'm using combinators on functions in order to describe the set of rules a walk across the chess board must follow.
07:09:18 <kallisti> I think it could probably be generalized into something else.
07:14:28 <kallisti> :t join (***)
07:14:29 <lambdabot> forall (a :: * -> * -> *) b c. (Arrow a) => a b c -> a (b, b) (c, c)
07:15:01 <kallisti> @hoogle (Arrow a) => a b c -> a (b, b) (c, c)
07:15:01 <lambdabot> Control.Arrow (***) :: Arrow a => a b c -> a b' c' -> a (b, b') (c, c')
07:15:01 <lambdabot> Control.Arrow second :: Arrow a => a b c -> a (d, b) (d, c)
07:15:01 <lambdabot> Control.Arrow first :: Arrow a => a b c -> a (b, d) (c, d)
07:23:14 -!- oerjan has joined.
07:23:31 <kallisti> :t (>>)
07:23:32 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m a -> m b -> m b
07:33:47 -!- Phantom_Hoover has joined.
07:35:50 -!- oerjan has set topic: Now open for Chinese to buy | Get your esoil and esoline here! | Optators' gold-embossed biography "Our Trip to Power" now available in fine bookstores | Ministry of Truth says "exiled editor" never existed in the first place, "grieving family planted by Americans" | Spotted marsh elliott still unspotted | Gregorian chants outlawed, "American" | http://codu.org/logs/_esoteric/.
07:37:23 <kallisti> diagonalCapture = runWalk . captureDirs . getDiags . startDirFor
07:37:23 <kallisti> where
07:37:23 <kallisti> captureDirs =
07:37:23 <kallisti> uncurry mplus . join (***) (stepWith oneStep captureRule board)
07:37:23 <kallisti> captureRule = ifBlocked `orRule` (followPortal `thenRule` ifBlocked)
07:37:25 <kallisti> getDiags = join (***) (Move c) <<< rotateCW &&& rotateCC
07:37:30 <kallisti> beautiful semi-pointless code.
07:37:57 <Phantom_Hoover> Semi?
07:38:08 <kallisti> I guess naming functions in the chain doesn't count actually.
07:39:02 <kallisti> also I use free variables that aren't functions. I'm sure some contrived purist would say that it's not actually pointfree.
07:39:12 <kallisti> if such a person even exists.
07:39:48 <Sgeo> :t join (***)
07:39:49 <lambdabot> forall (a :: * -> * -> *) b c. (Arrow a) => a b c -> a (b, b) (c, c)
07:40:03 <kallisti> Sgeo: READ AS: apply this shit to both elements in a 2-tuple kthx
07:40:09 <kallisti> at least, that's how I'm using it
07:40:40 <kallisti> because for reason I'd rather do this crap instead of just writing names to my function arguments.
07:40:43 <kallisti> +some
07:42:14 <kallisti> (the above code, btw, defines the moveset for pawns when a capture is available)
07:44:12 <kallisti> > (+1) `mplus` (+2) $ 3
07:44:13 <lambdabot> No instance for (Control.Monad.MonadPlus ((->) a))
07:44:13 <lambdabot> arising from a use of...
07:44:38 <kallisti> > const Nothing `mplus` Just $ 3
07:44:39 <lambdabot> No instance for (Control.Monad.MonadPlus ((->) a))
07:44:39 <lambdabot> arising from a use of...
07:45:47 -!- monqy has quit (Quit: hello).
07:47:05 <Phantom_Hoover> <kallisti> also I use free variables that aren't functions. I'm sure some contrived purist would say that it's not actually pointfree.
07:47:15 <Phantom_Hoover> You have no idea what pointfree means, do you.
07:47:51 <kallisti> does a vague idea that seems pretty accurate count? I know what it means in the context of Haskell, but I don't understand where the name comes from.
07:48:20 <oerjan> from topology, iirc
07:48:25 <kallisti> yes I know that much.
07:49:27 <oerjan> i think the FP (?) language may have been involved, too
07:49:47 <oerjan> basically you are free to name functions, but not their arguments
07:50:43 <oerjan> formal arguments, that is. you're of course allowed to pass something named as an argument.
07:50:59 <kallisti> yes which is why I say a free variable that's not a function is, in some sense, not pointfree. Perhaps the code I quoted is pointfree but it's written using the arguments of the function that it's defined within.
07:51:36 <fizzie> @. unpl pl \f g (a,b) -> (f a, g b)
07:51:36 <lambdabot> (\ aa f -> (\ p w -> ((,)) (aa (fst p)) (f w)) >>= \ af -> snd >>= \ ae -> return (af ae))
07:51:51 <Phantom_Hoover> :')
07:52:26 <kallisti> > (f *** g) $ (x,y)
07:52:26 <Phantom_Hoover> @. unpl pl \ f g x -> f (g x)
07:52:26 <lambdabot> (\ a b c -> a (b c))
07:52:27 <lambdabot> Ambiguous type variable `c' in the constraints:
07:52:27 <lambdabot> `GHC.Show.Show c'
07:52:27 <lambdabot> a...
07:52:42 <kallisti> > (f *** g) $ (x,y) :: (Expr, Expr)
07:52:43 <lambdabot> (f x,g y)
07:52:57 <kallisti> I think pl missed something...
07:53:33 -!- Scriptor has quit (Ping timeout: 252 seconds).
07:54:05 <kallisti> oh that's unpl...
07:54:39 <fizzie> In the ideal case, @. unpl pl won't do "anything".
07:54:50 <fizzie> The plain pl isn't exactly readable either.
07:54:52 <fizzie> @pl \f g (a,b) -> (f a, g b)
07:54:53 <lambdabot> flip flip snd . (ap .) . flip flip fst . ((.) .) . flip . (((.) . (,)) .)
08:07:10 <oerjan> as always, @pl knows nothing about arrow functions.
08:09:45 <kallisti> can you add more functions to pl's repertoire?
08:10:01 <oerjan> @list pl
08:10:02 <lambdabot> pl provides: pointless pl-resume pl
08:10:20 <oerjan> seems not
08:11:22 <oerjan> :t uncurry $ flip . ((.) . (,) .)
08:11:23 <lambdabot> The operator `.' [infixr 9] of a section
08:11:23 <lambdabot> must have lower precedence than that of the operand,
08:11:23 <lambdabot> namely `.' [infixr 9]
08:11:33 <oerjan> :t uncurry $ flip . (((.) . (,)) .)
08:11:34 <lambdabot> forall (f :: * -> *) a (f1 :: * -> *) a1. (Functor f, Functor f1) => (f a1, f1 a) -> f (f1 (a1, a))
08:11:44 <oerjan> CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALE
08:12:02 <oerjan> :t let (.) = (Prelude..) in uncurry $ flip . (((.) . (,)) .)
08:12:03 <lambdabot> forall b a b1 a1. (a1 -> b1, a -> b) -> a1 -> a -> (b1, b)
08:12:16 <oerjan> oops
08:12:20 <oerjan> :t let (.) = (Prelude..) in curry $ flip . (((.) . (,)) .)
08:12:21 <lambdabot> Couldn't match expected type `(a, b)'
08:12:21 <lambdabot> against inferred type `a1 -> b1'
08:12:21 <lambdabot> In the second argument of `(.)', namely `(((.) . (,)) .)'
08:12:33 <oerjan> er
08:12:52 <kallisti> :t Prelude.flip
08:12:53 <lambdabot> forall a b c. (a -> b -> c) -> b -> a -> c
08:12:56 <kallisti> hth
08:13:17 <oerjan> wat
08:13:43 <oerjan> oh wait duh
08:17:38 <oerjan> :t let (.) = (Prelude..) in flip . (uncurry .) . (.) . (. (,)) . flip (.)
08:17:39 <lambdabot> forall a b b1 a1. (a1 -> b1) -> (a, a1) -> (a -> b) -> (b, b1)
08:18:06 <oerjan> darn
08:22:17 <oerjan> ah
08:22:23 <oerjan> :t let (.) = (Prelude..) in flip $ (uncurry .) . (.) . (. (,)) . flip (.)
08:22:24 <lambdabot> forall a b b1 a1. (a -> b) -> (a1 -> b1) -> (a, a1) -> (b, b1)
08:22:49 <oerjan> SO MUCH SIMPLER
08:53:01 -!- ais523 has joined.
08:56:28 -!- pikhq_ has joined.
08:56:56 -!- pikhq has quit (Ping timeout: 252 seconds).
09:24:33 -!- Jafet has joined.
09:49:05 <fizzie> oerjan: Sure it knows about timed hi... I mean, arrows:
09:49:06 <fizzie> @pl \(a,b) -> (f a, g b)
09:49:06 <lambdabot> f *** g
09:49:49 -!- Phantom_Hoover has quit (Remote host closed the connection).
09:50:22 <oerjan> darn
09:50:23 <Deewiant> fizzie: I'm pretty sure that's new.
09:50:52 <fizzie> That's very possible.
09:50:58 * oerjan fails at pun recognition
09:51:34 <fizzie> http://tvtropes.org/pmwiki/pmwiki.php/Main/HeKnowsAboutTimedHits if you meant that one, though it's not exactly a pun.
09:51:38 <oerjan> @pl \(a,b) -> (f b, g a)
09:51:39 <lambdabot> uncurry (flip ((,) . f) . g)
09:52:10 <Deewiant> I guess it's not new, it's just very special-cased. :-P
09:53:11 <oerjan> @pl \b a -> (f b, g a)
09:53:12 <lambdabot> (. g) . (,) . f
09:53:49 <fizzie> @pl \(a,b) -> (f a, b)
09:53:50 <lambdabot> first f
09:53:53 <fizzie> @pl \f (a,b) -> (f a, b)
09:53:53 <lambdabot> (`ap` snd) . (. fst) . ((,) .)
09:53:57 <fizzie> Good, good.
09:54:00 <leonid[sunp]> @_@
11:11:59 -!- oerjan has quit (Quit: leaving).
11:47:35 -!- FireFly has quit (Excess Flood).
11:48:48 -!- aloril has quit (Ping timeout: 244 seconds).
12:01:27 -!- aloril has joined.
12:09:08 -!- ais523 has quit (Ping timeout: 245 seconds).
12:14:26 -!- ais523 has joined.
12:20:55 -!- ais523 has quit (Ping timeout: 255 seconds).
12:21:52 -!- elliott__ has quit (Ping timeout: 244 seconds).
12:23:37 -!- ais523 has joined.
12:58:58 -!- _Slereah has quit (Ping timeout: 240 seconds).
13:03:21 -!- _Slereah has joined.
13:05:23 -!- elliott__ has quit (Ping timeout: 240 seconds).
13:07:18 -!- hagb4rd has quit (Ping timeout: 240 seconds).
13:52:47 -!- augur has quit (Remote host closed the connection).
14:09:20 -!- kallisti has quit (Ping timeout: 252 seconds).
14:25:18 -!- ais523 has quit (Read error: Operation timed out).
14:25:28 -!- augur has joined.
14:27:27 -!- elliott__ has quit (Read error: Operation timed out).
14:30:36 -!- FireFly has quit (Excess Flood).
14:51:01 -!- ais523 has joined.
14:56:08 -!- ais523 has changed nick to ais523|away.
15:30:06 -!- FireFly has quit (Excess Flood).
15:37:02 -!- Scriptor has joined.
16:03:39 -!- Phantom_Hoover has joined.
16:04:29 -!- Phantom_Hoover has set topic: Now open for Chinese to buy | Get your esoil and esoline here! | Optators' gold-embossed biography "Our Trip to Power" now available in fine bookstores | Ministry of Truth says "exiled editor" never existed in the first place, "grieving family planted by Americans" | Spotted marsh elliott spotted in other marsh | Gregorian chants outlawed, "American" | http://codu.org/logs/_esoteric/.
16:12:46 <Phantom_Hoover> hel
16:12:47 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
16:12:47 <Phantom_Hoover> o
16:28:17 -!- itidus20 has joined.
16:28:48 -!- Ngevd has joined.
16:28:54 <Ngevd> Hekki
16:29:11 -!- Scriptor has left ("ERC Version 5.2 (IRC client for Emacs)").
16:31:23 -!- itidus21 has quit (Ping timeout: 240 seconds).
16:33:19 -!- Taneb has joined.
16:33:38 -!- Ngevd has quit (Ping timeout: 252 seconds).
16:33:47 <Taneb> My connection is worse than I thought
16:36:04 -!- ais523|away has quit (Ping timeout: 276 seconds).
16:37:27 -!- Frooxius has quit (Quit: ChatZilla 0.9.88-rdmsoft [XULRunner 1.9.0.17/2009122204]).
16:37:43 -!- Taneb has changed nick to Ngevd.
16:37:48 -!- Frooxius has joined.
16:40:54 -!- ais523|away has joined.
16:46:32 -!- kallisti has joined.
16:46:32 -!- kallisti has quit (Changing host).
16:46:32 -!- kallisti has joined.
16:46:46 <Ngevd> Hello kallisti
16:47:50 <kallisti> hi
16:48:02 <kallisti> can you fix my horrible chebyshev calculating thingy?
16:48:40 <kallisti> I actually don't even know if it works I haven't tested any of this because I am really not even sure how to test Haskell aside from probably using one of those testy things that people use but I don't know how to use those either.
16:49:47 <Ngevd> Link?
16:50:02 <kallisti> http://sprunge.us/UgdA
16:50:07 <kallisti> search chebyshev
16:50:13 <kallisti> ugda
16:50:20 <kallisti> dialect of agda good
16:51:42 <kallisti> actually why don't I just generate an infinite list.
16:53:41 <kallisti> Ngevd: basically I just noted that you can step out N-1 times at both right angles from every cardinal point to get all the points that are N distance away
16:54:04 <kallisti> ....if that makes any sense
16:54:41 <kallisti> then you just tack the diagonals on.
16:55:26 <kallisti> I'm pretty much 99.99999999...% sure that there's a better way that doesn't involve mutability.
16:55:59 <Ngevd> Couldn't you do coord -> Int -> [coord]?
16:56:25 <kallisti> that's basically what I'm doing
16:56:26 -!- Sandelkoenig has joined.
16:56:48 <kallisti> Move is a coordinate + direction, I just kept them together because it's simple.
16:57:16 <kallisti> also it's how my step function works.
16:57:28 <kallisti> I plug this thing into my step function which wants Moves
16:57:36 <kallisti> because direction is important on that one.
16:59:54 <kallisti> Ngevd: oh, also
17:00:09 <kallisti> the way this algorithm works is it pairs the coordinate of the input to every cardinal direction
17:00:13 <kallisti> and then advances that way
17:00:17 <kallisti> so it could be like...
17:00:21 <kallisti> Move -> [m Move]
17:00:25 <kallisti> er
17:00:30 <kallisti> Coord -> [m Move]
17:00:56 <Ngevd> What's the MonadPlus for?
17:01:20 <kallisti> MonadPlus is a subclass of MonadLogic
17:01:34 <kallisti> it's the only "concatenation" I know of.
17:03:17 <kallisti> so to "concatenate" the results of all of these different steps I use msum and mplus
17:04:33 <kallisti> though maybe I actually want >>
17:04:35 <kallisti> I'm not entirely sure.
17:04:40 <Ngevd> Can pieces move to their own location?
17:04:43 <kallisti> no
17:04:51 <kallisti> well...
17:04:58 <kallisti> yes
17:05:06 <kallisti> hmmmmmmm
17:05:20 <kallisti> the directional pieces are supposed to be able to shift direction as a turn.
17:05:26 <kallisti> but this is awfully similar to a "do nothing"
17:07:09 <kallisti> no pretty sure I want mplus
17:07:14 <kallisti> >> would not concatenate lists
17:07:20 <kallisti> and I'm pretty sure LogicT is based on a list.
17:07:53 <kallisti> I think I'll go read that paper associated with LogicT so I can figure out wtf I'm doing. :P
17:09:35 <kallisti> so for all the directional pieces
17:09:39 <kallisti> I'll just add a coord :
17:09:42 <kallisti> to their movesets
17:11:00 <kallisti> I think I'm worrying too much
17:11:12 <kallisti> "oh no it's different from chess" probably doesn't indicate anything too flawed.
17:11:44 <kallisti> Ngevd: is any of this code legible?
17:11:49 <kallisti> I'm not sure why I decided to take this route honestly.
17:11:51 <Ngevd> Not really
17:11:56 <Ngevd> I'm not that great at Haskell
17:12:02 <kallisti> I guess because there's a lot of repetitive tasks to do
17:12:07 <kallisti> so I just make this generalized board walker thing
17:12:54 <kallisti> stepWith (followPortal `thenRule` unlessVisited)
17:13:19 <kallisti> says that when you make a step on the board you want to follow portals, unless you've previously visited them.
17:13:36 <kallisti> stepWith also takes an actual step function, that defines what a step is
17:13:50 <kallisti> the simplest one is forwardStep, which is just a single step forward in whatever direction the move is.
17:14:08 <kallisti> er oops
17:14:18 <kallisti> step (followPortal `thenRule` unlessVisited)
17:14:20 <kallisti> not stepWith
17:14:25 <kallisti> step = stepWith forwardStep
17:15:24 <kallisti> then walkWith is just an iteration of stepWith, that stops whenever its step function or rule function returns an mzero
17:15:24 <oklopol> so it turns out ultimate sets can be RE^RE^RE-complete :o
17:15:30 <oklopol> even from the full shift
17:15:34 <oklopol> isn't that just insane
17:15:35 <kallisti> oklopol: ultimate sets? sounds like a game.
17:15:38 <kallisti> like ultimate frisbee.
17:15:40 <oklopol> :D
17:15:48 <kallisti> also I have no clue what any of that means, sorry.
17:15:54 <Ngevd> kallisti, do you have a chessboard, some matchsticks, some string, and a webcam?
17:15:56 -!- ais523|away has changed nick to ais523.
17:16:05 <oklopol> well the arithmetic hierarcy, just like all quantifier stuff, can be though of as a two-player game
17:16:06 <kallisti> Ngevd: I actually have absolutely none of those things.
17:16:26 <Ngevd> So, you can't play portal chess for realz.
17:16:39 <kallisti> I don't see why I need matchsticks
17:16:45 <kallisti> string would be useful but not strictly necessary.
17:16:50 <Ngevd> Marking direction
17:16:56 <oklopol> the ultimate set of a CA is the set of (infinite) configurations which are limit points of subsequences of orbits, everyone knows that.
17:16:57 <kallisti> basically just need a chessboard and contact with another interested human being.
17:16:59 <Ngevd> For cannons
17:17:03 <kallisti> Ngevd: ah yes. you could use markers for those.
17:17:08 <kallisti> cannons don't have directions actually.
17:17:14 <Ngevd> Do they not?
17:17:16 <oklopol> in the product topology obtained by having the discrete topology on the alphabet
17:17:16 <kallisti> nope
17:17:24 <Ngevd> Matchsticks are not necassary, then
17:17:30 <kallisti> well the queen now has a direction
17:17:36 <Ngevd> Oh yes
17:17:37 <kallisti> and I think most queen pieces are radially symmetrical.
17:17:44 <kallisti> even some bishops are actually.
17:17:55 <kallisti> not every bishop piece used by chessboards has "the notch"
17:18:03 <Ngevd> You could swap the king and queen?
17:18:51 <kallisti> does the king indicate a direction?
17:19:02 <Ngevd> Damn
17:19:05 <kallisti> it has a cross but that's ambiguous.
17:19:11 <Ngevd> They have rotational symmetry order 2
17:19:15 <kallisti> uh, yeah that.
17:19:32 <Ngevd> We need an odd number for unambiguity
17:19:33 <kallisti> not a problem
17:19:42 <kallisti> tape, marker, or any other indicator is not hard to find.
17:19:51 <Ngevd> True
17:20:04 <Ngevd> Do you have a chessboard?
17:20:13 <kallisti> actually the main reason I made the lens directionless intially was because queens don't have a direction
17:20:35 <kallisti> but I think requiring extra physical implements is worth simplifying the game. otherwise you have to kind of awkward explain what's going on.
17:20:58 <kallisti> I think with the cannons no declaration is required.
17:21:12 <kallisti> you just take a piece from the board
17:21:22 <kallisti> and then if your friend is like "wtf" then you explain. :P
17:21:37 <kallisti> IT'S LIKE THAT COMMERCIAL FOR CONNECT FOUR
17:21:47 <kallisti> but instead of like "I got you diagonally!" "ohhhhh"
17:22:15 <kallisti> it's like "I redirected my cannon laser through this portal and then through this arrow and now your portal is dead"
17:23:58 <kallisti> also I don't think I'm going to do any kind of infinite loop teleporting piece weirdness
17:24:05 <kallisti> like where you can basically make a piece vanish for a while
17:24:22 <Ngevd> But that leaves ambiguity in the game
17:24:45 <kallisti> I'm... sure it can be explained away.
17:24:50 <kallisti> it's explained away in my implementation. :P
17:25:02 <kallisti> you just have to be fluent in Haskell to find it.
17:25:57 <Ngevd> So what happens if you have two portals are around a piece pointing to eachother and one of them moves over the piece
17:26:01 <kallisti> I might special case it later.
17:26:22 <Ngevd> So, what happens?
17:26:51 <kallisti> well...
17:27:13 <kallisti> unless I decide to re-add the infinite loop capture thing (lol needs better name) then the move isn't valid.
17:27:45 <Ngevd> Also, #esoteric-chess-variants isn't used very much
17:27:53 <kallisti> a portal can't transport a piece if the piece has nowhere to go.
17:28:12 <Ngevd> How do arrows move again?
17:28:22 <kallisti> bishoply + any cardinal step
17:28:45 <kallisti> essentially they move like bishops except they can also sidestep into the other square color.
17:28:51 <Ngevd> Okay
17:29:10 <kallisti> should I allow friendly capture?
17:29:21 <kallisti> this has a number of consequences
17:29:38 <Ngevd> Only with cannons
17:29:56 <kallisti> a portal can land on a piece, and thus transport it somewhere, capturing a piece
17:29:59 <kallisti> because it is a valid move
17:30:11 <Ngevd> Hmm
17:30:13 <Ngevd> Yes
17:30:16 <kallisti> if friendly capture weren't possible then the move would be invalid because the capturing piece is friendly to the captured piece.
17:30:31 <kallisti> and that would violate my piece transport rule as described above.
17:31:03 <kallisti> note that
17:31:07 <kallisti> not many pieces can actually capture.
17:31:10 <kallisti> currently.
17:31:12 <kallisti> ...uh, two.
17:31:13 <kallisti> to be precise.
17:31:25 <Ngevd> King, pawn, Ccannon, dcannon
17:31:29 <kallisti> oh
17:31:32 <kallisti> well yes the cannons count as well
17:31:35 <kallisti> I meant capture-by-movement
17:31:42 <Ngevd> Arrow?
17:31:45 <kallisti> not currently no.
17:32:20 <kallisti> also...
17:32:26 <kallisti> things are kind of tricky with pawns.
17:32:42 <kallisti> so like.....
17:33:13 <kallisti> if you were to transport a pawn, then in order to capture a piece on the other side the pawn needs to be facing the correct direction coming out of the portal.
17:33:30 <kallisti> diagonally forward. forward being defined by the pawns color.
17:33:51 <kallisti> :)
17:34:00 <Ngevd> Ooh, tricky
17:34:04 <kallisti> I think that's perhaps unecessarily complicated.
17:34:09 <kallisti> with one n
17:34:30 <kallisti> I mean
17:34:31 <kallisti> it's not
17:34:33 <kallisti> that complicated
17:34:49 <kallisti> but, I am bad at explaining things. So I don't know if I can make these points clear in The Rules.
17:35:37 <kallisti> as long as I like... explicitly define how a pawn works
17:35:52 <kallisti> instead of, say, just saying something like "oh yeah pawns they're like chess"
17:38:09 <kallisti> then there's less ambiguity when I later say "a portal can only move to an occupied square if transporting the piece occupying that square is a valid move"
17:38:25 <kallisti> where I then should probably note how transporting works...
17:38:35 <Ngevd> Would you like a game of portalchess?
17:38:41 <kallisti> hm?
17:38:48 <kallisti> go on.
17:38:55 <Ngevd> Hang on
17:39:15 <kallisti> I think the best way to describe transportation is that the act of transporting a unit is essentially like moving it a single step in the direction of the output portal.
17:39:28 <kallisti> it has to be a valid move.
17:39:30 <kallisti> for that piece
17:39:35 <kallisti> to move in that direction
17:39:46 -!- ais523 has quit (Remote host closed the connection).
17:40:02 <kallisti> so for example, you can only transport a pawn if the output portal is facing the correct direction
17:40:09 <kallisti> otherwise the transportation is not a valid move.
17:40:38 <kallisti> is that a good rule? it seems overly complex. I could remove that restriction
17:41:20 <Ngevd> Yes
17:41:30 <kallisti> ...yes to my question I'm assuming.
17:41:52 <Ngevd> It is a good move
17:41:58 <kallisti> also
17:42:00 <kallisti> it means
17:42:00 <Ngevd> Rule
17:42:01 <kallisti> you can
17:42:01 <kallisti> chain
17:42:04 <kallisti> portal transports
17:42:27 <kallisti> by transporting a portal that then transpots another piece. :>
17:42:29 <kallisti> oh god.
17:42:32 <kallisti> NO
17:42:35 <kallisti> MUST STOP MAKING THESE RULES
17:42:54 <kallisti> I will be unable to distinguish expected and unexpected behavior when testing my implementation.
17:43:10 <Ngevd> Well, do you want to be black or white?
17:44:41 <kallisti> uh how is this going to work.
17:44:53 <Ngevd> I have a chessboard
17:44:55 <kallisti> I'll be black because that's what color I am in my fantasies. :>
17:45:18 <kallisti> (ha ha americans find race funny)
17:45:43 <Ngevd> I have no idea how to start
17:45:59 <Ngevd> King's knight's pawn forward 2
17:46:14 <Ngevd> s/kight/arrow/
17:47:00 <kallisti> this isn't going to work I AM BLIND
17:47:17 <Ngevd> Hmm
17:48:17 <kallisti> I should probably just add some code so that I can move pieces around without doing all the rule calculations
17:48:24 <kallisti> I don't know.
17:48:32 <Ngevd> Or I could Livestream my board
17:49:39 <kallisti> b7 to b6
17:50:10 <kallisti> (queen's side knight's pawn forward 1)
17:50:36 <kallisti> uh...
17:50:37 <kallisti> wait
17:50:37 <Ngevd> I shoot your dcannon with my dcannon
17:50:41 <kallisti> wat?
17:50:47 <kallisti> oh
17:50:55 -!- Klisz has joined.
17:50:57 <kallisti> I thought you said king's pawn
17:51:08 <Ngevd> I'll give you that again
17:51:09 <kallisti> THIS ISN'T GOING TO WORK WHAT IS THIS.
17:52:44 <Ngevd> Just do your move again
17:53:05 <kallisti> f8 to e5 facing southwest
17:53:44 <Ngevd> queenside portal's pawn 1 forward
17:54:55 <Ngevd> How do lenses move?
17:54:58 <kallisti> queens
17:55:01 <kallisti> can't capture currently
17:55:53 <Ngevd> c2c3
17:55:59 <kallisti> right
17:56:14 <kallisti> c1c2 facing south
17:56:18 <kallisti> I'll let you figure out what happens.
17:56:32 <kallisti> er
17:56:32 <kallisti> hm
17:56:39 <kallisti> technically I think I just broke a rule. :P
17:56:53 <Ngevd> That was a silly rule
17:57:09 <kallisti> yes but I don't know how to explain that behavior much better.
17:57:17 <Ngevd> Just play
17:57:17 <kallisti> I guess pawns are a special case.
17:57:22 <kallisti> I did. :P
17:57:31 <Ngevd> b1 e4
17:57:36 <Ngevd> North
17:58:58 <kallisti> e5 facing south
17:59:43 <kallisti> ....it's getting hard to remember everything.
18:00:15 <Ngevd> c3 d4
18:00:33 <kallisti> huh?
18:00:55 <Ngevd> I lost track of it
18:00:58 <kallisti> that's a... pawn right.
18:01:01 <Ngevd> Yes
18:01:05 <Ngevd> That took a pawn?
18:01:18 <kallisti> oh no the pawn should be at like....
18:01:26 <kallisti> oh
18:01:28 <kallisti> yes d4 :P
18:02:10 <Ngevd> Your turn
18:02:11 <Ngevd> :)
18:02:29 <kallisti> hold on while I use my feeble monkey brain to reprocess the entire state of the game repeatedly until I have some sense of what's going on.
18:04:42 <kallisti> e5e4 facing southeast
18:05:31 <kallisti> note that currently there is no overcomplicated direction reorienting
18:05:47 <kallisti> pieces maintain an absolute direction until the player changes it as part of their turn.
18:06:30 <kallisti> uh can I have like... a picture of the board? or something. :P
18:07:43 <Ngevd> C6c5 facing south
18:08:41 <Ngevd> And no
18:08:46 <kallisti> ...
18:08:55 <kallisti> fine I'll just be awesome while completely blind.
18:09:13 <kallisti> b7b6
18:11:11 <Ngevd> How do cannons move?
18:11:16 <kallisti> kingly
18:11:28 <kallisti> they're kind of a glass cannon. HA HA HA HA HA HA HA HA
18:12:35 <Ngevd> c5 facing NE
18:14:19 <Ngevd> bbl, dinner
18:15:37 <kallisti> b8b7 facing southeast also LAME
18:15:48 <kallisti> oh wait
18:15:51 <kallisti> lol
18:15:55 <kallisti> bad idea what am I even doing.
18:16:59 <kallisti> actually no that's not a bad idea.
18:17:31 -!- Ngevd has quit (Read error: Connection reset by peer).
18:17:53 -!- Ngevd has joined.
18:19:49 <kallisti> wow this game got weird very quickly.
18:25:27 <Phantom_Hoover> Ngevd, for god's sake, stop feeding him.
18:25:36 -!- Madoka-Kaname has quit (Quit: Hug~♪).
18:25:53 <Phantom_Hoover> Just pay him no attention and this will die, rather than constituting half the remaining 'discussion' in the channel.
18:28:21 <kallisti> yes then we can all be silent together.
18:28:31 * kallisti cherishes the day. :')
18:29:38 <Phantom_Hoover> I'd rather that than you speaking another word.
18:30:34 <kallisti> I have a question: why are you so aggressive towards me when I'm practically doing zero harm? I haven't prevented you from idling in the channel as you seem to want to do. The only thing I've done is speak about something when no one else is speaking.
18:30:55 <kallisti> What's the problem exactly?
18:33:27 <kallisti> if you have some kind of legitimate complaint about what I'm doing then I would like to hear it. If a substantial number of people would like me to stop talking about this, then I'll gladly move to another channel of communication. but as it currently stands you're just being a dick for no discernable reason other than the fact that you don't like me personally.
18:34:32 -!- ais523 has joined.
18:34:52 <ais523> ooh, the bishops are rebelling
18:35:07 <ais523> they don't end up relevantly involved in politics very often
18:35:12 <ais523> and besides, they can be outvoted very easily
18:35:17 <ais523> but it's interesting to see them make a stand
18:35:25 <kallisti> what are they rebelling about?
18:35:49 <ais523> child benefit
18:35:59 <ais523> they don't think it should be included in the government's proposed benefits cap
18:36:37 -!- ais523 has quit (Remote host closed the connection).
18:36:57 -!- ais523 has joined.
18:37:16 <ais523> also, X just restarted for no obvious reason
18:37:28 <kallisti> that's always fun.
18:37:41 <Ngevd> Back
18:37:55 <kallisti> I remember when X used to freeze completely on me for no apparent reason.
18:38:21 <kallisti> Ngevd: I doubt I can keep of track of these game much longer. I just remember that I had an awesome plan that was totally awesome.
18:38:26 <kallisti> *this
18:39:23 <Ngevd> Also, I'd like to remind everyone that #esoteric-chess-variants is a thing in potentia
18:40:05 -!- yorick has quit (Read error: Connection reset by peer).
18:40:42 -!- yorick has joined.
18:51:14 <Phantom_Hoover> Oh, kallisti talked.
18:51:50 <Phantom_Hoover> Oh, look. Nobody's talking. It's OK if I spam the channel, then.
18:52:44 <kallisti> yes feel free to write meaningful sentences
19:00:21 -!- Frooxius_ has joined.
19:01:39 -!- Frooxius has quit (Ping timeout: 240 seconds).
19:01:48 -!- Frooxius_ has changed nick to Frooxius.
19:03:42 -!- Frooxius has quit (Client Quit).
19:04:11 -!- Frooxius has joined.
19:55:44 -!- azaq23 has joined.
19:55:54 -!- azaq23 has quit (Max SendQ exceeded).
19:56:00 -!- GreaseMonkey has joined.
19:56:00 -!- GreaseMonkey has quit (Changing host).
19:56:00 -!- GreaseMonkey has joined.
19:56:19 -!- azaq23 has joined.
20:00:55 -!- oerjan has joined.
20:15:19 -!- Taneb has joined.
20:19:17 -!- Ngevd has quit (Ping timeout: 244 seconds).
20:21:51 -!- zzo38 has joined.
20:25:08 -!- Taneb has quit (Ping timeout: 248 seconds).
20:26:44 -!- Ngevd has joined.
20:55:50 <fizzie> Phew; one more "use of #esoteric logs as data for course exercise session examples" point achieved.
20:56:45 <oerjan> HEY U R VOILATING MY COPYRIGHT
20:56:54 <fizzie> HA HA HA AH
20:57:06 <oerjan> ^ha
20:57:06 <fungot> ha. ha. ha ha. ha ha ha. ha ha ha ha ha. ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ...too much output!
20:57:48 <fizzie> (This is the first exercise session for the course this year, and the lecturer had promised them there's not going to be any actual assignments, so I prepared a demonstration of sorts.)
20:58:14 <fizzie> Also I wanted something that's tangentially related to the real world, so they can "relate", but couldn't invent anything.
20:58:19 <fizzie> IRC is obvsly the next best thing.
20:58:43 <fizzie> Anyway, I've "anonymized" this by replacing names with numbers, no worries.
20:59:56 <fizzie> http://users.ics.tkk.fi/htkallas/esodemo.pdf if you want to try your luck at deanonymization based on the one (1) example comment I've included of each person by means of "shuf -n 1".
21:00:01 <kallisti> we're all just numbers anyway, man
21:00:05 <fizzie> Uh... use of grep will be considered cheating, though.
21:00:38 <kallisti> I said none of those things.
21:01:00 <fizzie> That is the true; I took the ten most linesome nicks over all my own logs.
21:01:10 <kallisti> ....linesome?
21:01:18 <fizzie> Said-the-most-lines.
21:01:21 <kallisti> oh
21:01:32 <kallisti> I wonder where I'm at on that ranking now.
21:01:52 <fizzie> Three turned out to be one person, and two also another, but that's all right, that just gets nicely illustramated in the PATTERNS of the results slide.
21:02:01 <oklopol> am i one of those?
21:02:04 <fizzie> Also disregard the very last slide, it has nothing to do with anything.
21:02:09 <fizzie> oklopol: You're one of the numbers, yes.
21:02:14 <kallisti> several of the quotes sound elliott-esque
21:02:16 <oklopol> i mean in example comments
21:02:25 <fizzie> oklopol: You're the 1208.
21:02:36 <oklopol> that's what i figured, but wasn't sure
21:02:36 <fizzie> "so, the codomain is the domain of the cofunction
21:02:42 <fizzie> That's what you have said, apparently.
21:02:51 <oklopol> makes sense :d
21:03:05 <Ngevd> I'm none of the examples
21:03:10 <fizzie> oerjan's copyright is also there.
21:03:25 <fizzie> Ngevd: Well, half of them are made of two people, thanks to those serial nick-changers.
21:03:36 <kallisti> 1682 is oerjan maybe?
21:03:45 <fizzie> kallisti: Sadly, no.
21:04:33 <fizzie> I'm probably not revealing any huge secrets if I reveal that all the three red ones (in the table) are instances of elliott, and the two blue ones are Vorpals.
21:06:35 <kallisti> it was a secret to me. :P
21:06:42 <Ngevd> fizzie... serial nick changers!? I'm one of them!
21:07:09 * kallisti is opposite of that.
21:07:14 <kallisti> except for two large nick changes.
21:07:34 <Ngevd> Ngevd, Taneb, Taneb|Hovercraft, Taneb|Kindle...
21:07:36 <kallisti> in revulsion of my past self's naming aesthetics.
21:07:49 <Ngevd> What were you before CakeProphet?
21:08:03 * oerjan isn't sure what he said but he sort of hopes it was 889
21:09:09 <fizzie> oerjan: You are: correct.
21:09:24 <oerjan> yay
21:09:41 -!- monqy has joined.
21:09:47 <fizzie> I'm hoping some of the students ask me "what the what sort of channel is this anyway".
21:11:55 <ais523> fizzie: you mentioned the channel to your students?
21:12:20 <ais523> did you not at least check to ensure none of them lived in Hexham first?
21:12:43 * kallisti imagines the commute time from Hexham to fizzie's class
21:12:47 <fizzie> Not yet, but see above: I'm using some #esoteric logs as data in this probabilistic-models demo I have in lieu of actual exercises for the first session.
21:12:50 <kallisti> unless it's an online thing.
21:13:11 <ais523> was 1319 me?
21:13:13 <fizzie> I don't think I'll be mentioning it unless they explicitly ask.
21:13:13 -!- Sandelkoenig has quit (Quit: ChatZilla 0.9.88 [Firefox 9.0.1/20111220165912]).
21:13:24 <fizzie> ais523: Yes, the INTERCAL is a bit of a giveaway.
21:13:25 <ais523> `pastlog I'm not in a mood for non-trivial INTERCAL programs
21:14:03 <ais523> hmm, it's not just the word INTERCAL, but the context it's in
21:14:06 <HackEgo> 2008-07-14.txt:22:09:27: <tusho> <ais523> I'm not in a mood for non-trivial INTERCAL programs
21:14:22 <ais523> wow, that's not the answer I was expecting
21:14:53 <fizzie> 'shuf' got me quite good examples, though I had to reroll a couple when they had "foo: ..." style attribution names in front.
21:15:16 <fizzie> ais523: Actually your initial random sample was too long to fit in the slide, horizontally speaking.
21:15:34 <ais523> heh, do I have a tendency to make unusually long comments?
21:15:59 <fizzie> It wasn't maybe so unusually long, it's more that the slide-font is awfully big.
21:16:05 <fizzie> It was "I use always-on-top a lot for watching people play NetHack in a corner of the screen while doing other things, too".
21:16:30 <fizzie> (I think I did some statistic plots on line length a while ago, though.)
21:16:32 <ais523> that seems like something I would say
21:20:54 <fizzie> Averange line lengths for the same 10 nicks: http://p.zem.fi/nhrv
21:20:59 <fizzie> s/range/rage/
21:21:38 <fizzie> Seems that it's meself that's the odd one out, really. Also I think I need to say something fluffy and needless here in order to not to slide down in the statistics. Oh, this is going to be annoying to keep up.
21:25:38 <fizzie> And the same thing but top-50 and based on post-2010-01-01 data only so that currently active people don't feel left out: http://p.zem.fi/avn8
21:25:53 <fizzie> fungot: You're so longwinded.
21:25:54 <fungot> fizzie: this one ended fnord to nasty spice, tried it and it wasn't me.
21:25:58 -!- Ngevd has quit (Quit: NO LONGER NEEDED).
21:29:07 <fizzie> And finally sorted by average line length, too: http://p.zem.fi/57g6 -- it's nice how elliott and elliott_ have ended right next to each other; very dependably standardized comment lengths there. (Though ehird is quite a bit lower down.)
21:29:46 <oklopol> but ehird and alise are right next to each other :D
21:29:56 <oklopol> eerm
21:29:58 <oklopol> alise__
21:30:02 <oklopol> *alise_
21:32:01 <fizzie> CakeProphet/kallisti, ais523/ais523_ and Sgeo/Sgeo_ also only have just one person in-between. And itidus20/itidus21 are neighbours. There must be something in there.
21:32:16 <ais523> CakeProphet = kallisti? I never realised
21:32:38 <fizzie> I was just going by what Ngevd said up there.
21:32:45 <kallisti> oh yes I thought everyone knew by now.
21:33:10 <fizzie> I suppose the hostname cloak is a bit confirmationary, though.
21:33:22 <kallisti> thanks wikipedia
21:33:27 <kallisti> site I haven't logged into for years.
21:35:44 -!- monqy has quit (*.net *.split).
21:36:02 -!- monqy has joined.
21:40:59 <oerjan> j-invariant/MissPiggy are also neighbors
21:42:58 <oerjan> er wait
21:43:06 <oerjan> looking at the wrong link
21:44:07 <oerjan> quite far apart in the intended one, actually
21:45:38 * oerjan notes how the top consists of bots, finns and zzo38
21:52:44 <Phantom_Hoover> fizzie, no love for Phantom__Hoover?
21:52:56 <oerjan> heh i noticed that
21:53:01 <oerjan> `? Phantom___Hoover
21:53:08 <HackEgo> Phantom___Hoover ? ¯\(°_o)/¯
21:53:13 <oerjan> wat :(
21:53:24 <oerjan> `? Phantom__Hoover
21:53:29 <HackEgo> Phantom__Hoover ? ¯\(°_o)/¯
21:53:33 <oerjan> `? Phantom_Hoover
21:53:35 <Phantom_Hoover> OUTRAGE
21:53:37 <HackEgo> Phantom_Hoover ? ¯\(°_o)/¯
21:53:40 <oerjan> wtf
21:53:41 <Phantom_Hoover> OUTRAAAAAAAAAAAAAAAAAAGE
21:53:45 <Phantom_Hoover> `ls wisdom
21:53:45 <oerjan> `ls wisdom
21:53:49 <HackEgo> ​? \ ais523 \ augur \ banach-tarski \ c \ cakeprophet \ category \ comonad \ coppro \ egobot \ elliott \ endofunctor \ esoteric \ everyone \ finland \ finns \ fizzie \ flower \ friendship \ functor \ fungot \ glogbot \ gregor \ hackego \ haskell \ ievan \ intercal \ itidus20 \ itidus21 \ kallisti \ lifthrasiir \ mad \ misspellings of croissant \ monad \ monads \ monoid \ monqy \ ngevd \ nooga \ oerjan \ oklopol
21:53:56 <ais523> `? monad
21:53:57 <Phantom_Hoover> WHOEVER DID THIS WILL DIE
21:54:00 <HackEgo> Monads are just monoids in the category of endofunctors.
21:54:03 <augur> HackEgo: I WILL KILL YOU
21:54:21 <Gregor> Well, this is some ... errr ... excitement.
21:54:31 <augur> Gregor: why hello
21:54:35 * augur is excited
21:54:36 <oerjan> Gregor: you sound guilty
21:54:40 <kallisti> `? misspellings of croissant
21:54:43 <HackEgo> ​? \ ais523 \ augur \ banach-tarski \ c \ cakeprophet \ category \ comonad \ coppro \ egobot \ elliott \ endofunctor \ esoteric \ everyone \ finland \ finns \ fizzie \ flower \ friendship \ functor \ fungot \ glogbot \ gregor \ hackego \ haskell \ ievan \ intercal \ itidus20 \ itidus21 \ kallisti \ lifthrasiir \ mad \ misspellings of croissant \ monad \ monads \ monoid \ monqy \ ngevd \ nooga \ oerjan \ oklopol
21:54:44 <HackEgo> misspellings of crosant? ¯\(°_o)/¯
21:54:52 <kallisti> ..
21:55:10 <ais523> what was previously at PH's wisdom entry?
21:55:10 <augur> lmfao what
21:55:33 <kallisti> `? esoteric
21:55:36 <kallisti> `? augur
21:55:36 <HackEgo> This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dal.net.
21:55:40 <HackEgo> augur took no cakes.
21:55:45 <augur> its true
21:55:49 <augur> i took no cakes
21:55:51 <oerjan> `? monad
21:55:55 <HackEgo> monad ? ¯\(°_o)/¯
21:55:56 <Gregor> `? Gregor
21:55:56 <kallisti> good to know.
21:55:58 <oerjan> aha!
21:55:59 <HackEgo> Gregor took forty cakes. He took 40 cakes. That's as many as four tens. And that's terrible.
21:56:02 <oerjan> `? Phantom_Hoover
21:56:06 <HackEgo> Phantom_Hoover is a true Scotsman and hatheist.
21:56:18 <oerjan> it's that damn space bug again
21:56:28 <monqy> `? misspellings of croissant
21:56:31 <HackEgo> misspellings of crosant? ¯\(°_o)/¯
21:56:37 <oerjan> i cannot recall it from before. hm.
21:56:48 <kallisti> monqy: ha ha
21:56:55 <oerjan> Gregor: did you very recently change HackEgo to preserve spaces at the end of command lines?
21:57:09 <Gregor> Nope.
21:57:27 <oerjan> because some stuff that i don't recall breaking before, now seems to.
21:57:45 <oerjan> `cat bin/?
21:57:48 <HackEgo> ​#!/bin/sh \ topic=$(echo "$1" | tr A-Z a-z) \ [ -e "wisdom/$topic" ] || { echo "$1? ¯\(°_o)/¯"; exit 1; } \ cat "wisdom/$topic" \
22:01:40 <oerjan> `? Phantom___Hoover
22:01:43 <HackEgo> Phantom___Hoover sucks at ghosting himself.
22:03:44 <oerjan> `? kallisti
22:03:47 <HackEgo> kallisti is a former prophet swearing off his pastry deity
22:05:07 <oerjan> hm perhaps what happens is that i simply stopped deleting invisible spaces at the end of lines...
22:05:13 <oerjan> *ed
22:05:49 <oerjan> a sign of my becoming a much more relaxed person, i'm sure. although exceedingly slowly.
22:11:12 <kallisti> oerjan: surely
22:11:30 * kallisti has become a /less/ relaxed person as of late. :P
22:13:35 <oerjan> `? finland
22:13:38 <HackEgo> Finland is a European country. There are two people in Finland, and at least five of them are in this channel. Corun drives the bus.
22:13:40 <oerjan> `? finns
22:13:44 <HackEgo> Finns are helpful, albeit grossly overpopulated (cf. 'Finland').
22:13:53 <oerjan> `? functor
22:13:56 <HackEgo> Functors are just morphisms in the category of small categories
22:14:05 <oerjan> `? ievan
22:14:09 <HackEgo> ievan is basically http://www.youtube.com/watch?v=4om1rQKPijI
22:24:42 -!- augur has quit (Remote host closed the connection).
22:38:19 * Phantom_Hoover notes that the Finnish lyrics to Ievan Polkka take up about twice the space of the English ones in those subtitles.
22:38:36 <Phantom_Hoover> It's true: Finnish is just English with all the letters doubled.
22:41:26 <oklopol> also english used to have a dot on top of vowels but we took all of them delicious dotties for ourselves.
22:41:36 <fizzie> That video link up there has both English and Finnish lyrics in the description bit; from a quick glance, they'd seem to take about the same amount of letters.
22:42:27 <fizzie> If anything, the English versions seem wider.
22:42:28 <Phantom_Hoover> fizzie, yes, shortly after I resumed watching, the Finnish lyrics became about half as long as the English ones.
22:42:40 <Phantom_Hoover> Banach-Tarski Finnish.
22:45:50 <fizzie> That loop of that thing they loop in the leek thing has managed to take the bit with no actual Finnish in it, unless I misremember.
22:47:22 <oklopol> kurikan kukka
22:49:06 <fizzie> Ja kirikan kuu.
22:49:21 <fizzie> `words --finnish 20
22:49:27 <HackEgo> diakilöltä synapsoiselviytymä satumiisin fundameressä olemiäsi intuhaaviltaneuvot veksuaan lainammustuskä koettumissasi runtalvamme salaisemme riistäni filmaistani ladoksesi paljailemmäksyt pelömmiksemältäkö ihaamilla emältäsi aakintämista manamassanne
22:49:50 <oklopol> wut
22:51:59 <fizzie> And that's not all.
22:52:08 <fizzie> `words --finnish --swedish 10
22:52:11 -!- Madoka-Kaname has joined.
22:52:12 <HackEgo> mexiä kuumennelensammattlarinanisemme jourisutt ahdeimpeimma tartymolemass lamaltisfull uportein hybritelemmille entakar härlottavis
22:52:16 <fizzie> (Those tend to be stupid.)
22:52:46 <oklopol> please elaborate
22:53:10 <oerjan> a bit hybritelemmille, those words
22:53:34 <fizzie> It's not my thing, I don't think I should. But it does pretty much what fungot does, except characters instead of words.
22:53:34 <fungot> fizzie: i always have wanted that :d
22:53:56 <fizzie> fungot: Yeah, well, you can code it yourself then.
22:53:57 <fungot> fizzie: what did you type the comma, for example. interoperability is one issue enough for him. :p
22:54:30 <ion> `words --english 20
22:54:34 <HackEgo> Unknown option: english
22:54:50 <fizzie> `run words --norwegian --swedish 20 # these, on the other hand, will probably be just fine.
22:54:55 <HackEgo> nøda snøskjuksjon sinnekropolycker totrollinge telsettinsterlig bygenasjovindning bedömennas kornpens industgörent fasciets horn ramstrivittéernen biopptiverksföret omdel regene utgåndbrat neutbevaktiede anglida rulla utrykarp
22:55:10 <fizzie> It's --eng-something.
22:55:23 <fizzie> `words --eng-all 10
22:55:30 <HackEgo> benken nonpy blado nuainlex coaf meth monorre deloping try are
22:55:41 <fizzie> (There's some other sets.)
22:56:30 <fizzie> oerjan: What's "snøskjuksjon"?
22:57:02 <oklopol> obviously it's snow suction
22:58:30 -!- ais523 has quit (Remote host closed the connection).
22:58:44 -!- azaq23 has quit (Quit: Leaving.).
22:58:54 <fizzie> `run words --eng-all --finnish 15 # I'm not sure I've seen the Anglo-Finnish combo yet.
22:59:02 <HackEgo> fightenaruit pysyitäjäht histely koteutuven pylxa nistanneyhexasti numan provanair mah wortiltamllenenbera kil näyten maat squa huolia
22:59:03 <oerjan> i'm afraid i don't know a meaning of sjuksjon
22:59:06 <oerjan> er
22:59:11 <oerjan> *i'm afraid i don't know a meaning of skjuksjon
22:59:18 <oerjan> or sjuksjon, for that matter
22:59:33 <fizzie> It sounds sick.
22:59:51 * oerjan swats fizzie -----###
23:00:33 <oerjan> sinnekropolycker sounds like something you don't want.
23:00:50 -!- Phantom_Hoover has quit (Quit: Leaving).
23:01:00 <oklopol> mental body accidents
23:01:32 <oerjan> oh right, olycker
23:02:09 * oerjan interpreted kropolycker as something you'd probably see in a microscope
23:02:49 <oklopol> what would that be?
23:02:52 <oklopol> and what's sinne
23:02:56 <oerjan> anger
23:03:12 <oklopol> o
23:03:38 <oerjan> i don't know what it would be, but it sounds like some kind of single-cell organism
23:03:54 <fizzie> Angry single-cell organisms.
23:04:09 <oerjan> no, not angry. causing anger.
23:04:20 <fizzie> Angry!
23:04:45 <oklopol> angerrrrrrrrrrrrrr
23:05:29 <fizzie> fungot: Are you angry? Or hungry? Or... what was that third one again?
23:05:29 <fungot> fizzie: there has been talk of starting up a scheme user's group along the lines of a file
23:05:56 <fizzie> Sounds like the best group.
23:13:14 -!- kallisti_ has joined.
23:13:30 <oerjan> `run words --eng-all 100 | xargs -n1 echo | grep gry
23:13:32 -!- kallisti has quit (Read error: Connection reset by peer).
23:13:38 <HackEgo> No output.
23:13:43 <oerjan> shocking!
23:13:47 -!- Frooxius_ has joined.
23:14:00 <oerjan> `run words --eng-all 1000 | xargs -n1 echo | grep gry
23:14:09 <HackEgo> No output.
23:14:52 <kallisti_> oerjan: I think I might have accidentally invented a ReaderT State monad
23:14:59 -!- Frooxius has quit (Ping timeout: 240 seconds).
23:15:03 -!- Frooxius_ has quit (Client Quit).
23:15:17 <zzo38> kallisti_: Describe it
23:16:40 -!- Frooxius has joined.
23:19:18 -!- oerjan has quit (Quit: Good night).
23:19:55 <fizzie> `run words --eng-all 20 | xargs -n1 | sed -e 's/$/gry/' | xargs
23:20:03 <fizzie> Aw, e left.
23:20:04 <HackEgo> czekgry taceaegry maurnegry liltigry xitgry mortigry nyadovgry skadenberagry lientgry regalgry roumegry vesiniegry komugry froygry oreingry categry scionagemoigry naragry isonpoetgry irrotigry
23:20:33 <kallisti_> fizzie: ha, nice.
23:21:23 <fizzie> "If you don't find the gry, you make the gry", is what I always say.
23:21:25 -!- sebbu2 has joined.
23:21:25 -!- sebbu2 has quit (Changing host).
23:21:25 -!- sebbu2 has joined.
23:22:19 -!- sebbu has quit (Ping timeout: 240 seconds).
23:23:20 <kallisti_> categry theory
23:24:36 <monqy> hi
2012-01-24
00:09:37 * kallisti_ should learn how to effectively use xargs
00:28:35 -!- augur has joined.
00:28:35 -!- augur has quit (Remote host closed the connection).
00:28:50 -!- augur has joined.
00:29:00 <fizzie> Actually I simplified those out in theory, except words seems to output "space, newline, space" after the last word, causing the simpler version to generate a spurious gry-line. :/
00:29:09 <fizzie> `run words --eng-all 3 | sed -e 's/ \|$/gry&/g'
00:29:17 <HackEgo> nachcnggry torygry griigry \ gry
00:29:19 <fizzie> `run words --eng-all 1 | od -t x1z
00:29:26 <HackEgo> 0000000 61 70 6f 6e 64 20 0a 20 >apond . < \ 0000010
00:29:46 <fizzie> See, what's that ... 20 0a 20 doing there?
00:31:05 <fizzie> (Also nachcnggry, totally English.)
00:31:49 <Jafet> Maurnest thou thine nachcnggry.
00:35:06 <kallisti_> fizzie: huh
00:35:06 <kallisti_> weirde
00:36:10 <kallisti_> oh I know why.
00:36:33 <kallisti_> local $\ = ' '; print generate for 1..min(25, int($ARGV[0]||1)); print "\n";
00:40:13 <kallisti_> `fetch http://dl.dropbox.com/u/16495819/words.pl
00:40:16 <HackEgo> 2012-01-24 00:40:16 URL:http://dl.dropbox.com/u/16495819/words.pl [4627/4627] -> "words.pl" [1]
00:40:29 <kallisti_> `run chmod +x words.pl; mv words.pl bin/words
00:40:33 <HackEgo> No output.
00:40:36 <kallisti_> `words 5
00:40:42 <HackEgo> Optional module Math::Random::MT::Perl not found. \ lamore golo grapp blacea collllll
00:41:20 <kallisti_> oh yes I actually care about random number generation unlike Gregor.
00:43:29 <kallisti_> `run sed -i~ -e 's/^\s*warn/#warn/'
00:43:32 <HackEgo> sed: no input files
00:43:36 <kallisti_> `run sed -i~ -e 's/^\s*warn/#warn/' bin/words
00:43:40 <HackEgo> No output.
00:43:50 <kallisti_> `words --esolangs 500
00:43:55 <HackEgo> onoz 0x29a intediusp rcem tmmlpter xigxag mon morse entropy object 5-log beat m-code sbeezg rna mage ted! sbeezg rever waker) nic fit flip constuff orook
00:45:17 <kallisti_> `rm bin/words~
00:45:20 <HackEgo> No output.
00:58:38 -!- pir^2 has joined.
01:07:37 <kallisti_> http://www.google.com/trends/?q=haskell,+PHP&ctab=0&geo=all&date=all&sort=0
01:09:23 <kallisti_> interestingly Hugs gets more search volume tan GHC.
01:10:32 <Sgeo> kallisti_, combined with Haskell on the same page?
01:10:41 <Sgeo> Because if not, there's an obvious explanation for that
01:10:47 <Sgeo> Erm, wait, not page. Search.
02:11:23 <zzo38> Is there any way to do custom grouping with a Map in Haskell?
02:11:44 <zzo38> The keys are a record with two fields, and I want to group on one of them
02:18:57 <kallisti_> zzo38: you could do a fold to a list of Maybe and then catMaybes
02:19:43 <kallisti_> is that what you meant by grouping?
02:20:39 <zzo38> kallisti_: I mean, all items that the first field of the key is same, should be grouped together. They are already sorted since it is Map, and that is the primary sort already
02:21:25 <kallisti_> zzo38: so you want a [[a]] output?
02:21:49 <zzo38> That might do, or [Map]
02:21:57 <zzo38> I am unsure
02:22:13 <kallisti_> group . toDescList should give you what you want anyway, assuming you don't want to apply some other sort.
02:23:16 <kallisti_> otherwise you could probably do something by hand with mapAccumWithKey
02:23:21 <kallisti_> if you want a map result or something else.
02:23:43 <zzo38> Maybe I have to convert to list and use groupBy; the result doesn't have to be map
02:25:57 <kallisti_> andRule :: (Monad m) => WalkRule m a -> WalkRule m b -> WalkRule m b
02:25:58 <kallisti_> andRule f g i = f i >> g i
02:26:03 <kallisti_> does this look like >> for an existing monad?
02:26:38 <zzo38> Is it like ReaderT?
02:26:46 <kallisti_> yes that's what I thought
02:26:52 <kallisti_> I accidentally invented ReaderT :P
02:27:11 <kallisti_> type WalkRule m a = WalkInfo m -> m a
02:28:31 <kallisti_> thenRule :: (Monad m) => WalkRule m a -> WalkRule m b -> WalkRule m b
02:28:32 <kallisti_> thenRule f g i = f i >>= (\m -> g i{wMove = m})
02:28:37 <kallisti_> however here I do something different
02:28:58 <kallisti_> maybe I should rewrite this as RWS.
02:29:06 <kallisti_> or just ReadT State
02:32:32 <kallisti_> aah
02:32:55 <kallisti_> thenRule can be done with local
02:37:19 <kallisti_> > const [1,2,3,4] ++ const [1,2,3,4]
02:37:20 <lambdabot> Overlapping instances for GHC.Show.Show (b -> [t])
02:37:20 <lambdabot> arising from a use of...
02:37:27 <kallisti_> > const [1,2,3,4] ++ const [1,2,3,4] $ [3]
02:37:29 <lambdabot> [1,2,3,4,1,2,3,4]
02:37:45 <kallisti_> > const [1,2,3,4] `mplus` const [1,2,3,4] $ [3]
02:37:46 <lambdabot> No instance for (Control.Monad.MonadPlus ((->) [t]))
02:37:46 <lambdabot> arising from a use ...
02:44:14 -!- myndzi has joined.
02:54:04 -!- pikhq has joined.
02:54:07 -!- pikhq_ has quit (Ping timeout: 248 seconds).
03:01:37 -!- pir^2 has changed nick to PiRS|around|busy.
03:06:51 -!- Guardric has joined.
03:08:53 <pikhq> Be that Gregor, or just someone else from Purdue?
03:29:08 <Guardric> Could anyone explain to me how Iota/Jot operate? I don't know much about lambda calculus or combinatory logic, so it's hard for me to follow many of the descriptions online. My main confusion is how these languages manage to actually manipulate data
03:31:43 <pikhq> Quite honestly, you would probably be best off learning a functional language (e.g. Haskell), which would make the semantics of Iota fairly obvious.
03:33:43 <zzo38> You can make data into functions, such as church numbers, and so on, explain by Wikipedia and by the Unlambda documentation
03:51:19 <Guardric> ok thanks
03:51:28 -!- Guardric has quit (Quit: Leaving).
03:53:07 <kallisti_> lol
04:08:10 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)).
04:10:03 -!- PiRS|around|busy has changed nick to pir^2.
04:11:22 <zzo38> Does the Haskell compiler know that equality is reflexive?
04:12:07 <kallisti_> it might. I don't know if Eq necessarily has that as a law though
04:13:04 <kallisti_> a cursory glance suggests that there's no rewrite rule to handle the reflexive case
04:13:30 <kallisti_> I would be surprised if there were non-reflective instances of Eq.
04:13:39 <kallisti_> *reflexive
04:14:44 <zzo38> The compiler ought to know it is reflexive so that you can do shortcut by pointer equality when it would help; is there any way for a Haskell compiler to know when to do that, anyways?
04:16:10 <kallisti_> syntactically at compile time, sure.
04:17:50 -!- rodgort has joined.
04:17:51 <zzo38> What I mean is if there are some large structures that are usually passed using the same calculated value (so, same pointer) then check pointer equality first, if that fails then you can check in the other way
04:21:28 <kallisti_> RWS is nice.
04:22:15 <kallisti_> zzo38: dunno. the additional test would have to be worth it though.
04:48:14 -!- pir^2 has quit (Quit: bye).
04:50:39 <zzo38> kallisti_: Yes, I know; it depend on the circumstances it might or might not be worth it.
04:52:29 -!- MDude has changed nick to MSleep.
04:56:35 <kallisti_> despite being slightly ill-defined MonadPlus is a very useful generalization
04:57:20 <kallisti_> it would be better if it were broken up into multiple typeclasses, and with a proper way to refer to typeclass synonyms.
04:59:17 <zzo38> The class Alternative is the similar thing for Applicative
05:01:13 <zzo38> Although MonadPlus has a left zero law which is actually implied by the type signature of mzero and the monad laws
05:03:00 <zzo38> A proper way to refer to typeclass synonyms, in my opinion, would be to have a kind & where you can then use the "type" command
05:04:40 <zzo38> For example, to mean they have two classes required, you can have: type (X :: * -> &) (x :: *) = (Y x, Z x)
05:04:53 <zzo38> (Where Y and Z are classes)
05:05:46 <kallisti_> > let f = 2 where where where where where where in f
05:05:47 <lambdabot> <no location info>: parse error on input `where'
05:06:43 <zzo38> kallisti_: What is that supposed to be??????
05:07:21 <kallisti_> nothing I was seeing what would happen
05:07:25 <coppro> http://robertsrules.forumflash.com/index.php?/topic/14206-treasurers-report/page__view__findpost__p__68024
05:07:27 <kallisti_> pretty sure you can have an empty where though
05:07:39 <zzo38> Do you need {} afterward if it is empty where?
05:07:48 <kallisti_> on one line probably
05:07:51 <kallisti_> but not with layout
05:07:58 <kallisti_> > let f = 2 where {} in f
05:07:59 <lambdabot> 2
05:08:02 <kallisti_> > let f = 2 where in f
05:08:03 <lambdabot> 2
05:08:06 <kallisti_> oh, no.
05:08:23 <kallisti_> > let in 2
05:08:24 <lambdabot> 2
05:13:30 <kallisti_> type aliases curry right?
05:13:37 <kallisti_> type Walk = WalkT Identity
05:13:47 <zzo38> Yes, I believe so.
05:23:58 -!- pikhq_ has joined.
05:24:10 -!- pikhq has quit (Ping timeout: 245 seconds).
05:25:09 <zzo38> What should my program write in the Cwt/v field of the S3M files it creates? It is a sixteen-bit field which is supposed to indicate created with tracker/version.
05:31:31 -!- rodgort has quit (Ping timeout: 252 seconds).
05:53:19 -!- azaq23 has joined.
05:57:31 <zzo38> I will just put 0x0000
05:57:37 <quintopia> someone suggest a cli command with the user dict that would let me estimate the number of legal trigrams (or smaller) in the english language
06:18:58 -!- azaq23 has quit (Quit: Leaving.).
06:22:45 <kallisti_> `run perl -e 'use Storable; ($grams,undef) = retrieve("share/WordData/Eng1M"); print scalar keys %$grams"
06:22:48 <HackEgo> bash: -c: line 0: unexpected EOF while looking for matching `'' \ bash: -c: line 1: syntax error: unexpected end of file
06:22:53 <kallisti_> `run perl -e 'use Storable; ($grams,undef) = retrieve("share/WordData/Eng1M"); print scalar keys %$grams'
06:22:58 <HackEgo> Not a HASH reference at -e line 1.
06:23:14 <kallisti_> `run perl -e 'use strict; use Storable; ($grams,undef) = retrieve("share/WordData/Eng1M"); print scalar keys %$grams'
06:23:18 <HackEgo> Global symbol "$grams" requires explicit package name at -e line 1. \ Global symbol "$grams" requires explicit package name at -e line 1. \ Execution of -e aborted due to compilation errors.
06:23:26 <kallisti_> `run perl -e 'use strict; use Storable; my ($grams,undef) = retrieve("share/WordData/Eng1M"); print scalar keys %$grams'
06:23:32 <HackEgo> Not a HASH reference at -e line 1.
06:24:09 <kallisti_> `run perl -e 'use strict; use warnings; use Storable; my ($grams,undef) = retrieve("share/WordData/Eng1M") or die; print scalar keys %$grams'
06:24:15 <HackEgo> Not a HASH reference at -e line 1.
06:26:15 <kallisti_> `run perl -CSDL -e 'use strict; use warnings; use Storable "retrieve"; my ($grams,undef) = @{retrieve("share/WordData/Eng1M")}; print scalar keys %$grams'
06:26:21 <HackEgo> 49303
06:26:25 <kallisti_> quintopia: ^
06:26:30 <kallisti_> turns out I already have that data for you.
06:26:44 <kallisti_> that's from a google dataset of 1 million english words.
06:31:13 <kallisti_> running my gram script on /etc/share/dict/american-english yields 7665 trigrams.
06:31:16 <kallisti_> well...
06:31:31 <kallisti_> character trigrams. did you mean word trigrams actually? I get confused sometimes. :P
07:03:39 <zzo38> Right now the sun and moon are not directly overhead any land; they are over the water.
07:03:50 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
07:05:29 <zzo38> I have a map of where the sun, moon, and planets is rising, setting, and directly overhead, for this time.
07:05:46 <zzo38> Is it daytime in your location?
07:08:53 <oklopol> morningtime in mine
07:09:49 <zzo38> Do you mean the sun has already risen and it is before solar noon?
07:11:00 <oklopol> well according to the internet, the sun should be rising right about now
07:11:29 <oklopol> length of day 7 hours 17 minutes, so i suppose 3.5 hours till solar noon
07:12:40 <zzo38> According to Astrolog, too; I found Finland on the map according to Wikipedia
07:13:36 <zzo38> Are you in the south half of Finland?
07:13:48 <oklopol> roughly as south as helsinki
07:13:57 <oklopol> slightly norther... i think
07:14:28 <oklopol> something like 20 km norther maybe
07:16:26 <oklopol> (i assume you know where helsinki is if you just astrologged finland)
07:18:05 <zzo38> Is it near the red line? http://zzo38computer.cjb.net/img_14/astro-graph.png (I know where Finland is because I looked it up in Wikipedia, so I can see the red line on this map passes through the south half of Finland)
07:19:04 <zzo38> I believe these lines are for the *center* of the object rising, and ignoring refraction, but still taking into account the finite speed of light.
07:25:24 <zzo38> I have heard that the moon looks sideways in some places?
07:33:56 <kallisti_> > [const 2, const 3] <*> [1,2,3]
07:33:57 <lambdabot> [2,2,2,3,3,3]
07:48:55 <zzo38> Astrological signs are about as useful a measurement of ecliptic angles as months are a measurement of the date on the calendar. Agree/disagree/something else?
08:08:32 -!- kallisti_ has changed nick to kallisti.
08:13:50 -!- zzo38 has quit (Remote host closed the connection).
08:17:10 -!- oklofok has joined.
08:17:23 <oklofok> http://www.youtube.com/watch?v=tiMMERUpaNY my eyes are finally open
08:18:02 <oklofok> i've always wondered why the pharao needed to catch moses, but it's now obvious it's because he stole the superconductor
08:19:37 <oklofok> Youve got to be ignorant not to believe this. clearly civilizations before us? could do what we today, cannot. when looking at the crystal skulls, the underground chambers that are mapped out so direct and so precise that even today scientists are baffled. think what you want but our society is growing ignorant and is afraid to believe that we arent as powerful as we once were.
08:19:42 -!- Slereah has joined.
08:19:47 <oklofok> hmm prolly didn't come through
08:19:53 <oklofok> and so precise that even today scientists are baffled. think what you want but our society is growing ignorant and is afraid to believe that we arent as powerful as we once were.
08:20:05 -!- _Slereah has quit (*.net *.split).
08:20:05 -!- oklopol has quit (*.net *.split).
08:20:24 <fizzie> There is some sort of an echo here, it seems.
08:20:30 <oklofok> :D
08:20:44 <kallisti> `? monoid
08:20:58 <HackEgo> Monoids are just categories with a single object.
08:24:18 <oklofok> WHAT'S WRONG WITH PEOPLE
08:24:37 <kallisti> oklofok: they're not categories with a single object.
08:25:13 <oklofok> strictly speaking, don't monoids have to be small categories with a single object though? or maybe not when it's a category theory term.
08:25:57 <kallisti> single object categories are pretty small if you think about it...
08:28:33 <oklofok> yeah just like an infinite universe containing only a single atom of xenon is small.
08:28:55 <oklofok> see there's also krypton
08:34:23 -!- oerjan has joined.
08:36:44 <oerjan> 23:20:03: <fizzie> Aw, e left.
08:36:44 <oerjan> 23:20:04: <HackEgo> czekgry taceaegry maurnegry liltigry xitgry mortigry nyadovgry skadenberagry lientgry regalgry roumegry vesiniegry komugry froygry oreingry categry scionagemoigry naragry isonpoetgry irrotigry
08:36:48 <oerjan> OKAY
08:49:47 <oerjan> @tell <zzo38> Does the Haskell compiler know that equality is reflexive? <-- it actually isn't, for Double (NaN)
08:49:47 <lambdabot> Consider it noted.
08:51:10 <oerjan> many think that's a bad enough case that IEEE equality/ordering shouldn't have been used for the haskell instances
08:53:14 <oerjan> @tell zzo38 There is reallyunsafeptrequality#, but as the name says that's really unsafe
08:53:14 <lambdabot> Consider it noted.
08:53:43 <oerjan> @tell zzo38 *reallyUnsafePtrEquality#
08:53:43 <lambdabot> Consider it noted.
08:59:21 <kallisti> @tell @tell @tell
08:59:21 <lambdabot> Consider it noted.
08:59:28 <kallisti> @ 34235@#$@#%@#$@#^ hi
08:59:32 <kallisti> @tell 34235@#$@#%@#$@#^ hi
08:59:33 <lambdabot> Consider it noted.
09:02:11 <oerjan> some day someone is going to have to investigate why lambdabot's @tell file is 400 GB
09:03:45 <oerjan> actually maybe not, because by the time that happens that will be a too insignificant amount to worry about.
09:12:15 <Jafet> There hasn't even been 400 GB of irc in lambdabot's channels
09:13:18 <oerjan> DETAILS
09:13:25 <oerjan> you can also @tell in privmsg
09:25:37 <quintopia> the degree sequence is the sequence of sizes of single vertex cuts. what is the sequence of cuts of k vertices called? what is known about two graphs which have the same such sequences for all k<=n?
09:27:13 <oerjan> i'm sure there's someone, somewhere, who knows the answer.
09:27:37 <quintopia> yes
09:27:56 <quintopia> i know such a person
09:27:58 <oerjan> wikipedia or mathexchange maybe?
09:28:24 -!- ais523 has joined.
09:28:28 <quintopia> perhaps the latter
09:28:33 <quintopia> the former helpeth not
09:29:10 -!- GreaseMonkey has quit (Quit: The Other Game).
09:33:21 <itidus20> http://www.amazon.com/Esoteric-Programming-Languages-including-Instruction/dp/1243288019/ref=sr_1_3?ie=UTF8&qid=1327397466&sr=8-3
09:34:02 <itidus20> Hephaestus Books represents a new publishing paradigm, allowing disparate content sources to be curated into cohesive, relevant, and informative books. To date, this content has been curated from Wikipedia articles and images under Creative Commons licensing, although as Hephaestus Books continues to increase in scope and dimension, more licensed and public domain content is being added.
09:36:42 -!- monqy has quit (Quit: hello).
09:37:17 <oerjan> i think we've mentioned that before
09:37:22 <itidus20> ahh
09:41:33 <kallisti> http://blog.zx2c4.com/749
09:43:54 <oerjan> i hate long blog posts with the date at the bottom
09:45:08 <oerjan> i want to know _before_ i start reading whether this is from this year or 2001, dammit
09:46:07 <oerjan> not that i was actually going to read all of that, though
09:47:46 <quintopia> i posted question of mathexchange but i think half the question got cut off...
09:48:18 <oerjan> i think there may be a way to edit?
09:48:39 <oerjan> or perhaps you need to have reputation for that
09:49:37 <fizzie> It's all about the "reps".
09:49:51 <fizzie> "Hey peeps, have you got the reps?" <-- look, I can be hip too.
10:07:41 -!- Frooxius has quit (Read error: Connection reset by peer).
10:11:10 <fizzie> 63 people on the course and the room has a sign "max. 32 people" on the wall. Oh well, let's hope only at most half show up. (Given that these things are optional, that's very possible.)
10:14:33 <fizzie> 16 so far and I'm supposed to start in a minute. Maybe they'll all fit.
10:15:05 -!- Frooxius has joined.
10:15:28 <itidus20> fizzie: class seems to revolve around powers of 2
10:16:47 <itidus20> 2^4 present.. 2^5 maximum... (2^6)-1 signed up
10:18:05 <itidus20> as to how 63 is not actually a power of 2, it is only one brainfuck instruction away from a power of 2
10:23:00 -!- zzo38 has joined.
10:51:24 -!- ais523_ has joined.
10:57:07 -!- rodgort has joined.
11:03:58 -!- pikhq has joined.
11:04:20 -!- pikhq_ has quit (Ping timeout: 260 seconds).
11:22:10 -!- zzo38 has quit (Remote host closed the connection).
11:23:04 -!- oerjan has quit (Quit: leaving).
11:29:23 <fizzie> There were a bit more than 2^4 at the end.
11:32:32 <fizzie> But less than 2^5.
11:57:12 -!- coppro has quit (Ping timeout: 240 seconds).
11:58:18 -!- coppro has joined.
12:19:08 <fizzie> Sadly, no-one asked which channel the data was from.
12:46:27 -!- Phantom_Hoover has joined.
12:51:09 -!- ais523_ has quit (Quit: Page closed).
13:02:51 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
13:03:11 -!- Phantom_Hoover has joined.
13:12:29 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
13:40:52 -!- augur has quit (Remote host closed the connection).
14:06:29 -!- MDude has joined.
14:08:03 -!- MSleep has quit (Ping timeout: 255 seconds).
14:10:45 -!- MDude has quit (Ping timeout: 255 seconds).
14:10:59 -!- MSleep has joined.
14:29:12 -!- MSleep has quit (Ping timeout: 255 seconds).
14:46:31 -!- augur has joined.
14:51:26 -!- Phantom_Hoover has joined.
14:51:34 <Phantom_Hoover> halo
14:51:35 <lambdabot> Phantom_Hoover: You have 3 new messages. '/msg lambdabot @messages' to read them.
16:05:06 <ais523> hi Phantom_Hoover
16:26:29 <Sgeo> kallisti, I may have forgotten to update you, I'm not sure
16:30:29 -!- MDude has joined.
16:35:58 <Phantom_Hoover> >30*60
16:36:01 <Phantom_Hoover> > 30*60
16:36:02 <lambdabot> 1800
16:40:42 -!- MDude has quit (Read error: Connection reset by peer).
16:40:57 -!- MDude has joined.
16:42:43 -!- MDude has quit (Read error: Connection reset by peer).
16:43:02 -!- MDude has joined.
16:44:23 -!- MSleep has joined.
16:48:15 -!- MDude has quit (Ping timeout: 255 seconds).
16:49:09 -!- MSleep has quit (Ping timeout: 255 seconds).
16:49:39 -!- ais523 has quit (Remote host closed the connection).
16:49:49 -!- MDude has joined.
16:51:55 -!- MSleep has joined.
16:54:32 -!- MSleep has quit (Read error: Connection reset by peer).
16:54:33 -!- MDude has quit (Ping timeout: 255 seconds).
16:54:45 -!- MDude has joined.
16:55:52 -!- leonid[sunp] has quit (Quit: Leaving).
16:57:45 -!- MSleep has joined.
17:00:57 -!- MSleep has quit (Read error: Connection reset by peer).
17:01:10 -!- MSleep has joined.
17:01:18 -!- MDude has quit (Ping timeout: 255 seconds).
17:06:21 <Phantom_Hoover> > NaN == NaN
17:06:23 <lambdabot> Not in scope: data constructor `NaN'Not in scope: data constructor `NaN'
17:06:27 <Phantom_Hoover> Dammit.
17:07:49 <Deewiant> > (0/0) == (0/0 :: Float)
17:07:50 <lambdabot> False
17:11:54 -!- MSleep has quit (Read error: Connection reset by peer).
17:12:28 -!- MDude has joined.
17:14:17 -!- MSleep has joined.
17:17:30 -!- MDude has quit (Ping timeout: 255 seconds).
17:18:48 -!- MDude has joined.
17:18:51 -!- MSleep has quit (Ping timeout: 255 seconds).
17:19:20 -!- MDude has quit (Read error: Connection reset by peer).
17:20:24 -!- MDude has joined.
17:21:15 -!- MSleep has joined.
17:23:23 -!- MSleep has quit (Read error: Connection reset by peer).
17:23:35 -!- MSleep has joined.
17:25:09 -!- MDude has quit (Ping timeout: 255 seconds).
17:29:09 -!- MDude has joined.
17:32:48 -!- MSleep has quit (Ping timeout: 255 seconds).
17:33:19 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
17:33:36 -!- Phantom_Hoover has joined.
17:37:06 -!- Sandelkoenig has joined.
17:39:34 -!- MDude has quit (Read error: Connection reset by peer).
17:39:50 -!- MDude has joined.
18:03:51 -!- MDude has quit (Ping timeout: 255 seconds).
18:06:45 -!- ais523 has joined.
18:09:02 -!- Klisz has joined.
18:23:04 -!- oerjan has joined.
18:37:31 -!- monqy has joined.
18:48:39 -!- Ngevd has joined.
18:52:40 -!- Ngevd has quit (Ping timeout: 240 seconds).
19:12:30 -!- rodgort has quit (Ping timeout: 252 seconds).
19:24:31 -!- Vorpal has joined.
20:14:25 -!- GreaseMonkey has joined.
20:14:26 -!- GreaseMonkey has quit (Changing host).
20:14:26 -!- GreaseMonkey has joined.
20:18:42 * oerjan considers some of his recent unanswered blog comments and gets this weird thought: is the _universe_ shadow banning him?
20:20:02 <ais523> oerjan: I'm still capable of perceiving you
20:20:14 <quintopia> ais is the universe
20:20:27 <ais523> assuming that the universe isn't also producing fake oerjan comments in order to hide the fact that you've been banned
20:20:38 <quintopia> the fact of your existence doesnt inspire in him any feelings of preference
20:22:30 -!- oerjan has set topic: Now open for Japanese vacation trips | Get your esoil and esoline here! | Glorious optators graciously levy special tax to subsidize their gold-embossed biography to poor people | Based on the power of the nuclear family! | Spotted marsh elliott spotted in other marsh | Gregorian chants outlawed, "American" | http://codu.org/logs/_esoteric/.
20:23:54 <oerjan> ais523: esolang fora seem to be exempted
20:25:47 <oerjan> except for User:Nthern, that scoundrel.
20:28:24 <olsner> Gregorian chants outlawed!? wtf
20:29:42 <oerjan> olsner: yes, Gregor admitted to being American. unprovoked, even. almost no torture involved at all.
20:31:35 <olsner> oh right, that kind of gregorian
20:32:13 <quintopia> Gregor! Gregor! Gregor! Gregor! Gregor!
20:32:33 <quintopia> (am i banned now?)
20:35:30 <oerjan> this law applies to loyal citizens, you are obviously an american spy provocateur.
20:36:34 <quintopia> so, i'm banned for being an american spy provocateur?
20:37:07 <oerjan> just watch your step, is all i'm saying.
20:38:24 <quintopia> oh...is there a sudden drop-off at the door? did you just wax the floor? spill your marbles?
20:39:27 <oerjan> yes, there are a lot of lost marbles around here
20:41:42 <olsner> where did all the marbles go though? must've gone somewhere
20:41:56 <Phantom_Hoover> They went to the floor, duh.
20:42:33 <olsner> the what?
20:42:50 <oerjan> `? mad
20:42:54 <HackEgo> ​"But I don't want to go among mad people," Alice remarked. "Oh, you can't help that," said the Cat: "we're all mad here. I'm mad. You're mad." "How do you know I'm mad?" said Alice. "You must be," said the Cat, "or you wouldn't have come here."
20:43:10 <olsner> so true
20:43:16 <oerjan> oh it was that one
20:43:30 <olsner> swap that and the `? welcome text
20:43:38 <oerjan> er
20:43:39 <quintopia> YES
20:50:10 <Gregor> Agreed.
20:51:11 <Phantom_Hoover> Although with the incessant portal chess it's kind of just been boring.
20:51:32 <olsner> Agreed.
20:51:47 <olsner> is anyone even doing esolangs anymore_
20:52:31 <Phantom_Hoover> Taneb does sometimes, but he also feeds the portal chess so it cancels out.
20:54:07 <olsner> is that portal chess thing interesting? I missed the beginning of it so I've just filtered it all out
20:54:20 <Phantom_Hoover> No.
20:54:50 <Phantom_Hoover> It's just a chess variant based on an "OMG wouldn't it be cool if" taken too far.
21:06:30 * oklofok does recursion theory, does that count?
21:07:55 <olsner> probably, it sounds alright
21:18:19 * oerjan tests the shadow ban theory by answering an actual math question
21:21:58 <olsner> shadow ban?
21:22:45 <oerjan> ...
21:23:13 <olsner> ...!
21:25:00 <fizzie> It's like shadow boxing, except you ban.
21:25:39 * olsner puts some shadows in boxes
21:27:59 <olsner> ooh, kira nerys appears in Castle
21:30:06 <Phantom_Hoover> Does DS9 fall on a planet and turn into a castle.
21:30:38 <olsner> no, she's a dog psychologist
21:30:54 <fizzie> You mean... a dog who's also a psychologist?
21:31:54 <olsner> unsure, but she emulated a human pretty well
21:45:30 <oerjan> <Phantom_Hoover> Does DS9 fall on a planet and turn into a castle. <-- sounds like elfquest
21:52:59 <kallisti> hi
21:54:06 <oerjan> lo
21:54:15 <olsner> me
22:20:43 -!- Jafet has quit (Quit: Leaving.).
22:24:07 -!- Phantom_Hoover has changed nick to Phantom_Hoover_.
22:24:18 -!- Phantom_Hoover_ has changed nick to Phantom_Hoover.
22:47:36 -!- rodgort has joined.
22:56:20 -!- Sandelkoenig has quit (Quit: ChatZilla 0.9.88 [Firefox 9.0.1/20111220165912]).
23:15:27 -!- Phantom_Hoover has quit (Quit: Leaving).
23:15:32 -!- pir^2 has joined.
23:24:57 -!- myndzi\ has joined.
23:28:11 -!- myndzi has quit (Ping timeout: 252 seconds).
23:46:06 -!- Klisz has quit (Excess Flood).
23:46:34 -!- Klisz has joined.
2012-01-25
00:00:39 -!- ais523 has quit (Remote host closed the connection).
00:02:06 -!- SgeoN1 has joined.
00:02:29 <SgeoN1> The course I'm currently enrolled in seems to be sucking VMware's dick
00:03:32 <SgeoN1> It is apparently an authorized course towards a VMware Certified Professional thing
00:03:46 -!- SgeoN1 has quit (Read error: Connection reset by peer).
00:04:07 -!- SgeoN1 has joined.
00:13:04 <SgeoN1> The book has some obnoxious DRM
00:13:40 <SgeoN1> Requires certain software, grand total of two registrations, after that it's locked out. And I can only buy the book once.
00:24:32 <pikhq> Friendly reminder, you're in a course of study with as much use and merit as a degree in basket-weaving.
00:24:56 <oklofok> hey we all need baskets sometimes.
00:25:10 <oklofok> don't exaggerate its usefulness.
00:27:46 <oklofok> well i mean i don't
00:28:01 <oklofok> what the heck would i put in a a
00:28:07 <oklofok> and when i say a
00:28:09 <oklofok> i mean basket.
00:28:36 <SgeoN1> I can't get a BS easy job with this certification?
00:29:07 <oklofok> who knows, i only skimmed the backlog
00:29:38 <oklofok> but pikhq is a basket expert, he should know
00:33:51 -!- oerjan has quit (Quit: The handbasket to Hell).
00:34:05 <pikhq> I'm referring to your entire "IT" degree.
00:34:21 <pikhq> Which basically doesn't matter.
00:45:49 <SgeoN1> kallisti: update
00:46:52 <SgeoN1> @tell elliott Update
00:46:52 <lambdabot> Consider it noted.
00:46:56 -!- Klisz has changed nick to unelsone.
00:47:07 -!- unelsone has changed nick to Klisz.
00:49:56 -!- SgeoN1 has quit (Read error: Connection reset by peer).
00:50:14 -!- SgeoN1 has joined.
00:50:47 -!- Klisz has changed nick to Ienpw_IV.
00:52:13 -!- Ienpw_IV has changed nick to Klisz.
01:12:17 -!- SgeoN1 has quit (Read error: Connection reset by peer).
01:12:35 -!- SgeoN1 has joined.
01:24:59 -!- sebbu2 has changed nick to sebbu.
01:30:51 -!- SgeoN1 has quit (Ping timeout: 245 seconds).
01:30:55 -!- SgeoN2 has joined.
01:36:31 -!- SgeoN2 has quit (Quit: Bye).
01:59:50 <pir^2> Is Iota defined as being lazy?
02:01:41 <kallisti> not that I'm aware of.
02:02:34 <kallisti> I believe it has call-by-name semantics though
02:04:06 <pir^2> okay
02:04:39 <kallisti> well, call-by-name in some sense
02:04:44 <kallisti> it's essentially just term rewriting.
02:05:53 <kallisti> DateFuck is an esolang designed for use in creating text-based dating sims and text adventures. It is (probably) Turing complete, and consists entirely of printing, xor, and implied jumps. It contains no instructions, and has no data storage, save from the program counter itself.
02:05:58 <kallisti> i...
02:12:02 <pir^2> it's not clear to me how it works?
02:12:13 <pir^2> What does "Hello Sailor" mean?
02:12:31 <pir^2> oh, got it
02:40:44 <itidus20> sounds like the sort of language i came here to learn about :D
02:40:53 -!- itidus20 has changed nick to itidus21.
02:41:17 <itidus21> i really need a new nick
02:41:26 <kallisti> funkmasterflex
02:41:28 <kallisti> good nick.
02:41:34 <kallisti> ifunkmasterflex
02:41:59 <itidus21> its just that a) it's a copy of a video game characters name, and b) it has a meaningless number tacked on
02:42:21 <itidus21> otherwise i have no issues with it
02:42:55 <itidus21> kallisti: lets leave it up to your language bot
02:43:21 <itidus21> how does it work again?
02:43:53 <itidus21> i want to ask it for 50 english-like words
02:44:28 <itidus21> with a maximum length of 9 if possible but not a big deal
02:45:36 <itidus21> `log words 50
02:46:09 <HackEgo> 2012-01-04.txt:22:10:36: <kallisti> `words 50
02:46:14 <itidus21> aha
02:46:32 <itidus21> `words 50
02:46:39 <HackEgo> perre mei fingresem innoshiel mani integul hetkelectiv douth lupatalappr veratho matu phylatbe arally cabinder bepnveeet heim ishe kyn enfessle krangencilitu ved theadwhoorl femon stocya meek
02:46:54 <itidus21> i won't worry about the english or the 9
02:47:16 <itidus21> `words 50
02:47:22 <HackEgo> mar bal nontrem hoot liganderade orick nior whelm yer okton depio inflnergerwin penda ere fruisition fuz bergi volk cognie jollilite consobe colon cally aste firma
02:47:29 <itidus21> i know its just 25 but so what
02:50:50 <itidus21> kallisti: when i suggested the esolangs for the language bot i didn't think about how they sort of miss the point of the project. so it won't hurt my feelings if they are removed
02:54:03 <itidus21> if i was going to change my id i would certainly use one of those words but then noone would know who i was
03:01:58 -!- augur has quit (Remote host closed the connection).
03:33:56 -!- augur has joined.
03:36:02 -!- augur has quit (Remote host closed the connection).
03:36:11 -!- augur has joined.
03:37:03 -!- pikhq_ has joined.
03:39:52 -!- pikhq has quit (Ping timeout: 255 seconds).
03:42:06 -!- Frooxius_ has joined.
03:43:19 -!- Frooxius_ has quit (Client Quit).
03:44:00 -!- Frooxius has quit (Ping timeout: 252 seconds).
03:44:22 -!- Frooxius has joined.
03:45:05 -!- Frooxius has quit (Client Quit).
04:06:09 <kallisti> is perfect play still possible in a game with imperfect information?
04:06:31 <kallisti> if so, wouldn't it simply be a lucky guess?
04:09:23 -!- Frooxius has joined.
04:10:09 -!- Frooxius has quit (Client Quit).
04:10:25 -!- Frooxius has joined.
04:10:43 <Sgeo> Paper, rock, scissors, bomb. Paper beats rock, rock beats scissors, scissors beats paper, bomb beats paper, rock, scissors, and in event of a tie with two bombs, taller person wins. You are the taller person. Is there a perfect play?
04:11:38 <kallisti> ..yes
04:11:50 <kallisti> however
04:12:08 <kallisti> the lack of information really does not affect the outcome in any way.
04:12:14 <kallisti> I think that counts as a trivial case.
04:13:26 <kallisti> or rather, I should say
04:13:31 <kallisti> it affects the outcome, but not your chances of winning
04:14:01 <kallisti> because you /could/ choose rock paper or scissors
04:14:25 <kallisti> which would then mean that the imperfect information affects the outcome of the game
04:18:52 -!- pir^2 has quit (Quit: Bye!).
04:28:49 -!- zak007 has joined.
04:29:28 -!- Frooxius has quit (Ping timeout: 245 seconds).
04:44:28 -!- Frooxius has joined.
04:46:49 -!- zak007 has left.
04:48:19 -!- DCliche has joined.
04:51:28 -!- Klisz has quit (Ping timeout: 252 seconds).
04:53:58 -!- clog has quit (Ping timeout: 248 seconds).
04:56:38 -!- Nisstyre has quit (Quit: Leaving).
05:23:50 -!- Frooxius_ has joined.
05:25:37 -!- Frooxius has quit (Ping timeout: 255 seconds).
05:25:47 -!- Frooxius_ has changed nick to Frooxius.
05:31:30 -!- Frooxius has quit (Read error: Connection reset by peer).
05:34:33 <Sgeo> kallisti, update
05:37:49 -!- Frooxius has joined.
05:40:50 -!- clog has joined.
05:51:06 <kallisti> oh cool
05:51:12 <kallisti> I didn't realize the negation of a biconditional is an xor
05:51:20 <kallisti> but that's pretty easy to see now.
05:56:44 <ion> Hehe, just a few hours ago i had a facepalmy moment when wondering whether Haskell’s Data.Bool doesn’t have a xor/nxor and then immediately realizing nxor’s (==).
06:03:25 -!- pikhq has joined.
06:03:25 -!- pikhq_ has quit (Quit: Reconnecting).
06:11:21 -!- DCliche has quit (Ping timeout: 240 seconds).
06:17:36 <kallisti> wait what how do I write a truth table for a quantified statement
06:17:39 <kallisti> over the real numbers....
06:17:59 <kallisti> oh
06:18:05 <kallisti> I misread truth VALUE as truth TABLE
06:18:08 <kallisti> I was like "...whut?"
06:32:03 * kallisti invents an esolang that RUNS FASTER THAN ASSEMBLY.
06:32:48 <kallisti> this may seem like a nonsensical statement, but that's because you're stuck in your <insert negatively projected paradigm> and haven't considered that you could think of it in terms of <insert positively project paradigm>
06:33:30 <Sgeo> Don't know that I will but until I can find me. A girl who'll stay and won't play games behind me. This is a weird song. To be my happy song. The lyrics don't fit me. Or why I'm happy.
06:34:46 <kallisti> I...
06:35:41 <Sgeo> Although the lyrics aren't in opposition to why I'm happy.
06:35:46 <Sgeo> They're just irrelevant.
06:47:55 -!- augur_ has joined.
06:50:13 -!- augur has quit (Ping timeout: 240 seconds).
06:52:14 -!- myndzi\ has quit (Ping timeout: 252 seconds).
06:57:18 <fizzie> kallisti: I think the "perfect play" term generalizes to imperfect information games with outcome -> expected value of outcome, but it's of course a matter of definition. (Some might argue that it's not exactly "perfect" when you could've done better in some particular instance, though.)
07:01:40 <kallisti> fizzie: right.
07:01:49 <kallisti> I suppose "perfect play" is more like "most optimal play" in that sense
07:07:25 <itidus21> but, given 2 finite players, and sufficiently complex game, each player can specialize at a different strategy
07:08:09 <itidus21> this is probably seen in the case of something like jousting
07:08:23 <itidus21> where a players strategy is directly manifested as a program
07:10:16 <kallisti> that's not really important to the defintion in imperfect information games though.
07:10:50 <fizzie> I guess if you start haggling over the real-world meaning of the word "perfect", you might also complain that even in games of perfect information, you can do better than the "perfect play" against a non-optimally playing opponent.
07:11:13 <kallisti> ah yes
07:11:24 <kallisti> unless it's something like tic-tac-toe
07:11:29 <kallisti> where the perfect play is always "perfect"
07:12:03 <kallisti> but something more complex could lead to a faster or more generally "better" victory than the perfect play.
07:14:25 <Sgeo> I should start playing Go again
07:14:51 <fizzie> Even in tic-tac-toe you could have an opponent with a strategy which forces a tie always, except when you do something "suboptimal" in which case he lets you win.
07:24:07 <itidus21> the way i'm imagining this is, firstly equal perfect play [____ player 1____|____player 2____]
07:24:38 <itidus21> then if one is suboptimal the other one "gains ground" [_ player 1__|______player 2_______]
07:25:16 <itidus21> [_ p1__|__________player 2__________]
07:26:47 <itidus21> in an actual battle to the death, say, you couldn't really win much more efficiently than the opponent commiting suicide as soon as the battle begins
07:27:17 <itidus21> but my math skill is not enough to really grasp the abstract concepts
07:27:38 <kallisti> it's probably more that you haven't actually read anything about it.
07:27:42 <kallisti> than your skillz.
07:27:48 <itidus21> oh
07:27:53 <kallisti> at least, that's why I don't know anything about it. :P
07:32:19 * kallisti doesn't really understand the distinction between characterization and definition between two mathematical theorems.
07:37:00 <itidus21> in other words what i'm saying is that given an identical time and space it will never be possible to have a general solution as optimized as well as a specific solution
07:37:26 <itidus21> unless your time and space has good neighbours
07:38:43 <itidus21> so what i am really talking about here is the complexity of describing a perfect play :P
07:40:14 <itidus21> the Kolmogorov complexity of a perfect play
07:41:01 <itidus21> after all, you must all admit that it is easier to describe the worst-case play of a game than to describe the perfect play
07:42:04 <itidus21> the worst case play might be something like "select a move at random(or pseudo random) from available moves"
07:59:47 <fizzie> The Kolmogorov complexity of perfect play is not very high for many games, either. For something like chess, you get a bound from: "The value of a game state is: if game is finished, 1 if you won, 0 if it's a draw, -1 if you lost; if not, it's the maximum of the negated values of the states after all possible moves. Select the legal move which gives the state with the highest value."
08:17:58 <itidus21> fizzie: for one perfect play perhaps not, but for someone to have a description of all perfect plays
08:29:28 <itidus21> i am interested in time&space constrained strategies for games as they emphasise the value of specialized solutions over general solutions
08:34:13 <itidus21> i can imagine a brainfuck program could be devised which took inputs like e7-e5,f7-f5, and responded with output of the same kind
08:34:18 <itidus21> which could actually play chess
08:34:49 <itidus21> wouldn't want to code it though
08:45:05 -!- _Slereah has joined.
08:46:57 -!- Slereah has quit (Ping timeout: 276 seconds).
09:07:22 <kallisti> I can imagine a brainfuck program that solves the halting problem.
09:11:33 <fizzie> ^bf +++++++[>+++++++<-]>.! do you halt or not?
09:11:33 <fungot> 1
09:11:42 <fizzie> Okay, it's perhaps not a very general solution.
09:13:25 <kallisti> fizzie: unless you can prove that is the only possible program
09:13:38 <kallisti> that would be an interesting vector of research.
09:37:56 -!- jix has quit (Ping timeout: 245 seconds).
09:38:36 -!- jix has joined.
09:50:59 -!- ais523 has joined.
10:06:06 -!- GreaseMonkey has quit (Quit: The Other Game).
10:37:27 -!- aloril has quit (Ping timeout: 244 seconds).
10:49:44 -!- aloril has joined.
10:51:07 -!- ais523 has quit (Read error: Operation timed out).
10:57:26 -!- oerjan has joined.
11:07:36 <oerjan> <itidus21> if i was going to change my id i would certainly use one of those words but then noone would know who i was <-- except I *MWAHAHAHA*
11:07:59 <oerjan> and others capable of using /whois.
11:09:28 <oerjan> 04:06:09: <kallisti> is perfect play still possible in a game with imperfect information?
11:09:28 <oerjan> 04:06:31: <kallisti> if so, wouldn't it simply be a lucky guess?
11:09:30 <oerjan> see "mixed strategies"
11:10:00 <oerjan> (for rps it's simply choosing randomly, though)
11:12:44 <itidus21> depends
11:13:00 <itidus21> i looked it up once
11:13:26 <oerjan> rps = rock/paper/scissors
11:13:33 <itidus21> in real life professional rps games, the gestures aren't completely unique
11:13:58 <oerjan> well against fallible humans, you can do better than random.
11:14:14 <oerjan> but against someone else who chooses entirely randomly, you cannot.
11:14:22 <itidus21> i think the site i looked at was something like rpscoach.com
11:15:19 <oerjan> oh and in a tournament random play might lose overall because other strategies do better against humans
11:15:54 <itidus21> once i made a rps game stylized after street fighter
11:15:58 <oerjan> (more than 2 player tournament, that is)
11:16:32 <itidus21> on the micro level, it was just normal rps
11:16:48 <itidus21> but on the macro level, points were scored for specific sequences of r,p,s
11:17:06 <itidus21> and losing a round meant a sequence failed
11:18:54 <oerjan> reminds me of mediocrity
11:19:10 <oerjan> where winning at one level means losing at the next
11:19:46 <itidus21> the sequecnes i came up with were quite clever
11:19:54 <itidus21> dunno if i kept the slip of paper
11:20:31 <itidus21> that hard disk died.. i must say HDD reliability is up these days
11:21:01 <oerjan> winning at rrrrrrrr would probably take a while
11:21:38 <itidus21> it was obvious for me when doing it to say, rrr is a sequence, likewise for ppp and sss
11:28:03 <fizzie> oerjan: The game "Portal 2" has these "gestures" you can do in the co-op mode; one of them is a RPS sequence; it's completely automatic, you don't get to choose the object. There's an achievement for three consecutive wins. I was wondering whether the gesture itself is actually random, or whether it prefers streaks, since in our N=8 test it generated the sequence 01111222 (where 0 is draw, 1 is win for player 1, and 2 is win for player 2), earning us both
11:28:58 <oerjan> "earning us both"
11:29:52 <fizzie> that achievement.
11:33:37 -!- monqy has quit (Quit: hello).
11:35:01 <oerjan> "Most religions won't let me preach. Though that's because I'm female, not because I'm a genetically engineered talking wolf."
11:35:33 <_Slereah> lolwat
11:35:38 <fizzie> Sounds Freefally.
11:35:45 <oerjan> correct.
11:55:10 <oerjan> "I just hope this doesn't become another SRoMG mini-meme with multiple sci-fi and fantasy fandoms replacing the flag with their own favoured fictional factions."
11:55:23 <oerjan> reverse psychology, anyone?
12:02:29 -!- TeruFSX_ has quit (Quit: No Ping reply in 180 seconds.).
12:02:51 -!- TeruFSX has joined.
12:34:11 -!- cheater has quit (Ping timeout: 245 seconds).
12:54:29 -!- FireFly has quit (Excess Flood).
12:55:53 -!- ais523 has joined.
13:00:35 -!- augur_ has quit (Remote host closed the connection).
13:01:03 -!- augur has joined.
13:05:25 -!- augur has quit (Ping timeout: 252 seconds).
13:30:18 -!- augur has joined.
13:39:08 -!- Phantom_Hoover has joined.
13:50:41 -!- sebbu has quit (Ping timeout: 240 seconds).
13:57:03 -!- sebbu has joined.
13:57:04 -!- sebbu has quit (Changing host).
13:57:04 -!- sebbu has joined.
14:01:00 -!- oerjan has quit (Quit: leaving).
14:04:55 -!- FireFly has quit (Excess Flood).
15:06:02 -!- azaq23 has joined.
15:27:49 -!- TeruFSX_ has joined.
15:34:36 -!- oklofok has quit (*.net *.split).
15:34:37 -!- Gregor has quit (*.net *.split).
15:34:37 -!- lambdabot has quit (*.net *.split).
15:34:37 -!- SimonRC_ has quit (*.net *.split).
15:34:37 -!- FireFly has quit (*.net *.split).
15:34:38 -!- augur has quit (*.net *.split).
15:34:39 -!- clog has quit (*.net *.split).
15:34:41 -!- quintopia has quit (*.net *.split).
15:34:42 -!- TeruFSX has quit (*.net *.split).
15:34:42 -!- aloril has quit (*.net *.split).
15:34:43 -!- itidus21 has quit (*.net *.split).
15:34:44 -!- Systemzwang has quit (*.net *.split).
15:34:45 -!- mtve has quit (*.net *.split).
15:34:45 -!- azaq23 has quit (*.net *.split).
15:34:47 -!- olsner has quit (*.net *.split).
15:34:48 -!- lifthrasiir has quit (*.net *.split).
15:40:32 -!- Systemzwang has joined.
15:41:03 <kallisti> hi
15:41:22 <Phantom_Hoover> Of all the sides of the netsplit to be caught in...
15:44:37 -!- oklofok has joined.
15:49:15 -!- Gregor has joined.
15:53:26 -!- augur has joined.
15:55:13 -!- clog has joined.
15:55:13 -!- quintopia has joined.
15:56:00 -!- aloril has joined.
15:56:00 -!- azaq23 has joined.
15:56:00 -!- olsner has joined.
15:56:00 -!- lifthrasiir has joined.
16:06:35 -!- ?unknown? has set channel mode: +t.
16:06:35 -!- SimonRC has joined.
16:15:35 -!- kallisti has quit (Quit: Reconnecting).
16:15:49 -!- kallisti has joined.
16:15:50 -!- kallisti has quit (Changing host).
16:15:50 -!- kallisti has joined.
16:26:57 -!- augur has quit (Remote host closed the connection).
17:01:37 -!- azaq23 has quit (Quit: Leaving.).
17:09:17 -!- Ngevd has joined.
17:10:10 <Ngevd> Hello
17:10:14 <Ngevd> I enjoyed the most recent xkcd
17:10:30 <Ngevd> Of course, I enjoyed the most recent, eg., Girl Genius much more
17:10:54 <Ngevd> But an enjoyable xkcd is an exception and thus more notable
17:15:04 <Gregor> ... is there a single aspect to this comic that's even remotely amusing?
17:15:11 <Gregor> It's bad even by XKCD's standards.
17:15:30 <Gregor> (Dear future logreaders: It is to http://xkcd.com/1008/ that we refer)
17:15:50 <ais523> it's, err, about average for xkcd
17:15:53 <_Slereah> Fuck the logreaders
17:16:00 <kallisti> ...I feel like I should probably be getting how to prove this faster than I am...
17:16:04 <Ngevd> Clearly enjoyability is subjective; I enjoyed it for its subversion of a lame insult
17:16:09 <kallisti> since it's under the section "trivial and vacuous proofs"
17:16:16 <ais523> OK, 1007 made me laugh
17:16:21 <kallisti> let x be a real number. prove that if x^3 - 5x - 1 is greater than or equal to 0, then (x-1)(x-3) is greater than or equal to -2
17:16:33 <kallisti> ....is this like, obvious at first glance?
17:16:36 <kallisti> because I'm not seeing it. :P
17:17:03 <Ngevd> Try expanding (x-1)(x-3)+2?
17:17:14 <kallisti> ah yes
17:17:19 <kallisti> I was working on the implication side.
17:17:30 <kallisti> which seemed like the right way to go.
17:18:51 <kallisti> I don't know what that gets me though. :P
17:19:26 <kallisti> ah I see.
17:19:36 <kallisti> I can use x^2 >= 0
17:20:45 <kallisti> no wait...
17:20:47 <kallisti> uuuugh
17:21:30 <kallisti> oh hm
17:25:47 -!- augur has joined.
17:33:14 -!- kmc has quit (Quit: Leaving).
17:40:42 -!- Ngevd has quit (Read error: Connection reset by peer).
17:44:29 -!- mtve has joined.
17:51:26 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
17:54:56 -!- Madoka-Kaname has quit (Ping timeout: 245 seconds).
18:58:33 <kallisti> ...I had to relocate my lost knowlege of polynomial inequalities apparently
18:58:52 <kallisti> Observe that when (x-1)(x-3) = 0, x = 1 and x = 3. Given that (0-1)(0-3) = 3 >= 2, and (2-1)(2-3) = -1 >= -2, and (4-1)(4-3) = 3 >= 2; it follows that for all x in the set of real numbers, (x-1)(x-3) >= -1
18:59:00 <kallisti> I hope that's enough. :P
18:59:13 <kallisti> probably missing something really simple though. as the next section is much easier.
19:26:23 -!- kmc has joined.
19:49:39 -!- GreaseMonkey has joined.
19:49:39 -!- GreaseMonkey has quit (Changing host).
19:49:39 -!- GreaseMonkey has joined.
20:11:36 -!- Phantom_Hoover has joined.
20:22:27 <kallisti> a "monadic" case statement would be nice.
20:26:08 -!- oerjan has joined.
20:26:22 <Deewiant> Does C11 guarantee that '\n' > 0?
20:42:01 -!- monqy has joined.
20:46:50 <kmc> kallisti, how would it work?
20:47:16 <kallisti> I see it translating to essentially a bind to a lambda that contains the case statement
20:47:18 <kmc> mcase x of alts ≡ do { y <- x; case y of alts } --- like so?
20:47:24 <kallisti> yes
20:47:33 <kmc> yeah
20:47:34 <kmc> Habit has that
20:47:46 <kallisti> I would think you could probably integrate it into the do notation somehow.
20:47:53 <kallisti> instead of using some weird name like mcase
20:48:38 <kmc> maybe
20:48:56 <kallisti> it would be easier if it were x -> y
20:49:02 <kallisti> or something
20:49:19 <kallisti> x -> case blah of ...
20:49:23 <kallisti> that's kind of weird though
20:49:25 <oerjan> the frequenly suggested lambdacase extension would do it (one proposed syntax) like x >>= case of alts
20:49:51 <oerjan> *tly
20:50:48 <oerjan> i.e. case of with no expression makes a function
20:51:49 <kallisti> that's not too bad.
20:52:07 <oerjan> and has possible uses besides do blocks
20:52:13 <kallisti> however it kind of makes >>= not just an operator anymore
20:52:20 <kallisti> oh
20:52:21 <kallisti> wait
20:52:22 <kallisti> nevermind
20:52:26 <kallisti> I misread.
20:52:39 <kallisti> yes that would be good
20:52:39 <oerjan> yeah the x >>= part is not special
20:52:45 <kmc> http://hackage.haskell.org/trac/ghc/ticket/4359 has a ghc patch for lambda-case
20:52:54 <kmc> and also a long discussion of the syntactic ramifications
20:53:08 <kallisti> need moar record-syntax-currying
20:54:31 <oerjan> iirc lambda-case discussions tend to devolve into whether it should be merged with actual lambdas instead, and then syntax options become too damn many
20:55:06 <kmc> yeah, i haven't actually read the discussions, so i don't know if it's fruitful or just wadler's law wanking
20:55:18 <kallisti> what would be wrong with "actual lambda case"
20:56:22 <kallisti> I like how wadler's law provides a convenient precedent to ignore improvements to the language syntax.
20:56:33 <oerjan> well one thing is that pattern syntax works slightly different in situations where multiple arguments are allowed
20:57:03 <kallisti> I think you could just require an explicit \ between each case
20:57:07 <kmc> wadler's law doesn't say syntax is unimportant
20:57:17 <oerjan> which means case and \ don't actually match completely in how patterns are written
20:57:18 <kallisti> not explicitly no.
20:57:35 <kallisti> oerjan: um, so? :P
20:57:42 <kallisti> it matches function patterns
20:57:47 <kallisti> which makes sense since lambdas are functions.
20:57:50 <kmc> it says syntax is discussed disproportionately much for its importance
20:58:00 <kmc> really it just says syntax is discussed a lot
20:58:03 <kallisti> yes
20:59:21 <kallisti> I think this is probably because the semantics of Haskell are fairly solid
20:59:28 <kallisti> at this point.
21:00:00 <kallisti> most of the language is just syntax over very simple semantics in the first place.
21:00:13 <kallisti> so there's a lot to discuss.
21:01:14 <kmc> i disagree with every part of that
21:02:02 <kmc> the semantics of Haskell are not that simple, and since we're talking about language extensions, they get even less simple
21:03:16 <kmc> and Wadler came up with his law in 1996, when the semantics of Haskell were far from solid
21:03:23 <kmc> and I don't think the law is particular to Haskell
21:03:26 <kallisti> right
21:03:32 <kmc> it's an instance of http://en.wikipedia.org/wiki/Parkinson's_Law_of_Triviality
21:03:41 <kmc> it's easy to have an opinion about syntax
21:03:50 <kmc> it's something concrete that affects you in a clear way
21:04:14 <kmc> and there aren't many objective right answers
21:04:57 <kmc> in semantics and type theory there is tons of background and many non-trivial theorems, and the consequences of any choice are far from obvious
21:05:54 <kmc> recent GHC extensions seem to focus more on crazy type tricks than on concrete syntax
21:11:29 <kmc> const int main[] = { 14776, 3942977280, 247 };
21:15:43 -!- Ngevd has joined.
21:17:11 -!- Ngevd has changed nick to Taneb|Hovercraft.
21:17:16 <Taneb|Hovercraft> Poor connection
21:18:24 -!- Phantom_Hoover has quit (Quit: Leaving).
21:18:35 -!- Phantom_Hoover has joined.
21:19:17 <Taneb|Hovercraft> Also 2007 video game
21:21:02 -!- Nisstyre has joined.
21:23:55 <Phantom_Hoover> 2007 was a good video game.
21:34:24 <kmc> is that the sequel to 1942?
21:35:21 <kallisti> actually instead of having a function that catches errors and returns a Maybe it would be better to generalize to MonadPlus
21:35:52 <kallisti> so you can take absolutely any partial function and lift it into a pure result with mzero failure.
21:39:39 -!- Taneb|Hovercraft has quit (Read error: Connection reset by peer).
21:42:09 -!- augur has quit (Remote host closed the connection).
21:42:22 -!- Ngevd has joined.
21:42:54 <Ngevd> In other news, I've started yet another miserable start to a family tree program in Haskell
21:43:34 <Ngevd> Also, /nick Taneb|Hovercraft
21:43:38 <Ngevd> Wait
21:43:46 <Ngevd> That needs to be at the beginning of a line
21:43:53 <Ngevd> I'm not sure if I'm fit for IRC
21:44:00 -!- Ngevd has changed nick to Taneb|Hovercraft.
21:46:35 <oerjan> kallisti: btw do you know that Data.Map used to contain functions generalized to MonadPlus but they decided it was overkill and restricted it to Maybe
21:47:08 <Taneb|Hovercraft> Should addPerson be Tree -> Person -> Tree or Person -> Tree -> Tree?
21:47:17 <oerjan> @hoogle Maybe a -> m a
21:47:30 <oerjan> AAAAAAAAAAAAAAAAAA no lambdabot
21:48:03 <kallisti> oerjan: wat
21:48:06 <kallisti> I am sad. :(
21:49:56 <Taneb|Hovercraft> Google+ has just recommended I add Elliott Hird...
21:49:59 <kallisti> Taneb|Hovercraft: do you expect people to add multiple persons to one tree, or one person to many trees?
21:50:15 <kallisti> and by "people" I mean "you" probably.
21:50:16 <Taneb|Hovercraft> Hmm...
21:50:17 <Taneb|Hovercraft> The former
21:50:46 <kallisti> of course there can be a benefit to having a clear order of arguments instead of ordering for best curryage.
21:50:53 <oerjan> well there's also the question of whether you would add Persons with foldl' or foldr
21:51:19 <Taneb|Hovercraft> The Tree is an IntMap
21:51:27 <kallisti> intmap has folds.
21:51:37 <oerjan> i mean if you had a list of Persons to add
21:51:41 <Taneb|Hovercraft> Hmm
21:51:47 <kallisti> oh yes
21:51:53 <kallisti> your initial parameter would be the tree
21:51:56 <kallisti> and the list would be a list of people to add
21:51:58 <kallisti> in that case.
21:52:07 <Taneb|Hovercraft> I think the normal thing would be the individual person
21:52:11 <kallisti> chances are it's not a big deal.
21:52:31 <kallisti> I would go with Person -> Tree -> Tree
21:52:38 <kallisti> as that would match the fold type in that situation
21:52:43 <kallisti> also it would work well with map
21:52:48 <kallisti> also it reads pretty well
21:53:06 <kallisti> "addperson <person> to <tree>"
21:53:18 <oerjan> actually i think if you use foldl' it would be the other way around
21:53:24 <kallisti> :t foldl'
21:53:27 <kallisti> ...
21:54:00 <kallisti> foldl' doesn't exist according to ghci :P
21:54:03 <Taneb|Hovercraft> (a -> b -> a) -> a -> [b] -> a
21:54:06 <kallisti> yes
21:54:07 <Taneb|Hovercraft> It's in Data.List
21:54:08 <oerjan> kallisti: needs Data.List
21:54:52 <kallisti> I forgot foldl flips the arguments.
21:56:10 <Taneb|Hovercraft> At the moment my program has the line
21:56:11 <Taneb|Hovercraft> " where uf = uf' . uf'' . uf'''"
21:56:17 <kallisti> sounds good
21:56:26 <kallisti> s/uf/_/
21:56:29 <kallisti> much better.
21:57:11 <kallisti> oerjan: did I mention that I accidentally invented ReaderT
21:57:14 <oerjan> yes
21:57:15 <kallisti> with my portal chess code.
21:57:17 <kallisti> oh...
21:57:19 <kallisti> yes okay.,
21:57:21 <kallisti> all is well.
21:57:27 <oerjan> well i saw it in the logs, anyway
22:00:36 -!- Taneb|Hovercraft has quit (Read error: Connection reset by peer).
22:00:42 -!- Ngevd has joined.
22:01:41 <Ngevd> Goodnight
22:01:44 -!- Ngevd has quit (Client Quit).
22:10:10 -!- pir^2 has joined.
22:15:34 -!- Vorpal has quit (Ping timeout: 276 seconds).
22:19:44 -!- kmc has quit (Quit: Leaving).
22:39:09 -!- kmc has joined.
22:43:22 <ais523> hmm, someone on a quiz show just asked "what's the capital of Finland" and I instantly thought "oklopol"
22:43:26 <ais523> is something wrong with me?
22:44:16 <oerjan> yes.
22:46:17 <fizzie> He's the "capital of Finland" in the "capital -- (wealth in the form of money or property owned by a person or business and human resources of economic value)" sense of the word.
22:46:34 <oerjan> `? finland
22:46:47 <HackEgo> Finland is a European country. There are two people in Finland, and at least five of them are in this channel. Corun drives the bus.
23:07:03 -!- Madoka-Kaname has joined.
23:07:04 -!- Madoka-Kaname has quit (Changing host).
23:07:04 -!- Madoka-Kaname has joined.
23:07:35 <oerjan> when one entry is not enough
23:08:04 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:25:26 -!- Klisz has joined.
23:47:08 -!- mtve has quit (*.net *.split).
23:47:08 -!- SimonRC has quit (*.net *.split).
23:58:54 -!- SimonRC has joined.
2012-01-26
00:01:20 -!- calamari has joined.
00:07:13 -!- augur has joined.
00:31:12 -!- cheater has joined.
00:32:44 -!- NihilistDandy has joined.
00:39:03 -!- lambdabot has joined.
00:39:19 <oerjan> yay
00:39:25 <oerjan> @hoogle Maybe a -> m a
00:39:25 <lambdabot> Data.Monoid First :: Maybe a -> First a
00:39:25 <lambdabot> Data.Monoid Last :: Maybe a -> Last a
00:39:27 <lambdabot> Data.Maybe maybeToList :: Maybe a -> [a]
00:39:38 <oerjan> @hoogle+
00:39:39 <lambdabot> Data.Maybe fromJust :: Maybe a -> a
00:39:39 <lambdabot> Data.Generics.Aliases orElse :: Maybe a -> Maybe a -> Maybe a
00:39:39 <lambdabot> Data.Maybe fromMaybe :: a -> Maybe a -> a
00:39:54 <oerjan> @hoogle+
00:39:55 <lambdabot> Data.Generics.Aliases unGM :: GenericM' m -> forall a. Data a => a -> m a
00:39:55 <lambdabot> Data.Foldable toList :: Foldable t => t a -> [a]
00:39:55 <lambdabot> Data.Maybe catMaybes :: [Maybe a] -> [a]
00:40:51 <ion> What are you looking for?
00:40:51 <oerjan> @hoogle (Foldable t, MonadPlus m) => t a -> m a
00:40:52 <lambdabot> Data.Foldable toList :: Foldable t => t a -> [a]
00:40:52 <lambdabot> Data.Foldable find :: Foldable t => (a -> Bool) -> t a -> Maybe a
00:40:52 <lambdabot> Data.Foldable foldl1 :: Foldable t => (a -> a -> a) -> t a -> a
00:41:14 <NihilistDandy> Ha. Hoogle+
00:41:20 <oerjan> @hoogle+
00:41:21 <lambdabot> Data.Foldable foldr1 :: Foldable t => (a -> a -> a) -> t a -> a
00:41:21 <lambdabot> Data.Foldable maximumBy :: Foldable t => (a -> a -> Ordering) -> t a -> a
00:41:21 <lambdabot> Data.Foldable minimumBy :: Foldable t => (a -> a -> Ordering) -> t a -> a
00:42:17 <oerjan> ion: maybe mzero return, essentially
00:42:18 <oerjan> except with a shorter name
00:44:58 -!- calamari has quit (Quit: Leaving).
00:45:41 -!- augur has quit (Remote host closed the connection).
01:05:29 -!- oerjan has quit (Quit: Goof night).
01:07:16 -!- ais523 has quit (Remote host closed the connection).
01:10:37 -!- augur has joined.
01:13:49 -!- augur has quit (Remote host closed the connection).
01:16:37 -!- augur has joined.
01:16:42 -!- augur has quit (Remote host closed the connection).
01:18:48 -!- pir^2 has quit (Quit: ∅).
01:23:33 -!- DCliche has joined.
01:24:22 -!- augur has joined.
01:25:56 -!- augur has quit (Remote host closed the connection).
01:27:04 -!- Klisz has quit (Ping timeout: 248 seconds).
01:29:03 <Sgeo> kallisti, arpboat
01:30:34 <kallisti> thunklankles
01:42:10 -!- augur has joined.
01:46:38 -!- augur has quit (Ping timeout: 245 seconds).
01:57:26 -!- mtve has joined.
02:03:58 -!- NihilistDandy has quit (Quit: Textual IRC Client: http://www.textualapp.com/).
02:09:54 -!- pikhq_ has joined.
02:10:11 -!- pikhq has quit (Ping timeout: 248 seconds).
02:12:45 -!- augur has joined.
02:13:45 -!- augur has quit (Remote host closed the connection).
02:17:33 -!- DCliche has quit (Quit: SLEEP, GLORIOUS SLEEP).
02:19:35 -!- pikhq_ has quit (Ping timeout: 252 seconds).
02:19:36 -!- pikhq has joined.
02:27:04 -!- Klisz has joined.
02:39:03 <kallisti> Gregor: what do you use to draw graphics with websplat?
02:39:14 -!- Klisz has quit (Ping timeout: 240 seconds).
02:42:03 -!- Jafet has joined.
02:50:14 -!- _0x5f375a86 has joined.
03:17:15 -!- azaq23 has joined.
03:17:27 -!- azaq23 has quit (Max SendQ exceeded).
03:17:57 -!- azaq23 has joined.
03:57:15 -!- augur has joined.
03:58:19 -!- augur has quit (Remote host closed the connection).
03:58:44 -!- augur has joined.
05:32:15 <kallisti> perl 6 regex is so good.
05:35:26 <kallisti> it actually builds a tree instead of a flat list...
05:35:29 <kallisti> with capture groups
05:35:41 <kallisti> so you can actually, uh, parse things.
06:06:25 <pikhq> Oh, so Perl 6 *embraces* the TC-ness of Perl regex
06:09:25 <kallisti> kind of
06:09:33 <kallisti> it basically just completely overhauls the syntax
06:09:41 <kallisti> and allows you to split up a regex into... named identifiers
06:09:51 <kallisti> so it's more like actually defining a grammar.
06:10:17 <kallisti> also it has "grammars" which are essentially regex classes, so you can inherit rules from other grammars.
06:12:11 <kallisti> it adds many more options to make it handle case, spaces, and unicode marks better.
06:12:13 <pikhq> The thing is, Perl 5 regex was already capable of parsing things.
06:12:22 <kallisti> yes but not as well I imagine.
06:12:27 <pikhq> Just not sanely.
06:12:34 <kallisti> I meant that now you can actually get a syntax tree
06:12:40 <pikhq> Yes.
06:12:51 <pikhq> Perl 5 regex was perfectly TC. :)
06:13:24 <kallisti> the entire perl 6 gammar is defined as a grammar in perl 6.
06:14:42 <kallisti> this means you can subclass. I imagine if perl 6 uses source filters then you can plug in your overriden grammar at compile-time and redefine the language syntax. but I'm not sure if source filters still exist.
06:15:35 <kallisti> so I think if a) Perl 6 ever solidifes b) it has a decently efficient implementation
06:15:51 <kallisti> then perl will once again be the language of choice for text processing.
06:16:25 <kallisti> it even handles Unicode sanely. you can check string length by bytes, codepoints, or graphemes. There is no "length"
06:18:30 <kallisti> also: implicit lazy evaluation of lists, explicit lazy evaluation of anything else.
06:23:48 <pikhq> Also monads.
06:23:56 <kallisti> oh?
06:23:57 <kallisti> okay.
06:24:07 <pikhq> I seem to recall the Pugs devs getting it snuck in.
06:24:27 <pikhq> (Pugs being an early Perl 6 implementation, in Haskell.)
06:24:50 <pikhq> (it may not even really work anymore; I mean, jeeze, it was written for *Hugs*)
06:30:48 <kallisti> well it would be pretty simple to implement in perl anyway
06:31:02 <kallisti> *Perl 6
06:31:04 -!- azaq23 has quit (Remote host closed the connection).
06:31:10 <pikhq> Also pretty pointless.
06:31:44 <pikhq> A lot of the power of monads in Haskell, IME, is the type discipline preventing you from making certain errors.
06:52:46 <kallisti> yes
06:53:19 <kallisti> another benefit is generality between many methods of computation.
06:54:30 <kallisti> hmmm, what's a project I could apply Bayesian inference to?
06:56:07 <pikhq> Spam filtering.
06:56:11 <pikhq> </uncreative>
06:56:39 <kallisti> does a bayesian filter use a bayesian inference?
06:56:43 <kallisti> I guess that would, uh, make sense.
06:56:56 <pikhq> Yes, that's all they do.
06:57:05 <pikhq> Fairly naive implementation, but nevertheless.
06:57:09 <kallisti> but I've learned not to associative things together because they're named after the same person.
06:58:17 <pikhq> A Bayesian filter bsically just classes a message as spam or not spam by performing Bayesian inference on each unique word in the message, eventually getting you the probability the message is spam given the words it contains.'
06:58:31 <kallisti> I answered a request for a programming job recently that wanted to create a program that assists diagnosis via "inductive reasoning" with "prolog"
06:58:47 <kallisti> to what extent either of those things will be used depends on what happens.
06:58:48 <pikhq> Generally, the initial prior is 0.5, instead of the prior actually matching to real-world spam rates, 0.8.
06:59:02 <kallisti> ah
06:59:07 <kallisti> well that's safer, at least.
06:59:17 <kallisti> better to have /some/ spam than lose important messages.
06:59:49 <pikhq> You could get the same effect by simply setting your threshold high enough.
07:00:01 <kallisti> ah true
07:00:01 <pikhq> Say, consider it spam if there's a 0.99 probability of being spam.
07:00:08 <pikhq> Oddly enough, this technique was first devised by Paul Graham. Yes, that Paul Graham.
07:00:08 <kallisti> that's a good threshold
07:00:15 <kallisti> hm a more sophisticated method could analyze grams in the message.
07:00:39 <pikhq> Yeah, that's done by a few of them.
07:01:02 <pikhq> Not really *necessary*, though. Even the naive classification works rather well, particularly if you feed it headers.
07:04:08 <kallisti> hmm, a hybrid approach of sorts could be good. instead of analyzing the probability of a gram triggering a spam message you could look at each individual word but then scale it upwards when it appears in frequently occuring grams.
07:04:13 <kallisti> not sure what the exact math would look like.
07:04:48 <kallisti> well, I doubt that's necessary either
07:05:01 <kallisti> but I could see a gram based filter missing things a word based filter might catch.
07:07:02 <pikhq> Who says you need to only look at grams?
07:07:11 <kallisti> no one.
07:07:22 <pikhq> You can just keep throwing information at Bayes until it sticks. :)
07:07:37 <kallisti> I wonder what gmail's bayesian filter does.
07:08:20 <pikhq> The only particularly notable thing I recall hearing about it (there's probably more, but I'm not aware of it) is they OCR images.
07:12:50 <kallisti> I wonder if legitimate businesses in third world countries have difficulty emailing people.
07:13:36 <kallisti> lol one of the subjects is "My second time of writing you" almost as though the spam filter will be like "oh okay, eveything is fine then"
07:14:07 <pikhq> If you're updating on headers, not very likely.
07:14:59 <pikhq> You can get things like P(~spam|FROM: legit_business@thirdworld.com)=0.99999
07:15:00 <pikhq> :)
07:18:12 <kallisti> another good idea would be to compile data on what is not spam and then balance the probability of the bayesian inference with that.
07:19:24 <pikhq> What you usually do is train on a *email* corpus.
07:19:44 <pikhq> If you're really clever, constantly update your database on the end-user's personal email corpus.
07:24:07 <Sgeo> kallisti, arpbogot
07:25:44 <pikhq> "Emacs might be the only program in the world that would see a performance improvement from rewriting in CL."
07:25:47 <pikhq> XD
07:49:35 -!- monqy has quit (Quit: hello).
08:02:56 -!- GreaseMonkey has quit (Quit: The Other Game).
08:38:23 -!- Frooxius_ has joined.
08:41:06 -!- Frooxius has quit (Ping timeout: 252 seconds).
08:41:20 -!- Frooxius_ has changed nick to Frooxius.
08:49:12 -!- ais523 has joined.
09:30:58 -!- augur has quit (Ping timeout: 252 seconds).
10:07:20 -!- itidus20 has joined.
11:51:03 -!- oerjan has joined.
12:09:52 <oerjan> <kallisti> I wonder if legitimate businesses in third world countries have difficulty emailing people. <-- http://www.irregularwebcomic.net/comic.php?current=72
12:19:01 -!- cswords__ has quit (Read error: Connection reset by peer).
12:19:49 <ais523> you know how silly Yahoo! Answers can get? What about Microsoft Answers? http://answers.microsoft.com/en-us/windows/forum/windows_7-windows_programs/windows-calculator-gives-wrong-answer/c94c2aa5-03a0-42f7-82ee-899800355613
12:20:13 <ais523> the accepted answer is only vaguely useful; the first non-accepted answer is really ridiculously bad
12:56:15 <oerjan> why is the channel +t
12:57:04 -!- ChanServ has set channel mode: +o ais523.
12:57:11 -!- ais523 has set channel mode: -t.
12:57:17 -!- ais523 has set channel mode: -o ais523.
12:57:19 <ais523> it isn't
12:57:39 <oerjan> 16:06:35: -!- kornbluth.freenode.net changed the modes of #esoteric: +t
12:58:09 <oerjan> it was after a big netsplit, i guess something went awry
12:58:13 -!- oerjan has set topic: Now open for Vampires | Take a trip to see our Castles | Get your esoblood here! | New edition of glorious optators' biography to use crimson ink | Based on the power of immortality! | Why is the spotted marsh elliott never seen in daylight? | http://codu.org/logs/_esoteric/.
12:58:37 <ais523> bleh, "spotted marsh elliott spotted in other marsh" was both informative and hilarious
12:58:57 <oerjan> O KAY
12:59:35 -!- oerjan has set topic: Now open for Vampires | Take a trip to see our Castles | Get your esoblood here! | New edition of glorious optators' biography to use crimson ink | Based on the power of immortality! | Spotted marsh elliott spotted in other marsh | http://codu.org/logs/_esoteric/.
13:00:38 <oerjan> (_very_ slightly inspired by current iwc poll)
13:03:31 <itidus20> not very _slightly_
13:03:51 <oerjan> _those_ _may_ be _synonyms_
13:38:28 -!- Sgeo has quit (Ping timeout: 240 seconds).
13:38:59 -!- Sgeo has joined.
14:28:38 -!- derdon has joined.
14:49:38 -!- ais523 has quit (Ping timeout: 245 seconds).
14:50:51 -!- oerjan has quit (Quit: leaving).
15:16:44 -!- Ngevd has joined.
15:16:57 <Ngevd> Hello
15:26:37 -!- Ngevd has quit (Read error: Connection reset by peer).
15:27:45 -!- Ngevd has joined.
15:32:36 -!- Taneb has joined.
15:35:16 -!- Ngevd has quit (Ping timeout: 252 seconds).
15:36:04 -!- Taneb has quit (Read error: Connection reset by peer).
15:36:25 -!- Taneb has joined.
15:48:26 -!- Taneb has quit (Read error: Connection reset by peer).
15:49:32 -!- Taneb has joined.
15:51:03 -!- azaq23 has joined.
15:51:12 -!- azaq23 has quit (Max SendQ exceeded).
15:51:37 -!- azaq23 has joined.
15:55:54 -!- Taneb has quit (Read error: Connection reset by peer).
16:12:59 -!- derdon_ has joined.
16:16:19 -!- derdon has quit (Ping timeout: 260 seconds).
16:44:24 -!- pikhq_ has joined.
16:44:25 -!- pikhq has quit (Ping timeout: 248 seconds).
16:48:44 -!- Phantom_Hoover has joined.
17:01:55 -!- ais523 has joined.
17:24:03 <fizzie> Funky, one of the C11 additions is a standard _Noreturn keyword (and <stdnoreturn.h> which defines 'noreturn' as that) to do what GCC function attribute ((noreturn)) does.
17:25:20 <fizzie> longjmp, abort, exit, _Exit, quick_exit and thrd_exit have also gotten _Noreturn's in their declarations.
17:25:29 <Gregor> I love the hideously ugly new keywords.
17:25:50 <fizzie> The "ugly + a deuglification header" is kind of what they do.
17:27:20 <ais523> bleh, you know what's bizarre and annoying? GPU scheduler bugs
17:37:59 <oklofok> http://answers.microsoft.com/en-us/windows/forum/windows_7-windows_programs/windows-calculator-gives-wrong-answer/c94c2aa5-03a0-42f7-82ee-899800355613 well this is obviously a joke that everyone's in on
17:41:23 <ais523> quite possibly the thread became troll-dominated after a while
17:44:27 <oklofok> no one even says "you people are retarded" or "troll", i don't get it
18:23:08 -!- ais523_ has joined.
18:23:23 -!- ais523 has quit (Disconnected by services).
18:23:25 -!- ais523_ has changed nick to ais523.
18:23:46 <Phantom_Hoover> Floating-point bug or what?
18:23:46 <lambdabot> Phantom_Hoover: You have 5 new messages. '/msg lambdabot @messages' to read them.
18:26:48 <oklofok> i suppose.
18:27:30 <oklofok> sqrt 4 is rounded 2 in the calculator but when you subtract 2, it's just a very small number.
18:28:49 <ais523> oklofok: the point is that it rounds in the wrong direction
18:29:08 <oklofok> ?
18:29:19 <oklofok> it should round 2 to 1?
18:29:20 <oklofok> or what
18:29:43 <ais523> it should round sqrt(4) to 2 exactly, as it's the closest float to the true sqrt of 4
18:29:50 <ais523> it shouldn't output 2-and-a-bit
18:30:13 <oklofok> for what value of "should"? squares should have exact square roots?
18:30:36 <oklofok> or everything should square root to best floating point approximation possible?
18:31:07 <ais523> oklofok: everything should square root to the nearest floating point to the true value
18:31:13 <ais523> all maths coprocessors can do that nowadays
18:32:02 <oklofok> so the calculator should use the square root operator of the maths coprocessor?
18:32:47 <oklofok> i don't get how that value is any worse than 0
18:33:39 <ais523> oklofok: because it shows that the rounding was done incorrectly
18:33:51 <ais523> 1/3*3-1 not being 0 I'm OK with
18:34:00 <ais523> but, say, 1/4*4-1 not being 0 I wouldn't be OK with
18:34:16 <oklofok> well that's silly
18:34:23 <ais523> because 0.25 can be represented exactly as a float, or a decimal, or pretty much all other reasonable internal representations
18:34:59 -!- _0x5f375a86 has changed nick to pir^2.
18:35:03 <oklofok> so your opinion is it's important that the windows calculator shows that it uses binary internally
18:35:42 <ais523> oklofok: well, maybe not for 0.25
18:35:50 <ais523> but I do think it's important that it can correctly represent integers
18:35:52 <ais523> which sqrt(4) is
18:36:43 <oklofok> soooooo you think squares should have exact square roots? sounds useless.
18:37:00 <ais523> I think all numbers should have maximally accurate square roots
18:37:11 <ais523> and that the maximally accurate representation of 2 should be 2
18:37:43 <oklofok> okay, that i can live with.
18:38:09 <oklofok> i still don't see how you can claim that's a bug with a straight face. of course it's slightly amusing.
18:38:27 <oklofok> actually
18:38:37 <oklofok> i suppose he claimed it with an amused face
18:38:47 <oklofok> no it was :s
18:38:59 <oklofok> still pretty far from straight :D
18:51:45 -!- pir^2 has quit (Quit: bye).
19:01:06 <Gregor> (I am making a conscious choice not to respond to the last line in the obvious way)
19:01:39 <oklofok> why would you respond to someone leaving, they won't see you anyway
19:01:45 <Gregor> ...
19:01:46 <oklofok> erm
19:01:46 <oklofok> it
19:01:47 <Gregor> >_<
19:02:10 <oklofok> you know that looks a bit like this limit set i saw just the other day
19:07:08 -!- augur has joined.
19:14:21 -!- azaq23 has quit (Quit: Leaving.).
19:23:46 -!- monqy has joined.
19:33:43 -!- Frooxius has quit (Quit: ChatZilla 0.9.88-rdmsoft [XULRunner 1.9.0.17/2009122204]).
19:40:53 -!- Frooxius has joined.
19:47:56 <fizzie> oklofok: Also did you hear you're the capital of Finland.
19:48:21 <oklofok> i am?
19:48:32 <fizzie> oklofok: According to ais523, at least.
19:49:21 <ais523> fizzie: no, I immediately realised that the capital of finland wasn't "oklopol" after it was my first thought on the subject
19:49:34 -!- oklofok has changed nick to oklopol.
19:49:35 <ais523> but it's still worrying that it was the first option I considered, rather than, say, Helsinki
19:49:36 <fizzie> oklofok: http://codu.org/logs/log/_esoteric/2012-01-25#224322ais523
19:49:54 <oklopol> yep noticed
19:50:06 <oklopol> i would make a great capital
19:50:24 <fizzie> Also I always just manually type those anchors, I never remember that you can just click on the nickname.
19:58:27 -!- sebbu2 has joined.
19:58:27 -!- sebbu2 has quit (Changing host).
19:58:28 -!- sebbu2 has joined.
20:01:48 -!- sebbu has quit (Ping timeout: 240 seconds).
20:06:15 <Sgeo> ...Google apparently thinks I'm into clothes
20:15:37 -!- FireFly has quit (Changing host).
20:18:30 -!- augur has quit (Remote host closed the connection).
20:23:38 -!- oerjan has joined.
20:27:04 -!- Ngevd has joined.
20:27:26 <Ngevd> Hello!
20:27:47 <ais523> that's a very enthusiastic hello
20:28:04 <Ngevd> I've got Fruit Pastilles
20:28:08 <oklopol> i hate humans
20:28:11 <Ngevd> :)
20:28:20 <oklopol> wish i had fruit pastilles
20:29:30 <fizzie> Fruit pustules.
20:33:20 <oklopol> fruit postulates
20:33:36 <oerjan> <Sgeo> ...Google apparently thinks I'm into clothes <-- i think that's a natural assumption. unless you're like oklopol and go naked all the time.
20:34:10 <fizzie> Fruit apostles.
20:34:22 <Ngevd> I wish I had fruit pastilles
20:34:42 <fizzie> Fruit, past illest.
20:34:44 <oklopol> fur root apostles
20:37:50 <oklopol> fur root pause tools
20:39:25 <ais523> hmm, our latest spambot is trying to persuade us that writing a dream you've had down causes it to become true
20:39:29 <ais523> I'm, umm, not sure I believe it
20:39:35 <Ngevd> fur root paws jewels
20:40:42 <oklopol> four route paw schedules
20:40:54 <fizzie> How do you have a dream down? ...oh, *write down*! Never mind.
20:42:32 <oerjan> writing a dream you've had down the garden path
20:43:32 <Ngevd> The true path to success
20:47:13 <fizzie> Cat Face, he's got a big cat's face, he's got the body of a cat and the face of a cat, and he flies through the air, 'cause he's got a cat face, Cat Face.
20:47:16 <fizzie> Sorry, I'v just got that song stuck in my head, thought writing it down the metaphorical garden path might help.
20:48:05 <oklopol> last night a jumped in the air and got stuck there
20:48:07 <oklopol> couldn't get down
20:48:26 <oklopol> and i had this 5 meter long metal rod and at the other and was a bmx bike
20:48:51 <oklopol> and i tried to turn the rod so that when i eventually landed i'd safely land on the bike (wut) but i couldn't move it
20:53:19 <fizzie> "The scene quickly switches to a small, red map of Norway, with text on the side stating that Norway's population is crab, that it has no tigers or lions, and that its main export is tree. Below this more text declares that "TREE<LIONS==KENYA WINS". It also claims that Norway should be called Snoreway. A new map replaces it shortly afterward,
20:53:25 <fizzie> showing the African continent with certain countries colored in and a protruding Kenya. The 3D Kenya moves up and down with the music as an orange dotted line extending from it shows, according to text at the side, the line to ensure the best coverage if Kenya were to urinate all over Norway physically, as well as metaphorically (however, as noted, this is a rare occurrence)."
20:53:31 <fizzie> I... is this really encyclopedic? I mean, sure, that's what happens, but...
20:55:19 <oerjan> that's a lie. our main export is oil, which as everyone knows is made from dinosaurs, thus we win.
20:55:41 <fizzie> You Snorewegian.
21:02:21 -!- Taneb has joined.
21:02:21 -!- Ngevd has quit (Read error: Connection reset by peer).
21:03:04 -!- Taneb has changed nick to Ngevd.
21:23:00 -!- derdon_ has quit (Remote host closed the connection).
21:23:25 -!- derdon has joined.
21:28:01 -!- derdon has quit (Ping timeout: 252 seconds).
21:31:07 -!- augur has joined.
21:39:50 -!- pikhq has joined.
21:39:56 -!- pikhq_ has quit (Ping timeout: 252 seconds).
22:18:37 -!- yours_truly has joined.
22:19:15 -!- Nisstyre has quit (Ping timeout: 240 seconds).
22:22:18 -!- yours_truly has quit (Client Quit).
22:23:19 -!- Ngevd has quit (Quit: Goodbye).
22:26:38 -!- Nisstyre has joined.
22:30:04 -!- jix has quit (Remote host closed the connection).
22:48:37 -!- jix has joined.
23:14:55 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
23:16:11 -!- ais523 has quit (Remote host closed the connection).
23:20:07 -!- augur has quit (Remote host closed the connection).
23:58:01 -!- oerjan has quit (Quit: Good night).
2012-01-27
00:10:05 -!- Jafet has quit (Quit: Leaving.).
00:14:53 -!- pikhq_ has joined.
00:15:06 -!- pikhq has quit (Ping timeout: 252 seconds).
00:53:21 -!- Frooxius has quit (Read error: Connection reset by peer).
00:53:36 -!- Frooxius has joined.
00:55:02 -!- Jafet has joined.
00:55:07 -!- Frooxius has quit (Read error: Connection reset by peer).
00:55:21 -!- Frooxius has joined.
01:04:12 <Sgeo> Why am I interested in Erlang now?
01:04:43 <kallisti> dunno
01:04:45 <kallisti> it happened to me once
01:04:54 <kallisti> though now I'm taking a sudden interest in perl 6.
01:30:35 -!- myndzi has joined.
01:35:11 -!- sebbu2 has changed nick to sebbu.
01:44:48 -!- yorick has quit (Ping timeout: 252 seconds).
01:58:27 -!- yorick has joined.
02:14:15 -!- zzo38 has joined.
02:24:24 <zzo38> I changed my CatArrow class slightly. Now its methods are arr1, arr2, (*+*), (&|&), and fanout. The minimum definition is (*+*) and fanout.
02:24:25 <lambdabot> zzo38: You have 3 new messages. '/msg lambdabot @messages' to read them.
02:24:31 <zzo38> ?messages
02:24:31 <lambdabot> oerjan said 4d 20h 2m 8s ago: Sounds like you could generalize the monoid for your pure BF implementation, e.g. make a paintfuck implementation with the (Sum Int, Sum Int) monoid :P
02:24:31 <lambdabot> oerjan said 2d 17h 30m 37s ago: There is reallyunsafeptrequality#, but as the name says that's really unsafe
02:24:31 <lambdabot> oerjan said 2d 17h 30m 8s ago: *reallyUnsafePtrEquality#
02:26:39 <zzo38> I know that!
02:33:33 <Sgeo> Presumably, I wouldn't just write a BF interpreter in Erlang, I'd write some sort of BF server? :D
02:42:39 <tswett> http://beta.yle.fi/pressanvaalit_2012/ explain please thank you.
02:47:52 -!- Klisz has joined.
02:50:47 * Sgeo ponders what a BF server would look like
02:53:11 <monqy> bad
02:58:18 <Sgeo> Esolang server
02:59:44 <zzo38> The only one I know of that uses a server is Network Headache, and the server is no longer online
03:05:44 <kallisti> Sgeo: YES
03:05:48 <kallisti> network headache server
03:05:49 <kallisti> do it.
03:06:24 <Sgeo> It's been implemented before
03:06:29 <kallisti> so?
03:06:31 <Sgeo> I guess no reason not to implement it again
03:06:31 <kallisti> make it
03:06:32 <kallisti> do it.
03:06:39 <kallisti> was it an erlang server?
03:06:44 <Sgeo> Python
03:06:51 <kallisti> ...I think we know what needs to be done.
03:08:32 <Sgeo> I still don't thoroughly understand the OTP
03:11:33 <zzo38> I made up a CatArrow for Lens: instance CatArrow Lens (,) where { Lens x *+* Lens y = Lens $ \(a, b) -> store (\(a', b') -> (peek a' $ x a, peek b' $ y b)) (pos $ x a, pos $ y b); fanout = Lens $ \x -> store snd (x, x); };
03:12:10 <zzo38> But it is not Arrow because there is no functor from (->) to Lens
03:12:47 <zzo38> Do you think this instance is correct?
03:32:30 * Sgeo wonders what Erlnomic would be like
03:32:45 <Sgeo> Hardest thing I can think of is making it safely hold onto untrusted code
03:42:07 -!- cswords has joined.
04:06:21 -!- augur has joined.
04:11:52 -!- augur has quit (Remote host closed the connection).
04:16:54 -!- augur has joined.
04:17:37 -!- augur has quit (Remote host closed the connection).
04:18:26 -!- augur has joined.
04:50:13 -!- NihilistDandy has joined.
06:37:44 -!- Sgeo has quit (Read error: Connection reset by peer).
06:39:27 -!- Sgeo has joined.
06:42:24 -!- pikhq has joined.
06:45:04 -!- pikhq_ has quit (Ping timeout: 245 seconds).
07:01:30 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
08:04:32 -!- NihilistDandy has quit (Quit: Textual IRC Client: http://www.textualapp.com/).
08:32:31 -!- Frooxius_ has joined.
08:32:31 -!- Frooxius has quit (Read error: Connection reset by peer).
08:32:34 -!- Frooxius_ has changed nick to Frooxius.
08:56:45 -!- cheater has quit (Ping timeout: 255 seconds).
09:13:48 -!- Jafet has quit (Quit: Leaving.).
09:30:17 -!- Jafet has joined.
09:42:54 -!- cheater has joined.
09:44:32 -!- zzo38 has quit (Remote host closed the connection).
10:13:04 -!- zzo38 has joined.
10:13:34 <zzo38> How can I make robots.txt tell to disallow everything except wget, in which case it is delayed half a second per request, unless the user overrides that option on the wget command-line?
10:19:56 <zzo38> Actually I think I figure out
10:44:57 -!- pikhq_ has joined.
10:45:04 -!- pikhq has quit (Ping timeout: 245 seconds).
10:45:44 <zzo38> wget does not understand Crawl-delay but that is OK; it is in there in case a later version does support it
10:52:59 <Jafet> Heh
10:53:15 <Jafet> So anyone using some other crawler will have to tell it... to impersonate wget.
10:53:46 <shachaf> Jafet: Well, or just to ignore robots.txt
10:55:11 <zzo38> What others are there anyways, that are used manually similar to wget?
11:14:55 -!- oerjan has joined.
11:46:53 -!- Phantom_Hoover has joined.
11:51:57 <Sgeo> curl?
11:52:03 <Sgeo> Phantom_Hi
12:16:04 -!- zzo38 has quit (Remote host closed the connection).
12:33:08 <oerjan> `run echo "A lens is a monoidal natural transformation between higher-order coalgebra functors" >wisdom/lens
12:33:19 <HackEgo> No output.
12:33:26 <oerjan> `? lens
12:33:30 <HackEgo> A lens is a monoidal natural transformation between higher-order coalgebra functors
12:38:26 * Sgeo doesn't know enough to know whether that makes sense or is gibberish
12:39:01 <Phantom_Hoover> I can confirm that it makes sense up to 'coalgebra'.
12:39:02 <oerjan> i _think_ it's actually true, although it's half a quote from haskell weekly news so probably said in jest
12:39:14 <Phantom_Hoover> I don't know what a coalgebra is.
12:39:28 <oerjan> the dual of an algebra, of course!
12:40:12 <oerjan> i don't know precisely what they are, but i think comonads correspond to coalgebras in the way monads correspond to algebras, somehow
12:40:29 <kallisti> what is the category of an algebra?
12:41:04 <oerjan> algebraic structures and algebra homomorphisms is one, at least
12:41:07 <kallisti> because I thought comonad had to do with "dual category" not "dual monad" so it would make sense that coalgebra had a similar relation.
12:41:18 <fizzie> Sgeo: I don't think curl(1) reads robots.txt at all.
12:46:14 * Sgeo is going to write one final piece of Erlang tomorrow than is swearing it off
12:46:35 <Sgeo> Apparently, the hot swapping stuff is very tricky to get right, and if it's avoidable, it's best avoided.
12:47:31 <fizzie> On the other hand, why would you even be doing Erlang if you're not going to be all fancy and hot-swappy?
12:48:01 <Phantom_Hoover> <kallisti> because I thought comonad had to do with "dual category" not "dual monad" so it would make sense that coalgebra had a similar relation.
12:48:14 <Phantom_Hoover> A comonad is a monad in the dual category, i.e. a dual monad.
12:48:42 <Sgeo> fizzie, because I thought it would make hot-swapping easy
12:48:52 <kallisti> Phantom_Hoover: yes
12:49:14 <fizzie> A duel monad is deadly.
12:49:15 <kallisti> Sgeo: yes that's the conclusion I reached about the hot swapping
12:50:09 <kallisti> other reasons to use Erlang: it handles distributed programming almost automatically for you
12:50:15 <Phantom_Hoover> kallisti, you know, you're not fooling anyone when you say 'yes' after something's explained to you.
12:50:28 <kallisti> Phantom_Hoover: correct. there is nothing to be fooled about.
12:51:21 * kallisti will say "yes" in a way that implies something different to Phantom_Hoover next time.
12:51:36 <kallisti> yes~ >^.^<
12:51:37 <kallisti> that's better.
12:52:11 <oerjan> `? yes
12:52:14 <HackEgo> yes? ¯\(°_o)/¯
12:52:21 <kallisti> HackEgo: yes
12:52:37 <oerjan> yes >_<
12:53:23 <kallisti> Phantom_Hoover: I was not confused about the meaning of dual monad, I was more confused about if coalgebra meant "dual algebra" or "the algebra of a dual something-else." does that make things clearer?
12:53:38 <kallisti> I wasn't sure what co- meant in this context.
12:53:54 <Phantom_Hoover> It makes some things clearer, although they were already quite clear.
12:54:32 <oerjan> co- means you turn some arrows around. exactly _which_ arrows, is anyone's guess.
13:00:07 <Phantom_Hoover> I used to be able to work out categoric duals. But then I took an arrow to the knee.
13:00:47 <kallisti> ...........................................................................................................................................................................................................................................................................................................................................................................................................................................
13:02:06 <shachaf> I wasn't sure what - meant in this ntext.
13:02:51 <oerjan> shachaf: what is this about haskell types being useless and stupid?
13:03:28 <shachaf> oerjan: Hmm?
13:03:51 <oerjan> "shachaf: Haskell's type system is the perfect mix of useless and stupid."
13:04:11 <monqy> i agree with kallisti
13:04:20 <monqy> ........................................................................................................................................................................................................................................................................................................................................................................................................................................... inde
13:04:39 <monqy> ed
13:04:41 <Phantom_Hoover> oerjan, quick, monqy and kallisti are spaming
13:04:49 <shachaf> Oh.
13:04:53 <shachaf> That was @remembered out of context.
13:05:01 <shachaf> 19:38:03 <Philippa> tigger: for what it's worth, it's a more than fair question to have :-) Just the sort of thing that needs an even smarter type system than Haskell's, or a less safe one
13:05:47 <shachaf> 19:25:58 <dmwit> tigger: (\[a, b, c, d, e] -> construct a b c d e) <$> replicateA 5 parseByte
13:06:04 <shachaf> People were talking about how using variable-length lists like that was unsafe, and the constraint should be verified in the type system.
13:06:10 <kallisti> Phantom_Hoover: something passive aggressively directed at both you and Phantom_Hoover simultaneously while also commending monqy for his like-minded attitude.
13:06:14 <kallisti> ....
13:06:25 <kallisti> s/Phantom_Hoover/oerjan/
13:07:12 <oerjan> well i have to ban you now, otherwise elliott might think i'm no longer power tripping and come back.
13:07:28 <kallisti> excellent
13:07:42 <kallisti> it's a wonderful circle of passive aggression. so good.
13:08:01 <oerjan> an inward spiral, more like.
13:08:07 <oerjan> JUST LIKE MY LIFE
13:08:14 <shachaf> elliott thinks you're power-tripping?
13:08:15 <kallisti> -_;;;
13:08:16 <shachaf> Why?
13:08:32 <kallisti> because he got +q'd for spamming the channel with pages of the word "really"
13:08:37 <oerjan> shachaf: well he said that while rageparting, anyway
13:08:48 <kallisti> yes he was likely just angry about it.
13:09:51 <oerjan> shachaf: clearly what they need is the unsafeCoerce in Agda mentioned in another hwn quote
13:10:20 <kallisti> fizzie: I've lately found myself attempting to apply Bayesian inference to any problem requiring any remote degree of pattern recognition
13:10:54 <kallisti> what other techniques are there that are similar?
13:11:17 <shachaf> oerjan: I was quoted in HWN? :-(
13:11:22 <oerjan> yes.
13:11:41 <oerjan> how otherwise would i find out about quotes
13:11:43 <oerjan> @quote
13:11:43 <lambdabot> TomMD says: Never trust IO
13:12:12 <shachaf> I like how http://www.haskell.org/haskellwiki/HWN is horribly out of date.
13:12:23 -!- Phantom_Hoover has quit (Remote host closed the connection).
13:12:42 <shachaf> Someone add http://contemplatecode.blogspot.com/ , please.
13:13:26 -!- Phantom_Hoover has joined.
13:13:32 <oerjan> either they just did, or you missed it
13:13:38 <kallisti> hmmm not familiar with ntemplatecodes and their duals.
13:15:01 <oerjan> it's possible some of the other links are broken, of course
13:15:18 -!- derdon has joined.
13:16:01 <oerjan> @quote shachaf
13:16:01 <oerjan> now what
13:16:01 <oerjan> @ping
13:16:01 <lambdabot> shachaf says: Sufficiently advanced misunderstanding is indistinguishable from trolling.
13:16:01 <lambdabot> pong
13:16:53 <kallisti> I think a distinction needs to be made between good trolling and bad trolling.
13:17:01 <kallisti> I think some trolling is quite obvious.
13:17:38 <kallisti> there's generally any combination of (in)effective and (non-)obvious
13:18:18 <shachaf> @quote oerjan
13:18:18 <lambdabot> oerjan says: i only do impractical things
13:18:22 <shachaf> @quote oerjan
13:18:22 <lambdabot> oerjan says: i only do impractical things
13:18:23 <shachaf> @quote oerjan
13:18:24 <shachaf> @quote oerjan
13:18:24 <lambdabot> oerjan says: i only do impractical things
13:18:24 <lambdabot> oerjan says: i only do impractical things
13:18:28 <fizzie> kallisti: Thomas Bayes is your Lord thy God, and you shalt not have any other ones. Why would you want to do anything that's *not right*? (There are quite many ways to actually *do* Bayesian inference for all the interesting problems where you can't ever solve anything, though.) ((I guess you might count the MDL principle a sensible-ish "non-Bayesian" tool.))
13:18:28 <shachaf> I guess that's all you do.
13:18:30 <shachaf> `quote oerjan
13:18:34 <HackEgo> 7) <oerjan> what, you mean that wasn't your real name? <Warrigal> Gosh, I guess it is. I never realized that. \ 17) <oerjan> ehird has gone insane, clearly. \ 19) <fungot> oerjan: are you a man, if there weren't evil in this kingdom to you! you shall find bekkler! executing program. please let me go... put me out! he's really a tricycle! pass him! \ 22) <oerjan> In an alternate universe, ehird has taste \ 23) IN AN
13:18:35 <oerjan> shachaf: quite so.
13:18:39 <shachaf> `quote oerjan
13:18:42 <HackEgo> 7) <oerjan> what, you mean that wasn't your real name? <Warrigal> Gosh, I guess it is. I never realized that. \ 17) <oerjan> ehird has gone insane, clearly. \ 19) <fungot> oerjan: are you a man, if there weren't evil in this kingdom to you! you shall find bekkler! executing program. please let me go... put me out! he's really a tricycle! pass him! \ 22) <oerjan> In an alternate universe, ehird has taste \ 23) IN AN
13:18:50 <shachaf> Is `quote <username> sequential?
13:18:56 <shachaf> That's ridiculous.
13:19:01 <shachaf> `quote shachaf
13:19:04 <HackEgo> 617) <shachaf> elliott: GHC bug? Come on, it's the parentheses. <shachaf> The more parentheses you add, the closer it is to LISP, and therefore the more dynamically-typed. \ 663) <shachaf> Real Tar is GNU tar. <shachaf> You just ignore whichever features don't make you feel superior enough. \ 701) <shachaf> VMS Mosaic? <shachaf> I hope that's not Mosaic ported to VMS. <shachaf> Hmm. It's Mosaic ported to VMS.
13:19:08 <shachaf> `quote
13:19:08 <oerjan> shachaf: `quote doesn't randomize with an argument.
13:19:09 <shachaf> `quote
13:19:11 <HackEgo> 131) <coppro> what's the data of? [...] <Sgeo> Locations in a now deceased game called Mutation <coppro> I have no problems with you being interested in online games <coppro> but the necrophilia is disturbing
13:19:33 <kallisti> fizzie: the different techniques are essentially which models/events you use, I guess?
13:19:43 <oerjan> shachaf: there is `pastequotes when you want all of them
13:20:04 <shachaf> `pastequotes oerjan
13:20:08 <HackEgo> 347) <oklofok> destroying a local copy of the world is kind of like raping a robochick with a shovel tho
13:20:09 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.4501
13:20:10 <shachaf> `pastequotes shachaf
13:20:15 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.10378
13:21:11 <shachaf> Is elliott in Hexham?
13:21:22 <oerjan> yes.
13:21:37 <oerjan> well, unless he has fled recently, and that's why we don't see him.
13:22:14 <kallisti> fizzie: but the main idea would appear to be that you iterate conditional probabilities upon new events.
13:22:30 <kallisti> are there more specific techniques with... names... I could learn?
13:27:02 <fizzie> kallisti: Some keywords would be the EM (expectation-maximization) algorithm (except you can never get closed-form solutions for anything ever, except maybe for some Gaussians); the variational Bayesian inference; all the Monte Carlo -style sampling-based approaches (Gibbs sampling, Metropolis-Hastings sampling); and then all the things where you do a Bayesian network graphical model and use one of the graph-based inference thingies (exact, which you prob
13:27:23 <fizzie> ... which you probably can't do to anything interesting; or inexact, like "X belief propagation" for all kinds of X (e.g. loopy)).
13:27:39 <fizzie> That's quite a few names.
13:28:19 <kallisti> yes
13:28:54 * kallisti wonders if the AI course at his university is actually good.
13:28:59 <kallisti> I doubt it. nothing here has been good so far.
13:29:08 <kallisti> data structures wasn't bad though.
13:29:10 <kallisti> actually.
13:29:35 <fizzie> I happen to like the name "loopy belief propagation" a lot, even if it's kinda fuzzy thing, and you're always kind-of wondering whether it'll converge or not.
13:29:42 <fizzie> Still, it sounds happy.
13:30:39 <fizzie> (It's just belief propagation except your graph's got some cycles. Belief propagation converges to an exact solution in a tree, or some-such.)
13:30:49 -!- atehwa has quit (Ping timeout: 240 seconds).
13:31:00 <fizzie> (Quite a lot of people are very enthusiastic about graphical models.)
13:33:08 <fizzie> As for AI courses, at least ours isn't really "machine-learningy" at all, but it's still sort-of interesting stuff, maybe. Search things (A* and the like) and logic-programming related topics, and then assorted odd bits.
13:33:19 <fizzie> (Also they're going to scrap it after this year.)
13:34:05 -!- augur has quit (Remote host closed the connection).
13:34:38 <oerjan> the robots told them to scrap it, or else...
13:34:49 <kallisti> I think I'm more interested in machine learning than any of that stuff.
13:34:58 <kallisti> except logic programming.
13:35:04 <kallisti> which I've been learning a little about.
13:35:04 -!- sebbu2 has joined.
13:35:05 -!- sebbu2 has quit (Changing host).
13:35:05 -!- sebbu2 has joined.
13:35:08 <fizzie> Very possible. People keep asking me what's replacing it, and I have to be all "well uh..."
13:35:09 <kallisti> studying some prolog.
13:35:13 <fizzie> (Since nothing really is.)
13:36:31 <kallisti> I'm also using LogicT in my portal chess implementation, but I'm really just using it as a glorified (and more efficient) list monad.
13:37:16 <fizzie> It's just that the professor doing the courses from that... uh, professorship, retired a couple of years ago, and the CSE department (which is so much about engineering it's probably best called CsE or something) doesn't feel like keeping those things running; while our "actual computer *science*, guys" department -- formed by forcibly combining the machine learning lab and the theory lab -- doesn't have an equivalent "introductionary" and wide-scope thin
13:37:52 <kallisti> that's a shame.
13:38:19 <kallisti> my school is a small engineering school based off of Georgia Tech. so the entire curriculum is focused on engineering mostly.
13:38:36 -!- sebbu has quit (Ping timeout: 240 seconds).
13:39:47 <kallisti> I've decided to get a dual major in math because I feel my theoretical education is lacking. Also it probably looks good on a resume. :P
13:40:08 <kallisti> HOWEVER. I have to continue with calculus which I have forgotten ridiculous amounts of stuff about...
13:41:28 <oerjan> georgia tech, that's where lipton of godel's lost letter is
13:41:43 <kallisti> so I'll be jumping into Calc 3 after like 2-3 years of forgetting about Calc 2 (not to mention my Calc 2 teacher was absolutely terribly and never got beyond the first two chapters, and was later fired I found out)
13:42:17 <kallisti> so I don't think I ever properly learned all of the integration methods that you're typically supposed to learn.
13:42:44 <kallisti> and I definitely know nothing about convergence/divergence of infinite series.
13:42:52 -!- atehwa has joined.
13:43:31 <kallisti> but, I think I can learn these things pretty fast.
13:43:33 <kallisti> if I need to.
13:44:09 * kallisti is much better at differential equations than integration.
13:45:08 <oerjan> ...you need the latter for the former :P
13:45:48 <oerjan> although probably the exercises for the former will not use the hard integrals
13:46:18 <fizzie> oerjan: Or alternatively they'll be so hard you can't do closed-form solutions.
13:46:25 <oerjan> that too.
13:46:48 <kallisti> however a dual major is quite a lot of extra classes. definitely an extra year.
13:46:55 <itidus20> kallisti: maybe you need to re-learn calc 2 right now
13:47:05 <kallisti> s/re-//
13:47:17 <itidus20> says the guy who has no idea
13:47:19 <kallisti> hm I might still have my calc book actually.
13:47:30 <kallisti> somewhere. those things are hard to sell.
13:47:41 <itidus20> i was thinking about pi today
13:47:51 <itidus20> while on a bus
13:48:56 <itidus20> i was thinking that if you took a unit line, and curved it into a circle with endpoints meeting, and then scaled that circle up until the radius was a unit circle
13:49:09 <itidus20> then pi would be the scaling factor of that circle
13:49:19 <itidus20> or something
13:49:28 <kallisti> yes
13:49:42 <kallisti> that is basically how pi is defined. pi = C/d
13:50:19 <kallisti> a unit circle has a circumfrence of pi.
13:50:31 <Phantom_Hoover> TODAY IN #ESOTERIC: iti discovers pi.
13:50:58 <itidus20> but it leaves me as puzzled as ever as to why it is irrational :D
13:51:07 <itidus20> but the whole world would collapse if pi was rational
13:51:27 <oerjan> a dual major is just a major in the opposite category, right?
13:51:53 <kallisti> ...not quite. :P
13:52:01 <oerjan> shocking
13:52:15 <kallisti> itidus20: pi is irrational because it isn't expressable as a ratio of two integers.
13:52:21 * kallisti hand-wavey.
13:52:33 <itidus20> Phantom_Hoover: that was my way of ascertaining that circles can exist
13:52:47 <itidus20> rather than the idea that every circle is a set of straight lines
13:53:08 <kallisti> basically this is saying that both the circumfrence of a circle and its diameter cannot both be integers.
13:53:16 <oerjan> itidus20: the proof that pi is irrational is fairly advanced
13:53:18 * oerjan doesn't actually know it
13:53:22 <Phantom_Hoover> Proving that pi is irrational is tricky.
13:53:32 <oerjan> e is much easier, i understand
13:53:55 <Phantom_Hoover> http://en.wikipedia.org/wiki/Proof_that_22/7_exceeds_%CF%80
13:54:02 <Phantom_Hoover> I need to show this to my father...
13:54:19 * kallisti knows a number of people who were convinced that 22/7 = pi
13:54:20 <fizzie> We had this "Matrix Computations" course, it was the funniest. There was a one lecture's worth of motivation of how Google is just a numerical linear algebra problem (apparently you can formulate PageRank in terms of an internet-sized matrix), real highfalutin stuff; and then the rest was just matrix decompositions and "show this and that for a Hermitian positive semidefinite P" and even few bits of floating-point error estimation of all things.
13:55:57 <fizzie> Even formulate PageRank as an eigenvalue problem of that huge honking matrix, if I recall it right.
13:56:29 <oerjan> we are all in that matrix
13:56:47 <fizzie> Locked in it, one might say.
13:57:01 <itidus20> the matrix of solidity
13:57:18 <itidus20> ... rears it's ugly head again
13:57:48 <oerjan> it never really went away
13:58:26 <itidus20> hmm
13:58:28 <itidus20> but!
13:58:41 <itidus20> if you have the circumference of 1 circle
13:58:48 <itidus20> and the circumference of another circle
13:59:20 <itidus20> you can scale between them eh
14:00:03 <itidus20> like you can start with the unit circumference... and then scale the circle up to a circumference of 2
14:00:16 <itidus20> but you never know how far you scaled by :-?
14:00:44 <oerjan> i was with you until that last line
14:01:03 <itidus20> i was not with me even tat far
14:01:15 <oerjan> figures
14:01:21 <itidus20> i know its not possible that i can think of anything new in pi
14:01:37 <fizzie> oerjan: You were hoping for some topology, right? They're always turning things to other things.
14:02:02 <itidus20> but still.. the ratio of the circumferences of 2 circles must be quite fascinating
14:02:15 <itidus20> C1/C2
14:02:18 <oerjan> the topology i know doesn't involve much pi
14:02:19 <fizzie> It's approximately as fascinating as the ratio of the diamaters of the circles.
14:02:36 <itidus20> but diameters are just lines
14:02:49 <itidus20> :-s
14:03:07 <fizzie> Yes, well, C1=pi*d1, C2=pi*d2, C1/C2 = (pi*d1)/(pi*d2) = d1/d2, you know.
14:03:27 <oerjan> the ration of the circumferences is the same as the ratio of the diameters. i think archimedes proved that, or something.
14:03:28 <itidus20> oh
14:03:31 <oerjan> *-n
14:04:05 <oerjan> thus proving pi existed as something common for all circles
14:04:22 <fizzie> *My* circles have a pi of 4, so there.
14:04:27 <itidus20> so its not a useless notion :D
14:04:36 <itidus20> only an extremely redundant one
14:05:06 <fizzie> (Sadly my circles aren't very round, either.)
14:05:18 <itidus20> my circles are fucking round
14:06:09 <oerjan> we call those pi = 4 circles "squares" around here
14:06:36 <fizzie> I recently read about the ballsiest balls humankind has ever produced.
14:06:52 <fizzie> "The gyroscopes in GP-B are the most perfect spheres ever made by humans. (The experiment actually carries four gyroscopes for redundancy.) These ping pong-sized balls of fused quartz and silicon are 1.5 inches across and never vary from a perfect sphere by more than 40 atomic layers. That means that if these gyroscopes were the size of the Earth, the elevation of the entire surface would vary by no more than 12 feet!"
14:07:17 <fizzie> Sadly I couldn't find a "buy now" link.
14:07:40 <oerjan> and _still_ the experiment essentially failed (not totally, but enough that other experiments had surpassed them in quality before the results were out)
14:07:41 -!- cheater has quit (Ping timeout: 244 seconds).
14:07:44 <oerjan> afair
14:07:50 <fizzie> And I guess it might get dented easily. But still.
14:07:58 <fizzie> Could be; I was just interested in their balls.
14:08:34 <itidus20> 1am and cold.. time for my supreme commander jacket
14:08:43 <itidus20> formerly known as a parker
14:08:44 <oerjan> the problem was something about unforeseen electric or magnetic fields on the balls
14:09:25 <oerjan> they did spin it as a success, though
14:09:40 <oerjan> some time last year
14:11:21 <fizzie> "Science journals have expressed negative overviews, citing the $760,000,000 cost and that prior experiments had made 130-150 times more accurate measures over six years earlier."
14:11:26 <fizzie> That's quite some success.
14:11:39 <fizzie> But at least they had balls.
14:13:33 -!- kallisti has quit (Ping timeout: 255 seconds).
14:13:41 -!- augur has joined.
14:14:10 <itidus20> so could we make a topology where C/d = 3?
14:15:11 <itidus20> he says knowing we could
14:15:50 <Phantom_Hoover> ITYM measure space.
14:16:02 <Phantom_Hoover> I asked oerjan and oklopol and both said they didn't know.
14:16:09 <Phantom_Hoover> It's not at all obvious.
14:16:36 <oerjan> you can sort of think of a hexagonal tiling as having that
14:17:31 <oerjan> but can that be made arbitrarily small...
14:17:48 <itidus20> infinitesimally small
14:20:13 -!- oerjan has quit (Quit: Later).
14:29:44 <fizzie> How about just starting to speak of circles in spherical geometry instead? If you look at circumference/diameter, you just need a circle of suitable size to get c/d = 3.
14:45:19 -!- augur has quit (Remote host closed the connection).
14:52:10 -!- Frooxius has quit (Read error: Connection reset by peer).
14:52:37 -!- Frooxius has joined.
14:56:19 -!- itidus20 has quit (Ping timeout: 245 seconds).
15:00:37 -!- Vorpal has joined.
15:09:21 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds).
16:12:39 -!- derdon_ has joined.
16:15:31 -!- derdon has quit (Ping timeout: 245 seconds).
16:34:49 -!- Phantom__Hoover has joined.
16:43:23 -!- kallisti has joined.
16:43:24 -!- kallisti has quit (Changing host).
16:43:24 -!- kallisti has joined.
16:46:07 <kallisti> I think >>= probably easier to understand in terms of fmap and join
16:47:10 <kallisti> the problem is that newcomers perhaps won't recognize the immediate connection on why >>= appears to be "central" to Haskell's framing of monads.
16:48:18 <kallisti> perhaps one angle of approach would be to explore so-called monadic functions, and how they frequently arise in various, seemingly unrelated problems.
16:49:18 <kallisti> of course m a -> m a is an equally important case, so functors should be discussed in detail as well, probably before monads. This approach isn't really anything new. Most well-written tutorials begin with functors first.
16:51:06 <Vorpal> strange, ubuntu decided to update firefox to the last version on the 10.04 LTS release. (And no I don't have the backport repo enabled)
16:51:09 <kallisti> I think the list monad is actually a good candidate as a starting example. Firstly, because it transitions well from discussing Functors, where the easiest example is lists, because by then you're probably already familiar with map. Secondly, it's not quite as trivial as monads like Maybe, and not as magical as IO. It does something pure under the hood.
17:31:56 <kallisti> so to describe the denotational semantics of Haskell
17:32:22 <kallisti> do you normally describe the semantics of Core or STG, and thus equivalently Haskell
17:32:53 <kallisti> or, would you denote the semantics of Haskell itself.
17:33:18 <kallisti> I think Core would probably be a better candidate than STG
17:34:08 <kallisti> because it's not quite as different from Haskell as STG is.
17:36:38 <kallisti> actually I guess that isn't really necessary
17:37:23 <kallisti> probably more work if you want to be rigorously correct
17:48:34 -!- augur has joined.
17:51:19 -!- Phantom__Hoover has quit (Read error: Connection reset by peer).
17:54:05 <kallisti> ah, I just learned what monotone means. :>
18:00:06 <fizzie> Vorpal: What was it before in 10.04?
18:00:35 -!- Klisz has joined.
18:01:49 <fizzie> Since the post-3 versions aren't really "major versions" in which you could sensibly stay in K.x instead of going to (K+1).y, at least if you expect any security patches.
18:14:56 -!- pikhq has joined.
18:15:04 -!- pikhq_ has quit (Ping timeout: 252 seconds).
18:22:28 <kallisti> http://upload.wikimedia.org/wikibooks/en/math/9/d/7/9d767770a5813fd4292965450c4b3092.png
18:22:36 <kallisti> what does the big arrow thing mean in this?
18:24:29 -!- pikhq has quit (Ping timeout: 240 seconds).
18:24:35 -!- pikhq has joined.
18:25:14 -!- ais523 has joined.
18:25:56 <fizzie> Are you trying to hide you're reading wikibooks/Haskell/Denotational_semantics there?
18:26:25 <fizzie> Guilty pleasures and all that.
18:28:15 -!- ais523 has quit (*.net *.split).
18:28:17 -!- Sgeo has quit (*.net *.split).
18:28:17 -!- cswords has quit (*.net *.split).
18:28:17 -!- Nisstyre has quit (*.net *.split).
18:28:18 -!- lambdabot has quit (*.net *.split).
18:28:18 -!- kmc has quit (*.net *.split).
18:28:18 -!- clog has quit (*.net *.split).
18:28:19 -!- quintopia has quit (*.net *.split).
18:28:20 -!- quintopia has joined.
18:28:21 -!- clog has joined.
18:28:30 -!- cswords has joined.
18:28:40 -!- Sgeo has joined.
18:28:45 -!- kmc has joined.
18:29:25 -!- ais523 has joined.
18:29:51 -!- Nisstyre has joined.
18:31:57 -!- lambdabot has joined.
18:33:31 <Deewiant> kallisti: If g is the Y combinator and f factorial, it's the same as the arrow in Haskell's lambda abstractions like (\x -> x). (Does this arrow have a name?)
18:34:22 <fizzie> Deewiant: U+21A6 RIGHTWARDS ARROW FROM BAR. Alias names: z notation maplet.
18:34:47 <Deewiant> fizzie: I meant the arrow in \x -> x.
18:34:49 -!- _Slereah has quit (Ping timeout: 260 seconds).
18:35:09 <Deewiant> fizzie: (And yes, I know it's HYPHEN-MINUS followed by GREATER-THAN SIGN.)
18:35:17 <fizzie> NNN.
18:35:22 <fizzie> I had *just* finished writing that.
18:35:30 <fizzie> You... ruiner.
18:35:32 <kallisti> Deewiant: so it defines a function
18:35:42 <Deewiant> kallisti: That's what it looks like.
18:35:50 <kallisti> that would make sense
18:36:04 <Deewiant> kallisti: So the pic says "f equals g(f) equals \n ->" etc.
18:36:11 <kallisti> right
18:36:20 <kallisti> so g
18:36:22 <kallisti> is
18:36:24 <kallisti> iterate
18:36:34 <kallisti> or similar
18:36:48 <kallisti> hm, no
18:36:49 <kallisti> not quite
18:36:54 <kallisti> something else is going on.
18:36:56 <Deewiant> fix or similar, presumably.
18:38:05 <Deewiant> > let g = fix; f fac n = if n == 0 then 1 else n * fac (n-1) in g f 5
18:38:06 <lambdabot> 120
18:38:07 <kallisti> oh I see.
18:38:13 <kallisti> yeah it's not quite fix though
18:40:21 -!- pikhq_ has joined.
18:40:29 -!- pikhq has quit (Ping timeout: 244 seconds).
18:41:21 -!- _Slereah has joined.
18:42:02 <kallisti> oh wait
18:42:03 <kallisti> in that one it is.
18:44:09 -!- Zuu has quit (Ping timeout: 252 seconds).
18:57:34 <tswett> > "*actual pirates*"
18:57:34 <lambdabot> "*actual pirates*"
19:01:20 <fizzie> Factual pirates.
19:31:26 <ais523> I got a reply back from Graue, apparently he doesn't have time to reconfigure MediaWiki any more
19:53:19 -!- Ngevd has joined.
19:54:29 -!- Phantom_Hoover has joined.
19:55:48 -!- Ngevd has quit (Read error: Connection reset by peer).
20:00:21 -!- calamari has joined.
20:00:36 -!- quintopia has quit (Ping timeout: 252 seconds).
20:09:01 -!- quintopia has joined.
20:34:44 -!- Zuu has joined.
20:36:42 -!- Ngevd has joined.
20:37:11 <Ngevd> Hello!
20:37:56 <ais523> hi
20:42:31 -!- oerjan has joined.
20:45:00 <fizzie> !
20:54:37 -!- Taneb has joined.
20:57:28 -!- Ngevd has quit (Ping timeout: 248 seconds).
21:06:48 -!- azaq23 has joined.
21:13:30 -!- calamari has quit (Quit: Leaving).
21:14:38 -!- oerjan has set topic: Now open for Vampires | Take a trip to see our Castles | Get your esoblood here! | Claims elliott shortage hurts productivity "Absurd, bleh" | Glorious optators "worried, bleh" about sudden population decline | Based on the power of immortality! | Spotted marsh elliott spotted in other marsh | http://codu.org/logs/_esoteric/.
21:16:58 -!- TeruFSX_ has quit (Ping timeout: 248 seconds).
21:26:32 -!- augur has quit (Remote host closed the connection).
21:26:47 <pikhq_> It's kinda weird how slow conversation is in here sans elliott.
21:28:06 <quintopia> weird? you mean awesome!
21:31:52 <ais523> btw, I think Backslash Calculus's BF-like representation is hilarious
21:31:59 <ais523> and secretly hope it's designed to troll Phantom_Hoover
21:32:28 <Phantom_Hoover> <pikhq_> It's kinda weird how slow conversation is in here sans elliott.
21:32:50 <Phantom_Hoover> Check the tunes logs sizes for 14/1 and 15/1.
21:33:23 -!- Taneb has quit (Read error: Connection reset by peer).
21:33:26 -!- _Slereah has quit (Ping timeout: 252 seconds).
21:37:33 -!- _Slereah has joined.
21:44:34 <oklopol> when did elliott huff?
21:44:57 -!- pikhq has joined.
21:45:02 -!- pikhq_ has quit (Ping timeout: 252 seconds).
21:45:19 * oerjan hazards a guess on 14/1 or 15/!
21:45:21 <oerjan> *1
21:46:46 <oklopol> what is it?
21:46:59 <oklopol> i can't possibly guess
21:47:17 * oerjan swats oklopol -----###
21:47:22 <oklopol> what
21:47:41 <oklopol> why would you guess something about a date and not tell me what it is
21:48:05 <oerjan> 22:32 Phantom_Hoover> <pikhq_> It's kinda weird how slow conversation is in here sans elliott.
21:48:08 <oerjan> 22:32 Phantom_Hoover> Check the tunes logs sizes for 14/1 and 15/1.
21:48:12 <oerjan> 22:44 oklopol> when did elliott huff?
21:48:16 <oklopol> okay following you sofar
21:48:38 <oerjan> 22:44 * oerjan hazards a guess on 14/1 or 15/!
21:48:48 <oerjan> WHAT MORE DO YOU NEED
21:48:52 <oklopol> hmm
21:49:06 <oklopol> btw you accidentally pasted some of my and Phantom_Hoover's lines too
21:49:16 <oklopol> but i guess you noticed that too
21:49:23 -!- ChanServ has set channel mode: +o oerjan.
21:49:25 <oklopol> anyway nm, i'll keep thinking about your guess
21:49:46 <oklopol> so elliott left on 15.
21:49:48 <oklopol> okay
21:49:49 -!- oerjan has kicked oklopol Trying to get this dense object out of the channel before we get swallowed by it.
21:49:59 -!- oklopol has joined.
21:49:59 -!- oerjan has set channel mode: -o oerjan.
21:50:01 <oklopol> too late :D
21:50:04 <oklopol> apparently
21:50:33 <oklopol> "<HackEgo> 69) <oklopol> Warrigal: what do you mean by 21?"
21:50:56 <ais523> hmm, I don't really mind the channel being more relaxed
21:51:09 <oerjan> `quote 69
21:51:12 <HackEgo> 69) <oklopol> Warrigal: what do you mean by 21?
21:51:21 <ais523> it's strange without elliott, but I respect his decision to leave, and the channel's still useful for its intended purpose and at least one of its secondary purposes
21:51:36 <oklopol> yeah elliott was a bit too serious about esolangs really, it became all about the mone
21:51:37 <oklopol> y
21:52:12 <oklopol> well without elliott, who's going to keep my quote rate up?
21:52:48 <oerjan> oklopol: i think if he were here, then that one above would get killed in one of his quote purges
21:53:32 -!- quintopia has quit (Ping timeout: 255 seconds).
21:53:41 <oklopol> yeeeeah elliott would totally remove one of my quotes
21:55:51 <ais523> `quote
21:55:53 <ais523> `quote
21:55:54 <HackEgo> 76) <Warrigal> What do you call the husband of my first cousin once removed? <apollo> Warrigal: "Hey, Sexy."
21:55:54 <ais523> `quote
21:55:56 <ais523> `quote
21:55:57 <ais523> `quote
21:56:06 <HackEgo> 173) <pikhq> Vorpal: YOU ARE AMERICAN
21:56:06 <HackEgo> 688) <Phantom_Hoover> I'd insult you behind your back, but I don't care which side of your back I insult you on.
21:56:55 <HackEgo> 74) <Warrigal> Invalid! Kill! Kill! <Aftran> I get that feeling too.
21:56:55 <HackEgo> 116) <DoctorDog> I am an inherently pornographic being.
21:57:14 -!- quintopia has joined.
21:57:21 <ais523> bleh, those are pretty much all bad, apart from 688
21:57:22 <oklopol> "<tswett> A dynamical system is minimal if every point's orbit is dense? That sounds... like a strange thing to say." yeah, when would this ever be worth mentioning
21:57:25 <ais523> opinions on which I should delete?
21:57:36 <tswett> `quote dynamical
21:57:39 <HackEgo> 617) <shachaf> elliott: GHC bug? Come on, it's the parentheses. <shachaf> The more parentheses you add, the closer it is to LISP, and therefore the more dynamically-typed.
21:57:48 <tswett> `quote orbit
21:57:52 <HackEgo> 673) <Phantom_Hoover> You know what annoys me about Deep Space 9. <Phantom_Hoover> It wasn't in deep space. <Phantom_Hoover> It was orbiting Bajor.
21:57:58 <oerjan> i didn't think they were that bad...
21:58:00 * tswett shrugs.
21:58:39 <oklopol> oh oerjan mentions it in his thing?
21:58:41 <oklopol> :D
21:58:47 <ais523> `delquote 76
21:58:50 <HackEgo> ​*poof* <Warrigal> What do you call the husband of my first cousin once removed? <apollo> Warrigal: "Hey, Sexy."
21:58:55 <oklopol> wow i wonder how similar our maths are/were
21:58:56 <ais523> FIVE QUOTES ENTER, FOUR QUOTES LEAVE
21:59:32 <oklopol> oerjan: did you ever do stuff with the cantor-bendixon rank? i solved an open problem about 2D SFTs and that thing today
21:59:44 <oklopol> (and another problem that was actually hard)
21:59:54 <oerjan> cannot say i recall ever hearing the term
22:00:28 <oklopol> do you know what the derivative of a topological space is? in any case it's just that you remove the isolated points
22:00:41 <oklopol> do you know what a 2d sft is?
22:00:44 <oklopol> or what i mean by it
22:00:57 <oklopol> basically just a tiling
22:01:01 <oklopol> aaaaaaaaaaaaaanyhow
22:01:02 <oerjan> i'd guess sft is "shift of finite type"
22:01:04 -!- augur has joined.
22:01:06 <oklopol> yeah
22:01:15 <oklopol> that's always used in symbolic dynamics as i know it
22:01:19 <oerjan> which i've heard, although not done work on
22:01:35 <oklopol> well that and sofic shifts is usually what i do
22:01:39 <oerjan> since iirc they're like the opposite of minimal
22:01:43 <oklopol> yes
22:02:00 <oklopol> but usually you at least work with transitive ones
22:02:25 <oklopol> which is a bit like minimality...
22:02:34 <oklopol> in some sense
22:03:14 <oklopol> in any case there was this open problem whether there's a countable 2D SFT such that for some ordinal n, the nth derivative is empty, but it's not empty for any finite ordinal
22:03:29 <oklopol> and there totally is
22:03:44 <oerjan> yes, i recall certain transitive systems other than minimal ones can be given bratteli-vershik diagrams
22:04:21 <oklopol> we also constructed a 1D subshift with rank omega^omega (rank is when the fixed point of derivation is reached)
22:04:48 <oklopol> (the cantor-bendixon rank that is. sometimes it also means when the thing becomes empty but that's just stupid.)
22:05:05 <oklopol> i still don't remember what a bratteli-vershik diagram is
22:05:16 <oklopol> but umm
22:05:41 <oklopol> have you done subshift stuff?
22:05:57 <oerjan> what was a subshift again
22:06:01 <oklopol> we've talked about this but i understood like 0
22:06:09 <oklopol> closed shift-invariant set
22:06:26 <oklopol> with the product topology on S^\Z
22:06:31 <oerjan> the toeplitz systems count as subshifts, then
22:06:52 <oklopol> like, every cell has a period, so to speak?
22:07:11 <oerjan> something like that
22:07:17 <oklopol> that's what toeplitz sequences are at least
22:07:23 <oklopol> but those are not closed
22:07:33 <oerjan> yes, they're the subshifts generated by toeplitz sequences
22:07:34 <oklopol> i mean the set of them isn't
22:07:38 <oklopol> oh okay
22:07:46 <oklopol> cool
22:08:13 <oklopol> i've only encountered them because some dude ran CA on them with the besicovitch topology and proved some trivial stuff
22:09:49 <oklopol> i mean the space of toeplitz sequences (probably he too used its closure, not that it makes the slightest difference in this case probably)
22:10:04 <oklopol> toeplitz sequences are i've seen quite a few times
22:10:08 <oklopol> are?
22:10:11 <oklopol> *-are
22:12:34 <oerjan> iirc, if you identify conjugate systems, subshifts correspond to expansive ones.
22:13:01 <oklopol> what's a system?
22:13:24 <oerjan> minimal dynamic system on a cantor set...
22:13:25 <oklopol> compact metric space plus homeomorphism?
22:13:57 <oklopol> okay right
22:14:34 <oerjan> where a cantor set is anything homeomorphic to the usual one
22:14:49 <oklopol> but so your dynamics is given by a homeomorphism?
22:15:19 <oerjan> basically, yes. although i also looked a little bit on using two.
22:15:22 <oklopol> otherwise expansive doesn't really mean anything but just checking
22:15:44 <oerjan> (not in relation to the expansive stuff, though)
22:16:19 <oerjan> we needed to put expansive as an explicit added requirement to our condition on the diagrams to get toeplitz systems
22:17:02 <oklopol> what do you call the branch of math that you did?
22:17:09 <oerjan> there's a picture in the paper of the diagram for a system which satisfies the rest but not expansivity
22:17:25 <oklopol> really this sounds exactly like what we're doing except you're perhaps doing it oh so differently.
22:18:28 -!- augur has quit (Remote host closed the connection).
22:18:34 <oerjan> minimal cantor dynamical systems, with slight generalization to all sides to see if something interesting cropped up?
22:18:58 <oklopol> but so i suppose your dynamics aren't in general cellular automata (that is, not shift commuting if you choose S^Z as the cantor set)?
22:19:02 <oerjan> also a lot about orbit equivalence and k-theory, since that's the fundamental theorem of my advisor
22:19:14 <oerjan> (and his colleagues)
22:20:03 <oerjan> our dynamics _are_ the shifts
22:20:04 <oklopol> i suppose i mentioned there's a paper on k-theory on my desk since it's been there forever and i don't get it
22:20:10 <oklopol> oh-
22:20:14 <oklopol> oh.
22:20:21 <oklopol> then how do you have two?
22:20:36 <oerjan> S^(Z^2) ? :P
22:20:53 <oklopol> so 2D subshifts, exactly what i worked on today
22:21:24 <oklopol> of course, these were not minimal systems.
22:21:45 <oerjan> more seriously, the dynamics are shifts _if_ we are looking at sequences, which we weren't in general
22:22:09 <oklopol> since minimal systems are transitive and transitive systems have rank 0
22:22:21 <oklopol> cantor-bendixon rank that is
22:22:34 <oerjan> but they're more analogous to shifts than to CA dynamics
22:22:58 <oklopol> what else could they be?
22:23:00 <oklopol> i mean
22:23:11 <oklopol> if a natural dynamics is to appear
22:24:15 <oerjan> um we were looking at _all_ minimal systems by a single homeomorphism on cantor sets as our base case. no requirement that they were sequences
22:25:37 <oerjan> the bratteli-vershik diagrams are essentially a different way of naturally describing such dynamics, which don't need to be shifts
22:26:08 <oerjan> but will be conjugate to shifts iff the system is expansive
22:26:16 <oklopol> what i don't get is, if you take a homeomorphism with say S^\N from the cantor set, don't you get a homeomorphism on S^\N and some minimal subsystems of S^\N
22:26:26 <oklopol> what do you mean they don't have to be sequences?
22:27:05 <oklopol> maybe i don't know what you mean by a cantor set, if you cannot just simply move to S^\N directly.
22:28:14 <oklopol> i mean how do you represent your points even? and do you use cylinders?
22:28:32 <oklopol> i suppose i need to read your thesis, it seems that there's some fundamental difference in how you do things.
22:28:33 <oerjan> hm
22:28:37 <oerjan> i mean they don't have to be subshifts.
22:28:42 <oklopol> well obviously not
22:28:45 <oklopol> okay
22:29:41 <oerjan> in a sense they are sequences, since you can take the sequence of edges in the diagram corresponding to each point.
22:29:46 <oklopol> so you just have a self-homeomorphism on S^\Z or S^\N or w/e. i mean not that i have any idea what those actually look like ofc.
22:30:12 <oerjan> (an infinite path in an infinite graph)
22:30:44 <oklopol> wait, what are sequences in a sense? sorry for being dense.
22:31:07 <oerjan> the points in the systems described by BV diagrams
22:31:30 <oklopol> hmm okay
22:32:13 <oerjan> although, hm, there need be no common bound on the number of edges at all levels, so you don't necessarily get it into a finite alphabet
22:32:47 <oerjan> in fact i think we proved at one point that if there _is_ a common point, the system must be uniquely ergodic
22:32:58 <oklopol> a common point?
22:33:01 <oklopol> or bound?
22:33:07 <oerjan> *bound XD
22:33:43 <oklopol> so there was this rather old open problem whether a CA on S^\Z can be uniquely ergodic without all points going to zero after a finite amount of steps
22:34:03 <oklopol> my colleague mister x proved that in his master's thesis
22:34:10 <oklopol> (that there is)
22:34:27 <oklopol> so we've played with those too
22:35:00 <oklopol> unique ergods that is. (if a system is uniquely ergodic, it has unique ergods, as well all know)
22:35:44 <oerjan> O KAY
22:37:18 <oklopol> for an obvious definition of ergod
22:37:31 <oklopol> invariant measure
22:37:36 * oklopol thinks
22:38:00 <oklopol> not that being ergodic would then make sense for a measure :D
22:38:22 <oklopol> okay maybe i won't use this terminology ever agian
22:38:23 <oklopol> *again
22:38:33 <oklopol> sooooooo about these BV diagrams
22:38:46 <oklopol> can you be all formal and shit
22:38:51 <oklopol> and tell me all about them
22:40:42 <oerjan> argh
22:41:06 <oklopol> since if there's a unique invariant measure then that has to be ergodic and vice versa because all measures are integrals over ergodic ones IN SOME SENSE I THINK
22:41:36 <oklopol> where vice versa means if there's a unique (invariant) ergodic measure then it's also the only measure.
22:41:44 <oerjan> oh right, ergodic ones are extreme points in the convex set or something
22:41:50 <oklopol> well probability measure
22:41:51 <oklopol> yeah
22:43:17 <oklopol> i don't really recall the details since we mostly use this stuff as a tool in very simple ways.
22:44:00 <oklopol> like herp derp by birkhoffs ergodic theorem thingie let's take a point where things occur with nice densities.
22:44:21 <oklopol> although sometimes slightly less simple but rarely
22:49:03 * oerjan is wondering if he's starting to get the flu
22:49:33 <oerjan> it's apparently all the rage this week or so
22:50:12 <quintopia> wow
22:50:13 <oklopol> http://www.mscand.dk/article.php?id=153 the fuck are minimal interval exchange transformations?
22:50:48 <oerjan> interval exchange transformation that happen to give minimal systems, i think
22:50:52 <oerjan> *+s
22:51:07 <oklopol> "Furthermore, these systems are orbit equivalent to Sturmian systems." you have worked with sturmian words?????
22:51:23 <oklopol> YOU HAVE DONE EVERYTHING THAT'S COOL EVER
22:51:24 <oerjan> i don't quite recall
22:51:27 <oklopol> okay.
22:52:47 <oklopol> "infinitesimal subgroup" :D
22:53:10 <oerjan> hm was that connected to the k-theory stuff...
22:53:18 <oklopol> please stop having been so awesome
22:53:44 <oklopol> i don't know i'm just skimming for cool terms.
22:54:10 <oerjan> hm it was the group elements that integrated to 0 wrt all invariant measures, wasn't it
22:54:23 <oklopol> dimension group :DDDD i played with those like 3 weeks ago
22:54:52 <oerjan> that was the word. they are what gives the k-theory.
22:55:09 <oklopol> dimension groups?
22:55:26 <oklopol> a dynamical system has only one dimension group afaik
22:55:36 <oklopol> wait
22:55:38 <oerjan> yes, the K_0 group corresponding to Cantor minimal systems is a dimension group
22:55:57 <oklopol> they have the same dimension group?
22:56:09 <oerjan> and divided out by the infinitesimals, it characterizes orbit equivalence
22:57:03 <oklopol> err
22:57:07 <oerjan> (dividing out by the infinitesimals ~ identifying any two group elements that have the same integral wrt all invariant measures)
22:57:11 <oklopol> when you say group elements that integ... blah blah
22:57:32 <oklopol> do you mean we have the dimension group as like fiber bundle thingies
22:58:13 <oklopol> i mean we usually define it with matrices for SFTs but for more general subshifts you can also talk about rays and beams and shit.
22:58:20 <oerjan> well iirc you can simply do C(X,Z), the continuous functions from the space to the integers, and divide those out by the functions that integrate to 0
22:59:00 <oerjan> although if you want the full dimension group, you divide out by something less, generated by shifting functions by the homeomorphism
22:59:04 <oerjan> iirc
22:59:44 <oklopol> well that continuous functions thing kind of makes sense as a more abstract version of the rays and beams and shit thing.
23:00:19 <oerjan> erm i'm sure there is always a connection to things but fiber bundles was never my thing.
23:00:36 <oklopol> i promised myself i'd actually learn some math this year, but every day i just start working on a new problem and lose interest in anything else.
23:00:41 <oklopol> erm
23:00:45 <oklopol> when i say fiber bundles
23:01:19 <oerjan> i'm sure i've read about fiber bundles a number of times, but they somehow don't stick.
23:01:26 <oklopol> i don't mean what fibers mean in algebraic topology, and i don't mean that weird construction that may have a similar nam. only the terms ray and beam are used.
23:01:27 <oklopol> e
23:02:10 <oklopol> i just said fi
23:02:12 <oklopol> bers
23:02:21 <oklopol> because they look like bundles of fibers. in my head.
23:03:49 -!- azaq23 has quit (Quit: Leaving.).
23:05:40 <oerjan> also my advisor and colleagues has since i left proved that these groups characterize orbit equivalence even when there is more than one (commuting) homeomorphism.
23:05:45 <oerjan> *have
23:06:55 <oklopol> can you define orbit equivalence?
23:07:28 <oerjan> sure, it's a homeomorphism from the space of one system to the space of another that maps orbits onto orbits
23:07:51 <oklopol> rightright
23:07:55 <oerjan> but with no requirement that each orbit is mapped in sequence
23:08:11 <oklopol> yeah so conjugacy but lazier
23:08:34 <oerjan> yeah
23:09:24 <oklopol> because the def i guessed was that they are mapped in sequence. and then i was like wait this is conjugacy.
23:09:31 <oerjan> this automatically transfers the invariant measures between the systems
23:09:47 <oerjan> well, assuming countable orbits
23:10:19 <oklopol> i'm not sure what you mean by that
23:10:26 <oklopol> oh
23:10:56 <oklopol> like, not having a homeomorphism whose Z-action gives the dynamics but having just R act on the space, or something like that?
23:11:05 <oerjan> or rather, a countable group acting (e.g. Z for a single homeomorphism)
23:11:10 <oklopol> yeah
23:12:41 <oklopol> and of course when i said "not Z-action but R-action", i meant the opposite, as you just said you want countable orbits.
23:12:41 <oerjan> it follows easily from this that the C(X,Z)/infinitesimals groups have to be isomorphic for an orbit equivalence to exist. the reverse however is very deep BV diagram magic.
23:12:59 <oerjan> *order isomorphic
23:13:50 <oklopol> that sounds awesome
23:13:55 <oklopol> is all this in your thesis?
23:14:10 <oerjan> i dunno
23:17:03 <oklopol> well WHERE IS IT
23:17:21 <oklopol> WHY IS THERE SO MUCH COOL STUFF IN THE WORLD AND SO LITTLE SMART IN MY BRIAN
23:17:30 -!- Ngevd has joined.
23:18:01 <ion> I’m sorry to hear about your brian.
23:18:08 <Ngevd> Hello
23:22:41 <oerjan> actually a considerable part of this BV and dimension group stuff is in my master's thesis, which unlike my PhD thesis i've got easily available and just converted to pdf: http://oerjan.nvg.org/main.pdf
23:23:09 -!- Ngevd has quit (Quit: Goodbye).
23:23:16 <oerjan> (don't worry about the norwegian on the first page :P)
23:25:05 <oerjan> my advisor told me he keeps my master's around as a basic reference
23:25:29 <oklopol> page 5 is priceless
23:25:46 <oklopol> heh
23:26:36 <oerjan> come to think of it, i may have a certain weakness for theorems with lists of equivalences :P
23:26:42 -!- Ngevd has joined.
23:26:56 -!- Ngevd has left.
23:27:52 <oklopol> this looks nice, i'll see if i understand any of it tomorrow
23:28:07 <oklopol> nite
23:28:16 <oerjan> good night
23:42:53 -!- derdon_ has quit (Remote host closed the connection).
23:46:49 -!- ais523 has quit (Remote host closed the connection).
2012-01-28
00:25:18 -!- Water2012 has joined.
00:26:09 -!- Water2012 has left.
00:46:45 * Phantom_Hoover -> sleep
00:46:46 -!- Phantom_Hoover has quit (Quit: Leaving).
01:02:50 -!- DCliche has joined.
01:03:25 -!- cheater has joined.
01:06:43 -!- Klisz has quit (Ping timeout: 276 seconds).
01:23:55 <pikhq> http://4.bp.blogspot.com/--dWhUHntf3Q/TyMUQ5jYZVI/AAAAAAAAFWs/ww6aBSXRQJk/s1600/wtf.jpg Because everyone wants to play as crappy boxart Megaman.
01:24:03 -!- DCliche has changed nick to Klisz.
01:37:50 -!- DCliche has joined.
01:39:59 -!- oerjan has quit (Quit: Good night).
01:40:58 -!- Klisz has quit (Ping timeout: 248 seconds).
02:01:02 -!- pir^2 has joined.
02:01:04 -!- pir^2 has quit (Quit: Bye).
02:13:07 -!- nooga has joined.
02:13:22 <nooga> where's oerjan
02:14:05 <pikhq> Sleeping.
02:15:19 <nooga> no way
02:15:57 <nooga> stupid timezones
02:16:06 <nooga> how come you're up at the mooment
02:16:16 <pikhq> It's 19:15.
02:16:30 <pikhq> The day's barely started.
02:16:31 <pikhq> :P
02:16:53 <nooga> it's 3:16 here
02:16:56 <fizzie> 04:16.
02:16:57 -!- Klisz has joined.
02:17:04 <nooga> fizzie: +1 hour
02:17:25 <nooga> doesn't change the fact it's late
02:17:51 <fizzie> And I just woke up, having "just rested a bit" around localtime-23; should "wake up" at 7- or 8-ish instead.
02:18:11 <fizzie> This did not quite go as planned.
02:18:20 <nooga> i'm drinking since 2200
02:18:49 <nooga> my wife fell sleep and i'm still up
02:18:51 <nooga> ;f
02:19:15 -!- DCliche has quit (Ping timeout: 245 seconds).
02:19:35 <nooga> trying to write graph oriented database in ANSI C
02:21:44 <fizzie> Heeeey, it's *Saturday* "tomorrow". That's not a wake-up-early day. Aw, I's so confused.
02:22:18 <nooga> graphs graphs graph
02:22:25 <nooga> I'd say grafy grafy grafy
02:23:53 <nooga> ew
02:24:32 -!- DCliche has joined.
02:28:02 -!- Klisz has quit (Ping timeout: 255 seconds).
02:28:13 <nooga> klisz
02:28:37 <nooga> klisza means a photographic film in my language
02:29:21 -!- DCliche has changed nick to Klisz.
02:29:46 <nooga> klisz klisz
02:30:12 <Klisz> "your language"? do you refer to Polish, or are you a conlanger?
02:32:16 <nooga> Polish ofc
02:32:49 <nooga> or should I say... my native tongue
02:34:08 * Klisz adds klisza to Wiktionary, then, since what they currently only have 'film' as a translation of that
02:34:32 <nooga> Hungarian also have this sz, but this is pronounced like s in here
02:34:52 <Klisz> Oh yes, I forgot about Hungarian.
02:35:26 <nooga> sz sounds like sh in English
02:35:40 <nooga> Kleesh
02:36:30 <Klisz> indeed
02:36:45 <nooga> weird nick
02:38:03 <Klisz> My original name was "Darth Cliche"; I shortened that to "DCliche" when people kept making Star Wars-related jokes. I in turn changed to Klisz in response to people making jokes about the lack of an acute accent
02:38:04 <nooga> nooga on the other hand..
02:38:27 <nooga> I pronounce it like noga
02:38:36 <nooga> and it menas "a leg"
02:38:47 <nooga> means*
02:38:57 <nooga> but with longer o
02:39:12 <nooga> not the standard, english oo
02:39:27 <Klisz> Naming yourself 'leeeeeg' is rather weird too ;p
02:39:31 <nooga> leeeg
02:39:35 <nooga> that's right
02:39:35 -!- itidus21 has joined.
02:40:03 <nooga> i was pissed off because someone took my unregistered nick on IRC someday in 90's
02:40:19 <nooga> an the first thing i typed in was.. nooga
02:40:28 <nooga> and then it stayed like this
02:40:37 <nooga> quite
02:40:39 <nooga> uh
02:40:40 <nooga> random
02:43:25 <nooga> :F
02:51:34 -!- nooga has quit (Ping timeout: 252 seconds).
02:52:24 -!- nooga has joined.
02:52:41 <nooga> i've lost connection
02:55:23 <nooga> lol
02:55:58 <nooga> Polish Radio programme 3 broadcasts The Dark Side Of The Moon at the moment
02:56:02 <nooga> whole album
02:59:05 <pikhq> Good album, at least.
03:04:07 <nooga> ahhh
03:05:04 <nooga> any colour you like right now
03:05:47 <nooga> quite unusual for a public radio to play whole album
03:06:25 <nooga> recently i've bee to the australian pink floyd show in Poznań, Poland
03:06:51 <nooga> and before that i was at the David Gilmour's concert in Gdańsk Shipyard
03:07:18 <nooga> they played 1.5 of PF and 1h of Gilmour's On An Island
03:07:33 <nooga> absolutely the best concert in my entire life
03:07:53 <nooga> been*
03:20:22 <pikhq> Neat.
03:35:47 -!- nooga_ has joined.
03:36:43 -!- nooga has quit (Read error: Connection reset by peer).
03:56:40 -!- DCliche has joined.
03:59:54 -!- Klisz has quit (Ping timeout: 252 seconds).
05:03:06 -!- TeruFSX has joined.
05:14:59 <oklopol> fizzie: what does localtime-23 mean?
05:16:17 <oklopol> hmmhmm
05:57:11 -!- zzo38 has joined.
05:57:53 <zzo38> What castles do you want to see?
05:58:32 -!- Klisz has joined.
06:00:11 -!- DCliche has quit (Ping timeout: 252 seconds).
06:04:47 -!- pikhq has quit (Ping timeout: 252 seconds).
06:04:49 -!- pikhq_ has joined.
06:14:09 <oklopol> zzo38: none really
06:14:31 <zzo38> Then why did you put it in the topic message?
06:15:14 <Sgeo> Oh tell me why, do we build castles in the sky?
06:30:10 <oklopol> i didn't
06:30:34 <oklopol> i can't answer for the crazies, you have to wait for them to wake up.
06:47:03 <zzo38> Do you build vampires in the sky here, too?
06:50:25 -!- monqy has quit (Quit: hello).
06:51:14 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
06:51:48 <zzo38> Strange cards for Magic: the Gathering which I have written:
06:52:34 <zzo38> | Gain 5 life if you have paid this spell's kicker cost. | Gain 5 life if you have played this spell for its madness cost. | Gain 5 life when you cycle this card. | (Note this card doesn't have kicker, madness, or cycle.)
06:53:34 <zzo38> | Gain 2 life for each spell on the stack which has split-second. | (When will this have an effect? Perhaps see later...)
06:53:45 -!- augur has joined.
06:54:08 <zzo38> | Flash | Enchant spell | Enchanted spell has split-second. | (Possibly you can use this to force a block of spells to resolve at once, or to set up triggers, or something)
06:54:29 <zzo38> | All permanents with substance are 2/2 creatures in addition to their other card types. |
07:01:28 <zzo38> | Whenever a permanent becomes untapped, put it at the bottom of its owner's library. |
07:02:33 <zzo38> | This has +5/+5 if this is a token. |
07:11:03 <zzo38> | At the end of the game, rewind to the point that this spell resolved, and the loser takes X damage. (Doesn't work if a player concedes) |
07:12:11 <oklopol> what's madness?
07:12:15 <oklopol> or kicker
07:12:49 <zzo38> oklopol: Kicker is an extra cost that may be played when you play the spell card. If you do, then the spell is "kicked" by that instance of the kicker ability.
07:13:35 <zzo38> Madness means if that card is discarded from your hand, you may play the madness cost. If you do, it is exiled and then placed on the stack as if you have played that card.
07:13:50 <zzo38> (It doesn't give you the ability to discard that card, however.)
07:14:50 <oklopol> wait do you have deck and stack, you take cards from deck normally and throw dead things in the stack? or what are these things called
07:15:21 <oklopol> although i suppose you implied discards don't go in the stack
07:15:25 <zzo38> Stack is when spells and abilities wait to resolve, they are placed in a stack. When it is time for one to resolve, the last one is popped from the stack and resolves.
07:15:30 <oklopol> oh-
07:15:40 <oklopol> i mean oh.
07:15:44 <zzo38> (And then it is either put into play or in the discard pile, depending on the card)
07:16:34 <oklopol> okay i'm getting it.
07:30:12 <zzo38> I have made some cards that do strange things with the rules. Such as a card with the type "Instant Land" which remains in your hand when played, a card that skips the cleanup step, a variant of Wrath of God that doesn't actually destroy anything but works anyways because they become planeswalkers without counters, a card that phases out but when it tries to phase back in, it can't because it is an instant...
07:30:20 <zzo38> Some of these things no longer work with the new rules, however.
07:30:54 <zzo38> I have made various cards that only work in one version of the rules and have completely different effects in other versions.
07:32:21 <oklopol> did you do it by saying "in version x, this card ...; in version y, this card doesn't ...", or did you do something insanely clever
07:32:56 <zzo38> oklopol: No. I did something else; it wasn't even intended to work differently in different versions of the rules.
07:33:08 <oklopol> okay
07:33:55 <zzo38> Some of them invoke combinations of rules in ways which are not meant to be used in that way.
07:35:31 <zzo38> (The one that phases out and then fails to phase back in, will still phase back in in the new rules. In the old rules, which were current at the time I wrote that card, the card would in fact, fail to phase in after it has phased out.)
07:41:59 <zzo38> "Phasing. When this card enters play, it becomes an instant in addition to its other types."
07:44:42 <zzo38> I made one card that causes state-based effects to stop working temporarily.
07:47:27 <zzo38> I have made some cards that have an ability with "lose priority" as part of their cost or effect.
07:48:37 <zzo38> Can you understand how my card fails to phase back in in one version of the rules but succeeds in another version?
07:52:14 <zzo38> I don't know if there are slight changes in definition of mana abilities, or other rules that might affect that, that causes some of my effects to work differently in different versions of the rules
07:57:15 <zzo38> I have some cards that fail to do anything useful at all unless you have many other cards affecting certain rules and other things
08:04:11 <zzo38> I have a card named "Dignity" costing {B} with the effect "You lose the game." I can actually think of uses for such a card (and I don't mean copying it onto your opponent).
08:10:51 -!- zzo38 has quit (Remote host closed the connection).
08:22:49 -!- nooga_ has quit (Ping timeout: 252 seconds).
08:28:27 <Sgeo> What uses?
08:28:37 -!- Ngevd has joined.
08:30:08 <Ngevd> Hello!
08:43:09 -!- Frooxius_ has joined.
08:43:21 -!- Frooxius_ has quit (Client Quit).
08:45:00 -!- Frooxius has quit (Ping timeout: 240 seconds).
08:51:16 -!- Ngevd has quit (Read error: Connection reset by peer).
08:52:22 -!- Ngevd has joined.
09:01:13 -!- Ngevd has quit (Read error: Connection reset by peer).
09:01:36 -!- Ngevd has joined.
09:02:42 -!- Ngevd has quit (Read error: Connection reset by peer).
09:02:51 -!- Ngevd has joined.
09:03:50 -!- Ngevd has quit (Client Quit).
09:51:01 -!- Phantom__Hoover has joined.
10:03:05 <kallisti> why are rings called rings.
10:05:43 <_Slereah> "According to Harvey Cohn, Hilbert used the term for a specific ring that had the property of "circling directly back" to an element of itself"
10:08:12 <kallisti> oh, that's not very exciting...
10:08:56 * kallisti thinks number theory is something that would be interesting.
10:09:17 <kallisti> I'm particularly interested in the Riemann hypothesis.
10:12:57 <kallisti> uh what's a program I can use to convert an svg to a raster file.
10:24:16 -!- Frooxius has joined.
10:28:02 <ion> librsvg2-bin. Inkscape. ImageMagick. GraphicsMagick. Gimp.
10:28:24 <ion> Outsource it to be done manually by cheap labor.
10:32:27 <cheater> wasn't there a passage in the bible where the people were all supposed to kill themselves and formed a ring, and counted off and then each stabbed himself or something
10:32:54 <cheater> and one christian guy told the other christians to stand in specific places so that at some point all that is left are christians
10:33:05 <cheater> he used ring theory to save 'em
10:33:14 <cheater> isn't that where the name ring comes from
10:33:31 <fizzie> Misparsed that as "I'm particularly interested in the Riemann hypothesis. Uh, which is a problem I can use to convert an svg to a raster file." Sounded... dubious.
10:33:53 <Phantom__Hoover> cheater, fuck off.
10:34:10 <cheater> Phantom__Hoover: u
10:34:12 <Phantom__Hoover> * kallisti thinks number theory is something that would be interesting.
10:34:12 <Phantom__Hoover> <kallisti> I'm particularly interested in the Riemann hypothesis.
10:34:22 <Phantom__Hoover> The Riemann hypothesis isn't number theory.
10:34:27 <Phantom__Hoover> It's complex analysis IIRC.
10:34:40 <oklopol> isn't complex analysis part of number theory?
10:34:44 <oklopol> i should probably know
10:34:56 <Phantom__Hoover> Not number theory as it's commonly taken to be.
10:35:21 <Phantom__Hoover> i.e. the algebraic properties of N (or sometimes Z?)
10:35:34 <cheater> you totally forgot N_p
10:35:49 <cheater> complex analysis is usually taken in parallel with differential equations and before control theory
10:35:49 <Phantom__Hoover> cheater, fuck off.
10:35:52 <cheater> Phantom__Hoover: u
10:36:42 <cheater> oklopol: from what i gather there's some mention of holomorphic functions in the NT course, but i wasn't into it so i don't remember
10:36:55 <cheater> plus our NT guy was some wackjob from max planck institut
10:37:01 <fizzie> Riemann ζ has got that prime thing going for it, which might count.
10:37:42 <Phantom__Hoover> It has important ties to number theory, and IIRC you can reformulate it purely number theoretically, but the RH itself is complex analysis.
10:40:09 <oklopol> for instance an acquaintance of mine who says she studies analytic number theory actually mostly works with http://en.wikipedia.org/wiki/Maass_form which look very complex analysisy
10:42:19 <oklopol> complex analysis must be really useful for control theory
10:43:17 <cheater> this is not your dad's number theory, that guy's probably at least level 40
10:43:41 <cheater> what i mean is, he's probably researching some narrow, advanced field
10:43:59 <oklopol> by dad do you mean my acquaintance?
10:45:00 <oklopol> because my dads math skills are slightly below the average high school graduate.
10:45:07 <oklopol> ...'s
10:45:27 <cheater> "not your dad's" is a jocular way of saying "advanced"
10:45:42 <cheater> as in, "those aren't your dad's microscopes"
10:46:37 <oklopol> i guessed that
10:46:44 <cheater> it comes from the fact that kids, while growing up, would often get tools that are pass-me-downs from their father's or grandfather's time at the same age, usually much less precise instruments than are available at the time
10:47:01 <cheater> yeah
10:47:09 <cheater> do you want to study number theory?
10:47:40 <oklopol> i think i'm going in a different direction.
10:47:49 <cheater> what direction?
10:48:05 <oklopol> dynamical systems, symbolic dynamics, cellular automata
10:48:12 <oklopol> mostly the middle one
10:49:17 <cheater> is that ever used for computer graphics
10:49:47 <oklopol> :D
10:49:59 <oklopol> by computer scientists, perhaps
10:51:56 <oklopol> we just create dynamical systems by taking a subshift and running a CA on it and look at dynamics or other things
10:52:11 <kallisti> I like how I caused a huge hair-splitting conversation.
10:53:57 <cheater> i just looked up "fascism" to check the word origin, and i got a context ad for an Italian language course
10:54:24 <cheater> Learn Italian in Italy
10:59:13 -!- mroman_ has joined.
10:59:15 -!- mroman_ has changed nick to mroman.
10:59:32 <mroman> Spam is worse these days :(
11:00:13 <cheater> oklopol: i saw an introduction to symbolic dynamics which says "Imagine a point following some trajectory in a space. Partition the space into finitely many pieces, each labeled by a different symbol. We obtain a symbolic trajectory by writing down the sequence of symbols corresponding to the successive partition elements visited by the point in its orbit."
11:00:27 <oklopol> yeah that's a motivation
11:00:27 <cheater> oklopol: this very much looks like sampling
11:00:34 <oklopol> ...
11:00:41 <oklopol> wellll perhaps
11:01:33 <cheater> but like, do you only consider this "sampling" at an "infinite rate" (i.e. every time the partition changes you get a new symbol) or do you also consider situations where this rate is limited?
11:01:53 <oklopol> but anyway i haven't even applied symbolic dynamics to dynamical systems in general, i just solve fun problems of my own creation (and occasionally open ones when i find an interesting one).
11:01:57 <oklopol> err
11:02:03 <oklopol> so what we actually do is
11:02:23 <oklopol> we take a dynamical system, so a compact metric (or just hausdorff) space
11:02:44 <oklopol> and we take a Z-action (or sometimes an N-action) on it
11:03:23 <oklopol> now what we do is we can put a topological partition on the space
11:03:27 <cheater> i see Morse and Shannon being mentioned in this paper
11:03:40 <cheater> ok, go on
11:03:51 <oklopol> this means that we have a finite disjoint union of open sets such that their union is dense
11:05:47 <oklopol> now, for "almost every" point, there's a unique sequence of open sets which it goes through, that is, for all almost all x in your dynamical system, there's a sequence (s_i)_i such that T^i(x) is in U_i for all i
11:06:21 <oklopol> here, almost all obviously means residual
11:06:39 <cheater> define residual
11:06:54 <cheater> do you mean measure 0?
11:06:55 <oklopol> a countable union of complements of open dense sets
11:06:56 <oklopol> no
11:07:08 <oklopol> that's why it was obvious
11:07:20 <oklopol> it exactly coincided with the definition
11:07:33 <cheater> define residual
11:08:01 <oklopol> a residual set is a set A that you can represent as a a countable union of complements of open dense sets?
11:08:04 <oklopol> *-a
11:08:45 <cheater> so those "almost all x" define a residual set?
11:08:52 <oklopol> ah!
11:09:03 <oklopol> yeah almost all obviously means complement of residual :D
11:09:11 <oklopol> i now understand your confusion.
11:09:37 <oklopol> residual sets are "small"
11:09:45 <oklopol> in topology
11:09:58 <cheater> i realize that, i was just wondering what you're being so smug about
11:10:02 <cheater> because it made no sense
11:10:13 <oklopol> was i being smug?
11:10:16 <cheater> so anyways what do you need this Z-action for?
11:10:31 <oklopol> oh the obviously. yeah i just meant it was exactly the definition
11:10:56 <cheater> is it to define the topology?
11:11:30 <oklopol> no, it's to get a dynamical system, topological spaces are a bit boring without an action.
11:11:54 <cheater> i wouldn't know
11:12:12 <oklopol> well the point is we just start with a space and a Z-action
11:12:16 <oklopol> we don't ask why
11:12:40 <cheater> i did a lot of interesting stuff in topology in university without the notion of an action, mostly weird shit related to metric spaces
11:13:03 <oklopol> well i personally just love general topology, but i've been told soooo many times that no one does that anymore so i shouldn't either
11:13:18 <cheater> of course they do
11:13:30 <cheater> gauge integrals are hot shit right now
11:13:38 -!- aloril has quit (Ping timeout: 255 seconds).
11:13:59 <oklopol> well of course they do, and in fact symbolic dynamics is way less known than general topology. in fact no one knows what it is like ever.
11:14:08 <cheater> you've obviously been tricked into doing whatever the person wanted you to do instead of marvellous general topology
11:14:15 <cheater> ^_^
11:14:41 <oklopol> if the person wanted me to do whatever i like in a different field from his with a different supervisor, then he has been successful
11:14:59 <cheater> maybe he was corrupt
11:15:20 <cheater> for advising you this way, he received better chalk for his lab
11:15:23 <oklopol> gauge integrals do not at all sound like general topology
11:15:27 <cheater> i've seen that happen
11:15:28 <oklopol> hmm
11:15:32 <oklopol> that sounds likely
11:15:38 <cheater> AHA!
11:16:08 <oklopol> anyhow i wasn't finished
11:16:28 <cheater> oh there's more
11:16:29 <cheater> ok
11:16:37 <oklopol> so now for many many x (and in particular at least one...) we get some sequence of symbols, indexed by whatever our action was by
11:16:38 <cheater> so what would such a Z-action look like
11:16:42 <oklopol> so say S^\Z
11:16:58 <cheater> what's \Z?
11:16:59 <oklopol> well for instance multiplication by 2 in [0, 1)
11:17:04 <oklopol> sorry that's integers
11:17:13 <cheater> oh
11:17:15 <cheater> ok
11:17:24 <oklopol> my latex notation has gotten stuck
11:17:33 <cheater> not good enough
11:17:42 <oklopol> i used to use \mathbb{Z}
11:17:44 <cheater> wait, so is this Z-action badly defined?
11:17:57 <cheater> as in, 0.5 * 2 = 1 which is not in the integral
11:18:00 <cheater> or is it modulo 1?
11:18:02 <oklopol> no, it's completely defined in the space X of the dynamical system
11:18:11 -!- derdon has joined.
11:18:23 <cheater> let's say our space is S^1
11:18:26 <oklopol> yeah sure modulo 1. i was gonna say torus at first but then i didn't know what you understand by that.
11:18:27 <oklopol> yeah
11:18:32 <cheater> and we define our action to be S^ZZ
11:18:46 <cheater> which is, btw, how you write integers if you can't be fucked :D
11:18:46 <oklopol> wellllll
11:19:08 <cheater> then our action just makes the points map to the antipode, right?
11:19:13 <cheater> or, hm
11:19:16 <cheater> no, it doesn't
11:19:22 <cheater> right ok
11:19:29 <cheater> anyways, i got the hang of it and have a mental picture
11:19:30 <kallisti> @hoogle Product
11:19:30 <lambdabot> Prelude product :: Num a => [a] -> a
11:19:30 <lambdabot> Data.List product :: Num a => [a] -> a
11:19:30 <lambdabot> Data.Monoid Product :: a -> Product a
11:19:31 <oklopol> the action can't really be S^ZZ, the action is a function from X to X. say multiplication by 2
11:19:40 <kallisti> > 2 :: Product 2
11:19:40 <lambdabot> Only unit numeric type pattern is valid
11:19:50 <kallisti> oh
11:19:52 <kallisti> > 2 :: Product Int
11:19:53 <lambdabot> No instance for (GHC.Num.Num (Data.Monoid.Product GHC.Types.Int))
11:19:53 <lambdabot> arisin...
11:19:59 <cheater> yes, the "multiplication by 2" happens on the parametrization of S to [0, 1) obviously
11:20:27 <cheater> you could call the action "multiplication of complex argument by 2" or something
11:20:39 <kallisti> it would be nice if Sum and Product had Num instances, if only for the integer overloading.
11:20:46 <cheater> that too is a Z-action, right?
11:20:58 <oklopol> well on what space?
11:21:04 <oklopol> see we usually want a compact one
11:21:16 <cheater> "multiplication of complex argument by 2" on S^2
11:21:19 <cheater> er
11:21:21 <kallisti> you know who's a boss?
11:21:21 <cheater> on S^1
11:21:27 <kallisti> Grigori Perelman.
11:21:31 <cheater> boring
11:21:43 <cheater> oklopol: that's valid, right?
11:22:05 <oklopol> well multiplication by 2, doesn't that just multiply the length by 2 and take it outside S^1?
11:22:09 <oklopol> or what do you mean by that
11:22:22 <cheater> you missed the "of the argument"
11:22:27 <cheater> Arg(z)
11:22:51 -!- sebbu3 has joined.
11:22:59 -!- sebbu3 has quit (Changing host).
11:22:59 -!- sebbu3 has joined.
11:23:19 <cheater> hmm maybe it looked like "argument of a function" but it meant "argument of the number" :D
11:23:29 <oklopol> cheater: argh, i just realized residual is a countable intersection of dense open sets. you should always take the concept and its negation and guess which makes more sense because i just usually think of them as the same concept.
11:24:01 <oklopol> yeah as you may be able to tell, i'm not always that great with terminology.
11:24:01 <cheater> they're isomorphic modulo sign of the truth function
11:24:08 <oklopol> yes!
11:24:09 <oklopol> :D
11:24:27 <oklopol> but ummmmmmmmmmmm
11:24:31 <cheater> so do you understand this function i have defined
11:24:42 <oklopol> if argument is angle then yes
11:25:25 <oklopol> and it's just multiplying by a different number essentially
11:25:32 <kallisti> in cologic, monads are just endofunctors of categories in the monoid.
11:25:52 <kallisti> (also perhaps Soviet Russia)
11:26:24 -!- sebbu2 has quit (Ping timeout: 252 seconds).
11:26:31 <cheater> no in fact it's not multiplying by a different number, it's multiplying by *the same* number
11:26:39 <oklopol> cheater: in any case we have a partially defined itinerary function from X to S^ZZ. the image of this gives us a so-called subshift (what i research) in S^ZZ, that is, a closed and shift-invariant subset.
11:27:21 <cheater> let's say my X is this S^1 as i have defined
11:27:32 -!- aloril has joined.
11:27:33 <cheater> and the action is this multiplication of the angle
11:27:42 <cheater> what does the function from X to S^ZZ look like?
11:27:59 <oklopol> well we have to choose a partition
11:28:11 <cheater> let's say the partition is something like..
11:28:20 <kallisti> your mom claims to be exclusive or, but I know she's really biconditional.
11:28:21 <kallisti> ZING
11:28:26 <kallisti> I am on a role
11:28:27 <cheater> let's say it's given by the 10th roots of unity
11:28:34 <kallisti> so, I'm going to go to sleep, in order to celebrate.
11:28:38 <oklopol> kallisti: nite
11:28:45 <kallisti> ^celebrate
11:28:46 <fungot> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/
11:28:46 <myndzi> | | | `\o/´ | | | `\o/´ | | |
11:28:46 <myndzi> /< |\ /| | >\ /´\ >\ | |\ /'\ /´\
11:28:46 <myndzi> (_|¯'¯|_) /'\
11:28:46 <myndzi> (_| |_)
11:29:01 <oklopol> cheater: can we use 2nd roots of unity :D
11:29:12 <cheater> no but we can use 4th
11:29:18 <cheater> 1, -1, i, -i
11:29:22 <oklopol> okay
11:29:23 <oklopol> thanks
11:29:28 <cheater> but only this once
11:29:31 -!- Frooxius has quit (Ping timeout: 272 seconds).
11:30:20 <oklopol> so, what the map to S^ZZ would do (S = {1, -1, i, -i}, say, and symbol a means the interval starting after a)
11:31:09 <oklopol> is take the two directional orbit, and give the sequence of which quarters your point is
11:31:17 <oklopol> actually not sure this particular one can be 2-directional
11:31:23 <cheater> oh so this S was not short for "sphere"?
11:31:33 <cheater> S is the set of indices of partitions yes?
11:31:33 <oklopol> heh no xD
11:31:40 <oklopol> yes
11:32:02 <oklopol> we always call it S because the more standard \Sigma is annoying to type
11:32:39 <oklopol> so.
11:33:12 <cheater> it would've been useful had you brought this up that it's normally \Sigma
11:33:26 <oklopol> if you take the real 0.000001 in [0, 1) (so just above 1 along complex unit ball)
11:33:35 <cheater> because \Sigma is normally used for finite or countable sets
11:33:47 <oklopol> well i did mention that the partition is always finite.
11:33:49 <cheater> yes i take the real
11:33:52 <cheater> what's next
11:34:03 <cheater> it's in the "1" partition right?
11:34:04 <oklopol> actually just take 0.0^n1 for a large n
11:34:46 <oklopol> yes, the itinerary should look something like .11111111... for some time ...111i and then maybe -i directly dunno
11:34:48 -!- Frooxius has joined.
11:34:50 <oklopol> erm
11:34:53 <oklopol> what the fuck
11:35:03 <oklopol> yeah i guess that was your action
11:35:31 <oklopol> in terms of RR/ZZ, what was your action again?
11:35:36 <cheater> is this somehow related to p-adic numbers
11:35:38 <oklopol> i mean i didn't actually get it, i just wanted to keep talking
11:35:49 <cheater> you *never* say RR
11:35:58 <cheater> you do |R ! :D
11:36:29 <oklopol> well there are interesting connections but sofar this is just a way to get from topological dynamical systems to symbolic ones.
11:36:30 <cheater> right, um, the action was you take a point on the unit circle on the complex plane
11:36:36 <cheater> you multiply its angle by 2
11:36:37 <oklopol> mmhmm
11:36:41 <cheater> and that's your action
11:37:03 <oklopol> okay so it's just multiplication by 2
11:37:10 <oklopol> on RR/ZZ
11:37:19 <oklopol> which i prefer
11:37:20 <cheater> yes
11:38:04 <oklopol> yeah so in that case, you would get some 1's and then a -1, then i guess -i and then no one knows.
11:38:19 <cheater> no we'd get some 1's
11:38:21 <cheater> and um
11:38:26 <cheater> then probably an I
11:38:28 <oklopol> i think the map to S^NN is injective here
11:38:36 <cheater> and then probably a -i
11:38:42 <oklopol> where defined
11:38:57 <cheater> why are we using the naturals now
11:39:04 <oklopol> yeaaah when i said -1 i meant i.
11:39:04 <cheater> and not whole numbers
11:39:15 <oklopol> well i didn't know if this was reversible because i didn't understand your action
11:39:22 <oklopol> but yeah it's reversible
11:39:44 <oklopol> (the reverse is *drumroll* division by 2)
11:39:48 <oklopol> erm
11:39:52 <oklopol> i'm a retard :D
11:40:02 <cheater> is it really reversible
11:40:05 <cheater> i don't think it is
11:40:07 <oklopol> of course not
11:40:29 <cheater> so if it's not reversible what happens?
11:40:45 <oklopol> well then you usually just take an NN action.
11:40:48 <cheater> why is it important whether it is or is not reversible?
11:40:50 <cheater> ok
11:40:57 <cheater> so let's first use a reversible one
11:41:07 <cheater> let's say "adding 0.1 in R/ZZ"
11:41:20 <oklopol> yeah, that's better
11:41:32 <oklopol> although, that's kind of a trivial dynamical system
11:41:40 <oklopol> because 0.1 is rational
11:41:43 <cheater> yes
11:41:47 <cheater> ok let's do 0.pi
11:41:51 <oklopol> :P yeah
11:42:01 <cheater> which is just pi/10
11:42:48 <oklopol> then if you say partition at the middle, you get some crazy subset of S^ZZ, and the original system can be to some extent studied by using the subset of S^ZZ. i don't really know how :D.
11:42:49 <cheater> and we've got our intervals defined at 0, 0.25, 0.5, 0.75
11:43:08 <cheater> which correspond to 1, i, -1, -i
11:43:16 <oklopol> i don't really know any properties of pi that would let me investigate this further than "stuff happens!".
11:43:25 <cheater> ok
11:43:27 <cheater> so wait
11:43:41 <cheater> if our Z action is this "add pi/10"
11:43:53 <oklopol> yeah
11:43:54 <cheater> what does the function from X to S^ZZ look like
11:43:58 <cheater> it's just a recording
11:44:06 <cheater> of what a specific point does?
11:44:16 <cheater> like a .... sampled signal?
11:44:31 <oklopol> that's why multiplying by 2 is nice i guess, you get exactly the binary representation
11:44:41 <oklopol> we got sidetracked and i forgot i was doing that
11:44:41 <cheater> do you?
11:44:49 <cheater> that's really cool
11:45:16 <oklopol> well multiplying by 1 is shifting by 1
11:45:19 <oklopol> so umm
11:45:26 <cheater> what
11:45:32 <cheater> that made no sense
11:45:34 <oklopol> shifting the binary representation
11:45:39 <oklopol> argh
11:45:39 <oklopol> 2
11:45:41 <oklopol> afjaiowjfoiawejfoiwj
11:45:42 <oklopol> oiwaejfoiawejfoiaweoj
11:45:43 <oklopol> fuckfuckfuck
11:45:47 <oklopol> multiplying by 2
11:45:57 <cheater> are you
11:45:58 <cheater> sure?
11:46:02 <oklopol> :D
11:46:05 <oklopol> now i'm pretty sure.
11:46:17 <oklopol> 1.0011101 * 2 = 10.011101
11:46:20 <cheater> you can still ask the audience or call a friend
11:46:21 -!- oerjan has joined.
11:46:29 <oklopol> i called a friend
11:46:32 <oklopol> aaaaanywho
11:46:35 <cheater> what did he say
11:46:41 <cheater> "narf"
11:46:41 <oklopol> he's oerjan, nothing yet.
11:46:45 <cheater> oh
11:46:55 <cheater> oerjan: don't tell him anything!
11:46:59 <oklopol> anyhow so now the first bit of the number can be detected by the partition
11:47:22 <oerjan> wut
11:47:23 <oklopol> since if it starts with 1, then it's in the top half (degenerate points like 0.011111111... aren't a problem since those don't fall in either partition element)
11:47:43 -!- Frooxius_ has joined.
11:48:04 <cheater> that's cool
11:48:09 <oklopol> so our open sets are (0,0.5) and (0.5,1)
11:48:12 <cheater> best ever way to reason about fractions
11:48:19 <cheater> does it work for decimal fractions too?
11:48:22 <oklopol> sure
11:48:29 -!- Frooxius has quit (Ping timeout: 260 seconds).
11:48:42 -!- Frooxius_ has changed nick to Frooxius.
11:48:45 -!- nooga has joined.
11:49:09 <oklopol> but all of this stuff gets way more interesting when you have more dimensions and know stuff about matrices. i can't really say much about that without a reference.
11:49:11 <cheater> so i can take a number in [0, 1), define some partitions, keep multiplying that number by 10, and i get the decimal representation?
11:49:23 <cheater> hmm i can see how that works
11:49:37 <oklopol> yeah, the partition is not (0, 0.1) etc
11:49:44 <cheater> is not?
11:49:47 <cheater> what is it then?
11:49:51 <oklopol> asdflkasfjklsdjalf
11:49:53 <oklopol> NOW
11:49:53 <oklopol> NOW
11:49:54 <oklopol> NOW
11:49:55 <oklopol> NOW
11:50:03 <cheater> wow
11:50:06 <oklopol> i'm going to stop living for now okay
11:50:12 <cheater> k np
11:50:19 <oklopol> this is not working today
11:50:28 <cheater> now?
11:50:31 <cheater> this is now working today?
11:50:35 <oklopol> going to the shoppe, buying a thing, and enjoying it.
11:50:43 <cheater> njoy
11:50:43 <oklopol> :(
11:50:45 <oklopol> you are mean
11:50:46 <cheater> :(
11:50:48 <oklopol> so mean
11:50:52 <cheater> average?
11:50:54 <oklopol> yeah
11:50:57 <oklopol> i suppose
11:51:09 <oerjan> <fizzie> And I just woke up, having "just rested a bit" around localtime-23; should "wake up" at 7- or 8-ish instead. <-- wait, you are supposed to be the one person in the channel with a normal sleeping schedule...
11:51:13 <cheater> haha
11:51:28 <oklopol> yeah i wondered about that oo
11:51:28 <cheater> oklopol: thx for letting me know about those symbolic thingies
11:51:31 <cheater> it's really cute
11:51:33 <fizzie> oerjan: I have, it was just a mishap.
11:51:55 <oklopol> cheater: maybe someday i'll talk to you about the actual symbolic thingies themselves which i actually know something about, this is just their motivation
11:52:07 <cheater> ok
11:52:09 <cheater> so tell me
11:52:17 <cheater> what are the actual symbolic thingies themselves?
11:52:20 <oklopol> it's like formal language theory ON CRACK
11:52:32 <cheater> why do you need multiple dimensions
11:52:36 <oklopol> subshifts, that is, closed shift-invariant subsets of S^ZZ
11:52:44 <cheater> what is a shift
11:52:54 <oklopol> multiple dimensions are nice so that linear maps give more interesting dynamics
11:53:07 <oklopol> shift means you take the point and shift the indices to the right
11:53:09 <oklopol> so
11:53:20 <oklopol> shift(x)_i = x_{i+1}
11:53:36 <cheater> don't you mean shift(x_i) ?
11:53:44 <oklopol> no x_i is a symbol
11:54:01 <oklopol> you can't shift a symbol, you shift a "point", that is, an element of S^ZZ
11:54:05 <cheater> what does shift(x)_i mean?
11:54:13 <oklopol> the ith coordinate of the shift of x
11:54:19 <oklopol> x is a point
11:54:25 <cheater> hmmm
11:54:29 <oklopol> it just means shifting the whole point to the left
11:54:37 <cheater> so
11:54:38 <oklopol> when you think of it as an infinite sequence
11:54:38 -!- sebbu3 has changed nick to sebbu.
11:54:48 <cheater> [0, 1, 2] -> [2, 0, 1] ?
11:55:21 <oklopol> well no rotation since these are infinite. and i'm not sure you shifted in the right direction.
11:55:22 <oklopol> but so
11:55:42 <cheater> ah yes ok right
11:55:54 <oklopol> the point ...01001011.0111... where . denotes where index 0 is, would shift to ...010010110.111...
11:56:05 <cheater> so 12345... -> 2345...
11:56:17 <cheater> ohh right
11:56:17 <oklopol> yeah. for a one-directional sequence
11:56:23 <oklopol> i always do two-directional
11:56:28 <oklopol> because that's cooler
11:56:30 <cheater> because those have indices in Z?
11:56:36 <oklopol> yeah
11:56:46 <oklopol> so i feel like zorro
11:56:53 <oklopol> when i index
11:57:01 <cheater> ok sooooo
11:57:21 <oklopol> that was the shift part, do you know what shift-invariant means?
11:57:25 <oklopol> i mean can you guess
11:57:40 <cheater> with an S^ZZ which is {0, 1} we have only a few subshifts right?
11:58:03 <oklopol> S is {0, 1}. S^ZZ is every sequence of 0's and 1's.
11:58:04 <cheater> ...0.0... and ...1.1... ?
11:58:05 -!- Frooxius has quit (Ping timeout: 245 seconds).
11:58:15 <cheater> ah right yes
11:58:18 <oklopol> also 0101011101011110101000010101011 etc
11:58:27 <oklopol> that's called the full shift
11:58:29 <cheater> why is that a subshift?
11:58:37 <oklopol> well do you see why it's shift-invariant
11:58:41 <cheater> no
11:58:49 <oklopol> if you shift a point, it's still a point
11:59:01 <oklopol> shift-invariant means the _set_ of points is mapped to itself
11:59:09 <oklopol> the points themselves aren't
11:59:31 <cheater> is the whole of S^ZZ shift-invariant
11:59:48 <oklopol> that's what confused you i suppose. if the points are actually fixed points of the shift, then they are exactly ...0.0... and ...1.1... as you said
11:59:51 <oklopol> yes
12:00:14 <cheater> does it have proper subsets other than the trivial {,,,0,,,, and ...1...} which are shift-invariant?
12:00:16 <oklopol> because if you shift a point, it's some other point over the same alphabet S, and every point over S is in S^ZZ
12:00:32 <oklopol> yes. it even has closed shift-invariant subsets
12:00:35 <oklopol> a fuckload of them.
12:00:47 <oerjan> ^ul ((0)(1)):^!S(~:^:S*a~^~*a*~:^):^
12:00:47 <fungot> 011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110011010011001011010010110011010011001011001101001011010011001011001101001100101101001011001101001011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110011010011001011010010110011010010110 ...too much output!
12:00:52 <oklopol> for instance, the set of points containing at most one symbol 1
12:01:00 * oerjan almost does that from memory now
12:01:01 <oklopol> that's closed and shift invariant
12:01:01 <cheater> cool
12:01:10 <cheater> why "at most"?
12:01:18 <cheater> oh i see
12:01:18 <cheater> ok
12:01:18 <oklopol> cheater: if we say exactly one, it's not closed
12:01:26 <cheater> why is it not closed?
12:01:29 <oklopol> because you can shift the one to infinity, so to speak.
12:01:34 <cheater> can you?
12:01:38 <oerjan> (morse-thue sequence; gives a subshift which is minimal)
12:01:51 <oklopol> yeah, see the topology here is given by the following metric
12:01:54 <cheater> ah closed as in topologically closed
12:02:01 <cheater> not closed as in closed under the function
12:02:08 <oklopol> ah yea
12:02:09 <oklopol> h
12:02:32 <oklopol> is it sufficient to say S has the discrete topology and S^ZZ the product topology?
12:02:40 <oklopol> that's what we're using
12:02:43 <cheater> no
12:02:49 <cheater> i don't know what the product topology is
12:02:50 <oklopol> okay then i'll give the metric
12:02:59 <oklopol> that's easier to work with maybe
12:03:07 <cheater> OK!!!!
12:03:35 <oklopol> d(x, y) = 2^{-n} where n is the smallest absolute value of an index i such that x_i != y_i
12:03:52 <oklopol> so if you differ at the origin (at coordinate 0), then your distance is 1
12:04:10 <oklopol> for instance
12:04:16 <oklopol> erm
12:04:21 <oklopol> did i do that right...
12:04:46 <oklopol> yeah i think i did
12:04:51 <cheater> or did you mean sum
12:04:55 <oklopol> no
12:05:02 <cheater> so if i'm doing a shift the numbers might keep on jumping around wildly right?
12:05:29 <oklopol> you can also use d(x, y) = 1/{i + 1} where i is the smallest absolute value of a difference
12:05:34 <oklopol> cheater: yes!
12:05:46 <oklopol> i mean the distances
12:05:52 <cheater> that could be used to create a new sequence
12:05:56 <cheater> is that sequence somehow related
12:06:24 <cheater> can you like
12:07:11 <oklopol> so you mean
12:07:16 <cheater> let's say you have a sequence s
12:07:20 <oklopol> okay
12:07:39 <cheater> and then you have a sequence of sequences {shift^k(s)}
12:07:51 <oklopol> oh i thought two would be enough
12:08:10 <cheater> and then you define a sequence s' = {d(shift^k(s), shift^(k+1)(s)}
12:08:23 <cheater> can you construct s knowing s'?
12:08:44 <oklopol> well no
12:08:50 <cheater> why
12:08:50 <oklopol> erm
12:09:05 <cheater> well 000 and 111 have the same s'
12:09:08 <oklopol> in the binary case, you may be able.
12:09:11 <oerjan> no, you cannot distinguish s from (1-s_i)_i
12:09:14 <oklopol> yeah
12:09:14 <oerjan> i think
12:09:18 <cheater> but other than that
12:09:25 <cheater> are there interesting cases when you can?
12:09:28 <oklopol> but it may be just symbol permutations
12:10:42 <oerjan> hm s' tells you exactly the coordinates where s and shift(s) differe, i think
12:10:43 <oklopol> yeah it's just symbol permutations
12:10:43 <oerjan> *-e
12:10:44 <oklopol> yeah
12:11:02 <oerjan> so indeed you can deduce everything other than total flipping
12:11:04 <oklopol> it seems you're still two seconds better at math
12:11:11 <oerjan> XD
12:11:35 <oklopol> oh right, i have to go to the shop
12:12:08 <cheater> i think you could call ' the differential
12:12:09 <cheater> since like
12:12:14 <cheater> or the derivative
12:12:20 <cheater> since it removes the unnecessary information
12:12:43 <cheater> much like the derivative of a real function removes unnecessary information about the DC component
12:12:58 <cheater> what does s'' tell you about s?
12:13:01 <oklopol> well the problem is the alphabet is not finite. unless you just take the information whether the bit changes.
12:13:26 <cheater> i thought the alphabet was just {0, 1}
12:13:29 <oerjan> oklopol: i don't think it's just symbol permutations if it's more than binary
12:13:37 <oklopol> oerjan: yeah i meant binary
12:13:38 <cheater> and S^ZZ is all sequences in that alphabet
12:13:40 <oerjan> since it only tells if neighbors are equal or not
12:13:42 <oklopol> no idea what happens otherwise
12:13:45 <oklopol> oh right
12:13:51 <oklopol> hmm
12:13:55 <cheater> let's talk about binary first though
12:13:59 <cheater> what does s'' symbolize?
12:14:00 <oklopol> yeah then that will probably not characterize it
12:14:32 <oerjan> cheater: s' is not the same kind of sequence as s, though - the elements of s' are reals, not symbols
12:14:34 <oklopol> well i think has something to do with xor in the binary case
12:14:48 <oklopol> oerjan: "<oklopol> well the problem is the alphabet is not finite. unless you just take the information whether the bit changes."
12:14:57 <oklopol> i guess you were more specific
12:14:58 <oerjan> i suppose that's not really a problem for your definition
12:15:06 <oklopol> ohhh
12:15:10 <oklopol> you mean for s''
12:15:18 <oerjan> oklopol: being two seconds ahead is so much easier when i don't read what you write :P
12:15:20 <oklopol> yeah it shouldn't be a problem
12:15:59 <oklopol> cheater: so wait are you a mathematician
12:18:32 <cheater> sorry i was right in the middle of a triceps set
12:18:36 <cheater> no i just lift things
12:19:20 <oklopol> until you can lift even bigger things?
12:19:26 <cheater> yes
12:19:32 <cheater> i have a full set of weights
12:19:43 <oerjan> i hear the traditional method is to get a calf.
12:19:56 <cheater> oerjan: oh sorry i forgot to add you need to decimate the result again
12:20:01 <cheater> i.e. re-sample it
12:20:10 <cheater> or in other words, truncate back to binary
12:20:23 <cheater> by applying the transform from X to S
12:20:45 <oerjan> i didn't hear about any X.
12:20:54 <cheater> ok sorry
12:21:14 -!- Phantom__Hoover has quit (Ping timeout: 244 seconds).
12:21:31 <cheater> we have an X which is [0, 1) and we have a Z-action on it
12:21:42 <cheater> we define two subsets, the upper and lower half
12:22:02 <oerjan> i don't think it makes sense to say s' is in X.
12:22:09 <cheater> we take a point x0 in X which we then keep applying this Z-action to
12:22:25 <cheater> this way we get s = {x_k, k \in ZZ}
12:22:26 <cheater> right?
12:22:27 <oerjan> although you _could_ interpret 1/2^n as n 0's followed by a 1, or something.
12:22:39 <cheater> are you following me so far?
12:22:45 <cheater> never mind your interpretations
12:23:21 <cheater> now let's say our partition is different
12:23:29 <oerjan> yes. however the problem here is that if you apply that transformation to each element of s', you get a sequence of sequences, not a single one
12:23:42 <cheater> no i don't
12:23:42 <oerjan> so you cannot reapply ' to that
12:23:47 <cheater> that's just your interpretation, i never said that
12:24:03 <cheater> ok now let's say we have the sierpinski set on [0, 1]
12:24:03 <oerjan> ...
12:25:02 <oerjan> i'm sorry but i detect troll mode, and so i won't participate any longer.
12:25:11 <cheater> i think you're full of shit
12:25:28 <cheater> you don't follow and therefore you start hating
12:25:36 <cheater> well done
12:25:49 <cheater> pat yourself on the back
12:26:08 <oerjan> fine, it's possible, but i still suggest not angering me.
12:27:07 <cheater> well, i hope you realize that displays of e-machoism are very basic intellectually
12:27:38 <cheater> anyways, if you're not interested i'll go do something better with my time
12:27:40 <cheater> bbl
12:32:52 -!- Frooxius has joined.
12:39:55 -!- Phantom__Hoover has joined.
12:51:49 <oklopol> my boobs are made for walking
12:53:02 <oerjan> how nice
12:53:47 <olsner> my boobs are made for doing nothing
12:53:58 <ion> I lost my boobs
12:54:10 <olsner> ion :(
12:54:16 <oklopol> ion: are you a breast cancer survivor?
12:54:36 <ion> Nah, they just went away as a side effect of losing weight.
12:55:09 <ion> I don’t miss them. I’ve never considered myself a huge fan of moobs.
12:55:30 -!- Frooxius has quit (Ping timeout: 240 seconds).
12:56:02 <oerjan> wait, you mean they can be made to go away again?
12:56:06 <oerjan> there is still hope!
12:56:27 <oerjan> a small one, given my general hate of physical exercise, but still
12:57:03 <oerjan> (also general hate of being hungry)
12:57:58 <olsner> I don't think either of exercise or being hungry is necessary
12:59:09 <ion> I did no physical exercise and didn’t reduce the amount i eat (until that happened naturally as a consequence of losing weight). I didn’t even try to lose weight (although it was a welcome surprise). I just happened to find out about capsaicin’s effect on weight by it happening to me.
12:59:24 <olsner> WOW! knowledge from wikipedia: 318 is the natural number following 317 and preceding 319.
12:59:34 <ion> You don’t say!
12:59:58 <olsner> no, I don't, wikipedia do
13:00:02 <olsner> does
13:00:45 <ion> > [succ 317, pred 319]
13:00:46 <lambdabot> [318,318]
13:00:49 <ion> lambdabot seems to agree.
13:00:59 <olsner> she does know stuff, that lambdabot
13:14:05 -!- Phantom__Hoover has quit (Ping timeout: 276 seconds).
13:15:05 <mroman> Eating chili helps lose weight? Interesting.
13:15:44 <oklopol> now oerjan just has to choose between his hate of exercise, hate of hunger and hate of chili
13:19:16 <mroman> Luckily I don't have to lose weight.
13:19:52 <oklopol> not your *own* weight
13:22:04 <mroman> What's that supposed to mean?
13:22:45 <oklopol> are you asking me?
13:23:14 -!- oerjan has quit (Quit: Lost terminal).
13:23:18 <mroman> Yes ;)
13:23:29 <oklopol> i don't know, it sounded like the thing to say.
13:25:37 <ion> http://www.sciencenews.org/view/generic/id/59930/title/Science_%2B_the_Public__Understanding_why_hot_peppers_are_slimming
13:26:43 -!- Frooxius has joined.
13:27:12 <ion> I was puzzled for a while when my weight started dropping, until i realized it coincided with the time i had gotten used to eating ~1M SHU stuff daily. Googling revealed stuff like that.
13:27:41 <ion> http://johan.kiviniemi.name/health/weight.png
13:28:01 <oklopol> you're finnish?
13:28:36 <ion> yeah
13:28:50 <oklopol> i weight 88 or something and i don't have boobs
13:29:14 <ion> Different height, different body structure, different muscle/fat ratio, …
13:29:35 <oklopol> how tall are you? you don't have the chart on capsaicin's effect on your height
13:29:42 <oklopol> i assume that went don't linearly
13:29:45 <oklopol> with weight
13:30:02 <mroman> 88kg?
13:30:06 <oklopol> *down
13:30:08 <mroman> Or some weird american unit? ;)
13:30:15 <oklopol> kg obviously
13:30:17 <oklopol> i'm finnish too
13:30:51 <ion> 1.76 m. (TBH, the moobs were quite insignificant, but not inexistent.)
13:30:51 <oklopol> what's SHU stuff
13:30:57 <ion> Scoville heat unit
13:31:00 <oklopol> i'm about 1.8
13:31:13 <mroman> 1.69, 65kg
13:31:13 <oklopol> okay
13:32:54 <mroman> I love physical exercise as much as esoteric programming languages.
13:33:01 <mroman> That's a good thingy.
13:33:04 <mroman> ehm.
13:33:11 <mroman> *dictionary*
13:33:27 <mroman> attitude
13:34:05 <oklopol> i stopped jogging when winter.
13:34:15 <oklopol> ion: helsingki?
13:34:18 <oklopol> *helsinki
13:34:21 <ion> Tampere
13:34:44 <oklopol> university?
13:39:07 <ion> nope
13:39:18 <oklopol> work?
13:39:20 <ion> nope
13:39:23 <oklopol> high school?
13:39:29 <ion> nope :-P
13:39:36 <oklopol> just plain chillin'?
13:40:13 <ion> I was in TAMK for a year and worked a bit, but developed some health problems which put an end to that for now.
13:40:32 <oklopol> i'll take that as a "yes, BUT"
13:45:43 -!- Ngevd has joined.
13:51:52 -!- Ngevd has quit (Read error: Connection reset by peer).
13:56:06 -!- oerjan has joined.
14:10:30 <mroman> My new esolang is coming along great \o/
14:10:30 <myndzi> ¦
14:10:30 <myndzi> ´¸¨
14:10:54 <oerjan> myndzi: you should get that man to a hospital
14:10:57 <mroman> bot? (\o/)
14:10:57 <myndzi> |
14:10:57 <myndzi> /|
14:11:06 <mroman> I see.
14:11:19 -!- Ngevd has joined.
14:11:24 <oerjan> script
14:12:09 <oerjan> ^celebrate
14:12:09 <fungot> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/
14:12:09 <oerjan> fungot?
14:12:09 <fungot> oerjan: don't do it right! but no, not in mine fibonacci numbers would take a look at
14:12:10 <myndzi> | | | `\o/´ | | | `\o/´ | | ¦
14:12:10 <myndzi> /< |\ |\ | /| /| /`\ | /< /| ´¸¨
14:12:10 <myndzi> (_|¯`\ /'\
14:12:10 <myndzi> |_) (_| |_)
14:13:15 <oerjan> fungot: fibonacci, eh?
14:13:16 <fungot> oerjan: which i'll try and do something new things get burned and you have some hope to actually debug it...
14:13:21 <oerjan> ^style
14:13:21 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
14:14:12 <oerjan> AAAAAAAAAAAAAAAAAAAAA chainsaw
14:14:22 <mroman> fungot: fungot
14:14:22 <fungot> mroman: you're doing the equivalent of `',x using only quasiquote?! :(
14:15:36 <oerjan> ^ul ((*)(*))(~:^~Sa~^*a*~:^):^
14:15:36 <fungot> ************************************************************************************************************************************************************************************************************************************************************************************************************************************ ...too much output!
14:15:38 <oerjan> oops
14:15:44 <oerjan> ^ul ((*)(*))(~:^~(/)*Sa~^*a*~:^):^
14:15:45 <fungot> */*/**/***/*****/********/*************/*********************/**********************************/*******************************************************/*****************************************************************************************/********************************************************************************* ...too much output!
14:15:50 <mroman> ^help
14:15:50 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
14:16:31 -!- Phantom__Hoover has joined.
14:17:24 <mroman> ^hs mapM id(" ">>["1234"])
14:17:49 -!- Ngevd has quit (Ping timeout: 260 seconds).
14:18:01 <oerjan> sorry, implementing haskell in funge98 is still a bit beyond mankind
14:18:38 <oerjan> ^source
14:18:38 <oerjan> fungot: why so slow?
14:18:38 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
14:18:39 <fungot> oerjan: http://www.dilbert.com/ comics/ ft/ 2005/ 02/15-feb-2005 is there a rough oklotalk spec anywhere?)
14:19:14 <oerjan> fungot: not in dilbert, i suspect
14:19:15 <fungot> oerjan: ask questions, you have to be commands, and i suspect the deficiency is in unix, but isn't
14:19:32 -!- sebbu2 has joined.
14:19:32 -!- sebbu2 has quit (Changing host).
14:19:32 -!- sebbu2 has joined.
14:21:24 * oerjan concludes that url has more than spaces wrong with it
14:21:41 -!- sebbu has quit (Ping timeout: 276 seconds).
14:22:04 -!- Ngevd has joined.
14:34:42 -!- Ngevd has quit (Read error: Connection reset by peer).
14:52:36 -!- oerjan has quit (Quit: leaving).
15:13:21 -!- kallisti has quit (Ping timeout: 252 seconds).
15:15:16 -!- kallisti has joined.
15:15:16 -!- kallisti has quit (Changing host).
15:15:16 -!- kallisti has joined.
15:15:46 <fizzie> fungot: Are you slow?
15:15:46 <fungot> fizzie: eval ( ( cons. 2)
15:15:54 <fizzie> Doesn't seem so slow.
15:17:10 <mroman> fungot: pointful (.foo).(bar)
15:17:10 <fungot> mroman: ( cadr fnord) doesn't faithfully preserve the meaning of " oklopol"? i thought it was apparent.
15:17:24 <mroman> Never does what I ask him to :(
15:17:25 <oklopol> :D
15:17:48 <mroman> fungot: Slap someone.
15:17:48 <fungot> mroman: " friends of brainfuck", it was easy to implement malloc and free; or you are studying cs right? which area is your main interest?
15:18:07 <fizzie> If you want a sycophant, lambdabot is right there.
15:20:05 <mroman> sycophant?
15:20:32 <fizzie> 1. sycophant, toady, crawler, lackey, ass-kisser -- (a person who tries to please someone in order to gain a personal advantage)
15:21:23 <mroman> I thought of psyo + elephant :D
15:21:26 <mroman> *psyco
15:23:07 <fizzie> lambdabot: Are you some sort of psychotic pachyderm?
15:23:13 <fizzie> Quiet guy.
15:23:21 <mroman> > 0
15:23:22 <lambdabot> 0
15:23:29 <mroman> :type 0
15:23:36 <mroman> > :type 0
15:23:37 <lambdabot> <no location info>: parse error on input `:'
15:23:48 <fizzie> :t you-mean
15:23:48 <lambdabot> Not in scope: `you'
15:23:49 <lambdabot> Not in scope: `mean'
15:24:12 <mroman> ?type 0
15:24:13 <lambdabot> forall t. (Num t) => t
15:24:36 <fizzie> Or that.
15:24:39 <fizzie> @. unpl pl \f g (a,b) -> (f a, g b)
15:24:39 <lambdabot> (\ aa f -> (\ p w -> ((,)) (aa (fst p)) (f w)) >>= \ af -> snd >>= \ ae -> return (af ae))
15:24:54 <fizzie> Likes to do things the hard way.
15:34:19 -!- Ngevd has joined.
15:36:25 -!- lifthrasiir has quit (Quit: maintenance).
15:50:41 -!- sebbu2 has changed nick to sebbu.
15:56:21 -!- Ngevd has quit (Read error: Connection reset by peer).
16:12:33 -!- derdon_ has joined.
16:15:39 -!- derdon has quit (Ping timeout: 252 seconds).
16:56:56 -!- Phantom___Hoover has joined.
17:00:17 -!- Phantom__Hoover has quit (Ping timeout: 276 seconds).
17:38:10 -!- itidus20 has joined.
17:41:21 -!- itidus21 has quit (Ping timeout: 245 seconds).
18:04:50 -!- sebbu has quit (Read error: Connection reset by peer).
18:04:58 <nooga> starym
18:07:51 -!- sebbu has joined.
18:07:56 -!- sebbu has quit (Changing host).
18:07:56 -!- sebbu has joined.
18:08:52 -!- Klisz has joined.
18:16:28 -!- monqy has joined.
18:38:15 -!- centrinia has joined.
19:08:15 -!- ais523 has joined.
19:20:52 -!- augur has changed nick to Robbespierre.
19:21:10 -!- Robbespierre has changed nick to augur.
20:12:11 -!- lifthrasiir has joined.
20:16:07 -!- zzo38 has joined.
20:39:13 -!- oerjan has joined.
20:39:28 <zzo38> I thought you didn't know that already!!
20:39:45 -!- pikhq has joined.
20:40:00 -!- pikhq_ has quit (Ping timeout: 240 seconds).
20:42:19 <zzo38> Isn't it?
20:50:45 -!- Ngevd has joined.
20:51:09 <Ngevd> Hello!
20:55:08 <mroman> I so love pattern matching in my esolang <3
20:55:49 <mroman> http://pastebin.com/i26ezt5W <- looks kinda neat
20:56:56 <ais523> ooh, an esolang
20:57:44 <fizzie> Oh no, an esolang.
20:57:54 <mroman> Nothing rare amongst here I guess :)
20:58:04 <Ngevd> You'd think that, but no
20:58:17 <mroman> Who would have thought.
20:58:34 <Ngevd> Also, I think the programming tools on my graphical calculator are oddly suited for interpreting Numberwang
20:58:58 <fizzie> Ooh, a graphical calculator; which one?
20:59:23 <Ngevd> It's a Casio, and that's as much as I can tell you off the top of my head
20:59:23 <oerjan> what, an esolang? no way that's on topic here.
21:00:21 <fizzie> Unless it's about magick or something, then it might be.
21:02:35 <fizzie> Ngevd: So how does one program them? I'm just aware of TI-BASIC (the silliest sort of BASIC), and old HP calculators' RPL thing vaguely.
21:03:05 <Ngevd> You type in the program...?
21:03:19 <Ngevd> It's got if statements and for loops and while loops and gotos
21:03:39 <monqy> aaaahhh, gotos
21:04:21 <mroman> C also has gotos, so that does not tell us much ;)
21:04:33 <Ngevd> It's not C
21:04:46 <fizzie> Yes, I just wondered about the language. Whether it resembled something that exists.
21:06:34 <fizzie> Come to think of it, I guess the only two ways TI-BASIC actually resembles BASIC more than $generic_imperative_language are 1) the loads of limitations and 2) the "BASIC" in the name.
21:06:49 <Ngevd> BASIC-like, I believe
21:07:10 -!- oerjan has set topic: Now open for Pirates | Take a trip to see our forts | Get your esoloot here! | Claims elliott shortage hurts productivity "Absurd, arrr" | Glorious optators "be worried, arrr" about missing treasure | Based on the power of clichés! | Spotted marsh elliott spotted in other marsh | http://codu.org/logs/_esoteric/.
21:07:16 <zzo38> TI-BASIC isn't BASIC it is a different programming language
21:08:29 <mroman> http://en.wikipedia.org/wiki/Sharp_PC-1403 ftw.
21:08:30 <fizzie> (And RPL is vaguely Forthy instead.)
21:08:32 <zzo38> I have written programs for the TI-92. The programs run slowly, although if you know a few tricks you can speed it up a bit.
21:09:09 <fizzie> I've written some TI-BASIC "programs" for the TI-86, and the implementation sure is slow.
21:10:15 <fizzie> Then again, the TI-86 arithmetic routines are very very bloaty. (I've a friend who's poked them; and anyway ten-bytes-or-so BCD just won't be very fast anyhow.)
21:11:15 -!- Ngevd has quit (Read error: Connection reset by peer).
21:11:30 <fizzie> Isn't TI-92 that m68k one?
21:12:12 <ion> I know TI-96 is. Dunno about 92.
21:12:36 <fizzie> I recall that in some high-school exams the rules were that you could use a TI-86 but not a TI-92 because the latter did some symbolic derivation fluff.
21:13:07 <zzo38> fizzie: Yes; I think that was one reason, but there was also another reason being the TI-92 had a QWERTY keyboard.
21:13:15 <zzo38> So there were two reasons it wasn't allowed
21:13:39 <fizzie> A keyboard is a bit of a weird reason.
21:13:53 <ion> Err, wait. It’s been years since i used them and i utterly mixed up the numbers. Ignore what i said.
21:14:05 <zzo38> Yes but that is one of the reasons
21:14:21 <zzo38> (The symbolic derivation is another reason why it is disallowed)
21:14:26 <olsner> that makes no sense, what does the keyboard give you that you can't already do?
21:14:45 <ion> TI-89 is the one in know to have a 68000.
21:14:49 <fizzie> olsner: Maybe if the exam is about keyboard layouts?
21:14:54 <zzo38> I don't know, but it is a reason
21:14:55 <olsner> input is too damn fast on these new calculators, we need to slow people down!
21:15:07 <mroman> Is there a calculator with APL?
21:15:20 <mroman> That would really make me laugh :D
21:15:29 <zzo38> Make one!
21:15:30 <fizzie> 92 apparently also has, according to Wiki. Also I think I might've confused the 92 and 89 too.
21:15:31 <ion> You could implement an APL mode to some of them. :-)
21:16:10 <olsner> calculators are quite boring machines
21:16:53 <fizzie> Oh, 89 had the "vertical" format but still did that 68k thing? That must be a newer thing.
21:19:23 <fizzie> I got the TI-86 in... 96, I think, and chose it because of the allowed-in-the-exams status. (Well, and our class had a discounted-group-purchase event for the 86, too.)
21:19:49 <ais523> fizzie: in exams in the UK, you have to wipe a calculator's memory before taking it into an exam
21:20:13 <fizzie> ais523: Same here, but the 92 has some symbolic-algebra in the ROM.
21:21:23 <fizzie> ais523: Also there's some code for the TI-86 that disables the reset functionality, but fakes the on-screen displays as if it succeeded, IIRC.
21:21:34 <zzo38> You could still upgrade the ROM to your own version. That is probably why Texas Instruments used the digital signatures on the ROM of one model
21:21:37 <ais523> fizzie: haha
21:21:42 <ais523> invented by some enterprising cheater?
21:21:46 <zzo38> fizzie: I know about that; I have read about it
21:22:00 <fizzie> ais523: I'm not sure I can figure out any other use case for it.
21:22:43 <zzo38> Once I cheated an exam by using the coughing code! So that other students can copy the answers off of me
21:22:44 <fizzie> Maybe "protect your calculators from resets done by siblings" or something.
21:22:53 -!- Sgeo has quit (Ping timeout: 276 seconds).
21:23:06 <ion> I love the effort some people spend to avoid spending effort to study for tests.
21:23:29 <zzo38> I also once read about a hardware modification that adds a "backup backup battery" since some teachers will steal the backup battery from your calculator
21:23:41 <zzo38> (Even outside of a test/exam)
21:24:44 -!- Sgeo has joined.
21:25:04 <zzo38> Once a teacher told us to drop the covers on the floor since apparently some students wrote the answers on them
21:25:21 <fizzie> There's a quasi-popular/simple "install a switch that overclocks the Z80 from 6 MHz to K MHz" mod for the 86. (I don't quite recall what K is; and it eats batteries faster + not all things work right when overclocked.)
21:25:22 <ais523> zzo38: you aren't allowed to take calculator covers into exams in the UK
21:25:25 <ais523> for that reason, I think
21:25:47 <zzo38> Someone could still write on the calculator itself; perhaps on the inside of the battery compartment
21:27:00 <fizzie> Apparently it goes up to around 15-18 MHz if you disconnect a capacitor.
21:27:00 <ion> Someone could cheat by making neural connections in their brain revealing the answers.
21:27:38 <mroman> In what exams?
21:27:40 <zzo38> People have cracked the ROM key anyways so some people can install whatever program you want in ROM (including an entirely different operating system)
21:27:53 <mroman> Usually you are allowed to take tons of materials to the exams.
21:28:03 <ais523> mroman: A-level and university exams
21:28:06 <mroman> Like handwritten summaries et al
21:28:27 <fizzie> Also I scratched my name into the aluminium foil that's behind the display inside the case, for a "prove it's mine in case of theft" scenario, though that never happened.
21:28:57 <fizzie> Also we had very few exams in in high-school-equivalent where you could bring any written material to.
21:29:19 <ais523> in A-levels, sometimes there'll be written material assigned to you
21:29:27 <mroman> Usually at university level you are allowed to use up to two pages of a handwritten summary
21:29:27 <ais523> that's given to you inside the exam room so that you can't cheat by modifying it
21:29:28 <zzo38> I have heard of people that wrote on their entire body
21:29:33 -!- augur has quit (Remote host closed the connection).
21:29:33 <mroman> and a formula collection, of course
21:29:44 -!- augur has joined.
21:29:51 <mroman> *formulary
21:30:05 <Sgeo> WTF
21:30:14 <Sgeo> Why is this Install Updates button not working
21:30:41 <fizzie> And I'd think most of our university exams were closed-book ones, though there's exceptions. And sometimes provided material.
21:30:43 <Sgeo> I think a daemon tried when I tried it before
21:31:00 <Sgeo> What's the command-line thing? sudo apt-get upgrade?
21:31:36 <mroman> I've just had my semester final exams
21:31:37 <ais523> Sgeo: update, then upgrade
21:31:45 <ais523> update downloads the updates, upgrade installs them
21:31:48 <fizzie> Also there's one particular book of math/physics/chemistry formulas that you can bring to the "matriculation examination", e.g. the thing at the end of high school that's often used for university entrance score calculations.
21:32:03 <Sgeo> Ok
21:32:05 <mroman> And in every exam we were allowed to use at least 2 pages of handwritten stuff.
21:32:17 <mroman> in some even up to ten pages.
21:32:23 <Sgeo> Look like things are downloading from the command line
21:33:22 -!- Ngevd has joined.
21:33:32 <fizzie> Cultural differences, I assume; I don't recall any handwritten-notes-allowed exams offhand, and I'd think there were a total of at most five in the... however many exams there were in total. Certainly at least 50.
21:33:34 <zzo38> I had one exam where we were allowed to write whatever we wanted on an index card and bring it into an exam (there were a few restrictions, such as the size of the index card, you could only use one side, and you are not allowed to bring a magnifying glass, and it must be hand-written; although I assume it is OK to write it in code, or small enough that even though you can read it, the teacher can't).
21:33:39 <mroman> Although those summaries are usually not that useful.
21:34:10 <mroman> Nothing that you can write in a summary is going to make you smarter
21:34:17 <zzo38> I think I have asked the teacher if it is OK to write in code or very small; he said it is OK as long as a magnifying glass is not required
21:34:24 -!- Ngevd has quit (Read error: Connection reset by peer).
21:34:36 <fizzie> You could write your name, if you forget it often.
21:35:22 <mroman> :)
21:35:47 <mroman> I'd rather write the name of the don on to the index card.
21:35:54 <fizzie> Aw, the web-thing can only count course credit points, not number of courses. (Not that all of them had exams.)
21:36:03 <zzo38> In one exam we were allowed both sides of a letter-sized paper. After writing everything on there, I had more than half of the paper left blank, so I copied the questions from the exam onto it.
21:37:43 <fizzie> We are usually (in university, anyway) allowed to take the exam paper out; there's a student-run (the CS student guild, actually) archive of scanned/retyped old exams.
21:38:25 <mroman> We only have access to the exams of last semester
21:38:32 <mroman> because there is no student-run archive ;)
21:39:11 <fizzie> Bah, it doesn't print totals either, But I'm sure there's at least a thousand.
21:41:30 <fizzie> 8516 exams, says a Perl oneliner.
21:42:24 <fizzie> It'd be an interesting exercise to quantify the mean amount of duplicate questions in one.
21:43:04 <fizzie> Quite a lot of exams rotate old questions back in instead of constantly inventing new ones.
21:45:13 -!- Ngevd has joined.
21:45:18 <Phantom___Hoover> The SQA offers past papers online, although I'm not sure how far back.
21:47:34 <fizzie> There are older, smaller, usually one-topic on-paper exam archives at the offices of the various student organizations. The web-thing is relatively recent.
21:50:31 -!- Ngevd has quit (Quit: Goodbye).
22:08:45 -!- Klisz has quit (Read error: Connection reset by peer).
22:10:35 -!- Klisz has joined.
22:18:10 <zzo38> Once, on the final question of an exam, I did not know the answer of that final question and neither did the student next to me, so we both tried to cheat off of each other. (This was only for the final question, however. Neither of us cheated before then)
22:20:02 <oerjan> was the question "What is infinite recursion?"
22:22:01 <zzo38> oerjan: No. I do not remember what the question was, but I couldn't figure it out and neither could the student next to me.
22:29:34 <zzo38> I do not remember what class it was either, but I do remember we were permitted to use a spreadsheet
22:32:01 <Sgeo> kallisti, updoot
22:32:06 <Sgeo> Phantom___Hoover, uppost
22:39:12 <zzo38> Do you know if there is some way compiling Haskell and/or LLVM codes into Glulx virtual machine (in the case of Haskell, possibly using Template Haskell for something)?
22:57:31 <zzo38> I would like to write a text adventure game using Haskell, and make a Glulx file from it.
22:57:42 <zzo38> I also like to have LLVM to Glulx, for different reason.
23:12:18 -!- nooga has quit (Ping timeout: 248 seconds).
23:21:13 -!- augur has quit (Remote host closed the connection).
23:32:50 -!- Ngevd has joined.
23:36:58 -!- Ngevd has quit (Read error: Connection reset by peer).
23:37:00 -!- Taneb has joined.
23:37:49 -!- Taneb has changed nick to Ngevd.
23:42:38 -!- Ngevd has quit (Ping timeout: 276 seconds).
23:47:22 -!- oerjan has quit (Quit: Lost terminal).
23:49:01 -!- oerjan has joined.
23:52:44 -!- ais523 has quit (Remote host closed the connection).
2012-01-29
00:02:28 <kmc> <bbear> Does haskell is long to learn ?
00:03:32 <oerjan> long time, no C
00:09:00 -!- oerjan has quit (Quit: Lost terminal).
00:10:20 * kallisti should retry Project Euler now that the first page of problems looks fairly simple.
00:10:37 <kallisti> last time I tried PE I only knew Python and a little C.
00:11:38 <kallisti> I'd likely use LogicT for many of these.
00:11:53 <kallisti> "Which prime, below one-million, can be written as the sum of the most consecutive primes?"
00:11:57 <kallisti> is a prime candidate for some LogicT
00:12:17 <kmc> it is?
00:12:22 <kallisti> well, list monad as well.
00:12:28 <monqy> it is?
00:12:36 <kmc> i don't think you need (or benefit from) a nontrivial pattern of backtracking
00:12:43 <kallisti> well, no.
00:12:43 <kmc> it sounds like a straightforward map-reduce to me
00:12:49 <monqy> same here
00:13:10 <kmc> in fact PE might be a fun way to learn some mapreduce framework
00:14:46 <kmc> kallisti, i also like http://hackage.haskell.org/package/tree-monad and http://hackage.haskell.org/package/parallel-tree-search
00:16:09 <kallisti> hmmm yes that would be good.
00:18:11 <kallisti> > sum . map (join (^)) $ [1..1000]
00:18:12 <lambdabot> 100036819914469517709537501122764679556779368062293465458376098810023491074...
00:18:12 <kallisti> lol
00:19:30 <centrinia> :t join (^)
00:19:31 <lambdabot> forall a. (Integral a) => a -> a
00:19:53 <centrinia> > map (join (^)) [1..20]
00:19:54 <lambdabot> [1,4,27,256,3125,46656,823543,16777216,387420489,10000000000,285311670611,8...
00:20:05 <kallisti> > digits = show . sum . map (join (^)) $ [1..1000] in drop (length digits - 10) digits
00:20:06 <lambdabot> <no location info>: parse error on input `='
00:20:09 <kallisti> > let digits = show . sum . map (join (^)) $ [1..1000] in drop (length digits - 10) digits
00:20:11 <lambdabot> "9110846700"
00:20:22 <kallisti> problem 48 is considerably easier than 50. :P
00:21:59 -!- azaq23 has joined.
00:27:24 -!- pikhq_ has joined.
00:28:11 <kallisti> oh I could have also used modulo.
00:28:15 <kallisti> to get the last 10 digirs
00:28:17 <kallisti> *digits
00:29:15 -!- pikhq has quit (Read error: Operation timed out).
00:37:44 -!- nooga has joined.
00:45:44 <kallisti> > arr (+3) 5
00:45:45 <lambdabot> 8
00:45:47 <kallisti> > arr (+3) (5,5)
00:45:48 <lambdabot> (8,8)
00:47:17 <kallisti> > (`mod` 3) <+> (`mod` 5) $ 15
00:47:18 <lambdabot> Ambiguous occurrence `<+>'
00:47:18 <lambdabot> It could refer to either `Control.Arrow.<+>', i...
00:47:24 <kallisti> > (`mod` 3) Control.Arrow.<+> (`mod` 5) $ 15
00:47:24 <lambdabot> No instance for (Control.Arrow.ArrowPlus (->))
00:47:24 <lambdabot> arising from a use of `Co...
00:55:17 -!- nooga has quit (Ping timeout: 252 seconds).
01:02:32 <kallisti> @pl (\x -> all (==0) $ map (mod x) [2..20])
01:02:32 <lambdabot> all (0 ==) . flip map [2..20] . mod
01:17:37 -!- Phantom___Hoover has quit (Read error: Connection reset by peer).
01:19:53 -!- pikhq has joined.
01:20:00 -!- pikhq_ has quit (Ping timeout: 244 seconds).
01:31:38 <zzo38>
01:34:54 -!- calamari has joined.
01:47:53 -!- pikhq_ has joined.
01:49:58 -!- pikhq has quit (Ping timeout: 244 seconds).
01:51:12 <kallisti> @hoogle digitToInt
01:51:12 <lambdabot> Data.Char digitToInt :: Char -> Int
01:58:35 <kallisti> @hoogle scanl
01:58:35 <lambdabot> Prelude scanl :: (a -> b -> a) -> a -> [b] -> [a]
01:58:36 <lambdabot> Data.List scanl :: (a -> b -> a) -> a -> [b] -> [a]
01:58:36 <lambdabot> Prelude scanl1 :: (a -> a -> a) -> [a] -> [a]
02:06:57 -!- Vorpal has quit (Ping timeout: 272 seconds).
02:15:21 <kallisti> @hoogle uncurry3
02:15:21 <lambdabot> No results found
02:19:35 <kallisti> > sqrt 1000
02:19:35 <lambdabot> 31.622776601683793
02:34:36 <centrinia> @let foobar x = x-(sqrt x)^2
02:34:37 <lambdabot> Defined.
02:34:42 <centrinia> > foobar 1000
02:34:43 <lambdabot> 0.0
02:40:29 <Sgeo> Hmm, testing precedence of ^:?
02:40:32 <Sgeo> *^?
02:40:53 <Sgeo> > foobar 100000000
02:40:54 <lambdabot> 0.0
02:40:57 <Sgeo> huh
02:41:03 <Sgeo> Rather exact
02:41:09 <Sgeo> > foobar 1000000000000000
02:41:10 <lambdabot> 0.125
02:41:13 <Sgeo> Hah
02:41:17 <Sgeo> > foobar 1000000000000000 :: CReal
02:41:19 <lambdabot> 0.0
02:41:56 <Sgeo> How does :: associate?
02:45:15 -!- derdon_ has quit (Remote host closed the connection).
02:54:38 -!- pikhq has joined.
02:54:38 -!- pikhq_ has quit (Ping timeout: 240 seconds).
02:54:59 -!- itidus20 has left ("Leaving").
02:57:22 -!- augur has joined.
02:58:19 -!- TeruFSX has quit (Read error: Connection reset by peer).
02:59:20 -!- TeruFSX has joined.
02:59:31 -!- augur has quit (Read error: Connection reset by peer).
03:04:31 -!- Madoka-Kaname has quit (Ping timeout: 260 seconds).
03:10:12 -!- augur has joined.
03:10:34 -!- augur has quit (Remote host closed the connection).
03:11:12 -!- Madoka-Kaname has joined.
03:20:44 <zzo38> I am still working on MML->S3M program in Haskell.
03:22:32 -!- augur has joined.
03:23:29 <kallisti> > 20*20-1
03:23:30 <lambdabot> 399
03:23:41 -!- pikhq_ has joined.
03:23:44 <kallisti> > 19*20+19
03:23:45 <lambdabot> 399
03:23:54 <kallisti> > inRange (0,19) 20
03:23:55 <lambdabot> False
03:24:43 * kallisti is great confused.
03:24:51 -!- pikhq has quit (Ping timeout: 245 seconds).
03:25:14 <zzo38> The monad laws imply the left zero law (mzero >> x = mzero), but do the applicative laws imply the left zero law (empty *> x = empty)?
03:25:56 <zzo38> (Actually, the monad laws don't imply the left zero law by themselves; the laws of the type system are also needed.)
03:26:17 <centrinia> > foobar (2^1000)
03:26:19 <lambdabot> 0.0
03:26:23 <centrinia> > foobar (3^1000)
03:26:25 <lambdabot> NaN
03:27:09 <centrinia> > foobar (3^1000) :: CReal
03:27:11 <lambdabot> 0.0
03:27:49 -!- augur has quit (Ping timeout: 276 seconds).
03:29:06 <kallisti> I'm getting an out of bounds array element error
03:29:09 <kallisti> but... I don't see how.
03:32:03 <kallisti> ah I accidentally deleted a line of my array or something
03:32:16 <kallisti> http://projecteuler.net/problem=11 working on this
03:35:21 <centrinia> Is it 96059599? :p
03:36:35 <kallisti> no
03:36:52 <kallisti> @hoogle inRange
03:36:52 <lambdabot> Data.Ix inRange :: Ix a => (a, a) -> a -> Bool
03:42:42 <centrinia> How would you know?
03:45:55 <zzo38> I think the applicative laws do not imply the left zero law, because they fail to imply the right zero law and applicatives can be turned backward
03:59:45 -!- azaq23 has quit (Quit: Leaving.).
04:00:34 <kallisti> import Math.NumberTheory.Primes.Factorisation
04:00:34 <kallisti> import Data.Set
04:00:34 <kallisti> problem12 = head . filter ((>500) . size . divisors) . scanl1 (+) $ [1..]
04:00:38 <kallisti> I'm cheating so hard, guys....
04:03:47 -!- augur has joined.
04:16:12 <kallisti> @hoogle comparing
04:16:12 <lambdabot> Data.Ord comparing :: Ord a => (b -> a) -> b -> b -> Ordering
04:40:57 -!- augur has quit (Remote host closed the connection).
04:45:59 -!- Klisz has quit (Read error: Connection reset by peer).
05:21:46 <kallisti> wow 5 people have solved an average of 22% of Project Euler using Frink.
05:22:05 <kallisti> those are the only 5 people using Frink for any problem.
05:22:52 <monqy> have they solved all of those problems using frink or did they just list themselves as "yes frink is the language i use" in which case they could have used other languages for some of them??
05:25:26 <kallisti> yes
05:25:34 <kallisti> .....to the second one.
05:26:05 <kallisti> because project euler doesn't actually get any source code from you
05:26:10 <kallisti> some people just use math.
05:26:25 <kallisti> for example the pythagorean triplet problem near the beginning of the list can simply be done on paper.
05:29:43 <kallisti> I'm cheating so bad with anything involving prime numbers or factorization
05:29:59 <kallisti> using Data.Numbers.Primes and Math.NumberTheory.Primes.Factorisation
05:41:34 <zzo38> "These are the voyages of the starship, Enter-prize. Its ongoing mission, to exploit poor families, to seek out new lists and subscriptions, to boldly promote contests that no one has won before." From gopher.std.com port 70, selector string: 0/The Online Book Initiative/Star.Trek.Parodies/p.050.Z
06:04:44 <Madoka-Kaname> kallisti, cheating?
06:04:54 <Madoka-Kaname> If you view Project Euler as a math challenge site, sure.
06:05:00 <Madoka-Kaname> If you view it as a programming challenge site? Nah
06:06:43 <kallisti> I view it as cheating for both
06:06:59 <pikhq_> I don't view Euler as much of a programming challenge site, at all.
06:07:00 <kallisti> because I've removed the programming challenge. which, in this case, is to efficiently compute prime numbers or divisors.
06:07:36 <pikhq_> Much more about algorithms. Which is a necessary skill *for* programming, sure, but is quite a bit more mathy.
06:08:18 <kallisti> http://projecteuler.net/problem=15 this one will be fun.
06:08:58 <kallisti> again, pretty sure I want LogicT for that one. :>
06:09:03 <kallisti> list monad will get slow.
06:09:54 <pikhq_> Hmm. "Backtracking" there must mean "without getting further from the goal".
06:09:58 <kallisti> I'm kind of using Project Euler as a test of how proficient I am at Haskell, no such much math or algorithms in general.
06:10:00 <kallisti> pikhq_: right
06:10:59 <kallisti> actually I bet you can solve this one with plain old combinatorics
06:11:31 <kallisti> it would be difficult though
06:12:29 <pikhq_> I suspect it's just (n-1)!, where n is the Manhattan distance.
06:13:11 <kallisti> > 2 * (21 * 21 - 2) + 2
06:13:12 <lambdabot> 880
06:13:30 <kallisti> heh, well that's not right.
06:22:47 <kallisti> hmmm why factorial?
06:22:49 <kallisti> pikhq_: ^
06:26:05 <pikhq_> I dunno.
06:26:11 <pikhq_> Heuristic.
06:27:51 <kallisti> ah okay
06:28:07 <kallisti> hmmm but manhattan distance seems to involve diagonals as well
06:31:02 <zzo38> Are you sure?
06:32:08 <kallisti> ah nevermind
06:34:07 <kallisti> > product [1..10]
06:34:08 <lambdabot> 3628800
06:36:25 <kallisti> > product [1..20]
06:36:26 <lambdabot> 2432902008176640000
06:36:44 * Sgeo thinks there has to be a better alternative to foldr and foldl
06:36:50 <Sgeo> erm, foldr and foldl'
06:37:02 <Sgeo> Neither of them seem suitable for ...
06:37:04 <Sgeo> :t and
06:37:05 <lambdabot> [Bool] -> Bool
06:37:09 <Sgeo> and and or
06:37:38 <kallisti> :t any
06:37:39 <lambdabot> forall a. (a -> Bool) -> [a] -> Bool
06:37:40 <kallisti> :t all
06:37:40 <lambdabot> forall a. (a -> Bool) -> [a] -> Bool
06:38:24 <kallisti> @src all
06:38:24 <lambdabot> all p = and . map p
06:38:28 <kallisti> oh...
06:38:33 <kallisti> @src and
06:38:33 <lambdabot> and = foldr (&&) True
06:38:45 <kallisti> Sgeo: what are you talking about. :P
06:38:59 <Sgeo> > and [x, y, z]
06:39:00 <lambdabot> Ambiguous occurrence `x'
06:39:00 <lambdabot> It could refer to either `L.x', defined at <local...
06:39:03 <Sgeo> :/
06:39:13 <kallisti> and ([x,y,z] :: [Expr])
06:39:15 <kallisti> > and ([x,y,z] :: [Expr])
06:39:15 <lambdabot> Ambiguous occurrence `x'
06:39:16 <lambdabot> It could refer to either `L.x', defined at <local...
06:39:25 <kallisti> > and ([a,b,c] :: [Expr])
06:39:26 <lambdabot> Couldn't match expected type `GHC.Bool.Bool'
06:39:26 <lambdabot> against inferred type ...
06:39:32 <kallisti> oh
06:39:32 <kallisti> duh
06:39:35 <Sgeo> :t repeat
06:39:36 <lambdabot> forall a. a -> [a]
06:39:37 <kallisti> those aren't booleans. :P
06:39:55 <Sgeo> What's the thing to make a list of the ..
06:40:03 <Sgeo> @hoogle Int -> a -> [a]
06:40:03 <lambdabot> Prelude replicate :: Int -> a -> [a]
06:40:04 <lambdabot> Data.List replicate :: Int -> a -> [a]
06:40:04 <lambdabot> Prelude drop :: Int -> [a] -> [a]
06:40:09 <kallisti> list of .. ???
06:40:33 <Sgeo> > or (replicate 1000000000 False) ++ [True]
06:40:34 <lambdabot> Couldn't match expected type `GHC.Bool.Bool'
06:40:34 <lambdabot> against inferred type ...
06:40:40 <Sgeo> > or (replicate 1000000000 False ++ [True])
06:40:44 <lambdabot> mueval-core: Time limit exceeded
06:40:46 <Sgeo> :/
06:40:53 <kallisti> Sgeo: what are you trying to do.
06:41:02 <Sgeo> Get or or and to stack overflow
06:41:07 <Sgeo> Due to the use of foldr
06:41:44 <kallisti> I don't think it will.
06:42:26 <Sgeo> > foldr f z [a, b, c]
06:42:27 <lambdabot> f a (f b (f c z))
06:42:35 <Sgeo> Hmm, why wouldn't it?
06:42:39 <kallisti> @src (||)
06:42:39 <lambdabot> True || _ = True
06:42:39 <lambdabot> False || x = x
06:42:58 <kallisti> because it doesn't exhaust the stack.
06:43:09 <kallisti> well, maybe.
06:43:22 <kallisti> it doesn't appear that it will.
06:43:36 <Sgeo> When will the || itself get evaluated?
06:44:02 <Sgeo> If the left is False, it needs the right. But does it still store the left and the fact that it's evaluating ||?
06:44:06 <Sgeo> I guess it might not?
06:44:17 <kallisti> the "call stack" in Haskell is actually a stack of case expressions.
06:44:27 <Sgeo> kmc, you there?
06:45:51 <kallisti> > all isJust $ repeat (Just 5)
06:45:56 <lambdabot> mueval: ExitFailure 1
06:45:56 <lambdabot> mueval: Prelude.undefined
06:46:13 <kallisti> > all isJust $ replicate 5000000000 (Just 5)
06:46:17 <lambdabot> mueval-core: Time limit exceeded
06:46:45 <kallisti> I think in this case the pattern matching doesn't cause the stack to fill up.
06:48:00 <kallisti> ....er
06:48:09 <kallisti> actually nevermind.
06:48:49 <kallisti> ah
06:49:09 <kallisti> A function strict* in its second argument will always require linear stack space with foldr, so foldl' should be used instead in that case. If the function is lazy/non-strict in its second argument we should use foldr to 1) support infinite lists and 2) to allow a streaming use of the input list where only part of it needs to be in memory at a time.
06:49:36 <kallisti> so yes it doesn't actually blow up the stack.
06:53:12 <kallisti> because || is lazy in its second argument, it doesn't have to strictly evaluate the rest list to return the result of the first call, and so on...
06:53:18 <kallisti> *rest of the list
06:53:33 <kallisti> > foldr (+) 0 [1..100]
06:53:33 <lambdabot> 5050
06:53:38 <kallisti> > foldr (+) 0 [a,b,c]
06:53:39 <lambdabot> a + (b + (c + 0))
06:53:56 <kallisti> here, in order to evaluate the first +, it has to evaluate all the others, which creates a stack.
06:54:16 <kallisti> (assuming that + is strict)
06:54:43 -!- pikhq has joined.
06:54:51 -!- pikhq_ has quit (Ping timeout: 245 seconds).
06:54:55 <kallisti> for
06:55:42 <kallisti> a || (b || (c || d))
06:56:08 <kallisti> the evaluation of the first || doesn't force the rest of the expression
06:56:14 <kallisti> it only forces a
06:56:39 <kallisti> subsequently, the second || doesn't force (c || d), etc
06:57:21 <kallisti> @src sum
06:57:21 <lambdabot> sum = foldl (+) 0
06:57:39 <kallisti> shouldn't that be foldl' ?
06:58:29 -!- NihilistDandy has joined.
06:58:37 <kallisti> Sgeo: does that make sense/
06:59:11 <Sgeo> kallisti, that wasn't the bit that was confusing me
06:59:17 <Sgeo> I get it now though. I did ask about it in #haskell
07:00:46 <kallisti> oh you were confused about the strictness of boolean operators?
07:00:57 <kallisti> or..
07:05:42 <Sgeo> kallisti, I was confused about that the operator did not need to stick around if all it was doing was returning the second argument
07:10:20 <kallisti> ah okay
07:10:36 <kallisti> yes returning the argument does not force.
07:11:08 <kallisti> I would think about it less in terms of a "function call stack" and more about a pattern matching stack
07:15:03 <kallisti> :t sum'
07:15:04 <lambdabot> Not in scope: `sum''
07:16:37 <kallisti> :>
07:27:03 -!- augur has joined.
07:29:13 -!- NihilistDandy has quit (Quit: Textual IRC Client: http://www.textualapp.com/).
07:31:23 -!- NihilistDandy has joined.
07:31:23 -!- NihilistDandy has quit (Client Quit).
07:36:12 -!- NihilistDandy has joined.
07:36:17 -!- nooga has joined.
07:42:20 -!- NihilistDandy has quit (Quit: Textual IRC Client: http://www.textualapp.com/).
07:44:56 -!- NihilistDandy has joined.
07:48:50 -!- NihilistDandy has quit (Client Quit).
08:31:24 -!- zzo38 has quit (Remote host closed the connection).
08:45:38 -!- sebbu2 has joined.
08:45:38 -!- sebbu2 has quit (Changing host).
08:45:38 -!- sebbu2 has joined.
08:49:34 -!- sebbu has quit (Ping timeout: 276 seconds).
08:58:26 -!- Madoka-Kaname has quit (Read error: Operation timed out).
08:58:51 -!- Madoka-Kaname has joined.
09:00:53 -!- calamari has quit (Quit: Leaving).
09:15:35 -!- pikhq_ has joined.
09:15:51 -!- pikhq has quit (Ping timeout: 244 seconds).
09:17:58 -!- Ngevd has joined.
09:18:37 <Ngevd> Hello!
09:22:19 <mroman> !olleH
09:34:04 -!- Ngevd has quit (Read error: Connection reset by peer).
09:34:16 -!- Ngevd has joined.
09:34:49 -!- Ngevd has quit (Read error: Connection reset by peer).
09:35:36 -!- Ngevd has joined.
10:00:04 -!- Ngevd has quit (Quit: Goodbye).
10:29:39 -!- Phantom_Hoover has joined.
11:13:35 -!- monqy has quit (Quit: hello).
11:20:00 -!- derdon has joined.
11:32:48 <fizzie> http://robotfindskitten.org/aw.cgi?main=news.rfk "While I was on my own lengthy personal journey of kitten finding, no less than 8 new ports have been submitted." <-- Oo, I'm one of those.
11:33:44 <fizzie> Also it's been... about two years, three months since I emailed about rfk86; that's one lengthy journey.
12:09:35 -!- sebbu2 has changed nick to sebbu.
12:21:25 -!- nooga has quit (Ping timeout: 252 seconds).
12:29:26 -!- oerjan has joined.
12:38:15 <oerjan> > length . show $ 1000^1000
12:38:17 <lambdabot> 3001
12:39:56 <oerjan> > (+3) (5,5)
12:39:57 <lambdabot> (8,8)
12:41:39 <fizzie> > let bestaddever a b = (+ (-1)) . length . show $ (10^a)*(10^b) in bestaddever 1234 567
12:41:41 <lambdabot> 1801
12:42:18 <oerjan> okay
12:51:04 <Phantom_Hoover> <fizzie> Also it's been... about two years, three months since I emailed about rfk86; that's one lengthy journey.
12:51:16 <Phantom_Hoover> Kitten is often far away, and hard to find.
12:51:28 <Phantom_Hoover> Finding kitten is rarely easy, but always worthwhile.
13:01:05 * oerjan wonders why the heck wordpress sometimes fluctuates between making links https and not
13:47:52 -!- clog has quit (Ping timeout: 252 seconds).
14:01:38 <fizzie> > let bestmulever a b = (+ (-1)) . length . show $ (10^a)^b in bestmulever 12 345
14:01:39 <lambdabot> 4140
14:01:46 <fizzie> Just for completeness, you see.
14:02:41 <oerjan> right. now we just need bestpowever.
14:02:57 * oerjan whistles innocently
14:08:52 <kallisti> TETRATE
14:09:16 <oerjan> kallisti: this might be useful for your cheating http://www.haskell.org/pipermail/haskell-cafe/2012-January/098929.html
14:09:45 <kallisti> nah I've already got plenty of libraries for that.
14:10:05 <kallisti> really I just wanted something for prime numbers because I was too lazy to efficiently compute primes but still wanted to continue with the rest of the problems in order.
14:10:19 <oerjan> that wren person seems to be announcing a lot of packages today
14:11:24 <kallisti> I wonder if that wheel sievee is faster than the wheel sieve used in Data.Numbers.Primes
14:11:44 <kallisti> the one in Math.NumberTheory.Primes is slower. the docs mention that the author wants to eventually switch to a sieve of Atkin
14:11:48 <oerjan> (my attempts at googling previously indicated it's a mostly female name)
14:13:30 * kallisti should write an assembly program of some kind.
14:14:30 <kallisti> hm Project Euler would actually be a good way to learn some assembly
14:14:42 <oerjan> sounds rite-of-passage-ish
14:14:58 <kallisti> or
14:15:15 <kallisti> I could try something I know is probably going to be near impossible given my experience at assembly (none)
14:15:23 <kallisti> like a lambda calculus evaluator. :P
14:15:49 <shachaf> You should write a threading library.
14:15:58 <oerjan> :t (.!)
14:15:59 <lambdabot> Not in scope: `.!'
14:16:16 <kallisti> oerjan: er, strict composition?
14:16:22 <oerjan> yes
14:16:33 <oerjan> was mentioned in another of wren's announcements
14:16:57 <kallisti> o_o
14:17:49 <oerjan> http://www.haskell.org/pipermail/haskell-cafe/2012-January/098932.html
14:19:48 <oerjan> mezzacotta seems to be dead today
14:22:17 <fizzie> > let bestpowever a b = length . tail . show $ foldl (^) 10 (a <$ (tail . show) (10^b)) in bestpowever 9 3
14:22:19 <lambdabot> 729
14:22:56 <oerjan> excellent
14:22:57 <fizzie> I call it "the tail-show-power-of-ten paradigm".
14:27:19 <kmc> hi Sgeo
14:35:23 <oerjan> hm http://www.irregularwebcomic.net/ is also down
14:36:16 * oerjan adds http://www.darthsanddroids.net/ for good measure
14:36:37 <oerjan> i thought they didn't all have the same host
14:36:43 <fizzie> I think there might be a pattern here.
14:37:15 <oerjan> sure, they're all DMM sites, but i distinctly recall some of them have been up at times when others weren't
14:37:51 <fizzie> Perhaps they have been synergized.
14:37:54 <oerjan> maybe ... dmm made a sunday annotation which he shouldn't have.
14:38:04 <oerjan> and now he will never be heard from again.
14:38:06 -!- clog has joined.
14:39:30 <oerjan> (normally i just go to mezzacotta and click on to the rest from there)
14:43:13 <fizzie> "Update Jan 29th, 6:20am PST: Our admins have identified the problem and are executing a fix across the affected servers. We’ll continue updating this post with more information as soon as we’re able. – JJ G" http://www.dreamhoststatus.com/
14:43:51 <fizzie> I'm guessing that, since the canonical name of the IP those domains point at is apache2-dap.vilnius.dreamhost.com.
14:44:00 <oerjan> aha
14:46:10 -!- Frooxius_ has joined.
14:47:06 * oerjan wonders if that "vilnius" part is globally true
14:47:09 <oerjan> i get it from here too, though
14:49:00 -!- oerjan has quit (Quit: Lost terminal).
14:49:12 <fizzie> He got... too close.
14:49:53 -!- Frooxius has quit (Ping timeout: 245 seconds).
14:50:07 -!- Frooxius_ has changed nick to Frooxius.
14:54:45 -!- azaq23 has joined.
16:04:52 -!- pikhq has joined.
16:05:05 -!- pikhq_ has quit (Ping timeout: 252 seconds).
16:07:18 -!- zzo38 has joined.
16:10:56 -!- Phantom_Hoover has quit (Remote host closed the connection).
16:12:03 -!- Phantom_Hoover has joined.
16:12:20 -!- derdon_ has joined.
16:15:17 -!- derdon has quit (Ping timeout: 248 seconds).
16:15:42 -!- Frooxius has quit (Quit: ChatZilla 0.9.88-rdmsoft [XULRunner 1.9.0.17/2009122204]).
16:28:34 -!- Frooxius has joined.
16:47:19 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds).
16:49:49 -!- Frooxius has quit (Quit: ChatZilla 0.9.88-rdmsoft [XULRunner 1.9.0.17/2009122204]).
16:59:42 -!- centrinia has quit (Remote host closed the connection).
17:02:49 -!- Phantom_Hoover has joined.
17:17:43 <zzo38> The contrapositive form of a monad m is (forall z. (x -> z) -> m z) which can join, but the form with w in it is (forall z. (x -> w z) -> m z) can they join (if w is a comonad)?
17:18:44 <zzo38> Or if you change around the position of w?
17:20:11 <zzo38> Other positions do not seem to work... I think it has to be in a contravariant position...
17:24:43 <zzo38> Maybe it does work; I think there are other contravariant positions anyways
17:40:11 <zzo38> (The first type, without the w, I found out, is the Yoneda lemma.)
17:42:29 <zzo38> (And I did realize it is a functor regardless of the type m)
17:43:36 <zzo38> newtype T f x = T { runT :: forall z. (x -> z) -> f z }; fmap f (T x) = T $ \y -> x (y . f); join x = T $ \y -> join $ (runT (runT <$> x)) ($ y);
17:45:38 <zzo38> lift x = T $ \y -> liftM y x;
18:39:14 -!- nooga has joined.
18:51:58 -!- _Slereah has quit.
18:59:05 -!- dalebob has joined.
18:59:12 -!- dalebob has left ("Leaving").
19:58:42 -!- monqy has joined.
20:08:33 -!- ais523 has joined.
20:08:58 -!- Frooxius has joined.
20:18:37 <zzo38> I do have an idea to add a kind of top level declaration in Haskell which allows all Monad to be Functor without changing any existing libraries or programs: default instance Monad m => Functor m where { fmap = liftM; }; and now write things such as lift = MaybeT . fmap Just; and so on, instead of using liftM, fmap works too, or any function based on fmap
20:21:01 -!- pkzip has joined.
20:21:28 -!- pkzip has left.
20:49:20 -!- oerjan has joined.
20:50:24 <oerjan> 14:49:23: -!- oerjan has quit (Quit: Lost terminal).
20:50:24 <oerjan> 14:49:35: <fizzie> He got... too close.
20:50:46 <oerjan> i've been having these connection drops the last couple of days :(
20:51:16 <oerjan> ironically, _after_ installing the new router the isp sent to fix a similar problem last christmas
20:51:54 <oerjan> after i called them, the problem stopped almost entirely, until now >_<
20:52:33 <oerjan> it's not _entirely_ similar though, but that may be just the new router not being completely reset like the old one was.
20:53:36 <oerjan> now most times i notice nothing _other_ than my putty session disconnecting. but that's still irritating.
20:54:55 <oerjan> (and i can reconnect again immediately)
20:56:03 <oerjan> i suppose it could be something wrong at the other end at nvg, except there was one time web went horribly flaky too (that got fixed after i unplugged the router)
20:58:13 <zzo38> Does this seem correct to you? offs = 6 + shiftR (co + 2 * (ni + cp) + 15) 4; For determining the start offset parapointer for S3M file, after the header
20:58:18 <oerjan> one subtle difference is that now unlike before christmas, nvg notices i've disconnected and terminates irssi
20:59:03 <oerjan> which i guess is an improvement.
20:59:12 <zzo38> (ni is number of instruments, cp is number of patterns, co is number of orders which is the smallest even number greater than the number of patterns)
21:03:08 <fizzie> Heh, "parapointer" is such a funny term. I suppose it's named after the 16-byte "paragraphs".
21:03:38 <nooga> hyh
21:04:43 <zzo38> fizzie: They are sixteen bytes long
21:05:13 <ion> Is shiftR right?
21:05:18 <ion> (no pun intended)
21:05:37 <zzo38> ion: shiftR means shift right (like >> in C)
21:05:43 <ion> Yes, i know.
21:05:58 <oerjan> > readInt 36 (const True) (\x -> fromEnum x - fromEnum 'A' + 10) "GARFIELD"
21:05:59 <lambdabot> [(1277253088609,"")]
21:07:07 <ion> I hate how digitToInt arbitrarily stops supporting letters at 'g'.
21:08:39 <oerjan> yeah
21:09:58 <fizzie> `run echo '36 i GARFIELD p' | dc
21:10:01 <HackEgo> dc: input base must be a number between 2 and 16 (inclusive) \ dc: 'G' (0107) unimplemented \ dc: 'R' (0122) unimplemented \ dc: stack register 'D' (0104) is empty \ 14
21:10:04 <fizzie> Aw.
21:10:34 <zzo38> It doesn't work because some of the uppercase letters have other meanings in dc.
21:10:50 <zzo38> You can use all the digits 0123456789ABCDEF regardless of input base, however.
21:11:22 <zzo38> (A useful thing to know in anarchy golf)
21:13:11 <zzo38> Do you know about S3M file format?
21:13:56 <fizzie> I've read the specs at least once, though I don't quite recall for what. I don't think I've actually codewise parsed anything else than XMs.
21:14:05 <ais523> zzo38: I've heard of it, IIRC it's an extension to MIDI
21:14:15 <ais523> that also includes the soundfont you're meant to play it back with
21:14:19 <fizzie> It's one of those module formats.
21:14:36 <fizzie> For ScreamTracker 3.
21:15:05 <zzo38> ais523: Actually it isn't MIDI
21:15:51 <zzo38> fizzie: Yes it is the ScreamTracker format. I try to make a Haskell program to make output that format. But I could add the feature output other formats too.
21:16:13 <zzo38> Even right now, I have two ways of loading instruments; either a sample from a file or a synthesis specification.
21:18:58 <fizzie> XM isn't very much different, except it has quite a bit more complicated instruments (since it can have instruments consisting of multiple samples), and in general just more features.
21:20:45 <zzo38> fizzie: I know that. However, in my program, using different samples for the same instrument, as well as other features, are done in the MML compiler so the S3M does not need to do those things.
21:20:58 <fizzie> You could think of module files as to being analogous to a MIDI file with a bundled soundfont, if you don't mind any of the details.
21:21:33 <ion> [lolssdsl0lqx]sx[1+lddd*lld*-ls+dsdrll2**lo+dsld*rd*+4<kd15>q]sq[q]9ksk[d77/3*2-ss47lxx-P1+d78>0]s00[d23/.5-3*so0l0xr10P1+d24>u]dsux
21:21:54 <ion> speaking of dc
21:22:24 <zzo38> I have not seen any other program that compiles MML into S3M or into any other module music format. But the one I write, as well as S3M, might also support other output formats such as MIDI and audio out.
21:22:58 <fizzie> ion: What I like the most about dc is that the man page includes the example "KSK0k1/_1Ss [ls*]Sxd0>x [256~Ssd0<x]dsxxsx[q]Sq[Lsd0>qaPlxx] dsxxsx0sqLqsxLxLK+k" as a way to describe what "P" does.
21:23:05 <zzo38> (And that MegaZeux has the capability to play S3M files, as well as Vorbis)
21:23:24 <ion> fizzie: hehe
21:24:18 <zzo38> I do like dc for use as a desk calculator, which is what the name "dc" comes from anyways.
21:24:38 <ion> Yeah, RPN is great for interactive calculation.
21:24:55 <ion> Although orpie is nicer as it displays the stack in realtime.
21:25:07 -!- Vorpal has joined.
21:25:28 <zzo38> My MML->S3M compiler already has many features, the only thing incomplete is the actual output S3M file. It is actually a full programming language with some similarities to TeX with anonymous macros.
21:27:22 -!- jix has quit (Remote host closed the connection).
21:28:13 <zzo38> There is a "define" command, but you cannot define parameters; you can only define the input token and the output token (or list of output tokens). But anything inside of {} will expand once something else it put afterward, and ? will change to the token that is afterward, while ?? changes to ? and ??? to ?? and so on.
21:29:06 <ion> `run dc -e '[lolssdsl0lqx]sx[1+lddd*lld*-ls+dsdrll2**lo+dsld*rd*+4<kd15>q]sq[q]9ksk[d77/3*2-ss47lxx-P1+d78>0]s00[d23/.5-3*so0l0xr10P1+d24>u]dsux'
21:29:10 <HackEgo> ​.............................................................................. \ .............................................................................. \ .........................----------------------------......................... \ ..................---------------------,,,,,,+ (+++,,,,-----.................. \ .............---------------------,,,,,,,,+++*)' $"(*+,,,,,,-----.............
21:29:55 <Vorpal> ion, hm... what is that supposed to do?
21:30:12 <ion> You’ll recognize it if you see the rest of the output.
21:30:23 <Vorpal> I find that parsing dc is quite annoying
21:30:32 <Vorpal> ion, can't run dc atm, I'm on a mobile device
21:30:33 <Vorpal> so
21:30:36 <oerjan> replacing \ by newline might also help, i suspect
21:30:50 <ion> http://johan.kiviniemi.name/stuff/dc/mandel.output
21:30:55 <Vorpal> ah
21:31:15 * oerjan suspects the filename says it all
21:31:19 <Vorpal> oerjan, by chance those \ happened to end up at the end of each line on my screen
21:31:20 <Vorpal> oerjan, indeed
21:31:34 <oerjan> hm...
21:32:30 <oerjan> right, if i resize the putty window
21:32:56 <oerjan> > cycle "0123456789" -- whistles innocently
21:32:57 <lambdabot> "01234567890123456789012345678901234567890123456789012345678901234567890123...
21:33:01 <oerjan> argh
21:33:01 <Vorpal> oerjan, I'm using a client that tries to be smart and break at spaces, so that increases the probability for it
21:33:03 <zzo38> oerjan: I don't think so since the prefix will also be part of it
21:33:18 <oerjan> zzo38: don't think what?
21:33:25 <ais523> ^ul ((0123456789)S:^):^
21:33:25 <fungot> 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 ...too much output!
21:33:32 <ais523> oerjan: fungot > lambdabot
21:33:33 <fungot> ais523: the real motivation, however, and development on it seems to be a sick bastard to use that large unused space to show the forth/ pocket c guys that lispme can do cool stuff too.
21:33:42 <zzo38> In my program, '-1<1>1 a ((0.5aH) + (0.25aV)) is a valid instrument synthesis specification (actually, not by itself, you also need length, loop point, and sample rate)
21:33:57 <ais523> (and I know you're good enough at Underload to write that)
21:33:59 <zzo38> oerjan: The IRC window, if resized, the first line still has a prefix
21:34:40 <ais523> ^bf ,>,>,>,>,>,>,>,>,>,<<<<<<<<<[.>.>.>.>.>.>.>.>.>.<<<<<<<<<]!0123456789
21:34:40 <fungot> 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 ...
21:35:01 <zzo38> Can ARM chips save energy compared with others? If so, how much and in what circumstances?
21:35:06 <oerjan> zzo38: but irssi lines continuation lines up with the first one
21:35:15 <Vorpal> ais523, that is hardcoded to the specific length of the input :(
21:35:28 <ais523> Vorpal: do you want me to write one that isn't?
21:35:49 <Vorpal> ais523, if you want to you can, but if you find it annoying: forget it
21:36:05 <zzo38> oerjan: OK, but you still probably have to resize the window before receiving it? Or will it redraw the screen?
21:36:09 <fizzie> I recognized it as Mandelbrotty even from the non-lining-up lines.
21:36:10 <ais523> ^bf >,[>,]<[<]>[[.>]<[<]>]!0123456789
21:36:10 <fungot> 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 ...
21:36:14 <Vorpal> ais523, anyway which sort of EOF does fungot use?
21:36:14 <ais523> 'tis actually shorter
21:36:15 <fungot> Vorpal: but no description of the function, and a pointer variable.) now i'm wondering, what's a cataract?) could also be, for instance
21:36:18 <fizzie> Possibly because why would someone print anything else?
21:36:21 <ais523> Vorpal: that program was EOF=0
21:36:26 <ais523> and given that it worked, I guess fungot uses EOF=0
21:36:26 <fungot> ais523: not at all. ( i don't have fnord source. ;p fnord
21:36:28 <Vorpal> also that was shorter than your original program, heh
21:36:37 <oerjan> ais523: i'm not good enough to write it in the time it takes to remember cycle :P
21:36:49 <oerjan> zzo38: it redraws
21:36:52 <Vorpal> ^style
21:36:52 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
21:36:55 <ais523> oerjan: but cycle didn't work for your purposes
21:36:57 <zzo38> oerjan: OK
21:37:23 <oerjan> ais523: that's just lambdabot's stupid brevity
21:37:37 <zzo38> (I myself use PuTTY for IRC, but it isn't irssi)
21:37:42 <ais523> which is why I said fungot > lambdabot rather than Underload > Haskell
21:37:43 <fungot> ais523: i take it
21:38:38 <zzo38> Do you know about energy and ARM processor and stuff?
21:39:11 <ion> fizzie: “I recognized it as Mandelbrotty just from glancing at the code”
21:39:24 <oerjan> ^bf >,[>,]<[[<]>[.>]<]!0123456789
21:39:24 <fungot> 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 ...
21:39:33 <ais523> ion: in non-esolangs, you can often do that
21:39:45 <oerjan> oh you already did that
21:39:51 <ais523> yep
21:39:56 <ais523> but your loop is less unrolled than mine
21:40:47 <fizzie> ais523: It does use EOF=0, though it's not entirely obvious from the code.
21:40:52 -!- zzo38 has quit (Remote host closed the connection).
21:41:10 <ais523> EOF=0 is best for oneliners; EOF=-1 probably best for larger programs
21:41:29 <ais523> I still prefer my mechanism with EOF=0, NUL=1, SOH=2, etc
21:42:51 <oerjan> <ais523> ion: in non-esolangs, you can often do that <-- i think dc counts as an esolang for this purpose :P
21:43:16 <ais523> yep, everyone knows dc is an esolang really
21:44:25 <oerjan> EOF=0 is worst for anything that needs to handle actual nul characters
21:47:05 <oerjan> (of course you need > 8 bit as well)
21:47:15 <ais523> oerjan: not if nul = 1
21:47:24 <oerjan> um yes?
21:47:36 <oerjan> otherwise you'll not be able to represent 255
21:47:55 <ion> 9-bit bytes!
21:48:16 <oerjan> oh you were responding to another line
21:48:44 <oerjan> ion: some cpu had those
21:50:13 -!- Sgeo has quit (Ping timeout: 276 seconds).
21:50:45 -!- Sgeo has joined.
21:58:55 -!- Slereah has joined.
21:59:37 -!- jix has joined.
21:59:47 -!- yiyus has quit (Read error: Operation timed out).
22:00:18 -!- pikhq_ has joined.
22:00:19 -!- pikhq has quit (Ping timeout: 245 seconds).
22:02:57 <fizzie> If you have 36-bit words, 9-bit bytes sound reasonable.
22:03:02 -!- yiyus has joined.
22:03:13 <fizzie> Or I guess if you have 9-bit bytes, 36-bit words sound reasonable too.
22:03:27 <fizzie> Though 36-bit words and 6-bit bytes are always an option too.
22:03:52 <Vorpal> <oerjan> (of course you need > 8 bit as well) <-- you could use escape code for nul maybe?
22:04:05 <Vorpal> not sure which sequence would be suitable
22:04:42 <Vorpal> would confuse any existing program of course
22:05:13 <Vorpal> fizzie, why make the word 4 bytes?
22:05:25 <oerjan> Vorpal: well you are going to need > 8 bit per byte, anyway
22:05:30 <Vorpal> (for the 9 bit case)
22:05:36 <Vorpal> fizzie, wouldnt
22:05:52 <Vorpal> wouldn't* 9-bit bytes and 81 bit words be better?
22:06:18 <Vorpal> 40.5 bit words are a bit hard to achieve I guess
22:07:00 <Vorpal> oerjan, well sure
22:07:13 <oerjan> having words being a non-power of 2 number of bytes sounds like awkward addressing as long as you're still basically binary
22:07:21 <Vorpal> oerjan, assuming your input uses 8 bits
22:07:25 <Vorpal> you could have 7 bit IO
22:08:08 <oerjan> Vorpal: well the underlying assumption here is how to make a bf that can handle standard binary formats
22:08:23 <fizzie> oerjan: Not if the machine is just word-addressed, and "byte" is basically "how many characters you typically pack inside one word".
22:08:39 <oerjan> hm
22:08:56 <Vorpal> oerjan, you could split a binary bitstream into 8 bit chunks certainly, but you could just as well split it into 7 bit chunks
22:09:14 <Vorpal> (might need a bit of care if you don't have a multiple of 7 bits)
22:10:13 <oerjan> 9 and 81 should work splendidly for a ternary computer, of course
22:10:32 <Vorpal> 81 bits is quite a large word
22:10:46 <oerjan> 27 then
22:10:55 <Vorpal> 81 trits is even more ridiculous
22:10:58 <Vorpal> hm
22:11:09 <oerjan> > 3^27
22:11:10 <lambdabot> 7625597484987
22:11:22 <oerjan> > logBase 2 $ 3^27
22:11:22 <lambdabot> 42.793987519471216
22:11:35 <Vorpal> quite a bit yeah
22:11:41 <fizzie> Nice middle ground between 32- and 64-bitness.
22:11:45 <Vorpal> yeah
22:11:50 <fizzie> > logBase 2 $ 3^81
22:11:51 <lambdabot> 128.38196255841365
22:12:29 <fizzie> On the other hand, for combatibility with the rest of the world you can pack 128-bit quantities in the 81-trit words.
22:13:08 <Vorpal> heh
22:13:55 <Vorpal> what would a base-4 computer be called?
22:14:03 <oerjan> quaternary
22:14:41 <oerjan> except that it's really just binary with more packing
22:14:53 <fizzie> Quinary computers replace the cache with a quiche.
22:15:09 <Vorpal> so base 5 then I guess is the next sufficiently different one
22:15:35 <ion> fizzie: hah
22:15:54 <ion> I want to replace the cache with a douche.
22:16:00 <oerjan> `addquote <fizzie> Quinary computers replace the cache with a quiche.
22:16:03 <HackEgo> 805) <fizzie> Quinary computers replace the cache with a quiche.
22:16:08 <fizzie> Much like I always think of decimal numbers as "just quinary with more packing".
22:16:45 <oerjan> fizzie: erm that's not quite right
22:17:07 <oerjan> decimal definitely involves both quinary and binary
22:17:20 <fizzie> Okay, "just bi-quinary" then.
22:17:37 <oerjan> the bi queen base
22:17:48 <Vorpal> that sounds dirty for some reason...
22:18:00 <oerjan> YOU DON'T SAY
22:18:23 <Vorpal> oerjan, funny thing is I parsed it as "bee queen base" first due to sv:bi = en:bee
22:18:34 <Vorpal> and I was wondering why it sounded dirty
22:18:35 <Vorpal> XD
22:18:46 <oerjan> i briefly considered changing it to bee, alas i had already pressed return
22:18:52 <ion> Duodenary computers replace the cache with a douche.
22:19:09 <Vorpal> ion, which base is that?
22:19:18 <ion> http://en.wikipedia.org/wiki/Number_prefix 12
22:19:22 <Vorpal> ah
22:19:56 <fizzie> I think people would just call them duodecimal.
22:20:09 <Vorpal> wouldn't it be dodeca-?
22:20:30 <fizzie> http://en.wikipedia.org/wiki/List_of_numeral_systems names it the duodecimal system. But it's pretty arbitrary.
22:20:43 <Vorpal> since hexdecimal is used from the Greek column as it were
22:20:57 <Vorpal> ion, so why use the Latin variant for 12?
22:21:05 <oerjan> "should we use greek or latin for 16?" "i dunno, let's use a little of each!"
22:21:13 <Vorpal> well yes
22:21:54 <oerjan> maybe the namers were just afraid of sex
22:21:59 <ion> Binary came from there.
22:22:09 <Vorpal> hm
22:23:14 <Vorpal> oerjan, possible
22:23:20 <oerjan> it's really the "hexa" that is off. of course the latin ones cannot make up their minds which number form to use for the base
22:23:52 <fizzie> oerjan: They could've just gone with "sedecimal" (cf. senary), that's not so sexy.
22:24:32 <Vorpal> sexdecimal sounds fine to me. Who would confuse it with the English meaning of "sex"?
22:24:51 <oerjan> Vorpal: you want a vowel between x and d
22:25:01 <fizzie> "Sexydecimal" might've made programming more popular.
22:25:17 <Vorpal> oerjan, why not sexadecimal then?
22:26:19 <fizzie> Wiki 'Octal': "In 1716 King Charles XII of Sweden asked Emanuel Swedenborg to elaborate a number system based on 64 instead of 10. Swedenborg however argued that for people with less intelligence than the king such a big base would be too difficult and instead proposed 8 as the base. In 1718 Swedenborg wrote (but did not publish) a manuscript: "En ny räknekonst som omväxlas vid talet 8 istället för det vanliga vid talet 10" ("A new arithmetic (or art of counting) which changes at th
22:26:21 <Vorpal> anyway sv:sex = en:six and also exists as a loan word from English in the other sense. People doesn't seem to get embarrassed when discussing numbers, so meh.
22:26:26 <fizzie> Best story.
22:26:58 <oerjan> Vorpal: because -a- is not used that way in latin
22:27:20 <Vorpal> oerjan, so what vowel would be used then? And it didn't stop then with hexadecimal anyway
22:27:35 <oerjan> hm actually perhaps there shouldn't be a vowel
22:27:56 <Vorpal> s/then/them/
22:28:02 <Vorpal> (for the second instance)
22:28:32 <oerjan> but as fizzie says, the historically correct is se-
22:30:02 <fizzie> Somehow it's humorous how the "Usage" column for octal in the wiki says "Charles XII of Sweden, Unix-like permissions". It's the juxtaposition.
22:30:37 <oerjan> Vorpal: but hexa- is perfectly natural greek, see hexagon
22:30:43 <Vorpal> ah
22:31:01 <Vorpal> so what would the greek name for hexadecimal have been?
22:31:25 <oerjan> hexadekasomething
22:31:32 <oerjan> i assume
22:31:54 <Vorpal> hm
22:32:16 <oerjan> judging from dodekahedron
22:32:32 <fizzie> Often spelt with a 'c'.
22:32:40 <fizzie> "Hexadecastic" has a nice ring to it.
22:32:40 <oerjan> but none of the ones listed use greek for the last part
22:32:45 <Vorpal> are there any esolangs that are easiest to parse starting from the end of the file?
22:33:22 <oerjan> Vorpal: heh i doubt it
22:33:26 <Vorpal> why?
22:33:42 <Vorpal> it is a fairly obvious idea
22:34:06 -!- Slereah has quit.
22:34:23 <Vorpal> it wouldn't be too hard to design such a language anyway
22:34:28 <oerjan> because most are either so simple that they parse trivial from both ends, or have a syntax similar to normal languages. that's my presumption anyway
22:34:35 <Vorpal> hm
22:34:41 <oerjan> *lly
22:35:32 <oerjan> well i doubt any are accidentally easier, that is, and i don't recall any made explicitly for the purpose
22:35:42 <Vorpal> you could do stuff like line comments indicated by a symbol at the end of the line and similar. Oh and stuff like bash heredocs that started at the end would more or less require parsing from the end
22:36:43 <oerjan> and of course there's kayak, which parses precisely as easy both ways ;P
22:36:57 <Vorpal> not familiar with that one *looks it up*
22:37:10 <oerjan> *ily
22:37:23 <oerjan> stupid adverbs
22:37:27 <Vorpal> oh, reversible
22:38:09 <Vorpal> oerjan, anyway, I wonder what mixing things that were hard to parse from one direction with ones hard to parse from the other would do
22:38:33 <oerjan> ambiguity is the most likely answer :P
22:38:43 <Vorpal> well okay
22:38:51 <Vorpal> I guess you might carefully manage to avoid tha
22:38:54 <Vorpal> that*
22:39:13 <Vorpal> oerjan, anyway ambiguity is the most likely answer when writing any non-trivial grammar :P
22:40:53 <oerjan> i understand one of the easiest ways to prove a grammar non-ambiguous is to run it through an LR(1) parser generator, which will punt if it isn't. of course that won't manage all non-ambiguous grammars and _is_ biased from the left.
22:41:19 <Vorpal> indeed that is a good way to check a grammar
22:41:34 <Vorpal> but it won't really be suited to a bidirectional grammar
22:41:40 <oerjan> (no algorithm can decide ambiguity in general, it's undecidable)
22:41:53 -!- calamari has joined.
22:41:55 -!- audy has joined.
22:42:03 <Vorpal> you most probably need to write a custom parser, or a new parser generator
22:42:27 <oerjan> but thinking about what happens if you mix left- and right- associative operators, precedence seems to be involved for this
22:42:58 <Vorpal> you probably need precedence for the left- and right-parsed constructs in a similar manner yes
22:44:33 <Vorpal> (anyway using a yacc style parser generator it technically only errors out on a reduce-reduce conflict, since a shift-reduce conflict has a default behaviour.)
22:45:02 <oerjan> yes, but it lists the number of each, afair
22:46:23 <kallisti> Chopin is so good..
22:46:54 <oerjan> oh so sexadecimal has actually been used
22:48:23 <oerjan> "The etymologically proper Greek term would be hexadecadic (although in Modern Greek deca-hexadic (δεκαεξαδικός) is more commonly used).
22:48:26 <oerjan> "
22:50:21 <kallisti> decaheximal
22:51:17 <fizzie> Vorpal: There's a paper ("Parallel Parsing-based Reverse Engineering") on speeding up parsing on a multicore system by generating equivalent RL and LR parsers from a single grammar, and then running one thread from the left and another from the right; and another ("An Implementation of a Parallel Bidirectional Parsing Algorithm") that's more complicated, using LR and RL sub-grammars for some tokens.
22:51:44 <ion> fizzie: Your client doesn’t seem to split overlong lines.
22:52:05 <ion> fizzie: Irssi comes with splitlong.pl to do that.
22:52:39 <fizzie> "Bah."
22:53:12 <Vorpal> back, the connection to the bouncer broke there for a bit
22:53:36 <Vorpal> <kallisti> Chopin is so good.. <-- you might like Gregor then
22:54:04 -!- Slereah has joined.
22:54:15 <Vorpal> personally I'm not such a huge fan of Chopin (at least the bits I heard of him)
22:55:01 <Vorpal> fizzie, nice
22:55:29 <Vorpal> <ion> fizzie: Your client doesn’t seem to split overlong lines. <-- it seemed to split it okay?
22:55:38 <fizzie> Vorpal: I assume it was for the earlier wikiquote.
22:55:42 <Vorpal> ion, no data was lost after all?
22:55:48 <Vorpal> ah
22:56:05 <Vorpal> fizzie, what client are you using?
22:56:16 <Vorpal> xchat handles splitting too you know
22:57:35 <kallisti> Vorpal: Debussy and Chopin are two of my favorites.
22:58:11 <kallisti> in terms of "classical" (inb4 Gregor shitstorm) composers.
22:59:10 <Jafet> Debussy and Chopin were late romantic, not classical!
22:59:18 <kallisti> yes I know.
23:00:05 <Vorpal> Jafet, snap, you beat me to it
23:00:21 <Jafet> Posh and posher
23:00:22 <Vorpal> anyway I like some of Debussy, and I really dislike some other
23:00:49 <Vorpal> anyway, I much prefer actual classical music to that
23:00:56 <Jafet> He tried to write cakewalks at some point, which got funny
23:03:04 <kallisti> heh. didn't know that.
23:03:10 <quintopia> i like acoustic/symphonic music better the closer to the present it was made :D
23:03:24 <quintopia> i'm going to arbitrarily lump all academic electronic music into that category
23:03:35 <Jafet> What is non-acoustic music
23:03:42 <quintopia> it's symphonic even if the phons are artificially generated right?
23:03:55 <quintopia> justin bieber is non-acoustic music
23:04:03 <quintopia> lady gaga is non-acoustic music
23:04:37 <Jafet> By your arbitrary standards
23:04:54 <quintopia> really, what i meant by "acoustic" was "does not hinge on the quality of lyrics"
23:05:02 <quintopia> so
23:05:21 <quintopia> come up with a word that means that
23:05:33 <Jafet> Non-lyrical
23:05:34 <kallisti> instrumental
23:05:36 <kallisti> :>
23:05:49 <kallisti> unless it's beatboxing
23:05:54 <kallisti> which then hinges on beatboxing but not lyrics.
23:05:57 <quintopia> non-lyrical implies it has no lyrics, and instrumental implies either it has instruments, or we can't do without it
23:05:58 <kallisti> and is not an instrument
23:06:11 <kallisti> instrumental just means without vocals.
23:06:14 <kallisti> in my experience.
23:06:16 <quintopia> yeah
23:06:22 <quintopia> which i don't want to exclude
23:06:34 <ais523> well, how are you going to have lyrics without vocals, or vice versa?
23:06:41 <ais523> I guess vocals without lyrics is easier
23:06:42 <quintopia> since mortuos plango, vivos voco has vocals, but is not about singing at all
23:06:45 <Jafet> Stereolab albums have nonsense lyrics
23:06:45 <ais523> as you can just sing nonsense words
23:07:02 <olsner> I guess the lyrics could be thought or implied as well
23:07:30 <quintopia> ais523: but i don't want to disallow lyrics, just require that the meaning of the piece does not hinge on the words being sung/said
23:07:53 <ais523> quintopia: oh, I see, you want a name for the bit of the piece that doesn't involve lyrics, while allowing lyrics to exist as well?
23:08:06 <ais523> sort-of like the output of a karaoke filter?
23:08:40 <quintopia> ais523: i want a name for the class of music that may or may not have lyrics, but whose focus is directed away from the lyrics. namely, because the voices are being used more as instruments than "creators of meaning"
23:09:42 <Jafet> So that you can use that name to hate on Justin Bieber?
23:09:45 <quintopia> consider john appleton's "chef d'oeuvre". lots of words which we very readily process as having meaning...but they could just as easily have been other words.
23:10:10 <kallisti> quite a lot of John Zorn has nonsense lyrics.
23:10:14 <kallisti> or nonsense vocals.
23:10:22 <Jafet> Some African bush tribes have languages with absolute pitch. Their music and language are interchangeable
23:10:32 <quintopia> Jafet: i do not intend to hate on justin bieber. i have nothing against him, having never listened to him. he was the most popular artist i coudl think of whose work hinges primarily on lyrics
23:10:50 <Jafet> Well, I'm not sure if they were absolutely absolute
23:11:13 <Jafet> I don't think Bieber's popularity has anything to do with his lyrics.
23:11:24 <quintopia> probably not
23:11:44 <quintopia> i am not a marketing professional. i don't study what makes someone popular.
23:12:03 -!- Phantom_Hoover has quit (Quit: Leaving).
23:12:12 <Jafet> Strictly speaking, none of it is his music anyways
23:12:15 <Vorpal> <Jafet> Some African bush tribes have languages with absolute pitch. Their music and language are interchangeable <-- that is amazing, also would be impossible to speak for some people
23:12:37 -!- augur has quit (Remote host closed the connection).
23:12:40 <fizzie> ais523: You can do lyrics-without-vocals by e.g. putting in some morse code beeping.
23:12:50 <ais523> fizzie: hmm, interesting
23:13:25 <Jafet> Lyrics are generally more than words
23:13:33 <quintopia> Vorpal: i believe the fact that pitch is significant causes the prevalence of "perfect pitch" in those tribes to be much much higher
23:13:39 -!- augur has joined.
23:13:46 <Vorpal> quintopia, hm okay
23:13:49 <quintopia> so, it doesn't eliminate as many people as it would elsewhere
23:14:05 <Jafet> I assumed Vorpal was referring to people not from those tribes
23:14:25 <fizzie> The others can just autotune. :p
23:14:26 <Vorpal> Jafet, well mostly that yes
23:14:27 <quintopia> i would think if they wanted to talk to outsiders, they'd learn english :P
23:14:33 <Vorpal> fizzie, :P
23:14:38 <quintopia> it is the most prevalent second language in the world after all
23:24:48 <Vorpal> quintopia, which is the most prevalent first language I wonder
23:25:03 <quintopia> mandarin iirc
23:25:08 <Vorpal> heh
23:26:23 <Jafet> Mostly because the Indians are worse at agreeing on a language than the Chinese
23:26:52 <Jafet> Of course, agreeing meant conquer the land and make everyone speak your provincial language
23:29:21 -!- Jafet has quit (Quit: Leaving.).
23:43:04 -!- pkzip has joined.
23:44:51 -!- pkzip has left.
23:46:18 <kallisti> I remember how weird the Just constructor seemed to me.
23:46:25 <kallisti> but now it makes sense.
23:46:30 <kallisti> I wonder what would be a better name for it.
23:46:52 -!- zzo38 has joined.
23:48:00 <nooga> fmap fmap fmap
23:48:03 <nooga> :: (Functor f, Functor f1, Functor ((->) (a -> b))) =>
23:48:06 <nooga> ....
23:48:17 <nooga> (a -> b) -> f (f1 a) -> f (f1 b)
23:48:18 <nooga> !
23:48:24 <monqy> in more mley languages iirc maybe is option, just is some, and nothing is none
23:48:47 <monqy> which is also a bit weird
23:49:23 <nooga> why every fmap ^ n is a function?
23:50:15 <oerjan> nooga: it eventually repeats
23:50:33 <monqy> fmap fmap fmap === fmap . fmap
23:51:16 <monqy> or something like that
23:51:24 <oerjan> well yes
23:52:44 <nooga> uh
23:52:50 <oerjan> i wrote it all out on the channel a few weeks ago
23:52:53 <oerjan> i think
23:53:35 <oerjan> fmap ^ 6 = fmap ^ 10, or thereabouts
23:55:09 <oerjan> whenever the second argument of fmap is a function, the fmap = (.)
23:57:09 -!- derdon_ has quit (Remote host closed the connection).
23:57:39 -!- aloril has quit (Read error: Operation timed out).
2012-01-30
00:13:58 -!- aloril has joined.
00:28:10 -!- ais523 has quit (Read error: Connection reset by peer).
00:28:34 <zzo38> Is it OK in Haskell to have a class C and then a function of type C () => Int -> String and have it not callable unless you define that instance in the main program which imports that library? (Assuming relevant extensions are enabled)
00:29:16 <ion> What’s that useful for?
00:29:52 <zzo38> ion: Why aren't you using ASCII?
00:30:07 <ion> I’m using a superset of ASCII.
00:31:20 <zzo38> There is no point in doing so in this circumstances.
00:31:48 <zzo38> And I am not entirely sure what the things I have is useful for; but I do have some ideas of such uses.
00:33:06 <zzo38> Possibly, if you are defining a partial program. Such as, instead of .hs-boot stuff.
00:34:09 <zzo38> The stuff that needs to be defined in an external program, can simply be class methods (and associated types, too).
00:34:38 <zzo38> Since if they are () -> x then you can have x it is isomorphic.
00:38:38 <zzo38> Do you understand this now?
00:42:09 <oerjan> zzo38: i don't think C () => Int -> String is a possible useful type, since () is not mentioned to the right of =>
00:42:25 <oerjan> and so there will be no way for the class to be looked up
00:43:10 <zzo38> But, maybe the class has a method: f :: t -> Int -> String; Now you can call f () which requires that constraint
00:43:41 <oerjan> yeah that would work. although perhaps making it C Int is better.
00:43:45 <zzo38> (-XFlexibleContexts is required)
00:44:33 <zzo38> oerjan: However, it might be a class with many methods (and maybe even associated types); so () -> x is isomorphic to x you can just include any value you want there, similar to a .hs-boot file but different
00:44:49 <ion> zzo38: If it compiles and is useful, it’s surely ok. :-)
00:46:41 <oerjan> i think this is slightly discouraged in the same way as global variables, since it means you cannot use two different instances in the same program (or at least module)
00:48:20 <oerjan> although it resembles a bit what the reflection package is for
00:48:29 <zzo38> oerjan: Yes; still, in such cases the instance should only be defined in the main program (which compiles into an executable), so no libraries would define such an instance
00:48:31 <oerjan> if () were replaced by a generic type
00:48:59 <zzo38> Such as with a similar use of the .hs-boot feature
00:49:13 <zzo38> Although that isn't the only use of .hs-boot either.
00:49:56 <zzo38> Since .hs-boot still requires such a module to be imported and to exist; the other way I used is exporting instead, and usable in any main program
00:50:30 <zzo38> But yes it is like global variables and can be done in other ways
00:51:22 <zzo38> Of course using the global value passed to every function, still cannot do associated types
00:59:24 -!- oerjan has quit (Quit: Lost terminal).
01:08:09 <kallisti> :t (*>)
01:08:09 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f b
01:08:41 <kallisti> strange that RWH uses this instead of >>, I guess to teach Applicatives?
01:08:46 <kallisti> in the Parsec examples.
01:09:26 <zzo38> I do commonly use both <* and *> with Parsec; >>= and join are hardly ever useful with Parsec
01:11:33 <kallisti> > ($ [1..10]) <$> (,) <$> [1..10]
01:11:34 <lambdabot> [(1,[1,2,3,4,5,6,7,8,9,10]),(2,[1,2,3,4,5,6,7,8,9,10]),(3,[1,2,3,4,5,6,7,8,...
01:11:45 <kallisti> > ($ [1..10]) <$> ((,) <$> [1..10])
01:11:46 <lambdabot> [(1,[1,2,3,4,5,6,7,8,9,10]),(2,[1,2,3,4,5,6,7,8,9,10]),(3,[1,2,3,4,5,6,7,8,...
01:12:25 <kallisti> > (<$> [1..10]) <$> ((,) <$> [1..10])
01:12:26 <lambdabot> [[(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(1,9),(1,10)],[(2,1),(2,2...
01:12:47 <kallisti> > (=<< [1..10]) <$> ((,) <$> [1..10])
01:12:48 <lambdabot> Couldn't match expected type `[b]' against inferred type `(a, b)'
01:20:57 <Sgeo> :t (*>)
01:20:58 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f b
01:21:09 <Sgeo> Is *> just <* flipped?
01:21:19 <Sgeo> Wait, no
01:21:25 <Sgeo> @src (*>)
01:21:25 <lambdabot> (*>) = liftA2 (const id)
01:21:57 <Sgeo> So it's like >> for applicatives?
01:22:15 <zzo38> Sgeo: Yes it is equivalent
01:28:05 -!- Vorpal has quit (Ping timeout: 252 seconds).
01:32:17 <kallisti> the syntax proposals for typeclass aliases kind of boggle me
01:32:19 <kallisti> why not just....
01:32:28 <kallisti> class (A a, B a, C a) => D a
01:34:19 <kallisti> the porposals I've seen do something like
01:34:29 <kallisti> class alias (A a, B a, C a) => D a where { ... }
01:34:34 <kallisti> I don't really understand the where clause.
01:34:47 <zzo38> My own proposal is to add a kind & and then do: type D a = (A a, B a, C a) where D is now of kind (* -> &)
01:35:00 <zzo38> And is the one seeming most logical to me.
01:35:32 <kallisti> so D is a typeclass even though it's declared as a type?
01:35:35 <kallisti> that's somewhat strange.
01:35:54 <zzo38> kallisti: Well, no it isn't; you cannot declare instances of it. But you can use it in constraints and so on.
01:36:27 <zzo38> (Of course it doesn't work in current Haskell, but if you added the & kind I proposed, then it would work)
01:36:45 <kallisti> I see nothing wrong with treating a typeclass declaration with no where to be an alias, and thus writing an instance for that alias produces an instance for each of the aliased classes.
01:36:47 <zzo38> (Adding the & kind also allows many other things to be done, including having class parameters with that kind)
01:37:04 <kallisti> now that could potentially be useful.
01:37:11 <kallisti> having typeclasses are parameters.
01:37:13 <kallisti> s/are/as/
01:37:33 <kallisti> for example
01:37:35 <zzo38> Yes I have often wanted it
01:38:14 <kallisti> you could break MonadPlus into three typeclasses
01:38:23 <kallisti> one with mplus, one with mzero, and one that's an alias for both.
01:38:34 <kallisti> the alias could be named MonadPlus, thus not breaking any code.
01:39:32 <kallisti> you could do similar things with Num.
01:39:48 <zzo38> I have often wanted typeclasses as parameters to classes, though. You are saying something different, but still could work.
01:40:07 <kallisti> yes I'm just saying that typeclass aliases would ease a lot of typeclass reforms.
01:40:20 <kallisti> while minimizing code breakage.
01:40:26 <zzo38> However, if you could do what you say, then you should also be able to do something like instance (A a, B a, C a) where { ... } since the type synonym is just the same thing as that
01:40:34 <kallisti> yes
01:40:36 <kallisti> ... well
01:40:38 <kallisti> hm
01:40:44 <kallisti> I guess that's fine, the syntax would need some work.
01:40:58 <zzo38> And once you define the type synonym, then instance D a where { ... } will work too
01:41:11 <kallisti> yes
01:41:20 <zzo38> kallisti: I don't think the syntax needs any work; the syntax is the same as current Haskell syntax, the only difference is a new kind
01:41:40 <kallisti> no I was referring to the use of a tuple in the instance there. I suppose that's fine.
01:41:45 <kallisti> it's the best syntax I can think of.
01:42:07 <kallisti> it's not really a necessary change, but it would add a degree of consistency
01:42:31 <kallisti> and could perhaps be convenient in some situations where you want to define many small but related typeclasses.
01:42:42 <kallisti> for example Enum and Bounded are often related to each.
01:42:54 <zzo38> It isn't a tuple type, however. I suppose it mean the tuple syntax will have two kinds
01:43:13 <zzo38> Such a syntax is already used in constraints, anyways.
01:43:21 <kallisti> yes I don't think there's any diambiguity
01:43:25 <kallisti> because there is no tuple typeclass.
01:44:11 <kallisti> the only problem I see is that typeclasses don't really seem to fit into the kind model.
01:44:16 <kallisti> you can't use a typeclass as a type.
01:44:44 <zzo38> But it would allow many things to be done that do not currently work
01:45:00 <kallisti> yes, however
01:45:09 <kallisti> if you parameterize a typeclass
01:45:19 <kallisti> what information do you gain? it would be nearly impossible to define a default method, for example.
01:45:33 -!- calamari has quit (Quit: Leaving).
01:45:36 <zzo38> Just like a type of kind (* -> *) cannot be used where a type of kind * is expected, so it is the same kind of thing other ones
01:45:51 <kallisti> hmm, I suppose it makes sense.
01:46:26 <kallisti> you could also do it as a "class family" :P
01:46:38 <zzo38> Another kind I have proposed is the + kind; types of that kind are natural numbers and can be used anywhere that a * kind type is expected, but not the other way around. If a type of kind * is expected and a type of kind + is used, it is the type with that many values.
01:46:53 <kallisti> so essentially + is a subkind
01:47:00 <kallisti> there's already a kind hierarchy so it requires no special casing.
01:47:13 <zzo38> kallisti: O, yes. OK.
01:47:32 <kallisti> http://hackage.haskell.org/trac/ghc/wiki/IntermediateTypes#KindsareTypes
01:47:36 <kallisti> this diagram is helpful.
01:48:23 <kallisti> so + would just go under ?? probably.
01:48:33 <kallisti> hm
01:48:43 <kallisti> where do you think it should go?
01:49:01 <zzo38> Example of & kind in class parameter: class ConstrainedMonad (c :: * -> &) (m :: * -> *) and same thing with Functor. Now ConstrainedMonad itself is of kind ((* -> &) -> (* -> *) -> &)
01:49:38 <kallisti> I think for clarity it would be nice to be able to put the kind annotation within the where.
01:50:06 <zzo38> kallisti: I think under * is probably best; it can become unboxed by the optimizer if necessary
01:50:12 <zzo38> But maybe I am wrong
01:50:32 <kallisti> well ?? implies that it can be used as a function argument type.
01:50:45 <kallisti> (->) :: ?? -> ? -> *
01:50:56 <zzo38> That is, put + under * but put & entirely separately from anything in that diagram
01:51:09 -!- nooga has quit (Ping timeout: 245 seconds).
01:51:56 <zzo38> kallisti: I know that, but I was thinking of using natural numbers of kind + as parameters of types that require types of kind *
01:51:59 <kallisti> what does + represent at a value level?
01:52:06 <kallisti> a natural number?
01:52:48 <zzo38> A type of kind + when used as a type of kind * means that is the number of possible values of that type (not counting bottoms).
01:53:31 <zzo38> For example, Maybe (Maybe (Maybe Zero))) is isomorphic to the type 3 except that 3 can be used as + or * so it can be used where types are created using natural numbers (using induction or whatever method)
01:54:06 <zzo38> (Where, in this example, Zero is an uninhabited type)
01:54:12 <kallisti> ah I see.
01:55:23 <kallisti> you could extend the kind hierarchy to have a new universal kind above ?, and include both ? and & under that.
01:55:39 <zzo38> kallisti: Yes.
01:55:40 <kallisti> the new root kind would then be the kinds allowed in type parameters.
01:55:54 <zzo38> Yes.
01:57:28 <kallisti> that's a somewhat complicated tree. :P
01:59:06 -!- zzo38 has quit (Remote host closed the connection).
02:11:55 -!- azaq23 has quit (Read error: Connection reset by peer).
04:14:00 -!- primo has joined.
04:21:20 -!- zzo38 has joined.
04:22:14 <zzo38> FizzBuss TeX now in 142 bytes: \newcount\-\let~\advance\day0\loop~\-1~\day1~\mit\ifnum\-=3\-0Fizz\fi\ifnum\fam=5Buzz\rm\fi\ifvmode\the\day\fi\endgraf\ifnum\day<`d\repeat\bye
04:22:52 <zzo38> I think my original program was 145 bytes.
04:24:44 <ion> :-)
04:25:51 <zzo38> ion: Do you know how to do things in TeX?
04:27:36 <ion> I haven’t studied it beyond creating documents and doing trivial macro-style things.
04:28:27 <zzo38> What things have you done?
04:29:29 <zzo38> (My FizzBuzz program is a complete program; run TeX and paste this code and it will work. Ensure to use the executable called "tex"; it is not guaranteed to work with anything else, although you can try)
04:29:35 <ion> This is the most advanced thing i’ve done, and it’s still trivial. https://github.com/ion1/amuri/blob/master/lilypond.inc
04:30:53 <zzo38> I notice it uses extensions such as LaTeX and \write18.
04:30:58 <ion> yes
04:31:16 <zzo38> My own programs and documents are all Plain TeX without extensions.
04:31:20 <ion> ok
04:32:46 <zzo38> There are other extensions such as EncTeX, LuaTeX, pdfTeX, ConTeXt, etc. Sometimes they are used; LaTeX is probably the most common one, although I prefer Plain TeX.
04:33:31 <zzo38> In fact, once I posted a document here, and they couldn't get it to compile on pdfTeX, it only worked with Plain TeX. I don't know why that is, but I never intended it to work with anything other than Plain TeX anyways.
04:33:45 <zzo38> (If you want PDF output, you can still convert it using an external program afterward)
04:38:05 <ion> aye
04:40:56 <pikhq_> zzo38: Strictly speaking, pdfTeX isn't an extension to TeX.
04:40:58 <pikhq_> It's a fork.
04:41:28 <pikhq_> Adding direct PDF output and a lot of microtypography stuff.
04:58:25 <kallisti> would it be sane to design web pages with TeX or LaTeX?
05:00:19 <ion> There’s a bunch of web content generated from LaTeX source.
05:00:23 <zzo38> kallisti: I don't think so; web pages are HTML.
05:00:40 <zzo38> But you should make TeX DVI file for printout instead of using HTML for that purpose, anyways.
05:01:41 <zzo38> pikhq_: There is differences though; I have been told that a document I have made with TeX will not work with pdfTeX. Using the "tex" executable will work.
05:02:26 <kallisti> so there's no TeX -> HTML ?
05:03:36 <zzo38> There might be but it isn't always going to work. Only TeX can properly compile TeX documents; nothing else will.
05:05:02 -!- pikhq_ has quit (Ping timeout: 240 seconds).
05:05:11 -!- pikhq has joined.
05:07:37 <zzo38> But still, you could make a format file for TeX which has commands for creating HTML stuff, and either output HTML directly using \openout and \write, or use DVI specials and convert the DVI using external programs.
05:07:52 <zzo38> But it isn't the best way to do so in my opinion; simply createa printout DVI file instead.
05:09:14 <zzo38> I notice many of the new spam articles on esolang wiki are marked as minor edits; maybe they try to hide from some people that will revert it
05:32:09 <quintopia> zzo38: do you have a religion?
05:35:10 -!- Jafet has joined.
05:53:57 -!- kejoki has joined.
06:04:29 <zzo38> quintopia: Kind of; not really.
06:05:09 <quintopia> zzo38: that kind of answer calls for clarification. what exactly do you believe in that arena?
06:05:16 -!- Slereah has quit (Ping timeout: 276 seconds).
06:06:23 <zzo38> It is probably difficult to explain. If you can ask me specific questions, I can try to answer them.
06:06:50 <zzo38> Looking at my Jyte stuff might have helped a little bit except that it is now broken.
06:08:03 <zzo38> You can also try to search the IRC logs for lines I have typed about religion.
06:19:29 -!- pikhq has quit (Read error: Operation timed out).
06:20:58 -!- pikhq has joined.
06:36:53 <oklopol> "<quintopia> ais523: i want a name for the class of music that may or may not have lyrics, but whose focus is directed away from the lyrics. namely, because the voices are being used more as instruments than "creators of meaning"" i put all music in this category. most popular music has rather little content for me.
06:44:00 <oklopol> irregularwebcomic has fun science stuff.
06:44:36 <kejoki> word word word word word ...
06:44:44 <kejoki> now *that's* music
06:45:30 <oklopol> did you know that your name means (river in lojnish
06:46:12 <kejoki> unable to parse "(river in lojnish" probable missing delimeter
06:46:40 <oklopol> ke is ( in lojban
06:46:48 <oklopol> joki is river in finnish
06:47:24 <kejoki> cool. But I'm still worried about going overtime on that deli meter.
06:48:49 <oklopol> hmm
06:49:23 <oklopol> actually it's not a general paren, it's for changing the way a compound word is grouped
06:49:46 <kejoki> lambdabot knows no Zaphod quotes! Shocked, I am.
06:50:09 <oklopol> to ... toi is parens
06:50:40 <oklopol> last week i realized lojban is an awesome language and i should retry learning it
06:50:49 <kejoki> Is unicode actually used enough to be good for anything?
06:50:57 <zzo38> quintopia: If you have better questions (whether about religious stuff or otherwise), feel free to ask; or don't if you don't like to do so
06:52:19 <quintopia> zzo38: i don't know what to ask. are you spiritual? do you believe in any supernatural entities? do you practice any particular rituals? these seem the obvious questions to get a starting point...
06:53:41 <oklopol> i have an easier one, do you slaughter cows?
06:53:59 <kejoki> lojban is a perfect example of Gödel's Incompleteness Theorem moved into a non-abstract space. There is no possibility of creating an unambiguous human language.
06:54:41 <oklopol> err, lojban never tried to be unambiguous
06:55:05 <oklopol> it has like a million words for saying "this part i'll leave ambiguous"
06:55:14 <quintopia> kejoki: its prime feature is it lets you mark where you have left out some information. it makes ambi--yeah that
06:55:18 <oklopol> it tries to have unambiguous parsing, and it does.
06:55:24 <kejoki> syntactically unambiguous.
06:55:36 <oklopol> you claim it doesn't succeed in that?
06:55:51 <kejoki> either that, or KG was worng.
06:55:57 <oklopol> what is kg
06:56:09 <monqy> Kurt Gödel?
06:56:13 <oklopol> what
06:56:23 <monqy> yeah I dunno either
06:56:27 <kejoki> yeah, him.
06:56:32 <quintopia> Gödel had nothing to say about human language afair
06:56:38 <oklopol> okay bye troll i'm going to work.
06:56:46 <monqy> I'm a bit reminded of itidus
06:56:47 <kejoki> nope. Just formal systems
06:57:03 <quintopia> bai oklopol
06:57:10 <kejoki> my apologies. I get a little whacky when it's late.
06:57:50 <Jafet> You can blame Sapir-Whorf.
06:58:21 <kejoki> heh
06:59:35 -!- primo_ has joined.
06:59:54 <kejoki> anyway, my point was that if you produce an unambiguous syntax you've got a formal system.
07:01:17 * kejoki <- is (hopefully) only *slightly* obnoxious, only part of the time.
07:01:26 <Jafet> No, a formal system is a formal system.
07:01:35 <quintopia> well, that may be true, for an interesting enough language
07:01:58 <quintopia> however, most languages are used to describe
07:02:12 <quintopia> they are use-based, not rule-based
07:02:22 <quintopia> human languages i mean
07:02:38 -!- primo has quit (Ping timeout: 248 seconds).
07:02:56 <kejoki> got that. But how can you create an unabiguous grammar that is not rule based?
07:03:15 <kejoki> sorry. syntax. It's late.
07:03:40 <zzo38> quintopia: Correct. Those are good questions. I rarely practice religious rituals. I sometimes pray in my mind, or even physically; but this is more a kind of meditation. About supernatural entities, my beliefs might be difficult to describe as yes or no belief in supernatural entities I suppose; but I can say some of my opinions seem to say isomorphism of some parts of different kinds, and I can say I consider myself generally agnostic
07:04:12 <quintopia> zzo38: what do you mean by kinds?
07:04:41 <Jafet> kejoki: "subject-verb-object" is a rule that does not produce any kind of formal system.
07:05:09 <quintopia> kejoki: you can specify a syntax in various ways, including string-rewriting rules, but even given a large and fairly nuanced vocabulary, you don't necessarily have a set of axioms
07:07:03 -!- jajaja has joined.
07:07:07 <zzo38> quintopia: Parts of different kinds of religious beliefs. I am somewhat spiritual but not much. I also think is good idea different people can have different opinion on religious things.
07:07:11 <kejoki> Jafet: English is not "designed syntax," it's
07:07:18 <kejoki> "organic"
07:07:37 <Jafet> Why are you bringing up english?
07:08:40 <kejoki> Jafet: because it's late and that was the first natural language that came to mind. I left off the "as an example"
07:09:14 <quintopia> zzo38: are there any beliefs that you believe it is virtuous to believe? example? are there any religious things you think it is wrong to believe (factually or morally)?
07:09:25 <zzo38> I do think texts and stuff of various religions can be good things to read; but don't simply agree everything they say, think about it yourself, too.
07:09:40 <kejoki> quintopia: unless the axioms are inherent in the rules.
07:10:07 <quintopia> kejoki: you don't seem to have a comprehensive understanding of what a formal system is.
07:10:24 <quintopia> when i say "rules" i mean something distinct from "axioms". every time.
07:11:16 <zzo38> quintopia: There are a few religious things which I believe to be factually wrong and/or morally wrong. There might be things I can consider virtuous to believe (I cannot think of specific examples of this time). But regardless, you must be able to think about these religious/philosophical things for yourself.
07:11:53 <kejoki> the axioms for the arithmetic of Natural numbers weren't set down until long after the rules.
07:12:04 <quintopia> zzo38: i know what i believe. i have thought about it. i'm just asking about you. what's an example of a religious teaching you think is definitely wrong?
07:12:35 <quintopia> kejoki: just now when you said "rules" you meant something that included the axioms.
07:12:43 <quintopia> those aren't the kinds of rules i mean.
07:13:45 <Jafet> There is no such thing as a religious teaching; every thing taught to people is taught by other people
07:14:12 <quintopia> Jafet: teaching is a synonym for doctrine. there is such a thing as religious doctrine.
07:14:41 <zzo38> quintopia: I have discussed "proper religion" on this IRC before. And, I never said you didn't know; that is OK (When I said, it is my opinion that you must be able to think about these things for yourself; I did not mean you (or anyone else) personally; I include myself in this "you"). (Just wait a minute or a few while I think of more to write...)
07:16:41 -!- quintopia has set topic: Brevity is the soul of keeping the link to the logs on my screen. | http://codu.org/logs/_esoteric/.
07:16:46 <zzo38> Many religious teachings can be good things to have if you do not simply blindly follow them. There may be very old religions, where some of the things they described would be factually wrong; however, some kinds of their spirituality might do (maybe). Morally is more difficult, since circumstances are also dependended.
07:18:00 <quintopia> "dependended" this is now my favorite word
07:18:02 <zzo38> However, religion should be unrestricted (restrictions include: copyright, patents, the government forcing you to follow a particular religion, and so on).
07:18:44 <quintopia> what? you mean i shouldn't be allowed to patent my religious rituals?
07:19:02 <pikhq> quintopia: No, you don't get to pull a Hubbard. :)
07:19:33 <kejoki> Suppose I have systems S and S', and they are the same, except that I have an axiom in S' that is a rule in S. Possible, or not?
07:19:42 <quintopia> not.
07:19:55 <zzo38> quintopia: Yes; that is part of what I mean. (Of course it is simply my opinion; but once you read it you should still possibly consider it since things can be written you can learn from it)
07:20:17 <zzo38> Religion may be more important for some people than for others, and that is a good thing and as it should be.
07:20:39 <quintopia> zzo38: if i were to patent my religious rituals, their descriptions become open source, since they are published by the patent office. takes all the mystery out my mysteries, dunnit?
07:21:30 <zzo38> Spiritual stuff and religious stuff can be combined with philosophical stuff to thought
07:21:33 <pikhq> quintopia: That's what some people say science does to religion, and yet, last I checked, religion still exists. :)
07:22:23 <quintopia> pikhq: nonetheless, i wouldn't want the whole world to know just exactly what i do with your mother (and with goddess) when she decides to convert.
07:22:25 <zzo38> quintopia: No, they wouldn't become open source until they expired or a proper patent license exists (in either case, the document is still public; it is still open; but "open source" has a different meaning). It can take the mystery out.
07:23:26 <zzo38> quintopia: However, I would prefer, don't do too many secret things that nobody will say; such as bad things; it is sometimes abused so you have to be careful. Church of Scientology (which I consider an improper religion) does do many of these kind of bad things too.
07:23:52 <quintopia> zzo38: name something that you believe in that can never be explained by science
07:24:27 <zzo38> pikhq: Religion can still exist; not everything is the stuff that science removes from religion. Science explains things objectively, and religion can explain things spiritually instead (which is not useful except for such things as meditation and so on).
07:25:03 <zzo38> quintopia: Let me think...
07:27:01 -!- primo_ has quit (Quit: Verlassend).
07:27:22 <zzo38> Whatever beyond the multiverse that would function the multiverse can probably never be explained by science; whether or not it exists. God (in my definitions, a somewhat more abstract than most, so it is more philosophically than religion) is not explainable by science (although beliefs in God might be explainable by science).
07:27:51 <quintopia> what is God, to you?
07:28:06 <kejoki> quintopia: anything that can't be subjected to experiment, or verified by repeated experiment, can't be explained by science. Science is just a method. The rest of "it" is Natural Philosophy.
07:28:22 <pikhq> kejoki: So, anything that DNE
07:28:26 <pikhq> Neat trick.
07:28:27 <zzo38> quintopia: The entire system as a whole plus things outside of the system.
07:28:57 <kejoki> pikhq: DNE is a definition, not an observation. It's a belief.
07:29:25 <pikhq> kejoki: It's a belief in invisible dragons and teapots orbiting Mars.
07:29:29 <zzo38> kejoki: Yes, those are things not explainable by science; but then, you would not even verify its existence in that way (if it is *refuted* by repeated experiment, you can say it does not exist)
07:29:47 <pikhq> And equally ridiculous.
07:30:12 <zzo38> pikhq: Invisible dragons and teapots orbiting Mars are physical objects. Even if they would be difficult to find, they are not the proper way of religion, which should properly deal with spiritual matters rather than physical ones.
07:30:41 <quintopia> interesting
07:30:45 <quintopia> what are spiritual matters?
07:31:07 <Jafet> I'm sure one of the numerous tiny rocks orbiting Mars may be used passably as a teapot
07:31:11 <quintopia> zzo38: that was directed at you specifically
07:31:38 <zzo38> That is difficult...
07:31:51 <quintopia> Jafet: phobos is probably big enough that a pint of tea at the center could be pressure-heated by gravity ;)
07:32:18 <pikhq> Jafet: But none of them are, most likely, the Utah teapot. :)
07:32:59 <zzo38> Some things are difficult to explain in words, but cannot be explained without words, so what do you want to call it? If you call it a stick, you miss all the other important properties. If you do not call it a stick, you do not say what it is.
07:33:38 <Jafet> This dilemma is easy solved with Wittgenstein
07:36:40 <zzo38> The Catholic Church does have some fictitious saints (once believed to be real, but later found to be mistaken and never actually existed). People still invoke them in their prayer, and can feel better; their existence or lack thereof is unimportant.
07:36:43 <kejoki> quintopia: I'll have to pick up on formal systems after I brush up on formal systems. You won this one, I need to find out how a rule in S can not be axiomatic in S'. A rule may be about manipulating symbols, but afaict an axiom is nothing but a rule that is assumed to be true
07:36:43 <Jafet> Wittgenstein: words have no inherent meaning, language exists to be misunderstood, communication is a crapshoot, humanity sucks
07:37:21 <kejoki> "Wittgenstein was a beery swine..."
07:42:13 <quintopia> kejoki: axioms are such as "zero is a number" and "there is a successor function, such that the successor of a number is a number" and "one is the successor of zero"
07:42:41 <quintopia> rules are like the law of syllogism which let us infer from the previously stated axioms that "one is a number"
07:46:11 <quintopia> syntax is what dictates what sort of statements i can make. aka, the syntactical rule "subject-verb-object" says that "zero is a number" is a well-formed formula (which we take as an axiom)
07:50:58 <kejoki> we rewrite from axioms to conclusions using rules stated in an allowed syntax. This I get. We then use these conclusions as if they were axiomatic to do further rewriting. "conclusion" here is usually the RHS a textbook system. My sloppiness was conflating "rule" and "conclusion".
07:51:37 <quintopia> no, you conflated something else too
07:51:49 <quintopia> grammar and inference rules
07:52:24 <quintopia> inference rules do not have to obey any grammar constraints. indeed, a system may not even be able to coherently describe its inference rules with a well-formed formula
07:52:25 <kejoki> I apologized for say "grammar" when I meant "syntax" way back there.
07:52:38 <quintopia> grammar=syntax
07:55:10 <kejoki> I bet a compiler writer would disagree with that.
07:55:55 <zzo38> About my earlier comment about God: Actually, I have various ideas of God of which I think of many depending on circumstances and context. Really, there is no objective answer to this question.
07:56:31 <kejoki> but I see your point about inference rules.
07:57:17 <zzo38> So I can write more in other days too.
07:58:03 <quintopia> yeah, it's kind of strange the way compiler builders call specification of the symbol alphabet "syntax" and the syntax/grammar "grammar". really they should just be "this is the part where you use regular languages, and this is the part where you use LALR(1) CFGs"
07:58:13 <quintopia> but that doesn't scan well...
08:00:06 -!- zzo38 has quit (Remote host closed the connection).
08:07:42 -!- Phantom_Hoover has joined.
08:13:41 <Phantom_Hoover> helo
08:13:41 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
08:14:56 <kejoki> oog
08:15:16 -!- kejoki has quit (Quit: falling asleep at keyboard.).
08:17:22 -!- Slereah has joined.
08:20:12 <quintopia> nantes is a cool place
08:21:44 <fizzie> It's not a number.
09:21:49 <Slereah> And I'm right in it!
09:30:41 -!- esowiki has joined.
09:30:46 -!- esowiki has joined.
09:30:46 -!- esowiki has joined.
09:31:20 -!- esowiki has joined.
09:31:20 -!- glogbot has joined.
09:31:25 -!- esowiki has joined.
09:31:25 -!- esowiki has joined.
09:53:47 -!- monqy has quit (Quit: hello).
09:54:24 -!- ais523 has joined.
09:57:56 -!- jajaja has quit (Ping timeout: 245 seconds).
10:11:26 -!- nooga has quit (Ping timeout: 272 seconds).
10:44:03 <kallisti> :t (<*)
10:44:04 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f a
10:46:24 -!- ais523 has quit (Remote host closed the connection).
11:12:11 -!- ais523 has joined.
11:13:52 -!- itidus21 has joined.
11:27:31 -!- derdon has joined.
11:41:07 -!- oerjan has joined.
11:41:25 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
11:41:32 * oerjan murders quintopia in his sleep.
11:41:46 <ais523> oerjan: your sleep, or quintopia's
11:42:06 <oerjan> quintopia's, most likely.
11:42:52 <fizzie> It certainly sounds easier that way.
11:45:32 <oerjan> oh well, i guess all mediocre things must come to an end.
11:45:43 * oerjan still has no evidence that there are any good ones.
11:46:58 <fizzie> Ohhhhh, you're speaking of the topic.
11:47:07 <fizzie> I thought it was just a random murdering.
11:48:17 -!- ais523 has set topic: http://codu.org/logs/_esoteric/ | Putting the link to the logs at the start of the topic: the latest trendy subversion of 2012.
11:48:35 <oerjan> yay!
11:50:17 <fizzie> /_esoteric/logs/codu.org//:http | Best enjoyed using a little-endian browser.
11:50:39 <oerjan> 01:34:29: <kallisti> class alias (A a, B a, C a) => D a where { ... }
11:50:39 <oerjan> 01:34:34: <kallisti> I don't really understand the where clause.
11:51:01 <oerjan> presumably so you can write defaults, like fmap = liftM
11:52:14 <oerjan> half the point is to be able to write Monad instances like they are currently, and still get Functor and Applicative automatically
11:53:39 <oerjan> ideally you want all old code to keep working
11:54:36 -!- derdon has quit (Remote host closed the connection).
11:54:53 <oerjan> or as close to all as possible
12:09:01 <ais523> <dakta> The only sensible default behavior for hitting tab in the absence of defined tab-stops is to move to the next line.
12:09:09 <ais523> finally I found an appropriate place for tabs vs. spaces flamewars
12:09:14 <ais523> and I like dakta's thinking here
12:14:04 <ais523> meanwhile, I managed to get my highest-rated Reddit comment ever by bashing PHP
12:14:16 <ais523> I guess this says more about Reddit than anything else
12:32:25 -!- oerjan has quit (Quit: Lost terminal).
12:34:29 -!- oerjan has joined.
12:35:01 <oerjan> hm interesting, this time i did an experiment with having two simultaneous putty sessions, and only one got disconnected.
12:35:30 <oerjan> ...and i forgot again to remember to get the exact error message, darn.
12:35:58 <oerjan> this makes me more suspicious that the error might be on the nvg servers rather than my isp (knock on wood)
12:38:05 <fizzie> If it was the one with an IRC in it that got disconnected, while an idle one survived, it might be that TCP stacks' thing of only noticing things are broken when there's actually some attempt to send data. Pure speculation, of course.
12:39:06 <oerjan> darn that is true
12:39:37 <oerjan> i've even been careful to make sure to type in the irssi window occasionally
12:40:09 <oerjan> _but_ the disconnect didn't happen while i did that, nor was anything coming from the channel
12:41:00 <oerjan> also i put the putty's on different nvg servers, i've now put up a third one to check that.
12:42:12 <oerjan> i am sure both of those servers have disconnected me recently when in irssi, though
12:44:15 <fizzie> Networking is an inexact science.
12:45:29 <oerjan> yes. i am just hoping the isp didn't actually send a new router that was _worse_ than the old one.
12:47:30 <oerjan> the difference from before is that now obviously the nvg servers _notice_ i've disconnected
12:47:48 <oerjan> because the old irssi process disappears by itself
12:48:17 <oerjan> also, my laptop gives no messages about disconnected cabling
13:00:48 -!- ais523 has quit (Ping timeout: 252 seconds).
13:03:07 -!- ais523 has joined.
13:24:27 -!- pikhq has quit (Read error: Operation timed out).
13:25:32 -!- pikhq has joined.
13:30:54 -!- ais523 has quit (Read error: Operation timed out).
13:32:29 -!- cheater has quit (Ping timeout: 276 seconds).
13:39:23 -!- ais523 has joined.
13:48:16 -!- ais523 has quit (Ping timeout: 252 seconds).
13:48:40 -!- ais523 has joined.
14:01:33 -!- kallisti has quit (Ping timeout: 240 seconds).
14:03:14 -!- ais523 has quit (Ping timeout: 272 seconds).
14:09:45 -!- confuser has joined.
14:23:24 -!- oerjan has quit (Quit: Away from the non-boiling pot).
14:37:27 <itidus21> so i was watching my brother play this puzzle game luxor
14:38:03 <itidus21> at first it seemed mysterious to my eyes, until i started to pay attention and notice what was going on
14:39:53 <itidus21> so the game feeds you a stream of coloured balls, and those balls propagate along a curve and its bad if they reach the end of the curve
14:41:19 <itidus21> and what you can do is insert a coloured ball into the stream sort of like a cannon
14:42:35 <itidus21> and if your insertion causes a sequence of 3 or more then that sequence is removed from the stream and the left and right side connected
14:43:23 <itidus21> and if those 2 sides connected forms a 3 or more sequence they too are removed, and recursive
14:45:47 <itidus21> so it occured to me that skillful play involves setting up nested colours, and i thought aha thats where the fun is in the game
14:49:10 <itidus21> and it occured to me also that this was some kind of, albeit limited, computation
14:59:42 -!- nooga has joined.
15:42:22 -!- nooga has quit (Quit: Changing server).
15:59:57 -!- kallisti has joined.
15:59:57 -!- kallisti has quit (Changing host).
15:59:57 -!- kallisti has joined.
16:00:13 -!- Phantom_Hoover has quit (Remote host closed the connection).
16:02:19 -!- Phantom_Hoover has joined.
16:31:05 -!- Ngevd has joined.
16:31:20 -!- ais523 has joined.
16:31:43 <Ngevd> Hello!
16:31:48 <ais523> hi
16:34:48 <ais523> hmm, I got a reply from one of the MEPs I emailed about ACTA
16:34:58 <Ngevd> Yay!
16:35:28 <ais523> it was from an MEP who used to be part of UKIP, left it, and stood for the UK's Libertarian Party in a general election, and is currently an independent
16:35:34 <ais523> guess what her stance on ACTA is :)
16:35:42 <Ngevd> I like today's Gunnerkrigg Court
16:36:10 <ais523> I also got a form letter back from the Conservatives saying that they'd bring it to the attention of the relevant people
16:52:02 -!- ais523_ has joined.
16:52:17 -!- ais523 has quit (Disconnected by services).
16:52:22 -!- ais523_ has changed nick to ais523.
16:52:31 -!- Ngevd has quit (Read error: Connection reset by peer).
16:53:02 -!- oklopol has quit (Ping timeout: 252 seconds).
16:58:23 -!- oklopol has joined.
17:06:53 -!- augur has quit (Remote host closed the connection).
17:11:35 <kallisti> :t (<=<)
17:11:36 <lambdabot> forall b (m :: * -> *) c a. (Monad m) => (b -> m c) -> (a -> m b) -> a -> m c
17:13:07 -!- sebbu has quit (Read error: Connection reset by peer).
17:13:41 -!- sebbu has joined.
17:13:41 -!- sebbu has quit (Changing host).
17:13:41 -!- sebbu has joined.
17:24:28 * Sgeo witnesses elliott be wrong about something
17:24:29 -!- Gregor has set topic: Putting the link to the logs in the middle of the topic: the even-more latest trendy subversion of 2012 | http://codu.org/logs/_esoteric/ | Putting the link to the logs at the start of the topic: the latest trendy subversion of 2012.
17:30:22 <fizzie> Putting the http:// link all over codu.org the place in the /logs topic: the utter-lattermost /_esoteric trendy subversion of 2012 /
17:33:28 <kallisti> :t (<*>)
17:33:29 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f (a -> b) -> f a -> f b
17:34:39 <quintopia> any word on why oerjan murthered me?
17:35:04 <ais523> quintopia: because you moved the log links off oerjan's screen
17:35:25 <ais523> Gregor has probably just done the same thing
17:35:28 <ais523> so may be in trouble at this point
17:36:26 <quintopia> what is wrong with his screen?
17:40:48 <ais523> Phantom_Hoover: have you seen Backslash Calculus?
17:40:52 <ais523> quintopia: I guess it has limited width
17:40:57 <ais523> most screens do
17:41:31 <quintopia> so my shortening of the topic should have brought the log link onto his screen, not pushed it off...
17:41:59 <ais523> hmm, oerjan implied it was a lengthening
17:42:41 <fizzie> ais523: I thought it was just the wipeout of the long-running optator stuff.
17:42:58 <ais523> perhaps quintopia has been murded unjustly!
17:43:28 -!- augur has joined.
17:50:40 <fizzie> `words --quenya 10
17:50:53 <HackEgo> Unknown option: quenya
17:50:55 <fizzie> Aw.
18:09:39 <Phantom_Hoover> <ais523> Phantom_Hoover: have you seen Backslash Calculus?
18:09:40 <Phantom_Hoover> Yes.
18:10:00 <ais523> Phantom_Hoover: what do you think of the BF-like syntax?
18:10:10 <ais523> I'm reasonably sure it's an attempt to troll someone, but am not entirely sure who
18:10:12 <ais523> and was wondering if it was you
18:10:26 <Phantom_Hoover> I think it's a joke.
18:11:23 <ais523> well, the whole language is a (usable) joke
18:11:43 <ais523> INTERCAL-style or whitespace-style joke, not unneccessary-style joke
18:32:43 -!- Vorpal has joined.
18:49:37 -!- Ngevd has joined.
18:50:20 <Ngevd> Blerg
18:52:45 -!- azaq23 has joined.
18:53:00 -!- azaq23 has quit (Max SendQ exceeded).
18:54:00 -!- azaq23 has joined.
18:54:24 -!- kallisti has quit (Ping timeout: 252 seconds).
19:17:31 -!- Taneb has joined.
19:18:42 -!- Ngevd has quit (Ping timeout: 245 seconds).
19:23:08 -!- Taneb has changed nick to Ngevd.
19:51:35 -!- Frooxius has quit (Quit: ChatZilla 0.9.88-rdmsoft [XULRunner 1.9.0.17/2009122204]).
19:52:06 -!- Frooxius has joined.
20:01:00 -!- oerjan has joined.
20:04:13 <oerjan> <ais523> perhaps quintopia has been murded unjustly! <-- IMPOSSIBLE
20:07:01 <oerjan> * Sgeo witnesses elliott be wrong about something <-- that's what he gets for leaving #esoteric
20:13:16 -!- Ngevd has quit (Read error: Connection reset by peer).
20:13:38 -!- Ngevd has joined.
20:36:58 -!- Ngevd has quit (Quit: Goodbye).
20:40:11 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds).
20:53:29 -!- monqy has joined.
20:54:50 -!- zzo38 has joined.
20:58:41 -!- PiRSquared17 has joined.
21:12:08 -!- sebbu2 has joined.
21:12:09 -!- sebbu2 has quit (Changing host).
21:12:09 -!- sebbu2 has joined.
21:12:41 -!- sebbu has quit (Ping timeout: 276 seconds).
21:15:39 -!- kallisti has joined.
21:15:39 -!- kallisti has quit (Changing host).
21:15:39 -!- kallisti has joined.
21:20:25 -!- oerjan has quit (Quit: Lost terminal).
21:20:29 -!- zzo38 has quit (Remote host closed the connection).
21:20:41 -!- Phantom__Hoover has joined.
21:21:11 -!- Phantom__Hoover has quit (Read error: Connection reset by peer).
21:25:42 -!- GreaseMonkey has joined.
21:28:25 -!- sebbu2 has changed nick to sebbu.
21:34:31 -!- kallisti_ has joined.
21:38:23 -!- kallisti has quit (Ping timeout: 248 seconds).
21:52:21 -!- oerjan has joined.
21:54:50 <kallisti_> I guess this is more of a C question than a Haskell question, but it relates to FFI
21:55:05 <kallisti_> the initializer for the Haskell runtime wants a pointer to argc and argv
21:55:27 <kallisti_> I'm running Haskell in an environment where I have no access to an argc and argv. so I'm trying to fabricate argc and argv
21:55:38 <ais523> hmm, why don't you have an argc and an argv?
21:55:41 <kallisti_> hs_init, the initializer, wants argv to be char***
21:55:48 <kallisti_> so...
21:55:55 <ais523> 0 and a pointer to a char** containing NULL is technically correct
21:56:02 <ais523> but unusual, and I'm not sure if GHC would like it
21:56:08 <kallisti_> do I need to allocate memory for that? I tried to use a char array within a char* array
21:56:11 <kallisti_> but it complains
21:56:13 <ais523> err, a pointer to an int containing 0, and a pointer to a char** containing NULL
21:56:23 <ais523> kallisti_: right, it should complain at that
21:56:39 <ais523> you'd need to allocate memory because argv is mutable
21:56:44 <ais523> for reasons I don't fully understand
21:56:48 <ais523> but you can do it like this:
21:57:35 <kallisti_> I /may/ just try passing NULL
21:57:50 <ais523> char argument0[] = "/bin/myprog"; char argument1[] = "-option"; char* argv[] = {argument0, argument1, NULL}; int argc = 2;
21:58:04 <ais523> allowing the arrays to decay into pointers
21:58:11 <kallisti_> that's basically what I said that I'm doing.
21:58:40 <kallisti_> yes that's what I'm doing
21:58:42 <kallisti_> with global variables
21:58:55 <kallisti_> so that the stack allocated memory doesn't disappear (don't actually know if that's a problem. I'm bad at memory management. :P )
21:59:59 <kallisti_> note: expected ‘char ***’ but argument is of type ‘char * (*)[1]’
22:00:05 <kallisti_> I believe pointer decay only happens when you pass an array to a function.
22:00:24 <kallisti_> hm, oh
22:00:25 <kallisti_> I know.
22:00:34 <kallisti_> I should reference the char[][]
22:00:36 <kallisti_> *shouldn't
22:00:41 <kallisti_> instead I should make a char[][][]
22:00:51 <kallisti_> and that will decay into the correct type (I think)
22:01:03 <kallisti_> .....or would a cast fix all of this.
22:02:53 <ais523> kallisti_: char *(*)[1] is a function pointer type
22:02:59 <ais523> are you sure you just didn't typo somewhere?
22:03:23 <kallisti_> oh....
22:03:51 <kallisti_> um, possibly? I don't know now.
22:04:08 <kallisti_> no
22:04:12 <kallisti_> don't think I did.
22:04:30 <kallisti_> I have no idea where it could be getting a function pointer....
22:04:52 <kallisti_> char fake_name[] = "bayes";
22:04:53 <kallisti_> char *fake_argv[1] = {fake_name};
22:05:07 <kallisti_> (within a function)
22:05:11 <kallisti_> hs_init(&fake_argc, &fake_argv);
22:05:47 <kallisti_> gives a warning. however if I define another top-level array and stick fake_argv in that, and then pass that array to hs_init
22:05:50 <kallisti_> then I get no warning.
22:06:10 <kallisti_> oh wait can I do...
22:06:45 <kallisti_> char fake_argv[][][] = {{"bayes"}}
22:06:49 <kallisti_> that would simplify things.
22:07:03 -!- Ngevd has joined.
22:07:08 <ais523> kallisti_: but that's an array of array of array
22:07:12 <kallisti_> yes that's what I want
22:07:15 <ais523> you can't decay anything but the outermost level to a pointer
22:07:21 <Ngevd> Hello!
22:07:25 <ais523> hi Ngevd
22:07:28 <kallisti_> oh okay, that's what I thought actually.
22:07:37 <kallisti_> char **fake_argv[] = {{"bayes"}}
22:07:42 <kallisti_> I'm guessing this would give me the same warning.
22:07:57 <kallisti_> oh wait, no
22:07:58 <ais523> err, now I'm flummoxed as to what, if anything, that means
22:08:09 <ais523> I think it's just a parse error
22:08:14 <kallisti_> did I mention that I'm really really bad at C.
22:09:11 <kallisti_> bayes.c:14:1: warning: braces around scalar initializer
22:09:14 <ais523> have you tried my suggestion?
22:09:26 <kallisti_> the first one? yes I tried it before it was even suggested.
22:09:51 <ais523> and what happened?
22:10:23 <kallisti_> ...it was the warning that I was originally given
22:10:28 <kallisti_> it's the reason I asked the question. :P
22:10:51 <kallisti_> anyway I've found a way that works but it seems incredibly silly to me.
22:10:54 <kallisti_> maybe that's just how C works.
22:11:02 -!- augur has quit (Remote host closed the connection).
22:13:14 <kallisti_> char fake_name[] = "bayes";
22:13:14 <kallisti_> char *fake_argv[] = {fake_name};
22:13:14 <kallisti_> char **fake_argv_ref[] = {fake_argv};
22:13:15 <kallisti_> int fake_argc = 1;
22:13:20 <kallisti_> this produces no warnings...
22:13:29 <kallisti_> but is incredibly silly looking :P
22:14:25 -!- Ngevd has quit (Read error: Connection reset by peer).
22:19:31 -!- PiRSquared17 has quit (Quit: .).
22:21:50 <Gregor> ais523: I want some IOCCC /results/!
22:22:09 <ais523> Gregor: didn't they take a really really really long time last time?
22:22:13 <ais523> I doubt they'll be fast this time :)
22:24:44 <Gregor> I don't know how long they took last time.
22:30:46 <oerjan> just five years or so.
22:32:23 <Gregor> Not to /judge/ .... ???
22:33:36 <ais523> Gregor: yes, they took such a hilariously long time that everyone assumed the contest had died
22:34:17 -!- derdon has joined.
22:38:19 <Gregor> Hmm, I didn't realize that the huge delay had been even before judging. I thought they had finished the whole competition and then just not run a new one.
22:41:46 -!- azaq23 has quit (Quit: Leaving.).
22:47:39 <fizzie> char **fake_argv = ((char*[]){"foo", "bar", 0}); if you want to be all C99-compound-literal about it -- probably can be extended that one more level if you insist, with more horrible syntax -- but the give-the-other-objects-names-too is probably more common.
22:49:31 <Gregor> Uhhh, I don't think that's legal.
22:49:52 <fizzie> Well, it compiles.
22:50:00 <fizzie> As does char ***fake_argv_list = ((char**[]){ ((char*[]){"a","b",0}), ((char*[]){"c","d",0})});
22:50:01 <Gregor> Hm, then I'm either wrong or GCC is very forgiving *shrugs*
22:50:27 <ais523> fizzie: that's incorrect, though, because it violates const-correctness
22:50:38 <fizzie> Why wouldn't it be? Compound literals can be arrays, and an array decays to a pointer to the first element.
22:50:41 <ais523> in particular, argv contains /writable/ strings
22:50:46 <ais523> according to the standard
22:50:52 <Gregor> Well, const correctness is a really boring reason why it's incorrect *shrugs*
22:50:52 <ais523> whereas your argv is populated with string literals
22:51:02 <ais523> and I have seen programs that write to argv
22:51:10 <ais523> even written one, although admittedly it was for the IOCCC
22:51:14 <ais523> (not the most recent one, the one before)
22:51:24 <fizzie> ais523: There's no rule a "fake_argv" needs to contain writable strings in the standard.
22:51:36 <fizzie> (That would be one weird rule.)
22:51:51 <ais523> fizzie: no, the standard's rule is about the real argv
22:51:58 <ais523> but I'm assuming that a fake argv is something that acts like argv
22:52:00 <ais523> apart from not being argv
22:52:58 <fizzie> That's a silly assumption. Especially when paired with such a strong word as "incorrect". There's nothing "incorrect" about that line as it is.
22:54:17 <Gregor> Touché!
22:54:42 <fizzie> Though I'm a bit unclear about the lifetime of a compound literal in file scope.
22:56:18 <ais523> in file scope, probably the whole program, right?
22:56:33 <fizzie> That's what common sense would suggest.
22:57:13 -!- Jafet has quit (Quit: Leaving.).
22:59:04 <fizzie> Anyway, string literals is still better than string literals and no null-pointer-termination as was seen above.
22:59:41 <fizzie> Oh, right, that one had a writable string. Well, anyway.
23:02:25 <fizzie> There's also the easy fix of simply doing char ***fake_argv_list = ((char**[]){ ((char*[]){ ((char[]){"a"}),((char[]){"b"}),0}), ((char*[]){((char[]){"c"}),((char[]){"d"}),0})});
23:03:05 <ais523> fizzie: oh right, why didn't I think of that?
23:03:19 <ais523> (I'm both joking and serious at once)
23:03:25 <ais523> (because it's both ridiculous, and something I should have thought of)
23:04:21 -!- augur_ has joined.
23:05:44 <fizzie> (Half of those parens are probably unnecessary, I just have this habit of sticking an extra () around the full compound-literal.)
23:06:59 -!- sebbu has quit (Read error: Connection reset by peer).
23:10:33 -!- sebbu has joined.
23:14:33 <ais523> Your search - "sensationalised news for builders" - did not match any documents.
23:14:35 <ais523> interesting
23:17:50 <fizzie> Your search - "build systems for build systems" - did not match any documents.
23:18:39 -!- Jafet has joined.
23:18:39 -!- Jafet has quit (Changing host).
23:18:39 -!- Jafet has joined.
23:25:17 -!- Vorpal has quit (Ping timeout: 276 seconds).
23:25:47 <ais523> fizzie: hmm, that's certainly a cromulent search
23:25:58 <ais523> you need a decent flowcharting tool to draw C-INTERCAL's
23:29:37 <ais523> <spambot> [[Download Stability of Multi-Dimensional Shock Fronts: A New Problem for Linear Hyperbolic Equations pdf ebook. Buy cheap pdf ebooks/audio books for iPhone/iPad/Android/Kindle.]]
23:29:41 <ais523> that's quite the article title
23:35:14 <Gregor> I'd read that.
23:35:22 <Gregor> Or ... would I LISTEN to it?!?! HAHA AUDIO BOOK
23:35:50 <oerjan> always make sure your multi-dimensional shock fronts are stable
23:36:11 <pikhq> PDF audio books?
23:36:15 <pikhq> Dammit, Adobe!
23:38:39 <oerjan> adobe listener
23:39:31 -!- Gregor has set topic: Putting My Little Pony references in the topic: the even-more-more latest trendy subversion of 2012 | http://codu.org/logs/_esoteric/ | This topic is the WORST. TOPIC. EVER..
23:39:54 <oerjan> i was thinking it was about time with a topic change
23:40:39 <oerjan> *for
23:40:58 <Gregor> I did it wrong anyway.
23:41:05 -!- Gregor has set topic: Putting My Little Pony references in the topic: the even-more-more latest trendy subversion of 2012 | http://codu.org/logs/_esoteric/ | This topic is THE. WORST. POSSIBLE. TOPIC..
23:41:08 <Gregor> I am ashamed.
23:41:30 <oerjan> but now it's inaccurate.
23:41:45 <Gregor> But at least it's internally consistent.
23:41:55 <oerjan> since the last must certainly have been worse, since you got it wrong
23:42:35 <Gregor> Doesn't the fact that it's an accurate reference to My Little Pony: Friendship is Magic in the #esoteric /topic make it worse? Isn't an accurate reference worse than an inaccurate one, for the sake of topicality?
23:43:51 <oerjan> perhaps. all i know about my little pony is other people's complaints about it.
23:44:13 <Gregor> People who complain about it are terrible people. You shouldn't associate with them.
23:44:45 <oerjan> wat
23:46:27 <ais523> Gregor: perhaps it's a reference to a different My Little Pony series
23:46:33 <ais523> apparently there are four and Friendship is Magic is the only good one
23:46:44 <ais523> (this is close to the extent of my MLP knowledge, apart from some names that have been dropped)
23:47:29 <Gregor> You people.
23:47:31 <Gregor> YOU PEOPLE.
23:47:59 <oerjan> i am somewhat confused by Gregor apparently liking it and still thinking putting it in the topic is horrible
23:48:22 <oerjan> there might be sarcasm involved, i guess
23:48:23 <Gregor> *atopical
23:48:25 <Gregor> Lots
23:49:23 -!- ais523 has quit (Remote host closed the connection).
23:49:53 <oerjan> you made ais523 ragepat again
23:51:15 -!- Systemzwang has quit (Read error: Operation timed out).
23:51:21 -!- Systemzwang has joined.
23:51:56 <oerjan> come see the zwang inherent in the system
23:52:03 <Gregor> lolwut
23:52:54 <olsner> sorry, that's not systemwang
23:54:49 <oerjan> das ist egal
2012-01-31
00:01:40 -!- Gregor has set topic: Putting My Little Pony references in the topic: the even-more-more latest trendy subversion of 2012 | http://codu.org/logs/_esoteric/ | Of all the worst possible topics, this topic is THE. WORST. POSSIBLE. TOPIC..
00:28:35 <Sgeo> On the one hand, I wish I could link to the syllabus, on the other hand, it contains a TOP SECRET PASSWORD
00:29:42 -!- cheater has joined.
00:42:22 -!- confuser has quit (Quit: Leaving).
00:47:14 -!- Ramses has joined.
00:48:01 <Gregor> Egyptology is back, y'all
00:49:44 <Ramses> what's up
00:49:54 <Sgeo> kallisti_, UPDAYE
00:54:44 -!- derdon has quit (Remote host closed the connection).
00:58:56 -!- Ramses has quit (Quit: Saliendo).
01:27:55 -!- oerjan has quit (Quit: Good night).
01:39:53 -!- cheater_ has joined.
01:43:43 -!- cheater has quit (Ping timeout: 272 seconds).
01:46:11 -!- cheater_ has quit (Ping timeout: 252 seconds).
01:47:48 -!- zzo38 has joined.
01:54:51 <zzo38>
02:01:56 <pikhq>  
02:02:08 <ion>
02:02:21 <pikhq>
02:25:11 <zzo38> I made a LensT which is like Lens except that you can transform any applicative functor
02:25:51 -!- clog has quit (*.net *.split).
02:25:51 -!- Madoka-Kaname has quit (*.net *.split).
02:25:53 -!- mroman has quit (*.net *.split).
02:25:56 -!- mroman has joined.
02:25:57 -!- clog has joined.
02:26:14 -!- Madoka-Kaname has joined.
02:29:37 -!- cheater has joined.
02:34:54 <Sgeo> kallisti_, update
02:35:06 <Sgeo> Madoka-Kaname, I forget, do you recieve my upate notices?
02:48:29 <Sgeo> Huh, I can copy/paste from the book
02:49:22 <zzo38> What book?
02:49:36 <Sgeo> "VMware Academy vSphere 5.0: Install, Configure, Manage Student"
04:00:24 -!- pikhq has quit (Ping timeout: 245 seconds).
04:00:26 -!- pikhq_ has joined.
04:49:56 -!- kwertii has joined.
04:58:19 -!- psycho has joined.
05:02:30 -!- psycho has quit (Ping timeout: 244 seconds).
05:13:36 <zzo38> The MML->S3M (actually, it outputs other formats too including MIDI and raw audio) program I make in Haskell, currently called Macro-Is-Screaming because I could not think of other name but I can rename it in case you know better
05:32:52 <Sgeo> kallisti_, UPDATE
05:35:25 -!- pikhq_ has quit (Ping timeout: 245 seconds).
05:41:34 -!- pikhq has joined.
05:47:39 <zzo38> Do you know if PuTTY has a option to tell it to not automatically scroll if SCROLL LOCK is pushed, so it enters manual scroll mode?
05:48:28 <zzo38> (Another feature suggestion, if it can be implemented, is to do not only that, but make SCROLL LOCK to make arrow key/page up/page down to scroll window instead of sending keystrokes to the server)
06:37:39 <zzo38> Do you know any better name than "Macro-Is-Screaming" for my MML program?
06:52:14 -!- kwertii has quit (Quit: bye).
07:33:30 -!- monqy has quit (Quit: hello).
07:54:04 -!- Ngevd has joined.
08:02:13 -!- Ngevd has quit (Read error: Connection reset by peer).
08:03:02 -!- Ngevd has joined.
08:04:06 -!- zzo38 has quit (Remote host closed the connection).
08:10:32 -!- Ngevd has quit (Read error: Connection reset by peer).
08:11:09 -!- Ngevd has joined.
08:25:25 -!- Ngevd has quit (Read error: Connection reset by peer).
08:25:48 -!- Ngevd has joined.
08:27:10 -!- Jafet has quit (Quit: Leaving.).
08:29:18 <Sgeo> Ngevd, kallisti_ has been uipate
08:29:19 -!- Ngevd has quit (Read error: Connection reset by peer).
08:29:21 <Sgeo> updated
08:29:43 -!- Ngevd has joined.
08:30:28 -!- Ngevd has quit (Client Quit).
08:36:14 -!- Jafet has joined.
09:10:44 -!- GreaseMonkey has quit (Quit: The Other Game).
09:16:19 -!- TeruFSX has quit (Read error: Connection reset by peer).
09:24:17 -!- variable has quit (Excess Flood).
09:25:41 -!- variable has joined.
09:44:34 -!- Vorpal has joined.
11:23:15 -!- zzo38 has joined.
11:23:20 <zzo38> ?messages
11:23:20 <lambdabot> You don't have any new messages.
11:23:23 <zzo38> ?messages
11:23:23 <lambdabot> You don't have any new messages.
11:23:29 <zzo38> ?messages!
11:23:30 <lambdabot> Maybe you meant: messages messages?
11:23:33 <zzo38> ?messages?
11:23:34 <lambdabot> Sorry, no messages today.
11:24:29 <ion> @tell zzo38 You have 1 new message. '/msg lambdabot @messages' to read it.
11:24:30 <lambdabot> Consider it noted.
11:24:54 <zzo38> ?messages
11:24:55 <lambdabot> ion said 25s ago: You have 1 new message. '/msg lambdabot @messages' to read it.
11:27:24 -!- derdon has joined.
11:41:13 <zzo38> O, sorry
12:26:02 -!- oerjan has joined.
12:26:16 <zzo38> O, finally.
12:26:48 <oerjan> YES FINALLY I AM HERE
12:29:09 -!- derdon has quit (Remote host closed the connection).
12:32:29 -!- cheater has quit (Read error: Connection timed out).
12:33:07 * oerjan puts up a top -d 30 to see if anything other than irssi will be killed in this way
12:33:26 -!- cheater has joined.
12:37:17 <oerjan> <Sgeo> "VMware Academy vSphere 5.0: Install, Configure, Manage Student" <-- but does it say anything about how to _use_ the students?
12:44:57 -!- RoyChiramael has joined.
12:55:24 <fizzie> oerjan: You can _use_ students? I thought they were pretty useless.
12:55:52 <oerjan> oh. that would explain it, then.
12:56:14 <zzo38> oerjan: Do you know answer of other question I have ask in here?
12:56:32 <fizzie> I just got 51 submissions for this one course's exercises. Apparently "you'll get bonus points for the exam" is a powerful motivator.
12:56:38 <oerjan> i don't use scroll lock myself, so no.
12:56:59 <zzo38> I mean the other question too; not only that one
12:57:40 <oerjan> i don't remember the other question.
12:57:49 <zzo38> (Or in case you have to ask a question too)
12:57:50 <fizzie> The other other question.
12:58:01 <zzo38> oerjan: Then look it up
12:59:13 <oerjan> i also don't know what MML is.
13:00:00 <oerjan> (what do you mean, look that up too)
13:00:22 <zzo38> MML is short for "Music Macro Language". It allows you to write music. There are basic MML codes but different MML programs have their own various codes for doing different things too.
13:01:41 <zzo38> The PLAY command in QBASIC is a simple kind of MML. There are also programs such as PPMCK for compiling MML into NES/Famicom musics
13:01:56 <oerjan> well i cannot think of anything better than macro is screaming on the spot
13:02:05 <oerjan> it's certainly distinctive
13:02:48 <oerjan> (unless it refers to something else i don't know about)
13:04:19 * oerjan looked at http://www.mezzacotta.net/postcard/about.php and was a bit confused when the real explanation came up
13:05:42 <zzo38> "Macro-Is-Screaming" is the current name of the program, music macro language compiled to ScreamTracker format, although other output formats are supported too (such as MIDI and raw audio). But name doesn't seem very good in case it can be improve to make up a better name for this program?
13:13:40 <cheater> what makes mml worth considering, as opposed to midi or one of the tracker formats?
13:14:31 <zzo38> cheater: MML is the source format which will be compiled into another format; although very simple MML codes (such as the one in QBASIC or in ZZT) can run directly.
13:14:58 <cheater> what are the possible events or functions in the source format?
13:15:21 <zzo38> MIDI format and tracker formats are binary formats so you still need some sort of compiler or editor or something
13:15:52 <zzo38> Possible events and functions in the source format, depend much on which MML implementation. Some, such as SakuraMML and Macro-Is-Screaming, are complete programming languages.
13:15:54 <cheater> can you show me the command list of a fairly advanced implementation of MML?
13:16:03 <cheater> oh
13:16:19 <cheater> what can you control in the language?
13:16:24 <cheater> for example in MIS
13:16:30 <zzo38> cheater: Just look for SakuraMML for a very advanced one, or PPMCK for a somewhat advanced one.
13:16:51 <zzo38> MIS?
13:17:01 <cheater> short for Macro-Is-Screaming
13:17:08 <zzo38> OK.
13:17:11 <cheater> can you show me a program in Sakura or MIS?
13:17:42 <cheater> one which creates a musical composition?
13:18:11 <zzo38> MIS is not yet complete, so I have no example at the moment. If you can read Japanese, you can find many examples in Sakura.
13:18:26 <cheater> i cannot
13:18:44 <cheater> but i am assuming that the command names are probably in english
13:18:54 <cheater> can you link me to a source for one such program?
13:20:57 <zzo38> Yes, the command names are in English and so are the notes. However many things can be written in Japanese as well, and the program is allowed to contain Japanese text. (In MIS, many of the command names will probably be in Italian; I know music by hand too...)
13:22:57 <zzo38> Some SakuraMML examples can be found here: http://oto.chu.jp/a.oto.chu.jp/doc/kouza/mml6.htm
13:23:16 <zzo38> Also look at the other pages in that directory for more examples and documentation.
13:24:58 -!- RoyChiramael has quit (Read error: Connection timed out).
13:34:16 <oerjan> about as expected http://www.irregularwebcomic.net/polls/
13:35:35 <oerjan> well, i guess "Other lawyer" was a bit higher up than you'd think.
13:59:48 -!- pikhq has quit (Read error: Operation timed out).
14:00:17 -!- pikhq has joined.
14:02:21 -!- zzo38 has quit (Remote host closed the connection).
14:18:04 -!- Phantom_Hoover has joined.
15:11:54 -!- oerjan has quit (Quit: leaving).
15:56:00 -!- azaq23 has joined.
15:56:06 -!- ais523 has joined.
16:02:02 -!- ais523 has quit (Remote host closed the connection).
17:05:44 -!- ais523 has joined.
17:14:53 -!- shachaf has quit (Remote host closed the connection).
17:18:30 -!- Frooxius_ has joined.
17:21:36 -!- Systemzw1ng has joined.
17:21:38 -!- jix_ has joined.
17:24:57 -!- Frooxius_ has quit (Ping timeout: 276 seconds).
17:25:16 -!- mtve has quit (Ping timeout: 244 seconds).
17:25:16 -!- cheater has quit (Ping timeout: 244 seconds).
17:25:18 -!- Systemzwang has quit (Ping timeout: 244 seconds).
17:25:18 -!- aloril has quit (Ping timeout: 244 seconds).
17:25:18 -!- jix has quit (Ping timeout: 244 seconds).
17:25:19 -!- lambdabot has quit (Ping timeout: 240 seconds).
17:25:19 -!- Frooxius has quit (Ping timeout: 240 seconds).
17:25:21 -!- SimonRC has quit (Ping timeout: 240 seconds).
17:25:21 -!- cheater__ has joined.
17:25:40 -!- nooga has joined.
17:25:51 <nooga> meh
17:26:21 <quintopia> yeah man
17:26:22 -!- shachaf has joined.
17:29:32 -!- SimonRC has joined.
17:31:58 -!- aloril has joined.
17:35:45 -!- jix_ has changed nick to jix.
17:35:54 <quintopia> hi jix
17:40:58 <kallisti_> @hoogle a -> Ptr a
17:41:06 <kallisti_> ....wah
17:48:15 -!- augur_ has quit (Remote host closed the connection).
17:51:33 -!- Sgeo|web has joined.
17:51:42 <Sgeo|web> "These materials and the computer programs to which it relates are the property of, and embody trade secrets and confidential information proprietary to, VMware, Inc., and may not be reproduced, copied, disclosed, transferred, adapted or modified without the express written approval of VMware, Inc."
17:51:48 <Sgeo|web> I feel dumber now for having read that
17:52:00 <Sgeo|web> What sort of trade secrets would this book possibly contain?
17:52:15 <Sgeo|web> How to use VMware software is a trade secret?
17:52:43 <Jafet> Having used VMWare software before, I agree.
17:59:11 -!- Frooxius has joined.
17:59:26 -!- Frooxius has quit (Client Quit).
18:00:28 -!- Frooxius has joined.
18:02:36 -!- cheater__ has quit (Read error: No route to host).
18:02:43 -!- Sgeo|web has quit (Quit: Page closed).
18:03:31 -!- cheater__ has joined.
18:03:36 -!- Sgeo|web has joined.
18:07:12 -!- Frooxius has quit (Ping timeout: 248 seconds).
18:07:45 -!- Frooxius has joined.
18:13:22 -!- Frooxius has quit (Ping timeout: 245 seconds).
18:13:43 -!- Frooxius has joined.
18:22:20 <nooga> i hate C++
18:22:28 <nooga> and then Boost comes in my way
18:24:05 <Sgeo|web> Hm?
18:24:53 -!- augur has joined.
18:31:08 -!- Sgeo|web has quit (Quit: Page closed).
18:50:24 -!- Frooxius_ has joined.
18:50:43 -!- Frooxius has quit (Read error: Connection reset by peer).
18:50:55 -!- Frooxius_ has changed nick to Frooxius.
18:50:59 -!- Frooxius has quit (Client Quit).
18:52:47 -!- Frooxius has joined.
19:08:00 -!- Frooxius has quit (Ping timeout: 248 seconds).
19:09:22 <nooga> and then I'm completely confused and hate C++ even more
19:11:07 -!- Frooxius has joined.
19:11:31 -!- monqy has joined.
19:20:07 -!- Frooxius has quit (Quit: ChatZilla 0.9.88-rdmsoft [XULRunner 1.9.0.17/2009122204]).
19:20:56 -!- Frooxius has joined.
19:25:51 -!- mtve has joined.
19:28:05 -!- Frooxius has quit (Ping timeout: 240 seconds).
19:28:35 -!- Frooxius has joined.
19:29:57 <ais523> <liquidsin> do not read this line twice
19:30:04 <ais523> (I failed at that very quickly…)
19:37:00 -!- pir^2 has joined.
19:37:30 -!- Ngevd has joined.
19:37:56 <Ngevd> Hello!
19:40:49 <ais523> hi
19:41:05 -!- Taneb has joined.
19:41:12 -!- Ngevd has quit (Read error: Connection reset by peer).
19:42:28 <fizzie> ais523: So you decided to spread the failing onwards?
19:42:44 <ais523> fizzie: I just thought it was an amusing line
19:42:46 <ais523> have you failed yet?
19:42:58 <fizzie> Yes, almost immediately.
19:43:33 * oklopol is up to 4
19:43:49 <ais523> oklopol: I think I'm a bit above that too
19:43:59 -!- Frooxius has quit (Ping timeout: 252 seconds).
19:44:13 <oklopol> i'm trying not to read it again but i keep thinking about it.
19:44:21 <oklopol> argh
19:44:27 <oklopol> o
19:44:27 <oklopol> o
19:44:27 <oklopol> o
19:44:27 <oklopol> o
19:44:27 <oklopol> o
19:44:27 <oklopol> o
19:44:28 -!- Taneb has quit (Read error: Connection reset by peer).
19:44:32 <oklopol> ah, much better
19:44:55 -!- Taneb has joined.
19:45:20 <fizzie> There's a Finnish idiom "laittaa vahinko kiertämään", I'm not sure if it's a global one. Translated, it means something vaguely like "to pass the mistake/misfortune on", i.e. if someone steals from you, you'd then hypothetically steal from someone else. (Except I suppose probably you wouldn't, but in any case.)
19:46:33 <Taneb> I can't think of an equivalent in English
19:46:42 <fizzie> "'Laitetaan vahinko kiertämään', sanoi isä kun lapsen karuselliin laittoi." Well, that's a sort of a pun.
19:48:33 <olsner> sounds like pay it forward, but in reverse
19:48:51 <olsner> "The expression "pay it forward" is used to describe the concept of asking that a good turn be repaid by having it done to others instead."
19:49:05 <fizzie> "'Let's have the mistake go around', said the father while putting the child to the merry-go-round", if you want a literal-ish translation of that second one.
19:49:43 <Gregor> Misery loves company is the closest expression I can think of, but has a slightly different meaning.
19:50:20 <fizzie> I suppose with that you're both being miserable, while in our thing "optimally" you'll just pass your misery on to someone else.
19:50:27 <fizzie> Maybe it's a Finnish thing to do.
19:50:59 <Taneb> Like the English having 20 words for rain?
19:51:00 <olsner> a strategy for maintaining the appropriate level of misery across the country
19:52:50 -!- lambdabot has joined.
19:59:56 <Gregor> lambdabot: WHERE THE HELL WERE YOU?!
20:00:14 <Gregor> @tell elliott I'll bet we can use lambdabot for INTERCHANNEL COMMUNICATION.
20:00:15 <lambdabot> Consider it noted.
20:00:44 -!- pikhq_ has joined.
20:00:58 -!- pikhq has quit (Ping timeout: 260 seconds).
20:01:16 <Taneb> Gregor, he hasn't been online
20:01:32 <Gregor> I thought he was just hiding out in other channels.
20:01:54 <Taneb> Not since 4:30 PM #haskell logs time
20:02:06 <Gregor> Soooo he's just out right now.
20:02:14 <Taneb> 4:30 yesterday
20:02:15 <Gregor> He's not like those crazies who idle 24/7 >_> <_<
20:03:06 <monqy> Taneb: have you noticed elliott's sleep patterns are really weird
20:03:18 -!- Taneb has quit (Read error: Connection reset by peer).
20:03:27 <monqy> or maybe he's out doing something that isn't being online
20:03:32 <Gregor> monqy: Have you noticed that Taneb tends to vanish mid-conversation?
20:03:37 -!- Ngevd has joined.
20:03:43 <monqy> curious, that
20:04:44 <Ngevd> Taneb has a dodgy internet connection
20:04:50 <Ngevd> So do I, as a matter of fact
20:04:56 <Ngevd> I'm also magic
20:05:03 <Ngevd> And can turn into an elf
20:14:55 <Gregor> I used to be able to turn into a COFF, but now I can barely manage an N-Magic a.out :(
20:18:30 -!- shachaf_ has joined.
20:18:49 -!- shachaf_ has quit (Client Quit).
20:23:14 -!- Ngevd has quit (Read error: Connection reset by peer).
20:23:26 -!- Ngevd has joined.
20:24:09 <fizzie> Persistent COFF, the smokers' object file format.
20:25:50 <Ngevd> Aaaah my music suddenly turned French
20:25:51 <Gregor> Turn your head and COFF/PE.
20:26:46 -!- oerjan has joined.
20:27:37 <fizzie> I don't want to know what sort of medical checkups have you both cough and pee at the same time.
20:28:04 -!- oerjan has set topic: (Putting My Little Pony references in the topic: the even-more-more latest trendy subversion of 2012 | http://codu.org/logs/_esoteric/ | Of all the worst possible topics, this topic is THE. WORST. POSSIBLE. TOPIC. | Now slightly on-topic)S.
20:28:25 <Ngevd> So... brainfuck
20:28:25 <olsner> oerjan: is that underload code now?
20:28:31 <oerjan> yep
20:28:33 <Gregor> lol
20:29:23 -!- cheater__ has quit (Read error: Connection timed out).
20:29:26 <Ngevd> /cat topic | privmsg #esoteric !underload
20:29:37 <Ngevd> If IRC could do that, nobody would care
20:29:42 <oerjan> fizzie: i am reminded about how there sometimes are spots where if you scratch them, you itch in a different part of your body
20:30:36 -!- cheater__ has joined.
20:30:48 -!- Ngevd has quit (Read error: Connection reset by peer).
20:30:59 <Gregor> It's hard to think of topic-able references that aren't hideously overused.
20:31:06 -!- Ngevd has joined.
20:31:08 <Gregor> "20% cooler" is the only other easy-text one, but egad.
20:33:22 <oerjan> 19:29:57: <ais523> <liquidsin> do not read this line twice
20:33:22 <oerjan> 19:30:04: <ais523> (I failed at that very quickly…)
20:33:30 <oerjan> i subverted by reading it thrice.
20:33:42 <ais523> oerjan: well, I've read it way over twice by now
20:33:44 <fizzie> There's a twice in every thrice.
20:33:57 <monqy> howmany twices
20:38:20 -!- Ngevd has quit (Read error: Connection reset by peer).
20:38:24 -!- Taneb has joined.
20:38:51 <oerjan> hominy vices
20:38:54 <Taneb> I've had an idea!
20:39:05 <Taneb> We play silly games to create Esolangs!
20:39:44 <olsner> homina homina vices
20:41:24 <Taneb> "By a man, let you victor with a man"?
20:41:30 <Taneb> That would be homine
20:42:21 <oerjan> ab-hominable
20:44:51 <fizzie> Ab-hominable snow-hominid.
20:45:11 <Taneb> Would it be possible to write a gravity interpreter in Scheme-omega?
20:53:30 -!- tswett has quit (Changing host).
20:53:31 -!- tswett has joined.
20:58:57 -!- Frooxius has joined.
21:07:31 -!- Phantom__Hoover has joined.
21:12:12 <Taneb> Wow, my Internet's really good when I'm reading a book in another room
21:14:43 <Taneb> New esolang! One word at a time!
21:14:46 <Taneb> This
21:18:03 <Taneb> (somebody else's turn)
21:18:31 <Phantom__Hoover> idea
21:18:34 <oerjan> is
21:18:38 <Phantom__Hoover> really
21:18:43 <Taneb> stupid
21:19:01 <Phantom__Hoover> End of proof.
21:19:19 <ion> Do
21:19:26 <Taneb> is
21:21:29 <oerjan> a
21:21:43 <Taneb> word
21:21:50 <oerjan> based
21:21:58 <Taneb> esotericf
21:22:02 <Taneb> s/f//
21:22:16 <oerjan> scripting
21:22:43 <Taneb> language
21:22:51 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds).
21:22:59 <oerjan> without
21:23:10 <Taneb> any
21:23:17 <oerjan> nouns.
21:23:39 <Taneb> However
21:24:15 <oerjan> verbs
21:25:29 <Phantom__Hoover> aren't
21:25:32 -!- Taneb has quit (Read error: Connection reset by peer).
21:25:42 -!- Ngevd has joined.
21:25:51 <monqy> hi
21:26:03 <Phantom__Hoover> rather
21:26:07 <oerjan> verbs aren't hi? that MAKES NO SENSE MEN
21:26:10 <oerjan> *MAN
21:26:17 <Ngevd> monqy's out
21:26:21 <monqy> :'(
21:26:25 <Phantom__Hoover> I was trying to steer it towards "rather they are lo".
21:26:54 <Ngevd> Phantom__Hoover has provided a plausible continuation, monqy is back in
21:27:00 <Ngevd> they
21:27:04 <Phantom__Hoover> are
21:27:10 <oerjan> in
21:27:13 <Phantom__Hoover> the
21:27:20 <oerjan> western
21:27:33 -!- Jafet has quit (Quit: Leaving.).
21:27:35 <ion> films
21:27:39 <Phantom__Hoover> of
21:27:43 <Ngevd> yore
21:27:49 <ion> and
21:27:52 <Phantom__Hoover> yet
21:28:00 <oerjan> turing-complete
21:28:12 <Ngevd> programs
21:28:20 <oerjan> can
21:28:25 <monqy> not
21:28:28 <Phantom__Hoover> explode.
21:28:33 <ion> Ents
21:28:39 <oerjan> explode
21:28:44 <Phantom__Hoover> sometimes.
21:28:50 <monqy> Wow!
21:28:54 <ion> said
21:28:58 <Phantom__Hoover> monqy
21:29:01 <oerjan> as
21:29:08 <ion> metadiscussion
21:29:13 <Phantom__Hoover> raged
21:29:18 <oerjan> wild
21:29:23 <Phantom__Hoover> about
21:29:27 <oerjan> how
21:29:33 <ion> monqy
21:29:37 <Phantom__Hoover> died.
21:29:37 <oerjan> destroyed
21:29:41 <Phantom__Hoover> by
21:29:46 <oerjan> falling
21:30:08 <ion> inside
21:30:11 <oerjan> a
21:30:21 <Phantom__Hoover> knitting
21:30:31 <oerjan> machine.
21:31:08 <Phantom__Hoover> The
21:31:26 * oerjan is trying hard to resist making every second word
21:31:28 -!- Taneb has joined.
21:32:12 <Phantom__Hoover> HOW CAN YOU RESIST YOUR DESTINY MONQY
21:32:20 -!- Ngevd has quit (Read error: Connection reset by peer).
21:32:27 <monqy> monqy
21:33:31 <ion> < monqy> monqy
21:34:34 <Taneb> killing
21:34:50 <Phantom__Hoover> fizzie
21:35:05 <oerjan> machine
21:35:18 <Phantom__Hoover> is
21:37:20 <ion> sentient
21:37:46 -!- Ngevd has joined.
21:38:07 <Phantom__Hoover> yet
21:38:24 <monqy> somehow
21:38:38 -!- oerjan has set topic: (Putting My Little Pony references in the topic: the even-more-more latest trendy subversion of 2012 | http://codu.org/logs/_esoteric/ | Now slightly on-topic | Now failing to construct an esolang in THE. WORST. POSSIBLE. WAY.)S.
21:38:58 <ion> the topic
21:39:20 <Phantom__Hoover> that is TWO WORDS
21:39:22 -!- Taneb has quit (Ping timeout: 252 seconds).
21:39:33 <ion> That is FOUR WORDS
21:39:38 <Phantom__Hoover> coppro's
21:39:45 <oerjan> brain
21:39:53 <monqy> is
21:40:15 <oerjan> smarter
21:40:44 <Phantom__Hoover> even
21:42:15 -!- Ngevd has quit (Ping timeout: 245 seconds).
21:42:20 <monqy> than
21:42:50 <oerjan> two
21:43:48 <ion> dead
21:44:11 -!- GreaseMonkey has joined.
21:48:08 <oerjan> tardigrades
21:53:55 -!- derdon has joined.
22:54:20 -!- augur has quit (Remote host closed the connection).
22:54:26 <Gregor> My head is SO TINY X_X
22:54:26 <lambdabot> Gregor: You have 1 new message. '/msg lambdabot @messages' to read it.
22:54:40 <Gregor> I bought new headphones, and their minimum size is a bit too big.
22:54:41 <Gregor> @messages
22:54:42 <lambdabot> elliott said 39m 14s ago: Yes, you can, but it only notifies me when I'm in #haskell or when I remember to check my messages when I get online.
22:55:03 <Gregor> @tell elliott IT'S ALMOST LIKE HAVING YOU RIGHT HERE IN THE CHANNEL WITH US AND THE PONIES
22:55:04 <lambdabot> Consider it noted.
22:55:05 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA HE'S ALIVE
22:56:08 <oerjan> either that, or lambdabot is also on the other side
22:56:34 <Gregor> lambdabot transcends this plane.
22:58:20 <oerjan> @tell #haskell This should work, right?
22:58:20 <lambdabot> Consider it noted.
23:00:03 <Gregor> @tell #esoteric Let's find out the easy way.
23:00:03 <lambdabot> Consider it noted.
23:00:06 <Gregor> Foo?
23:00:11 <Gregor> Yeah, I'm gonna go with no :)
23:00:17 <oerjan> SHOCKING
23:00:56 -!- augur has joined.
23:06:03 <olsner> if you change your nick to something starting with #, do you become a channel?
23:07:15 <oerjan> no one has ever come back to confirm it
23:07:40 <Gregor> Poor, poor #elliott.
23:07:41 <lambdabot> Gregor: You have 1 new message. '/msg lambdabot @messages' to read it.
23:07:44 * Gregor sheds a single tear.
23:07:46 <Gregor> @messages
23:07:46 <lambdabot> elliott said 3m 7s ago: I'm not gonna ask.
23:08:30 -!- Gregor has set topic: (elliott sacked as bearer of Element of Loyalty, seeking pegasus replacement | http://codu.org/logs/_esoteric/ | Now slightly on-topic | Now failing to construct an esolang in THE. WORST. POSSIBLE. WAY.)S.
23:11:22 <ais523> Gregor: did you just Underload it?
23:11:31 <ais523> oh, oerjan, I should talk to you about Underload some time
23:11:32 <ais523> but not now
23:11:35 -!- nooga has quit (Ping timeout: 240 seconds).
23:11:59 <oerjan> ^ul (OKAY)S
23:11:59 <fungot> OKAY
23:12:09 <Gregor> oerjan just HAD to make the topic vaguely relevant.
23:12:18 <Gregor> 'cuz he didn't want to pony the pony with pony.
23:14:45 -!- cheater__ has quit (Ping timeout: 244 seconds).
23:17:37 -!- augur has quit (Remote host closed the connection).
23:31:07 -!- cheater has joined.
23:39:21 -!- augur has joined.
23:42:53 -!- augur has quit (Remote host closed the connection).
←2011-12 2012-01 2012-02→ ↑2012 ↑all